import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { FileText, CheckCircle, XCircle, Clock, Loader2, Share2 } from 'lucide-react'; import { format } from 'date-fns'; import type { SummaryDetails } from '@/services/summaryApi'; interface SummaryTabProps { summary: SummaryDetails | null; loading: boolean; onShare?: () => void; isInitiator?: boolean; } export function SummaryTab({ summary, loading, onShare, isInitiator }: SummaryTabProps) { const getStatusIcon = (status: string) => { const statusLower = status.toLowerCase(); if (statusLower === 'approved') return ; if (statusLower === 'rejected') return ; if (statusLower === 'pending' || statusLower === 'in progress') return ; return ; }; const getStatusColor = (status: string) => { const statusLower = status.toLowerCase(); if (statusLower === 'approved') return 'bg-green-100 text-green-700 border-green-300'; if (statusLower === 'rejected') return 'bg-red-100 text-red-700 border-red-300'; if (statusLower === 'pending' || statusLower === 'in progress') return 'bg-orange-100 text-orange-700 border-orange-300'; return 'bg-gray-100 text-gray-700 border-gray-300'; }; // Helper function to get designation or department (fallback to department if designation is N/A or empty) const getDesignationOrDepartment = (designation?: string | null, department?: string | null) => { if (designation && designation.trim() && designation.trim().toUpperCase() !== 'N/A') { return designation; } if (department && department.trim() && department.trim().toUpperCase() !== 'N/A') { return department; } return 'N/A'; }; if (loading) { return (

Loading summary...

); } if (!summary) { return (

Summary Not Available

Summary has not been generated for this request yet.

); } return (
{/* Summary Card */}

{summary.title}

Request #{summary.requestNumber}

{isInitiator && onShare ? ( ) : ( {getStatusIcon(summary.workflow.status)} {summary.workflow.status} )}
{summary.description && (

{summary.description}

)}
{/* Initiator Section */}

Initiator

Name

{summary.initiator.name}

Designation

{getDesignationOrDepartment(summary.initiator.designation, summary.initiator.department)}

Status

{summary.initiator.status}

Time Stamp

{format(new Date(summary.initiator.timestamp), 'MMM dd, yy, HH:mm')}

{/* Approvers Section */} {summary.approvers && summary.approvers.length > 0 && (

Workflow

{summary.approvers.map((approver, index) => (

{approver.levelName || `Approver ${approver.levelNumber}`}

Name

{approver.name}

Designation

{getDesignationOrDepartment(approver.designation, approver.department)}

Status

{getStatusIcon(approver.status)}

{approver.status}

Time Stamp

{format(new Date(approver.timestamp), 'MMM dd, yy, HH:mm')}

Remarks

{approver.remarks || '—'}

))}
)} {/* Closing Remarks Section */}

Closing Remarks (Conclusion)

Name

{summary.initiator.name}

Designation

{getDesignationOrDepartment(summary.initiator.designation, summary.initiator.department)}

Status

Concluded

{summary.isAiGenerated && (

Source

AI Generated
)}

Remarks

{summary.closingRemarks || '—'}

); }