'use client'; import { useState, useEffect } from 'react'; import { api, Event } from '@/lib/api'; export function EventList() { const [events, setEvents] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const [category, setCategory] = useState(''); const [status, setStatus] = useState(''); useEffect(() => { loadEvents(); }, [category, status]); const loadEvents = async () => { try { setIsLoading(true); const data = await api.getEvents({ category: category || undefined, status: status || undefined, }); setEvents(data); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load events'); } finally { setIsLoading(false); } }; const categories = ['Running', 'Cycling', 'Triathlon', 'Trail', 'Road']; if (isLoading) { return
Loading events...
; } if (error) { return (
{error}
); } return (
{/* Filters */}
{/* Events Grid */} {events.length === 0 ? (
No events found
) : (
{events.map((event) => (
{event.status} {event.category && ( {event.category} )}

{event.name}

{event.description}

📅 {new Date(event.eventDate).toLocaleDateString()}
📍 {event.location}
👥 {event.currentRegistrations} {event.maxParticipants && ` / ${event.maxParticipants}`} registered
{event.tags.length > 0 && (
{event.tags.map((tag) => ( {tag} ))}
)} View Details
))}
)}
); }