import { createContext, useContext, useEffect, useState, ReactNode } from 'react' type Theme = 'light' | 'dark' interface ThemeContextType { theme: Theme toggleTheme: () => void } const ThemeContext = createContext(undefined) export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState('light') useEffect(() => { const savedTheme = localStorage.getItem('theme') const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches if (savedTheme === 'dark' || (!savedTheme && prefersDark)) { setTheme('dark') document.documentElement.setAttribute('data-theme', 'dark') } else { setTheme('light') document.documentElement.setAttribute('data-theme', 'light') } }, []) const toggleTheme = () => { const newTheme = theme === 'dark' ? 'light' : 'dark' setTheme(newTheme) localStorage.setItem('theme', newTheme) document.documentElement.setAttribute('data-theme', newTheme) } return ( {children} ) } export function useDarkMode() { const context = useContext(ThemeContext) if (!context) { throw new Error('useDarkMode must be used within a ThemeProvider') } return context }