| import { createContext, useContext, useEffect, useState } from 'react' |
|
|
| const ThemeContext = createContext() |
|
|
| export function ThemeProvider({ children }) { |
| const [theme, setTheme] = useState(() => { |
| return localStorage.getItem('theme') || 'dark' |
| }) |
|
|
| useEffect(() => { |
| localStorage.setItem('theme', theme) |
| if (theme === 'light') { |
| document.body.classList.add('light') |
| } else { |
| document.body.classList.remove('light') |
| } |
| }, [theme]) |
|
|
| const toggleTheme = () => setTheme((t) => (t === 'dark' ? 'light' : 'dark')) |
|
|
| return ( |
| <ThemeContext.Provider value={{ theme, toggleTheme }}> |
| {children} |
| </ThemeContext.Provider> |
| ) |
| } |
|
|
| export function useTheme() { |
| return useContext(ThemeContext) |
| } |
|
|