@burdenoff/microfe-atheletebridge 2026.706.2 → 2026.713.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/atheletebridge/AthleteBridgeRoot.d.ts +5 -0
  2. package/dist/atheletebridge/AthleteBridgeRoot.d.ts.map +1 -0
  3. package/dist/atheletebridge/AthleteBridgeRoutes.d.ts +4 -0
  4. package/dist/atheletebridge/AthleteBridgeRoutes.d.ts.map +1 -0
  5. package/dist/atheletebridge/AthleteBridgeRoutes.js +135 -57
  6. package/dist/atheletebridge/AthleteBridgeRoutes.js.map +1 -1
  7. package/dist/atheletebridge/components/AthleteSelect.d.ts +26 -0
  8. package/dist/atheletebridge/components/AthleteSelect.d.ts.map +1 -0
  9. package/dist/atheletebridge/components/Crest.d.ts +17 -0
  10. package/dist/atheletebridge/components/Crest.d.ts.map +1 -0
  11. package/dist/atheletebridge/components/CursorPager.d.ts +12 -0
  12. package/dist/atheletebridge/components/CursorPager.d.ts.map +1 -0
  13. package/dist/atheletebridge/components/DrillVideoLink.d.ts +12 -0
  14. package/dist/atheletebridge/components/DrillVideoLink.d.ts.map +1 -0
  15. package/dist/atheletebridge/components/EmptyState.d.ts +14 -0
  16. package/dist/atheletebridge/components/EmptyState.d.ts.map +1 -0
  17. package/dist/atheletebridge/components/FilterSelect.d.ts +23 -0
  18. package/dist/atheletebridge/components/FilterSelect.d.ts.map +1 -0
  19. package/dist/atheletebridge/components/FixtureCard.d.ts +10 -0
  20. package/dist/atheletebridge/components/FixtureCard.d.ts.map +1 -0
  21. package/dist/atheletebridge/components/LoadingState.d.ts +16 -0
  22. package/dist/atheletebridge/components/LoadingState.d.ts.map +1 -0
  23. package/dist/atheletebridge/components/MatchupRow.d.ts +16 -0
  24. package/dist/atheletebridge/components/MatchupRow.d.ts.map +1 -0
  25. package/dist/atheletebridge/components/MetricsCard.d.ts +26 -0
  26. package/dist/atheletebridge/components/MetricsCard.d.ts.map +1 -0
  27. package/dist/atheletebridge/components/PageLayout.d.ts +22 -0
  28. package/dist/atheletebridge/components/PageLayout.d.ts.map +1 -0
  29. package/dist/atheletebridge/components/ProgramCard.d.ts +15 -0
  30. package/dist/atheletebridge/components/ProgramCard.d.ts.map +1 -0
  31. package/dist/atheletebridge/components/RouteAnalytics.d.ts +9 -0
  32. package/dist/atheletebridge/components/RouteAnalytics.d.ts.map +1 -0
  33. package/dist/atheletebridge/components/RouteAnalytics.js +30 -0
  34. package/dist/atheletebridge/components/RouteAnalytics.js.map +1 -0
  35. package/dist/atheletebridge/components/Scoreboard.d.ts +47 -0
  36. package/dist/atheletebridge/components/Scoreboard.d.ts.map +1 -0
  37. package/dist/atheletebridge/components/SessionCard.d.ts +14 -0
  38. package/dist/atheletebridge/components/SessionCard.d.ts.map +1 -0
  39. package/dist/atheletebridge/components/SessionStatusTimeline.d.ts +14 -0
  40. package/dist/atheletebridge/components/SessionStatusTimeline.d.ts.map +1 -0
  41. package/dist/atheletebridge/components/StatusBadge.d.ts +16 -0
  42. package/dist/atheletebridge/components/StatusBadge.d.ts.map +1 -0
  43. package/dist/atheletebridge/components/TeamCard.d.ts +16 -0
  44. package/dist/atheletebridge/components/TeamCard.d.ts.map +1 -0
  45. package/dist/atheletebridge/components/UserAvatar.d.ts +27 -0
  46. package/dist/atheletebridge/components/UserAvatar.d.ts.map +1 -0
  47. package/dist/atheletebridge/components/UserSearchSelect.d.ts +24 -0
  48. package/dist/atheletebridge/components/UserSearchSelect.d.ts.map +1 -0
  49. package/dist/atheletebridge/components/domain.d.ts +18 -0
  50. package/dist/atheletebridge/components/domain.d.ts.map +1 -0
  51. package/dist/atheletebridge/components/form.d.ts +15 -0
  52. package/dist/atheletebridge/components/form.d.ts.map +1 -0
  53. package/dist/atheletebridge/components/index.d.ts +30 -0
  54. package/dist/atheletebridge/components/index.d.ts.map +1 -0
  55. package/dist/atheletebridge/components/viz/AvatarStack.d.ts +13 -0
  56. package/dist/atheletebridge/components/viz/AvatarStack.d.ts.map +1 -0
  57. package/dist/atheletebridge/components/viz/BarChart.d.ts +17 -0
  58. package/dist/atheletebridge/components/viz/BarChart.d.ts.map +1 -0
  59. package/dist/atheletebridge/components/viz/DonutChart.d.ts +20 -0
  60. package/dist/atheletebridge/components/viz/DonutChart.d.ts.map +1 -0
  61. package/dist/atheletebridge/components/viz/LineChart.d.ts +20 -0
  62. package/dist/atheletebridge/components/viz/LineChart.d.ts.map +1 -0
  63. package/dist/atheletebridge/components/viz/ProgressRing.d.ts +20 -0
  64. package/dist/atheletebridge/components/viz/ProgressRing.d.ts.map +1 -0
  65. package/dist/atheletebridge/components/viz/RatingStars.d.ts +28 -0
  66. package/dist/atheletebridge/components/viz/RatingStars.d.ts.map +1 -0
  67. package/dist/atheletebridge/components/viz/Sparkline.d.ts +16 -0
  68. package/dist/atheletebridge/components/viz/Sparkline.d.ts.map +1 -0
  69. package/dist/atheletebridge/components/viz/StatCard.d.ts +22 -0
  70. package/dist/atheletebridge/components/viz/StatCard.d.ts.map +1 -0
  71. package/dist/atheletebridge/components/viz/StepProgress.d.ts +17 -0
  72. package/dist/atheletebridge/components/viz/StepProgress.d.ts.map +1 -0
  73. package/dist/atheletebridge/components/viz/Timeline.d.ts +21 -0
  74. package/dist/atheletebridge/components/viz/Timeline.d.ts.map +1 -0
  75. package/dist/atheletebridge/components/viz/index.d.ts +25 -0
  76. package/dist/atheletebridge/components/viz/index.d.ts.map +1 -0
  77. package/dist/atheletebridge/components/viz/lib/Avatar.d.ts +15 -0
  78. package/dist/atheletebridge/components/viz/lib/Avatar.d.ts.map +1 -0
  79. package/dist/atheletebridge/components/viz/lib/CartesianFrame.d.ts +44 -0
  80. package/dist/atheletebridge/components/viz/lib/CartesianFrame.d.ts.map +1 -0
  81. package/dist/atheletebridge/components/viz/lib/ResponsiveSvg.d.ts +27 -0
  82. package/dist/atheletebridge/components/viz/lib/ResponsiveSvg.d.ts.map +1 -0
  83. package/dist/atheletebridge/components/viz/lib/format.d.ts +10 -0
  84. package/dist/atheletebridge/components/viz/lib/format.d.ts.map +1 -0
  85. package/dist/atheletebridge/components/viz/lib/geometry.d.ts +41 -0
  86. package/dist/atheletebridge/components/viz/lib/geometry.d.ts.map +1 -0
  87. package/dist/atheletebridge/components/viz/lib/hooks.d.ts +18 -0
  88. package/dist/atheletebridge/components/viz/lib/hooks.d.ts.map +1 -0
  89. package/dist/atheletebridge/components/viz/lib/palette.d.ts +31 -0
  90. package/dist/atheletebridge/components/viz/lib/palette.d.ts.map +1 -0
  91. package/dist/atheletebridge/components/viz/lib/types.d.ts +27 -0
  92. package/dist/atheletebridge/components/viz/lib/types.d.ts.map +1 -0
  93. package/dist/atheletebridge/context/AthleteBridgeContext.d.ts +16 -0
  94. package/dist/atheletebridge/context/AthleteBridgeContext.d.ts.map +1 -0
  95. package/dist/atheletebridge/context/index.d.ts +6 -0
  96. package/dist/atheletebridge/context/index.d.ts.map +1 -0
  97. package/dist/atheletebridge/hooks/index.d.ts +3 -0
  98. package/dist/atheletebridge/hooks/index.d.ts.map +1 -0
  99. package/dist/atheletebridge/hooks/useAthleteBridgeAnalytics.d.ts +26 -0
  100. package/dist/atheletebridge/hooks/useAthleteBridgeAnalytics.d.ts.map +1 -0
  101. package/dist/atheletebridge/hooks/useAthleteBridgeApi.d.ts +215 -0
  102. package/dist/atheletebridge/hooks/useAthleteBridgeApi.d.ts.map +1 -0
  103. package/dist/atheletebridge/hooks/useAthleteBridgePageView.d.ts +16 -0
  104. package/dist/atheletebridge/hooks/useAthleteBridgePageView.d.ts.map +1 -0
  105. package/dist/atheletebridge/index.d.ts +11 -0
  106. package/dist/atheletebridge/index.d.ts.map +1 -0
  107. package/dist/atheletebridge/pages/DashboardPage.d.ts +12 -0
  108. package/dist/atheletebridge/pages/DashboardPage.d.ts.map +1 -0
  109. package/dist/atheletebridge/pages/StandingsPage.d.ts +10 -0
  110. package/dist/atheletebridge/pages/StandingsPage.d.ts.map +1 -0
  111. package/dist/atheletebridge/pages/analytics/CoachAnalyticsPage.d.ts +18 -0
  112. package/dist/atheletebridge/pages/analytics/CoachAnalyticsPage.d.ts.map +1 -0
  113. package/dist/atheletebridge/pages/athletes/AthleteProfilePage.d.ts +16 -0
  114. package/dist/atheletebridge/pages/athletes/AthleteProfilePage.d.ts.map +1 -0
  115. package/dist/atheletebridge/pages/fixtures/FixtureDetailPage.d.ts +12 -0
  116. package/dist/atheletebridge/pages/fixtures/FixtureDetailPage.d.ts.map +1 -0
  117. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.d.ts +12 -0
  118. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.d.ts.map +1 -0
  119. package/dist/atheletebridge/pages/fixtures/FixturesListPage.d.ts +11 -0
  120. package/dist/atheletebridge/pages/fixtures/FixturesListPage.d.ts.map +1 -0
  121. package/dist/atheletebridge/pages/performance/PerformancePage.d.ts +18 -0
  122. package/dist/atheletebridge/pages/performance/PerformancePage.d.ts.map +1 -0
  123. package/dist/atheletebridge/pages/programs/ProgramDetailPage.d.ts +10 -0
  124. package/dist/atheletebridge/pages/programs/ProgramDetailPage.d.ts.map +1 -0
  125. package/dist/atheletebridge/pages/programs/ProgramFormPage.d.ts +6 -0
  126. package/dist/atheletebridge/pages/programs/ProgramFormPage.d.ts.map +1 -0
  127. package/dist/atheletebridge/pages/programs/ProgramsListPage.d.ts +6 -0
  128. package/dist/atheletebridge/pages/programs/ProgramsListPage.d.ts.map +1 -0
  129. package/dist/atheletebridge/pages/sessions/SessionDetailPage.d.ts +16 -0
  130. package/dist/atheletebridge/pages/sessions/SessionDetailPage.d.ts.map +1 -0
  131. package/dist/atheletebridge/pages/sessions/SessionFormPage.d.ts +11 -0
  132. package/dist/atheletebridge/pages/sessions/SessionFormPage.d.ts.map +1 -0
  133. package/dist/atheletebridge/pages/sessions/SessionsListPage.d.ts +6 -0
  134. package/dist/atheletebridge/pages/sessions/SessionsListPage.d.ts.map +1 -0
  135. package/dist/atheletebridge/pages/teams/TeamDetailPage.d.ts +13 -0
  136. package/dist/atheletebridge/pages/teams/TeamDetailPage.d.ts.map +1 -0
  137. package/dist/atheletebridge/pages/teams/TeamFormPage.d.ts +6 -0
  138. package/dist/atheletebridge/pages/teams/TeamFormPage.d.ts.map +1 -0
  139. package/dist/atheletebridge/pages/teams/TeamsListPage.d.ts +6 -0
  140. package/dist/atheletebridge/pages/teams/TeamsListPage.d.ts.map +1 -0
  141. package/dist/atheletebridge/pages/tournaments/TournamentBracketPage.d.ts +18 -0
  142. package/dist/atheletebridge/pages/tournaments/TournamentBracketPage.d.ts.map +1 -0
  143. package/dist/atheletebridge/store/atheletebridgeStore.d.ts +50 -0
  144. package/dist/atheletebridge/store/atheletebridgeStore.d.ts.map +1 -0
  145. package/dist/atheletebridge/store/index.d.ts +6 -0
  146. package/dist/atheletebridge/store/index.d.ts.map +1 -0
  147. package/dist/atheletebridge/types/assistant.d.ts +62 -0
  148. package/dist/atheletebridge/types/assistant.d.ts.map +1 -0
  149. package/dist/atheletebridge/types/index.d.ts +411 -0
  150. package/dist/atheletebridge/types/index.d.ts.map +1 -0
  151. package/dist/atheletebridge/utils/cn.d.ts +4 -0
  152. package/dist/atheletebridge/utils/cn.d.ts.map +1 -0
  153. package/dist/atheletebridge/utils/datetime.d.ts +16 -0
  154. package/dist/atheletebridge/utils/datetime.d.ts.map +1 -0
  155. package/dist/atheletebridge/utils/formatters.d.ts +30 -0
  156. package/dist/atheletebridge/utils/formatters.d.ts.map +1 -0
  157. package/dist/atheletebridge/utils/identity.d.ts +24 -0
  158. package/dist/atheletebridge/utils/identity.d.ts.map +1 -0
  159. package/dist/atheletebridge/utils/index.d.ts +12 -0
  160. package/dist/atheletebridge/utils/index.d.ts.map +1 -0
  161. package/dist/atheletebridge/utils/navigation.d.ts +20 -0
  162. package/dist/atheletebridge/utils/navigation.d.ts.map +1 -0
  163. package/dist/atheletebridge/utils/pageContext.d.ts +25 -0
  164. package/dist/atheletebridge/utils/pageContext.d.ts.map +1 -0
  165. package/dist/atheletebridge/utils/pageContext.js +48 -0
  166. package/dist/atheletebridge/utils/pageContext.js.map +1 -0
  167. package/dist/atheletebridge/utils/timeAgo.d.ts +16 -0
  168. package/dist/atheletebridge/utils/timeAgo.d.ts.map +1 -0
  169. package/dist/atheletebridge/utils/url.d.ts +22 -0
  170. package/dist/atheletebridge/utils/url.d.ts.map +1 -0
  171. package/dist/generated/global-operations.d.ts +2 -0
  172. package/dist/generated/global-operations.d.ts.map +1 -0
  173. package/dist/generated/global-types.d.ts +23527 -0
  174. package/dist/generated/global-types.d.ts.map +1 -0
  175. package/dist/generated/wspace-operations.d.ts +208 -0
  176. package/dist/generated/wspace-operations.d.ts.map +1 -0
  177. package/dist/generated/wspace-types.d.ts +57851 -0
  178. package/dist/generated/wspace-types.d.ts.map +1 -0
  179. package/dist/index.d.ts +7 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +2 -1
  182. package/dist/services/createSandboxAssistantTransport.d.ts +24 -0
  183. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  184. package/dist/services/createSandboxAssistantTransport.js +14 -0
  185. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  186. package/package.json +7 -3
