import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import Layout from '../components/layout/Layout'; import { eventsAPI } from '../services/api'; import { Calendar, MapPin, Users, Loader2, CheckCircle } from 'lucide-react'; const EventsPage = () => { const navigate = useNavigate(); const [events, setEvents] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); useEffect(() => { const fetchEvents = async () => { try { setLoading(true); const data = await eventsAPI.getAll(); setEvents(data); } catch (err) { setError('Failed to load events'); console.error('Error loading events:', err); } finally { setLoading(false); } }; fetchEvents(); }, []); const handleJoinEvent = (eventId) => { navigate(`/events/${eventId}/chat`); }; if (loading) { return ( Loading events... ); } if (error) { return ( {error} ); } return ( Choose an event Join an event and start connecting with other dancers {events.map((event) => ( {event.name} {event.isJoined && ( Joined )} {event.location} {new Date(event.startDate).toLocaleDateString('en-US')} - {new Date(event.endDate).toLocaleDateString('en-US')} {event.participantsCount} participants {event.description && ( {event.description} )} handleJoinEvent(event.id)} className="w-full px-4 py-2 bg-primary-600 text-white rounded-md hover:bg-primary-700 transition-colors" > {event.isJoined ? 'Open chat' : 'Join chat'} ))} ); }; export default EventsPage;
Loading events...
Join an event and start connecting with other dancers
{event.description}