import React, { createContext, useContext, useEffect, useMemo, useState } from 'react'; type ThemeMode = 'light' | 'dark'; interface ThemeContextValue { mode: ThemeMode; toggle: () => void; } const ThemeContext = createContext({ mode: 'light', toggle: () => {} }); export function useThemeMode() { return useContext(ThemeContext); } const STORAGE_KEY = 'redefined-designs-theme'; function getInitialMode(): ThemeMode { const stored = localStorage.getItem(STORAGE_KEY); if (stored === 'light' || stored === 'dark') return stored; return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; } export function ThemeModeProvider({ children }: Readonly<{ children: React.ReactNode }>) { const [mode, setMode] = useState(getInitialMode); useEffect(() => { localStorage.setItem(STORAGE_KEY, mode); document.body.setAttribute('data-theme', mode); }, [mode]); const value = useMemo( () => ({ mode, toggle: () => setMode(m => (m === 'light' ? 'dark' : 'light')) }), [mode] ); return {children}; }