From 9634b22f95522f2fff1382fe96c46de6ab977001 Mon Sep 17 00:00:00 2001 From: amit Date: Thu, 7 Nov 2024 10:55:35 +0530 Subject: [PATCH] fixed issue: Theme going default when refreshing the page --- src/context/theme-provider.tsx | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/context/theme-provider.tsx b/src/context/theme-provider.tsx index c7ee611c..02052cf5 100644 --- a/src/context/theme-provider.tsx +++ b/src/context/theme-provider.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext, useState } from 'react'; +import React, { createContext, useContext, useState, useEffect } from 'react'; import { ThemeProvider, createTheme } from '@mui/material/styles'; import CssBaseline from '@mui/material/CssBaseline'; @@ -34,25 +34,34 @@ const darkTheme = createTheme({ }, }); -// Create context for theme mode with state for current mode -// In theme-provider.tsx - const ThemeModeContext = createContext({ toggleTheme: () => {}, - darkMode: false, // Add darkMode to context + darkMode: false, }); export const useThemeMode = () => useContext(ThemeModeContext); const ThemeModeProvider = ({ children }: { children: React.ReactNode }) => { - const [darkMode, setDarkMode] = useState(false); + // 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) => !prevMode); + 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 ( - {/* Pass darkMode here */} + {children}