'use client'; import { useState, useEffect } from 'react'; import { useRouter, useParams } from 'next/navigation'; import Button from '@/components/ui/Button'; import Card from '@/components/ui/Card'; import FeatureLimitationTooltip from '@/components/alpha/FeatureLimitationTooltip'; import { League } from '@/domain/entities/League'; import { Race } from '@/domain/entities/Race'; import { Driver } from '@/domain/entities/Driver'; import { getLeagueRepository, getRaceRepository, getDriverRepository } from '@/lib/di-container'; export default function LeagueDetailPage() { const router = useRouter(); const params = useParams(); const leagueId = params.id as string; const [league, setLeague] = useState(null); const [owner, setOwner] = useState(null); const [races, setRaces] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const loadLeagueData = async () => { try { const leagueRepo = getLeagueRepository(); const raceRepo = getRaceRepository(); const driverRepo = getDriverRepository(); const leagueData = await leagueRepo.findById(leagueId); if (!leagueData) { setError('League not found'); setLoading(false); return; } setLeague(leagueData); // Load owner data const ownerData = await driverRepo.findById(leagueData.ownerId); setOwner(ownerData); // Load races for this league const allRaces = await raceRepo.findAll(); const leagueRaces = allRaces .filter(race => race.leagueId === leagueId) .sort((a, b) => new Date(a.scheduledAt).getTime() - new Date(b.scheduledAt).getTime()); setRaces(leagueRaces); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load league'); } finally { setLoading(false); } }; useEffect(() => { loadLeagueData(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [leagueId]); if (loading) { return (
Loading league...
); } if (error || !league) { return (
{error || 'League not found'}
); } const upcomingRaces = races.filter(race => race.status === 'scheduled'); return (
{/* Breadcrumb */}
{/* League Header */}

{league.name}

Alpha: Single League

{league.description}

{/* League Info */}

League Information

{owner ? owner.name : `ID: ${league.ownerId.slice(0, 8)}...`}

{new Date(league.createdAt).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}

League Settings

{league.settings.pointsSystem.toUpperCase()}

{league.settings.sessionDuration} minutes

{league.settings.qualifyingFormat}

{/* Quick Actions */}

Quick Actions

{/* Upcoming Races */}

Upcoming Races

{upcomingRaces.length === 0 ? (

No upcoming races scheduled

Click “Schedule Race” to create your first race

) : (
{upcomingRaces.map((race) => (
router.push(`/races/${race.id}`)} >

{race.track}

{race.car}

{race.sessionType}

{new Date(race.scheduledAt).toLocaleDateString()}

{new Date(race.scheduledAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}

))}
)}
); }