| import React, { createContext, useContext, useState, useEffect } from 'react'; | |
| const ThemeContext = createContext(); | |
| export const useTheme = () => useContext(ThemeContext); | |
| export const ThemeProvider = ({ children }) => { | |
| const [theme, setTheme] = useState(() => { | |
| // Default to dark, but check if user saved a preference | |
| const saved = localStorage.getItem('theme'); | |
| return saved || 'dark'; | |
| }); | |
| useEffect(() => { | |
| const root = window.document.documentElement; | |
| if (theme === 'dark') { | |
| root.classList.add('dark'); | |
| } else { | |
| root.classList.remove('dark'); | |
| } | |
| localStorage.setItem('theme', theme); | |
| }, [theme]); | |
| const toggleTheme = () => { | |
| setTheme(prev => (prev === 'dark' ? 'light' : 'dark')); | |
| }; | |
| return ( | |
| <ThemeContext.Provider value={{ theme, toggleTheme }}> | |
| {children} | |
| </ThemeContext.Provider> | |
| ); | |
| }; | |