@burdenoff/microfe-mybodyshield 2026.827.1 → 2026.1014.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 (90) hide show
  1. package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -1
  2. package/dist/mybodyshield/MyBodyShieldRoot.js +54 -56
  3. package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -1
  4. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -1
  5. package/dist/mybodyshield/MyBodyShieldRoutes.js +121 -62
  6. package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
  7. package/dist/mybodyshield/components/EvidenceUpload.d.ts.map +1 -1
  8. package/dist/mybodyshield/components/EvidenceUpload.js +46 -45
  9. package/dist/mybodyshield/components/EvidenceUpload.js.map +1 -1
  10. package/dist/mybodyshield/components/FileLink.d.ts.map +1 -1
  11. package/dist/mybodyshield/components/FileLink.js +27 -18
  12. package/dist/mybodyshield/components/FileLink.js.map +1 -1
  13. package/dist/mybodyshield/components/MybDiscussion.d.ts +1 -1
  14. package/dist/mybodyshield/components/MybDiscussion.d.ts.map +1 -1
  15. package/dist/mybodyshield/components/MybDiscussion.js +59 -58
  16. package/dist/mybodyshield/components/MybDiscussion.js.map +1 -1
  17. package/dist/mybodyshield/components/MybTags.d.ts +1 -1
  18. package/dist/mybodyshield/components/MybTags.d.ts.map +1 -1
  19. package/dist/mybodyshield/components/MybTags.js +83 -74
  20. package/dist/mybodyshield/components/MybTags.js.map +1 -1
  21. package/dist/mybodyshield/components/PageDisabled.d.ts.map +1 -1
  22. package/dist/mybodyshield/components/PageDisabled.js +16 -11
  23. package/dist/mybodyshield/components/PageDisabled.js.map +1 -1
  24. package/dist/mybodyshield/components/Pagination.d.ts.map +1 -1
  25. package/dist/mybodyshield/components/Pagination.js +36 -27
  26. package/dist/mybodyshield/components/Pagination.js.map +1 -1
  27. package/dist/mybodyshield/components/StateViews.d.ts.map +1 -1
  28. package/dist/mybodyshield/components/StateViews.js +42 -34
  29. package/dist/mybodyshield/components/StateViews.js.map +1 -1
  30. package/dist/mybodyshield/components/UserSearchSelect.d.ts.map +1 -1
  31. package/dist/mybodyshield/components/UserSearchSelect.js +66 -68
  32. package/dist/mybodyshield/components/UserSearchSelect.js.map +1 -1
  33. package/dist/mybodyshield/hooks/index.d.ts +1 -0
  34. package/dist/mybodyshield/hooks/index.d.ts.map +1 -1
  35. package/dist/mybodyshield/hooks/index.js +1 -0
  36. package/dist/mybodyshield/hooks/useTr.d.ts +5 -0
  37. package/dist/mybodyshield/hooks/useTr.d.ts.map +1 -0
  38. package/dist/mybodyshield/hooks/useTr.js +12 -0
  39. package/dist/mybodyshield/hooks/useTr.js.map +1 -0
  40. package/dist/mybodyshield/pages/DashboardPage.d.ts.map +1 -1
  41. package/dist/mybodyshield/pages/DashboardPage.js +157 -136
  42. package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
  43. package/dist/mybodyshield/pages/SettingsPage.d.ts.map +1 -1
  44. package/dist/mybodyshield/pages/SettingsPage.js +50 -59
  45. package/dist/mybodyshield/pages/SettingsPage.js.map +1 -1
  46. package/dist/mybodyshield/pages/_shared/visuals.d.ts +2 -1
  47. package/dist/mybodyshield/pages/_shared/visuals.d.ts.map +1 -1
  48. package/dist/mybodyshield/pages/_shared/visuals.js +91 -81
  49. package/dist/mybodyshield/pages/_shared/visuals.js.map +1 -1
  50. package/dist/mybodyshield/pages/ai/AiControlsPage.d.ts.map +1 -1
  51. package/dist/mybodyshield/pages/ai/AiControlsPage.js +255 -266
  52. package/dist/mybodyshield/pages/ai/AiControlsPage.js.map +1 -1
  53. package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts.map +1 -1
  54. package/dist/mybodyshield/pages/coaching/CoachingPage.js +321 -301
  55. package/dist/mybodyshield/pages/coaching/CoachingPage.js.map +1 -1
  56. package/dist/mybodyshield/pages/goals/GoalsPage.d.ts.map +1 -1
  57. package/dist/mybodyshield/pages/goals/GoalsPage.js +247 -251
  58. package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
  59. package/dist/mybodyshield/pages/insights/InsightsCharts.d.ts.map +1 -1
  60. package/dist/mybodyshield/pages/insights/InsightsCharts.js +216 -213
  61. package/dist/mybodyshield/pages/insights/InsightsCharts.js.map +1 -1
  62. package/dist/mybodyshield/pages/insights/InsightsPage.d.ts.map +1 -1
  63. package/dist/mybodyshield/pages/insights/InsightsPage.js +290 -284
  64. package/dist/mybodyshield/pages/insights/InsightsPage.js.map +1 -1
  65. package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts.map +1 -1
  66. package/dist/mybodyshield/pages/nutrition/NutritionPage.js +575 -529
  67. package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
  68. package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts.map +1 -1
  69. package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +333 -275
  70. package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
  71. package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts.map +1 -1
  72. package/dist/mybodyshield/pages/programs/ProgramsPage.js +258 -253
  73. package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
  74. package/dist/mybodyshield/pages/progress/ProgressPage.d.ts.map +1 -1
  75. package/dist/mybodyshield/pages/progress/ProgressPage.js +271 -254
  76. package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
  77. package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts.map +1 -1
  78. package/dist/mybodyshield/pages/recovery/RecoveryPage.js +206 -200
  79. package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
  80. package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts.map +1 -1
  81. package/dist/mybodyshield/pages/train/SessionDetailPage.js +327 -294
  82. package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
  83. package/dist/mybodyshield/pages/train/SessionsPage.d.ts.map +1 -1
  84. package/dist/mybodyshield/pages/train/SessionsPage.js +180 -163
  85. package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
  86. package/dist/mybodyshield/utils/i18n.d.ts +1 -2
  87. package/dist/mybodyshield/utils/i18n.d.ts.map +1 -1
  88. package/dist/mybodyshield/utils/i18n.js +15 -0
  89. package/dist/mybodyshield/utils/i18n.js.map +1 -0
  90. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MyBodyShieldRoot.d.ts","sourceRoot":"","sources":["../../src/mybodyshield/MyBodyShieldRoot.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAqBhC,OAAO,KAAK,EAAE,qBAAqB,EAAW,MAAM,SAAS,CAAC;AAY9D,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAqItD,CAAC"}
