@burdenoff/microfe-mybodyshield 2026.706.2 → 2026.713.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/generated/global-operations.d.ts +2 -0
  4. package/dist/generated/global-operations.d.ts.map +1 -0
  5. package/dist/generated/global-types.d.ts +18199 -0
  6. package/dist/generated/global-types.d.ts.map +1 -0
  7. package/dist/generated/wspace-operations.d.ts +2 -0
  8. package/dist/generated/wspace-operations.d.ts.map +1 -0
  9. package/dist/generated/wspace-types.d.ts +43046 -0
  10. package/dist/generated/wspace-types.d.ts.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +2 -1
  14. package/dist/mybodyshield/MyBodyShieldRoot.d.ts +5 -0
  15. package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -0
  16. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +4 -0
  17. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -0
  18. package/dist/mybodyshield/MyBodyShieldRoutes.js +77 -36
  19. package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
  20. package/dist/mybodyshield/components/DataTable.d.ts +28 -0
  21. package/dist/mybodyshield/components/DataTable.d.ts.map +1 -0
  22. package/dist/mybodyshield/components/EmptyState.d.ts +18 -0
  23. package/dist/mybodyshield/components/EmptyState.d.ts.map +1 -0
  24. package/dist/mybodyshield/components/EvidenceUpload.d.ts +14 -0
  25. package/dist/mybodyshield/components/EvidenceUpload.d.ts.map +1 -0
  26. package/dist/mybodyshield/components/FeatureFlagGuard.d.ts +11 -0
  27. package/dist/mybodyshield/components/FeatureFlagGuard.d.ts.map +1 -0
  28. package/dist/mybodyshield/components/FeatureFlagGuard.js +27 -0
  29. package/dist/mybodyshield/components/FeatureFlagGuard.js.map +1 -0
  30. package/dist/mybodyshield/components/FileLink.d.ts +15 -0
  31. package/dist/mybodyshield/components/FileLink.d.ts.map +1 -0
  32. package/dist/mybodyshield/components/FilterTabs.d.ts +18 -0
  33. package/dist/mybodyshield/components/FilterTabs.d.ts.map +1 -0
  34. package/dist/mybodyshield/components/MetricsCard.d.ts +23 -0
  35. package/dist/mybodyshield/components/MetricsCard.d.ts.map +1 -0
  36. package/dist/mybodyshield/components/MiniBar.d.ts +16 -0
  37. package/dist/mybodyshield/components/MiniBar.d.ts.map +1 -0
  38. package/dist/mybodyshield/components/MybDiscussion.d.ts +18 -0
  39. package/dist/mybodyshield/components/MybDiscussion.d.ts.map +1 -0
  40. package/dist/mybodyshield/components/MybDiscussion.js +5 -5
  41. package/dist/mybodyshield/components/MybTags.d.ts +17 -0
  42. package/dist/mybodyshield/components/MybTags.d.ts.map +1 -0
  43. package/dist/mybodyshield/components/PageDisabled.d.ts +9 -0
  44. package/dist/mybodyshield/components/PageDisabled.d.ts.map +1 -0
  45. package/dist/mybodyshield/components/PageDisabled.js +17 -0
  46. package/dist/mybodyshield/components/PageDisabled.js.map +1 -0
  47. package/dist/mybodyshield/components/PageLayout.d.ts +16 -0
  48. package/dist/mybodyshield/components/PageLayout.d.ts.map +1 -0
  49. package/dist/mybodyshield/components/Pagination.d.ts +22 -0
  50. package/dist/mybodyshield/components/Pagination.d.ts.map +1 -0
  51. package/dist/mybodyshield/components/StateViews.d.ts +25 -0
  52. package/dist/mybodyshield/components/StateViews.d.ts.map +1 -0
  53. package/dist/mybodyshield/components/StateViews.js +2 -1
  54. package/dist/mybodyshield/components/StateViews.js.map +1 -1
  55. package/dist/mybodyshield/components/StatusBadge.d.ts +9 -0
  56. package/dist/mybodyshield/components/StatusBadge.d.ts.map +1 -0
  57. package/dist/mybodyshield/components/Tabs.d.ts +17 -0
  58. package/dist/mybodyshield/components/Tabs.d.ts.map +1 -0
  59. package/dist/mybodyshield/components/UserSearchSelect.d.ts +28 -0
  60. package/dist/mybodyshield/components/UserSearchSelect.d.ts.map +1 -0
  61. package/dist/mybodyshield/components/index.d.ts +22 -0
  62. package/dist/mybodyshield/components/index.d.ts.map +1 -0
  63. package/dist/mybodyshield/components/index.js +4 -2
  64. package/dist/mybodyshield/context/MyBodyShieldContext.d.ts +16 -0
  65. package/dist/mybodyshield/context/MyBodyShieldContext.d.ts.map +1 -0
  66. package/dist/mybodyshield/context/index.d.ts +6 -0
  67. package/dist/mybodyshield/context/index.d.ts.map +1 -0
  68. package/dist/mybodyshield/hooks/index.d.ts +12 -0
  69. package/dist/mybodyshield/hooks/index.d.ts.map +1 -0
  70. package/dist/mybodyshield/hooks/index.js +1 -0
  71. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.d.ts +21 -0
  72. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.d.ts.map +1 -0
  73. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js +35 -0
  74. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js.map +1 -0
  75. package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +83 -0
  76. package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts.map +1 -0
  77. package/dist/mybodyshield/hooks/useMybComments.d.ts +36 -0
  78. package/dist/mybodyshield/hooks/useMybComments.d.ts.map +1 -0
  79. package/dist/mybodyshield/hooks/useMybFiles.d.ts +47 -0
  80. package/dist/mybodyshield/hooks/useMybFiles.d.ts.map +1 -0
  81. package/dist/mybodyshield/hooks/useMybTags.d.ts +44 -0
  82. package/dist/mybodyshield/hooks/useMybTags.d.ts.map +1 -0
  83. package/dist/mybodyshield/hooks/useMybUsers.d.ts +27 -0
  84. package/dist/mybodyshield/hooks/useMybUsers.d.ts.map +1 -0
  85. package/dist/mybodyshield/hooks/usePager.d.ts +29 -0
  86. package/dist/mybodyshield/hooks/usePager.d.ts.map +1 -0
  87. package/dist/mybodyshield/index.d.ts +9 -0
  88. package/dist/mybodyshield/index.d.ts.map +1 -0
  89. package/dist/mybodyshield/pages/DashboardPage.d.ts +10 -0
  90. package/dist/mybodyshield/pages/DashboardPage.d.ts.map +1 -0
  91. package/dist/mybodyshield/pages/DashboardPage.js +91 -86
  92. package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
  93. package/dist/mybodyshield/pages/_shared/visuals.d.ts +77 -0
  94. package/dist/mybodyshield/pages/_shared/visuals.d.ts.map +1 -0
  95. package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts +11 -0
  96. package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts.map +1 -0
  97. package/dist/mybodyshield/pages/coaching/CoachingPage.js +60 -60
  98. package/dist/mybodyshield/pages/goals/GoalsPage.d.ts +11 -0
  99. package/dist/mybodyshield/pages/goals/GoalsPage.d.ts.map +1 -0
  100. package/dist/mybodyshield/pages/goals/GoalsPage.js +125 -125
  101. package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
  102. package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts +13 -0
  103. package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts.map +1 -0
  104. package/dist/mybodyshield/pages/nutrition/NutritionPage.js +129 -129
  105. package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
  106. package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts +10 -0
  107. package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts.map +1 -0
  108. package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +218 -191
  109. package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
  110. package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts +11 -0
  111. package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts.map +1 -0
  112. package/dist/mybodyshield/pages/programs/ProgramsPage.js +197 -193
  113. package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
  114. package/dist/mybodyshield/pages/progress/ProgressPage.d.ts +13 -0
  115. package/dist/mybodyshield/pages/progress/ProgressPage.d.ts.map +1 -0
  116. package/dist/mybodyshield/pages/progress/ProgressPage.js +143 -143
  117. package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
  118. package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts +11 -0
  119. package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts.map +1 -0
  120. package/dist/mybodyshield/pages/recovery/RecoveryPage.js +60 -60
  121. package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
  122. package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts +11 -0
  123. package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts.map +1 -0
  124. package/dist/mybodyshield/pages/train/SessionDetailPage.js +184 -181
  125. package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
  126. package/dist/mybodyshield/pages/train/SessionsPage.d.ts +11 -0
  127. package/dist/mybodyshield/pages/train/SessionsPage.d.ts.map +1 -0
  128. package/dist/mybodyshield/pages/train/SessionsPage.js +119 -115
  129. package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
  130. package/dist/mybodyshield/services/createSandboxAssistantTransport.d.ts +24 -0
  131. package/dist/mybodyshield/services/createSandboxAssistantTransport.d.ts.map +1 -0
  132. package/dist/mybodyshield/services/createSandboxAssistantTransport.js +14 -0
  133. package/dist/mybodyshield/services/createSandboxAssistantTransport.js.map +1 -0
  134. package/dist/mybodyshield/types/assistant.d.ts +55 -0
  135. package/dist/mybodyshield/types/assistant.d.ts.map +1 -0
  136. package/dist/mybodyshield/types/index.d.ts +419 -0
  137. package/dist/mybodyshield/types/index.d.ts.map +1 -0
  138. package/dist/mybodyshield/utils/cn.d.ts +4 -0
  139. package/dist/mybodyshield/utils/cn.d.ts.map +1 -0
  140. package/dist/mybodyshield/utils/formatters.d.ts +32 -0
  141. package/dist/mybodyshield/utils/formatters.d.ts.map +1 -0
  142. package/dist/mybodyshield/utils/i18n.d.ts +6 -0
  143. package/dist/mybodyshield/utils/i18n.d.ts.map +1 -0
  144. package/dist/mybodyshield/utils/index.d.ts +9 -0
  145. package/dist/mybodyshield/utils/index.d.ts.map +1 -0
  146. package/dist/mybodyshield/utils/navigation.d.ts +14 -0
  147. package/dist/mybodyshield/utils/navigation.d.ts.map +1 -0
  148. package/dist/mybodyshield/utils/pageContext.d.ts +28 -0
  149. package/dist/mybodyshield/utils/pageContext.d.ts.map +1 -0
  150. package/dist/mybodyshield/utils/pageContext.js +62 -0
  151. package/dist/mybodyshield/utils/pageContext.js.map +1 -0
  152. package/package.json +8 -2
