@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.
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -1
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts +5 -0
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +4 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -0
- package/dist/mybodyshield/MyBodyShieldRoutes.js +77 -36
- package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
- package/dist/mybodyshield/components/DataTable.d.ts +28 -0
- package/dist/mybodyshield/components/DataTable.d.ts.map +1 -0
- package/dist/mybodyshield/components/EmptyState.d.ts +18 -0
- package/dist/mybodyshield/components/EmptyState.d.ts.map +1 -0
- package/dist/mybodyshield/components/EvidenceUpload.d.ts +14 -0
- package/dist/mybodyshield/components/EvidenceUpload.d.ts.map +1 -0
- package/dist/mybodyshield/components/FeatureFlagGuard.d.ts +11 -0
- package/dist/mybodyshield/components/FeatureFlagGuard.d.ts.map +1 -0
- package/dist/mybodyshield/components/FeatureFlagGuard.js +27 -0
- package/dist/mybodyshield/components/FeatureFlagGuard.js.map +1 -0
- package/dist/mybodyshield/components/FileLink.d.ts +15 -0
- package/dist/mybodyshield/components/FileLink.d.ts.map +1 -0
- package/dist/mybodyshield/components/FilterTabs.d.ts +18 -0
- package/dist/mybodyshield/components/FilterTabs.d.ts.map +1 -0
- package/dist/mybodyshield/components/MetricsCard.d.ts +23 -0
- package/dist/mybodyshield/components/MetricsCard.d.ts.map +1 -0
- package/dist/mybodyshield/components/MiniBar.d.ts +16 -0
- package/dist/mybodyshield/components/MiniBar.d.ts.map +1 -0
- package/dist/mybodyshield/components/MybDiscussion.d.ts +18 -0
- package/dist/mybodyshield/components/MybDiscussion.d.ts.map +1 -0
- package/dist/mybodyshield/components/MybDiscussion.js +5 -5
- package/dist/mybodyshield/components/MybTags.d.ts +17 -0
- package/dist/mybodyshield/components/MybTags.d.ts.map +1 -0
- package/dist/mybodyshield/components/PageDisabled.d.ts +9 -0
- package/dist/mybodyshield/components/PageDisabled.d.ts.map +1 -0
- package/dist/mybodyshield/components/PageDisabled.js +17 -0
- package/dist/mybodyshield/components/PageDisabled.js.map +1 -0
- package/dist/mybodyshield/components/PageLayout.d.ts +16 -0
- package/dist/mybodyshield/components/PageLayout.d.ts.map +1 -0
- package/dist/mybodyshield/components/Pagination.d.ts +22 -0
- package/dist/mybodyshield/components/Pagination.d.ts.map +1 -0
- package/dist/mybodyshield/components/StateViews.d.ts +25 -0
- package/dist/mybodyshield/components/StateViews.d.ts.map +1 -0
- package/dist/mybodyshield/components/StateViews.js +2 -1
- package/dist/mybodyshield/components/StateViews.js.map +1 -1
- package/dist/mybodyshield/components/StatusBadge.d.ts +9 -0
- package/dist/mybodyshield/components/StatusBadge.d.ts.map +1 -0
- package/dist/mybodyshield/components/Tabs.d.ts +17 -0
- package/dist/mybodyshield/components/Tabs.d.ts.map +1 -0
- package/dist/mybodyshield/components/UserSearchSelect.d.ts +28 -0
- package/dist/mybodyshield/components/UserSearchSelect.d.ts.map +1 -0
- package/dist/mybodyshield/components/index.d.ts +22 -0
- package/dist/mybodyshield/components/index.d.ts.map +1 -0
- package/dist/mybodyshield/components/index.js +4 -2
- package/dist/mybodyshield/context/MyBodyShieldContext.d.ts +16 -0
- package/dist/mybodyshield/context/MyBodyShieldContext.d.ts.map +1 -0
- package/dist/mybodyshield/context/index.d.ts +6 -0
- package/dist/mybodyshield/context/index.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/index.d.ts +12 -0
- package/dist/mybodyshield/hooks/index.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/index.js +1 -0
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.d.ts +21 -0
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js +35 -0
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js.map +1 -0
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +83 -0
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/useMybComments.d.ts +36 -0
- package/dist/mybodyshield/hooks/useMybComments.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/useMybFiles.d.ts +47 -0
- package/dist/mybodyshield/hooks/useMybFiles.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/useMybTags.d.ts +44 -0
- package/dist/mybodyshield/hooks/useMybTags.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/useMybUsers.d.ts +27 -0
- package/dist/mybodyshield/hooks/useMybUsers.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/usePager.d.ts +29 -0
- package/dist/mybodyshield/hooks/usePager.d.ts.map +1 -0
- package/dist/mybodyshield/index.d.ts +9 -0
- package/dist/mybodyshield/index.d.ts.map +1 -0
- package/dist/mybodyshield/pages/DashboardPage.d.ts +10 -0
- package/dist/mybodyshield/pages/DashboardPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/DashboardPage.js +91 -86
- package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
- package/dist/mybodyshield/pages/_shared/visuals.d.ts +77 -0
- package/dist/mybodyshield/pages/_shared/visuals.d.ts.map +1 -0
- package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts +11 -0
- package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/coaching/CoachingPage.js +60 -60
- package/dist/mybodyshield/pages/goals/GoalsPage.d.ts +11 -0
- package/dist/mybodyshield/pages/goals/GoalsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/goals/GoalsPage.js +125 -125
- package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts +13 -0
- package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js +129 -129
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts +10 -0
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +218 -191
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts +11 -0
- package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/programs/ProgramsPage.js +197 -193
- package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.d.ts +13 -0
- package/dist/mybodyshield/pages/progress/ProgressPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/progress/ProgressPage.js +143 -143
- package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts +11 -0
- package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js +60 -60
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts +11 -0
- package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/train/SessionDetailPage.js +184 -181
- package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.d.ts +11 -0
- package/dist/mybodyshield/pages/train/SessionsPage.d.ts.map +1 -0
- package/dist/mybodyshield/pages/train/SessionsPage.js +119 -115
- package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
- package/dist/mybodyshield/services/createSandboxAssistantTransport.d.ts +24 -0
- package/dist/mybodyshield/services/createSandboxAssistantTransport.d.ts.map +1 -0
- package/dist/mybodyshield/services/createSandboxAssistantTransport.js +14 -0
- package/dist/mybodyshield/services/createSandboxAssistantTransport.js.map +1 -0
- package/dist/mybodyshield/types/assistant.d.ts +55 -0
- package/dist/mybodyshield/types/assistant.d.ts.map +1 -0
- package/dist/mybodyshield/types/index.d.ts +419 -0
- package/dist/mybodyshield/types/index.d.ts.map +1 -0
- package/dist/mybodyshield/utils/cn.d.ts +4 -0
- package/dist/mybodyshield/utils/cn.d.ts.map +1 -0
- package/dist/mybodyshield/utils/formatters.d.ts +32 -0
- package/dist/mybodyshield/utils/formatters.d.ts.map +1 -0
- package/dist/mybodyshield/utils/i18n.d.ts +6 -0
- package/dist/mybodyshield/utils/i18n.d.ts.map +1 -0
- package/dist/mybodyshield/utils/index.d.ts +9 -0
- package/dist/mybodyshield/utils/index.d.ts.map +1 -0
- package/dist/mybodyshield/utils/navigation.d.ts +14 -0
- package/dist/mybodyshield/utils/navigation.d.ts.map +1 -0
- package/dist/mybodyshield/utils/pageContext.d.ts +28 -0
- package/dist/mybodyshield/utils/pageContext.d.ts.map +1 -0
- package/dist/mybodyshield/utils/pageContext.js +62 -0
- package/dist/mybodyshield/utils/pageContext.js.map +1 -0
- 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 {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { MiniBar as
|
|
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
|
|
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 {
|
|
16
|
-
import {
|
|
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 =
|
|
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 =
|
|
60
|
+
}, L = ne({
|
|
61
61
|
status: "ACTIVE",
|
|
62
62
|
pagination: { limit: 50 }
|
|
63
|
-
}), R =
|
|
63
|
+
}), R = ie({ pagination: { limit: 20 } }), z = te({
|
|
64
64
|
status: "ACTIVE",
|
|
65
65
|
pagination: { limit: 50 }
|
|
66
|
-
}), B =
|
|
66
|
+
}), B = ee(), V = p({
|
|
67
67
|
type: "WEIGHT",
|
|
68
68
|
pagination: { limit: 30 }
|
|
69
|
-
}), fe =
|
|
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 =
|
|
73
|
-
if (L.isLoading && R.isLoading && z.isLoading && B.isLoading) return /* @__PURE__ */ D(
|
|
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(
|
|
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(
|
|
83
|
-
icon: /* @__PURE__ */ D(
|
|
84
|
-
value:
|
|
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(
|
|
100
|
-
icon: /* @__PURE__ */ D(
|
|
101
|
-
value:
|
|
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(
|
|
124
|
+
node: /* @__PURE__ */ D(n, {
|
|
125
125
|
icon: /* @__PURE__ */ D(E, { className: "h-5 w-5" }),
|
|
126
|
-
value:
|
|
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(
|
|
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:
|
|
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(
|
|
150
|
+
node: /* @__PURE__ */ D(n, {
|
|
151
151
|
icon: /* @__PURE__ */ D(de, { className: "h-5 w-5" }),
|
|
152
|
-
value: J ?
|
|
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(
|
|
179
|
-
icon: /* @__PURE__ */ D(
|
|
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:
|
|
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(
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
235
|
+
children: ["Nutrition ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
|
|
234
236
|
})]
|
|
235
|
-
}), !$ || $.calorieTarget === 0 && $.calories === 0 ? /* @__PURE__ */ D(
|
|
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(
|
|
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:
|
|
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
|
-
|
|
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(
|
|
277
|
+
children: [/* @__PURE__ */ D(ae, {
|
|
276
278
|
proteinG: $.proteinG,
|
|
277
279
|
carbsG: $.carbsG,
|
|
278
280
|
fatG: $.fatG,
|
|
279
281
|
height: 12
|
|
280
|
-
}), /* @__PURE__ */ D(
|
|
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:
|
|
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: [
|
|
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
|
-
|
|
323
|
+
i(n),
|
|
322
324
|
" g"
|
|
323
325
|
]
|
|
324
326
|
})]
|
|
325
327
|
}),
|
|
326
|
-
/* @__PURE__ */ D(
|
|
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(
|
|
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(
|
|
355
|
+
children: ["Train ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
|
|
353
356
|
})]
|
|
354
|
-
}), K ? /* @__PURE__ */ O(
|
|
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(
|
|
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 ",
|
|
373
|
+
children: ["Started ", o(K.startedAt)]
|
|
371
374
|
})
|
|
372
375
|
]
|
|
373
|
-
}) : q ? /* @__PURE__ */ D(
|
|
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(
|
|
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:
|
|
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(
|
|
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(
|
|
421
|
+
children: ["All goals ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
|
|
418
422
|
}),
|
|
419
|
-
children: U.length === 0 ? /* @__PURE__ */ D(
|
|
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,
|
|
427
|
-
let
|
|
428
|
-
return /* @__PURE__ */ D(
|
|
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(
|
|
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(
|
|
443
|
+
children: [/* @__PURE__ */ D(_, {
|
|
440
444
|
icon: /* @__PURE__ */ D(s, { className: "h-4 w-4" }),
|
|
441
|
-
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:
|
|
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(
|
|
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
|
-
|
|
463
|
+
i(e.currentValue),
|
|
460
464
|
e.unit ? ` ${e.unit}` : "",
|
|
461
465
|
" / ",
|
|
462
|
-
|
|
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:
|
|
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(
|
|
488
|
+
children: ["All sessions ", /* @__PURE__ */ D(x, { className: "h-4 w-4" })]
|
|
484
489
|
}),
|
|
485
|
-
children: H.length === 0 ? /* @__PURE__ */ D(
|
|
490
|
+
children: H.length === 0 ? /* @__PURE__ */ D(l, {
|
|
486
491
|
illustration: "empty-data",
|
|
487
|
-
icon: /* @__PURE__ */ D(
|
|
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,
|
|
493
|
-
let
|
|
494
|
-
return /* @__PURE__ */ D(
|
|
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(
|
|
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(
|
|
507
|
-
icon: /* @__PURE__ */ D(
|
|
508
|
-
tint:
|
|
509
|
-
}), /* @__PURE__ */ D(
|
|
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 ? `${
|
|
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:
|
|
522
|
+
children: o(e.completedAt ?? e.startedAt ?? e.createdAt)
|
|
518
523
|
})
|
|
519
524
|
]
|
|
520
525
|
})
|