'use client'; import type { LeagueScoringConfigDTO } from '@gridpilot/racing/application/dto/LeagueScoringConfigDTO'; import { Trophy, Clock, Target, Zap, Info } from 'lucide-react'; interface LeagueScoringTabProps { scoringConfig: LeagueScoringConfigDTO | null; practiceMinutes?: number; qualifyingMinutes?: number; sprintRaceMinutes?: number; mainRaceMinutes?: number; } export default function LeagueScoringTab({ scoringConfig, practiceMinutes, qualifyingMinutes, sprintRaceMinutes, mainRaceMinutes, }: LeagueScoringTabProps) { if (!scoringConfig) { return (

No Scoring System

Scoring configuration is not available for this league yet

); } const primaryChampionship = scoringConfig.championships.find((c) => c.type === 'driver') ?? scoringConfig.championships[0]; const resolvedPractice = practiceMinutes ?? 20; const resolvedQualifying = qualifyingMinutes ?? 30; const resolvedSprint = sprintRaceMinutes; const resolvedMain = mainRaceMinutes ?? 40; return (

Scoring overview

{scoringConfig.gameName}{' '} {scoringConfig.scoringPresetName ? `• ${scoringConfig.scoringPresetName}` : '• Custom scoring'}{' '} • {scoringConfig.dropPolicySummary}

{primaryChampionship && (

Weekend structure & timings

{primaryChampionship.sessionTypes.map((session) => ( {session} ))}

Practice

{resolvedPractice ? `${resolvedPractice} min` : '—'}

Qualifying

{resolvedQualifying} min

Sprint

{resolvedSprint ? `${resolvedSprint} min` : '—'}

Main race

{resolvedMain} min

)}
{scoringConfig.championships.map((championship) => (

{championship.name}

{championship.type === 'driver' ? 'Driver championship' : championship.type === 'team' ? 'Team championship' : championship.type === 'nations' ? 'Nations championship' : 'Trophy championship'}

{championship.sessionTypes.length > 0 && (
{championship.sessionTypes.map((session) => ( {session} ))}
)}
{championship.pointsPreview.length > 0 && (

Points preview (top positions)

{championship.pointsPreview.map((row, index) => ( ))}
Session Position Points
{row.sessionType} P{row.position} {row.points}
)} {championship.bonusSummary.length > 0 && (

Bonus points

    {championship.bonusSummary.map((item, index) => (
  • {item}
  • ))}
)}

Drop score policy

{championship.dropPolicyDescription}

))}
); }