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>
This commit is contained in:
Psychotoxical
2026-04-08 12:23:14 +02:00
parent f0b423ddc4
commit e64d151079
16 changed files with 285 additions and 10 deletions
+18
View File
@@ -0,0 +1,18 @@
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;
}