1
+ {"version":3,"file":"MyBodyShieldRoot.d.ts","sourceRoot":"","sources":["../../src/mybodyshield/MyBodyShieldRoot.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAqBhC,OAAO,KAAK,EAAE,qBAAqB,EAAW,MAAM,SAAS,CAAC;AAY9D,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA8HtD,CAAC"}
@@ -1,139 +1,137 @@
1
1
  import { joinPath as e } from "./utils/navigation.js";
2
2
  import { MyBodyShieldProvider as t } from "./context/MyBodyShieldContext.js";
3
- import { MyBodyShieldRoutes as n } from "./MyBodyShieldRoutes.js";
4
- import { useCallback as r, useEffect as i } from "react";
3
+ import { useTr as n } from "./hooks/useTr.js";
4
+ import "./hooks/index.js";
5
+ import { MyBodyShieldRoutes as r } from "./MyBodyShieldRoutes.js";
6
+ import { useEffect as i } from "react";
5
7
  import { QueryClient as a, QueryClientProvider as o } from "@tanstack/react-query";
6
8
  import { FeatureFlagProvider as s } from "@burdenoff/fe-libs/shared/feature-flags";
7
- import { useI18n as c } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
- import { BarChart3 as l, Dumbbell as u, Flame as d, LayoutDashboard as f, Moon as p, Salad as m, Settings as h, Sparkles as g, Target as _, TrendingUp as v, Users as y } from "lucide-react";
9
- import { jsx as b } from "react/jsx-runtime";
9
+ import { BarChart3 as c, Dumbbell as l, Flame as u, LayoutDashboard as d, Moon as f, Salad as p, Settings as m, Sparkles as h, Target as g, TrendingUp as _, Users as v } from "lucide-react";
10
+ import { jsx as y } from "react/jsx-runtime";
10
11
  //#region src/mybodyshield/MyBodyShieldRoot.tsx
11
- var x = new a({ defaultOptions: { queries: {
12
+ var b = new a({ defaultOptions: { queries: {
12
13
  staleTime: 300 * 1e3,
13
14
  retry: 1,
14
15
  refetchOnWindowFocus: !1
15
- } } }), S = (a) => {
16
- let { registerNavItems: S, registerFooterItems: C, basePath: w = "/" } = a, { t: T } = c(), E = r((e, t) => {
17
- let n = T(e);
18
- return n === e ? t : n;
19
- }, [T]);
16
+ } } }), x = (a) => {
17
+ let { registerNavItems: x, registerFooterItems: S, basePath: C = "/" } = a, w = n();
20
18
  return i(() => {
21
- if (S) return S([
19
+ if (x) return x([
22
20
  {
23
21
  id: "mybodyshield-dashboard",
24
- label: E("mybodyshield.nav.dashboard", "Dashboard"),
25
- path: e(w, ""),
26
- icon: /* @__PURE__ */ b(f, { size: 20 }),
22
+ label: w("mybodyshield.nav.dashboard", "Dashboard"),
23
+ path: e(C, ""),
24
+ icon: /* @__PURE__ */ y(d, { size: 20 }),
27
25
  order: 0,
28
26
  group: "products"
29
27
  },
30
28
  {
31
29
  id: "mybodyshield-programs",
32
- label: E("mybodyshield.nav.programs", "Programs"),
33
- path: e(w, "programs"),
34
- icon: /* @__PURE__ */ b(u, { size: 20 }),
30
+ label: w("mybodyshield.nav.programs", "Programs"),
31
+ path: e(C, "programs"),
32
+ icon: /* @__PURE__ */ y(l, { size: 20 }),
35
33
  order: 1,
36
34
  group: "products"
37
35
  },
38
36
  {
39
37
  id: "mybodyshield-train",
40
- label: E("mybodyshield.nav.train", "Train"),
41
- path: e(w, "train"),
42
- icon: /* @__PURE__ */ b(d, { size: 20 }),
38
+ label: w("mybodyshield.nav.train", "Train"),
39
+ path: e(C, "train"),
40
+ icon: /* @__PURE__ */ y(u, { size: 20 }),
43
41
  order: 2,
44
42
  group: "products"
45
43
  },
46
44
  {
47
45
  id: "mybodyshield-nutrition",
48
- label: E("mybodyshield.nav.nutrition", "Nutrition"),
49
- path: e(w, "nutrition"),
50
- icon: /* @__PURE__ */ b(m, { size: 20 }),
46
+ label: w("mybodyshield.nav.nutrition", "Nutrition"),
47
+ path: e(C, "nutrition"),
48
+ icon: /* @__PURE__ */ y(p, { size: 20 }),
51
49
  order: 3,
52
50
  group: "products"
53
51
  },
54
52
  {
55
53
  id: "mybodyshield-goals",
56
- label: E("mybodyshield.nav.goals", "Goals"),
57
- path: e(w, "goals"),
58
- icon: /* @__PURE__ */ b(_, { size: 20 }),
54
+ label: w("mybodyshield.nav.goals", "Goals"),
55
+ path: e(C, "goals"),
56
+ icon: /* @__PURE__ */ y(g, { size: 20 }),
59
57
  order: 4,
60
58
  group: "products"
61
59
  },
62
60
  {
63
61
  id: "mybodyshield-progress",
64
- label: E("mybodyshield.nav.progress", "Progress"),
65
- path: e(w, "progress"),
66
- icon: /* @__PURE__ */ b(v, { size: 20 }),
62
+ label: w("mybodyshield.nav.progress", "Progress"),
63
+ path: e(C, "progress"),
64
+ icon: /* @__PURE__ */ y(_, { size: 20 }),
67
65
  order: 5,
68
66
  group: "products"
69
67
  },
70
68
  {
71
69
  id: "mybodyshield-recovery",
72
- label: E("mybodyshield.nav.recovery", "Recovery"),
73
- path: e(w, "recovery"),
74
- icon: /* @__PURE__ */ b(p, { size: 20 }),
70
+ label: w("mybodyshield.nav.recovery", "Recovery"),
71
+ path: e(C, "recovery"),
72
+ icon: /* @__PURE__ */ y(f, { size: 20 }),
75
73
  order: 6,
76
74
  group: "products"
77
75
  },
78
76
  {
79
77
  id: "mybodyshield-insights",
80
- label: E("mybodyshield.nav.insights", "Insights"),
81
- path: e(w, "insights"),
82
- icon: /* @__PURE__ */ b(l, { size: 20 }),
78
+ label: w("mybodyshield.nav.insights", "Insights"),
79
+ path: e(C, "insights"),
80
+ icon: /* @__PURE__ */ y(c, { size: 20 }),
83
81
  order: 7,
84
82
  group: "products"
85
83
  },
86
84
  {
87
85
  id: "mybodyshield-ai",
88
- label: E("mybodyshield.nav.ai", "AI"),
89
- path: e(w, "ai"),
90
- icon: /* @__PURE__ */ b(g, { size: 20 }),
86
+ label: w("mybodyshield.nav.ai", "AI"),
87
+ path: e(C, "ai"),
88
+ icon: /* @__PURE__ */ y(h, { size: 20 }),
91
89
  order: 8,
92
90
  group: "products"
93
91
  },
94
92
  {
95
93
  id: "mybodyshield-coaching",
96
- label: E("mybodyshield.nav.coaching", "Coaching"),
97
- path: e(w, "coaching"),
98
- icon: /* @__PURE__ */ b(y, { size: 20 }),
94
+ label: w("mybodyshield.nav.coaching", "Coaching"),
95
+ path: e(C, "coaching"),
96
+ icon: /* @__PURE__ */ y(v, { size: 20 }),
99
97
  order: 9,
100
98
  group: "products"
101
99
  },
102
100
  {
103
101
  id: "mybodyshield-settings",
104
- label: E("mybodyshield.nav.settings", "Settings"),
105
- path: e(w, "settings"),
106
- icon: /* @__PURE__ */ b(h, { size: 20 }),
102
+ label: w("mybodyshield.nav.settings", "Settings"),
103
+ path: e(C, "settings"),
104
+ icon: /* @__PURE__ */ y(m, { size: 20 }),
107
105
  order: 10,
108
106
  group: "products"
109
107
  }
110
108
  ]);
111
109
  }, [
112
- S,
113
- w,
114
- E
110
+ x,
111
+ C,
112
+ w
115
113
  ]), i(() => {
116
- if (C) return C([{
114
+ if (S) return S([{
117
115
  id: "mybodyshield-status",
118
- label: E("mybodyshield.footer.ready", "MyBodyShield Ready"),
116
+ label: w("mybodyshield.footer.ready", "MyBodyShield Ready"),
119
117
  type: "status",
120
118
  section: "left",
121
119
  order: 10
122
120
  }]);
123
- }, [C, E]), /* @__PURE__ */ b(o, {
124
- client: x,
125
- children: /* @__PURE__ */ b(s, {
121
+ }, [S, w]), /* @__PURE__ */ y(o, {
122
+ client: b,
123
+ children: /* @__PURE__ */ y(s, {
126
124
  workspaceId: null,
127
125
  gateway: "global",
128
126
  defaultEnabled: !0,
129
- children: /* @__PURE__ */ b(t, {
127
+ children: /* @__PURE__ */ y(t, {
130
128
  ...a,
131
- children: /* @__PURE__ */ b(n, {})
129
+ children: /* @__PURE__ */ y(r, {})
132
130
  })
133
131
  })
134
132
  });
135
133
  };
136
134
  //#endregion
137
- export { S as MyBodyShieldRoot };
135
+ export { x as MyBodyShieldRoot };
138
136
 
139
137
  //# sourceMappingURL=MyBodyShieldRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MyBodyShieldRoot.js","names":[],"sources":["../../src/mybodyshield/MyBodyShieldRoot.tsx"],"sourcesContent":["/**\n * MyBodyShield Root Component\n * @module mybodyshield\n *\n * Host-contract entry point. Registers the product's sidebar nav (eight sections\n * that map 1:1 to the wspace-mybodyshield-svc `myb*` backend) and mounts the\n * routed pages inside the shared QueryClient + FeatureFlag providers.\n */\n\nimport type { FC } from 'react';\nimport { useCallback, useEffect } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n LayoutDashboard,\n Dumbbell,\n Flame,\n Salad,\n Target,\n TrendingUp,\n Moon,\n Users,\n BarChart3,\n Sparkles,\n Settings,\n} from 'lucide-react';\nimport { MyBodyShieldProvider } from './context/MyBodyShieldContext';\nimport { MyBodyShieldRoutes } from './MyBodyShieldRoutes';\nimport { joinPath } from './utils/navigation';\nimport type { MyBodyShieldRootProps, NavItem } from './types';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000,\n retry: 1,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nexport const MyBodyShieldRoot: FC<MyBodyShieldRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t: translate } = useI18n();\n const t = useCallback(\n (key: string, fallback: string): string => {\n const value = translate(key);\n return value === key ? fallback : value;\n },\n [translate]\n );\n\n // Register navigation items with the shell on mount. Ids/paths/orders match\n // the app-shell static NavRegistration block so the two are a single,\n // consistent source of truth.\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItems: NavItem[] = [\n {\n id: 'mybodyshield-dashboard',\n label: t('mybodyshield.nav.dashboard', 'Dashboard'),\n path: joinPath(basePath, ''),\n icon: <LayoutDashboard size={20} />,\n order: 0,\n group: 'products',\n },\n {\n id: 'mybodyshield-programs',\n label: t('mybodyshield.nav.programs', 'Programs'),\n path: joinPath(basePath, 'programs'),\n icon: <Dumbbell size={20} />,\n order: 1,\n group: 'products',\n },\n {\n id: 'mybodyshield-train',\n label: t('mybodyshield.nav.train', 'Train'),\n path: joinPath(basePath, 'train'),\n icon: <Flame size={20} />,\n order: 2,\n group: 'products',\n },\n {\n id: 'mybodyshield-nutrition',\n label: t('mybodyshield.nav.nutrition', 'Nutrition'),\n path: joinPath(basePath, 'nutrition'),\n icon: <Salad size={20} />,\n order: 3,\n group: 'products',\n },\n {\n id: 'mybodyshield-goals',\n label: t('mybodyshield.nav.goals', 'Goals'),\n path: joinPath(basePath, 'goals'),\n icon: <Target size={20} />,\n order: 4,\n group: 'products',\n },\n {\n id: 'mybodyshield-progress',\n label: t('mybodyshield.nav.progress', 'Progress'),\n path: joinPath(basePath, 'progress'),\n icon: <TrendingUp size={20} />,\n order: 5,\n group: 'products',\n },\n {\n id: 'mybodyshield-recovery',\n label: t('mybodyshield.nav.recovery', 'Recovery'),\n path: joinPath(basePath, 'recovery'),\n icon: <Moon size={20} />,\n order: 6,\n group: 'products',\n },\n {\n id: 'mybodyshield-insights',\n label: t('mybodyshield.nav.insights', 'Insights'),\n path: joinPath(basePath, 'insights'),\n icon: <BarChart3 size={20} />,\n order: 7,\n group: 'products',\n },\n {\n id: 'mybodyshield-ai',\n label: t('mybodyshield.nav.ai', 'AI'),\n path: joinPath(basePath, 'ai'),\n icon: <Sparkles size={20} />,\n order: 8,\n group: 'products',\n },\n {\n id: 'mybodyshield-coaching',\n label: t('mybodyshield.nav.coaching', 'Coaching'),\n path: joinPath(basePath, 'coaching'),\n icon: <Users size={20} />,\n order: 9,\n group: 'products',\n },\n {\n id: 'mybodyshield-settings',\n label: t('mybodyshield.nav.settings', 'Settings'),\n path: joinPath(basePath, 'settings'),\n icon: <Settings size={20} />,\n order: 10,\n group: 'products',\n },\n ];\n\n return registerNavItems(navItems);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'mybodyshield-status',\n label: t('mybodyshield.footer.ready', 'MyBodyShield Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <MyBodyShieldProvider {...props}>\n <MyBodyShieldRoutes />\n </MyBodyShieldProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MyBodyShieldRoot.js","names":[],"sources":["../../src/mybodyshield/MyBodyShieldRoot.tsx"],"sourcesContent":["/**\n * MyBodyShield Root Component\n * @module mybodyshield\n *\n * Host-contract entry point. Registers the product's sidebar nav (eight sections\n * that map 1:1 to the wspace-mybodyshield-svc `myb*` backend) and mounts the\n * routed pages inside the shared QueryClient + FeatureFlag providers.\n */\n\nimport type { FC } from 'react';\nimport { useEffect } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport {\n LayoutDashboard,\n Dumbbell,\n Flame,\n Salad,\n Target,\n TrendingUp,\n Moon,\n Users,\n BarChart3,\n Sparkles,\n Settings,\n} from 'lucide-react';\nimport { MyBodyShieldProvider } from './context/MyBodyShieldContext';\nimport { MyBodyShieldRoutes } from './MyBodyShieldRoutes';\nimport { joinPath } from './utils/navigation';\nimport { useTr } from './hooks';\nimport type { MyBodyShieldRootProps, NavItem } from './types';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000,\n retry: 1,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nexport const MyBodyShieldRoot: FC<MyBodyShieldRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const t = useTr();\n\n // Register navigation items with the shell on mount. Ids/paths/orders match\n // the app-shell static NavRegistration block so the two are a single,\n // consistent source of truth.\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItems: NavItem[] = [\n {\n id: 'mybodyshield-dashboard',\n label: t('mybodyshield.nav.dashboard', 'Dashboard'),\n path: joinPath(basePath, ''),\n icon: <LayoutDashboard size={20} />,\n order: 0,\n group: 'products',\n },\n {\n id: 'mybodyshield-programs',\n label: t('mybodyshield.nav.programs', 'Programs'),\n path: joinPath(basePath, 'programs'),\n icon: <Dumbbell size={20} />,\n order: 1,\n group: 'products',\n },\n {\n id: 'mybodyshield-train',\n label: t('mybodyshield.nav.train', 'Train'),\n path: joinPath(basePath, 'train'),\n icon: <Flame size={20} />,\n order: 2,\n group: 'products',\n },\n {\n id: 'mybodyshield-nutrition',\n label: t('mybodyshield.nav.nutrition', 'Nutrition'),\n path: joinPath(basePath, 'nutrition'),\n icon: <Salad size={20} />,\n order: 3,\n group: 'products',\n },\n {\n id: 'mybodyshield-goals',\n label: t('mybodyshield.nav.goals', 'Goals'),\n path: joinPath(basePath, 'goals'),\n icon: <Target size={20} />,\n order: 4,\n group: 'products',\n },\n {\n id: 'mybodyshield-progress',\n label: t('mybodyshield.nav.progress', 'Progress'),\n path: joinPath(basePath, 'progress'),\n icon: <TrendingUp size={20} />,\n order: 5,\n group: 'products',\n },\n {\n id: 'mybodyshield-recovery',\n label: t('mybodyshield.nav.recovery', 'Recovery'),\n path: joinPath(basePath, 'recovery'),\n icon: <Moon size={20} />,\n order: 6,\n group: 'products',\n },\n {\n id: 'mybodyshield-insights',\n label: t('mybodyshield.nav.insights', 'Insights'),\n path: joinPath(basePath, 'insights'),\n icon: <BarChart3 size={20} />,\n order: 7,\n group: 'products',\n },\n {\n id: 'mybodyshield-ai',\n label: t('mybodyshield.nav.ai', 'AI'),\n path: joinPath(basePath, 'ai'),\n icon: <Sparkles size={20} />,\n order: 8,\n group: 'products',\n },\n {\n id: 'mybodyshield-coaching',\n label: t('mybodyshield.nav.coaching', 'Coaching'),\n path: joinPath(basePath, 'coaching'),\n icon: <Users size={20} />,\n order: 9,\n group: 'products',\n },\n {\n id: 'mybodyshield-settings',\n label: t('mybodyshield.nav.settings', 'Settings'),\n path: joinPath(basePath, 'settings'),\n icon: <Settings size={20} />,\n order: 10,\n group: 'products',\n },\n ];\n\n return registerNavItems(navItems);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'mybodyshield-status',\n label: t('mybodyshield.footer.ready', 'MyBodyShield Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <MyBodyShieldProvider {...props}>\n <MyBodyShieldRoutes />\n </MyBodyShieldProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n"],"mappings":"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"}
@@ -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;AAoFhE,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;AAuGhE,eAAO,MAAM,kBAAkB,EAAE,EA4IhC,CAAC"}
@@ -1,125 +1,184 @@
1
1
  import { useMyBodyShield as e } from "./context/MyBodyShieldContext.js";
2
- import { FeatureFlagGuard as t } from "./components/FeatureFlagGuard.js";
3
- import { PageDisabled as n } from "./components/PageDisabled.js";
2
+ import { useTr as t } from "./hooks/useTr.js";
3
+ import "./hooks/index.js";
4
+ import { FeatureFlagGuard as n } from "./components/FeatureFlagGuard.js";
5
+ import { PageDisabled as r } from "./components/PageDisabled.js";
4
6
  import "./components/index.js";
5
- import { DashboardPage as r } from "./pages/DashboardPage.js";
6
- import { Suspense as i, lazy as a } from "react";
7
- import { Navigate as o, Route as s, Routes as c, useLocation as l } from "react-router";
8
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
- import { Spinner as f } from "@burdenoff/fe-libs/ui";
7
+ import { DashboardPage as i } from "./pages/DashboardPage.js";
8
+ import { Suspense as a, lazy as o } from "react";
9
+ import { Navigate as s, Route as c, Routes as l, useLocation as u } from "react-router";
10
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
11
+ import { Spinner as p } from "@burdenoff/fe-libs/ui";
10
12
  //#region src/mybodyshield/MyBodyShieldRoutes.tsx
11
- var p = a(() => import("./pages/programs/ProgramsPage.js").then((e) => ({ default: e.ProgramsPage }))), m = a(() => import("./pages/programs/ProgramDetailPage.js").then((e) => ({ default: e.ProgramDetailPage }))), h = a(() => import("./pages/train/SessionsPage.js").then((e) => ({ default: e.SessionsPage }))), g = a(() => import("./pages/train/SessionDetailPage.js").then((e) => ({ default: e.SessionDetailPage }))), _ = a(() => import("./pages/nutrition/NutritionPage.js").then((e) => ({ default: e.NutritionPage }))), v = a(() => import("./pages/goals/GoalsPage.js").then((e) => ({ default: e.GoalsPage }))), y = a(() => import("./pages/progress/ProgressPage.js").then((e) => ({ default: e.ProgressPage }))), b = a(() => import("./pages/recovery/RecoveryPage.js").then((e) => ({ default: e.RecoveryPage }))), x = a(() => import("./pages/insights/InsightsPage.js").then((e) => ({ default: e.InsightsPage }))), S = a(() => import("./pages/coaching/CoachingPage.js").then((e) => ({ default: e.CoachingPage }))), C = a(() => import("./pages/ai/AiControlsPage.js").then((e) => ({ default: e.AiControlsPage }))), w = a(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), T = () => /* @__PURE__ */ u("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/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", {
12
14
  className: "flex min-h-[400px] items-center justify-center",
13
- children: /* @__PURE__ */ u(f, { size: "lg" })
14
- });
15
- function E({ page: e, children: r }) {
16
- return /* @__PURE__ */ u(t, {
15
+ children: /* @__PURE__ */ d(p, { size: "lg" })
16
+ }), D = {
17
+ dashboard: {
18
+ key: "mybodyshield.pages.dashboard.title",
19
+ fallback: "Dashboard"
20
+ },
21
+ programs: {
22
+ key: "mybodyshield.pages.programs.title",
23
+ fallback: "Programs"
24
+ },
25
+ program_detail: {
26
+ key: "mybodyshield.pages.programDetail.title",
27
+ fallback: "Program Detail"
28
+ },
29
+ train: {
30
+ key: "mybodyshield.pages.train.title",
31
+ fallback: "Train"
32
+ },
33
+ session_detail: {
34
+ key: "mybodyshield.pages.sessionDetail.title",
35
+ fallback: "Session Detail"
36
+ },
37
+ nutrition: {
38
+ key: "mybodyshield.pages.nutrition.title",
39
+ fallback: "Nutrition"
40
+ },
41
+ goals: {
42
+ key: "mybodyshield.pages.goals.title",
43
+ fallback: "Goals"
44
+ },
45
+ progress: {
46
+ key: "mybodyshield.pages.progress.title",
47
+ fallback: "Progress"
48
+ },
49
+ recovery: {
50
+ key: "mybodyshield.pages.recovery.title",
51
+ fallback: "Recovery"
52
+ },
53
+ insights: {
54
+ key: "mybodyshield.pages.insights.title",
55
+ fallback: "Insights"
56
+ },
57
+ coaching: {
58
+ key: "mybodyshield.pages.coaching.title",
59
+ fallback: "Coaching"
60
+ },
61
+ ai_controls: {
62
+ key: "mybodyshield.pages.aiControls.title",
63
+ fallback: "AI Controls"
64
+ },
65
+ settings: {
66
+ key: "mybodyshield.pages.settings.title",
67
+ fallback: "Settings"
68
+ }
69
+ };
70
+ function O({ page: e, children: i }) {
71
+ let a = t(), { key: o, fallback: s } = D[e] ?? {
72
+ key: `mybodyshield.pages.${e}.title`,
73
+ fallback: e
74
+ };
75
+ return /* @__PURE__ */ d(n, {
17
76
  page: e,
18
- fallback: /* @__PURE__ */ u(n, { title: e.split("_").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ") }),
19
- children: r
77
+ fallback: /* @__PURE__ */ d(r, { title: a(o, s) }),
78
+ children: i
20
79
  });
21
80
  }
22
- var D = () => {
23
- let { basePath: t, isStandalone: n } = e(), a = l(), f = t === "/" ? "" : (t ?? "").replace(/\/$/, "");
24
- return f && !n && !(a.pathname === f || a.pathname.startsWith(f + "/")) ? null : /* @__PURE__ */ u("div", {
81
+ var k = () => {
82
+ let { basePath: t, isStandalone: n } = e(), r = u(), o = t === "/" ? "" : (t ?? "").replace(/\/$/, "");
83
+ return o && !n && !(r.pathname === o || r.pathname.startsWith(o + "/")) ? null : /* @__PURE__ */ d("div", {
25
84
  className: "flex min-h-full flex-col",
26
- children: /* @__PURE__ */ u(i, {
27
- fallback: /* @__PURE__ */ u(T, {}),
28
- children: /* @__PURE__ */ d(c, { children: [
29
- /* @__PURE__ */ u(s, {
85
+ children: /* @__PURE__ */ d(a, {
86
+ fallback: /* @__PURE__ */ d(E, {}),
87
+ children: /* @__PURE__ */ f(l, { children: [
88
+ /* @__PURE__ */ d(c, {
30
89
  index: !0,
31
- element: /* @__PURE__ */ u(E, {
90
+ element: /* @__PURE__ */ d(O, {
32
91
  page: "dashboard",
33
- children: /* @__PURE__ */ u(r, {})
92
+ children: /* @__PURE__ */ d(i, {})
34
93
  })
35
94
  }),
36
- /* @__PURE__ */ u(s, {
95
+ /* @__PURE__ */ d(c, {
37
96
  path: "programs",
38
- element: /* @__PURE__ */ u(E, {
97
+ element: /* @__PURE__ */ d(O, {
39
98
  page: "programs",
40
- children: /* @__PURE__ */ u(p, {})
99
+ children: /* @__PURE__ */ d(m, {})
41
100
  })
42
101
  }),
43
- /* @__PURE__ */ u(s, {
102
+ /* @__PURE__ */ d(c, {
44
103
  path: "programs/:id",
45
- element: /* @__PURE__ */ u(E, {
104
+ element: /* @__PURE__ */ d(O, {
46
105
  page: "program_detail",
47
- children: /* @__PURE__ */ u(m, {})
106
+ children: /* @__PURE__ */ d(h, {})
48
107
  })
49
108
  }),
50
- /* @__PURE__ */ u(s, {
109
+ /* @__PURE__ */ d(c, {
51
110
  path: "train",
52
- element: /* @__PURE__ */ u(E, {
111
+ element: /* @__PURE__ */ d(O, {
53
112
  page: "train",
54
- children: /* @__PURE__ */ u(h, {})
113
+ children: /* @__PURE__ */ d(g, {})
55
114
  })
56
115
  }),
57
- /* @__PURE__ */ u(s, {
116
+ /* @__PURE__ */ d(c, {
58
117
  path: "train/:id",
59
- element: /* @__PURE__ */ u(E, {
118
+ element: /* @__PURE__ */ d(O, {
60
119
  page: "session_detail",
61
- children: /* @__PURE__ */ u(g, {})
120
+ children: /* @__PURE__ */ d(_, {})
62
121
  })
63
122
  }),
64
- /* @__PURE__ */ u(s, {
123
+ /* @__PURE__ */ d(c, {
65
124
  path: "nutrition",
66
- element: /* @__PURE__ */ u(E, {
125
+ element: /* @__PURE__ */ d(O, {
67
126
  page: "nutrition",
68
- children: /* @__PURE__ */ u(_, {})
127
+ children: /* @__PURE__ */ d(v, {})
69
128
  })
70
129
  }),
71
- /* @__PURE__ */ u(s, {
130
+ /* @__PURE__ */ d(c, {
72
131
  path: "goals",
73
- element: /* @__PURE__ */ u(E, {
132
+ element: /* @__PURE__ */ d(O, {
74
133
  page: "goals",
75
- children: /* @__PURE__ */ u(v, {})
134
+ children: /* @__PURE__ */ d(y, {})
76
135
  })
77
136
  }),
78
- /* @__PURE__ */ u(s, {
137
+ /* @__PURE__ */ d(c, {
79
138
  path: "progress",
80
- element: /* @__PURE__ */ u(E, {
139
+ element: /* @__PURE__ */ d(O, {
81
140
  page: "progress",
82
- children: /* @__PURE__ */ u(y, {})
141
+ children: /* @__PURE__ */ d(b, {})
83
142
  })
84
143
  }),
85
- /* @__PURE__ */ u(s, {
144
+ /* @__PURE__ */ d(c, {
86
145
  path: "recovery",
87
- element: /* @__PURE__ */ u(E, {
146
+ element: /* @__PURE__ */ d(O, {
88
147
  page: "recovery",
89
- children: /* @__PURE__ */ u(b, {})
148
+ children: /* @__PURE__ */ d(x, {})
90
149
  })
91
150
  }),
92
- /* @__PURE__ */ u(s, {
151
+ /* @__PURE__ */ d(c, {
93
152
  path: "insights",
94
- element: /* @__PURE__ */ u(E, {
153
+ element: /* @__PURE__ */ d(O, {
95
154
  page: "insights",
96
- children: /* @__PURE__ */ u(x, {})
155
+ children: /* @__PURE__ */ d(S, {})
97
156
  })
98
157
  }),
99
- /* @__PURE__ */ u(s, {
158
+ /* @__PURE__ */ d(c, {
100
159
  path: "coaching",
101
- element: /* @__PURE__ */ u(E, {
160
+ element: /* @__PURE__ */ d(O, {
102
161
  page: "coaching",
103
- children: /* @__PURE__ */ u(S, {})
162
+ children: /* @__PURE__ */ d(C, {})
104
163
  })
105
164
  }),
106
- /* @__PURE__ */ u(s, {
165
+ /* @__PURE__ */ d(c, {
107
166
  path: "ai",
108
- element: /* @__PURE__ */ u(E, {
167
+ element: /* @__PURE__ */ d(O, {
109
168
  page: "ai_controls",
110
- children: /* @__PURE__ */ u(C, {})
169
+ children: /* @__PURE__ */ d(w, {})
111
170
  })
112
171
  }),
113
- /* @__PURE__ */ u(s, {
172
+ /* @__PURE__ */ d(c, {
114
173
  path: "settings",
115
- element: /* @__PURE__ */ u(E, {
174
+ element: /* @__PURE__ */ d(O, {
116
175
  page: "settings",
117
- children: /* @__PURE__ */ u(w, {})
176
+ children: /* @__PURE__ */ d(T, {})
118
177
  })
119
178
  }),
120
- /* @__PURE__ */ u(s, {
179
+ /* @__PURE__ */ d(c, {
121
180
  path: "*",
122
- element: /* @__PURE__ */ u(o, {
181
+ element: /* @__PURE__ */ d(s, {
123
182
  to: "",
124
183
  replace: !0
125
184
  })
@@ -129,6 +188,6 @@ var D = () => {
129
188
  });
130
189
  };
131
190
  //#endregion
132
- export { D as MyBodyShieldRoutes };
191
+ export { k as MyBodyShieldRoutes };
133
192
 
134
193
  //# 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';\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\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 title = page\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\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);\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 +1 @@
1
- {"version":3,"file":"EvidenceUpload.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/EvidenceUpload.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAElE,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,EAC7B,EAAE,EACF,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAA0C,EAC1C,QAAgB,EAChB,IAAI,GACL,EAAE,mBAAmB,+BAkFrB"}
1
+ {"version":3,"file":"EvidenceUpload.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/EvidenceUpload.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAEzE,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,EAC7B,EAAE,EACF,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAA0C,EAC1C,QAAgB,EAChB,IAAI,GACL,EAAE,mBAAmB,+BA2FrB"}