/** Shared formatting helpers for the customer-management pages. */ /** snake_case / SCREAMING_CASE → Title Case. */ export function humanize(value: string): string { return value .toLowerCase() .split(/[_\s]+/) .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) .join(" "); } export function formatDate(value: string | null | undefined): string { if (!value) return "—"; const d = new Date(value); return Number.isNaN(d.getTime()) ? "—" : d.toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric", }); } export function formatMoney(amount: number, currency: string): string { return new Intl.NumberFormat(undefined, { style: "currency", currency, maximumFractionDigits: 0, }).format(amount); } export function formatBytes(bytes: number): string { if (!bytes) return "0 B"; const units = ["B", "KB", "MB", "GB"]; const i = Math.floor(Math.log(bytes) / Math.log(1024)); const value = bytes / Math.pow(1024, i); return `${value.toFixed(i === 0 ? 0 : 1)} ${units[i]}`; }