'use client'; import Breadcrumbs from '@/components/layout/Breadcrumbs'; import SponsorInsightsCard, { MetricBuilders, SlotTemplates, useSponsorMode } from '@/components/sponsors/SponsorInsightsCard'; import Button from '@/components/ui/Button'; import Card from '@/components/ui/Card'; import Image from 'next/image'; import JoinTeamButton from '@/components/teams/JoinTeamButton'; import TeamAdmin from '@/components/teams/TeamAdmin'; import TeamRoster from '@/components/teams/TeamRoster'; import TeamStandings from '@/components/teams/TeamStandings'; import StatItem from '@/components/teams/StatItem'; import { getMediaUrl } from '@/lib/utilities/media'; import PlaceholderImage from '@/components/ui/PlaceholderImage'; import type { TeamDetailViewData, TeamDetailData, TeamMemberData } from './TeamDetailViewData'; type Tab = 'overview' | 'roster' | 'standings' | 'admin'; // ============================================================================ // TEMPLATE PROPS // ============================================================================ export interface TeamDetailTemplateProps { // Data props team: TeamDetailData | null; memberships: TeamMemberData[]; activeTab: Tab; loading: boolean; isAdmin: boolean; // Event handlers onTabChange: (tab: Tab) => void; onUpdate: () => void; onRemoveMember: (driverId: string) => void; onChangeRole: (driverId: string, newRole: 'owner' | 'admin' | 'member') => void; onGoBack: () => void; } // ============================================================================ // MAIN TEMPLATE COMPONENT // ============================================================================ export default function TeamDetailTemplate({ team, memberships, activeTab, loading, isAdmin, onTabChange, onUpdate, onRemoveMember, onChangeRole, onGoBack, }: TeamDetailTemplateProps) { const isSponsorMode = useSponsorMode(); // Show loading state if (loading) { return (
The team you're looking for doesn't exist or has been disbanded.
{team.description}
{team.description}