import { Box, Text } from 'ink'; import Spinner from 'ink-spinner'; import type { AuditTuiState } from '../audit-state'; import { VERDICT_VISUALS } from '../icons'; interface Props { state: AuditTuiState; focused: boolean; } function formatTimestamp(iso: string): string { // Local-time HH:MM:SS — full ISO is dense and the UTC component is // rarely useful for an interactive operator at the keyboard. try { return new Date(iso).toLocaleTimeString(); } catch { return iso; } } export function SummaryPane({ state, focused }: Props) { const { report, auditing, progressMessage } = state; const verdict = VERDICT_VISUALS[report.verdict]; const blockedCount = report.findings.filter((f) => f.severity === 'blocked').length; const driftCount = report.findings.filter((f) => f.severity === 'drift').length; return ( 1 Summary {auditing ? ( auditing… ) : ( {verdict.icon} {verdict.label} )} {auditing ? ( {progressMessage ?? 'starting…'} ) : ( <> {blockedCount} blocked, {driftCount} drift at {formatTimestamp(report.generatedAt)} )} ); }