style: dark theme for scroller

This commit is contained in:
jialin
2025-04-28 10:05:06 +08:00
parent ce9c31f368
commit 60d0750695
39 changed files with 216 additions and 148 deletions
+17 -1
View File
@@ -3,7 +3,7 @@ import themeConfig from '@/config/theme';
import { useAtom } from 'jotai';
import { useEffect, useMemo } from 'react';
type Theme = 'light' | 'realDark';
type Theme = 'light' | 'realDark' | 'auto';
export default function useUserSettings() {
const { light, dark } = themeConfig;
@@ -35,6 +35,22 @@ export default function useUserSettings() {
setHtmlThemeAttr(userSettings.theme);
}, [userSettings.theme]);
// set theme by system theme: only for theme is auto
useEffect(() => {
if (userSettings.theme === 'auto') {
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
console.log('mediaQuery', mediaQuery);
const handleChange = (e: MediaQueryListEvent) => {
setTheme(e.matches ? 'realDark' : 'light');
};
mediaQuery.addEventListener('change', handleChange);
handleChange(mediaQuery);
return () => {
mediaQuery.removeEventListener('change', handleChange);
};
}
}, [userSettings.theme]);
return {
userSettings,
setUserSettings,