import React, { createContext, useContext, useState, useEffect } from 'react'; import { ThemeProvider, createTheme } from '@mui/material/styles'; import CssBaseline from '@mui/material/CssBaseline'; const lightTheme = createTheme({ palette: { mode: 'light', primary: { main: '#1e88e5', }, background: { default: '#ffffff', paper: '#f5f5f5', }, text: { primary: '#000000', }, }, }); const darkTheme = createTheme({ palette: { mode: 'dark', primary: { main: '#90caf9', }, background: { default: '#121212', paper: '#1e2124', }, text: { primary: '#ffffff', }, }, }); const ThemeModeContext = createContext({ toggleTheme: () => {}, darkMode: false, }); export const useThemeMode = () => useContext(ThemeModeContext); const ThemeModeProvider = ({ children }: { children: React.ReactNode }) => { // Load saved mode from localStorage or default to light mode const [darkMode, setDarkMode] = useState(() => { const savedMode = localStorage.getItem('darkMode'); return savedMode ? JSON.parse(savedMode) : false; }); const toggleTheme = () => { setDarkMode((prevMode: any) => { const newMode = !prevMode; localStorage.setItem('darkMode', JSON.stringify(newMode)); // Save new mode to localStorage return newMode; }); }; useEffect(() => { localStorage.setItem('darkMode', JSON.stringify(darkMode)); // Save initial mode }, [darkMode]); return ( {children} ); }; export default ThemeModeProvider;