import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Shield, Clock, CheckCircle, AlertTriangle, XCircle, Wrench } from 'lucide-react'; import { format } from 'date-fns'; import { OperationalPageRecord } from '@/types/operational.types'; import { StatusPageComponentRecord } from '@/types/statusPageComponents.types'; import { Service } from '@/types/service.types'; interface CurrentStatusSectionProps { page: OperationalPageRecord; components: StatusPageComponentRecord[]; services: Service[]; } const getActualStatus = (components: StatusPageComponentRecord[], services: Service[]) => { if (components.length === 0) { return 'operational'; // Default if no components } let hasDown = false; let hasDegraded = false; let hasMaintenance = false; components.forEach(component => { const service = services.find(s => s.id === component.service_id); if (service) { switch (service.status) { case 'down': hasDown = true; break; case 'warning': hasDegraded = true; break; case 'paused': hasMaintenance = true; break; } } }); // Priority: down > degraded > maintenance > operational if (hasDown) return 'major_outage'; if (hasDegraded) return 'degraded'; if (hasMaintenance) return 'maintenance'; return 'operational'; }; const getStatusMessage = (status: OperationalPageRecord['status']) => { switch (status) { case 'operational': return 'All systems are operational'; case 'degraded': return 'Some systems are experiencing degraded performance'; case 'maintenance': return 'Systems are currently under maintenance'; case 'major_outage': return 'We are experiencing a major service outage'; default: return 'Status unknown'; } }; const getStatusColor = (status: OperationalPageRecord['status']) => { switch (status) { case 'operational': return 'text-green-600 dark:text-green-400'; case 'degraded': return 'text-yellow-600 dark:text-yellow-400'; case 'maintenance': return 'text-blue-600 dark:text-blue-400'; case 'major_outage': return 'text-red-600 dark:text-red-400'; default: return 'text-muted-foreground'; } }; const getStatusIcon = (status: OperationalPageRecord['status']) => { switch (status) { case 'operational': return ; case 'degraded': return ; case 'maintenance': return ; case 'major_outage': return ; default: return ; } }; const getStatusBackground = (status: OperationalPageRecord['status']) => { switch (status) { case 'operational': return 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800'; case 'degraded': return 'bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800'; case 'maintenance': return 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800'; case 'major_outage': return 'bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800'; default: return 'bg-gray-50 dark:bg-gray-900/20 border-gray-200 dark:border-gray-800'; } }; export const CurrentStatusSection = ({ page, components, services }: CurrentStatusSectionProps) => { const actualStatus = getActualStatus(components, services); const displayStatus = actualStatus; // Use actual status for real-time accuracy return ( System Status
{getStatusIcon(displayStatus)}

{getStatusMessage(displayStatus)}

Status automatically updated based on component health

{displayStatus === 'operational' ? 'All Systems Operational' : displayStatus === 'degraded' ? 'Degraded Performance' : displayStatus === 'maintenance' ? 'Under Maintenance' : 'Major Outage'}
Last updated: {format(new Date(), 'MMM dd, yyyy HH:mm')} UTC
Live status monitoring
); };