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> | |
) | |
} | |