import React from 'react'; import { Mail, Phone, Calendar, FileText, User } from 'lucide-react'; import { cn, formatDateFR } from '@/lib/utils'; import StatusBadge from './StatusBadget'; import { useNavigate } from 'react-router-dom'; import { useAppDispatch } from '@/store/hooks'; import { selectCommandeAsync } from '@/store/features/commande/thunk'; import { selectDevis } from '@/store/features/devis/slice'; import { motion } from 'framer-motion'; import { CheckCircle2, AlertCircle, ArrowRight, Truck, PenTool, FileCheck, XCircle, Plus } from 'lucide-react'; const iconMap = { email: Mail, call: Phone, meeting: Calendar, quote: FileText, task: User, }; const getEventIcon = (type) => { switch (type) { case 'creation': return Plus; case 'email': return Mail; case 'viewed': return CheckCircle2; case 'signature': return PenTool; case 'transform': return ArrowRight; case 'delivery': return Truck; case 'payment': return FileCheck; case 'cancellation': return XCircle; case 'update': return FileText; default: return Calendar; } }; const getEventColor = (type) => { switch (type) { case 'creation': return 'bg-blue-100 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400'; case 'email': return 'bg-purple-100 text-purple-600 dark:bg-purple-900/30 dark:text-purple-400'; case 'signature': return 'bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400'; case 'delivery': return 'bg-orange-100 text-orange-600 dark:bg-orange-900/30 dark:text-orange-400'; case 'cancellation': return 'bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400'; default: return 'bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400'; } }; const Timeline = ({ events }) => { const navigate = useNavigate(); const dispatch = useAppDispatch() return (
{events.map((event, index) => { const Icon = getEventIcon(event.type); const colorClass = getEventColor(event.type); return ( navigate(event.link)} >

{event.title}

{new Date(event.date).toLocaleDateString()} {event.time && ` • ${event.time}`}
{/* Tiny triangle for speech bubble effect */}

{event.description || 'Aucun détail supplémentaire.'}

J
Jean Dupont
); })}
); }; export default Timeline;