import React from 'react'; import { EventData, EventStatus, UserRole } from '../types'; import { Calendar, MapPin, Users, CheckCircle, Clock } from 'lucide-react'; import { STATUS_COLORS } from '../constants'; interface EventTableProps { events: EventData[]; onEventClick: (event: EventData) => void; onApprove?: (e: React.MouseEvent, eventId: string) => void; userRole: UserRole; } export const EventTable: React.FC = ({ events, onEventClick, onApprove, userRole }) => { const canApprove = (userRole === UserRole.BUSINESS_OWNER || userRole === UserRole.SUPERADMIN); const formatDate = (date: string) => { const eventDate = new Date(date + 'T00:00:00'); return eventDate.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' }); }; const getStatusDisplay = (status: EventStatus) => { const statusLabels: Record = { [EventStatus.PENDING_APPROVAL]: 'Pendente', [EventStatus.CONFIRMED]: 'Confirmado', [EventStatus.PLANNING]: 'Planejamento', [EventStatus.IN_PROGRESS]: 'Em Andamento', [EventStatus.COMPLETED]: 'Concluído', [EventStatus.ARCHIVED]: 'Arquivado', }; return statusLabels[status] || status; }; return (
{canApprove && ( )} {events.map((event) => ( onEventClick(event)} className="hover:bg-gray-50 cursor-pointer transition-colors" > {canApprove && ( )} ))}
Ações Nome do Evento Tipo Data Horário Local Contatos Equipe Status
e.stopPropagation()}> {event.status === EventStatus.PENDING_APPROVAL && ( )}
{event.name}
{event.type}
{formatDate(event.date)}
{event.time}
{event.address.city}, {event.address.state}
{event.contacts.length}
{event.photographerIds.length > 0 ? (
{event.photographerIds.slice(0, 3).map((id, idx) => (
))} {event.photographerIds.length > 3 && (
+{event.photographerIds.length - 3}
)}
) : ( - )}
{getStatusDisplay(event.status)}
{events.length === 0 && (

Nenhum evento encontrado.

)}
); };