// Zentrale Formatierungs-Helfer (vorher in einzelnen Views dupliziert). /** Bytes → GB als String mit einer Nachkommastelle (z.B. "14.1"). */ export function gb(b: number): string { return (b / 1024 ** 3).toFixed(1) } /** Bytes → "1.2 GB" / "512 MB"; leer bei 0/undefined. */ export function fmtBytes(b?: number): string { if (!b) return "" if (b > 1024 ** 3) return `${(b / 1024 ** 3).toFixed(1)} GB` return `${(b / 1024 ** 2).toFixed(0)} MB` } /** Bytes → "1.2 GB" / "512 MB"; "—" bei 0/undefined/null. */ export function fmtSize(b?: number | null): string { if (!b) return "—" const g = b / 1024 ** 3 return g >= 1 ? `${g.toFixed(1)} GB` : `${(b / 1024 ** 2).toFixed(0)} MB` } /** Sekunden → "3 min" / "45 s"; leer bei 0/undefined. */ export function fmtEta(s?: number): string { if (!s) return "" const m = Math.floor(s / 60) return m > 0 ? `${m} min` : `${s} s` } /** Kontextlänge → "32k"; "—" bei null. */ export function fmtCtx(c: number | null): string { return c ? `${Math.round(c / 1024)}k` : "—" } /** Unix-Sekunden → "25.07., 21:04"; "—" bei 0/null/undefined. */ export function fmtWhen(ts: number | null | undefined): string { if (!ts) return "—" return new Date(ts * 1000).toLocaleString("de-DE", { day: "2-digit", month: "2-digit", hour: "2-digit", minute: "2-digit" }) }