import { createContext, useContext, useEffect } from 'react'; import useLocalStorage from '../hooks/useLocalStorage'; interface IThemeContext { darkMode: boolean toggleDarkMode: () => void } export const ThemeContext = createContext({ darkMode: true, toggleDarkMode: () => {} }) interface ThemeStateProps { children: React.ReactNode } export const ThemeState = ({ children }: ThemeStateProps) => { const [darkMode, setDarkMode] = useLocalStorage('darkMode', false); const setDarkClass = (isDark: boolean) => { const root = window.document.documentElement; if (isDark) { root.classList.add('dark'); } else { root.classList.remove('dark'); } root.setAttribute('data-color-scheme', !isDark ? 'light' : 'dark'); }; const toggleDarkMode = () => { setDarkMode(!darkMode) }; useEffect(() => { setDarkClass(darkMode) }, [darkMode]); return ( {children} ); } export const useTheme = () => useContext(ThemeContext);