"use client"; import type { ReactNode } from "react"; import { Reveal } from "@/components/animations/reveal"; import { EyebrowMark } from "@/components/brand/eyebrow"; import { Slide } from "@/components/deck/slide"; type KpiItem = { value: ReactNode; unit?: string; caption: ReactNode; }; type KpiTrioProps = { number: number; total: number; eyebrow: string; title?: ReactNode; items: [KpiItem, KpiItem, KpiItem]; /** When true the first KPI gets larger size (asymmetric layout 2fr 1fr 1fr). */ emphasizeFirst?: boolean; }; /** * Three KPIs in a single row. Default symmetric. Pass emphasizeFirst to render * an asymmetric 2fr 1fr 1fr grid with the primary number scaled up. */ export function KpiTrio({ number, total, eyebrow, title, items, emphasizeFirst = false, }: KpiTrioProps) { const gridStyle = emphasizeFirst ? { gridTemplateColumns: "2fr 1fr 1fr" } : { gridTemplateColumns: "1fr 1fr 1fr" }; return (
{eyebrow} {title && (

{title}

)}
{items.map((item, i) => ( ))}
); } function Kpi({ value, unit, caption, emphasize, }: KpiItem & { emphasize?: boolean }) { return (
{value} {unit && ( {unit} )}

{caption}

); }