import { createContext, useContext, useEffect, useState } from 'react'; import { Theme } from '../types'; interface ThemeContextType extends Theme { toggleTheme: () => void; } const ThemeContext = createContext(undefined); export const ThemeProvider = ({ children }: { children: any }) => { const [mode, setMode] = useState<'light' | 'dark'>('light'); useEffect(() => { const savedTheme = localStorage.getItem('admin_theme') as 'light' | 'dark' | null; const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; const initialTheme = savedTheme || (prefersDark ? 'dark' : 'light'); setMode(initialTheme); if (initialTheme === 'dark') { document.documentElement.classList.add('dark'); } }, []); const toggleTheme = () => { const newMode = mode === 'light' ? 'dark' : 'light'; setMode(newMode); localStorage.setItem('admin_theme', newMode); if (newMode === 'dark') { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } }; return ( {children} ); }; export const useTheme = () => { const context = useContext(ThemeContext); if (context === undefined) { throw new Error('useTheme must be used within a ThemeProvider'); } return context; };