import { useLayoutEffect, useState } from "react" function getInitialIsDark() { try { const saved = localStorage.getItem("theme") if (saved === "dark") return true if (saved === "light") return false } catch {} return window.matchMedia?.("(prefers-color-scheme: dark)").matches ?? false } export default function ThemeToggle() { const [isDark, setIsDark] = useState(() => getInitialIsDark()) useLayoutEffect(() => { document.documentElement.classList.toggle("dark", isDark) document.documentElement.style.colorScheme = isDark ? "dark" : "light" }, [isDark]) const toggle = () => { setIsDark((prev) => { const next = !prev try { localStorage.setItem("theme", next ? "dark" : "light") } catch {} return next }) } return ( ) }