/* ── Format bytes to human-readable size ── */ export function formatBytes(bytes: number): string { if (bytes === 0) return '0 B'; const units = ['B', 'KB', 'MB', 'GB', 'TB']; const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1); const val = bytes / Math.pow(1024, i); return val < 10 ? val.toFixed(1) + ' ' + units[i] : Math.round(val) + ' ' + units[i]; } /* ── Gateway link for CID ── */ export function gatewayLink(cid: string): string { return `https://ipfs.maos.dedyn.io/${cid}`; } /* ── Truncate CID for display ── */ export function truncateCid(cid: string, chars: number = 12): string { if (cid.length <= chars) return cid; return `${cid.slice(0, chars)}...`; }