'use client'; import { CorrespondenceRevision } from '@/types/correspondence'; import { DataTable } from '@/components/common/data-table'; import { ColumnDef } from '@tanstack/react-table'; import { StatusBadge } from '@/components/common/status-badge'; import { Button } from '@/components/ui/button'; import { Eye, Edit } from 'lucide-react'; import Link from 'next/link'; import { format } from 'date-fns'; interface CorrespondenceListProps { data: CorrespondenceRevision[]; } export function CorrespondenceList({ data }: CorrespondenceListProps) { const columns: ColumnDef[] = [ { accessorKey: 'correspondence.correspondenceNumber', header: 'Document No.', cell: ({ row }) => {row.original.correspondence?.correspondenceNumber}, }, { accessorKey: 'revisionLabel', header: 'Rev', cell: ({ row }) => ( {row.original.revisionLabel || row.original.revisionNumber} ), }, { accessorKey: 'subject', header: 'Subject', cell: ({ row }) => (
{row.original.subject}
), }, { accessorKey: 'correspondence.type.typeCode', header: 'Type', cell: ({ row }) => ( {row.original.correspondence?.type?.typeCode || '-'} ), }, { accessorKey: 'correspondence.originator.organizationCode', header: 'From', cell: ({ row }) => ( {row.original.correspondence?.originator?.organizationCode || '-'} ), }, { accessorKey: 'correspondence.project.projectCode', header: 'Project', cell: ({ row }) => ( {row.original.correspondence?.project?.projectCode || '-'} ), }, { accessorKey: 'dueDate', header: 'Due Date', cell: ({ row }) => { const due = row.original.dueDate; if (!due) return -; const isOverdue = new Date(due) < new Date() && row.original.status?.statusCode !== 'CANCELLED'; return ( {format(new Date(due), 'dd MMM yyyy')} ); }, }, { accessorKey: 'createdAt', header: 'Created', cell: ({ row }) => format(new Date(row.getValue('createdAt')), 'dd MMM yyyy'), }, { accessorKey: 'status.statusName', header: 'Status', cell: ({ row }) => , }, { id: 'actions', cell: ({ row }) => { const item = row.original; // Edit/View link goes to the DOCUMENT detail (correspondence.uuid) // Ideally we might pass ?revId=item.uuid to view specific revision, but detail page defaults to latest. // For editing, we edit the document. const docUuid = item.correspondence.uuid; const statusCode = item.status?.statusCode; return (
{statusCode === 'DRAFT' && ( )}
); }, }, ]; return (
); }