({ children }: { children: React.ReactNode })
| 12 | export const ThemeContext = createContext<THEME_CONTEXT | null>(null); |
| 13 | |
| 14 | export 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 |
nothing calls this directly
no outgoing calls
no test coverage detected