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 (
);
}
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}`}
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)}
{summary.isAiGenerated && (
)}
Remarks
{summary.closingRemarks || '—'}
);
}