092_user_interface / src /context /ThemeContext.jsx
anotherath's picture
fix ui and core
4bae792
raw
history blame contribute delete
966 Bytes
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>
);
}