"use client"; import { AlertTriangle, CheckCircle, Eye, EyeOff } from "lucide-react"; import { useState } from "react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; interface SecurityAlert { id: string; timestamp: string; severity: string; type: string; title: string; description: string; eventType: string; context: Record; metadata: Record; acknowledged: boolean; } interface SecurityAlertsTableProps { alerts: SecurityAlert[]; onAcknowledge: (alertId: string) => void; } export function SecurityAlertsTable({ alerts, onAcknowledge, }: SecurityAlertsTableProps) { const [showAcknowledged, setShowAcknowledged] = useState(false); const [selectedAlert, setSelectedAlert] = useState( null ); const getSeverityColor = (severity: string) => { switch (severity?.toLowerCase()) { case "critical": return "destructive"; case "high": return "destructive"; case "medium": return "secondary"; case "low": return "outline"; default: return "outline"; } }; const filteredAlerts = alerts.filter( (alert) => showAcknowledged || !alert.acknowledged ); const formatTimestamp = (timestamp: string) => { return new Date(timestamp).toLocaleString(); }; const formatAlertType = (type: string) => { return type .replace(/_/g, " ") .toLowerCase() .replace(/\b\w/g, (l) => l.toUpperCase()); }; return (

Security Alerts

{filteredAlerts.length} alerts{" "} {showAcknowledged ? "total" : "active"}

{filteredAlerts.length === 0 ? (

No Active Alerts

All security alerts have been addressed. System is operating normally.

) : ( Severity Type Description Timestamp Status Actions {filteredAlerts.map((alert) => ( {alert.severity}
{formatAlertType(alert.type)}

{alert.eventType}

{alert.title}

{alert.description}

{formatTimestamp(alert.timestamp)} {alert.acknowledged ? ( Acknowledged ) : ( Active )}
{!alert.acknowledged && ( )}
))}
)} {/* Alert Details Modal */} {selectedAlert && (
{selectedAlert.title}
{selectedAlert.severity} {formatAlertType(selectedAlert.type)}

Description

{selectedAlert.description}

Context

                    {JSON.stringify(selectedAlert.context, null, 2)}
                  
{selectedAlert.metadata && Object.keys(selectedAlert.metadata).length > 0 && (

Metadata

                        {JSON.stringify(selectedAlert.metadata, null, 2)}
                      
)}
{formatTimestamp(selectedAlert.timestamp)} {!selectedAlert.acknowledged && ( )}
)}
); }