import { useState, useEffect } from 'react'; import { useSettingsStore, Settings } from '../store/settingsStore'; const clampValue = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value)); interface SettingsPanelProps { open: boolean; onClose: () => void; } export function SettingsPanel({ open, onClose }: SettingsPanelProps) { const { settings, fetchSettings, updateSettings } = useSettingsStore(); const [workMins, setWorkMins] = useState(25); const [shortBreakMins, setShortBreakMins] = useState(5); const [longBreakMins, setLongBreakMins] = useState(15); const [sessionsBeforeLong, setSessionsBeforeLong] = useState(4); useEffect(() => { if (open && !settings) { fetchSettings(); } }, [open, settings, fetchSettings]); useEffect(() => { if (settings) { setWorkMins(clampValue(Math.round(settings.work_duration_secs / 60), 1, 120)); setShortBreakMins(clampValue(Math.round(settings.short_break_secs / 60), 1, 60)); setLongBreakMins(clampValue(Math.round(settings.long_break_secs / 60), 1, 60)); setSessionsBeforeLong(clampValue(settings.sessions_before_long_break, 1, 10)); } }, [settings]); if (!open) return null; const handleSave = async () => { const nextWorkMins = clampValue(workMins, 1, 120); const nextShortBreakMins = clampValue(shortBreakMins, 1, 60); const nextLongBreakMins = clampValue(longBreakMins, 1, 60); const nextSessionsBeforeLong = clampValue(sessionsBeforeLong, 1, 10); setWorkMins(nextWorkMins); setShortBreakMins(nextShortBreakMins); setLongBreakMins(nextLongBreakMins); setSessionsBeforeLong(nextSessionsBeforeLong); const s: Settings = { work_duration_secs: nextWorkMins * 60, short_break_secs: nextShortBreakMins * 60, long_break_secs: nextLongBreakMins * 60, sessions_before_long_break: nextSessionsBeforeLong, }; await updateSettings(s); onClose(); }; return (