mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
e64d151079
- Time-based theme scheduler: auto-switches between day/night theme based on configurable times; setInterval re-checks every minute - UI scale slider (80–150%) via CSS zoom on document root; preset buttons aligned to actual slider positions - CustomSelect: scroll listener keeps dropdown anchored on scroll - All features i18n in 7 languages Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
729 B
TypeScript
19 lines
729 B
TypeScript
import { useEffect, useState } from 'react';
|
|
import { useThemeStore, getScheduledTheme } from '../store/themeStore';
|
|
|
|
export function useThemeScheduler(): string {
|
|
const state = useThemeStore();
|
|
const [effectiveTheme, setEffectiveTheme] = useState(() => getScheduledTheme(state));
|
|
|
|
useEffect(() => {
|
|
setEffectiveTheme(getScheduledTheme(useThemeStore.getState()));
|
|
if (!state.enableThemeScheduler) return;
|
|
const id = setInterval(() => {
|
|
setEffectiveTheme(getScheduledTheme(useThemeStore.getState()));
|
|
}, 60_000);
|
|
return () => clearInterval(id);
|
|
}, [state.enableThemeScheduler, state.theme, state.themeDay, state.themeNight, state.timeDayStart, state.timeNightStart]);
|
|
|
|
return effectiveTheme;
|
|
}
|