import { useState } from 'react'; import { Plus, FolderKanban, Layers, PlayCircle, CheckCircle2 } from 'lucide-react'; import { useQuery } from '@tanstack/react-query'; import api from '@/lib/api'; import type { Project } from '@/types'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { GridSkeleton } from '@/components/ui/skeleton'; import { EmptyState } from '@/components/ui/empty-state'; import ProjectCard from './ProjectCard'; import ProjectForm from './ProjectForm'; const statusFilters = [ { value: '', label: 'All' }, { value: 'not_started', label: 'Not Started' }, { value: 'in_progress', label: 'In Progress' }, { value: 'completed', label: 'Completed' }, ] as const; export default function ProjectsPage() { const [showForm, setShowForm] = useState(false); const [editingProject, setEditingProject] = useState(null); const [statusFilter, setStatusFilter] = useState(''); const { data: projects = [], isLoading } = useQuery({ queryKey: ['projects'], queryFn: async () => { const { data } = await api.get('/projects'); return data; }, }); const filteredProjects = statusFilter ? projects.filter((p) => p.status === statusFilter) : projects; const inProgressCount = projects.filter((p) => p.status === 'in_progress').length; const completedCount = projects.filter((p) => p.status === 'completed').length; const handleEdit = (project: Project) => { setEditingProject(project); setShowForm(true); }; const handleCloseForm = () => { setShowForm(false); setEditingProject(null); }; return (
{/* Header */}

Projects

{statusFilters.map((sf) => ( ))}
{/* Summary stats */} {!isLoading && projects.length > 0 && (

Total

{projects.length}

In Progress

{inProgressCount}

Completed

{completedCount}

)} {isLoading ? ( ) : filteredProjects.length === 0 ? ( setShowForm(true)} /> ) : (
{filteredProjects.map((project) => ( ))}
)}
{showForm && }
); }