import { createContext, useContext, useState, useEffect, useCallback, useMemo } from 'react' const ThemeContext = createContext(null) export function ThemeProvider({ children }) { const [theme, setTheme] = useState(() => localStorage.getItem('theme') || 'dark') useEffect(() => { document.documentElement.setAttribute('data-theme', theme) document.documentElement.style.colorScheme = theme if (theme === 'dark') { document.documentElement.classList.add('dark') } else { document.documentElement.classList.remove('dark') } localStorage.setItem('theme', theme) }, [theme]) const toggle = useCallback(() => setTheme(t => t === 'dark' ? 'light' : 'dark'), []) const value = useMemo(() => ({ theme, toggle }), [theme, toggle]) return ( {children} ) } export const useTheme = () => useContext(ThemeContext)