export function formatRelativeOrDate(tsSec?: number, locale?: string) { if (!tsSec) return "—"; const now = Date.now(); const ts = tsSec * 1000; const diffMs = ts - now; const rtf = new Intl.RelativeTimeFormat(locale || undefined, { numeric: "auto" }); const absMs = Math.abs(diffMs); const oneMin = 60 * 1000; const oneHour = 60 * oneMin; const oneDay = 24 * oneHour; // Match Woo-ish thresholds if (absMs < oneMin) { const secs = Math.round(diffMs / 1000); return rtf.format(secs, "second"); } if (absMs < oneHour) { const mins = Math.round(diffMs / oneMin); return rtf.format(mins, "minute"); } if (absMs < oneDay) { const hours = Math.round(diffMs / oneHour); return rtf.format(hours, "hour"); } // Fallback to a readable local datetime const d = new Date(ts); return d.toLocaleString(undefined, { year: "numeric", month: "short", day: "2-digit", hour: "2-digit", minute: "2-digit", }); }