Spaces:
Running
Running
| 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> | |
| ); | |
| } | |