'use client'; import { useState } from 'react'; import { motion, useReducedMotion } from 'framer-motion'; import Link from 'next/link'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import { siteConfig } from '@/lib/siteConfig'; import { Trophy, Users, Calendar, Eye, TrendingUp, Download, Image as ImageIcon, ExternalLink, ChevronRight, Star, Clock, CheckCircle2, Flag, Car, BarChart3, ArrowUpRight, Megaphone, CreditCard, FileText } from 'lucide-react'; interface SponsorLeagueDetailData { league: { id: string; name: string; game: string; season: string; description: string; tier: 'premium' | 'standard' | 'starter'; rating: number; drivers: number; races: number; completedRaces: number; racesLeft: number; engagement: number; totalImpressions: number; formattedTotalImpressions: string; projectedTotal: number; formattedProjectedTotal: string; mainSponsorCpm: number; formattedMainSponsorCpm: string; avgViewsPerRace: number; formattedAvgViewsPerRace: string; nextRace?: { name: string; date: string; }; sponsorSlots: { main: { available: boolean; price: number; benefits: string[]; }; secondary: { available: number; total: number; price: number; benefits: string[]; }; }; tierConfig: { bgColor: string; color: string; border: string; }; }; drivers: Array<{ id: string; position: number; name: string; team: string; country: string; races: number; impressions: number; formattedImpressions: string; }>; races: Array<{ id: string; name: string; date: string; formattedDate: string; status: 'completed' | 'upcoming'; views: number; }>; } interface SponsorLeagueDetailTemplateProps { data: SponsorLeagueDetailData; } type TabType = 'overview' | 'drivers' | 'races' | 'sponsor'; export function SponsorLeagueDetailTemplate({ data }: SponsorLeagueDetailTemplateProps) { const shouldReduceMotion = useReducedMotion(); const [activeTab, setActiveTab] = useState('overview'); const [selectedTier, setSelectedTier] = useState<'main' | 'secondary'>('main'); const league = data.league; const config = league.tierConfig; return (
{/* Breadcrumb */}
Dashboard Leagues {league.name}
{/* Header */}
⭐ {league.tier} Active Season
{league.rating}

{league.name}

{league.game} • {league.season} • {league.completedRaces}/{league.races} races completed

{league.description}

{(league.sponsorSlots.main.available || league.sponsorSlots.secondary.available > 0) && ( )}
{/* Quick Stats */}
{league.formattedTotalImpressions}
Total Views
{league.formattedAvgViewsPerRace}
Avg/Race
{league.drivers}
Drivers
{league.engagement}%
Engagement
{league.racesLeft}
Races Left
{/* Tabs */}
{(['overview', 'drivers', 'races', 'sponsor'] as const).map((tab) => ( ))}
{/* Tab Content */} {activeTab === 'overview' && (

League Information

Platform {league.game}
Season {league.season}
Duration Oct 2025 - Feb 2026
Drivers {league.drivers}
Races {league.races}

Sponsorship Value

Total Season Views {league.formattedTotalImpressions}
Projected Total {league.formattedProjectedTotal}
Main Sponsor CPM {league.formattedMainSponsorCpm}
Engagement Rate {league.engagement}%
League Rating
{league.rating}/5.0
{/* Next Race */} {league.nextRace && (

Next Race

{league.nextRace.name}

{league.nextRace.date}

)}
)} {activeTab === 'drivers' && (

Championship Standings

Top drivers carrying sponsor branding

{data.drivers.map((driver) => (
{driver.position}
{driver.name}
{driver.team} • {driver.country}
{driver.races}
races
{driver.formattedImpressions}
views
))}
)} {activeTab === 'races' && (

Race Calendar

Season schedule with view statistics

{data.races.map((race) => (
{race.name}
{race.formattedDate}
{race.status === 'completed' ? (
{race.views.toLocaleString()}
views
) : ( Upcoming )}
))}
)} {activeTab === 'sponsor' && (
{/* Tier Selection */}
{/* Main Sponsor */} league.sponsorSlots.main.available && setSelectedTier('main')} >

Main Sponsor

Primary branding position

{league.sponsorSlots.main.available ? ( Available ) : ( Filled )}
${league.sponsorSlots.main.price} /season
    {league.sponsorSlots.main.benefits.map((benefit: string, i: number) => (
  • {benefit}
  • ))}
{selectedTier === 'main' && league.sponsorSlots.main.available && (
)}
{/* Secondary Sponsor */} league.sponsorSlots.secondary.available > 0 && setSelectedTier('secondary')} >

Secondary Sponsor

Supporting branding position

{league.sponsorSlots.secondary.available > 0 ? ( {league.sponsorSlots.secondary.available}/{league.sponsorSlots.secondary.total} Available ) : ( Full )}
${league.sponsorSlots.secondary.price} /season
    {league.sponsorSlots.secondary.benefits.map((benefit: string, i: number) => (
  • {benefit}
  • ))}
{selectedTier === 'secondary' && league.sponsorSlots.secondary.available > 0 && (
)}
{/* Checkout Summary */}

Sponsorship Summary

Selected Tier {selectedTier} Sponsor
Season Price ${selectedTier === 'main' ? league.sponsorSlots.main.price : league.sponsorSlots.secondary.price}
Platform Fee ({siteConfig.fees.platformFeePercent}%) ${((selectedTier === 'main' ? league.sponsorSlots.main.price : league.sponsorSlots.secondary.price) * siteConfig.fees.platformFeePercent / 100).toFixed(2)}
Total (excl. VAT) ${((selectedTier === 'main' ? league.sponsorSlots.main.price : league.sponsorSlots.secondary.price) * (1 + siteConfig.fees.platformFeePercent / 100)).toFixed(2)}

{siteConfig.vat.notice}

)}
); }