elmeg-demo/frontend/components/theme-toggle.tsx
fullsizemalt 67fbd4d152 style: Match Ersen design system
- Add Space Grotesk and JetBrains Mono fonts
- Implement light/dark mode toggle with next-themes
- Update color palette to match Ersen (HSL-based tokens)
- Add ThemeProvider and ThemeToggle components
- Reduce border radius to 0.3rem for cleaner look
2025-12-21 17:32:58 -08:00

39 lines
997 B
TypeScript

"use client"
import * as React from "react"
import { Moon, Sun } from "lucide-react"
import { useTheme } from "next-themes"
import { Button } from "@/components/ui/button"
export function ThemeToggle() {
const { theme, setTheme } = useTheme()
const [mounted, setMounted] = React.useState(false)
React.useEffect(() => {
setMounted(true)
}, [])
if (!mounted) {
return (
<Button variant="ghost" size="icon" className="h-9 w-9">
<Sun className="h-4 w-4" />
</Button>
)
}
return (
<Button
variant="ghost"
size="icon"
className="h-9 w-9"
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
>
{theme === "dark" ? (
<Sun className="h-4 w-4" />
) : (
<Moon className="h-4 w-4" />
)}
<span className="sr-only">Toggle theme</span>
</Button>
)
}