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 { AmbientControl } from './components/AmbientControl';
import { useTimerEvents } from './hooks/useTimerEvents';
import { useTaskStore } from './store/taskStore';
import { useAudioStore } from './store/audioStore';
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);
const fetchAudioStatus = useAudioStore((s) => s.fetchStatus);
// Bootstrap data on mount
useEffect(() => {
fetchTasks();
fetchSettings();
fetchAudioStatus();
}, [fetchTasks, fetchSettings, fetchAudioStatus]);
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;