export function randomWalk(value: number, step: number, minimum = 0, maximum = 100): number { const next = value + (Math.random() * 2 - 1) * step; return Math.min(maximum, Math.max(minimum, next)); } export function usageTone(percent: number): string { if (percent >= 80) return 'red'; if (percent >= 50) return 'yellow'; return 'green'; } export function relativeTime(isoDate: string): string { const elapsedMinutes = Math.floor((Date.now() - new Date(isoDate).getTime()) / 60000); if (elapsedMinutes < 60) return `${elapsedMinutes}m`; const elapsedHours = Math.floor(elapsedMinutes / 60); if (elapsedHours < 24) return `${elapsedHours}h`; const elapsedDays = Math.floor(elapsedHours / 24); if (elapsedDays < 60) return `${elapsedDays}d`; return `${Math.floor(elapsedDays / 30)}mo`; } export function formatSize(sizeKb: number): string { if (sizeKb >= 1024 * 1024) return `${(sizeKb / 1024 / 1024).toFixed(1)}G`; if (sizeKb >= 1024) return `${(sizeKb / 1024).toFixed(1)}M`; return `${sizeKb}K`; }