Files
Psychotoxical-psysonic/src/hooks/useThemeScheduler.ts
T
Psychotoxical e64d151079 feat(settings): theme scheduler, UI scale, CustomSelect scroll fix
- 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>
2026-04-08 12:23:24 +02:00

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;
}