'use client'; import { useState, useEffect } from 'react'; import { api, Registration } from '@/lib/api'; import { useAuth } from '@/lib/auth-context'; export function RegistrationList() { const [registrations, setRegistrations] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const { user } = useAuth(); useEffect(() => { loadRegistrations(); }, []); const loadRegistrations = async () => { try { setIsLoading(true); const data = await api.getMyRegistrations(); setRegistrations(data); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load registrations'); } finally { setIsLoading(false); } }; const handleCancel = async (id: string) => { if (!confirm('Are you sure you want to cancel this registration?')) { return; } try { await api.cancelRegistration(id); loadRegistrations(); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to cancel registration'); } }; const getStatusColor = (status: string) => { switch (status) { case 'Confirmed': return 'bg-green-100 text-green-800'; case 'Pending': return 'bg-yellow-100 text-yellow-800'; case 'Cancelled': return 'bg-red-100 text-red-800'; default: return 'bg-gray-100 text-gray-800'; } }; if (isLoading) { return
Loading registrations...
; } if (error) { return (
{error}
); } return (
{registrations.length === 0 ? (

You haven't registered for any events yet.

Browse events
) : (
{registrations.map((registration) => (
{registration.status} {new Date(registration.eventDate).toLocaleDateString()}

{registration.eventName}

Registered: {new Date(registration.registeredAt).toLocaleDateString()}

{registration.totalPaid > 0 && (

Paid: ${registration.totalPaid.toFixed(2)}

)}
View Event {registration.status !== 'Cancelled' && registration.status !== 'Completed' && ( )}
))}
)}
); }