/** * View Model for Driver's Team * * Client-only UI helper built from ViewData. */ import { ViewModel } from "../contracts/view-models/ViewModel"; import { ProfileFormatter } from "../formatters/ProfileFormatter"; import type { TeamDetailData } from "../view-data/TeamDetailViewData"; export class DriverTeamViewModel extends ViewModel { constructor(private readonly viewData: TeamDetailData) { super(); } get teamId(): string { return this.viewData.id; } get teamName(): string { return this.viewData.name; } get tag(): string { return this.viewData.tag; } get role(): string { return this.viewData.membership?.role ?? "member"; } get canManage(): boolean { return this.viewData.canManage; } get isOwner(): boolean { return this.viewData.membership?.role === "owner"; } /** UI-specific: Display role */ get displayRole(): string { return ProfileFormatter.getTeamRole(this.role).text; } }