export function formatBytes(bytes) { if (bytes == null) return ""; if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`; if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`; return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`; } export function formatElapsed(seconds) { if (seconds == null) return ""; const s = Math.floor(seconds); const m = Math.floor(s / 60); const h = Math.floor(m / 60); const pad = (n) => String(n).padStart(2, "0"); return h > 0 ? `${h}:${pad(m % 60)}:${pad(s % 60)}` : `${pad(m)}:${pad(s % 60)}`; } export function formatDuration(seconds) { if (seconds == null) return "—"; if (seconds < 60) return `${seconds.toFixed(1)}s`; return formatElapsed(seconds); }