@burdenoff/microfe-atheletebridge 2026.706.1 → 2026.710.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 (202) 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/MatchupRow.js.map +1 -1
  26. package/dist/atheletebridge/components/MetricsCard.d.ts +26 -0
  27. package/dist/atheletebridge/components/MetricsCard.d.ts.map +1 -0
  28. package/dist/atheletebridge/components/MetricsCard.js.map +1 -1
  29. package/dist/atheletebridge/components/PageLayout.d.ts +22 -0
  30. package/dist/atheletebridge/components/PageLayout.d.ts.map +1 -0
  31. package/dist/atheletebridge/components/ProgramCard.d.ts +15 -0
  32. package/dist/atheletebridge/components/ProgramCard.d.ts.map +1 -0
  33. package/dist/atheletebridge/components/RouteAnalytics.d.ts +9 -0
  34. package/dist/atheletebridge/components/RouteAnalytics.d.ts.map +1 -0
  35. package/dist/atheletebridge/components/RouteAnalytics.js +30 -0
  36. package/dist/atheletebridge/components/RouteAnalytics.js.map +1 -0
  37. package/dist/atheletebridge/components/Scoreboard.d.ts +47 -0
  38. package/dist/atheletebridge/components/Scoreboard.d.ts.map +1 -0
  39. package/dist/atheletebridge/components/Scoreboard.js.map +1 -1
  40. package/dist/atheletebridge/components/SessionCard.d.ts +14 -0
  41. package/dist/atheletebridge/components/SessionCard.d.ts.map +1 -0
  42. package/dist/atheletebridge/components/SessionCard.js.map +1 -1
  43. package/dist/atheletebridge/components/SessionStatusTimeline.d.ts +14 -0
  44. package/dist/atheletebridge/components/SessionStatusTimeline.d.ts.map +1 -0
  45. package/dist/atheletebridge/components/SessionStatusTimeline.js.map +1 -1
  46. package/dist/atheletebridge/components/StatusBadge.d.ts +16 -0
  47. package/dist/atheletebridge/components/StatusBadge.d.ts.map +1 -0
  48. package/dist/atheletebridge/components/StatusBadge.js.map +1 -1
  49. package/dist/atheletebridge/components/TeamCard.d.ts +16 -0
  50. package/dist/atheletebridge/components/TeamCard.d.ts.map +1 -0
  51. package/dist/atheletebridge/components/UserAvatar.d.ts +27 -0
  52. package/dist/atheletebridge/components/UserAvatar.d.ts.map +1 -0
  53. package/dist/atheletebridge/components/UserSearchSelect.d.ts +24 -0
  54. package/dist/atheletebridge/components/UserSearchSelect.d.ts.map +1 -0
  55. package/dist/atheletebridge/components/domain.d.ts +18 -0
  56. package/dist/atheletebridge/components/domain.d.ts.map +1 -0
  57. package/dist/atheletebridge/components/form.d.ts +15 -0
  58. package/dist/atheletebridge/components/form.d.ts.map +1 -0
  59. package/dist/atheletebridge/components/index.d.ts +30 -0
  60. package/dist/atheletebridge/components/index.d.ts.map +1 -0
  61. package/dist/atheletebridge/components/viz/AvatarStack.d.ts +13 -0
  62. package/dist/atheletebridge/components/viz/AvatarStack.d.ts.map +1 -0
  63. package/dist/atheletebridge/components/viz/BarChart.d.ts +17 -0
  64. package/dist/atheletebridge/components/viz/BarChart.d.ts.map +1 -0
  65. package/dist/atheletebridge/components/viz/DonutChart.d.ts +20 -0
  66. package/dist/atheletebridge/components/viz/DonutChart.d.ts.map +1 -0
  67. package/dist/atheletebridge/components/viz/LineChart.d.ts +20 -0
  68. package/dist/atheletebridge/components/viz/LineChart.d.ts.map +1 -0
  69. package/dist/atheletebridge/components/viz/ProgressRing.d.ts +20 -0
  70. package/dist/atheletebridge/components/viz/ProgressRing.d.ts.map +1 -0
  71. package/dist/atheletebridge/components/viz/RatingStars.d.ts +28 -0
  72. package/dist/atheletebridge/components/viz/RatingStars.d.ts.map +1 -0
  73. package/dist/atheletebridge/components/viz/Sparkline.d.ts +16 -0
  74. package/dist/atheletebridge/components/viz/Sparkline.d.ts.map +1 -0
  75. package/dist/atheletebridge/components/viz/StatCard.d.ts +22 -0
  76. package/dist/atheletebridge/components/viz/StatCard.d.ts.map +1 -0
  77. package/dist/atheletebridge/components/viz/StepProgress.d.ts +17 -0
  78. package/dist/atheletebridge/components/viz/StepProgress.d.ts.map +1 -0
  79. package/dist/atheletebridge/components/viz/Timeline.d.ts +21 -0
  80. package/dist/atheletebridge/components/viz/Timeline.d.ts.map +1 -0
  81. package/dist/atheletebridge/components/viz/index.d.ts +25 -0
  82. package/dist/atheletebridge/components/viz/index.d.ts.map +1 -0
  83. package/dist/atheletebridge/components/viz/lib/Avatar.d.ts +15 -0
  84. package/dist/atheletebridge/components/viz/lib/Avatar.d.ts.map +1 -0
  85. package/dist/atheletebridge/components/viz/lib/CartesianFrame.d.ts +44 -0
  86. package/dist/atheletebridge/components/viz/lib/CartesianFrame.d.ts.map +1 -0
  87. package/dist/atheletebridge/components/viz/lib/ResponsiveSvg.d.ts +27 -0
  88. package/dist/atheletebridge/components/viz/lib/ResponsiveSvg.d.ts.map +1 -0
  89. package/dist/atheletebridge/components/viz/lib/format.d.ts +10 -0
  90. package/dist/atheletebridge/components/viz/lib/format.d.ts.map +1 -0
  91. package/dist/atheletebridge/components/viz/lib/geometry.d.ts +41 -0
  92. package/dist/atheletebridge/components/viz/lib/geometry.d.ts.map +1 -0
  93. package/dist/atheletebridge/components/viz/lib/hooks.d.ts +18 -0
  94. package/dist/atheletebridge/components/viz/lib/hooks.d.ts.map +1 -0
  95. package/dist/atheletebridge/components/viz/lib/palette.d.ts +31 -0
  96. package/dist/atheletebridge/components/viz/lib/palette.d.ts.map +1 -0
  97. package/dist/atheletebridge/components/viz/lib/types.d.ts +27 -0
  98. package/dist/atheletebridge/components/viz/lib/types.d.ts.map +1 -0
  99. package/dist/atheletebridge/context/AthleteBridgeContext.d.ts +16 -0
  100. package/dist/atheletebridge/context/AthleteBridgeContext.d.ts.map +1 -0
  101. package/dist/atheletebridge/context/index.d.ts +6 -0
  102. package/dist/atheletebridge/context/index.d.ts.map +1 -0
  103. package/dist/atheletebridge/hooks/index.d.ts +3 -0
  104. package/dist/atheletebridge/hooks/index.d.ts.map +1 -0
  105. package/dist/atheletebridge/hooks/useAthleteBridgeAnalytics.d.ts +26 -0
  106. package/dist/atheletebridge/hooks/useAthleteBridgeAnalytics.d.ts.map +1 -0
  107. package/dist/atheletebridge/hooks/useAthleteBridgeApi.d.ts +215 -0
  108. package/dist/atheletebridge/hooks/useAthleteBridgeApi.d.ts.map +1 -0
  109. package/dist/atheletebridge/hooks/useAthleteBridgeApi.js.map +1 -1
  110. package/dist/atheletebridge/hooks/useAthleteBridgePageView.d.ts +16 -0
  111. package/dist/atheletebridge/hooks/useAthleteBridgePageView.d.ts.map +1 -0
  112. package/dist/atheletebridge/index.d.ts +11 -0
  113. package/dist/atheletebridge/index.d.ts.map +1 -0
  114. package/dist/atheletebridge/pages/DashboardPage.d.ts +12 -0
  115. package/dist/atheletebridge/pages/DashboardPage.d.ts.map +1 -0
  116. package/dist/atheletebridge/pages/DashboardPage.js.map +1 -1
  117. package/dist/atheletebridge/pages/StandingsPage.d.ts +10 -0
  118. package/dist/atheletebridge/pages/StandingsPage.d.ts.map +1 -0
  119. package/dist/atheletebridge/pages/analytics/CoachAnalyticsPage.d.ts +18 -0
  120. package/dist/atheletebridge/pages/analytics/CoachAnalyticsPage.d.ts.map +1 -0
  121. package/dist/atheletebridge/pages/athletes/AthleteProfilePage.d.ts +16 -0
  122. package/dist/atheletebridge/pages/athletes/AthleteProfilePage.d.ts.map +1 -0
  123. package/dist/atheletebridge/pages/fixtures/FixtureDetailPage.d.ts +12 -0
  124. package/dist/atheletebridge/pages/fixtures/FixtureDetailPage.d.ts.map +1 -0
  125. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.d.ts +12 -0
  126. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.d.ts.map +1 -0
  127. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.js.map +1 -1
  128. package/dist/atheletebridge/pages/fixtures/FixturesListPage.d.ts +11 -0
  129. package/dist/atheletebridge/pages/fixtures/FixturesListPage.d.ts.map +1 -0
  130. package/dist/atheletebridge/pages/performance/PerformancePage.d.ts +18 -0
  131. package/dist/atheletebridge/pages/performance/PerformancePage.d.ts.map +1 -0
  132. package/dist/atheletebridge/pages/performance/PerformancePage.js.map +1 -1
  133. package/dist/atheletebridge/pages/programs/ProgramDetailPage.d.ts +10 -0
  134. package/dist/atheletebridge/pages/programs/ProgramDetailPage.d.ts.map +1 -0
  135. package/dist/atheletebridge/pages/programs/ProgramFormPage.d.ts +6 -0
  136. package/dist/atheletebridge/pages/programs/ProgramFormPage.d.ts.map +1 -0
  137. package/dist/atheletebridge/pages/programs/ProgramsListPage.d.ts +6 -0
  138. package/dist/atheletebridge/pages/programs/ProgramsListPage.d.ts.map +1 -0
  139. package/dist/atheletebridge/pages/sessions/SessionDetailPage.d.ts +16 -0
  140. package/dist/atheletebridge/pages/sessions/SessionDetailPage.d.ts.map +1 -0
  141. package/dist/atheletebridge/pages/sessions/SessionFormPage.d.ts +11 -0
  142. package/dist/atheletebridge/pages/sessions/SessionFormPage.d.ts.map +1 -0
  143. package/dist/atheletebridge/pages/sessions/SessionsListPage.d.ts +6 -0
  144. package/dist/atheletebridge/pages/sessions/SessionsListPage.d.ts.map +1 -0
  145. package/dist/atheletebridge/pages/teams/TeamDetailPage.d.ts +13 -0
  146. package/dist/atheletebridge/pages/teams/TeamDetailPage.d.ts.map +1 -0
  147. package/dist/atheletebridge/pages/teams/TeamFormPage.d.ts +6 -0
  148. package/dist/atheletebridge/pages/teams/TeamFormPage.d.ts.map +1 -0
  149. package/dist/atheletebridge/pages/teams/TeamsListPage.d.ts +6 -0
  150. package/dist/atheletebridge/pages/teams/TeamsListPage.d.ts.map +1 -0
  151. package/dist/atheletebridge/pages/tournaments/TournamentBracketPage.d.ts +18 -0
  152. package/dist/atheletebridge/pages/tournaments/TournamentBracketPage.d.ts.map +1 -0
  153. package/dist/atheletebridge/store/atheletebridgeStore.d.ts +50 -0
  154. package/dist/atheletebridge/store/atheletebridgeStore.d.ts.map +1 -0
  155. package/dist/atheletebridge/store/index.d.ts +6 -0
  156. package/dist/atheletebridge/store/index.d.ts.map +1 -0
  157. package/dist/atheletebridge/types/assistant.d.ts +62 -0
  158. package/dist/atheletebridge/types/assistant.d.ts.map +1 -0
  159. package/dist/atheletebridge/types/index.d.ts +411 -0
  160. package/dist/atheletebridge/types/index.d.ts.map +1 -0
  161. package/dist/atheletebridge/utils/cn.d.ts +4 -0
  162. package/dist/atheletebridge/utils/cn.d.ts.map +1 -0
  163. package/dist/atheletebridge/utils/datetime.d.ts +16 -0
  164. package/dist/atheletebridge/utils/datetime.d.ts.map +1 -0
  165. package/dist/atheletebridge/utils/formatters.d.ts +30 -0
  166. package/dist/atheletebridge/utils/formatters.d.ts.map +1 -0
  167. package/dist/atheletebridge/utils/identity.d.ts +24 -0
  168. package/dist/atheletebridge/utils/identity.d.ts.map +1 -0
  169. package/dist/atheletebridge/utils/index.d.ts +12 -0
  170. package/dist/atheletebridge/utils/index.d.ts.map +1 -0
  171. package/dist/atheletebridge/utils/navigation.d.ts +20 -0
  172. package/dist/atheletebridge/utils/navigation.d.ts.map +1 -0
  173. package/dist/atheletebridge/utils/pageContext.d.ts +25 -0
  174. package/dist/atheletebridge/utils/pageContext.d.ts.map +1 -0
  175. package/dist/atheletebridge/utils/pageContext.js +48 -0
  176. package/dist/atheletebridge/utils/pageContext.js.map +1 -0
  177. package/dist/atheletebridge/utils/timeAgo.d.ts +16 -0
  178. package/dist/atheletebridge/utils/timeAgo.d.ts.map +1 -0
  179. package/dist/atheletebridge/utils/url.d.ts +22 -0
  180. package/dist/atheletebridge/utils/url.d.ts.map +1 -0
  181. package/dist/generated/global-operations.d.ts +2 -0
  182. package/dist/generated/global-operations.d.ts.map +1 -0
  183. package/dist/generated/global-types.d.ts +23527 -0
  184. package/dist/generated/global-types.d.ts.map +1 -0
  185. package/dist/generated/wspace-operations.d.ts +208 -0
  186. package/dist/generated/wspace-operations.d.ts.map +1 -0
  187. package/dist/generated/wspace-operations.js +59 -0
  188. package/dist/generated/wspace-operations.js.map +1 -0
  189. package/dist/generated/wspace-types.d.ts +57851 -0
  190. package/dist/generated/wspace-types.d.ts.map +1 -0
  191. package/dist/index.d.ts +7 -0
  192. package/dist/index.d.ts.map +1 -0
  193. package/dist/index.js +2 -1
  194. package/dist/services/assistantApi.d.ts +70 -0
  195. package/dist/services/assistantApi.d.ts.map +1 -0
  196. package/dist/services/assistantApi.js +202 -0
  197. package/dist/services/assistantApi.js.map +1 -0
  198. package/dist/services/createSandboxAssistantTransport.d.ts +23 -0
  199. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  200. package/dist/services/createSandboxAssistantTransport.js +120 -0
  201. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  202. package/package.json +5 -1
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { AthleteBridgeRootProps } from './types';
3
+
4
+ export declare const AthleteBridgeRoot: FC<AthleteBridgeRootProps>;
5
+ //# sourceMappingURL=AthleteBridgeRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AthleteBridgeRoot.d.ts","sourceRoot":"","sources":["../../src/atheletebridge/AthleteBridgeRoot.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAkBhC,OAAO,KAAK,EAAE,sBAAsB,EAAW,MAAM,SAAS,CAAC;AAY/D,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAgIxD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+
3
+ export declare const AthleteBridgeRoutes: FC;
4
+ //# sourceMappingURL=AthleteBridgeRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AthleteBridgeRoutes.d.ts","sourceRoot":"","sources":["../../src/atheletebridge/AthleteBridgeRoutes.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AAuFhD,eAAO,MAAM,mBAAmB,EAAE,EAwMjC,CAAC"}
@@ -1,112 +1,190 @@
1
1
  import { useAthleteBridge as e } from "./context/AthleteBridgeContext.js";
