MCPcopy Create free account
hub / github.com/code100x/chess / ThemesProvider

Function ThemesProvider

apps/frontend/src/context/themeContext.tsx:14–40  ·  view source on GitHub ↗
({ children }: { children: React.ReactNode })

Source from the content-addressed store, hash-verified

12export const ThemeContext = createContext<THEME_CONTEXT | null>(null);
13
14export function ThemesProvider({ children }: { children: React.ReactNode }) {
15 const [theme, setTheme] = useState<THEME>("default");
16
17 function updateTheme(theme: THEME) {
18 setTheme(theme);
19 localStorage.setItem("theme", theme);
20 document.querySelector("html")?.setAttribute("data-theme", theme);
21 }
22
23 useEffect(() => {
24 const currentTheme = localStorage.getItem("theme") as THEME | null;
25
26 if(currentTheme && AVAILABLE_THEMES.includes(currentTheme)) {
27 setTheme(currentTheme);
28 document.querySelector("html")?.setAttribute("data-theme", currentTheme);
29 }
30 }, []);
31
32 return (
33 <ThemeContext.Provider value={{
34 theme,
35 updateTheme
36 }}>
37 {children}
38 </ThemeContext.Provider>
39 )
40}
41

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected