import { ArrowLeft, CalendarDays, ExternalLink, FolderKanban, Info, Timer } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import Modal from './Modal'; import { formatJalaliDateTime } from '../utils/date'; const typeLabels = { meeting: 'جلسه', task: 'تسک', sprint: 'اسپرینت', project: 'پروژه', action_item: 'اقدام', notification: 'اعلان', }; export default function EntityPreviewModal({ item, onClose }) { const navigate = useNavigate(); if (!item) return null; const title = item.title || item.preview?.title || 'جزئیات'; const body = item.body || item.preview?.body || item.message; const entityType = item.entity_type || item.event_type || 'notification'; const targetUrl = item.target_url; const previewEntries = item.preview && !item.preview.title ? Object.entries(item.preview).filter(([, value]) => value !== null && value !== undefined && value !== '') : []; const goToTarget = () => { if (!targetUrl) return; onClose(); navigate(targetUrl); }; return ( {targetUrl && ( )} )} >
{typeLabels[entityType] || entityType}

{title}

{body &&

{body}

}
{(item.start_at || item.created_at) && (
{formatJalaliDateTime(item.start_at || item.created_at)}
)} {item.end_at && (
تا {formatJalaliDateTime(item.end_at)}
)} {item.project?.title && (
{item.project.title}
)} {item.sprint?.title && (
{item.sprint.title}
)}
{previewEntries.length > 0 && (
{previewEntries.map(([label, value]) => (
{label}
{String(value)}
))}
)}
); }