import { TeamAdmin } from '@/components/teams/TeamAdmin'; import { TeamDetailsHeader } from '@/components/teams/TeamDetailsHeader'; import { TeamMembersTable } from '@/components/teams/TeamMembersTable'; import { TeamStandingsPanel } from '@/components/teams/TeamStandingsPanel'; import type { TeamDetailViewData } from '@/lib/view-data/TeamDetailViewData'; import { Box } from '@/ui/Box'; import { Breadcrumbs } from '@/ui/Breadcrumbs'; import { Button } from '@/ui/Button'; import { Container } from '@/ui/Container'; import { Grid } from '@/ui/Grid'; import { Heading } from '@/ui/Heading'; import { Panel } from '@/ui/Panel'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; type Tab = 'overview' | 'roster' | 'standings' | 'admin'; export interface TeamDetailTemplateProps { viewData: TeamDetailViewData; activeTab: Tab; loading: boolean; onTabChange: (tab: Tab) => void; onUpdate: () => void; onRemoveMember: (driverId: string) => void; onGoBack: () => void; } export function TeamDetailTemplate({ viewData, activeTab, loading, onTabChange, onUpdate, onRemoveMember, onGoBack, }: TeamDetailTemplateProps) { const team = viewData.team; if (loading) { return ( Synchronizing Telemetry... ); } if (!team) { return ( 404: Team Disconnected The requested team entity is no longer broadcasting. ); } return ( onTabChange('admin')} /> {/* Tabs */} {viewData.tabs.map((tab) => ( tab.visible && ( onTabChange(tab.id as Tab)} paddingBottom={4} cursor="pointer" position="relative" > {tab.label} {activeTab === tab.id && ( )} ) ))} {activeTab === 'overview' && ( Mission Statement {team.description || 'No description provided.'} Recent Operations NO RECENT TELEMETRY DATA Performance Metrics Avg Rating 1450 Win Rate 12.5% Total Podiums 42 )} {activeTab === 'roster' && ( Active Personnel {viewData.memberships.length} UNITS ACTIVE )} {activeTab === 'standings' && ( )} {activeTab === 'admin' && viewData.isAdmin && ( )} ); }