@@ -0,0 +1,9 @@
1
+ /**
2
+ * MyBodyShield Module Exports
3
+ * @module mybodyshield
4
+ */
5
+ export { MyBodyShieldRoot } from './MyBodyShieldRoot';
6
+ export type { MyBodyShieldRootProps, NavItem, FooterItem, TrendDirection } from './types';
7
+ export { MyBodyShieldProvider, useMyBodyShield } from './context';
8
+ export { cn, joinPath, formatDate, formatDateTime, formatRelativeTime, formatNumber, formatQuantity, formatPercent, formatWeight, formatKcal, formatGrams, formatDuration, formatMinutes, formatEnumLabel, } from './utils';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mybodyshield/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG1F,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGlE,OAAO,EACL,EAAE,EACF,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Dashboard — MyBodyShield health & fitness overview.
3
+ * @module mybodyshield/pages
4
+ *
5
+ * KPIs are aggregated client-side from the real `myb*` list endpoints:
6
+ * active programs, this-week's sessions, goal progress, today's macros vs
7
+ * target, latest body weight and recovery readiness. No mock data.
8
+ */
9
+ export declare function DashboardPage(): import("react").JSX.Element;
10
+ //# sourceMappingURL=DashboardPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/pages/DashboardPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwDH,wBAAgB,aAAa,gCA2iB5B"}
@@ -1,19 +1,19 @@
1
1
  import { useMyBodyShield as e } from "../context/MyBodyShieldContext.js";
