'use client'; import { History, MessageSquareText } from 'lucide-react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { cn } from '@/lib/utils'; import type { TicketDetail, TicketHistoryItem, TicketStatus } from '@/types'; import { formatDate } from '@/utils/date'; function getActorLabel(item: TicketHistoryItem) { return item.actor?.name || item.actor?.email || 'System'; } function getLifecycleTitle(status: TicketStatus) { const titles: Record = { unassigned: 'Awaiting Assignment', assigned: 'Dispatched to Maintenance', under_review: 'Maintenance Finalized', closed: 'Ticket Closed', }; return titles[status]; } function HistoryEntry({ item, isLast, }: { item: TicketHistoryItem; isLast: boolean; }) { const isClosed = item.to_status === 'closed'; return (
{!isLast ? ( ) : null}

{getLifecycleTitle(item.to_status)}

Updated By{' '} {getActorLabel(item)}

{item.note ? (

{item.note}

) : null}
); } export function TicketHistoryCard({ ticket }: { ticket: TicketDetail }) { const history = ticket.history ?? []; return ( Audit & Lifecycle Timeline {history.length ? (
{history.map((item, index) => ( ))}
) : (

No timeline entries yet

)}
); }