diff --git a/frontend/src/hooks/useTheme.js b/frontend/src/hooks/useTheme.js index a6fe80c..7787e07 100644 --- a/frontend/src/hooks/useTheme.js +++ b/frontend/src/hooks/useTheme.js @@ -2,15 +2,22 @@ import { useEffect, useState } from 'react'; const STORAGE_KEY = 'theme'; -function getInitialTheme() { - if (typeof window === 'undefined') return 'light'; +function readStoredOrPreferredTheme() { const stored = localStorage.getItem(STORAGE_KEY); if (stored === 'light' || stored === 'dark') return stored; return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; } export function useTheme() { - const [theme, setTheme] = useState(getInitialTheme); + const [theme, setTheme] = useState('light'); + + useEffect(() => { + const preferred = readStoredOrPreferredTheme(); + if (preferred !== theme) { + setTheme(preferred); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); useEffect(() => { document.documentElement.setAttribute('data-theme', theme);