import { useCallback } from "react"; import { costsApi } from "../api/costs"; import { useCompany } from "../context/CompanyContext"; import { useApi } from "../hooks/useApi"; import { formatCents } from "../lib/utils"; import { Card, CardContent } from "@/components/ui/card"; export function Costs() { const { selectedCompanyId } = useCompany(); const fetcher = useCallback(async () => { if (!selectedCompanyId) { return null; } const [summary, byAgent, byProject] = await Promise.all([ costsApi.summary(selectedCompanyId), costsApi.byAgent(selectedCompanyId), costsApi.byProject(selectedCompanyId), ]); return { summary, byAgent, byProject }; }, [selectedCompanyId]); const { data, loading, error } = useApi(fetcher); if (!selectedCompanyId) { return

Select a company first.

; } return (

Costs

{loading &&

Loading...

} {error &&

{error.message}

} {data && ( <>

Month to Date

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

Utilization {data.summary.monthUtilizationPercent}%

By Agent

{data.byAgent.map((row, idx) => (
{row.agentId} {formatCents(row.costCents)}
))} {data.byAgent.length === 0 &&

No cost events yet.

}

By Project

{data.byProject.map((row, idx) => (
{row.projectId} {formatCents(row.costCents)}
))} {data.byProject.length === 0 &&

No project-attributed costs yet.

}
)}
); }