// lib/vendor-document-list/plant/upload/components/history-dialog.tsx "use client" import * as React from "react" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Badge } from "@/components/ui/badge" import { ScrollArea } from "@/components/ui/scroll-area" import { CheckCircle2, XCircle, Clock, FileText, User, Calendar, AlertCircle } from "lucide-react" import { StageSubmissionView } from "@/db/schema" import { formatDateTime } from "@/lib/utils" interface HistoryDialogProps { open: boolean onOpenChange: (open: boolean) => void submission: StageSubmissionView } export function HistoryDialog({ open, onOpenChange, submission }: HistoryDialogProps) { const history = submission.submissionHistory || [] const getStatusIcon = (status: string, reviewStatus?: string) => { if (reviewStatus === "APPROVED") { return } if (reviewStatus === "REJECTED") { return } if (status === "SUBMITTED") { return } return } const getStatusBadge = (status: string, reviewStatus?: string) => { const variant = reviewStatus === "APPROVED" ? "success" : reviewStatus === "REJECTED" ? "destructive" : status === "SUBMITTED" ? "default" : "secondary" return ( {reviewStatus || status} ) } return ( Submission History View all submission history for this stage {/* Document Info */}
{submission.docNumber} - {submission.documentTitle}
{submission.stageName}
{/* History Timeline */} {history.length === 0 ? (
No submission history available
) : (
{history.map((item, index) => (
{/* Timeline line */} {index < history.length - 1 && (
)} {/* Timeline item */}
{getStatusIcon(item.status, item.reviewStatus)}
Revision {item.revisionNumber} {getStatusBadge(item.status, item.reviewStatus)} {item.syncStatus && ( Sync: {item.syncStatus} )}
{item.submittedBy}
{formatDateTime(new Date(item.submittedAt))}
{item.fileCount} file(s)
))}
)}
) }