// components/events/EventRegistrationForm.tsx 'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; export default function EventRegistrationForm({ eventId }: { eventId: number }) { const router = useRouter(); const [formData, setFormData] = useState({ steamId: '', carModel: '', carSkin: '', teamName: '', }); const [availableCars, setAvailableCars] = useState([]); const [loading, setLoading] = useState(false); const [loadingCars, setLoadingCars] = useState(true); const [error, setError] = useState(''); const [success, setSuccess] = useState(false); // Fetch available cars on mount useEffect(() => { const fetchCars = async () => { try { const response = await fetch('/api/events/cars'); const data = await response.json(); if (data.success) { setAvailableCars(data.data); } else { setError('Failed to load available cars'); } } catch (err) { console.error('Error fetching cars:', err); setError('Failed to load available cars'); } finally { setLoadingCars(false); } }; fetchCars(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); setSuccess(false); try { const response = await fetch('/api/events/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ eventId, ...formData, }), }); const data = await response.json(); if (!response.ok) { throw new Error(data.error || 'Registration failed'); } setSuccess(true); setTimeout(() => { router.refresh(); }, 1500); } catch (err: any) { setError(err.message); } finally { setLoading(false); } }; // Format car name for display const formatCarName = (carId: string) => { return carId .replace(/_/g, ' ') .replace(/\b\w/g, char => char.toUpperCase()); }; return (
{/* Steam ID */}
setFormData({ ...formData, steamId: e.target.value })} className="w-full px-4 py-3 bg-black border border-white/20 text-white focus:border-white focus:outline-none transition-colors" placeholder="76561198XXXXXXXXX" />

Your Steam ID from the database

{/* Car Model Dropdown */}
{loadingCars ? (
Loading available cars...
) : ( )}

Choose from available cars for this event

{/* Car Skin */}
setFormData({ ...formData, carSkin: e.target.value })} className="w-full px-4 py-3 bg-black border border-white/20 text-white focus:border-white focus:outline-none transition-colors" placeholder="01_red_white (optional)" />
{/* Team Name */}
setFormData({ ...formData, teamName: e.target.value })} className="w-full px-4 py-3 bg-black border border-white/20 text-white focus:border-white focus:outline-none transition-colors" placeholder="Enter team name (optional)" />
{/* Error Message */} {error && (
{error}
)} {/* Success Message */} {success && (
Registration successful! Redirecting...
)} {/* Submit Button */}

* Required fields

); }