'use client'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { History, CheckCircle2 } from 'lucide-react'; import { CorrespondenceRevision } from '@/types/correspondence'; import { format } from 'date-fns'; interface RevisionHistoryProps { revisions: CorrespondenceRevision[]; } const STATUS_CLASS: Record = { DRAFT: 'bg-gray-100 text-gray-700', SUBOWN: 'bg-yellow-100 text-yellow-700', CLBOWN: 'bg-green-100 text-green-700', CCBOWN: 'bg-red-100 text-red-700', CANCELLED: 'bg-slate-100 text-slate-500', }; const STATUS_LABEL: Record = { DRAFT: 'Draft', SUBOWN: 'Submitted', CLBOWN: 'Approved', CCBOWN: 'Rejected', CANCELLED: 'Cancelled', }; export function RevisionHistory({ revisions }: RevisionHistoryProps) { if (!revisions || revisions.length === 0) return null; const sorted = [...revisions].sort((a, b) => b.revisionNumber - a.revisionNumber); return ( Revision History {revisions.length}
{sorted.map((rev) => { const statusCode = rev.status?.statusCode ?? ''; const statusLabel = STATUS_LABEL[statusCode] ?? statusCode; const statusClass = STATUS_CLASS[statusCode] ?? 'bg-gray-100 text-gray-700'; const isCurrent = rev.isCurrent; return (
Rev. {rev.revisionLabel ?? String(rev.revisionNumber).padStart(2, '0')} {isCurrent && ( )} {statusLabel}

{rev.subject}

{format(new Date(rev.createdAt), 'dd MMM yyyy, HH:mm')}

{rev.remarks && (

{rev.remarks}

)}
); })}
); }