Spaces:
Sleeping
Sleeping
File size: 966 Bytes
4bae792 | 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 | import { createContext, useContext, useState, useEffect } from "react";
const ThemeContext = createContext();
export function useTheme() {
return useContext(ThemeContext);
}
export function ThemeProvider({ children }) {
const [isDark, setIsDark] = useState(() => {
const saved = localStorage.getItem("theme");
return saved ? saved === "dark" : true; // default to dark mode
});
useEffect(() => {
if (isDark) {
document.documentElement.classList.add("dark");
document.documentElement.classList.remove("light");
localStorage.setItem("theme", "dark");
} else {
document.documentElement.classList.add("light");
document.documentElement.classList.remove("dark");
localStorage.setItem("theme", "light");
}
}, [isDark]);
const toggleTheme = () => setIsDark((prev) => !prev);
return (
<ThemeContext.Provider value={{ isDark, toggleTheme }}>
{children}
</ThemeContext.Provider>
);
}
|