Files
gridpilot.gg/apps/website/lib/view-data/TeamDetailViewData.ts
2026-01-17 22:55:03 +01:00

60 lines
1.2 KiB
TypeScript

/**
* 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;
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;
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[];
}