/** * Health Alert Display Object * * Provides formatting and display logic for health alerts. * This display object isolates UI-specific formatting from business logic. */ export class HealthAlertDisplay { static formatSeverity(type: 'critical' | 'warning' | 'info'): string { const severities: Record = { critical: 'Critical', warning: 'Warning', info: 'Info', }; return severities[type] || 'Info'; } static formatSeverityColor(type: 'critical' | 'warning' | 'info'): string { const colors: Record = { critical: '#ef4444', // red-500 warning: '#f59e0b', // amber-500 info: '#3b82f6', // blue-500 }; return colors[type] || '#3b82f6'; } static formatTimestamp(timestamp: string): string { const date = new Date(timestamp); return date.toLocaleString('en-US', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', }); } static formatRelativeTime(timestamp: string): string { const now = new Date(); const date = new Date(timestamp); const diffMs = now.getTime() - date.getTime(); const diffMins = Math.floor(diffMs / 60000); const diffHours = Math.floor(diffMs / 3600000); const diffDays = Math.floor(diffMs / 86400000); if (diffMins < 1) return 'Just now'; if (diffMins < 60) return `${diffMins}m ago`; if (diffHours < 24) return `${diffHours}h ago`; if (diffDays < 7) return `${diffDays}d ago`; return `${Math.floor(diffDays / 7)}w ago`; } }