"use client"; import { useState } from "react"; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Download, Search, Filter } from "lucide-react"; import { SystemEvent } from "@/types/admin"; interface ActivityLogsProps { logs: SystemEvent[]; loading?: boolean; } export function ActivityLogs({ logs, loading }: ActivityLogsProps) { const [filter, setFilter] = useState("all"); const [search, setSearch] = useState(""); const getEventColor = (type: string) => { switch (type) { case "error": return "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-100"; case "warning": return "bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-100"; case "success": return "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100"; default: return "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-100"; } }; const filteredLogs = logs.filter((log) => { const matchesFilter = filter === "all" || log.type === filter; const matchesSearch = log.message.toLowerCase().includes(search.toLowerCase()); return matchesFilter && matchesSearch; }); return (
System Activity Recent system events and user actions
setSearch(e.target.value)} className="pl-8" />
Type Message Timestamp {loading ? ( Loading... ) : filteredLogs.length === 0 ? ( No logs found. ) : ( filteredLogs.map((log) => ( {log.type} {log.message} {log.metadata && (
                            {JSON.stringify(log.metadata, null, 2)}
                          
)}
{new Date(log.timestamp).toLocaleString()}
)) )}
); }