| import React, { createContext, useContext, useState, useEffect } from 'react';
|
|
|
| const ThemeContext = createContext();
|
|
|
| export const useTheme = () => {
|
| const context = useContext(ThemeContext);
|
| if (!context) {
|
| throw new Error('useTheme must be used within ThemeProvider');
|
| }
|
| return context;
|
| };
|
|
|
| export const ThemeProvider = ({ children }) => {
|
| const [darkMode, setDarkMode] = useState(() => {
|
|
|
| const saved = localStorage.getItem('darkMode');
|
| return saved ? JSON.parse(saved) : false;
|
| });
|
|
|
| useEffect(() => {
|
| localStorage.setItem('darkMode', JSON.stringify(darkMode));
|
| if (darkMode) {
|
| document.documentElement.classList.add('dark');
|
| } else {
|
| document.documentElement.classList.remove('dark');
|
| }
|
| }, [darkMode]);
|
|
|
| const toggleDarkMode = () => {
|
| setDarkMode(prev => !prev);
|
| };
|
|
|
| return (
|
| <ThemeContext.Provider value={{ darkMode, toggleDarkMode }}>
|
| {children}
|
| </ThemeContext.Provider>
|
| );
|
| };
|
|
|