'use client'; import Link from 'next/link'; import Image from 'next/image'; import type { LeagueSummaryDTO } from '@gridpilot/racing/application/dto/LeagueSummaryDTO'; import Card from '../ui/Card'; import { getLeagueCoverClasses } from '@/lib/leagueCovers'; import { getImageService } from '@/lib/di-container'; interface LeagueCardProps { league: LeagueSummaryDTO; onClick?: () => void; } export default function LeagueCard({ league, onClick }: LeagueCardProps) { const imageService = getImageService(); const coverUrl = imageService.getLeagueCover(league.id); const logoUrl = imageService.getLeagueLogo(league.id); return (

{league.name}

{new Date(league.createdAt).toLocaleDateString()}

{league.description}

{league.structureSummary && (

{league.structureSummary}

)} {league.scoringPatternSummary && (

{league.scoringPatternSummary}

)} {league.timingSummary && (

{league.timingSummary}

)}
Owner:{' '} {league.ownerId.slice(0, 8)}... Drivers:{' '} {typeof league.usedDriverSlots === 'number' ? league.usedDriverSlots : '—'} {' / '} {league.maxDrivers ?? '—'} {typeof league.usedTeamSlots === 'number' || typeof league.maxTeams === 'number' ? ( Teams:{' '} {typeof league.usedTeamSlots === 'number' ? league.usedTeamSlots : '—'} {' / '} {league.maxTeams ?? '—'} ) : null}
{league.scoring ? ( <> {league.scoring.gameName} {league.scoring.primaryChampionshipType === 'driver' ? 'Driver championship' : league.scoring.primaryChampionshipType === 'team' ? 'Team championship' : league.scoring.primaryChampionshipType === 'nations' ? 'Nations championship' : 'Trophy championship'} {league.scoring.scoringPatternSummary} ) : ( Scoring: Not configured )}
); }