/ src / components / projects / project-utils.ts
project-utils.ts
 1  export function relativeDate(ts: number): string {
 2    const diff = Date.now() - ts
 3    if (diff < 60_000) return 'just now'
 4    if (diff < 3_600_000) return `${Math.floor(diff / 60_000)}m ago`
 5    if (diff < 86_400_000) return `${Math.floor(diff / 3_600_000)}h ago`
 6    if (diff < 604_800_000) return `${Math.floor(diff / 86_400_000)}d ago`
 7    return new Date(ts).toLocaleDateString(undefined, { month: 'short', day: 'numeric' })
 8  }
 9  
10  export function formatHeartbeatInterval(intervalSec?: number | null): string {
11    if (!intervalSec || intervalSec <= 0) return 'Manual'
12    if (intervalSec % 3600 === 0) return `${intervalSec / 3600}h`
13    if (intervalSec % 60 === 0) return `${intervalSec / 60}m`
14    return `${intervalSec}s`
15  }
16  
17  export const STATUS_STYLES: Record<string, string> = {
18    backlog: 'bg-white/[0.06] text-text-3',
19    queued: 'bg-amber-500/15 text-amber-400',
20    running: 'bg-sky-500/15 text-sky-400',
21    completed: 'bg-emerald-500/15 text-emerald-400',
22    failed: 'bg-red-500/15 text-red-400',
23    archived: 'bg-white/[0.04] text-text-3/50',
24  }