'use client'; import React, { createContext, useContext, useState, useEffect } from 'react'; interface ThemeContextType { isDark: boolean; toggleDark: () => void; } const ThemeContext = createContext(undefined); export function ThemeProvider({ children }: { children: React.ReactNode }) { const [isDark, setIsDark] = useState(false); useEffect(() => { const stored = localStorage.getItem('theme'); const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; const dark = stored === 'dark' || (!stored && prefersDark); setIsDark(dark); if (dark) { document.documentElement.classList.add('dark'); } }, []); const toggleDark = () => { setIsDark((prev) => { const next = !prev; if (next) { document.documentElement.classList.add('dark'); localStorage.setItem('theme', 'dark'); } else { document.documentElement.classList.remove('dark'); localStorage.setItem('theme', 'light'); } return next; }); }; return ( {children} ); } export function useTheme() { const context = useContext(ThemeContext); if (context === undefined) { throw new Error('useTheme must be used within a ThemeProvider'); } return context; }