import { useCallback } from "react"; import { dashboardApi } from "../api/dashboard"; import { useCompany } from "../context/CompanyContext"; import { useApi } from "../hooks/useApi"; import { formatCents } from "../lib/utils"; import { Card, CardContent } from "@/components/ui/card"; export function Dashboard() { const { selectedCompanyId, selectedCompany } = useCompany(); const fetcher = useCallback(() => { if (!selectedCompanyId) { return Promise.resolve(null); } return dashboardApi.summary(selectedCompanyId); }, [selectedCompanyId]); const { data, loading, error } = useApi(fetcher); if (!selectedCompanyId) { return

Create or select a company to view the dashboard.

; } return (

Dashboard

{selectedCompany?.name}

{loading &&

Loading...

} {error &&

{error.message}

} {data && (

Agents

Running: {data.agents.running}

Paused: {data.agents.paused}

Error: {data.agents.error}

Tasks

Open: {data.tasks.open}

In Progress: {data.tasks.inProgress}

Blocked: {data.tasks.blocked}

Costs

{formatCents(data.costs.monthSpendCents)} / {formatCents(data.costs.monthBudgetCents)}

Utilization: {data.costs.monthUtilizationPercent}%

Governance

Pending approvals: {data.pendingApprovals}

Stale tasks: {data.staleTasks}

)}
); }