'use client'; import { useApp } from './AppProvider'; import { useState } from 'react'; export default function Sidebar() { const { view, setView, selectedProject, setSelectedProject, sidebarOpen, setSidebarOpen, showNewProjectModal, setShowNewProjectModal, showNewTaskModal, setShowNewTaskModal, projects, setProjects, refreshTasks, refreshProjects, } = useApp(); const [projectName, setProjectName] = useState(''); const [projectDescription, setProjectDescription] = useState(''); const [projectColor, setProjectColor] = useState('#3b82f6'); const [creatingProject, setCreatingProject] = useState(false); const views: { key: typeof view; label: string; icon: string }[] = [ { key: 'list', label: 'List View', icon: '☰' }, { key: 'kanban', label: 'Kanban Board', icon: '▦' }, { key: 'calendar', label: 'Calendar', icon: '📅' }, ]; const handleNewProject = async () => { if (!projectName.trim()) return; try { await fetch('/api/projects', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: projectName.trim(), description: projectDescription.trim(), color: projectColor, }), }); setProjectName(''); setProjectDescription(''); setProjectColor('#3b82f6'); setCreatingProject(false); refreshProjects(); } catch (error) { console.error('Failed to create project:', error); } }; const handleDeleteProject = async (id: string) => { if (!confirm('Delete this project and all its tasks?')) return; try { await fetch(`/api/projects/${id}`, { method: 'DELETE' }); if (selectedProject === id) setSelectedProject(null); refreshProjects(); refreshTasks(); } catch (error) { console.error('Failed to delete project:', error); } }; return (
Views
Projects