Spaces:
Running
Running
| import { useEffect, useState } from "react"; | |
| export function useTheme() { | |
| const [dark, setDark] = useState(() => { | |
| if (typeof window === "undefined") return true; | |
| const stored = localStorage.getItem("raca-theme"); | |
| return stored ? stored === "dark" : true; // dark by default | |
| }); | |
| useEffect(() => { | |
| const root = document.documentElement; | |
| if (dark) { | |
| root.classList.add("dark"); | |
| root.classList.remove("light"); | |
| } else { | |
| root.classList.add("light"); | |
| root.classList.remove("dark"); | |
| } | |
| localStorage.setItem("raca-theme", dark ? "dark" : "light"); | |
| }, [dark]); | |
| return { dark, toggle: () => setDark((d) => !d) }; | |
| } | |
| export default function ThemeToggle({ dark, toggle }: { dark: boolean; toggle: () => void }) { | |
| return ( | |
| <button | |
| onClick={toggle} | |
| className="px-2 py-1 text-xs rounded border border-gray-600 dark:border-gray-600 text-gray-500 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 transition-colors" | |
| title={dark ? "Switch to light mode" : "Switch to dark mode"} | |
| > | |
| {dark ? "โ๏ธ" : "๐"} | |
| </button> | |
| ); | |
| } | |