'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 StandingsTable from '@/components/alpha/StandingsTable'; import { League } from '@/domain/entities/League'; import { Standing } from '@/domain/entities/Standing'; import { Driver } from '@/domain/entities/Driver'; import { getLeagueRepository, getStandingRepository, getDriverRepository } from '@/lib/di-container'; export default function LeagueStandingsPage() { const router = useRouter(); const params = useParams(); const leagueId = params.id as string; const [league, setLeague] = useState(null); const [standings, setStandings] = useState([]); const [drivers, setDrivers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const loadData = async () => { try { const leagueRepo = getLeagueRepository(); const standingRepo = getStandingRepository(); const driverRepo = getDriverRepository(); const leagueData = await leagueRepo.findById(leagueId); if (!leagueData) { setError('League not found'); setLoading(false); return; } setLeague(leagueData); // Load standings const standingsData = await standingRepo.findByLeagueId(leagueId); setStandings(standingsData); // Load drivers const driversData = await driverRepo.findAll(); setDrivers(driversData); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load standings'); } finally { setLoading(false); } }; useEffect(() => { loadData(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [leagueId]); if (loading) { return (
Loading standings...
); } if (error || !league) { return (
{error || 'League not found'}
); } return (
{/* Breadcrumb */}
{/* Page Header */}

Championship Standings

{league.name}

{/* Standings Content */} {standings.length > 0 ? ( <>

Current Standings

) : (
No standings available yet

Standings will appear after race results are imported

)}
); }