frieren / web / lib / format.ts
export function timeAgo(iso: string): string {
const t = new Date(iso).getTime();
if (!t || t <= 0) return "";
const s = (Date.now() - t) / 1000;
if (s < 60) return "just now";
if (s < 3600) return `${Math.floor(s / 60)}m ago`;
if (s < 86400) return `${Math.floor(s / 3600)}h ago`;
if (s < 30 * 86400) return `${Math.floor(s / 86400)}d ago`;
return new Date(iso).toLocaleDateString("en-US", {
year: "numeric",
month: "short",
day: "numeric",
});
}
export function byteSize(n: number): string {
if (n < 0) return "";
if (n < 1024) return `${n} B`;
if (n < 1 << 20) return `${(n / 1024).toFixed(1)} KB`;
return `${(n / (1 << 20)).toFixed(1)} MB`;
}
export function fullDate(iso: string): string {
return new Date(iso).toLocaleString("en-US", {
year: "numeric",
month: "short",
day: "numeric",
hour: "2-digit",
minute: "2-digit",
});
}