@burdenoff/microfe-mybodyshield 2026.1014.1 → 2026.1026.2

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 (32) hide show
  1. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -1
  2. package/dist/mybodyshield/MyBodyShieldRoutes.js +42 -24
  3. package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
  4. package/dist/mybodyshield/components/FilterTabs.js +1 -1
  5. package/dist/mybodyshield/components/FilterTabs.js.map +1 -1
  6. package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +6 -1
  7. package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts.map +1 -1
  8. package/dist/mybodyshield/hooks/useMyBodyShieldApi.js +89 -63
  9. package/dist/mybodyshield/hooks/useMyBodyShieldApi.js.map +1 -1
  10. package/dist/mybodyshield/pages/coaching/CoachClientPage.d.ts +2 -0
  11. package/dist/mybodyshield/pages/coaching/CoachClientPage.d.ts.map +1 -0
  12. package/dist/mybodyshield/pages/coaching/CoachClientPage.js +264 -0
  13. package/dist/mybodyshield/pages/coaching/CoachClientPage.js.map +1 -0
  14. package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts.map +1 -1
  15. package/dist/mybodyshield/pages/coaching/CoachingPage.js +74 -67
  16. package/dist/mybodyshield/pages/coaching/CoachingPage.js.map +1 -1
  17. package/dist/mybodyshield/pages/coaching/coachAnalytics.d.ts +6 -0
  18. package/dist/mybodyshield/pages/coaching/coachAnalytics.d.ts.map +1 -0
  19. package/dist/mybodyshield/pages/coaching/coachAnalytics.js +13 -0
  20. package/dist/mybodyshield/pages/coaching/coachAnalytics.js.map +1 -0
  21. package/dist/mybodyshield/pages/insights/InsightsPage.js +1 -1
  22. package/dist/mybodyshield/pages/insights/InsightsPage.js.map +1 -1
  23. package/dist/mybodyshield/pages/recovery/MindfulnessPage.d.ts +2 -0
  24. package/dist/mybodyshield/pages/recovery/MindfulnessPage.d.ts.map +1 -0
  25. package/dist/mybodyshield/pages/recovery/MindfulnessPage.js +181 -0
  26. package/dist/mybodyshield/pages/recovery/MindfulnessPage.js.map +1 -0
  27. package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts.map +1 -1
  28. package/dist/mybodyshield/pages/recovery/RecoveryPage.js +210 -201
  29. package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
  30. package/dist/mybodyshield/types/index.d.ts +31 -0
  31. package/dist/mybodyshield/types/index.d.ts.map +1 -1
  32. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MyBodyShieldRoutes.d.ts","sourceRoot":"","sources":["../../src/mybodyshield/MyBodyShieldRoutes.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAkC,MAAM,OAAO,CAAC;AAuGhE,eAAO,MAAM,kBAAkB,EAAE,EA4IhC,CAAC"}
