'use client' import { createContext, useContext, useEffect, useState } from 'react' type Theme = 'light' | 'dark' type ThemeContextType = { theme: Theme toggleTheme: () => void } const ThemeContext = createContext(undefined) export function ThemeProvider({ children }: { children: React.ReactNode }) { const [theme, setTheme] = useState('light') useEffect(() => { // On mount, read theme from localStorage or default to light const savedTheme = localStorage.getItem('theme') as Theme if (savedTheme) { setTheme(savedTheme) document.documentElement.setAttribute('data-theme', savedTheme) } }, []) const toggleTheme = () => { const newTheme = theme === 'light' ? 'dark' : 'light' setTheme(newTheme) localStorage.setItem('theme', newTheme) document.documentElement.setAttribute('data-theme', newTheme) } return ( {children} ) } export function useTheme() { const context = useContext(ThemeContext) if (context === undefined) { throw new Error('useTheme must be used within a ThemeProvider') } return context }