/** * dashboard-client/src/components/CompressionCard.tsx — compression stats. * * Stat grid: tokens in → out, freed amount highlighted, compression %, * dedup contribution %. Consumes snapshot.compression.repo. */ import type React from "react"; export interface CompressionCardProps { /** Repo-level compression stats (tokens in/out/freed + percentages). */ tokensIn: number; tokensOut: number; tokensFreed: number; /** Compression ratio (percent, 0–100). */ compressionPct: number; /** Dedup contribution (percent, 0–100). */ dedupPct: number; } function fmt(n: number): string { if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`; if (n >= 1_000) return `${(n / 1_000).toFixed(1)}K`; return String(n); } export function CompressionCard({ tokensIn, tokensOut, tokensFreed, compressionPct, dedupPct, }: CompressionCardProps): React.ReactElement { return (

Compression (repo)

In {fmt(tokensIn)}
Out {fmt(tokensOut)}
Freed {fmt(tokensFreed)}
Ratio {compressionPct.toFixed(1)}%
Dedup {dedupPct.toFixed(1)}%
); }