import { ChevronDown, ChevronRight, CheckCircle, XCircle, Loader2, } from 'lucide-react' import { useState } from 'react' import { Button } from '../ui/button' import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '../ui/collapsible' import { cn } from '../lib/utils' export type ChatEvent = { title: string description?: string status: 'pending' | 'success' | 'error' data?: any } export function ChatEvent({ event, className, renderData, }: { event: ChatEvent className?: string renderData?: (data: ChatEvent['data']) => React.ReactNode }) { const [isDataOpen, setIsDataOpen] = useState(false) const getStatusIcon = () => { switch (event.status) { case 'pending': return case 'success': return case 'error': return } } const getStatusColor = () => { switch (event.status) { case 'pending': return 'border-yellow-400' case 'success': return 'border-green-400' case 'error': return 'border-red-400' } } return (
{/* Header with title and status */}

{event.title}

{event.description && (

{event.description}

)}
{getStatusIcon()} {event.status}
{/* Data section if data exists */} {event.data && (
{renderData ? ( renderData(event.data) ) : (
                  {JSON.stringify(event.data, null, 2)}
                
)}
)}
) }