import { useCallback, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { projectsApi } from "../api/projects"; import { useApi } from "../hooks/useApi"; import { useCompany } from "../context/CompanyContext"; import { useDialog } from "../context/DialogContext"; import { useBreadcrumbs } from "../context/BreadcrumbContext"; import { EntityRow } from "../components/EntityRow"; import { StatusBadge } from "../components/StatusBadge"; import { EmptyState } from "../components/EmptyState"; import { formatDate } from "../lib/utils"; import { Button } from "@/components/ui/button"; import { Hexagon, Plus } from "lucide-react"; export function Projects() { const { selectedCompanyId } = useCompany(); const { openNewProject } = useDialog(); const { setBreadcrumbs } = useBreadcrumbs(); const navigate = useNavigate(); useEffect(() => { setBreadcrumbs([{ label: "Projects" }]); }, [setBreadcrumbs]); const fetcher = useCallback(() => { if (!selectedCompanyId) return Promise.resolve([]); return projectsApi.list(selectedCompanyId); }, [selectedCompanyId]); const { data: projects, loading, error } = useApi(fetcher); if (!selectedCompanyId) { return ; } return (

Projects

{loading &&

Loading...

} {error &&

{error.message}

} {projects && projects.length === 0 && ( )} {projects && projects.length > 0 && (
{projects.map((project) => ( navigate(`/projects/${project.id}`)} trailing={
{project.targetDate && ( {formatDate(project.targetDate)} )}
} /> ))}
)}
); }