58 lines
1.2 KiB
TypeScript
58 lines
1.2 KiB
TypeScript
import { ViewData } from "../contracts/view-data/ViewData";
|
|
|
|
export interface SponsorMetric {
|
|
icon: string; // Icon name (e.g. 'users', 'zap', 'calendar')
|
|
label: string;
|
|
value: string;
|
|
color?: string;
|
|
trend?: {
|
|
value: string;
|
|
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[] | null;
|
|
category?: string;
|
|
membership?: string | null;
|
|
canManage: boolean;
|
|
}
|
|
|
|
export interface TeamMemberData {
|
|
driverId: string;
|
|
driverName: string;
|
|
role: 'owner' | 'manager' | 'member';
|
|
joinedAt: string;
|
|
joinedAtLabel: string;
|
|
isActive: boolean;
|
|
avatarUrl: string | null;
|
|
}
|
|
|
|
export interface TeamTab {
|
|
id: 'overview' | 'roster' | 'standings' | 'admin';
|
|
label: string;
|
|
visible: boolean;
|
|
}
|
|
|
|
|
|
export interface TeamDetailViewData extends ViewData {
|
|
team: TeamDetailData;
|
|
memberships: TeamMemberData[];
|
|
currentDriverId: string | null;
|
|
isAdmin: boolean;
|
|
teamMetrics: SponsorMetric[];
|
|
tabs: TeamTab[];
|
|
memberCountLabel: string;
|
|
leagueCountLabel: string;
|
|
}
|