import { createContext, useCallback, useEffect, useState, type ReactNode } from 'react' type Theme = 'light' | 'dark' interface ThemeContextValue { theme: Theme toggleTheme: () => void } export const ThemeContext = createContext({ theme: 'light', toggleTheme: () => {}, }) const STORAGE_KEY = 'sb-theme' function getInitialTheme(): Theme { const stored = localStorage.getItem(STORAGE_KEY) if (stored === 'dark' || stored === 'light') return stored return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' } export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState(getInitialTheme) useEffect(() => { document.documentElement.dataset.theme = theme localStorage.setItem(STORAGE_KEY, theme) }, [theme]) const toggleTheme = useCallback(() => { setTheme(prev => (prev === 'light' ? 'dark' : 'light')) }, []) return ( {children} ) }