/** * dashboard-client/src/components/PerfCards.tsx — 5 perf metric cards. * * Mirrors the old html.ts perf grid: model latency, throughput, process, * snapshot cost, and TUI lag proxy. Uses the existing perf-metric CSS * classes from repos-metrics.css plus metrics-extra.css for card headers. */ import type React from "react"; import type { PerfResponse } from "@contracts"; import { Card, CardContent, CardHeader, CardTitle, } from "../components/ui/card"; /** Format milliseconds (em-dash for null/undefined). */ function fmtMs(v: number | null | undefined): string { return v == null ? "\u2014" : v >= 100 ? `${Math.round(v)}ms` : `${v.toFixed(1)}ms`; } /** Format a number with fixed decimals (em-dash for null/non-number). */ function fmtNum(v: number | null | undefined, dec: number): string { return v == null || typeof v !== "number" ? "\u2014" : v.toFixed(dec); } /** Format a diag counter (em-dash for null). */ function fmtDiag(v: number | null | undefined): string { return v == null ? "\u2014" : String(v); } interface PerfCardsProps { perf: PerfResponse; } /** A single stat row inside a perf card. */ function Stat({ label, value }: { label: string; value: string }): React.ReactElement { return (