Aria / frontend /src /components /ui /SharedComponents.tsx
teganmosi
Deploy Aria application with fixes for database, TTS, and WebSocket (LFS tracking applied)
f6d0a88
Raw
History Blame Contribute Delete
1.12 kB
import { useState, useEffect } from 'react'
import { Moon, Sun } from 'lucide-react'
export const ThemeToggle = () => {
const [isDark, setIsDark] = useState(false)
useEffect(() => {
const savedTheme = localStorage.getItem('theme') || 'light'
if (savedTheme === 'dark') {
setIsDark(true)
document.documentElement.dataset.theme = 'dark'
} else {
setIsDark(false)
delete document.documentElement.dataset.theme
}
}, [])
const toggleTheme = () => {
if (isDark) {
delete document.documentElement.dataset.theme
localStorage.setItem('theme', 'light')
setIsDark(false)
} else {
document.documentElement.dataset.theme = 'dark'
localStorage.setItem('theme', 'dark')
setIsDark(true)
}
}
return (
<button className="theme-toggle" onClick={toggleTheme} aria-label="Toggle theme">
{isDark ? <Sun size={20} /> : <Moon size={20} />}
</button>
)
}
export const AnimatedBackground = () => (
<div className="animated-bg">
<div className="bg-orb orb-1"></div>
<div className="bg-orb orb-2"></div>
</div>
)