@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 @@
1
+ {"version":3,"file":"RouteAnalytics.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/RouteAnalytics.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,wBAAgB,cAAc,SAmB7B"}
@@ -0,0 +1,30 @@
1
+ import { useEffect as e, useRef as t } from "react";
2
+ import { useLocation as n } from "react-router-dom";
3
+ import { useEventBus as r } from "@burdenoff/fe-libs/shared/events";
4
+ //#region src/atheletebridge/components/RouteAnalytics.tsx
5
+ function i(e) {
6
+ let t = e.split("/").filter(Boolean), n = t.findIndex((e) => e === "atheletebridge"), r = n >= 0 ? t.slice(n + 1) : t;
7
+ return r.length === 0 ? "dashboard" : r.join("/");
8
+ }
9
+ function a() {
10
+ let a = n(), o = r(), s = t(null);
11
+ return e(() => {
12
+ let e = `${a.pathname}${a.search}`;
13
+ if (s.current === e) return;
14
+ s.current = e;
15
+ let t = i(a.pathname);
16
+ o.emitCustom("atheletebridge.page.viewed", {
17
+ page: t,
18
+ route: a.pathname,
19
+ product: "atheletebridge"
20
+ });
21
+ }, [
22
+ o,
23
+ a.pathname,
24
+ a.search
25
+ ]), null;
26
+ }
27
+ //#endregion
28
+ export { a as RouteAnalytics };
29
+
30
+ //# sourceMappingURL=RouteAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteAnalytics.js","names":[],"sources":["../../../src/atheletebridge/components/RouteAnalytics.tsx"],"sourcesContent":["/**\n * RouteAnalytics\n *\n * Listens to route changes inside the AthleteBridge microfrontend and emits\n * `atheletebridge.page.viewed` events to the shared event bus. The host shell\n * forwards these to OtelBrowserSink / BackendAuditSink / RybbitSink.\n */\n\nimport { useEffect, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\n\nfunction resolvePageName(pathname: string): string {\n const segments = pathname.split('/').filter(Boolean);\n // When mounted under /atheletebridge, the first segment is the product slug.\n const productIndex = segments.findIndex((s) => s === 'atheletebridge');\n const relevant = productIndex >= 0 ? segments.slice(productIndex + 1) : segments;\n if (relevant.length === 0) return 'dashboard';\n return relevant.join('/');\n}\n\nexport function RouteAnalytics() {\n const location = useLocation();\n const bus = useEventBus();\n const lastEmittedRef = useRef<string | null>(null);\n\n useEffect(() => {\n const route = `${location.pathname}${location.search}`;\n if (lastEmittedRef.current === route) return;\n lastEmittedRef.current = route;\n\n const page = resolvePageName(location.pathname);\n bus.emitCustom('atheletebridge.page.viewed', {\n page,\n route: location.pathname,\n product: 'atheletebridge',\n });\n }, [bus, location.pathname, location.search]);\n\n return null;\n}\n"],"mappings":";;;;AAYA,SAAS,EAAgB,GAA0B;CACjD,IAAM,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,EAE9C,IAAe,EAAS,WAAW,MAAM,MAAM,iBAAiB,EAChE,IAAW,KAAgB,IAAI,EAAS,MAAM,IAAe,EAAE,GAAG;AAExE,QADI,EAAS,WAAW,IAAU,cAC3B,EAAS,KAAK,IAAI;;AAG3B,SAAgB,IAAiB;CAC/B,IAAM,IAAW,GAAa,EACxB,IAAM,GAAa,EACnB,IAAiB,EAAsB,KAAK;AAelD,QAbA,QAAgB;EACd,IAAM,IAAQ,GAAG,EAAS,WAAW,EAAS;AAC9C,MAAI,EAAe,YAAY,EAAO;AACtC,IAAe,UAAU;EAEzB,IAAM,IAAO,EAAgB,EAAS,SAAS;AAC/C,IAAI,WAAW,8BAA8B;GAC3C;GACA,OAAO,EAAS;GAChB,SAAS;GACV,CAAC;IACD;EAAC;EAAK,EAAS;EAAU,EAAS;EAAO,CAAC,EAEtC"}
@@ -0,0 +1,47 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { AthFixture, AthSport } from '../types';
3
+
4
+ export interface Matchup {
5
+ homeName: string;
6
+ awayName: string;
7
+ homeSport?: AthSport;
8
+ awaySport?: AthSport;
9
+ homeScore: number | null;
10
+ awayScore: number | null;
11
+ hasScore: boolean;
12
+ homeWon: boolean;
13
+ awayWon: boolean;
14
+ }
15
+ /** Derive the display matchup (names, scores, winner) from a fixture. */
16
+ export declare function resolveMatchup(fixture: AthFixture): Matchup;
17
+ export interface MatchupSideProps {
18
+ name: string;
19
+ sport?: AthSport;
20
+ align?: 'start' | 'end';
21
+ /** Winner emphasis — brightens the name. */
22
+ won?: boolean;
23
+ /** Loser de-emphasis when the fixture has a score. */
24
+ dimmed?: boolean;
25
+ crestSize?: number;
26
+ /** Stack crest above name (hero/card) instead of inline (row). */
27
+ stacked?: boolean;
28
+ className?: string;
29
+ }
30
+ export declare const MatchupSide: FC<MatchupSideProps>;
31
+ export interface ScoreCenterProps {
32
+ matchup: Matchup;
33
+ time?: ReactNode;
34
+ size?: 'sm' | 'md' | 'lg';
35
+ className?: string;
36
+ }
37
+ export declare const ScoreCenter: FC<ScoreCenterProps>;
38
+ export interface ScoreboardProps {
39
+ fixture: AthFixture;
40
+ onClick?: () => void;
41
+ /** `card` = fixtures-list tile; `hero` = large fixture-detail header. */
42
+ variant?: 'card' | 'hero';
43
+ className?: string;
44
+ }
45
+ /** Full crest-vs-crest match card (list tile or detail hero). */
46
+ export declare const Scoreboard: FC<ScoreboardProps>;
47
+ //# sourceMappingURL=Scoreboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scoreboard.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/Scoreboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ3C,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIrD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAmB3D;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAgC5C,CAAC;AAIF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA8B5C,CAAC;AAyBF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iEAAiE;AACjE,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA6F1C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { FC } from 'react';
2
+ import { AthSession } from '../types';
3
+
4
+ interface SessionCardProps {
5
+ session: AthSession;
6
+ onClick?: () => void;
7
+ /** Resolved athlete display name (else a monogram from the id is shown). */
8
+ athleteName?: string | null;
9
+ /** Resolved coach display name (optional sub-label). */
10
+ coachName?: string | null;
11
+ }
12
+ export declare const SessionCard: FC<SessionCardProps>;
13
+ export {};
14
+ //# sourceMappingURL=SessionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionCard.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/SessionCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAShC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,UAAU,gBAAgB;IACxB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmD5C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { FC } from 'react';
2
+ import { AthSessionStatus } from '../types';
3
+
4
+ export interface SessionStatusTimelineProps {
5
+ status: AthSessionStatus;
6
+ /** Requested-at timestamp (session.createdAt). */
7
+ createdAt?: string | null;
8
+ /** Completed-at timestamp (session.completedAt). */
9
+ completedAt?: string | null;
10
+ className?: string;
11
+ }
12
+ /** Lifecycle stepper for a coaching session (with cancelled/no-show terminal). */
13
+ export declare const SessionStatusTimeline: FC<SessionStatusTimelineProps>;
14
+ //# sourceMappingURL=SessionStatusTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStatusTimeline.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/SessionStatusTimeline.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,gBAAgB,CAAC;IACzB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAkDhE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+
3
+ type BadgeVariant = 'success' | 'warning' | 'destructive' | 'secondary' | 'info' | 'outline';
4
+ interface StatusBadgeProps {
5
+ status: string;
6
+ /**
7
+ * Force a specific variant, overriding the auto status→color mapping. Useful
8
+ * where the same status string reads differently by context (e.g. a cancelled
9
+ * coaching session shown grey rather than the default destructive red).
10
+ */
11
+ variant?: BadgeVariant;
12
+ className?: string;
13
+ }
14
+ export declare const StatusBadge: FC<StatusBadgeProps>;
15
+ export {};
16
+ //# sourceMappingURL=StatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,KAAK,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7F,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwDD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA0B5C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+ import { AthTeam } from '../types';
3
+
4
+ interface TeamCardProps {
5
+ team: AthTeam;
6
+ onClick?: () => void;
7
+ /**
8
+ * Member count for the footer chip. Falls back to `team.members?.length`
9
+ * when the list query selected members; omit the chip entirely if neither is
10
+ * available (never guess).
11
+ */
12
+ memberCount?: number;
13
+ }
14
+ export declare const TeamCard: FC<TeamCardProps>;
15
+ export {};
16
+ //# sourceMappingURL=TeamCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamCard.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/TeamCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,aAAa;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA2EtC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { FC } from 'react';
2
+
3
+ declare const SIZE_MAP: {
4
+ readonly xs: 24;
5
+ readonly sm: 32;
6
+ readonly md: 40;
7
+ readonly lg: 56;
8
+ readonly xl: 72;
9
+ };
10
+ export type UserAvatarSize = keyof typeof SIZE_MAP | number;
11
+ export interface UserAvatarProps {
12
+ /** Resolved display name (drives initials + gradient seed). */
13
+ name?: string | null;
14
+ /** Stable id — used as the gradient seed and initials fallback when no name. */
15
+ id?: string | null;
16
+ /** Optional jersey number rendered instead of initials (roster context). */
17
+ jersey?: number | null;
18
+ /** Named size token or explicit pixel diameter. */
19
+ size?: UserAvatarSize;
20
+ /** Extra ring (used inside overlapping stacks / on colored surfaces). */
21
+ ring?: boolean;
22
+ className?: string;
23
+ }
24
+ /** Circular monogram avatar for a user/athlete/coach (initials or jersey #). */
25
+ export declare const UserAvatar: FC<UserAvatarProps>;
26
+ export {};
27
+ //# sourceMappingURL=UserAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserAvatar.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/UserAvatar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,QAAA,MAAM,QAAQ;;;;;;CAAsD,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,QAAQ,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gFAAgF;IAChF,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gFAAgF;AAChF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAkC1C,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * User picker
3
+ * @module atheletebridge/components
4
+ *
5
+ * Resolves a real workspace/tenant user by name or email (global user
6
+ * directory) so a coach can add a team member without knowing a raw UUID.
7
+ * Degrades gracefully: if the directory is unavailable the coach can still paste
8
+ * a user id manually. Semantic tokens only.
9
+ */
10
+ export interface UserSelectValue {
11
+ userId: string;
12
+ displayName: string;
13
+ }
14
+ interface UserSearchSelectProps {
15
+ /** Currently selected user id. */
16
+ userId: string;
17
+ /** Display name currently chosen (echoed back so the parent can prefill). */
18
+ displayName: string;
19
+ onSelect: (value: UserSelectValue) => void;
20
+ required?: boolean;
21
+ }
22
+ export declare function UserSearchSelect({ userId, displayName, onSelect, required, }: UserSearchSelectProps): import("react").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=UserSearchSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSearchSelect.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/UserSearchSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,QAAgB,GACjB,EAAE,qBAAqB,+BAgIvB"}
@@ -0,0 +1,18 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ import { AthFixtureType, AthMemberRole, AthMetricType, AthProgramLevel, AthSessionType, AthSport } from '../types';
3
+
4
+ export declare const SPORT_ICONS: Record<AthSport, LucideIcon>;
5
+ export declare const SPORT_LABELS: Record<AthSport, string>;
6
+ export declare const PROGRAM_LEVEL_LABELS: Record<AthProgramLevel, string>;
7
+ export declare const MEMBER_ROLE_LABELS: Record<AthMemberRole, string>;
8
+ export declare const FIXTURE_TYPE_LABELS: Record<AthFixtureType, string>;
9
+ export declare const SESSION_TYPE_LABELS: Record<AthSessionType, string>;
10
+ export declare const METRIC_TYPE_LABELS: Record<AthMetricType, string>;
11
+ export declare const SPORT_OPTIONS: AthSport[];
12
+ export declare const PROGRAM_LEVEL_OPTIONS: AthProgramLevel[];
13
+ export declare const MEMBER_ROLE_OPTIONS: AthMemberRole[];
14
+ export declare const FIXTURE_TYPE_OPTIONS: AthFixtureType[];
15
+ export declare const SESSION_TYPE_OPTIONS: AthSessionType[];
16
+ /** Humanize an enum value for display (fallback when no explicit label exists). */
17
+ export declare function humanizeEnum(value: string): string;
18
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/domain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,QAAQ,EACT,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CASpD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CASjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKhE,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAO5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAM9D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAS5D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAgC,QAAQ,EAAE,CAAC;AACrE,eAAO,MAAM,qBAAqB,EAAwC,eAAe,EAAE,CAAC;AAC5F,eAAO,MAAM,mBAAmB,EAAsC,aAAa,EAAE,CAAC;AACtF,eAAO,MAAM,oBAAoB,EAAuC,cAAc,EAAE,CAAC;AACzF,eAAO,MAAM,oBAAoB,EAAuC,cAAc,EAAE,CAAC;AAEzF,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD"}
@@ -0,0 +1,15 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface FormFieldProps {
4
+ label: string;
5
+ htmlFor?: string;
6
+ required?: boolean;
7
+ hint?: string;
8
+ error?: string;
9
+ children: ReactNode;
10
+ className?: string;
11
+ }
12
+ export declare const FormField: FC<FormFieldProps>;
13
+ export declare const fieldInputClass: string;
14
+ export {};
15
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/form.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3C,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAkBxC,CAAC;AAEF,eAAO,MAAM,eAAe,QAG3B,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Components Index
3
+ * @module atheletebridge/components
4
+ */
5
+ export { PageLayout } from './PageLayout';
6
+ export { MetricsCard } from './MetricsCard';
7
+ export { StatusBadge } from './StatusBadge';
8
+ export { EmptyState } from './EmptyState';
9
+ export { LoadingState, ErrorState } from './LoadingState';
10
+ export { TeamCard } from './TeamCard';
11
+ export { FixtureCard } from './FixtureCard';
12
+ export { ProgramCard } from './ProgramCard';
13
+ export { SessionCard } from './SessionCard';
14
+ export { Crest, type CrestProps } from './Crest';
15
+ export { UserAvatar, type UserAvatarProps, type UserAvatarSize } from './UserAvatar';
16
+ export { Scoreboard, type ScoreboardProps, MatchupSide, type MatchupSideProps, ScoreCenter, type ScoreCenterProps, resolveMatchup, type Matchup, } from './Scoreboard';
17
+ export { MatchupRow, type MatchupRowProps } from './MatchupRow';
18
+ export { SessionStatusTimeline, type SessionStatusTimelineProps } from './SessionStatusTimeline';
19
+ export { FilterSelect } from './FilterSelect';
20
+ export type { FilterOption } from './FilterSelect';
21
+ export { CursorPager } from './CursorPager';
22
+ export { FormField, fieldInputClass } from './form';
23
+ export { AthleteSelect } from './AthleteSelect';
24
+ export type { AthleteSelectValue } from './AthleteSelect';
25
+ export { UserSearchSelect } from './UserSearchSelect';
26
+ export type { UserSelectValue } from './UserSearchSelect';
27
+ export { DrillVideoLink } from './DrillVideoLink';
28
+ export * from './viz';
29
+ export { SPORT_ICONS, SPORT_LABELS, PROGRAM_LEVEL_LABELS, MEMBER_ROLE_LABELS, FIXTURE_TYPE_LABELS, SESSION_TYPE_LABELS, METRIC_TYPE_LABELS, SPORT_OPTIONS, PROGRAM_LEVEL_OPTIONS, MEMBER_ROLE_OPTIONS, FIXTURE_TYPE_OPTIONS, SESSION_TYPE_OPTIONS, humanizeEnum, } from './domain';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,WAAW,EACX,KAAK,gBAAgB,EACrB,WAAW,EACX,KAAK,gBAAgB,EACrB,cAAc,EACd,KAAK,OAAO,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,cAAc,OAAO,CAAC;AACtB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Person } from './lib/types';
2
+
3
+ export interface AvatarStackProps {
4
+ people: Person[];
5
+ /** Maximum avatars shown before collapsing into a "+N" chip. */
6
+ max?: number;
7
+ /** Pixel diameter of each avatar. */
8
+ size?: number;
9
+ className?: string;
10
+ }
11
+ /** Overlapping avatars with a "+N" overflow chip. */
12
+ export declare function AvatarStack({ people, max, size, className }: AvatarStackProps): import("react").JSX.Element | null;
13
+ //# sourceMappingURL=AvatarStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarStack.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/AvatarStack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAO,EAAE,IAAS,EAAE,SAAS,EAAE,EAAE,gBAAgB,sCAmCtF"}
@@ -0,0 +1,17 @@
1
+ import { Segment } from './lib/types';
2
+
3
+ export interface BarChartProps {
4
+ /** Bars to render. A `color` on a datum overrides the palette. */
5
+ series: Segment[];
6
+ height?: number;
7
+ valueFormatter?: (value: number) => string;
8
+ /** Color each bar from the categorical palette instead of a single accent. */
9
+ colorful?: boolean;
10
+ /** Hide the value label above each bar. */
11
+ hideValues?: boolean;
12
+ title?: string;
13
+ className?: string;
14
+ }
15
+ /** Vertical bar chart with value labels and an animated grow-in. */
16
+ export declare function BarChart({ series, height, valueFormatter, colorful, hideValues, title, className, }: BarChartProps): import("react").JSX.Element | null;
17
+ //# sourceMappingURL=BarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/BarChart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,MAAY,EACZ,cAA8B,EAC9B,QAAgB,EAChB,UAAkB,EAClB,KAAK,EACL,SAAS,GACV,EAAE,aAAa,sCAoGf"}
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+ import { Segment } from './lib/types';
3
+
4
+ export interface DonutChartProps {
5
+ segments: Segment[];
6
+ centerLabel?: ReactNode;
7
+ /** Small caption under the center label. */
8
+ centerCaption?: ReactNode;
9
+ /** Pixel diameter (scales down responsively). */
10
+ size?: number;
11
+ /** Ring thickness as a fraction of the radius (0–1). */
12
+ thickness?: number;
13
+ valueFormatter?: (value: number) => string;
14
+ showLegend?: boolean;
15
+ title?: string;
16
+ className?: string;
17
+ }
18
+ /** Donut chart with a center label and an optional legend. */
19
+ export declare function DonutChart({ segments, centerLabel, centerCaption, size, thickness, valueFormatter, showLegend, title, className, }: DonutChartProps): import("react").JSX.Element | null;
20
+ //# sourceMappingURL=DonutChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutChart.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/DonutChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,IAAU,EACV,SAAgB,EAChB,cAA8B,EAC9B,UAAiB,EACjB,KAAK,EACL,SAAS,GACV,EAAE,eAAe,sCAyHjB"}
@@ -0,0 +1,20 @@
1
+ import { LabeledValue } from './lib/types';
2
+
3
+ export interface LineChartProps {
4
+ /** Primary series (its labels drive the x-axis). */
5
+ series: LabeledValue[];
6
+ /** Optional second series, aligned to the primary series by index. */
7
+ compare?: number[];
8
+ seriesLabel?: string;
9
+ compareLabel?: string;
10
+ height?: number;
11
+ valueFormatter?: (value: number) => string;
12
+ title?: string;
13
+ className?: string;
14
+ }
15
+ /**
16
+ * Multi-point line chart (trend / attrition) with an optional second series,
17
+ * shared axes + hover, and an animated draw-in.
18
+ */
19
+ export declare function LineChart({ series, compare, seriesLabel, compareLabel, height, valueFormatter, title, className, }: LineChartProps): import("react").JSX.Element | null;
20
+ //# sourceMappingURL=LineChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/LineChart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,OAAO,EACP,WAAsB,EACtB,YAAwB,EACxB,MAAY,EACZ,cAA8B,EAC9B,KAAK,EACL,SAAS,GACV,EAAE,cAAc,sCA8HhB"}
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface ProgressRingProps {
4
+ value: number;
5
+ max?: number;
6
+ /** Center content. Defaults to the rounded value (e.g. "4.6" or "72%"). */
7
+ label?: ReactNode;
8
+ /** Small caption under the center label. */
9
+ caption?: ReactNode;
10
+ size?: number;
11
+ /** Stroke thickness in viewBox units. */
12
+ thickness?: number;
13
+ /** Tokenized arc color; defaults to the product accent. */
14
+ color?: string;
15
+ title?: string;
16
+ className?: string;
17
+ }
18
+ /** Circular gauge for a score or percentage, with an animated sweep. */
19
+ export declare function ProgressRing({ value, max, label, caption, size, thickness, color, title, className, }: ProgressRingProps): import("react").JSX.Element;
20
+ //# sourceMappingURL=ProgressRing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressRing.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/ProgressRing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,GAAS,EACT,KAAK,EACL,OAAO,EACP,IAAU,EACV,SAAc,EACd,KAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE,iBAAiB,+BA4DnB"}
@@ -0,0 +1,28 @@
1
+ export interface RatingStarsProps {
2
+ value: number;
3
+ max?: number;
4
+ /** Show the numeric value next to the stars (read-only mode only). */
5
+ showValue?: boolean;
6
+ /** Optional review count, e.g. "(128)". */
7
+ count?: number;
8
+ /** Star size in pixels. */
9
+ size?: number;
10
+ /**
11
+ * When provided the control becomes interactive: an accessible radiogroup of
12
+ * whole-star buttons with hover/focus states. Omit for a read-only display
13
+ * (which supports fractional fill).
14
+ */
15
+ onChange?: (value: number) => void;
16
+ /** Show 1..max number labels under each star (interactive mode). */
17
+ showLabels?: boolean;
18
+ /** Accessible group label for the interactive control. */
19
+ ariaLabel?: string;
20
+ className?: string;
21
+ }
22
+ /**
23
+ * Star rating. Read-only by default (supports fractional fill + value/count);
24
+ * pass `onChange` for an interactive, keyboard-operable whole-star picker whose
25
+ * fill uses accent-teal / warning tokens (never a raw color).
26
+ */
27
+ export declare function RatingStars({ value, max, showValue, count, size, onChange, showLabels, ariaLabel, className, }: RatingStarsProps): import("react").JSX.Element;
28
+ //# sourceMappingURL=RatingStars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatingStars.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/RatingStars.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,GAAO,EACP,SAAiB,EACjB,KAAK,EACL,IAAS,EACT,QAAQ,EACR,UAAkB,EAClB,SAAS,EACT,SAAS,GACV,EAAE,gBAAgB,+BAiHlB"}
@@ -0,0 +1,16 @@
1
+ export interface SparklineProps {
2
+ /** Ordered trend values (oldest first). */
3
+ data: number[];
4
+ variant?: 'line' | 'area';
5
+ /** Pixel height of the sparkline. */
6
+ height?: number;
7
+ /** Accessible label; defaults to a generic trend description. */
8
+ label?: string;
9
+ className?: string;
10
+ }
11
+ /**
12
+ * Tiny inline trend line/area for KPI cards. Draws itself in on mount
13
+ * (unless reduced-motion is requested) and emphasizes the final point.
14
+ */
15
+ export declare function Sparkline({ data, variant, height, label, className, }: SparklineProps): import("react").JSX.Element | null;
16
+ //# sourceMappingURL=Sparkline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/Sparkline.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAgB,EAChB,MAAW,EACX,KAAK,EACL,SAAS,GACV,EAAE,cAAc,sCA0DhB"}
@@ -0,0 +1,22 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface StatCardProps {
4
+ label: string;
5
+ value: ReactNode;
6
+ /** Signed change; positive renders success (unless `invertDelta`). */
7
+ delta?: number;
8
+ /** Unit appended to the delta (default "%"). */
9
+ deltaSuffix?: string;
10
+ /** Context line under the delta, e.g. "vs last month". */
11
+ deltaLabel?: string;
12
+ /** When true (attrition, cost) a negative delta is the good outcome. */
13
+ invertDelta?: boolean;
14
+ icon?: ReactNode;
15
+ /** Optional trend to render as a footer sparkline. */
16
+ sparkline?: number[];
17
+ sparklineVariant?: 'line' | 'area';
18
+ className?: string;
19
+ }
20
+ /** KPI tile: label, big tabular value, optional signed delta and sparkline. */
21
+ export declare function StatCard({ label, value, delta, deltaSuffix, deltaLabel, invertDelta, icon, sparkline, sparklineVariant, className, }: StatCardProps): import("react").JSX.Element;
22
+ //# sourceMappingURL=StatCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatCard.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/StatCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,KAAK,EACL,WAAiB,EACjB,UAAU,EACV,WAAmB,EACnB,IAAI,EACJ,SAAS,EACT,gBAAyB,EACzB,SAAS,GACV,EAAE,aAAa,+BAoDf"}
@@ -0,0 +1,17 @@
1
+ export interface StepProgressStep {
2
+ label: string;
3
+ description?: string;
4
+ }
5
+ export interface StepProgressProps {
6
+ steps: StepProgressStep[];
7
+ /** Zero-based index of the current (in-progress) step. */
8
+ current: number;
9
+ className?: string;
10
+ }
11
+ /**
12
+ * Horizontal stage tracker (e.g. Offer → Paperwork → IT → Training → Day 1).
13
+ * Completed steps are filled with a check, the current step is highlighted and
14
+ * future steps are muted. Scrolls horizontally on narrow screens.
15
+ */
16
+ export declare function StepProgress({ steps, current, className }: StepProgressProps): import("react").JSX.Element | null;
17
+ //# sourceMappingURL=StepProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepProgress.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/StepProgress.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,sCAwE5E"}
@@ -0,0 +1,21 @@
1
+ import { ReactNode } from 'react';
2
+ import { StatusTone } from './lib/palette';
3
+
4
+ export type TimelineTone = 'accent' | StatusTone | 'muted';
5
+ export interface TimelineItem {
6
+ id?: string;
7
+ title: ReactNode;
8
+ meta?: ReactNode;
9
+ time?: ReactNode;
10
+ /** Colors the node dot. Defaults to accent. */
11
+ tone?: TimelineTone;
12
+ /** Optional icon rendered inside the node. */
13
+ icon?: ReactNode;
14
+ }
15
+ export interface TimelineProps {
16
+ items: TimelineItem[];
17
+ className?: string;
18
+ }
19
+ /** Vertical activity feed: node dot + connector + title, meta and time. */
20
+ export declare function Timeline({ items, className }: TimelineProps): import("react").JSX.Element | null;
21
+ //# sourceMappingURL=Timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,aAAa,sCAgD3D"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * AthleteBridge visualization kit.
3
+ *
4
+ * Self-contained, dependency-free (hand-rolled SVG + CSS), responsive and
5
+ * accessible presentational components. Every color is a fe-libs semantic
6
+ * token, so the kit themes automatically in light / dark / product themes.
7
+ *
8
+ * All components are pure-presentational: they take typed props + data and
9
+ * render no network calls. Adapted from the shared crewfoundry viz kit.
10
+ */
11
+ export { Sparkline, type SparklineProps } from './Sparkline';
12
+ export { LineChart, type LineChartProps } from './LineChart';
13
+ export { BarChart, type BarChartProps } from './BarChart';
14
+ export { DonutChart, type DonutChartProps } from './DonutChart';
15
+ export { ProgressRing, type ProgressRingProps } from './ProgressRing';
16
+ export { StatCard, type StatCardProps } from './StatCard';
17
+ export { Timeline, type TimelineProps, type TimelineItem, type TimelineTone } from './Timeline';
18
+ export { StepProgress, type StepProgressProps, type StepProgressStep } from './StepProgress';
19
+ export { AvatarStack, type AvatarStackProps } from './AvatarStack';
20
+ export { RatingStars, type RatingStarsProps } from './RatingStars';
21
+ export type { LabeledValue, Segment, Person } from './lib/types';
22
+ export { ACCENT, CHART_GRID, CHART_AXIS, STATUS, chartPalette, type StatusTone, } from './lib/palette';
23
+ export { clamp, sum, extent, extentWithZero, scaleLinear, pointsFromValues, buildLinePath, buildAreaPath, polarToCartesian, donutSegmentPath, starPath, type Point, } from './lib/geometry';
24
+ export { formatCompact, toPercent, getInitials } from './lib/format';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/components/viz/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGnE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EACL,MAAM,EACN,UAAU,EACV,UAAU,EACV,MAAM,EACN,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,KAAK,EACL,GAAG,EACH,MAAM,EACN,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,KAAK,KAAK,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}