@@ -0,0 +1,411 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /**
4
+ * Navigation item for shell integration
5
+ */
6
+ export interface NavItem {
7
+ id: string;
8
+ label: string;
9
+ path: string;
10
+ icon?: ReactNode;
11
+ badge?: number;
12
+ order?: number;
13
+ group?: string;
14
+ visible?: boolean;
15
+ /** When true, path is external (different microfe or full URL) */
16
+ external?: boolean;
17
+ children?: NavItem[];
18
+ }
19
+ /**
20
+ * Footer item for shell integration
21
+ */
22
+ export interface FooterItem {
23
+ id: string;
24
+ label: string;
25
+ icon?: string;
26
+ onClick?: () => void;
27
+ type?: 'status' | 'action' | 'info';
28
+ order?: number;
29
+ badge?: string;
30
+ section?: 'left' | 'center' | 'right';
31
+ visible?: boolean;
32
+ }
33
+ /**
34
+ * Base microfrontend root props.
35
+ *
36
+ * An open object base so the concrete root props interface can extend it; using
37
+ * `object` (not an empty interface) keeps eslint's no-empty-object-type rule
38
+ * satisfied without a disable directive.
39
+ */
40
+ export type MicrofrontendRootProps = object;
41
+ /**
42
+ * Props for the AthleteBridgeRoot component.
43
+ *
44
+ * NOTE: this is the host-shell contract. Do not rename/remove the existing
45
+ * fields (basePath / workspaceId / tenantId / apiGatewayUrl / authToken /
46
+ * navigate / currentUser / registerNavItems / registerFooterItems) — the shell
47
+ * mounts the MFE with exactly these props.
48
+ */
49
+ export interface AthleteBridgeRootProps extends MicrofrontendRootProps {
50
+ /** Base path for the atheletebridge microfrontend */
51
+ basePath?: string;
52
+ /** Workspace ID for scoping operations */
53
+ workspaceId?: string;
54
+ /** Tenant ID for multi-tenant context */
55
+ tenantId?: string;
56
+ /** API Gateway URL for GraphQL requests */
57
+ apiGatewayUrl?: string;
58
+ /** Authentication token for API requests */
59
+ authToken?: string;
60
+ /** Navigation function provided by the shell */
61
+ navigate?: (path: string) => void;
62
+ /** Current user information */
63
+ currentUser?: {
64
+ id: string;
65
+ email: string;
66
+ name?: string;
67
+ firstName?: string;
68
+ lastName?: string;
69
+ avatar?: string;
70
+ phone?: string;
71
+ profilePicture?: string;
72
+ };
73
+ /** Optional function to register navigation items with the shell */
74
+ registerNavItems?: (items: NavItem | NavItem[]) => () => void;
75
+ /** Optional function to register footer items with the shell */
76
+ registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;
77
+ /** Callback when a team is selected */
78
+ onTeamSelect?: (team: AthTeam) => void;
79
+ /** Callback when a fixture is selected */
80
+ onFixtureSelect?: (fixture: AthFixture) => void;
81
+ }
82
+ /**
83
+ * View mode for list/grid layouts
84
+ */
85
+ export type ViewMode = 'grid' | 'list';
86
+ export type AthSport = 'ATHLETICS' | 'BASKETBALL' | 'CRICKET' | 'ESPORTS' | 'FOOTBALL' | 'OTHER' | 'SWIMMING' | 'TENNIS';
87
+ export type AthTeamStatus = 'ACTIVE' | 'ARCHIVED' | 'FORMING' | 'INACTIVE';
88
+ export type AthMemberRole = 'ASSISTANT_COACH' | 'CAPTAIN' | 'COACH' | 'MANAGER' | 'PHYSIO' | 'PLAYER';
89
+ export type AthMemberStatus = 'ACTIVE' | 'INJURED' | 'RELEASED' | 'SUSPENDED' | 'TRIAL';
90
+ export type AthFixtureStatus = 'CANCELLED' | 'COMPLETED' | 'LIVE' | 'POSTPONED' | 'SCHEDULED';
91
+ export type AthFixtureType = 'CUP' | 'FRIENDLY' | 'LEAGUE' | 'SCRIMMAGE' | 'TOURNAMENT';
92
+ export type AthProgramLevel = 'ADVANCED' | 'BEGINNER' | 'ELITE' | 'INTERMEDIATE';
93
+ export type AthProgramStatus = 'ARCHIVED' | 'DRAFT' | 'PUBLISHED';
94
+ export type AthSessionStatus = 'CANCELLED' | 'COMPLETED' | 'CONFIRMED' | 'NO_SHOW' | 'REQUESTED';
95
+ export type AthSessionType = 'HYBRID' | 'IN_PERSON' | 'ONLINE';
96
+ export type AthWorkoutStatus = 'COMPLETED' | 'PLANNED' | 'SKIPPED';
97
+ export type AthMetricType = 'ACCURACY' | 'AGILITY' | 'CUSTOM' | 'ENDURANCE' | 'HEART_RATE' | 'SPEED' | 'STRENGTH' | 'WEIGHT';
98
+ export interface AthTeam {
99
+ id: string;
100
+ workspaceId: string;
101
+ name: string;
102
+ sport: AthSport;
103
+ status: AthTeamStatus;
104
+ description: string | null;
105
+ ageGroup: string | null;
106
+ season: string | null;
107
+ homeVenue: string | null;
108
+ headCoachId: string | null;
109
+ tags: string[];
110
+ createdAt: string;
111
+ updatedAt: string;
112
+ members?: AthMember[];
113
+ fixtures?: AthFixture[];
114
+ }
115
+ export interface AthMember {
116
+ id: string;
117
+ workspaceId: string;
118
+ teamId: string;
119
+ userId: string;
120
+ displayName: string;
121
+ role: AthMemberRole;
122
+ status: AthMemberStatus;
123
+ position: string | null;
124
+ jerseyNumber: number | null;
125
+ height: number | null;
126
+ weight: number | null;
127
+ dominantSide: string | null;
128
+ notes: string | null;
129
+ joinedAt: string | null;
130
+ createdAt: string;
131
+ updatedAt: string;
132
+ }
133
+ export interface AthFixture {
134
+ id: string;
135
+ workspaceId: string;
136
+ type: AthFixtureType;
137
+ status: AthFixtureStatus;
138
+ competition: string | null;
139
+ round: string | null;
140
+ venue: string | null;
141
+ homeTeamId: string;
142
+ awayTeamId: string | null;
143
+ homeTeam?: Pick<AthTeam, 'id' | 'name' | 'sport'> | null;
144
+ awayTeam?: Pick<AthTeam, 'id' | 'name' | 'sport'> | null;
145
+ homeScore: number | null;
146
+ awayScore: number | null;
147
+ scheduledAt: string;
148
+ kickoffAt: string | null;
149
+ notes: string | null;
150
+ createdAt: string;
151
+ updatedAt: string;
152
+ }
153
+ export interface AthStanding {
154
+ id: string;
155
+ workspaceId: string;
156
+ competition: string;
157
+ teamId: string;
158
+ team?: Pick<AthTeam, 'id' | 'name' | 'sport'> | null;
159
+ played: number;
160
+ won: number;
161
+ drawn: number;
162
+ lost: number;
163
+ goalsFor: number;
164
+ goalsAgainst: number;
165
+ points: number;
166
+ rank: number | null;
167
+ createdAt: string;
168
+ updatedAt: string;
169
+ }
170
+ export interface AthDrill {
171
+ id: string;
172
+ workspaceId: string;
173
+ programId: string;
174
+ name: string;
175
+ description: string | null;
176
+ weekNumber: number;
177
+ orderIndex: number;
178
+ sets: number | null;
179
+ reps: number | null;
180
+ durationSec: number | null;
181
+ restSec: number | null;
182
+ video?: {
183
+ id: string;
184
+ } | null;
185
+ createdAt: string;
186
+ updatedAt: string;
187
+ }
188
+ export interface AthProgram {
189
+ id: string;
190
+ workspaceId: string;
191
+ coachId: string;
192
+ name: string;
193
+ sport: AthSport;
194
+ level: AthProgramLevel;
195
+ status: AthProgramStatus;
196
+ summary: string | null;
197
+ weeks: number;
198
+ isTemplate: boolean;
199
+ tags: string[];
200
+ drills?: AthDrill[];
201
+ createdAt: string;
202
+ updatedAt: string;
203
+ }
204
+ export interface AthSession {
205
+ id: string;
206
+ workspaceId: string;
207
+ coachId: string;
208
+ athleteId: string;
209
+ programId: string | null;
210
+ title: string;
211
+ type: AthSessionType;
212
+ status: AthSessionStatus;
213
+ location: string | null;
214
+ meetingUrl: string | null;
215
+ scheduledAt: string;
216
+ durationMin: number;
217
+ completedAt: string | null;
218
+ feedback: string | null;
219
+ rating: number | null;
220
+ createdAt: string;
221
+ updatedAt: string;
222
+ }
223
+ export interface AthWorkoutLog {
224
+ id: string;
225
+ workspaceId: string;
226
+ athleteId: string;
227
+ programId: string | null;
228
+ title: string;
229
+ status: AthWorkoutStatus;
230
+ performedAt: string;
231
+ durationMin: number | null;
232
+ rpe: number | null;
233
+ totalLoad: number | null;
234
+ metrics: unknown | null;
235
+ notes: string | null;
236
+ createdAt: string;
237
+ updatedAt: string;
238
+ }
239
+ export interface AthPerformanceMetric {
240
+ id: string;
241
+ workspaceId: string;
242
+ athleteId: string;
243
+ type: AthMetricType;
244
+ label: string;
245
+ value: number;
246
+ unit: string | null;
247
+ source: string | null;
248
+ recordedAt: string;
249
+ createdAt: string;
250
+ updatedAt: string;
251
+ }
252
+ /** PaginationInput on the svc */
253
+ export interface PaginationInput {
254
+ cursor?: string | null;
255
+ limit?: number;
256
+ offset?: number;
257
+ }
258
+ /** AthPageInfo / AthTrainingPageInfo (identical shape) */
259
+ export interface AthPageInfo {
260
+ cursor: string | null;
261
+ hasMore: boolean;
262
+ }
263
+ export interface AthTeamConnection {
264
+ items: AthTeam[];
265
+ pageInfo: AthPageInfo;
266
+ }
267
+ export interface AthFixtureConnection {
268
+ items: AthFixture[];
269
+ pageInfo: AthPageInfo;
270
+ }
271
+ export interface AthProgramConnection {
272
+ items: AthProgram[];
273
+ pageInfo: AthPageInfo;
274
+ }
275
+ export interface AthSessionConnection {
276
+ items: AthSession[];
277
+ pageInfo: AthPageInfo;
278
+ }
279
+ export interface AthWorkoutLogConnection {
280
+ items: AthWorkoutLog[];
281
+ pageInfo: AthPageInfo;
282
+ }
283
+ export interface AthCreateTeamInput {
284
+ name: string;
285
+ sport?: AthSport;
286
+ status?: AthTeamStatus;
287
+ description?: string;
288
+ ageGroup?: string;
289
+ season?: string;
290
+ homeVenue?: string;
291
+ headCoachId?: string;
292
+ tags?: string[];
293
+ }
294
+ export interface AthUpdateTeamInput {
295
+ name?: string;
296
+ sport?: AthSport;
297
+ status?: AthTeamStatus;
298
+ description?: string;
299
+ ageGroup?: string;
300
+ season?: string;
301
+ homeVenue?: string;
302
+ headCoachId?: string;
303
+ tags?: string[];
304
+ }
305
+ export interface AthAddMemberInput {
306
+ teamId: string;
307
+ userId: string;
308
+ displayName: string;
309
+ role?: AthMemberRole;
310
+ status?: AthMemberStatus;
311
+ position?: string;
312
+ jerseyNumber?: number;
313
+ height?: number;
314
+ weight?: number;
315
+ dominantSide?: string;
316
+ notes?: string;
317
+ joinedAt?: string;
318
+ }
319
+ export interface AthUpdateMemberInput {
320
+ displayName?: string;
321
+ role?: AthMemberRole;
322
+ status?: AthMemberStatus;
323
+ position?: string;
324
+ jerseyNumber?: number;
325
+ height?: number;
326
+ weight?: number;
327
+ dominantSide?: string;
328
+ notes?: string;
329
+ }
330
+ export interface AthCreateFixtureInput {
331
+ homeTeamId: string;
332
+ awayTeamId?: string;
333
+ type?: AthFixtureType;
334
+ competition?: string;
335
+ round?: string;
336
+ venue?: string;
337
+ scheduledAt: string;
338
+ kickoffAt?: string;
339
+ notes?: string;
340
+ }
341
+ export interface AthRecordResultInput {
342
+ homeScore: number;
343
+ awayScore: number;
344
+ }
345
+ export interface AthCreateProgramInput {
346
+ name: string;
347
+ sport?: AthSport;
348
+ level?: AthProgramLevel;
349
+ summary?: string;
350
+ weeks?: number;
351
+ isTemplate?: boolean;
352
+ tags?: string[];
353
+ }
354
+ export interface AthUpdateProgramInput {
355
+ name?: string;
356
+ sport?: AthSport;
357
+ level?: AthProgramLevel;
358
+ summary?: string;
359
+ weeks?: number;
360
+ isTemplate?: boolean;
361
+ tags?: string[];
362
+ }
363
+ export interface AthAddDrillInput {
364
+ programId: string;
365
+ name: string;
366
+ description?: string;
367
+ weekNumber?: number;
368
+ orderIndex?: number;
369
+ sets?: number;
370
+ reps?: number;
371
+ durationSec?: number;
372
+ restSec?: number;
373
+ videoFileId?: string;
374
+ }
375
+ export interface AthBookSessionInput {
376
+ coachId: string;
377
+ athleteId: string;
378
+ programId?: string;
379
+ title: string;
380
+ type?: AthSessionType;
381
+ location?: string;
382
+ meetingUrl?: string;
383
+ scheduledAt: string;
384
+ durationMin?: number;
385
+ }
386
+ export interface AthCompleteSessionInput {
387
+ feedback?: string;
388
+ rating?: number;
389
+ }
390
+ export interface AthLogWorkoutInput {
391
+ athleteId?: string;
392
+ title: string;
393
+ status?: AthWorkoutStatus;
394
+ performedAt: string;
395
+ durationMin?: number;
396
+ rpe?: number;
397
+ totalLoad?: number;
398
+ metrics?: unknown;
399
+ notes?: string;
400
+ programId?: string;
401
+ }
402
+ export interface AthRecordMetricInput {
403
+ athleteId?: string;
404
+ type?: AthMetricType;
405
+ label: string;
406
+ value: number;
407
+ unit?: string;
408
+ source?: string;
409
+ recordedAt: string;
410
+ }
411
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ClassValue } from 'clsx';
2
+
3
+ export declare function cn(...inputs: ClassValue[]): string;
4
+ //# sourceMappingURL=cn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/cn.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Datetime helpers for form inputs
3
+ * @module atheletebridge/utils/datetime
4
+ */
5
+ /**
6
+ * Convert a `datetime-local` input value to an ISO string, or undefined when
7
+ * the value is empty. Returns undefined for unparseable values so callers never
8
+ * send "Invalid Date" to the API.
9
+ */
10
+ export declare function toIsoOrUndefined(value: string): string | undefined;
11
+ /**
12
+ * Convert an ISO datetime string into the `datetime-local` input format
13
+ * (`YYYY-MM-DDTHH:mm`) in the browser's local timezone.
14
+ */
15
+ export declare function isoToLocalInput(iso: string | null | undefined): string;
16
+ //# sourceMappingURL=datetime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/datetime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIlE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAQtE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Formatting utilities for the AthleteBridge microfrontend
3
+ * @module atheletebridge/utils/formatters
4
+ */
5
+ /**
6
+ * Format a date string or Date object into a human-readable format
7
+ *
8
+ * @param date - ISO date string or Date object
9
+ * @param options - Optional Intl.DateTimeFormat options
10
+ * @returns Formatted date string (e.g., "15 Jan 2024, 4:00 PM")
11
+ *
12
+ * @example
13
+ * formatDate('2024-01-15T10:30:00Z')
14
+ * // => "15 Jan 2024, 4:00 PM" (in IST)
15
+ */
16
+ export declare function formatDate(date: string | Date, options?: Partial<Intl.DateTimeFormatOptions>): string;
17
+ /**
18
+ * Format a duration in minutes into a human-readable string
19
+ *
20
+ * @param minutes - Duration in minutes
21
+ * @returns Formatted duration string
22
+ *
23
+ * @example
24
+ * formatDuration(5) // => "5 min"
25
+ * formatDuration(90) // => "1h 30min"
26
+ * formatDuration(1440) // => "1 day"
27
+ * formatDuration(4320) // => "3 days"
28
+ */
29
+ export declare function formatDuration(minutes: number): string;
30
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAC5C,MAAM,CAWR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBtD"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Deterministic identity helpers
3
+ * @module atheletebridge/utils/identity
4
+ *
5
+ * Stable, seed-derived visuals for teams / athletes / coaches. The backend has
6
+ * NO logo or photo field, so crests and avatars are honest monogram stand-ins:
7
+ * initials over a gradient chosen deterministically from the entity's name/id.
8
+ * Every color is a fe-libs semantic token — never a raw hex.
9
+ */
10
+ /** Small stable, order-independent-per-char string hash (djb2 xor variant). */
11
+ export declare function stableHash(input: string): number;
12
+ /** Up-to-`max`-letter initials from a display name (e.g. "Riverside FC" → "RF"). */
13
+ export declare function initials(name: string, max?: number): string;
14
+ /**
15
+ * Curated tokenized gradient stop pairs. Drawn from the categorical chart tokens
16
+ * and product accents so crests read as distinct "club colors" while staying
17
+ * theme-aware. Never emit a raw color.
18
+ */
19
+ export declare const CREST_GRADIENTS: readonly [string, string][];
20
+ /** Deterministic gradient stop pair for a seed (name or id). */
21
+ export declare function gradientForSeed(seed: string): [string, string];
22
+ /** A CSS `linear-gradient(...)` string for a seed, ready for a `background` style. */
23
+ export declare function gradientCss(seed: string, angle?: number): string;
24
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,CAatD;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAStD,CAAC;AAEF,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9D;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,CAG7D"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Utilities Index
3
+ * @module atheletebridge/utils
4
+ */
5
+ export { cn } from './cn';
6
+ export { joinPath } from './navigation';
7
+ export { formatDate, formatDuration } from './formatters';
8
+ export { safeExternalHref } from './url';
9
+ export { toIsoOrUndefined, isoToLocalInput } from './datetime';
10
+ export { timeAgo } from './timeAgo';
11
+ export { stableHash, initials, gradientForSeed, gradientCss, CREST_GRADIENTS } from './identity';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Navigation utilities for the AthleteBridge microfrontend
3
+ * @module atheletebridge/utils
4
+ */
5
+ /**
6
+ * Join basePath with a relative path, correctly handling slashes
7
+ *
8
+ * @param basePath - The base path (e.g., '/' or '/atheletebridge')
9
+ * @param relativePath - The relative path (e.g., 'carts/new' or '/carts/new')
10
+ * @returns The joined path (e.g., '/atheletebridge/carts/new')
11
+ *
12
+ * @example
13
+ * joinPath('/', 'carts/new') // => '/carts/new'
14
+ * joinPath('/', '/carts/new') // => '/carts/new'
15
+ * joinPath('/atheletebridge', 'orders') // => '/atheletebridge/orders'
16
+ * joinPath('/atheletebridge/', 'orders') // => '/atheletebridge/orders'
17
+ * joinPath('/atheletebridge', '') // => '/atheletebridge'
18
+ */
19
+ export declare function joinPath(basePath: string, relativePath: string): string;
20
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAcvE"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Page context gathering — captures the user's current browser context
3
+ * to be sent alongside every assistant prompt for better AI awareness.
4
+ */
5
+ interface ConversationContextShape {
6
+ entityType?: string;
7
+ entityId?: string;
8
+ activeTab?: string;
9
+ metadata?: Record<string, unknown>;
10
+ }
11
+ export interface PageContext {
12
+ currentUrl: string;
13
+ currentPage: string;
14
+ entityType?: string;
15
+ entityId?: string;
16
+ platform: string;
17
+ version: string;
18
+ viewportSize: string;
19
+ userAgent: string;
20
+ timestamp: string;
21
+ }
22
+ export declare function gatherPageContext(): PageContext;
23
+ export declare function resolveAthleteBridgeConversationContext(pathname: string, search: string): ConversationContextShape;
24
+ export {};
25
+ //# sourceMappingURL=pageContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageContext.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/utils/pageContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAG1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAoB/C;AAMD,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,wBAAwB,CAsC1B"}
@@ -0,0 +1,48 @@
1
+ //#region src/atheletebridge/utils/pageContext.ts
2
+ function e() {
3
+ let e = window.location.href, t = window.location.pathname.split("/").filter(Boolean).slice(0, 3).join("/") || "home", r = n(window.location.pathname, window.location.search);
4
+ return {
5
+ currentUrl: e,
6
+ currentPage: t,
7
+ entityType: r.entityType,
8
+ entityId: r.entityId,
9
+ platform: "atheletebridge",
10
+ version: "2026.706.1",
11
+ viewportSize: `${window.innerWidth}x${window.innerHeight}`,
12
+ userAgent: navigator.userAgent,
13
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
14
+ };
15
+ }
16
+ function t(e, t) {
17
+ return t.match(e);
18
+ }
19
+ function n(e, n) {
20
+ let r = new URLSearchParams(n);
21
+ for (let [n, r] of [
22
+ [/^\/atheletebridge\/teams\/([^/]+)$/, "ATHLETEBRIDGE_TEAM"],
23
+ [/^\/atheletebridge\/teams\/([^/]+)\/athletes\/([^/]+)$/, "ATHLETEBRIDGE_ATHLETE"],
24
+ [/^\/atheletebridge\/fixtures\/([^/]+)$/, "ATHLETEBRIDGE_FIXTURE"],
25
+ [/^\/atheletebridge\/programs\/([^/]+)$/, "ATHLETEBRIDGE_PROGRAM"],
26
+ [/^\/atheletebridge\/sessions\/([^/]+)$/, "ATHLETEBRIDGE_SESSION"],
27
+ [/^\/atheletebridge\/tournaments\/([^/]+)$/, "ATHLETEBRIDGE_TOURNAMENT"]
28
+ ]) {
29
+ let i = t(n, e);
30
+ if (i) return {
31
+ entityType: r,
32
+ entityId: i[1],
33
+ metadata: { routePattern: n.source }
34
+ };
35
+ }
36
+ let i = r.get("tab") ?? (() => {
37
+ let t = e.split("/").filter(Boolean);
38
+ return t.length > 2 ? t[t.length - 1] : void 0;
39
+ })();
40
+ return {
41
+ activeTab: i ?? void 0,
42
+ metadata: { ...i ? { activeTab: i } : {} }
43
+ };
44
+ }
45
+ //#endregion
46
+ export { e as gatherPageContext };
47
+
48
+ //# sourceMappingURL=pageContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageContext.js","names":[],"sources":["../../../src/atheletebridge/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering — captures the user's current browser context\n * to be sent alongside every assistant prompt for better AI awareness.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` (NOT `activeUrl`) — must match the agent's allowed-context-key\n // contract, otherwise the agent filters it out.\n currentUrl: string;\n currentPage: string;\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveAthleteBridgeConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'atheletebridge',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.706.1',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\nfunction matchPath(pattern: RegExp, pathname: string): RegExpMatchArray | null {\n return pathname.match(pattern);\n}\n\nexport function resolveAthleteBridgeConversationContext(\n pathname: string,\n search: string\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n\n const directMatches: Array<[RegExp, string]> = [\n [/^\\/atheletebridge\\/teams\\/([^/]+)$/, 'ATHLETEBRIDGE_TEAM'],\n [/^\\/atheletebridge\\/teams\\/([^/]+)\\/athletes\\/([^/]+)$/, 'ATHLETEBRIDGE_ATHLETE'],\n [/^\\/atheletebridge\\/fixtures\\/([^/]+)$/, 'ATHLETEBRIDGE_FIXTURE'],\n [/^\\/atheletebridge\\/programs\\/([^/]+)$/, 'ATHLETEBRIDGE_PROGRAM'],\n [/^\\/atheletebridge\\/sessions\\/([^/]+)$/, 'ATHLETEBRIDGE_SESSION'],\n [/^\\/atheletebridge\\/tournaments\\/([^/]+)$/, 'ATHLETEBRIDGE_TOURNAMENT'],\n ];\n\n for (const [pattern, entityType] of directMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: {\n routePattern: pattern.source,\n },\n };\n }\n }\n\n const activeTab =\n params.get('tab') ??\n (() => {\n const segments = pathname.split('/').filter(Boolean);\n return segments.length > 2 ? segments[segments.length - 1] : undefined;\n })();\n\n return {\n activeTab: activeTab ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n },\n };\n}\n"],"mappings":";AA0BA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CACvC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,OACjB;AAED,QAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,UAAU;EACV,SAA6C;EAC7C,cAAc,GAAG,OAAO,WAAW,GAAG,OAAO;EAC7C,WAAW,UAAU;EACrB,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;;AAGH,SAAS,EAAU,GAAiB,GAA2C;AAC7E,QAAO,EAAS,MAAM,EAAQ;;AAGhC,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,EAAO;AAW1C,MAAK,IAAM,CAAC,GAAS,MAT0B;EAC7C,CAAC,sCAAsC,qBAAqB;EAC5D,CAAC,yDAAyD,wBAAwB;EAClF,CAAC,yCAAyC,wBAAwB;EAClE,CAAC,yCAAyC,wBAAwB;EAClE,CAAC,yCAAyC,wBAAwB;EAClE,CAAC,4CAA4C,2BAA2B;EACzE,EAEkD;EACjD,IAAM,IAAQ,EAAU,GAAS,EAAS;AAC1C,MAAI,EACF,QAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EACR,cAAc,EAAQ,QACvB;GACF;;CAIL,IAAM,IACJ,EAAO,IAAI,MAAM,WACV;EACL,IAAM,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;AACpD,SAAO,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;KAC3D;AAEN,QAAO;EACL,WAAW,KAAa,KAAA;EACxB,UAAU,EACR,GAAI,IAAY,EAAE,cAAW,GAAG,EAAE,EACnC;EACF"}