2
- import { DashboardPage as t } from "./pages/DashboardPage.js";
3
- import { Suspense as n, lazy as r } from "react";
4
- import { Loader2 as i } from "lucide-react";
5
- import { Navigate as a, Route as o, Routes as s, useLocation as c } from "react-router-dom";
6
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
2
+ import { RouteAnalytics as t } from "./components/RouteAnalytics.js";
3
+ import { DashboardPage as n } from "./pages/DashboardPage.js";
4
+ import { Suspense as r, lazy as i } from "react";
5
+ import { FeatureGate as a } from "@burdenoff/fe-libs/shared/feature-flags";
6
+ import { Loader2 as o } from "lucide-react";
7
+ import { Navigate as s, Route as c, Routes as l, useLocation as u } from "react-router-dom";
8
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
7
9
  //#region src/atheletebridge/AthleteBridgeRoutes.tsx
8
- var d = r(() => import("./pages/teams/TeamsListPage.js").then((e) => ({ default: e.TeamsListPage }))), f = r(() => import("./pages/teams/TeamDetailPage.js").then((e) => ({ default: e.TeamDetailPage }))), p = r(() => import("./pages/teams/TeamFormPage.js").then((e) => ({ default: e.TeamFormPage }))), m = r(() => import("./pages/fixtures/FixturesListPage.js").then((e) => ({ default: e.FixturesListPage }))), h = r(() => import("./pages/fixtures/FixtureDetailPage.js").then((e) => ({ default: e.FixtureDetailPage }))), g = r(() => import("./pages/fixtures/FixtureFormPage.js").then((e) => ({ default: e.FixtureFormPage }))), _ = r(() => import("./pages/StandingsPage.js").then((e) => ({ default: e.StandingsPage }))), v = r(() => import("./pages/programs/ProgramsListPage.js").then((e) => ({ default: e.ProgramsListPage }))), y = r(() => import("./pages/programs/ProgramDetailPage.js").then((e) => ({ default: e.ProgramDetailPage }))), b = r(() => import("./pages/programs/ProgramFormPage.js").then((e) => ({ default: e.ProgramFormPage }))), x = r(() => import("./pages/sessions/SessionsListPage.js").then((e) => ({ default: e.SessionsListPage }))), S = r(() => import("./pages/sessions/SessionDetailPage.js").then((e) => ({ default: e.SessionDetailPage }))), C = r(() => import("./pages/sessions/SessionFormPage.js").then((e) => ({ default: e.SessionFormPage }))), w = r(() => import("./pages/performance/PerformancePage.js").then((e) => ({ default: e.PerformancePage }))), T = r(() => import("./pages/athletes/AthleteProfilePage.js").then((e) => ({ default: e.AthleteProfilePage }))), E = r(() => import("./pages/analytics/CoachAnalyticsPage.js").then((e) => ({ default: e.CoachAnalyticsPage }))), D = r(() => import("./pages/tournaments/TournamentBracketPage.js").then((e) => ({ default: e.TournamentBracketPage }))), O = () => /* @__PURE__ */ l("div", {
10
+ var p = i(() => import("./pages/teams/TeamsListPage.js").then((e) => ({ default: e.TeamsListPage }))), m = i(() => import("./pages/teams/TeamDetailPage.js").then((e) => ({ default: e.TeamDetailPage }))), h = i(() => import("./pages/teams/TeamFormPage.js").then((e) => ({ default: e.TeamFormPage }))), g = i(() => import("./pages/fixtures/FixturesListPage.js").then((e) => ({ default: e.FixturesListPage }))), _ = i(() => import("./pages/fixtures/FixtureDetailPage.js").then((e) => ({ default: e.FixtureDetailPage }))), v = i(() => import("./pages/fixtures/FixtureFormPage.js").then((e) => ({ default: e.FixtureFormPage }))), y = i(() => import("./pages/StandingsPage.js").then((e) => ({ default: e.StandingsPage }))), b = i(() => import("./pages/programs/ProgramsListPage.js").then((e) => ({ default: e.ProgramsListPage }))), x = i(() => import("./pages/programs/ProgramDetailPage.js").then((e) => ({ default: e.ProgramDetailPage }))), S = i(() => import("./pages/programs/ProgramFormPage.js").then((e) => ({ default: e.ProgramFormPage }))), C = i(() => import("./pages/sessions/SessionsListPage.js").then((e) => ({ default: e.SessionsListPage }))), w = i(() => import("./pages/sessions/SessionDetailPage.js").then((e) => ({ default: e.SessionDetailPage }))), T = i(() => import("./pages/sessions/SessionFormPage.js").then((e) => ({ default: e.SessionFormPage }))), E = i(() => import("./pages/performance/PerformancePage.js").then((e) => ({ default: e.PerformancePage }))), D = i(() => import("./pages/athletes/AthleteProfilePage.js").then((e) => ({ default: e.AthleteProfilePage }))), O = i(() => import("./pages/analytics/CoachAnalyticsPage.js").then((e) => ({ default: e.CoachAnalyticsPage }))), k = i(() => import("./pages/tournaments/TournamentBracketPage.js").then((e) => ({ default: e.TournamentBracketPage }))), A = () => /* @__PURE__ */ d("div", {
9
11
  className: "flex min-h-[400px] items-center justify-center",
10
- children: /* @__PURE__ */ l(i, { className: "h-8 w-8 animate-spin text-text-secondary" })
11
- }), k = () => {
12
- let { basePath: r, isStandalone: i } = e(), k = c(), A = r === "/" ? "" : (r ?? "").replace(/\/$/, "");
13
- return A && !i && !(k.pathname === A || k.pathname.startsWith(A + "/")) ? null : /* @__PURE__ */ l("div", {
12
+ children: /* @__PURE__ */ d(o, { className: "h-8 w-8 animate-spin text-text-secondary" })
13
+ }), j = () => {
14
+ let { basePath: i, isStandalone: o } = e(), j = u(), M = i === "/" ? "" : (i ?? "").replace(/\/$/, "");
15
+ return M && !o && !(j.pathname === M || j.pathname.startsWith(M + "/")) ? null : /* @__PURE__ */ d("div", {
14
16
  className: "flex min-h-full flex-col",
15
- children: /* @__PURE__ */ l(n, {
16
- fallback: /* @__PURE__ */ l(O, {}),
17
- children: /* @__PURE__ */ u(s, { children: [
18
- /* @__PURE__ */ l(o, {
17
+ children: /* @__PURE__ */ f(r, {
18
+ fallback: /* @__PURE__ */ d(A, {}),
19
+ children: [/* @__PURE__ */ d(t, {}), /* @__PURE__ */ f(l, { children: [
20
+ /* @__PURE__ */ d(c, {
19
21
  index: !0,
20
- element: /* @__PURE__ */ l(t, {})
22
+ element: /* @__PURE__ */ d(n, {})
21
23
  }),
22
- /* @__PURE__ */ l(o, {
24
+ /* @__PURE__ */ d(c, {
23
25
  path: "teams",
24
- element: /* @__PURE__ */ l(d, {})
26
+ element: /* @__PURE__ */ d(a, {
27
+ flag: "atheletebridge.teams.enabled",
28
+ defaultValue: !0,
29
+ children: /* @__PURE__ */ d(p, {})
30
+ })
25
31
  }),
26
- /* @__PURE__ */ l(o, {
32
+ /* @__PURE__ */ d(c, {
27
33
  path: "teams/new",
28
- element: /* @__PURE__ */ l(p, {})
34
+ element: /* @__PURE__ */ d(a, {
35
+ flag: "atheletebridge.teams.enabled",
36
+ defaultValue: !0,
37
+ children: /* @__PURE__ */ d(h, {})
38
+ })
29
39
  }),
30
- /* @__PURE__ */ l(o, {
40
+ /* @__PURE__ */ d(c, {
31
41
  path: "teams/:id",
32
- element: /* @__PURE__ */ l(f, {})
42
+ element: /* @__PURE__ */ d(a, {
43
+ flag: "atheletebridge.teams.enabled",
44
+ defaultValue: !0,
45
+ children: /* @__PURE__ */ d(m, {})
46
+ })
33
47
  }),
34
- /* @__PURE__ */ l(o, {
48
+ /* @__PURE__ */ d(c, {
35
49
  path: "teams/:id/edit",
36
- element: /* @__PURE__ */ l(p, {})
50
+ element: /* @__PURE__ */ d(a, {
51
+ flag: "atheletebridge.teams.enabled",
52
+ defaultValue: !0,
53
+ children: /* @__PURE__ */ d(h, {})
54
+ })
37
55
  }),
38
- /* @__PURE__ */ l(o, {
56
+ /* @__PURE__ */ d(c, {
39
57
  path: "teams/:teamId/athletes/:memberId",
40
- element: /* @__PURE__ */ l(T, {})
58
+ element: /* @__PURE__ */ d(a, {
59
+ flag: "atheletebridge.teams.enabled",
60
+ defaultValue: !0,
61
+ children: /* @__PURE__ */ d(D, {})
62
+ })
41
63
  }),
42
- /* @__PURE__ */ l(o, {
64
+ /* @__PURE__ */ d(c, {
43
65
  path: "fixtures",
44
- element: /* @__PURE__ */ l(m, {})
66
+ element: /* @__PURE__ */ d(a, {
67
+ flag: "atheletebridge.fixtures.enabled",
68
+ defaultValue: !0,
69
+ children: /* @__PURE__ */ d(g, {})
70
+ })
45
71
  }),
46
- /* @__PURE__ */ l(o, {
72
+ /* @__PURE__ */ d(c, {
47
73
  path: "fixtures/new",
48
- element: /* @__PURE__ */ l(g, {})
74
+ element: /* @__PURE__ */ d(a, {
75
+ flag: "atheletebridge.fixtures.enabled",
76
+ defaultValue: !0,
77
+ children: /* @__PURE__ */ d(v, {})
78
+ })
49
79
  }),
50
- /* @__PURE__ */ l(o, {
80
+ /* @__PURE__ */ d(c, {
51
81
  path: "fixtures/:id",
52
- element: /* @__PURE__ */ l(h, {})
82
+ element: /* @__PURE__ */ d(a, {
83
+ flag: "atheletebridge.fixtures.enabled",
84
+ defaultValue: !0,
85
+ children: /* @__PURE__ */ d(_, {})
86
+ })
53
87
  }),
54
- /* @__PURE__ */ l(o, {
88
+ /* @__PURE__ */ d(c, {
55
89
  path: "standings",
56
- element: /* @__PURE__ */ l(_, {})
90
+ element: /* @__PURE__ */ d(a, {
91
+ flag: "atheletebridge.standings.enabled",
92
+ defaultValue: !0,
93
+ children: /* @__PURE__ */ d(y, {})
94
+ })
57
95
  }),
58
- /* @__PURE__ */ l(o, {
96
+ /* @__PURE__ */ d(c, {
59
97
  path: "programs",
60
- element: /* @__PURE__ */ l(v, {})
98
+ element: /* @__PURE__ */ d(a, {
99
+ flag: "atheletebridge.programs.enabled",
100
+ defaultValue: !0,
101
+ children: /* @__PURE__ */ d(b, {})
102
+ })
61
103
  }),
62
- /* @__PURE__ */ l(o, {
104
+ /* @__PURE__ */ d(c, {
63
105
  path: "programs/new",
64
- element: /* @__PURE__ */ l(b, {})
106
+ element: /* @__PURE__ */ d(a, {
107
+ flag: "atheletebridge.programs.enabled",
108
+ defaultValue: !0,
109
+ children: /* @__PURE__ */ d(S, {})
110
+ })
65
111
  }),
66
- /* @__PURE__ */ l(o, {
112
+ /* @__PURE__ */ d(c, {
67
113
  path: "programs/:id",
68
- element: /* @__PURE__ */ l(y, {})
114
+ element: /* @__PURE__ */ d(a, {
115
+ flag: "atheletebridge.programs.enabled",
116
+ defaultValue: !0,
117
+ children: /* @__PURE__ */ d(x, {})
118
+ })
69
119
  }),
70
- /* @__PURE__ */ l(o, {
120
+ /* @__PURE__ */ d(c, {
71
121
  path: "programs/:id/edit",
72
- element: /* @__PURE__ */ l(b, {})
122
+ element: /* @__PURE__ */ d(a, {
123
+ flag: "atheletebridge.programs.enabled",
124
+ defaultValue: !0,
125
+ children: /* @__PURE__ */ d(S, {})
126
+ })
73
127
  }),
74
- /* @__PURE__ */ l(o, {
128
+ /* @__PURE__ */ d(c, {
75
129
  path: "sessions",
76
- element: /* @__PURE__ */ l(x, {})
130
+ element: /* @__PURE__ */ d(a, {
131
+ flag: "atheletebridge.sessions.enabled",
132
+ defaultValue: !0,
133
+ children: /* @__PURE__ */ d(C, {})
134
+ })
77
135
  }),
78
- /* @__PURE__ */ l(o, {
136
+ /* @__PURE__ */ d(c, {
79
137
  path: "sessions/new",
80
- element: /* @__PURE__ */ l(C, {})
138
+ element: /* @__PURE__ */ d(a, {
139
+ flag: "atheletebridge.sessions.enabled",
140
+ defaultValue: !0,
141
+ children: /* @__PURE__ */ d(T, {})
142
+ })
81
143
  }),
82
- /* @__PURE__ */ l(o, {
144
+ /* @__PURE__ */ d(c, {
83
145
  path: "sessions/:id",
84
- element: /* @__PURE__ */ l(S, {})
146
+ element: /* @__PURE__ */ d(a, {
147
+ flag: "atheletebridge.sessions.enabled",
148
+ defaultValue: !0,
149
+ children: /* @__PURE__ */ d(w, {})
150
+ })
85
151
  }),
86
- /* @__PURE__ */ l(o, {
152
+ /* @__PURE__ */ d(c, {
87
153
  path: "performance",
88
- element: /* @__PURE__ */ l(w, {})
154
+ element: /* @__PURE__ */ d(a, {
155
+ flag: "atheletebridge.performance.enabled",
156
+ defaultValue: !0,
157
+ children: /* @__PURE__ */ d(E, {})
158
+ })
89
159
  }),
90
- /* @__PURE__ */ l(o, {
160
+ /* @__PURE__ */ d(c, {
91
161
  path: "analytics",
92
- element: /* @__PURE__ */ l(E, {})
162
+ element: /* @__PURE__ */ d(a, {
163
+ flag: "atheletebridge.analytics.enabled",
164
+ defaultValue: !0,
165
+ children: /* @__PURE__ */ d(O, {})
166
+ })
93
167
  }),
94
- /* @__PURE__ */ l(o, {
168
+ /* @__PURE__ */ d(c, {
95
169
  path: "tournaments",
96
- element: /* @__PURE__ */ l(D, {})
170
+ element: /* @__PURE__ */ d(a, {
171
+ flag: "atheletebridge.tournaments.enabled",
172
+ defaultValue: !0,
173
+ children: /* @__PURE__ */ d(k, {})
174
+ })
97
175
  }),
98
- /* @__PURE__ */ l(o, {
176
+ /* @__PURE__ */ d(c, {
99
177
  path: "*",
100
- element: /* @__PURE__ */ l(a, {
178
+ element: /* @__PURE__ */ d(s, {
101
179
  to: ".",
102
180
  replace: !0
103
181
  })
104
182
  })
105
- ] })
183
+ ] })]
106
184
  })
107
185
  });
108
186
  };
109
187
  //#endregion
110
- export { k as AthleteBridgeRoutes };
188
+ export { j as AthleteBridgeRoutes };
111
189
 
112
190
  //# sourceMappingURL=AthleteBridgeRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AthleteBridgeRoutes.js","names":[],"sources":["../../src/atheletebridge/AthleteBridgeRoutes.tsx"],"sourcesContent":["/**\n * AthleteBridge Routes\n * @module atheletebridge\n *\n * Real sports-domain routes wired to the deployed `wspace-atheletebridge-svc`\n * GraphQL contract. Dashboard is eager; entity pages are lazy.\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router-dom';\nimport { Loader2 } from 'lucide-react';\nimport { useAthleteBridge } from './context/AthleteBridgeContext';\n\n// Eager — primary landing\nimport { DashboardPage } from './pages/DashboardPage';\n\n// Teams\nconst TeamsListPage = lazy(() =>\n import('./pages/teams/TeamsListPage').then((m) => ({ default: m.TeamsListPage }))\n);\nconst TeamDetailPage = lazy(() =>\n import('./pages/teams/TeamDetailPage').then((m) => ({ default: m.TeamDetailPage }))\n);\nconst TeamFormPage = lazy(() =>\n import('./pages/teams/TeamFormPage').then((m) => ({ default: m.TeamFormPage }))\n);\n\n// Fixtures\nconst FixturesListPage = lazy(() =>\n import('./pages/fixtures/FixturesListPage').then((m) => ({ default: m.FixturesListPage }))\n);\nconst FixtureDetailPage = lazy(() =>\n import('./pages/fixtures/FixtureDetailPage').then((m) => ({ default: m.FixtureDetailPage }))\n);\nconst FixtureFormPage = lazy(() =>\n import('./pages/fixtures/FixtureFormPage').then((m) => ({ default: m.FixtureFormPage }))\n);\n\n// Standings\nconst StandingsPage = lazy(() =>\n import('./pages/StandingsPage').then((m) => ({ default: m.StandingsPage }))\n);\n\n// Programs\nconst ProgramsListPage = lazy(() =>\n import('./pages/programs/ProgramsListPage').then((m) => ({ default: m.ProgramsListPage }))\n);\nconst ProgramDetailPage = lazy(() =>\n import('./pages/programs/ProgramDetailPage').then((m) => ({ default: m.ProgramDetailPage }))\n);\nconst ProgramFormPage = lazy(() =>\n import('./pages/programs/ProgramFormPage').then((m) => ({ default: m.ProgramFormPage }))\n);\n\n// Sessions\nconst SessionsListPage = lazy(() =>\n import('./pages/sessions/SessionsListPage').then((m) => ({ default: m.SessionsListPage }))\n);\nconst SessionDetailPage = lazy(() =>\n import('./pages/sessions/SessionDetailPage').then((m) => ({ default: m.SessionDetailPage }))\n);\nconst SessionFormPage = lazy(() =>\n import('./pages/sessions/SessionFormPage').then((m) => ({ default: m.SessionFormPage }))\n);\n\n// Performance\nconst PerformancePage = lazy(() =>\n import('./pages/performance/PerformancePage').then((m) => ({ default: m.PerformancePage }))\n);\n\n// Athlete profile\nconst AthleteProfilePage = lazy(() =>\n import('./pages/athletes/AthleteProfilePage').then((m) => ({ default: m.AthleteProfilePage }))\n);\n\n// Coach analytics\nconst CoachAnalyticsPage = lazy(() =>\n import('./pages/analytics/CoachAnalyticsPage').then((m) => ({ default: m.CoachAnalyticsPage }))\n);\n\n// Tournaments (esports bracket)\nconst TournamentBracketPage = lazy(() =>\n import('./pages/tournaments/TournamentBracketPage').then((m) => ({\n default: m.TournamentBracketPage,\n }))\n);\n\nconst PageLoader: FC = () => (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-text-secondary\" />\n </div>\n);\n\nexport const AthleteBridgeRoutes: FC = () => {\n const { basePath, isStandalone } = useAthleteBridge();\n const location = useLocation();\n\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: only render when the path matches basePath (integrated mode).\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex min-h-full flex-col\">\n <Suspense fallback={<PageLoader />}>\n <Routes>\n {/* Dashboard */}\n <Route index element={<DashboardPage />} />\n\n {/* Teams */}\n <Route path=\"teams\" element={<TeamsListPage />} />\n <Route path=\"teams/new\" element={<TeamFormPage />} />\n <Route path=\"teams/:id\" element={<TeamDetailPage />} />\n <Route path=\"teams/:id/edit\" element={<TeamFormPage />} />\n\n {/* Athlete profile (reached from a team roster) */}\n <Route path=\"teams/:teamId/athletes/:memberId\" element={<AthleteProfilePage />} />\n\n {/* Fixtures */}\n <Route path=\"fixtures\" element={<FixturesListPage />} />\n <Route path=\"fixtures/new\" element={<FixtureFormPage />} />\n <Route path=\"fixtures/:id\" element={<FixtureDetailPage />} />\n\n {/* Standings */}\n <Route path=\"standings\" element={<StandingsPage />} />\n\n {/* Programs */}\n <Route path=\"programs\" element={<ProgramsListPage />} />\n <Route path=\"programs/new\" element={<ProgramFormPage />} />\n <Route path=\"programs/:id\" element={<ProgramDetailPage />} />\n <Route path=\"programs/:id/edit\" element={<ProgramFormPage />} />\n\n {/* Sessions */}\n <Route path=\"sessions\" element={<SessionsListPage />} />\n <Route path=\"sessions/new\" element={<SessionFormPage />} />\n <Route path=\"sessions/:id\" element={<SessionDetailPage />} />\n\n {/* Performance */}\n <Route path=\"performance\" element={<PerformancePage />} />\n\n {/* Analytics */}\n <Route path=\"analytics\" element={<CoachAnalyticsPage />} />\n\n {/* Tournaments (esports bracket) */}\n <Route path=\"tournaments\" element={<TournamentBracketPage />} />\n\n {/* Fallback */}\n <Route path=\"*\" element={<Navigate to=\".\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"AthleteBridgeRoutes.js","names":[],"sources":["../../src/atheletebridge/AthleteBridgeRoutes.tsx"],"sourcesContent":["/**\n * AthleteBridge Routes\n * @module atheletebridge\n *\n * Real sports-domain routes wired to the deployed `wspace-atheletebridge-svc`\n * GraphQL contract. Dashboard is eager; entity pages are lazy.\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router-dom';\nimport { Loader2 } from 'lucide-react';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useAthleteBridge } from './context/AthleteBridgeContext';\nimport { RouteAnalytics } from './components/RouteAnalytics';\n\n// Eager — primary landing\nimport { DashboardPage } from './pages/DashboardPage';\n\n// Teams\nconst TeamsListPage = lazy(() =>\n import('./pages/teams/TeamsListPage').then((m) => ({ default: m.TeamsListPage }))\n);\nconst TeamDetailPage = lazy(() =>\n import('./pages/teams/TeamDetailPage').then((m) => ({ default: m.TeamDetailPage }))\n);\nconst TeamFormPage = lazy(() =>\n import('./pages/teams/TeamFormPage').then((m) => ({ default: m.TeamFormPage }))\n);\n\n// Fixtures\nconst FixturesListPage = lazy(() =>\n import('./pages/fixtures/FixturesListPage').then((m) => ({ default: m.FixturesListPage }))\n);\nconst FixtureDetailPage = lazy(() =>\n import('./pages/fixtures/FixtureDetailPage').then((m) => ({ default: m.FixtureDetailPage }))\n);\nconst FixtureFormPage = lazy(() =>\n import('./pages/fixtures/FixtureFormPage').then((m) => ({ default: m.FixtureFormPage }))\n);\n\n// Standings\nconst StandingsPage = lazy(() =>\n import('./pages/StandingsPage').then((m) => ({ default: m.StandingsPage }))\n);\n\n// Programs\nconst ProgramsListPage = lazy(() =>\n import('./pages/programs/ProgramsListPage').then((m) => ({ default: m.ProgramsListPage }))\n);\nconst ProgramDetailPage = lazy(() =>\n import('./pages/programs/ProgramDetailPage').then((m) => ({ default: m.ProgramDetailPage }))\n);\nconst ProgramFormPage = lazy(() =>\n import('./pages/programs/ProgramFormPage').then((m) => ({ default: m.ProgramFormPage }))\n);\n\n// Sessions\nconst SessionsListPage = lazy(() =>\n import('./pages/sessions/SessionsListPage').then((m) => ({ default: m.SessionsListPage }))\n);\nconst SessionDetailPage = lazy(() =>\n import('./pages/sessions/SessionDetailPage').then((m) => ({ default: m.SessionDetailPage }))\n);\nconst SessionFormPage = lazy(() =>\n import('./pages/sessions/SessionFormPage').then((m) => ({ default: m.SessionFormPage }))\n);\n\n// Performance\nconst PerformancePage = lazy(() =>\n import('./pages/performance/PerformancePage').then((m) => ({ default: m.PerformancePage }))\n);\n\n// Athlete profile\nconst AthleteProfilePage = lazy(() =>\n import('./pages/athletes/AthleteProfilePage').then((m) => ({ default: m.AthleteProfilePage }))\n);\n\n// Coach analytics\nconst CoachAnalyticsPage = lazy(() =>\n import('./pages/analytics/CoachAnalyticsPage').then((m) => ({ default: m.CoachAnalyticsPage }))\n);\n\n// Tournaments (esports bracket)\nconst TournamentBracketPage = lazy(() =>\n import('./pages/tournaments/TournamentBracketPage').then((m) => ({\n default: m.TournamentBracketPage,\n }))\n);\n\nconst PageLoader: FC = () => (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-text-secondary\" />\n </div>\n);\n\nexport const AthleteBridgeRoutes: FC = () => {\n const { basePath, isStandalone } = useAthleteBridge();\n const location = useLocation();\n\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: only render when the path matches basePath (integrated mode).\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex min-h-full flex-col\">\n <Suspense fallback={<PageLoader />}>\n <RouteAnalytics />\n <Routes>\n {/* Dashboard */}\n <Route index element={<DashboardPage />} />\n\n {/* Teams */}\n <Route\n path=\"teams\"\n element={\n <FeatureGate flag=\"atheletebridge.teams.enabled\" defaultValue={true}>\n <TeamsListPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"teams/new\"\n element={\n <FeatureGate flag=\"atheletebridge.teams.enabled\" defaultValue={true}>\n <TeamFormPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"teams/:id\"\n element={\n <FeatureGate flag=\"atheletebridge.teams.enabled\" defaultValue={true}>\n <TeamDetailPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"teams/:id/edit\"\n element={\n <FeatureGate flag=\"atheletebridge.teams.enabled\" defaultValue={true}>\n <TeamFormPage />\n </FeatureGate>\n }\n />\n\n {/* Athlete profile (reached from a team roster) */}\n <Route\n path=\"teams/:teamId/athletes/:memberId\"\n element={\n <FeatureGate flag=\"atheletebridge.teams.enabled\" defaultValue={true}>\n <AthleteProfilePage />\n </FeatureGate>\n }\n />\n\n {/* Fixtures */}\n <Route\n path=\"fixtures\"\n element={\n <FeatureGate flag=\"atheletebridge.fixtures.enabled\" defaultValue={true}>\n <FixturesListPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"fixtures/new\"\n element={\n <FeatureGate flag=\"atheletebridge.fixtures.enabled\" defaultValue={true}>\n <FixtureFormPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"fixtures/:id\"\n element={\n <FeatureGate flag=\"atheletebridge.fixtures.enabled\" defaultValue={true}>\n <FixtureDetailPage />\n </FeatureGate>\n }\n />\n\n {/* Standings */}\n <Route\n path=\"standings\"\n element={\n <FeatureGate flag=\"atheletebridge.standings.enabled\" defaultValue={true}>\n <StandingsPage />\n </FeatureGate>\n }\n />\n\n {/* Programs */}\n <Route\n path=\"programs\"\n element={\n <FeatureGate flag=\"atheletebridge.programs.enabled\" defaultValue={true}>\n <ProgramsListPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"programs/new\"\n element={\n <FeatureGate flag=\"atheletebridge.programs.enabled\" defaultValue={true}>\n <ProgramFormPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"programs/:id\"\n element={\n <FeatureGate flag=\"atheletebridge.programs.enabled\" defaultValue={true}>\n <ProgramDetailPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"programs/:id/edit\"\n element={\n <FeatureGate flag=\"atheletebridge.programs.enabled\" defaultValue={true}>\n <ProgramFormPage />\n </FeatureGate>\n }\n />\n\n {/* Sessions */}\n <Route\n path=\"sessions\"\n element={\n <FeatureGate flag=\"atheletebridge.sessions.enabled\" defaultValue={true}>\n <SessionsListPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"sessions/new\"\n element={\n <FeatureGate flag=\"atheletebridge.sessions.enabled\" defaultValue={true}>\n <SessionFormPage />\n </FeatureGate>\n }\n />\n <Route\n path=\"sessions/:id\"\n element={\n <FeatureGate flag=\"atheletebridge.sessions.enabled\" defaultValue={true}>\n <SessionDetailPage />\n </FeatureGate>\n }\n />\n\n {/* Performance */}\n <Route\n path=\"performance\"\n element={\n <FeatureGate flag=\"atheletebridge.performance.enabled\" defaultValue={true}>\n <PerformancePage />\n </FeatureGate>\n }\n />\n\n {/* Analytics */}\n <Route\n path=\"analytics\"\n element={\n <FeatureGate flag=\"atheletebridge.analytics.enabled\" defaultValue={true}>\n <CoachAnalyticsPage />\n </FeatureGate>\n }\n />\n\n {/* Tournaments (esports bracket) */}\n <Route\n path=\"tournaments\"\n element={\n <FeatureGate flag=\"atheletebridge.tournaments.enabled\" defaultValue={true}>\n <TournamentBracketPage />\n </FeatureGate>\n }\n />\n\n {/* Fallback */}\n <Route path=\"*\" element={<Navigate to=\".\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Athlete picker
3
+ * @module atheletebridge/components
4
+ *
5
+ * Two coupled selects — pick a team, then pick an athlete from that team's live
6
+ * roster (`athListMembers`). Emits the athlete's user id (used everywhere an
7
+ * `athleteId` is required) plus a display name, so a coach never has to paste a
8
+ * raw UUID. Semantic tokens only.
9
+ */
10
+ export interface AthleteSelectValue {
11
+ athleteId: string;
12
+ displayName: string;
13
+ }
14
+ interface AthleteSelectProps {
15
+ /** Currently selected athlete user id. */
16
+ athleteId: string;
17
+ onSelect: (value: AthleteSelectValue) => void;
18
+ required?: boolean;
19
+ teamLabel?: string;
20
+ athleteLabel?: string;
21
+ /** Prefix for the field ids so multiple instances stay unique/accessible. */
22
+ idPrefix?: string;
23
+ }
24
+ export declare function AthleteSelect({ athleteId, onSelect, required, teamLabel, athleteLabel, idPrefix, }: AthleteSelectProps): import("react").JSX.Element;
25
+ export {};
26
+ //# sourceMappingURL=AthleteSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AthleteSelect.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/AthleteSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,kBAAkB;IAC1B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,QAAgB,EAChB,SAAkB,EAClB,YAAwB,EACxB,QAAoB,GACrB,EAAE,kBAAkB,+BA4EpB"}
@@ -0,0 +1,17 @@
1
+ import { FC } from 'react';
2
+ import { AthSport } from '../types';
3
+
4
+ export interface CrestProps {
5
+ /** Team name — seeds the gradient and provides the monogram initials. */
6
+ name: string;
7
+ /** Sport — renders a faint watermark glyph and (fallback) seeds the gradient. */
8
+ sport?: AthSport;
9
+ /** Pixel size of the crest (width == height of the shield's bounding box). */
10
+ size?: number;
11
+ /** Show the faint sport glyph watermark (default true when `sport` is set). */
12
+ showSportGlyph?: boolean;
13
+ className?: string;
14
+ }
15
+ /** Deterministic gradient monogram crest for a team (honest logo stand-in). */
16
+ export declare const Crest: FC<CrestProps>;
17
+ //# sourceMappingURL=Crest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crest.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/Crest.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAS,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,+EAA+E;AAC/E,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAgEhC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { FC } from 'react';
2
+
3
+ interface CursorPagerProps {
4
+ page: number;
5
+ hasMore: boolean;
6
+ onPrev: () => void;
7
+ onNext: () => void;
8
+ className?: string;
9
+ }
10
+ export declare const CursorPager: FC<CursorPagerProps>;
11
+ export {};
12
+ //# sourceMappingURL=CursorPager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorPager.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/CursorPager.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA0B5C,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Drill demo-video reference
3
+ * @module atheletebridge/components
4
+ *
5
+ * A drill's `video` is a reference into wspace-files-svc (blobs live there). We
6
+ * resolve the playable URL lazily and in isolation, so a missing/expired blob
7
+ * degrades to a quiet badge instead of ever breaking the program page.
8
+ */
9
+ export declare function DrillVideoLink({ fileId }: {
10
+ fileId: string;
11
+ }): import("react").JSX.Element;
12
+ //# sourceMappingURL=DrillVideoLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrillVideoLink.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/DrillVideoLink.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,+BA8B5D"}
@@ -0,0 +1,14 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface EmptyStateProps {
4
+ icon?: ReactNode;
5
+ /** On-brand illustration name → /illustrations/<name>.webp (preferred). */
6
+ illustration?: string;
7
+ title: string;
8
+ description?: string;
9
+ action?: ReactNode;
10
+ className?: string;
11
+ }
12
+ export declare const EmptyState: FC<EmptyStateProps>;
13
+ export {};
14
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/EmptyState.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA8B1C,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Filter Select
3
+ * @module atheletebridge/components
4
+ *
5
+ * A small, accessible native-select filter styled with semantic tokens.
6
+ * Generic over the option value type so callers stay strictly typed.
7
+ */
8
+ export interface FilterOption<T extends string> {
9
+ value: T;
10
+ label: string;
11
+ }
12
+ interface FilterSelectProps<T extends string> {
13
+ value: T | '';
14
+ onChange: (value: T | '') => void;
15
+ options: ReadonlyArray<FilterOption<T>>;
16
+ /** Label shown for the "no filter" option. */
17
+ allLabel: string;
18
+ ariaLabel: string;
19
+ className?: string;
20
+ }
21
+ export declare function FilterSelect<T extends string>({ value, onChange, options, allLabel, ariaLabel, className, }: FilterSelectProps<T>): import("react").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=FilterSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterSelect.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/FilterSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,EAC7C,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,GACV,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAoBtB"}
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ import { AthFixture } from '../types';
3
+
4
+ interface FixtureCardProps {
5
+ fixture: AthFixture;
6
+ onClick?: () => void;
7
+ }
8
+ export declare const FixtureCard: FC<FixtureCardProps>;
9
+ export {};
10
+ //# sourceMappingURL=FixtureCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixtureCard.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/FixtureCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,UAAU,gBAAgB;IACxB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAE5C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+
3
+ interface LoadingStateProps {
4
+ label?: string;
5
+ className?: string;
6
+ }
7
+ export declare const LoadingState: FC<LoadingStateProps>;
8
+ interface ErrorStateProps {
9
+ title?: string;
10
+ message?: string;
11
+ onRetry?: () => void;
12
+ className?: string;
13
+ }
14
+ export declare const ErrorState: FC<ErrorStateProps>;
15
+ export {};
16
+ //# sourceMappingURL=LoadingState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingState.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/LoadingState.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAS9C,CAAC;AAEF,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAyB1C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { AthFixture } from '../types';
3
+
4
+ export interface MatchupRowProps {
5
+ fixture: AthFixture;
6
+ onClick?: () => void;
7
+ /**
8
+ * Right-hand rail content. Defaults to date + competition + status. Pass
9
+ * `false` to hide the rail entirely, or a node to override it.
10
+ */
11
+ rail?: ReactNode | false;
12
+ className?: string;
13
+ }
14
+ /** Compact crest-vs-crest fixture row (dashboard / team-detail feeds). */
15
+ export declare const MatchupRow: FC<MatchupRowProps>;
16
+ //# sourceMappingURL=MatchupRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatchupRow.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/MatchupRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,0EAA0E;AAC1E,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA4D1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MatchupRow.js","names":[],"sources":["../../../src/atheletebridge/components/MatchupRow.tsx"],"sourcesContent":["/**\n * MatchupRow\n * @module atheletebridge/components\n *\n * A compact single-line crest-vs-crest fixture row for the dashboard \"Upcoming\n * fixtures\" feed and team-detail fixture lists. Reuses the Scoreboard building\n * blocks (crest sides + score/vs centerpiece). Semantic tokens only.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { CalendarDays, ChevronRight, Trophy } from 'lucide-react';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { MatchupSide, ScoreCenter, resolveMatchup } from './Scoreboard';\nimport { StatusBadge } from './StatusBadge';\nimport { formatDate } from '../utils/formatters';\nimport { cn } from '../utils/cn';\nimport type { AthFixture } from '../types';\n\nexport interface MatchupRowProps {\n fixture: AthFixture;\n onClick?: () => void;\n /**\n * Right-hand rail content. Defaults to date + competition + status. Pass\n * `false` to hide the rail entirely, or a node to override it.\n */\n rail?: ReactNode | false;\n className?: string;\n}\n\nconst DefaultRail: FC<{ fixture: AthFixture }> = ({ fixture }) => (\n <div className=\"flex flex-col items-end gap-1 text-right\">\n <span className=\"flex items-center gap-1 text-xs text-text-secondary\">\n <CalendarDays className=\"h-3.5 w-3.5 shrink-0\" aria-hidden=\"true\" />\n {formatDate(fixture.scheduledAt)}\n </span>\n <div className=\"flex items-center gap-1.5\">\n {fixture.competition ? (\n <Badge variant=\"secondary\" className=\"gap-1\">\n {fixture.type === 'CUP' || fixture.type === 'TOURNAMENT' ? (\n <Trophy className=\"h-3 w-3\" aria-hidden=\"true\" />\n ) : null}\n {fixture.competition}\n </Badge>\n ) : null}\n <StatusBadge status={fixture.status} />\n </div>\n </div>\n);\n\n/** Compact crest-vs-crest fixture row (dashboard / team-detail feeds). */\nexport const MatchupRow: FC<MatchupRowProps> = ({ fixture, onClick, rail, className }) => {\n const matchup = resolveMatchup(fixture);\n const clickable = Boolean(onClick);\n\n const railNode =\n rail === false ? null : rail !== undefined ? rail : <DefaultRail fixture={fixture} />;\n\n // When there's no rail to carry the date, surface the kickoff under the \"vs\".\n const timeLabel = railNode == null && !matchup.hasScore ? formatDate(fixture.scheduledAt) : null;\n\n const content = (\n <>\n <div className=\"grid flex-1 grid-cols-[1fr_auto_1fr] items-center gap-2 sm:gap-3\">\n <MatchupSide\n name={matchup.homeName}\n sport={matchup.homeSport}\n align=\"end\"\n won={matchup.homeWon}\n dimmed={matchup.awayWon}\n crestSize={36}\n />\n <ScoreCenter matchup={matchup} time={timeLabel} size=\"sm\" />\n <MatchupSide\n name={matchup.awayName}\n sport={matchup.awaySport}\n align=\"start\"\n won={matchup.awayWon}\n dimmed={matchup.homeWon}\n crestSize={36}\n />\n </div>\n {railNode ? (\n <div className=\"hidden items-center gap-3 border-l border-border-seam pl-3 sm:flex md:pl-4\">\n {railNode}\n {clickable ? (\n <ChevronRight className=\"h-4 w-4 shrink-0 text-text-muted\" aria-hidden=\"true\" />\n ) : null}\n </div>\n ) : null}\n </>\n );\n\n if (clickable) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex w-full items-center gap-3 rounded-[var(--radius-card)] px-1 py-3 text-left transition-colors hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] md:gap-4',\n className\n )}\n >\n {content}\n </button>\n );\n }\n\n return <div className={cn('flex w-full items-center gap-3 py-3 md:gap-4', className)}>{content}</div>;\n};\n"],"mappings":";;;;;;;;AA6BA,IAAM,KAA4C,EAAE,iBAClD,kBAAC,OAAD;CAAK,WAAU;WAAf,CACE,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,GAAD;GAAc,WAAU;GAAuB,eAAY;GAAS,CAAA,EACnE,EAAW,EAAQ,YAAY,CAC3B;KACP,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,EAAQ,cACP,kBAAC,GAAD;GAAO,SAAQ;GAAY,WAAU;aAArC,CACG,EAAQ,SAAS,SAAS,EAAQ,SAAS,eAC1C,kBAAC,GAAD;IAAQ,WAAU;IAAU,eAAY;IAAS,CAAA,GAC/C,MACH,EAAQ,YACH;OACN,MACJ,kBAAC,GAAD,EAAa,QAAQ,EAAQ,QAAU,CAAA,CACnC;IACF;IAIK,KAAmC,EAAE,YAAS,YAAS,SAAM,mBAAgB;CACxF,IAAM,IAAU,EAAe,EAAQ,EACjC,IAAY,EAAQ,GAEpB,IACJ,MAAS,KAAQ,OAAO,MAAS,KAAA,IAAmB,kBAAC,GAAD,EAAsB,YAAW,CAAA,GAAxC,GAGzC,IAAY,KAAY,QAAQ,CAAC,EAAQ,WAAW,EAAW,EAAQ,YAAY,GAAG,MAEtF,IACJ,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,MAAM,EAAQ;IACd,OAAO,EAAQ;IACf,OAAM;IACN,KAAK,EAAQ;IACb,QAAQ,EAAQ;IAChB,WAAW;IACX,CAAA;GACF,kBAAC,GAAD;IAAsB;IAAS,MAAM;IAAW,MAAK;IAAO,CAAA;GAC5D,kBAAC,GAAD;IACE,MAAM,EAAQ;IACd,OAAO,EAAQ;IACf,OAAM;IACN,KAAK,EAAQ;IACb,QAAQ,EAAQ;IAChB,WAAW;IACX,CAAA;GACE;KACL,IACC,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,GACA,IACC,kBAAC,GAAD;GAAc,WAAU;GAAmC,eAAY;GAAS,CAAA,GAC9E,KACA;MACJ,KACH,EAAA,CAAA;AAkBL,QAfI,IAEA,kBAAC,UAAD;EACE,MAAK;EACI;EACT,WAAW,EACT,8NACA,EACD;YAEA;EACM,CAAA,GAIN,kBAAC,OAAD;EAAK,WAAW,EAAG,gDAAgD,EAAU;YAAG;EAAc,CAAA"}
1
+ {"version":3,"file":"MatchupRow.js","names":[],"sources":["../../../src/atheletebridge/components/MatchupRow.tsx"],"sourcesContent":["/**\n * MatchupRow\n * @module atheletebridge/components\n *\n * A compact single-line crest-vs-crest fixture row for the dashboard \"Upcoming\n * fixtures\" feed and team-detail fixture lists. Reuses the Scoreboard building\n * blocks (crest sides + score/vs centerpiece). Semantic tokens only.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { CalendarDays, ChevronRight, Trophy } from 'lucide-react';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { MatchupSide, ScoreCenter, resolveMatchup } from './Scoreboard';\nimport { StatusBadge } from './StatusBadge';\nimport { formatDate } from '../utils/formatters';\nimport { cn } from '../utils/cn';\nimport type { AthFixture } from '../types';\n\nexport interface MatchupRowProps {\n fixture: AthFixture;\n onClick?: () => void;\n /**\n * Right-hand rail content. Defaults to date + competition + status. Pass\n * `false` to hide the rail entirely, or a node to override it.\n */\n rail?: ReactNode | false;\n className?: string;\n}\n\nconst DefaultRail: FC<{ fixture: AthFixture }> = ({ fixture }) => (\n <div className=\"flex flex-col items-end gap-1 text-right\">\n <span className=\"flex items-center gap-1 text-xs text-text-secondary\">\n <CalendarDays className=\"h-3.5 w-3.5 shrink-0\" aria-hidden=\"true\" />\n {formatDate(fixture.scheduledAt)}\n </span>\n <div className=\"flex items-center gap-1.5\">\n {fixture.competition ? (\n <Badge variant=\"secondary\" className=\"gap-1\">\n {fixture.type === 'CUP' || fixture.type === 'TOURNAMENT' ? (\n <Trophy className=\"h-3 w-3\" aria-hidden=\"true\" />\n ) : null}\n {fixture.competition}\n </Badge>\n ) : null}\n <StatusBadge status={fixture.status} />\n </div>\n </div>\n);\n\n/** Compact crest-vs-crest fixture row (dashboard / team-detail feeds). */\nexport const MatchupRow: FC<MatchupRowProps> = ({ fixture, onClick, rail, className }) => {\n const matchup = resolveMatchup(fixture);\n const clickable = Boolean(onClick);\n\n const railNode =\n rail === false ? null : rail !== undefined ? rail : <DefaultRail fixture={fixture} />;\n\n // When there's no rail to carry the date, surface the kickoff under the \"vs\".\n const timeLabel = railNode == null && !matchup.hasScore ? formatDate(fixture.scheduledAt) : null;\n\n const content = (\n <>\n <div className=\"grid flex-1 grid-cols-[1fr_auto_1fr] items-center gap-2 sm:gap-3\">\n <MatchupSide\n name={matchup.homeName}\n sport={matchup.homeSport}\n align=\"end\"\n won={matchup.homeWon}\n dimmed={matchup.awayWon}\n crestSize={36}\n />\n <ScoreCenter matchup={matchup} time={timeLabel} size=\"sm\" />\n <MatchupSide\n name={matchup.awayName}\n sport={matchup.awaySport}\n align=\"start\"\n won={matchup.awayWon}\n dimmed={matchup.homeWon}\n crestSize={36}\n />\n </div>\n {railNode ? (\n <div className=\"hidden items-center gap-3 border-l border-border-seam pl-3 sm:flex md:pl-4\">\n {railNode}\n {clickable ? (\n <ChevronRight className=\"h-4 w-4 shrink-0 text-text-muted\" aria-hidden=\"true\" />\n ) : null}\n </div>\n ) : null}\n </>\n );\n\n if (clickable) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'flex w-full items-center gap-3 rounded-[var(--radius-card)] px-1 py-3 text-left transition-colors hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] md:gap-4',\n className\n )}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div className={cn('flex w-full items-center gap-3 py-3 md:gap-4', className)}>{content}</div>\n );\n};\n"],"mappings":";;;;;;;;AA6BA,IAAM,KAA4C,EAAE,iBAClD,kBAAC,OAAD;CAAK,WAAU;WAAf,CACE,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,GAAD;GAAc,WAAU;GAAuB,eAAY;GAAS,CAAA,EACnE,EAAW,EAAQ,YAAY,CAC3B;KACP,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,EAAQ,cACP,kBAAC,GAAD;GAAO,SAAQ;GAAY,WAAU;aAArC,CACG,EAAQ,SAAS,SAAS,EAAQ,SAAS,eAC1C,kBAAC,GAAD;IAAQ,WAAU;IAAU,eAAY;IAAS,CAAA,GAC/C,MACH,EAAQ,YACH;OACN,MACJ,kBAAC,GAAD,EAAa,QAAQ,EAAQ,QAAU,CAAA,CACnC;IACF;IAIK,KAAmC,EAAE,YAAS,YAAS,SAAM,mBAAgB;CACxF,IAAM,IAAU,EAAe,EAAQ,EACjC,IAAY,EAAQ,GAEpB,IACJ,MAAS,KAAQ,OAAO,MAAS,KAAA,IAAmB,kBAAC,GAAD,EAAsB,YAAW,CAAA,GAAxC,GAGzC,IAAY,KAAY,QAAQ,CAAC,EAAQ,WAAW,EAAW,EAAQ,YAAY,GAAG,MAEtF,IACJ,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,MAAM,EAAQ;IACd,OAAO,EAAQ;IACf,OAAM;IACN,KAAK,EAAQ;IACb,QAAQ,EAAQ;IAChB,WAAW;IACX,CAAA;GACF,kBAAC,GAAD;IAAsB;IAAS,MAAM;IAAW,MAAK;IAAO,CAAA;GAC5D,kBAAC,GAAD;IACE,MAAM,EAAQ;IACd,OAAO,EAAQ;IACf,OAAM;IACN,KAAK,EAAQ;IACb,QAAQ,EAAQ;IAChB,WAAW;IACX,CAAA;GACE;KACL,IACC,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,GACA,IACC,kBAAC,GAAD;GAAc,WAAU;GAAmC,eAAY;GAAS,CAAA,GAC9E,KACA;MACJ,KACH,EAAA,CAAA;AAkBL,QAfI,IAEA,kBAAC,UAAD;EACE,MAAK;EACI;EACT,WAAW,EACT,8NACA,EACD;YAEA;EACM,CAAA,GAKX,kBAAC,OAAD;EAAK,WAAW,EAAG,gDAAgD,EAAU;YAAG;EAAc,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ type MetricTone = 'default' | 'accent' | 'success';
4
+ interface MetricsCardProps {
5
+ icon: ReactNode;
6
+ value: string | number;
7
+ label: string;
8
+ /** Render as the single featured hero metric (glass treatment + glow). */
9
+ featured?: boolean;
10
+ /** Value color: `default` (primary), `accent` (teal), or `success` (green). */
11
+ tone?: MetricTone;
12
+ /** Signed change; positive is good unless `invertDelta`. Renders a pill. */
13
+ delta?: number;
14
+ /** Unit appended to the delta (default "%"). */
15
+ deltaSuffix?: string;
16
+ /** Context line beside the delta, e.g. "vs last month". */
17
+ deltaLabel?: string;
18
+ /** When true (e.g. injuries), a negative delta is the good outcome. */
19
+ invertDelta?: boolean;
20
+ /** Optional trend rendered as a footer sparkline. */
21
+ sparkline?: number[];
22
+ className?: string;
23
+ }
24
+ export declare const MetricsCard: FC<MetricsCardProps>;
25
+ export {};
26
+ //# sourceMappingURL=MetricsCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsCard.d.ts","sourceRoot":"","sources":["../../../src/atheletebridge/components/MetricsCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM3C,KAAK,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD,UAAU,gBAAgB;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA4D5C,CAAC"}