| "use client"; | |
| import { Moon, Sun } from "lucide-react"; | |
| import { useTheme } from "next-themes"; | |
| import { useEffect, useState } from "react"; | |
| import { Button } from "@/components/ui/button"; | |
| export function ThemeToggle() { | |
| const { theme, setTheme, resolvedTheme } = useTheme(); | |
| const [mounted, setMounted] = useState(false); | |
| useEffect(() => setMounted(true), []); | |
| const current = mounted ? (resolvedTheme ?? theme) : "dark"; | |
| const next = current === "dark" ? "light" : "dark"; | |
| return ( | |
| <Button | |
| variant="outline" | |
| size="icon" | |
| onClick={() => setTheme(next)} | |
| aria-label="Toggle theme" | |
| > | |
| {current === "dark" ? ( | |
| <Sun className="h-4 w-4" /> | |
| ) : ( | |
| <Moon className="h-4 w-4" /> | |
| )} | |
| </Button> | |
| ); | |
| } | |