@burdenoff/microfe-mybodyshield 2026.820.1 → 2026.821.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.
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoot.js +68 -44
- package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.js +37 -16
- package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +11 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts.map +1 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.js +113 -46
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.js.map +1 -1
- package/dist/mybodyshield/pages/SettingsPage.d.ts +10 -0
- package/dist/mybodyshield/pages/SettingsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/SettingsPage.js +104 -0
- package/dist/mybodyshield/pages/SettingsPage.js.map +1 -0
- package/dist/mybodyshield/pages/ai/AiControlsPage.d.ts +10 -0
- package/dist/mybodyshield/pages/ai/AiControlsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/ai/AiControlsPage.js +378 -0
- package/dist/mybodyshield/pages/ai/AiControlsPage.js.map +1 -0
- package/dist/mybodyshield/pages/insights/InsightsCharts.d.ts +18 -0
- package/dist/mybodyshield/pages/insights/InsightsCharts.d.ts.map +1 -0
- package/dist/mybodyshield/pages/insights/InsightsCharts.js +549 -0
- package/dist/mybodyshield/pages/insights/InsightsCharts.js.map +1 -0
- package/dist/mybodyshield/pages/insights/InsightsPage.d.ts +12 -0
- package/dist/mybodyshield/pages/insights/InsightsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/insights/InsightsPage.js +317 -0
- package/dist/mybodyshield/pages/insights/InsightsPage.js.map +1 -0
- package/dist/mybodyshield/types/index.d.ts +75 -0
- package/dist/mybodyshield/types/index.d.ts.map +1 -1
- package/dist/mybodyshield/utils/pageContext.d.ts.map +1 -1
- package/dist/mybodyshield/utils/pageContext.js +4 -1
- package/dist/mybodyshield/utils/pageContext.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Line.js +473 -0
- package/dist/node_modules/recharts/es6/cartesian/Line.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/Scatter.js +368 -0
- package/dist/node_modules/recharts/es6/cartesian/Scatter.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/ZAxis.js +103 -0
- package/dist/node_modules/recharts/es6/cartesian/ZAxis.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/BarChart.js +24 -0
- package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/ComposedChart.js +38 -0
- package/dist/node_modules/recharts/es6/chart/ComposedChart.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/DataUtils.js +12 -2
- package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ScatterUtils.js +48 -0
- package/dist/node_modules/recharts/es6/util/ScatterUtils.js.map +1 -0
- package/dist/stories/InsightsCharts.stories.d.ts +15 -0
- package/dist/stories/InsightsCharts.stories.d.ts.map +1 -0
- 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;
|
|
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"}
|
|
@@ -5,111 +5,135 @@ import { useCallback as r, useEffect as i } from "react";
|
|
|
5
5
|
import { QueryClient as a, QueryClientProvider as o } from "@tanstack/react-query";
|
|
6
6
|
import { FeatureFlagProvider as s } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
7
7
|
import { useI18n as c } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
-
import {
|
|
9
|
-
import { jsx as
|
|
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";
|
|
10
10
|
//#region src/mybodyshield/MyBodyShieldRoot.tsx
|
|
11
|
-
var
|
|
11
|
+
var x = new a({ defaultOptions: { queries: {
|
|
12
12
|
staleTime: 300 * 1e3,
|
|
13
13
|
retry: 1,
|
|
14
14
|
refetchOnWindowFocus: !1
|
|
15
|
-
} } }),
|
|
16
|
-
let { registerNavItems:
|
|
17
|
-
let n =
|
|
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
18
|
return n === e ? t : n;
|
|
19
|
-
}, [
|
|
19
|
+
}, [T]);
|
|
20
20
|
return i(() => {
|
|
21
|
-
if (
|
|
21
|
+
if (S) return S([
|
|
22
22
|
{
|
|
23
23
|
id: "mybodyshield-dashboard",
|
|
24
|
-
label:
|
|
25
|
-
path: e(
|
|
26
|
-
icon: /* @__PURE__ */
|
|
24
|
+
label: E("mybodyshield.nav.dashboard", "Dashboard"),
|
|
25
|
+
path: e(w, ""),
|
|
26
|
+
icon: /* @__PURE__ */ b(f, { size: 20 }),
|
|
27
27
|
order: 0,
|
|
28
28
|
group: "products"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
id: "mybodyshield-programs",
|
|
32
|
-
label:
|
|
33
|
-
path: e(
|
|
34
|
-
icon: /* @__PURE__ */
|
|
32
|
+
label: E("mybodyshield.nav.programs", "Programs"),
|
|
33
|
+
path: e(w, "programs"),
|
|
34
|
+
icon: /* @__PURE__ */ b(u, { size: 20 }),
|
|
35
35
|
order: 1,
|
|
36
36
|
group: "products"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
id: "mybodyshield-train",
|
|
40
|
-
label:
|
|
41
|
-
path: e(
|
|
42
|
-
icon: /* @__PURE__ */
|
|
40
|
+
label: E("mybodyshield.nav.train", "Train"),
|
|
41
|
+
path: e(w, "train"),
|
|
42
|
+
icon: /* @__PURE__ */ b(d, { size: 20 }),
|
|
43
43
|
order: 2,
|
|
44
44
|
group: "products"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
id: "mybodyshield-nutrition",
|
|
48
|
-
label:
|
|
49
|
-
path: e(
|
|
50
|
-
icon: /* @__PURE__ */
|
|
48
|
+
label: E("mybodyshield.nav.nutrition", "Nutrition"),
|
|
49
|
+
path: e(w, "nutrition"),
|
|
50
|
+
icon: /* @__PURE__ */ b(m, { size: 20 }),
|
|
51
51
|
order: 3,
|
|
52
52
|
group: "products"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
id: "mybodyshield-goals",
|
|
56
|
-
label:
|
|
57
|
-
path: e(
|
|
58
|
-
icon: /* @__PURE__ */ _
|
|
56
|
+
label: E("mybodyshield.nav.goals", "Goals"),
|
|
57
|
+
path: e(w, "goals"),
|
|
58
|
+
icon: /* @__PURE__ */ b(_, { size: 20 }),
|
|
59
59
|
order: 4,
|
|
60
60
|
group: "products"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
id: "mybodyshield-progress",
|
|
64
|
-
label:
|
|
65
|
-
path: e(
|
|
66
|
-
icon: /* @__PURE__ */
|
|
64
|
+
label: E("mybodyshield.nav.progress", "Progress"),
|
|
65
|
+
path: e(w, "progress"),
|
|
66
|
+
icon: /* @__PURE__ */ b(v, { size: 20 }),
|
|
67
67
|
order: 5,
|
|
68
68
|
group: "products"
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
id: "mybodyshield-recovery",
|
|
72
|
-
label:
|
|
73
|
-
path: e(
|
|
74
|
-
icon: /* @__PURE__ */
|
|
72
|
+
label: E("mybodyshield.nav.recovery", "Recovery"),
|
|
73
|
+
path: e(w, "recovery"),
|
|
74
|
+
icon: /* @__PURE__ */ b(p, { size: 20 }),
|
|
75
75
|
order: 6,
|
|
76
76
|
group: "products"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
|
-
id: "mybodyshield-
|
|
80
|
-
label:
|
|
81
|
-
path: e(
|
|
82
|
-
icon: /* @__PURE__ */
|
|
79
|
+
id: "mybodyshield-insights",
|
|
80
|
+
label: E("mybodyshield.nav.insights", "Insights"),
|
|
81
|
+
path: e(w, "insights"),
|
|
82
|
+
icon: /* @__PURE__ */ b(l, { size: 20 }),
|
|
83
83
|
order: 7,
|
|
84
84
|
group: "products"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: "mybodyshield-ai",
|
|
88
|
+
label: E("mybodyshield.nav.ai", "AI"),
|
|
89
|
+
path: e(w, "ai"),
|
|
90
|
+
icon: /* @__PURE__ */ b(g, { size: 20 }),
|
|
91
|
+
order: 8,
|
|
92
|
+
group: "products"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "mybodyshield-coaching",
|
|
96
|
+
label: E("mybodyshield.nav.coaching", "Coaching"),
|
|
97
|
+
path: e(w, "coaching"),
|
|
98
|
+
icon: /* @__PURE__ */ b(y, { size: 20 }),
|
|
99
|
+
order: 9,
|
|
100
|
+
group: "products"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: "mybodyshield-settings",
|
|
104
|
+
label: E("mybodyshield.nav.settings", "Settings"),
|
|
105
|
+
path: e(w, "settings"),
|
|
106
|
+
icon: /* @__PURE__ */ b(h, { size: 20 }),
|
|
107
|
+
order: 10,
|
|
108
|
+
group: "products"
|
|
85
109
|
}
|
|
86
110
|
]);
|
|
87
111
|
}, [
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
112
|
+
S,
|
|
113
|
+
w,
|
|
114
|
+
E
|
|
91
115
|
]), i(() => {
|
|
92
|
-
if (
|
|
116
|
+
if (C) return C([{
|
|
93
117
|
id: "mybodyshield-status",
|
|
94
|
-
label:
|
|
118
|
+
label: E("mybodyshield.footer.ready", "MyBodyShield Ready"),
|
|
95
119
|
type: "status",
|
|
96
120
|
section: "left",
|
|
97
121
|
order: 10
|
|
98
122
|
}]);
|
|
99
|
-
}, [
|
|
100
|
-
client:
|
|
101
|
-
children: /* @__PURE__ */
|
|
123
|
+
}, [C, E]), /* @__PURE__ */ b(o, {
|
|
124
|
+
client: x,
|
|
125
|
+
children: /* @__PURE__ */ b(s, {
|
|
102
126
|
workspaceId: null,
|
|
103
127
|
gateway: "global",
|
|
104
128
|
defaultEnabled: !0,
|
|
105
|
-
children: /* @__PURE__ */
|
|
129
|
+
children: /* @__PURE__ */ b(t, {
|
|
106
130
|
...a,
|
|
107
|
-
children: /* @__PURE__ */
|
|
131
|
+
children: /* @__PURE__ */ b(n, {})
|
|
108
132
|
})
|
|
109
133
|
})
|
|
110
134
|
});
|
|
111
135
|
};
|
|
112
136
|
//#endregion
|
|
113
|
-
export {
|
|
137
|
+
export { S as MyBodyShieldRoot };
|
|
114
138
|
|
|
115
139
|
//# 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} 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-coaching',\n label: t('mybodyshield.nav.coaching', 'Coaching'),\n path: joinPath(basePath, 'coaching'),\n icon: <Users size={20} />,\n order:
|
|
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 +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;
|
|
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"}
|
|
@@ -8,92 +8,113 @@ import { Navigate as o, Route as s, Routes as c, useLocation as l } from "react-
|
|
|
8
8
|
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
9
|
import { Spinner as f } from "@burdenoff/fe-libs/ui";
|
|
10
10
|
//#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/coaching/CoachingPage.js").then((e) => ({ default: e.CoachingPage }))),
|
|
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", {
|
|
12
12
|
className: "flex min-h-[400px] items-center justify-center",
|
|
13
13
|
children: /* @__PURE__ */ u(f, { size: "lg" })
|
|
14
14
|
});
|
|
15
|
-
function
|
|
15
|
+
function E({ page: e, children: r }) {
|
|
16
16
|
return /* @__PURE__ */ u(t, {
|
|
17
17
|
page: e,
|
|
18
18
|
fallback: /* @__PURE__ */ u(n, { title: e.split("_").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ") }),
|
|
19
19
|
children: r
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
var
|
|
22
|
+
var D = () => {
|
|
23
23
|
let { basePath: t, isStandalone: n } = e(), a = l(), f = t === "/" ? "" : (t ?? "").replace(/\/$/, "");
|
|
24
24
|
return f && !n && !(a.pathname === f || a.pathname.startsWith(f + "/")) ? null : /* @__PURE__ */ u("div", {
|
|
25
25
|
className: "flex min-h-full flex-col",
|
|
26
26
|
children: /* @__PURE__ */ u(i, {
|
|
27
|
-
fallback: /* @__PURE__ */ u(
|
|
27
|
+
fallback: /* @__PURE__ */ u(T, {}),
|
|
28
28
|
children: /* @__PURE__ */ d(c, { children: [
|
|
29
29
|
/* @__PURE__ */ u(s, {
|
|
30
30
|
index: !0,
|
|
31
|
-
element: /* @__PURE__ */ u(
|
|
31
|
+
element: /* @__PURE__ */ u(E, {
|
|
32
32
|
page: "dashboard",
|
|
33
33
|
children: /* @__PURE__ */ u(r, {})
|
|
34
34
|
})
|
|
35
35
|
}),
|
|
36
36
|
/* @__PURE__ */ u(s, {
|
|
37
37
|
path: "programs",
|
|
38
|
-
element: /* @__PURE__ */ u(
|
|
38
|
+
element: /* @__PURE__ */ u(E, {
|
|
39
39
|
page: "programs",
|
|
40
40
|
children: /* @__PURE__ */ u(p, {})
|
|
41
41
|
})
|
|
42
42
|
}),
|
|
43
43
|
/* @__PURE__ */ u(s, {
|
|
44
44
|
path: "programs/:id",
|
|
45
|
-
element: /* @__PURE__ */ u(
|
|
45
|
+
element: /* @__PURE__ */ u(E, {
|
|
46
46
|
page: "program_detail",
|
|
47
47
|
children: /* @__PURE__ */ u(m, {})
|
|
48
48
|
})
|
|
49
49
|
}),
|
|
50
50
|
/* @__PURE__ */ u(s, {
|
|
51
51
|
path: "train",
|
|
52
|
-
element: /* @__PURE__ */ u(
|
|
52
|
+
element: /* @__PURE__ */ u(E, {
|
|
53
53
|
page: "train",
|
|
54
54
|
children: /* @__PURE__ */ u(h, {})
|
|
55
55
|
})
|
|
56
56
|
}),
|
|
57
57
|
/* @__PURE__ */ u(s, {
|
|
58
58
|
path: "train/:id",
|
|
59
|
-
element: /* @__PURE__ */ u(
|
|
59
|
+
element: /* @__PURE__ */ u(E, {
|
|
60
60
|
page: "session_detail",
|
|
61
61
|
children: /* @__PURE__ */ u(g, {})
|
|
62
62
|
})
|
|
63
63
|
}),
|
|
64
64
|
/* @__PURE__ */ u(s, {
|
|
65
65
|
path: "nutrition",
|
|
66
|
-
element: /* @__PURE__ */ u(
|
|
66
|
+
element: /* @__PURE__ */ u(E, {
|
|
67
67
|
page: "nutrition",
|
|
68
68
|
children: /* @__PURE__ */ u(_, {})
|
|
69
69
|
})
|
|
70
70
|
}),
|
|
71
71
|
/* @__PURE__ */ u(s, {
|
|
72
72
|
path: "goals",
|
|
73
|
-
element: /* @__PURE__ */ u(
|
|
73
|
+
element: /* @__PURE__ */ u(E, {
|
|
74
74
|
page: "goals",
|
|
75
75
|
children: /* @__PURE__ */ u(v, {})
|
|
76
76
|
})
|
|
77
77
|
}),
|
|
78
78
|
/* @__PURE__ */ u(s, {
|
|
79
79
|
path: "progress",
|
|
80
|
-
element: /* @__PURE__ */ u(
|
|
80
|
+
element: /* @__PURE__ */ u(E, {
|
|
81
81
|
page: "progress",
|
|
82
82
|
children: /* @__PURE__ */ u(y, {})
|
|
83
83
|
})
|
|
84
84
|
}),
|
|
85
85
|
/* @__PURE__ */ u(s, {
|
|
86
86
|
path: "recovery",
|
|
87
|
-
element: /* @__PURE__ */ u(
|
|
87
|
+
element: /* @__PURE__ */ u(E, {
|
|
88
88
|
page: "recovery",
|
|
89
89
|
children: /* @__PURE__ */ u(b, {})
|
|
90
90
|
})
|
|
91
91
|
}),
|
|
92
|
+
/* @__PURE__ */ u(s, {
|
|
93
|
+
path: "insights",
|
|
94
|
+
element: /* @__PURE__ */ u(E, {
|
|
95
|
+
page: "insights",
|
|
96
|
+
children: /* @__PURE__ */ u(x, {})
|
|
97
|
+
})
|
|
98
|
+
}),
|
|
92
99
|
/* @__PURE__ */ u(s, {
|
|
93
100
|
path: "coaching",
|
|
94
|
-
element: /* @__PURE__ */ u(
|
|
101
|
+
element: /* @__PURE__ */ u(E, {
|
|
95
102
|
page: "coaching",
|
|
96
|
-
children: /* @__PURE__ */ u(
|
|
103
|
+
children: /* @__PURE__ */ u(S, {})
|
|
104
|
+
})
|
|
105
|
+
}),
|
|
106
|
+
/* @__PURE__ */ u(s, {
|
|
107
|
+
path: "ai",
|
|
108
|
+
element: /* @__PURE__ */ u(E, {
|
|
109
|
+
page: "ai_controls",
|
|
110
|
+
children: /* @__PURE__ */ u(C, {})
|
|
111
|
+
})
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ u(s, {
|
|
114
|
+
path: "settings",
|
|
115
|
+
element: /* @__PURE__ */ u(E, {
|
|
116
|
+
page: "settings",
|
|
117
|
+
children: /* @__PURE__ */ u(w, {})
|
|
97
118
|
})
|
|
98
119
|
}),
|
|
99
120
|
/* @__PURE__ */ u(s, {
|
|
@@ -108,6 +129,6 @@ var w = () => {
|
|
|
108
129
|
});
|
|
109
130
|
};
|
|
110
131
|
//#endregion
|
|
111
|
-
export {
|
|
132
|
+
export { D as MyBodyShieldRoutes };
|
|
112
133
|
|
|
113
134
|
//# 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// Coaching (Wellbeing)\nconst CoachingPage = lazy(() =>\n import('./pages/coaching/CoachingPage').then((m) => ({ default: m.CoachingPage }))\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=\"coaching\"\n element={\n <PageGate page=\"coaching\">\n <CoachingPage />\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';\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,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 } 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 } from '../types';
|
|
2
2
|
|
|
3
3
|
export interface ProgramFilters {
|
|
4
4
|
status?: MybProgramStatus;
|
|
@@ -154,6 +154,16 @@ export declare const useMybSyncDeviceReadings: () => import('@tanstack/react-que
|
|
|
154
154
|
readings: MybSyncReadingInput[];
|
|
155
155
|
}, unknown>;
|
|
156
156
|
export declare const useMybTodayGuidance: (memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybTodayGuidance>, Error>;
|
|
157
|
+
export interface InsightsRange {
|
|
158
|
+
dateRangeStart?: string;
|
|
159
|
+
dateRangeEnd?: string;
|
|
160
|
+
}
|
|
161
|
+
export declare const useMybInsights: (range?: InsightsRange) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybInsights>, Error>;
|
|
162
|
+
export declare const useMybAiSettings: () => import('@tanstack/react-query').UseQueryResult<NoInfer<MybAiSettings>, Error>;
|
|
163
|
+
export declare const useMybUpdateAiSettings: () => import('@tanstack/react-query').UseMutationResult<MybAiSettings, Error, MybUpdateAiSettingsInput, unknown>;
|
|
164
|
+
export declare const useMybAiOperationLogs: (pagination?: PaginationInput) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybAiOperationLogConnection>, Error>;
|
|
165
|
+
export declare const useMybAiProcessingConsent: () => import('@tanstack/react-query').UseQueryResult<NoInfer<MybAiProcessingConsent>, Error>;
|
|
166
|
+
export declare const useMybSetAiProcessingConsent: () => import('@tanstack/react-query').UseMutationResult<MybAiProcessingConsent, Error, boolean, unknown>;
|
|
157
167
|
export declare const useMybSearchFoods: (query: string, limit?: number) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybFood[]>, Error>;
|
|
158
168
|
export declare const useMybFoodByBarcode: () => import('@tanstack/react-query').UseMutationResult<MybFood | null, Error, string, unknown>;
|
|
159
169
|
//# sourceMappingURL=useMyBodyShieldApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMyBodyShieldApi.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMyBodyShieldApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,OAAO,
|
|
1
|
+
{"version":3,"file":"useMyBodyShieldApi.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMyBodyShieldApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AA+LlB,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,eAAO,MAAM,cAAc,GAAI,UAAS,cAAmB,8FAsB1D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;iBAgCnD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,GAAG,SAAS,iFAuBlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,MAAM,GAAG,SAAS,kFAkBnE,CAAC;AAEF,eAAO,MAAM,mBAAmB,4GAgB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB;QAIG,MAAM;WAAS,qBAAqB;WAetE,CAAC;AAEF,eAAO,MAAM,uBAAuB;QAID,MAAM;YAAU,gBAAgB;WAelE,CAAC;AAEF,eAAO,MAAM,oBAAoB,0FAchC,CAAC;AAEF,eAAO,MAAM,gBAAgB,4GAmB5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;QAK8B,MAAM;eAAa,MAAM;0CAgBpF,CAAC;AAMF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,eAAO,MAAM,cAAc,GAAI,UAAS,cAAmB,qGAsB1D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;iBAuBnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,cAAc,MAAM,yFAoBzD,CAAC;AAEF,eAAO,MAAM,kBAAkB,kHAgB9B,CAAC;AAEF,eAAO,MAAM,YAAY,wGAuBxB,CAAC;AAEF,eAAO,MAAM,qBAAqB;QAIC,MAAM;WAAS,uBAAuB;WAexE,CAAC;AAMF,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,GAAI,UAAS,WAAgB,2FAsBpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,sGAgB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;QAIM,MAAM;WAAS,kBAAkB;WAYnE,CAAC;AAEF,eAAO,MAAM,iBAAiB,0FAgB7B,CAAC;AAMF,eAAO,MAAM,yBAAyB,GAAI,WAAW,MAAM,4FAe1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,IAAI,MAAM,GAAG,SAAS,4FAmBzD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,GAAI,UAAS,WAAgB,8FAsBpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,WAAW,MAAM,mFAejE,CAAC;AAEF,eAAO,MAAM,yBAAyB,wHAkBrC,CAAC;AAEF,eAAO,MAAM,yBAAyB;QAIH,MAAM;WAAS,2BAA2B;WAe5E,CAAC;AAEF,eAAO,MAAM,2BAA2B,mGAmBvC,CAAC;AAEF,eAAO,MAAM,aAAa,sGAoBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,0FAiB5B,CAAC;AAMF,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAS,iBAAsB,iGAsBhE,CAAC;AAEF,eAAO,MAAM,sBAAsB,8GAgBlC,CAAC;AAMF,eAAO,MAAM,kBAAkB,GAAI,SAAS,iBAAiB,EAAE,WAAW,MAAM,kGAkB/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,8GAgB7B,CAAC;AAMF,eAAO,MAAM,cAAc,GAAI,SAAS,iBAAiB,EAAE,WAAW,MAAM,2GAkB3E,CAAC;AAEF,eAAO,MAAM,oBAAoB,0HAgBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB;QAIF,MAAM;YAAU,iBAAiB;WAYnE,CAAC;AAMF,eAAO,MAAM,uBAAuB,GAAI,WAAW,MAAM,0FAexD,CAAC;AAEF,eAAO,MAAM,mBAAmB;cAKhB,iBAAiB;wBACP,MAAM;aACjB,MAAM,EAAE;WAatB,CAAC;AAEF,eAAO,MAAM,sBAAsB,0FAclC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;kBAIQ,MAAM;cAAY,mBAAmB,EAAE;WAgBnF,CAAC;AAMF,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,qFAkBpD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,GAAI,QAAO,aAAkB,gFAgBvD,CAAC;AAMF,eAAO,MAAM,gBAAgB,qFAa5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,kHAkBlC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,eAAe,gGAkBjE,CAAC;AAMF,eAAO,MAAM,yBAAyB,8FAarC,CAAC;AAEF,eAAO,MAAM,4BAA4B,0GAkBxC,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,cAAU,8EAkB1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,iGAc/B,CAAC"}
|