/* ============================================================================ Card.Stat - Figma 25:792 (260 x 166) ---------------------------------------------------------------------------- The figure card used by the home page stats strip: a large accent number, an optional trend chip, the label it counts, a rule and a caption. Never a link - a number is not a destination. USAGE ----- // Arabic - Eastern Arabic numerals belong in the value string itself. ========================================================================= */ import { CardIcon, CardShell, cx } from "./CardShell"; import type { CardElement } from "./types"; export interface CardStatTrend { /** Visible text, e.g. "12%". */ label: string; /** Up is the accent fill, down the danger fill. Defaults to up. */ direction?: "up" | "down"; /** * Spoken instead of the bare figure, e.g. "up 12% on last quarter". The * arrow is decorative, so without this a screen reader hears only "12%". */ description?: string; } export interface CardStatProps { /** Pre-formatted for the locale - the card never formats a number itself. */ value: string; label: string; caption?: string; trend?: CardStatTrend; as?: CardElement; className?: string; } export function CardStat({ value, label, caption, trend, as = "article", className, }: CardStatProps) { const isDown = trend?.direction === "down"; return (

{value}

{trend ? ( /* Figma paints the chip label in text/accent on a background/accent fill - green on green, invisible. Kept as the accent fill with the always-white on-accent label, and the danger fill when the figure is falling. */ {trend.description ? ( <> {trend.description} ) : ( trend.label )} ) : null}

{label}