'use client' import Link from 'next/link' import { AlertTriangle, CheckCircle, Info, Clock } from 'lucide-react' import { cn, formatRelativeTime } from '@/lib/utils' interface Alert { id: string severidad: 'INFO' | 'WARNING' | 'CRITICAL' estado: 'ACTIVA' | 'RECONOCIDA' | 'RESUELTA' titulo: string mensaje: string createdAt: Date dispositivo?: { nombre: string } | null cliente: { nombre: string } } interface AlertsFeedProps { alerts: Alert[] onAcknowledge?: (alertId: string) => void onResolve?: (alertId: string) => void maxItems?: number } export default function AlertsFeed({ alerts, onAcknowledge, onResolve, maxItems = 10, }: AlertsFeedProps) { const displayAlerts = alerts.slice(0, maxItems) if (displayAlerts.length === 0) { return (

No hay alertas activas

) } return (

Alertas Recientes

Ver todas
{displayAlerts.map((alert) => ( ))}
) } function AlertItem({ alert, onAcknowledge, onResolve, }: { alert: Alert onAcknowledge?: (alertId: string) => void onResolve?: (alertId: string) => void }) { const severityConfig = { CRITICAL: { icon: , color: 'text-danger', bgColor: 'bg-danger/20', borderColor: 'border-l-danger', }, WARNING: { icon: , color: 'text-warning', bgColor: 'bg-warning/20', borderColor: 'border-l-warning', }, INFO: { icon: , color: 'text-info', bgColor: 'bg-info/20', borderColor: 'border-l-info', }, } const config = severityConfig[alert.severidad] return (
{config.icon}

{alert.titulo}

{alert.mensaje}

{alert.estado}
{formatRelativeTime(alert.createdAt)}
{alert.dispositivo && ( {alert.dispositivo.nombre} )} {alert.cliente.nombre}
{alert.estado === 'ACTIVA' && (
)}
) }