import { useQuery } from "@tanstack/react-query"; import { Loader2 } from "lucide-react"; import { statusCardsApi } from "@/api/statusCards"; import { Button } from "@/components/ui/button"; import { queryKeys } from "@/lib/queryKeys"; import { formatDateTime } from "@/lib/utils"; import { formatCents, formatTokens, rollupUpdates } from "./format"; import type { StatusCardView } from "./types"; function shortDate(iso: string | null): string { if (!iso) return "—"; return new Date(iso).toLocaleDateString(undefined, { month: "short", day: "numeric" }); } export function ArchivedStatusCardRow({ card, onView, onRestore, restorePending, }: { card: StatusCardView; onView: () => void; onRestore: () => void; restorePending?: boolean; }) { // Lifetime cost is a rollup of the card's full update ledger (live P1 data). const updatesQuery = useQuery({ queryKey: queryKeys.statusCards.updates(card.id), queryFn: () => statusCardsApi.updates(card.id), }); const rollup = updatesQuery.data ? rollupUpdates(updatesQuery.data) : null; return (

{card.title ?? "Untitled card"}

archived {shortDate(card.archivedAt)} · last summary {shortDate(card.lastGeneratedAt)} {rollup ? ` · lifetime ${formatTokens(rollup.totalTokens)} / ${formatCents(rollup.totalCostCents)}` : ""}

{/* View is the more common intent on an archived row (reading the last summary); Restore is safe but secondary — it brings the card back stale and never auto-runs. */}
); }