import { useEffect, useState, useCallback } from 'react'; import { TimerView } from './components/TimerView'; import { TaskList } from './components/TaskList'; import { SettingsPanel } from './components/SettingsPanel'; import { NotificationOverlay } from './components/NotificationOverlay'; import { useTimerEvents } from './hooks/useTimerEvents'; import { useTaskStore } from './store/taskStore'; import { useSettingsStore } from './store/settingsStore'; function GearIcon() { return ( ); } function App() { const [settingsOpen, setSettingsOpen] = useState(false); const [notifVisible, setNotifVisible] = useState(false); const [notifTaskId, setNotifTaskId] = useState(null); const fetchTasks = useTaskStore((s) => s.fetchTasks); const fetchSettings = useSettingsStore((s) => s.fetchSettings); // Bootstrap data on mount useEffect(() => { fetchTasks(); fetchSettings(); }, [fetchTasks, fetchSettings]); const handleCompleted = useCallback((taskId: string | null) => { setNotifTaskId(taskId); setNotifVisible(true); }, []); useTimerEvents(handleCompleted); return (
{/* Sidebar */} {/* Main area */}
{/* Top bar */}
{/* Timer */}
{/* Overlays */} setSettingsOpen(false)} /> setNotifVisible(false)} />
); } export default App;