Spaces:
Running
Running
File size: 1,128 Bytes
b03f016 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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>
);
}
|