2
- import { motion as t } from "../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";
3
- import { useReducedMotion as n } from "../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js";
4
- import { PageLayout as r } from "../components/PageLayout.js";
5
- import { MetricsCard as i } from "../components/MetricsCard.js";
6
- import { formatEnumLabel as ee, formatNumber as a, formatPercent as o, formatRelativeTime as s, formatWeight as c } from "../utils/formatters.js";
7
- import { StatusBadge as l } from "../components/StatusBadge.js";
8
- import { MiniBar as u } from "../components/MiniBar.js";
9
- import { LoadingView as te, Section as d } from "../components/StateViews.js";
10
- import { EmptyState as f } from "../components/EmptyState.js";
11
- import { GOAL_TYPE_META as ne, IconChip as p, MacroBar as re, MacroLegend as ie, Meter as m, ProgressRing as ae, WORKOUT_TYPE_META as oe, computeGoalProgress as h } from "./_shared/visuals.js";
2
+ import { PageLayout as t } from "../components/PageLayout.js";
3
+ import { MetricsCard as n } from "../components/MetricsCard.js";
4
+ import { formatEnumLabel as r, formatNumber as i, formatPercent as a, formatRelativeTime as o, formatWeight as s } from "../utils/formatters.js";
5
+ import { StatusBadge as c } from "../components/StatusBadge.js";
6
+ import { EmptyState as l } from "../components/EmptyState.js";
7
+ import { LoadingView as u, Section as d } from "../components/StateViews.js";
8
+ import { MiniBar as f } from "../components/MiniBar.js";
12
9
  import "../context/index.js";
13
- import { useMybBodyMetrics as g, useMybDailyMacros as _, useMybGoals as v, useMybPrograms as y, useMybRecoveryLogs as b, useMybSessions as x } from "../hooks/useMyBodyShieldApi.js";
10
+ import { useMybBodyMetrics as p, useMybDailyMacros as ee, useMybGoals as te, useMybPrograms as ne, useMybRecoveryLogs as re, useMybSessions as ie } from "../hooks/useMyBodyShieldApi.js";
14
11
  import "../hooks/index.js";
15
- import { useMemo as S } from "react";
16
- import { ArrowRight as C, CalendarCheck as w, CheckCircle2 as se, Dumbbell as ce, Flame as T, Moon as le, Salad as ue, Target as E, Weight as de } from "lucide-react";
12
+ import { motion as m } from "../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";
13
+ import { useReducedMotion as h } from "../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js";
14
+ import { GOAL_TYPE_META as g, IconChip as _, MacroBar as ae, MacroLegend as oe, Meter as v, ProgressRing as se, WORKOUT_TYPE_META as ce, computeGoalProgress as y } from "./_shared/visuals.js";
15
+ import { useMemo as b } from "react";
16
+ import { ArrowRight as x, CalendarCheck as le, CheckCircle2 as S, Dumbbell as C, Flame as w, Moon as T, Salad as ue, Target as E, Weight as de } from "lucide-react";
17
17
  import { jsx as D, jsxs as O } from "react/jsx-runtime";
