import type { HomepageSummary } from "yt-dlp-transcript-common/lib/homepageSummary"; // The headline numbers, as a tabular strip rather than a row of cards. // // It used to be five rounded, blurred tiles with a brass gradient down the left // edge — the archive-room look. This family reads numbers as instrument // readout: hairline-divided cells, monospaced tabular figures, a machine label // underneath. Nothing here is decorated; the number IS the graphic. // // Server-safe (no "use client"), so it renders into the static HTML on both the // home page and /stats/. function Cell({ value, label, delay, }: { value: number; label: string; delay: number; }) { return (
{value.toLocaleString()} {label}
); } export function KpiHeader({ summary }: { summary: HomepageSummary }) { const t = summary.totals; const updated = summary.generatedAt ? new Date(summary.generatedAt).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric", }) : null; const stats = [ { value: t.downloads, label: "Recordings" }, { value: t.transcripts, label: "Transcribed" }, { value: t.hoursArchived, label: "Hours" }, { value: t.channels, label: "Channels" }, { value: t.sites, label: "Archives" }, ]; return (
{stats.map((s, i) => ( ))}
{updated && (

Index built · {updated}

)}
); }