"use client"; import { PieChart, Pie, Cell, Tooltip, ResponsiveContainer, Legend, } from "recharts"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Skeleton } from "@/components/ui/skeleton"; import { HelpTip } from "@/components/ui/help-tip"; import { useIsMobile } from "@/hooks/use-is-mobile"; import { chartTooltipStyle } from "@/components/charts/chart-tooltip"; import type { ModelUsageSlice } from "@/types"; // Design-system chart tokens — resolves to theme-aware palette const CHART_COLORS = [ "var(--chart-1)", "var(--chart-2)", "var(--chart-3)", "var(--chart-4)", "var(--chart-5)", ]; interface ModelUsageDonutProps { data: ModelUsageSlice[] | undefined; isLoading: boolean; } export function ModelUsageDonut({ data, isLoading }: ModelUsageDonutProps) { const isMobile = useIsMobile(); const chartData = (data ?? []).map((s) => ({ name: s.model, value: s.total_tokens, cost: s.cost_usd, pct: s.pct_of_total, })); return ( By Model {isLoading ? ( ) : chartData.length === 0 ? (

No usage recorded in this window yet.

) : ( {chartData.map((_, idx) => ( ))} [ (typeof value === "number" ? value : 0).toLocaleString() + " tokens", name, ]} /> )}
); }