18
18
  import { GlassCard as k } from "@burdenoff/fe-libs/ui";
19
19
  //#region src/mybodyshield/pages/DashboardPage.tsx
@@ -24,7 +24,7 @@ var A = [
24
24
  1
25
25
  ];
26
26
  function j() {
27
- let { navigateTo: j, currentUser: M } = e(), N = n(), P = (e) => N ? {} : {
27
+ let { navigateTo: j, currentUser: M } = e(), N = h(), P = (e) => N ? {} : {
28
28
  initial: {
29
29
  opacity: 0,
30
30
  y: 14
@@ -57,31 +57,31 @@ function j() {
57
57
  }
58
58
  },
59
59
  whileTap: { scale: .985 }
60
- }, L = y({
60
+ }, L = ne({
61
61
  status: "ACTIVE",
62
62
  pagination: { limit: 50 }
63
- }), R = x({ pagination: { limit: 20 } }), z = v({
63
+ }), R = ie({ pagination: { limit: 20 } }), z = te({
64
64
  status: "ACTIVE",
65
65
  pagination: { limit: 50 }
66
- }), B = _(), V = g({
66
+ }), B = ee(), V = p({
67
67
  type: "WEIGHT",
68
68
  pagination: { limit: 30 }
69
- }), fe = b("READINESS"), pe = L.data?.items ?? [], H = R.data?.items ?? [], U = z.data?.items ?? [], W = V.data?.items ?? [], me = fe.data ?? [], he = (/* @__PURE__ */ new Date()).getTime() - 10080 * 60 * 1e3, G = H.filter((e) => {
69
+ }), fe = re("READINESS"), pe = L.data?.items ?? [], H = R.data?.items ?? [], U = z.data?.items ?? [], W = V.data?.items ?? [], me = fe.data ?? [], he = (/* @__PURE__ */ new Date()).getTime() - 10080 * 60 * 1e3, G = H.filter((e) => {
70
70
  let t = e.completedAt ?? e.startedAt ?? e.scheduledFor ?? e.createdAt;
71
71
  return t ? new Date(t).getTime() >= he : !1;
72
- }), ge = G.filter((e) => e.status === "COMPLETED").length, K = H.find((e) => e.status === "IN_PROGRESS"), q = H.filter((e) => e.status === "SCHEDULED" && e.scheduledFor).sort((e, t) => new Date(e.scheduledFor).getTime() - new Date(t.scheduledFor).getTime())[0], J = W[0], Y = W[1], X = J && Y ? J.value - Y.value : void 0, Z = me.slice().sort((e, t) => new Date(t.loggedAt).getTime() - new Date(e.loggedAt).getTime())[0], Q = S(() => U.length === 0 ? 0 : U.reduce((e, t) => e + h(t), 0) / U.length, [U]), $ = B.data, _e = $?.calorieTarget ? $.calories / $.calorieTarget * 100 : 0;
73
- if (L.isLoading && R.isLoading && z.isLoading && B.isLoading) return /* @__PURE__ */ D(r, {
72
+ }), ge = G.filter((e) => e.status === "COMPLETED").length, K = H.find((e) => e.status === "IN_PROGRESS"), q = H.filter((e) => e.status === "SCHEDULED" && e.scheduledFor).sort((e, t) => new Date(e.scheduledFor).getTime() - new Date(t.scheduledFor).getTime())[0], J = W[0], Y = W[1], X = J && Y ? J.value - Y.value : void 0, Z = me.slice().sort((e, t) => new Date(t.loggedAt).getTime() - new Date(e.loggedAt).getTime())[0], Q = b(() => U.length === 0 ? 0 : U.reduce((e, t) => e + y(t), 0) / U.length, [U]), $ = B.data, _e = $?.calorieTarget ? $.calories / $.calorieTarget * 100 : 0;
73
+ if (L.isLoading && R.isLoading && z.isLoading && B.isLoading) return /* @__PURE__ */ D(t, {
74
74
  title: "MyBodyShield",
75
75
  titleGradient: !0,
76
76
  aurora: !0,
77
- children: /* @__PURE__ */ D(te, { label: "Loading your fitness overview…" })
77
+ children: /* @__PURE__ */ D(u, { label: "Loading your fitness overview…" })
78
78
  });
79
79
  let ve = M?.firstName || M?.name || "there", ye = [
80
80
  {
81
81
  id: "programs",
82
- node: /* @__PURE__ */ D(i, {
83
- icon: /* @__PURE__ */ D(ce, { className: "h-5 w-5" }),
84
- value: a(pe.length),
82
+ node: /* @__PURE__ */ D(n, {
83
+ icon: /* @__PURE__ */ D(C, { className: "h-5 w-5" }),
84
+ value: i(pe.length),
85
85
  label: "Active programs",
86
86
  footer: /* @__PURE__ */ D("p", {
87
87
  className: "text-xs text-text-tertiary",
@@ -96,9 +96,9 @@ function j() {
96
96
  },
97
97
  {
98
98
  id: "sessions",
99
- node: /* @__PURE__ */ D(i, {
100
- icon: /* @__PURE__ */ D(T, { className: "h-5 w-5" }),
101
- value: a(ge),
99
+ node: /* @__PURE__ */ D(n, {
100
+ icon: /* @__PURE__ */ D(w, { className: "h-5 w-5" }),
101
+ value: i(ge),
102
102
  label: "Sessions this week",
103
103
  accent: K ? "warning" : void 0,
104
104
  footer: K ? /* @__PURE__ */ D("button", {
@@ -121,13 +121,13 @@ function j() {
121
121
  },
122
122
  {
123
123
  id: "goals",
124
- node: /* @__PURE__ */ D(i, {
124
+ node: /* @__PURE__ */ D(n, {
125
125
  icon: /* @__PURE__ */ D(E, { className: "h-5 w-5" }),
126
- value: a(U.length),
126
+ value: i(U.length),
127
127
  label: "Active goals",
128
128
  footer: /* @__PURE__ */ O("div", {
129
129
  className: "space-y-2",
130
- children: [/* @__PURE__ */ D(u, {
130
+ children: [/* @__PURE__ */ D(f, {
131
131
  value: Q,
132
132
  height: 4,
133
133
  barClassName: "bg-action-primary-bg"
@@ -136,7 +136,7 @@ function j() {
136
136
  children: [
137
137
  /* @__PURE__ */ D("span", {
138
138
  className: "tabular-nums text-text-secondary",
139
- children: o(Q)
139
+ children: a(Q)
140
140
  }),
141
141
  " ",
142
142
  "avg progress"
@@ -147,9 +147,9 @@ function j() {
147
147
  },
148
148
  {
149
149
  id: "weight",
150
- node: /* @__PURE__ */ D(i, {
150
+ node: /* @__PURE__ */ D(n, {
151
151
  icon: /* @__PURE__ */ D(de, { className: "h-5 w-5" }),
152
- value: J ? c(J.value) : "—",
152
+ value: J ? s(J.value) : "—",
153
153
  label: "Latest weight",
154
154
  footer: X == null ? /* @__PURE__ */ D("button", {
155
155
  type: "button",
@@ -175,14 +175,14 @@ function j() {
175
175
  },
176
176
  {
177
177
  id: "recovery",
178
- node: /* @__PURE__ */ D(i, {
179
- icon: /* @__PURE__ */ D(le, { className: "h-5 w-5" }),
178
+ node: /* @__PURE__ */ D(n, {
179
+ icon: /* @__PURE__ */ D(T, { className: "h-5 w-5" }),
180
180
  value: Z ? `${Z.score}` : "—",
181
181
  label: "Recovery readiness",
182
182
  accent: Z ? Z.score >= 70 ? "success" : Z.score >= 40 ? "warning" : "error" : void 0,
183
183
  footer: Z ? /* @__PURE__ */ D("p", {
184
184
  className: "text-xs text-text-tertiary",
185
- children: s(Z.loggedAt)
185
+ children: o(Z.loggedAt)
186
186
  }) : /* @__PURE__ */ D("button", {
187
187
  type: "button",
188
188
  onClick: () => j("recovery"),
@@ -192,17 +192,18 @@ function j() {
192
192
  })
193
193
  }
194
194
  ];
195
- return /* @__PURE__ */ O(r, {
195
+ return /* @__PURE__ */ O(t, {
196
196
  title: "MyBodyShield",
197
197
  titleGradient: !0,
198
198
  aurora: !0,
199
199
  description: `Welcome back, ${ve} — your training, nutrition, progress & recovery control room.`,
200
200
  children: [
201
201
  /* @__PURE__ */ D("div", {
202
+ "data-tour": "mybodyshield-dashboard-kpi-grid",
202
203
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5",
203
- children: ye.map((e, n) => /* @__PURE__ */ O(t.div, {
204
+ children: ye.map((e, t) => /* @__PURE__ */ O(m.div, {
204
205
  className: "group relative rounded-2xl transition-shadow duration-300 hover:shadow-float",
205
- ...P(n),
206
+ ...P(t),
206
207
  ...F,
207
208
  children: [/* @__PURE__ */ D("span", {
208
209
  "aria-hidden": !0,
@@ -212,7 +213,8 @@ function j() {
212
213
  }),
213
214
  /* @__PURE__ */ O("div", {
214
215
  className: "mt-6 grid grid-cols-1 gap-6 lg:grid-cols-3",
215
- children: [/* @__PURE__ */ D(t.div, {
216
+ children: [/* @__PURE__ */ D(m.div, {
217
+ "data-tour": "mybodyshield-dashboard-nutrition",
216
218
  className: "lg:col-span-2",
217
219
  ...P(0),
218
220
  children: /* @__PURE__ */ O(k, {
@@ -230,9 +232,9 @@ function j() {
230
232
  type: "button",
231
233
  onClick: () => j("nutrition"),
232
234
  className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
233
- children: ["Nutrition ", /* @__PURE__ */ D(C, { className: "h-4 w-4" })]
235
+ children: ["Nutrition ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
234
236
  })]
235
- }), !$ || $.calorieTarget === 0 && $.calories === 0 ? /* @__PURE__ */ D(f, {
237
+ }), !$ || $.calorieTarget === 0 && $.calories === 0 ? /* @__PURE__ */ D(l, {
236
238
  illustration: "empty-data",
237
239
  icon: /* @__PURE__ */ D(ue, { className: "h-10 w-10" }),
238
240
  title: "No nutrition data yet",
@@ -245,7 +247,7 @@ function j() {
245
247
  "aria-hidden": !0,
246
248
  className: "pointer-events-none absolute inset-2 rounded-full opacity-70 blur-2xl",
247
249
  style: { background: "radial-gradient(circle, color-mix(in srgb, var(--color-action-primary-bg) 26%, transparent), transparent 70%)" }
248
- }), /* @__PURE__ */ O(ae, {
250
+ }), /* @__PURE__ */ O(se, {
249
251
  value: _e,
250
252
  size: 188,
251
253
  stroke: 16,
@@ -256,13 +258,13 @@ function j() {
256
258
  }),
257
259
  /* @__PURE__ */ D("span", {
258
260
  className: "text-3xl font-bold tabular-nums text-text-primary",
259
- children: a($.calories)
261
+ children: i($.calories)
260
262
  }),
261
263
  /* @__PURE__ */ O("span", {
262
264
  className: "mt-0.5 text-xs text-text-tertiary",
263
265
  children: [
264
266
  "/ ",
265
- a($.calorieTarget),
267
+ i($.calorieTarget),
266
268
  " kcal"
267
269
  ]
268
270
  })
@@ -272,12 +274,12 @@ function j() {
272
274
  className: "flex-1 space-y-4",
273
275
  children: [/* @__PURE__ */ O("div", {
274
276
  className: "space-y-2",
275
- children: [/* @__PURE__ */ D(re, {
277
+ children: [/* @__PURE__ */ D(ae, {
276
278
  proteinG: $.proteinG,
277
279
  carbsG: $.carbsG,
278
280
  fatG: $.fatG,
279
281
  height: 12
280
- }), /* @__PURE__ */ D(ie, {})]
282
+ }), /* @__PURE__ */ D(oe, {})]
281
283
  }), /* @__PURE__ */ D("div", {
282
284
  className: "grid grid-cols-3 gap-3",
283
285
  children: [
@@ -308,22 +310,22 @@ function j() {
308
310
  children: e
309
311
  }), /* @__PURE__ */ D("span", {
310
312
  className: "text-[11px] tabular-nums text-text-tertiary",
311
- children: o(r)
313
+ children: a(r)
312
314
  })]
313
315
  }),
314
316
  /* @__PURE__ */ O("p", {
315
317
  className: "mt-1 text-sm font-semibold tabular-nums text-text-primary",
316
- children: [a(t), /* @__PURE__ */ O("span", {
318
+ children: [i(t), /* @__PURE__ */ O("span", {
317
319
  className: "text-xs font-normal text-text-tertiary",
318
320
  children: [
319
321
  " ",
320
322
  "/ ",
321
- a(n),
323
+ i(n),
322
324
  " g"
323
325
  ]
324
326
  })]
325
327
  }),
326
- /* @__PURE__ */ D(m, {
328
+ /* @__PURE__ */ D(v, {
327
329
  value: r,
328
330
  height: 5,
329
331
  className: "mt-2"
@@ -335,7 +337,8 @@ function j() {
335
337
  })]
336
338
  })]
337
339
  })
338
- }), /* @__PURE__ */ D(t.div, {
340
+ }), /* @__PURE__ */ D(m.div, {
341
+ "data-tour": "mybodyshield-dashboard-next-up",
339
342
  ...P(1),
340
343
  children: /* @__PURE__ */ O(k, {
341
344
  treatment: "glass",
@@ -349,9 +352,9 @@ function j() {
349
352
  type: "button",
350
353
  onClick: () => j("train"),
351
354
  className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
352
- children: ["Train ", /* @__PURE__ */ D(C, { className: "h-4 w-4" })]
355
+ children: ["Train ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
353
356
  })]
354
- }), K ? /* @__PURE__ */ O(t.button, {
357
+ }), K ? /* @__PURE__ */ O(m.button, {
355
358
  type: "button",
356
359
  onClick: () => j(`train/${K.id}`),
357
360
  className: "w-full rounded-2xl border border-status-warning-text/40 bg-status-warning-bg-subtle p-4 text-left transition-shadow hover:shadow-float",
@@ -359,7 +362,7 @@ function j() {
359
362
  children: [
360
363
  /* @__PURE__ */ D("div", {
361
364
  className: "flex items-center gap-2",
362
- children: /* @__PURE__ */ D(l, { status: K.status })
365
+ children: /* @__PURE__ */ D(c, { status: K.status })
363
366
  }),
364
367
  /* @__PURE__ */ D("p", {
365
368
  className: "mt-2 text-sm font-medium text-text-primary",
@@ -367,22 +370,22 @@ function j() {
367
370
  }),
368
371
  /* @__PURE__ */ O("p", {
369
372
  className: "mt-0.5 text-xs text-text-tertiary",
370
- children: ["Started ", s(K.startedAt)]
373
+ children: ["Started ", o(K.startedAt)]
371
374
  })
372
375
  ]
373
- }) : q ? /* @__PURE__ */ D(t.button, {
376
+ }) : q ? /* @__PURE__ */ D(m.button, {
374
377
  type: "button",
375
378
  onClick: () => j(`train/${q.id}`),
376
379
  className: "w-full rounded-2xl bg-bg-sunken/60 p-4 text-left ring-1 ring-inset ring-border-seam/40 transition-shadow hover:shadow-float",
377
380
  ...I,
378
381
  children: /* @__PURE__ */ O("div", {
379
382
  className: "flex items-center gap-2",
380
- children: [/* @__PURE__ */ D(p, { icon: /* @__PURE__ */ D(w, { className: "h-4 w-4" }) }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
383
+ children: [/* @__PURE__ */ D(_, { icon: /* @__PURE__ */ D(le, { className: "h-4 w-4" }) }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
381
384
  className: "text-sm font-medium text-text-primary",
382
385
  children: "Scheduled session"
383
386
  }), /* @__PURE__ */ D("p", {
384
387
  className: "text-xs text-text-tertiary",
385
- children: s(q.scheduledFor)
388
+ children: o(q.scheduledFor)
386
389
  })] })]
387
390
  })
388
391
  }) : /* @__PURE__ */ O("div", {
@@ -390,7 +393,7 @@ function j() {
390
393
  children: [
391
394
  /* @__PURE__ */ D("span", {
392
395
  className: "flex size-11 items-center justify-center rounded-full bg-[var(--color-accent-soft)]",
393
- children: /* @__PURE__ */ D(T, { className: "h-5 w-5 text-accent" })
396
+ children: /* @__PURE__ */ D(w, { className: "h-5 w-5 text-accent" })
394
397
  }),
395
398
  /* @__PURE__ */ D("p", {
396
399
  className: "mt-3 text-sm font-medium text-text-primary",
@@ -408,37 +411,38 @@ function j() {
408
411
  })]
409
412
  }),
410
413
  /* @__PURE__ */ D(d, {
414
+ "data-tour": "mybodyshield-dashboard-active-goals",
411
415
  title: "Active goals",
412
416
  description: "Your current targets across training, nutrition and body composition.",
413
417
  action: /* @__PURE__ */ O("button", {
414
418
  type: "button",
415
419
  onClick: () => j("goals"),
416
420
  className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
417
- children: ["All goals ", /* @__PURE__ */ D(C, { className: "h-4 w-4" })]
421
+ children: ["All goals ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
418
422
  }),
419
- children: U.length === 0 ? /* @__PURE__ */ D(f, {
423
+ children: U.length === 0 ? /* @__PURE__ */ D(l, {
420
424
  illustration: "empty-data",
421
425
  icon: /* @__PURE__ */ D(E, { className: "h-10 w-10" }),
422
426
  title: "No active goals",
423
427
  description: "Set a goal to give your training and nutrition a clear target to work toward."
424
428
  }) : /* @__PURE__ */ D("div", {
425
429
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
426
- children: U.slice(0, 6).map((e, n) => {
427
- let r = h(e), i = ne[e.type], s = i.icon;
428
- return /* @__PURE__ */ D(t.button, {
430
+ children: U.slice(0, 6).map((e, t) => {
431
+ let n = y(e), o = g[e.type], s = o.icon;
432
+ return /* @__PURE__ */ D(m.button, {
429
433
  type: "button",
430
434
  onClick: () => j("goals"),
431
435
  className: "text-left",
432
- ...P(n),
436
+ ...P(t),
433
437
  ...I,
434
438
  children: /* @__PURE__ */ O(k, {
435
439
  treatment: "plain",
436
440
  className: "h-full p-4 transition-shadow hover:shadow-float",
437
441
  children: [/* @__PURE__ */ O("div", {
438
442
  className: "flex items-start gap-3",
439
- children: [/* @__PURE__ */ D(p, {
443
+ children: [/* @__PURE__ */ D(_, {
440
444
  icon: /* @__PURE__ */ D(s, { className: "h-4 w-4" }),
441
- tint: i.tint
445
+ tint: o.tint
442
446
  }), /* @__PURE__ */ O("div", {
443
447
  className: "min-w-0 flex-1",
444
448
  children: [/* @__PURE__ */ D("p", {
@@ -446,25 +450,25 @@ function j() {
446
450
  children: e.title
447
451
  }), /* @__PURE__ */ D("p", {
448
452
  className: "text-xs text-text-tertiary",
449
- children: ee(e.type)
453
+ children: r(e.type)
450
454
  })]
451
455
  })]
452
456
  }), /* @__PURE__ */ O("div", {
453
457
  className: "mt-3 space-y-1.5",
454
- children: [/* @__PURE__ */ D(m, { value: r }), /* @__PURE__ */ O("div", {
458
+ children: [/* @__PURE__ */ D(v, { value: n }), /* @__PURE__ */ O("div", {
455
459
  className: "flex items-center justify-between text-xs",
456
460
  children: [/* @__PURE__ */ O("span", {
457
461
  className: "tabular-nums text-text-secondary",
458
462
  children: [
459
- a(e.currentValue),
463
+ i(e.currentValue),
460
464
  e.unit ? ` ${e.unit}` : "",
461
465
  " / ",
462
- a(e.targetValue),
466
+ i(e.targetValue),
463
467
  e.unit ? ` ${e.unit}` : ""
464
468
  ]
465
469
  }), /* @__PURE__ */ D("span", {
466
470
  className: "tabular-nums text-text-tertiary",
467
- children: o(r)
471
+ children: a(n)
468
472
  })]
469
473
  })]
470
474
  })]
@@ -474,28 +478,29 @@ function j() {
474
478
  })
475
479
  }),
476
480
  /* @__PURE__ */ D(d, {
481
+ "data-tour": "mybodyshield-dashboard-recent-sessions",
477
482
  title: "Recent sessions",
478
483
  description: "Your latest logged and scheduled workouts.",
479
484
  action: /* @__PURE__ */ O("button", {
480
485
  type: "button",
481
486
  onClick: () => j("train"),
482
487
  className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
483
- children: ["All sessions ", /* @__PURE__ */ D(C, { className: "h-4 w-4" })]
488
+ children: ["All sessions ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
484
489
  }),
485
- children: H.length === 0 ? /* @__PURE__ */ D(f, {
490
+ children: H.length === 0 ? /* @__PURE__ */ D(l, {
486
491
  illustration: "empty-data",
487
- icon: /* @__PURE__ */ D(T, { className: "h-10 w-10" }),
492
+ icon: /* @__PURE__ */ D(w, { className: "h-10 w-10" }),
488
493
  title: "No sessions yet",
489
494
  description: "Start a workout session to begin logging sets and tracking your training."
490
495
  }) : /* @__PURE__ */ D("div", {
491
496
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
492
- children: H.slice(0, 6).map((e, n) => {
493
- let r = oe.STRENGTH, i = e.status === "COMPLETED" ? se : r.icon;
494
- return /* @__PURE__ */ D(t.button, {
497
+ children: H.slice(0, 6).map((e, t) => {
498
+ let n = ce.STRENGTH, r = e.status === "COMPLETED" ? S : n.icon;
499
+ return /* @__PURE__ */ D(m.button, {
495
500
  type: "button",
496
501
  onClick: () => j(`train/${e.id}`),
497
502
  className: "text-left",
498
- ...P(n),
503
+ ...P(t),
499
504
  ...I,
500
505
  children: /* @__PURE__ */ O(k, {
501
506
  treatment: "plain",
@@ -503,18 +508,18 @@ function j() {
503
508
  children: [
504
509
  /* @__PURE__ */ O("div", {
505
510
  className: "flex items-center justify-between gap-2",
506
- children: [/* @__PURE__ */ D(p, {
507
- icon: /* @__PURE__ */ D(i, { className: "h-4 w-4" }),
508
- tint: r.tint
509
- }), /* @__PURE__ */ D(l, { status: e.status })]
511
+ children: [/* @__PURE__ */ D(_, {
512
+ icon: /* @__PURE__ */ D(r, { className: "h-4 w-4" }),
513
+ tint: n.tint
514
+ }), /* @__PURE__ */ D(c, { status: e.status })]
510
515
  }),
511
516
  /* @__PURE__ */ D("p", {
512
517
  className: "mt-3 text-sm font-medium text-text-primary",
513
- children: e.caloriesBurned > 0 ? `${a(e.caloriesBurned)} kcal burned` : "Workout session"
518
+ children: e.caloriesBurned > 0 ? `${i(e.caloriesBurned)} kcal burned` : "Workout session"
514
519
  }),
515
520
  /* @__PURE__ */ D("p", {
516
521
  className: "mt-0.5 text-xs text-text-tertiary",
517
- children: s(e.completedAt ?? e.startedAt ?? e.createdAt)
522
+ children: o(e.completedAt ?? e.startedAt ?? e.createdAt)
518
523
  })
519
524
  ]
520
525
  })