"use client"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; type Theme = "light" | "dark"; function applyTheme(t: Theme) { const html = document.documentElement; html.classList.toggle("dark", t === "dark"); html.classList.toggle("light", t === "light"); html.style.colorScheme = t; } export function ThemeToggle() { const [theme, setTheme] = useState("dark"); const [mounted, setMounted] = useState(false); useEffect(() => { const saved = (localStorage.getItem("theme") as Theme | null) ?? null; const prefers = typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark"; const initial: Theme = saved ?? prefers; setTheme(initial); applyTheme(initial); setMounted(true); }, []); const toggle = () => { const next: Theme = theme === "dark" ? "light" : "dark"; setTheme(next); applyTheme(next); localStorage.setItem("theme", next); }; return ( ); }