Files
gridpilot.gg/apps/website/templates/LeagueStandingsTemplate.tsx
2026-01-12 19:24:59 +01:00

56 lines
1.7 KiB
TypeScript

'use client';
import { LeagueChampionshipStats } from '@/components/leagues/LeagueChampionshipStats';
import { StandingsTable } from '@/components/leagues/StandingsTable';
import Card from '@/components/ui/Card';
import type { LeagueStandingsViewData } from '@/lib/view-data/LeagueStandingsViewData';
// ============================================================================
// TYPES
// ============================================================================
interface LeagueStandingsTemplateProps {
viewData: LeagueStandingsViewData;
onRemoveMember: (driverId: string) => void;
onUpdateRole: (driverId: string, newRole: string) => void;
loading?: boolean;
}
// ============================================================================
// MAIN TEMPLATE COMPONENT
// ============================================================================
export function LeagueStandingsTemplate({
viewData,
onRemoveMember,
onUpdateRole,
loading = false,
}: LeagueStandingsTemplateProps) {
if (loading) {
return (
<div className="text-center text-gray-400">
Loading standings...
</div>
);
}
return (
<div className="space-y-6">
{/* Championship Stats */}
<LeagueChampionshipStats standings={viewData.standings} drivers={viewData.drivers} />
<Card>
<h2 className="text-xl font-semibold text-white mb-4">Championship Standings</h2>
<StandingsTable
standings={viewData.standings}
drivers={viewData.drivers}
memberships={viewData.memberships}
currentDriverId={viewData.currentDriverId ?? undefined}
isAdmin={viewData.isAdmin}
onRemoveMember={onRemoveMember}
onUpdateRole={onUpdateRole}
/>
</Card>
</div>
);
}