1
+ {"version":3,"file":"MyBodyShieldRoutes.d.ts","sourceRoot":"","sources":["../../src/mybodyshield/MyBodyShieldRoutes.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAkC,MAAM,OAAO,CAAC;AA8GhE,eAAO,MAAM,kBAAkB,EAAE,EA4JhC,CAAC"}
@@ -10,10 +10,10 @@ import { Navigate as s, Route as c, Routes as l, useLocation as u } from "react-
10
10
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
11
11
  import { Spinner as p } from "@burdenoff/fe-libs/ui";
12
12
  //#region src/mybodyshield/MyBodyShieldRoutes.tsx
13
- var m = o(() => import("./pages/programs/ProgramsPage.js").then((e) => ({ default: e.ProgramsPage }))), h = o(() => import("./pages/programs/ProgramDetailPage.js").then((e) => ({ default: e.ProgramDetailPage }))), g = o(() => import("./pages/train/SessionsPage.js").then((e) => ({ default: e.SessionsPage }))), _ = o(() => import("./pages/train/SessionDetailPage.js").then((e) => ({ default: e.SessionDetailPage }))), v = o(() => import("./pages/nutrition/NutritionPage.js").then((e) => ({ default: e.NutritionPage }))), y = o(() => import("./pages/goals/GoalsPage.js").then((e) => ({ default: e.GoalsPage }))), b = o(() => import("./pages/progress/ProgressPage.js").then((e) => ({ default: e.ProgressPage }))), x = o(() => import("./pages/recovery/RecoveryPage.js").then((e) => ({ default: e.RecoveryPage }))), S = o(() => import("./pages/insights/InsightsPage.js").then((e) => ({ default: e.InsightsPage }))), C = o(() => import("./pages/coaching/CoachingPage.js").then((e) => ({ default: e.CoachingPage }))), w = o(() => import("./pages/ai/AiControlsPage.js").then((e) => ({ default: e.AiControlsPage }))), T = o(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), E = () => /* @__PURE__ */ d("div", {
13
+ var m = o(() => import("./pages/programs/ProgramsPage.js").then((e) => ({ default: e.ProgramsPage }))), h = o(() => import("./pages/programs/ProgramDetailPage.js").then((e) => ({ default: e.ProgramDetailPage }))), g = o(() => import("./pages/train/SessionsPage.js").then((e) => ({ default: e.SessionsPage }))), _ = o(() => import("./pages/train/SessionDetailPage.js").then((e) => ({ default: e.SessionDetailPage }))), v = o(() => import("./pages/nutrition/NutritionPage.js").then((e) => ({ default: e.NutritionPage }))), y = o(() => import("./pages/goals/GoalsPage.js").then((e) => ({ default: e.GoalsPage }))), b = o(() => import("./pages/progress/ProgressPage.js").then((e) => ({ default: e.ProgressPage }))), x = o(() => import("./pages/recovery/RecoveryPage.js").then((e) => ({ default: e.RecoveryPage }))), S = o(() => import("./pages/recovery/MindfulnessPage.js").then((e) => ({ default: e.MindfulnessPage }))), C = o(() => import("./pages/insights/InsightsPage.js").then((e) => ({ default: e.InsightsPage }))), w = o(() => import("./pages/coaching/CoachingPage.js").then((e) => ({ default: e.CoachingPage }))), T = o(() => import("./pages/coaching/CoachClientPage.js").then((e) => ({ default: e.CoachClientPage }))), E = o(() => import("./pages/ai/AiControlsPage.js").then((e) => ({ default: e.AiControlsPage }))), D = o(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), O = () => /* @__PURE__ */ d("div", {
14
14
  className: "flex min-h-[400px] items-center justify-center",
15
15
  children: /* @__PURE__ */ d(p, { size: "lg" })
16
- }), D = {
16
+ }), k = {
17
17
  dashboard: {
18
18
  key: "mybodyshield.pages.dashboard.title",
19
19
  fallback: "Dashboard"
@@ -50,6 +50,10 @@ var m = o(() => import("./pages/programs/ProgramsPage.js").then((e) => ({ defaul
50
50
  key: "mybodyshield.pages.recovery.title",
51
51
  fallback: "Recovery"
52
52
  },
53
+ mindfulness: {
54
+ key: "mybodyshield.mindfulness.title",
55
+ fallback: "Mindfulness"
56
+ },
53
57
  insights: {
54
58
  key: "mybodyshield.pages.insights.title",
55
59
  fallback: "Insights"
@@ -67,8 +71,8 @@ var m = o(() => import("./pages/programs/ProgramsPage.js").then((e) => ({ defaul
67
71
  fallback: "Settings"
68
72
  }
69
73
  };
70
- function O({ page: e, children: i }) {
71
- let a = t(), { key: o, fallback: s } = D[e] ?? {
74
+ function A({ page: e, children: i }) {
75
+ let a = t(), { key: o, fallback: s } = k[e] ?? {
72
76
  key: `mybodyshield.pages.${e}.title`,
73
77
  fallback: e
74
78
  };
@@ -78,102 +82,116 @@ function O({ page: e, children: i }) {
78
82
  children: i
79
83
  });
80
84
  }
81
- var k = () => {
85
+ var j = () => {
82
86
  let { basePath: t, isStandalone: n } = e(), r = u(), o = t === "/" ? "" : (t ?? "").replace(/\/$/, "");
83
87
  return o && !n && !(r.pathname === o || r.pathname.startsWith(o + "/")) ? null : /* @__PURE__ */ d("div", {
84
88
  className: "flex min-h-full flex-col",
85
89
  children: /* @__PURE__ */ d(a, {
86
- fallback: /* @__PURE__ */ d(E, {}),
90
+ fallback: /* @__PURE__ */ d(O, {}),
87
91
  children: /* @__PURE__ */ f(l, { children: [
88
92
  /* @__PURE__ */ d(c, {
89
93
  index: !0,
90
- element: /* @__PURE__ */ d(O, {
94
+ element: /* @__PURE__ */ d(A, {
91
95
  page: "dashboard",
92
96
  children: /* @__PURE__ */ d(i, {})
93
97
  })
94
98
  }),
95
99
  /* @__PURE__ */ d(c, {
96
100
  path: "programs",
97
- element: /* @__PURE__ */ d(O, {
101
+ element: /* @__PURE__ */ d(A, {
98
102
  page: "programs",
99
103
  children: /* @__PURE__ */ d(m, {})
100
104
  })
101
105
  }),
102
106
  /* @__PURE__ */ d(c, {
103
107
  path: "programs/:id",
104
- element: /* @__PURE__ */ d(O, {
108
+ element: /* @__PURE__ */ d(A, {
105
109
  page: "program_detail",
106
110
  children: /* @__PURE__ */ d(h, {})
107
111
  })
108
112
  }),
109
113
  /* @__PURE__ */ d(c, {
110
114
  path: "train",
111
- element: /* @__PURE__ */ d(O, {
115
+ element: /* @__PURE__ */ d(A, {
112
116
  page: "train",
113
117
  children: /* @__PURE__ */ d(g, {})
114
118
  })
115
119
  }),
116
120
  /* @__PURE__ */ d(c, {
117
121
  path: "train/:id",
118
- element: /* @__PURE__ */ d(O, {
122
+ element: /* @__PURE__ */ d(A, {
119
123
  page: "session_detail",
120
124
  children: /* @__PURE__ */ d(_, {})
121
125
  })
122
126
  }),
123
127
  /* @__PURE__ */ d(c, {
124
128
  path: "nutrition",
125
- element: /* @__PURE__ */ d(O, {
129
+ element: /* @__PURE__ */ d(A, {
126
130
  page: "nutrition",
127
131
  children: /* @__PURE__ */ d(v, {})
128
132
  })
129
133
  }),
130
134
  /* @__PURE__ */ d(c, {
131
135
  path: "goals",
132
- element: /* @__PURE__ */ d(O, {
136
+ element: /* @__PURE__ */ d(A, {
133
137
  page: "goals",
134
138
  children: /* @__PURE__ */ d(y, {})
135
139
  })
136
140
  }),
137
141
  /* @__PURE__ */ d(c, {
138
142
  path: "progress",
139
- element: /* @__PURE__ */ d(O, {
143
+ element: /* @__PURE__ */ d(A, {
140
144
  page: "progress",
141
145
  children: /* @__PURE__ */ d(b, {})
142
146
  })
143
147
  }),
144
148
  /* @__PURE__ */ d(c, {
145
149
  path: "recovery",
146
- element: /* @__PURE__ */ d(O, {
150
+ element: /* @__PURE__ */ d(A, {
147
151
  page: "recovery",
148
152
  children: /* @__PURE__ */ d(x, {})
149
153
  })
150
154
  }),
155
+ /* @__PURE__ */ d(c, {
156
+ path: "mindfulness",
157
+ element: /* @__PURE__ */ d(A, {
158
+ page: "mindfulness",
159
+ children: /* @__PURE__ */ d(S, {})
160
+ })
161
+ }),
151
162
  /* @__PURE__ */ d(c, {
152
163
  path: "insights",
153
- element: /* @__PURE__ */ d(O, {
164
+ element: /* @__PURE__ */ d(A, {
154
165
  page: "insights",
155
- children: /* @__PURE__ */ d(S, {})
166
+ children: /* @__PURE__ */ d(C, {})
156
167
  })
157
168
  }),
158
169
  /* @__PURE__ */ d(c, {
159
170
  path: "coaching",
160
- element: /* @__PURE__ */ d(O, {
171
+ element: /* @__PURE__ */ d(A, {
161
172
  page: "coaching",
162
- children: /* @__PURE__ */ d(C, {})
173
+ children: /* @__PURE__ */ d(w, {})
174
+ })
175
+ }),
176
+ /* @__PURE__ */ d(c, {
177
+ path: "coaching/:memberId",
178
+ element: /* @__PURE__ */ d(A, {
179
+ page: "coaching",
180
+ children: /* @__PURE__ */ d(T, {})
163
181
  })
164
182
  }),
165
183
  /* @__PURE__ */ d(c, {
166
184
  path: "ai",
167
- element: /* @__PURE__ */ d(O, {
185
+ element: /* @__PURE__ */ d(A, {
168
186
  page: "ai_controls",
169
- children: /* @__PURE__ */ d(w, {})
187
+ children: /* @__PURE__ */ d(E, {})
170
188
  })
171
189
  }),
172
190
  /* @__PURE__ */ d(c, {
173
191
  path: "settings",
174
- element: /* @__PURE__ */ d(O, {
192
+ element: /* @__PURE__ */ d(A, {
175
193
  page: "settings",
176
- children: /* @__PURE__ */ d(T, {})
194
+ children: /* @__PURE__ */ d(D, {})
177
195
  })
178
196
  }),
179
197
  /* @__PURE__ */ d(c, {
@@ -188,6 +206,6 @@ var k = () => {
188
206
  });
189
207
  };
190
208
  //#endregion
191
- export { k as MyBodyShieldRoutes };
209
+ export { j as MyBodyShieldRoutes };
192
210
 
193
211
  //# sourceMappingURL=MyBodyShieldRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MyBodyShieldRoutes.js","names":[],"sources":["../../src/mybodyshield/MyBodyShieldRoutes.tsx"],"sourcesContent":["/**\n * MyBodyShield Routes\n * @module mybodyshield\n *\n * Domain routes. The dashboard is eager-loaded (primary landing); all other\n * pages are lazy-loaded. Every route maps to a real `myb*` backend capability.\n */\n\nimport { type FC, lazy, Suspense, type ReactNode } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { useMyBodyShield } from './context/MyBodyShieldContext';\nimport { FeatureFlagGuard, PageDisabled } from './components';\nimport { useTr } from './hooks';\n\n// Eager — primary landing\nimport { DashboardPage } from './pages/DashboardPage';\n\n// Programs (Training)\nconst ProgramsPage = lazy(() =>\n import('./pages/programs/ProgramsPage').then((m) => ({ default: m.ProgramsPage }))\n);\nconst ProgramDetailPage = lazy(() =>\n import('./pages/programs/ProgramDetailPage').then((m) => ({ default: m.ProgramDetailPage }))\n);\n\n// Train (live workout sessions & sets)\nconst SessionsPage = lazy(() =>\n import('./pages/train/SessionsPage').then((m) => ({ default: m.SessionsPage }))\n);\nconst SessionDetailPage = lazy(() =>\n import('./pages/train/SessionDetailPage').then((m) => ({ default: m.SessionDetailPage }))\n);\n\n// Nutrition (plans, meals, macros)\nconst NutritionPage = lazy(() =>\n import('./pages/nutrition/NutritionPage').then((m) => ({ default: m.NutritionPage }))\n);\n\n// Goals (Progress)\nconst GoalsPage = lazy(() =>\n import('./pages/goals/GoalsPage').then((m) => ({ default: m.GoalsPage }))\n);\n\n// Progress (body metrics)\nconst ProgressPage = lazy(() =>\n import('./pages/progress/ProgressPage').then((m) => ({ default: m.ProgressPage }))\n);\n\n// Recovery (Wellbeing)\nconst RecoveryPage = lazy(() =>\n import('./pages/recovery/RecoveryPage').then((m) => ({ default: m.RecoveryPage }))\n);\n\n// Insights (unified analytics)\nconst InsightsPage = lazy(() =>\n import('./pages/insights/InsightsPage').then((m) => ({ default: m.InsightsPage }))\n);\n\n// Coaching (Wellbeing)\nconst CoachingPage = lazy(() =>\n import('./pages/coaching/CoachingPage').then((m) => ({ default: m.CoachingPage }))\n);\n\n// AI controls (BOFF-5949)\nconst AiControlsPage = lazy(() =>\n import('./pages/ai/AiControlsPage').then((m) => ({ default: m.AiControlsPage }))\n);\n\n// Settings (AI consent and product preferences)\nconst SettingsPage = lazy(() =>\n import('./pages/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\n\nconst PageLoader: FC = () => (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <Spinner size=\"lg\" />\n </div>\n);\n\nconst PAGE_TITLE_KEYS: Record<string, { key: string; fallback: string }> = {\n dashboard: { key: 'mybodyshield.pages.dashboard.title', fallback: 'Dashboard' },\n programs: { key: 'mybodyshield.pages.programs.title', fallback: 'Programs' },\n program_detail: { key: 'mybodyshield.pages.programDetail.title', fallback: 'Program Detail' },\n train: { key: 'mybodyshield.pages.train.title', fallback: 'Train' },\n session_detail: { key: 'mybodyshield.pages.sessionDetail.title', fallback: 'Session Detail' },\n nutrition: { key: 'mybodyshield.pages.nutrition.title', fallback: 'Nutrition' },\n goals: { key: 'mybodyshield.pages.goals.title', fallback: 'Goals' },\n progress: { key: 'mybodyshield.pages.progress.title', fallback: 'Progress' },\n recovery: { key: 'mybodyshield.pages.recovery.title', fallback: 'Recovery' },\n insights: { key: 'mybodyshield.pages.insights.title', fallback: 'Insights' },\n coaching: { key: 'mybodyshield.pages.coaching.title', fallback: 'Coaching' },\n ai_controls: { key: 'mybodyshield.pages.aiControls.title', fallback: 'AI Controls' },\n settings: { key: 'mybodyshield.pages.settings.title', fallback: 'Settings' },\n};\n\n/** Wrap a page element with its feature-flag gate + analytics page-view. */\nfunction PageGate({ page, children }: { page: string; children: ReactNode }): React.ReactElement {\n const t = useTr();\n const { key, fallback } = PAGE_TITLE_KEYS[page] ?? {\n key: `mybodyshield.pages.${page}.title`,\n fallback: page,\n };\n const title = t(key, fallback);\n return (\n <FeatureFlagGuard page={page} fallback={<PageDisabled title={title} />}>\n {children}\n </FeatureFlagGuard>\n );\n}\n\nexport const MyBodyShieldRoutes: FC = () => {\n const { basePath, isStandalone } = useMyBodyShield();\n const location = useLocation();\n\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: only render if the current 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 <Route\n index\n element={\n <PageGate page=\"dashboard\">\n <DashboardPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"programs\"\n element={\n <PageGate page=\"programs\">\n <ProgramsPage />\n </PageGate>\n }\n />\n <Route\n path=\"programs/:id\"\n element={\n <PageGate page=\"program_detail\">\n <ProgramDetailPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"train\"\n element={\n <PageGate page=\"train\">\n <SessionsPage />\n </PageGate>\n }\n />\n <Route\n path=\"train/:id\"\n element={\n <PageGate page=\"session_detail\">\n <SessionDetailPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"nutrition\"\n element={\n <PageGate page=\"nutrition\">\n <NutritionPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"goals\"\n element={\n <PageGate page=\"goals\">\n <GoalsPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"progress\"\n element={\n <PageGate page=\"progress\">\n <ProgressPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"recovery\"\n element={\n <PageGate page=\"recovery\">\n <RecoveryPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"insights\"\n element={\n <PageGate page=\"insights\">\n <InsightsPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"coaching\"\n element={\n <PageGate page=\"coaching\">\n <CoachingPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"ai\"\n element={\n <PageGate page=\"ai_controls\">\n <AiControlsPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"settings\"\n element={\n <PageGate page=\"settings\">\n <SettingsPage />\n </PageGate>\n }\n />\n\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":"MyBodyShieldRoutes.js","names":[],"sources":["../../src/mybodyshield/MyBodyShieldRoutes.tsx"],"sourcesContent":["/**\n * MyBodyShield Routes\n * @module mybodyshield\n *\n * Domain routes. The dashboard is eager-loaded (primary landing); all other\n * pages are lazy-loaded. Every route maps to a real `myb*` backend capability.\n */\n\nimport { type FC, lazy, Suspense, type ReactNode } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { useMyBodyShield } from './context/MyBodyShieldContext';\nimport { FeatureFlagGuard, PageDisabled } from './components';\nimport { useTr } from './hooks';\n\n// Eager — primary landing\nimport { DashboardPage } from './pages/DashboardPage';\n\n// Programs (Training)\nconst ProgramsPage = lazy(() =>\n import('./pages/programs/ProgramsPage').then((m) => ({ default: m.ProgramsPage }))\n);\nconst ProgramDetailPage = lazy(() =>\n import('./pages/programs/ProgramDetailPage').then((m) => ({ default: m.ProgramDetailPage }))\n);\n\n// Train (live workout sessions & sets)\nconst SessionsPage = lazy(() =>\n import('./pages/train/SessionsPage').then((m) => ({ default: m.SessionsPage }))\n);\nconst SessionDetailPage = lazy(() =>\n import('./pages/train/SessionDetailPage').then((m) => ({ default: m.SessionDetailPage }))\n);\n\n// Nutrition (plans, meals, macros)\nconst NutritionPage = lazy(() =>\n import('./pages/nutrition/NutritionPage').then((m) => ({ default: m.NutritionPage }))\n);\n\n// Goals (Progress)\nconst GoalsPage = lazy(() =>\n import('./pages/goals/GoalsPage').then((m) => ({ default: m.GoalsPage }))\n);\n\n// Progress (body metrics)\nconst ProgressPage = lazy(() =>\n import('./pages/progress/ProgressPage').then((m) => ({ default: m.ProgressPage }))\n);\n\n// Recovery (Wellbeing)\nconst RecoveryPage = lazy(() =>\n import('./pages/recovery/RecoveryPage').then((m) => ({ default: m.RecoveryPage }))\n);\nconst MindfulnessPage = lazy(() =>\n import('./pages/recovery/MindfulnessPage').then((m) => ({ default: m.MindfulnessPage }))\n);\n\n// Insights (unified analytics)\nconst InsightsPage = lazy(() =>\n import('./pages/insights/InsightsPage').then((m) => ({ default: m.InsightsPage }))\n);\n\n// Coaching (Wellbeing)\nconst CoachingPage = lazy(() =>\n import('./pages/coaching/CoachingPage').then((m) => ({ default: m.CoachingPage }))\n);\nconst CoachClientPage = lazy(() =>\n import('./pages/coaching/CoachClientPage').then((m) => ({ default: m.CoachClientPage }))\n);\n\n// AI controls (BOFF-5949)\nconst AiControlsPage = lazy(() =>\n import('./pages/ai/AiControlsPage').then((m) => ({ default: m.AiControlsPage }))\n);\n\n// Settings (AI consent and product preferences)\nconst SettingsPage = lazy(() =>\n import('./pages/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\n\nconst PageLoader: FC = () => (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <Spinner size=\"lg\" />\n </div>\n);\n\nconst PAGE_TITLE_KEYS: Record<string, { key: string; fallback: string }> = {\n dashboard: { key: 'mybodyshield.pages.dashboard.title', fallback: 'Dashboard' },\n programs: { key: 'mybodyshield.pages.programs.title', fallback: 'Programs' },\n program_detail: { key: 'mybodyshield.pages.programDetail.title', fallback: 'Program Detail' },\n train: { key: 'mybodyshield.pages.train.title', fallback: 'Train' },\n session_detail: { key: 'mybodyshield.pages.sessionDetail.title', fallback: 'Session Detail' },\n nutrition: { key: 'mybodyshield.pages.nutrition.title', fallback: 'Nutrition' },\n goals: { key: 'mybodyshield.pages.goals.title', fallback: 'Goals' },\n progress: { key: 'mybodyshield.pages.progress.title', fallback: 'Progress' },\n recovery: { key: 'mybodyshield.pages.recovery.title', fallback: 'Recovery' },\n mindfulness: { key: 'mybodyshield.mindfulness.title', fallback: 'Mindfulness' },\n insights: { key: 'mybodyshield.pages.insights.title', fallback: 'Insights' },\n coaching: { key: 'mybodyshield.pages.coaching.title', fallback: 'Coaching' },\n ai_controls: { key: 'mybodyshield.pages.aiControls.title', fallback: 'AI Controls' },\n settings: { key: 'mybodyshield.pages.settings.title', fallback: 'Settings' },\n};\n\n/** Wrap a page element with its feature-flag gate + analytics page-view. */\nfunction PageGate({ page, children }: { page: string; children: ReactNode }): React.ReactElement {\n const t = useTr();\n const { key, fallback } = PAGE_TITLE_KEYS[page] ?? {\n key: `mybodyshield.pages.${page}.title`,\n fallback: page,\n };\n const title = t(key, fallback);\n return (\n <FeatureFlagGuard page={page} fallback={<PageDisabled title={title} />}>\n {children}\n </FeatureFlagGuard>\n );\n}\n\nexport const MyBodyShieldRoutes: FC = () => {\n const { basePath, isStandalone } = useMyBodyShield();\n const location = useLocation();\n\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: only render if the current 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 <Route\n index\n element={\n <PageGate page=\"dashboard\">\n <DashboardPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"programs\"\n element={\n <PageGate page=\"programs\">\n <ProgramsPage />\n </PageGate>\n }\n />\n <Route\n path=\"programs/:id\"\n element={\n <PageGate page=\"program_detail\">\n <ProgramDetailPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"train\"\n element={\n <PageGate page=\"train\">\n <SessionsPage />\n </PageGate>\n }\n />\n <Route\n path=\"train/:id\"\n element={\n <PageGate page=\"session_detail\">\n <SessionDetailPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"nutrition\"\n element={\n <PageGate page=\"nutrition\">\n <NutritionPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"goals\"\n element={\n <PageGate page=\"goals\">\n <GoalsPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"progress\"\n element={\n <PageGate page=\"progress\">\n <ProgressPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"recovery\"\n element={\n <PageGate page=\"recovery\">\n <RecoveryPage />\n </PageGate>\n }\n />\n <Route\n path=\"mindfulness\"\n element={\n <PageGate page=\"mindfulness\">\n <MindfulnessPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"insights\"\n element={\n <PageGate page=\"insights\">\n <InsightsPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"coaching\"\n element={\n <PageGate page=\"coaching\">\n <CoachingPage />\n </PageGate>\n }\n />\n <Route\n path=\"coaching/:memberId\"\n element={\n <PageGate page=\"coaching\">\n <CoachClientPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"ai\"\n element={\n <PageGate page=\"ai_controls\">\n <AiControlsPage />\n </PageGate>\n }\n />\n\n <Route\n path=\"settings\"\n element={\n <PageGate page=\"settings\">\n <SettingsPage />\n </PageGate>\n }\n />\n\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -14,7 +14,7 @@ function r({ options: r, value: i, onChange: a, className: o }) {
14
14
  onClick: () => a(r.value),
15
15
  className: e("rounded-lg px-3 py-1.5 text-sm font-medium transition-colors", o ? "bg-action-primary-bg text-action-primary-text" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"),
16
16
  children: [r.label, typeof r.count == "number" && /* @__PURE__ */ t("span", {
17
- className: e("ml-1.5 rounded-full px-1.5 py-0.5 text-xs tabular-nums", o ? "bg-black/10 dark:bg-white/15" : "bg-bg-sunken"),
17
+ className: e("ml-1.5 rounded-full px-1.5 py-0.5 text-xs tabular-nums", o ? "bg-bg-overlay" : "bg-bg-sunken"),
18
18
  children: r.count
19
19
  })]
20
20
  }, r.value);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterTabs.js","names":[],"sources":["../../../src/mybodyshield/components/FilterTabs.tsx"],"sourcesContent":["/**\n * FilterTabs — a segmented status/enum filter control.\n * @module mybodyshield/components\n */\n\nimport { cn } from '../utils/cn';\n\nexport interface FilterOption<V extends string> {\n value: V;\n label: string;\n count?: number;\n}\n\ninterface FilterTabsProps<V extends string> {\n options: FilterOption<V>[];\n value: V;\n onChange: (value: V) => void;\n className?: string;\n}\n\nexport function FilterTabs<V extends string>({\n options,\n value,\n onChange,\n className,\n}: FilterTabsProps<V>) {\n return (\n <div\n role=\"tablist\"\n className={cn(\n 'inline-flex flex-wrap items-center gap-1 rounded-xl border border-border-seam bg-bg-surface p-1',\n className\n )}\n >\n {options.map((opt) => {\n const active = opt.value === value;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n onClick={() => onChange(opt.value)}\n className={cn(\n 'rounded-lg px-3 py-1.5 text-sm font-medium transition-colors',\n active\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'text-text-secondary hover:bg-bg-sunken hover:text-text-primary'\n )}\n >\n {opt.label}\n {typeof opt.count === 'number' && (\n <span\n className={cn(\n 'ml-1.5 rounded-full px-1.5 py-0.5 text-xs tabular-nums',\n active ? 'bg-black/10 dark:bg-white/15' : 'bg-bg-sunken'\n )}\n >\n {opt.count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;AAoBA,SAAgB,EAA6B,EAC3C,YACA,UACA,aACA,gBACqB;AACrB,QACE,kBAAC,OAAD;EACE,MAAK;EACL,WAAW,EACT,mGACA,EACD;YAEA,EAAQ,KAAK,MAAQ;GACpB,IAAM,IAAS,EAAI,UAAU;AAC7B,UACE,kBAAC,UAAD;IAEE,MAAK;IACL,MAAK;IACL,iBAAe;IACf,eAAe,EAAS,EAAI,MAAM;IAClC,WAAW,EACT,gEACA,IACI,kDACA,iEACL;cAXH,CAaG,EAAI,OACJ,OAAO,EAAI,SAAU,YACpB,kBAAC,QAAD;KACE,WAAW,EACT,0DACA,IAAS,iCAAiC,eAC3C;eAEA,EAAI;KACA,CAAA,CAEF;MAvBF,EAAI,MAuBF;IAEX;EACE,CAAA"}
1
+ {"version":3,"file":"FilterTabs.js","names":[],"sources":["../../../src/mybodyshield/components/FilterTabs.tsx"],"sourcesContent":["/**\n * FilterTabs — a segmented status/enum filter control.\n * @module mybodyshield/components\n */\n\nimport { cn } from '../utils/cn';\n\nexport interface FilterOption<V extends string> {\n value: V;\n label: string;\n count?: number;\n}\n\ninterface FilterTabsProps<V extends string> {\n options: FilterOption<V>[];\n value: V;\n onChange: (value: V) => void;\n className?: string;\n}\n\nexport function FilterTabs<V extends string>({\n options,\n value,\n onChange,\n className,\n}: FilterTabsProps<V>) {\n return (\n <div\n role=\"tablist\"\n className={cn(\n 'inline-flex flex-wrap items-center gap-1 rounded-xl border border-border-seam bg-bg-surface p-1',\n className\n )}\n >\n {options.map((opt) => {\n const active = opt.value === value;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n onClick={() => onChange(opt.value)}\n className={cn(\n 'rounded-lg px-3 py-1.5 text-sm font-medium transition-colors',\n active\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'text-text-secondary hover:bg-bg-sunken hover:text-text-primary'\n )}\n >\n {opt.label}\n {typeof opt.count === 'number' && (\n <span\n className={cn(\n 'ml-1.5 rounded-full px-1.5 py-0.5 text-xs tabular-nums',\n active ? 'bg-bg-overlay' : 'bg-bg-sunken'\n )}\n >\n {opt.count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;AAoBA,SAAgB,EAA6B,EAC3C,YACA,UACA,aACA,gBACqB;AACrB,QACE,kBAAC,OAAD;EACE,MAAK;EACL,WAAW,EACT,mGACA,EACD;YAEA,EAAQ,KAAK,MAAQ;GACpB,IAAM,IAAS,EAAI,UAAU;AAC7B,UACE,kBAAC,UAAD;IAEE,MAAK;IACL,MAAK;IACL,iBAAe;IACf,eAAe,EAAS,EAAI,MAAM;IAClC,WAAW,EACT,gEACA,IACI,kDACA,iEACL;cAXH,CAaG,EAAI,OACJ,OAAO,EAAI,SAAU,YACpB,kBAAC,QAAD;KACE,WAAW,EACT,0DACA,IAAS,kBAAkB,eAC5B;eAEA,EAAI;KACA,CAAA,CAEF;MAvBF,EAAI,MAuBF;IAEX;EACE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { MybConnection, MybProgram, MybProgramStatus, MybWorkout, MybExercise, MybWorkoutSession, MybSessionStatus, MybSessionSet, MybGoal, MybGoalStatus, MybMealLog, MybMealType, MybNutritionPlan, MybDailyMacros, MybBodyMetric, MybBodyMetricType, MybRecoveryLog, MybRecoveryMetric, MybCoachingRelationship, MybCoachingStatus, MybCreateProgramInput, MybUpdateProgramInput, MybCreateWorkoutInput, MybCreateExerciseInput, MybStartSessionInput, MybLogSetInput, MybCompleteSessionInput, MybCreateGoalInput, MybUpdateGoalInput, MybCreateNutritionPlanInput, MybUpdateNutritionPlanInput, MybLogMealInput, MybRecordMetricInput, MybLogRecoveryInput, MybCreateCoachingInput, PaginationInput, MybDeviceConnection, MybDeviceProvider, MybWearableMetricType, MybTodayGuidance, MybFood, MybInsights, MybAiSettings, MybAiOperationLogConnection, MybUpdateAiSettingsInput, MybAiProcessingConsent } from '../types';
1
+ import { MybConnection, MybProgram, MybProgramStatus, MybWorkout, MybExercise, MybWorkoutSession, MybSessionStatus, MybSessionSet, MybGoal, MybGoalStatus, MybMealLog, MybMealType, MybNutritionPlan, MybDailyMacros, MybBodyMetric, MybBodyMetricType, MybRecoveryLog, MybRecoveryMetric, MybCoachingRelationship, MybCoachingStatus, MybCreateProgramInput, MybUpdateProgramInput, MybCreateWorkoutInput, MybCreateExerciseInput, MybStartSessionInput, MybLogSetInput, MybCompleteSessionInput, MybCreateGoalInput, MybUpdateGoalInput, MybCreateNutritionPlanInput, MybUpdateNutritionPlanInput, MybLogMealInput, MybRecordMetricInput, MybLogRecoveryInput, MybCreateCoachingInput, PaginationInput, MybDeviceConnection, MybDeviceProvider, MybWearableMetricType, MybTodayGuidance, MybFood, MybInsights, MybAiSettings, MybAiOperationLogConnection, MybUpdateAiSettingsInput, MybAiProcessingConsent, MybMindfulnessExercise, MybMindfulnessSession, MybCompleteMindfulnessSessionInput } from '../types';
2
2
 
3
3
  export interface ProgramFilters {
4
4
  status?: MybProgramStatus;
@@ -123,6 +123,9 @@ export declare const useMybBodyMetrics: (filters?: BodyMetricFilters) => import(
123
123
  export declare const useMybRecordBodyMetric: () => import('@tanstack/react-query').UseMutationResult<MybBodyMetric, Error, MybRecordMetricInput, unknown>;
124
124
  export declare const useMybRecoveryLogs: (metric?: MybRecoveryMetric, memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybRecoveryLog>>, Error>;
125
125
  export declare const useMybLogRecovery: () => import('@tanstack/react-query').UseMutationResult<MybRecoveryLog, Error, MybLogRecoveryInput, unknown>;
126
+ export declare const useMybMindfulnessExercises: () => import('@tanstack/react-query').UseQueryResult<NoInfer<MybMindfulnessExercise[]>, Error>;
127
+ export declare const useMybMindfulnessSessions: () => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybMindfulnessSession>>, Error>;
128
+ export declare const useMybCompleteMindfulnessSession: () => import('@tanstack/react-query').UseMutationResult<MybMindfulnessSession, Error, MybCompleteMindfulnessSessionInput, unknown>;
126
129
  export declare const useMybCoaching: (status?: MybCoachingStatus, memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybCoachingRelationship>>, Error>;
127
130
  export declare const useMybCreateCoaching: () => import('@tanstack/react-query').UseMutationResult<MybCoachingRelationship, Error, MybCreateCoachingInput, unknown>;
128
131
  export declare const useMybTransitionCoaching: () => import('@tanstack/react-query').UseMutationResult<MybCoachingRelationship, Error, {
@@ -157,6 +160,8 @@ export declare const useMybTodayGuidance: (memberId?: string) => import('@tansta
157
160
  export interface InsightsRange {
158
161
  dateRangeStart?: string;
159
162
  dateRangeEnd?: string;
163
+ /** Set only for an active coach/member relationship. */
164
+ memberId?: string;
160
165
  }
161
166
  export declare const useMybInsights: (range?: InsightsRange) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybInsights>, Error>;
162
167
  export declare const useMybAiSettings: () => import('@tanstack/react-query').UseQueryResult<NoInfer<MybAiSettings>, Error>;
@@ -1 +1 @@
1
- {"version":3,"file":"useMyBodyShieldApi.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMyBodyShieldApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMyBodyShieldApi.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMyBodyShieldApi.ts"],"names":[],"mappings":"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"}