import { AdminQuickViewWidgets } from '@/components/leagues/AdminQuickViewWidgets'; import { LeagueActivityFeed } from '@/components/leagues/LeagueActivityFeed'; import { LeagueLogo } from '@/components/leagues/LeagueLogo'; import { NextRaceCountdownWidget } from '@/components/leagues/NextRaceCountdownWidget'; import { SeasonProgressWidget } from '@/components/leagues/SeasonProgressWidget'; import type { LeagueDetailViewData } from '@/lib/view-data/LeagueDetailViewData'; import { Box } from '@/ui/Box'; import { Link } from '@/ui/Link'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { Calendar, Shield, Trophy, Users, type LucideIcon } from 'lucide-react'; interface LeagueOverviewTemplateProps { viewData: LeagueDetailViewData; isOwnerOrAdmin: boolean; } export function LeagueOverviewTemplate({ viewData, isOwnerOrAdmin }: LeagueOverviewTemplateProps) { return ( {/* Header with Logo */} {viewData.name} {viewData.info.structure} • Created {new Date(viewData.info.createdAt).toLocaleDateString()} {/* Main Content */} {/* Next Race Section */} {viewData.nextRace && ( Next Race )} {/* Season Progress Section */} {viewData.seasonProgress && ( Season Progress )} {/* League Activity Feed */} Recent Activity {/* About the League */} About the League {viewData.description || 'No description provided for this league.'} {/* Quick Stats */} Quick Stats {/* Roster Preview */} Roster Preview View All {[viewData.ownerSummary, ...viewData.adminSummaries, ...viewData.stewardSummaries, ...viewData.memberSummaries] .filter((m): m is any => m !== null) .slice(0, 5) .map((member) => ( ))} {viewData.adminSummaries.length === 0 && viewData.stewardSummaries.length === 0 && viewData.memberSummaries.length === 0 && !viewData.ownerSummary && ( )}
{member.driverName} {member.roleBadgeText}
No members to display
{/* Sidebar */} {/* Admin Quick-View Widgets */} {isOwnerOrAdmin && ( Admin Tools )} Management {viewData.ownerSummary && ( Owner {viewData.ownerSummary.driverName} )} Admins {viewData.adminSummaries.map(admin => ( {admin.driverName} ))} {viewData.adminSummaries.length === 0 && No admins assigned} Sponsors {viewData.sponsors.length > 0 ? ( viewData.sponsors.map(sponsor => ( {sponsor.name} )) ) : ( No active sponsors )}
); } function StatCard({ icon: Icon, label, value, 'data-testid': dataTestId }: { icon: LucideIcon, label: string, value: string | number, 'data-testid'?: string }) { return ( {label} {value} ); }