import React, { useState, useEffect } from 'react'; import { Event } from '../types'; import EventCard from './EventCard'; import CategoryGrid from './CategoryGrid'; import DomainSelection from './DomainSelection'; import EventsHeroSlider from './EventsHeroSlider'; interface EventListProps { events: Event[]; selectedCategory: string | null; bookedEventIds: string[]; onToggleBooking: (id: string) => void; onSelectCategory: (id: string | null) => void; onTrackStatus?: (event: Event) => void; currentUserName: string; userRole?: string; userRegistrations?: any[]; } const EventList: React.FC = ({ events, selectedCategory, bookedEventIds, onToggleBooking, onSelectCategory, onTrackStatus, currentUserName, userRole, userRegistrations = [] }) => { const [selectedDomain, setSelectedDomain] = useState(null); const [selectedDomainName, setSelectedDomainName] = useState(null); useEffect(() => { setSelectedDomain(null); setSelectedDomainName(null); }, [selectedCategory]); if (!selectedCategory) { const hasActiveEvents = events.some(e => e.status !== 'Completed'); return (
); } if (!selectedDomain) { return ( { setSelectedDomain(id); if (name) setSelectedDomainName(name); }} onBack={() => onSelectCategory(null)} /> ); } let filteredEvents = events; if (selectedCategory !== 'ALL') { filteredEvents = filteredEvents.filter(e => e.category === selectedCategory); } if (selectedDomain !== 'ALL') { filteredEvents = filteredEvents.filter(e => e.domain === selectedDomain); } const categoryName = selectedCategory === 'ALL' ? 'All' : selectedCategory.charAt(0) + selectedCategory.slice(1).toLowerCase(); const domainName = selectedDomainName || (selectedDomain === 'ALL' ? 'All Domains' : selectedDomain); return (

{domainName}

Exploring {categoryName} Category

Showing {filteredEvents.length} events found

{filteredEvents.map(event => { const reg = userRegistrations.find(r => String(r.event_id) === String(event.id)); return ( onToggleBooking(event.id)} onTrackStatus={onTrackStatus} currentUserName={currentUserName} userRole={userRole} registration={reg} /> ); })}
{filteredEvents.length === 0 && (

No events found in this domain yet.

)}
); }; export default EventList;