diff --git a/src/components/ClientLayout.tsx b/src/components/ClientLayout.tsx index 72a3522..59a5895 100644 --- a/src/components/ClientLayout.tsx +++ b/src/components/ClientLayout.tsx @@ -10,7 +10,7 @@ export default function ClientLayout({ children: React.ReactNode; }) { return ( - + {children} ('dark'); + + useEffect(() => { + setMounted(true); + // Get the current theme from localStorage or system preference + const stored = localStorage.getItem('theme'); + if (stored) { + setCurrentTheme(stored); + } else if (theme) { + setCurrentTheme(theme); + } + }, [theme]); + + const handleThemeChange = (newTheme: string) => { + setCurrentTheme(newTheme); + localStorage.setItem('theme', newTheme); + setTheme(newTheme); + + // Update the HTML element immediately + const html = document.documentElement; + if (newTheme === 'dark' || (newTheme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches)) { + html.classList.add('dark'); + } else { + html.classList.remove('dark'); + } + }; return (
@@ -54,9 +81,9 @@ export default function SettingsPage({ userEmail }: SettingsPageProps) { {['light', 'dark', 'system'].map(t => (