Spaces:
Running
Running
| "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 { setTheme, resolvedTheme } = useTheme() | |
| const [mounted, setMounted] = useState(false) | |
| useEffect(() => { | |
| setMounted(true) | |
| }, []) | |
| if (!mounted) { | |
| return ( | |
| <Button variant="outline" size="icon"> | |
| <Sun className="h-[1.2rem] w-[1.2rem]" /> | |
| <span className="sr-only">Toggle theme</span> | |
| </Button> | |
| ) | |
| } | |
| const handleToggle = () => { | |
| setTheme(resolvedTheme === "dark" ? "light" : "dark") | |
| } | |
| return ( | |
| <Button variant="outline" size="icon" onClick={handleToggle}> | |
| {resolvedTheme === "dark" ? ( | |
| <Sun className="h-[1.2rem] w-[1.2rem]" /> | |
| ) : ( | |
| <Moon className="h-[1.2rem] w-[1.2rem]" /> | |
| )} | |
| <span className="sr-only">Toggle theme</span> | |
| </Button> | |
| ) | |
| } | |