import { useEffect } from "react";
import { useQuery } from "@tanstack/react-query";
import { costsApi } from "../api/costs";
import { useCompany } from "../context/CompanyContext";
import { useBreadcrumbs } from "../context/BreadcrumbContext";
import { queryKeys } from "../lib/queryKeys";
import { EmptyState } from "../components/EmptyState";
import { formatCents } from "../lib/utils";
import { Card, CardContent } from "@/components/ui/card";
import { DollarSign } from "lucide-react";
export function Costs() {
const { selectedCompanyId } = useCompany();
const { setBreadcrumbs } = useBreadcrumbs();
useEffect(() => {
setBreadcrumbs([{ label: "Costs" }]);
}, [setBreadcrumbs]);
const { data, isLoading, error } = useQuery({
queryKey: queryKeys.costs(selectedCompanyId!),
queryFn: async () => {
const [summary, byAgent, byProject] = await Promise.all([
costsApi.summary(selectedCompanyId!),
costsApi.byAgent(selectedCompanyId!),
costsApi.byProject(selectedCompanyId!),
]);
return { summary, byAgent, byProject };
},
enabled: !!selectedCompanyId,
});
if (!selectedCompanyId) {
return
Loading...
} {error &&{error.message}
} {data && ( <>Month to Date
{data.summary.monthUtilizationPercent}% utilized
{formatCents(data.summary.monthSpendCents)}{" "} / {formatCents(data.summary.monthBudgetCents)}
No cost events yet.
) : (No project-attributed costs yet.
) : (