/** * TeamDetailViewData - Pure ViewData for TeamDetailTemplate * Contains only raw serializable data, no methods or computed properties */ export interface SponsorMetric { icon: string; // Icon name (e.g. 'users', 'zap', 'calendar') label: string; value: string | number; color?: string; trend?: { value: number; isPositive: boolean; }; } export interface TeamDetailData { id: string; name: string; tag: string; description?: string; ownerId: string; leagues: string[]; createdAt?: string; foundedDateLabel?: string; specialization?: string; region?: string; languages?: string[]; category?: string; membership?: { role: string; joinedAt: string; isActive: boolean; } | null; canManage: boolean; } export interface TeamMemberData { driverId: string; driverName: string; role: 'owner' | 'manager' | 'member'; joinedAt: string; joinedAtLabel: string; isActive: boolean; avatarUrl: string; } export interface TeamTab { id: 'overview' | 'roster' | 'standings' | 'admin'; label: string; visible: boolean; } export interface TeamDetailViewData { team: TeamDetailData; memberships: TeamMemberData[]; currentDriverId: string; isAdmin: boolean; teamMetrics: SponsorMetric[]; tabs: TeamTab[]; memberCountLabel: string; leagueCountLabel: string; }