"use client"; import { useSSE } from "@/lib/use-sse"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { ScrollArea } from "@/components/ui/scroll-area"; import type { ActivityEvent } from "@/lib/types"; const typeColors: Record = { stack_healthy: "bg-green-500 glow-green", backup_result: "bg-green-500 glow-green", email_classified: "bg-blue-500 glow-blue", receipt_extracted: "bg-amber-500 glow-amber", container_unhealthy: "bg-red-500 glow-red", }; function formatTime(ts: string) { try { return new Date(ts).toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit", }); } catch { return ts; } } function eventMessage(event: ActivityEvent): string { if (event.raw) return event.raw; return `${event.type} from ${event.source}`; } export function ActivityFeed() { const events = useSSE("/api/activity"); return ( Activity Feed LIVE {events.length === 0 && (

Waiting for events...

)}
{events.map((event, i) => (

{eventMessage(event)}

{formatTime(event.timestamp)} · {event.source}

))}
); }