@burdenoff/microfe-mybodyshield 2026.821.2 → 2026.830.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/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoot.js +54 -56
- package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.js +121 -62
- package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
- package/dist/mybodyshield/components/EvidenceUpload.d.ts.map +1 -1
- package/dist/mybodyshield/components/EvidenceUpload.js +46 -45
- package/dist/mybodyshield/components/EvidenceUpload.js.map +1 -1
- package/dist/mybodyshield/components/FileLink.d.ts.map +1 -1
- package/dist/mybodyshield/components/FileLink.js +27 -18
- package/dist/mybodyshield/components/FileLink.js.map +1 -1
- package/dist/mybodyshield/components/MybDiscussion.d.ts +1 -1
- package/dist/mybodyshield/components/MybDiscussion.d.ts.map +1 -1
- package/dist/mybodyshield/components/MybDiscussion.js +59 -58
- package/dist/mybodyshield/components/MybDiscussion.js.map +1 -1
- package/dist/mybodyshield/components/MybTags.d.ts +1 -1
- package/dist/mybodyshield/components/MybTags.d.ts.map +1 -1
- package/dist/mybodyshield/components/MybTags.js +83 -74
- package/dist/mybodyshield/components/MybTags.js.map +1 -1
- package/dist/mybodyshield/components/PageDisabled.d.ts.map +1 -1
- package/dist/mybodyshield/components/PageDisabled.js +16 -11
- package/dist/mybodyshield/components/PageDisabled.js.map +1 -1
- package/dist/mybodyshield/components/Pagination.d.ts.map +1 -1
- package/dist/mybodyshield/components/Pagination.js +36 -27
- package/dist/mybodyshield/components/Pagination.js.map +1 -1
- package/dist/mybodyshield/components/StateViews.d.ts.map +1 -1
- package/dist/mybodyshield/components/StateViews.js +42 -34
- package/dist/mybodyshield/components/StateViews.js.map +1 -1
- package/dist/mybodyshield/components/UserSearchSelect.d.ts.map +1 -1
- package/dist/mybodyshield/components/UserSearchSelect.js +66 -68
- package/dist/mybodyshield/components/UserSearchSelect.js.map +1 -1
- package/dist/mybodyshield/hooks/index.d.ts +1 -0
- package/dist/mybodyshield/hooks/index.d.ts.map +1 -1
- package/dist/mybodyshield/hooks/index.js +1 -0
- package/dist/mybodyshield/hooks/useTr.d.ts +5 -0
- package/dist/mybodyshield/hooks/useTr.d.ts.map +1 -0
- package/dist/mybodyshield/hooks/useTr.js +12 -0
- package/dist/mybodyshield/hooks/useTr.js.map +1 -0
- package/dist/mybodyshield/pages/DashboardPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/DashboardPage.js +157 -136
- package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
- package/dist/mybodyshield/pages/SettingsPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/SettingsPage.js +50 -59
- package/dist/mybodyshield/pages/SettingsPage.js.map +1 -1
- package/dist/mybodyshield/pages/_shared/visuals.d.ts +2 -1
- package/dist/mybodyshield/pages/_shared/visuals.d.ts.map +1 -1
- package/dist/mybodyshield/pages/_shared/visuals.js +91 -81
- package/dist/mybodyshield/pages/_shared/visuals.js.map +1 -1
- package/dist/mybodyshield/pages/ai/AiControlsPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/ai/AiControlsPage.js +279 -231
- package/dist/mybodyshield/pages/ai/AiControlsPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/coaching/CoachingPage.js +349 -258
- package/dist/mybodyshield/pages/coaching/CoachingPage.js.map +1 -1
- package/dist/mybodyshield/pages/goals/GoalsPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/goals/GoalsPage.js +247 -251
- package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsCharts.d.ts.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsCharts.js +216 -213
- package/dist/mybodyshield/pages/insights/InsightsCharts.js.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsPage.js +327 -220
- package/dist/mybodyshield/pages/insights/InsightsPage.js.map +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js +575 -529
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +333 -275
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.js +258 -253
- package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.js +271 -254
- package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js +206 -200
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.js +327 -294
- package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.d.ts.map +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.js +180 -163
- package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
- package/dist/mybodyshield/utils/i18n.d.ts +1 -2
- package/dist/mybodyshield/utils/i18n.d.ts.map +1 -1
- package/dist/mybodyshield/utils/i18n.js +15 -0
- package/dist/mybodyshield/utils/i18n.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,16 +4,17 @@ import { MetricsCard as n } from "../components/MetricsCard.js";
|
|
|
4
4
|
import { formatEnumLabel as r, formatNumber as i, formatPercent as a, formatRelativeTime as o, formatWeight as s } from "../utils/formatters.js";
|
|
5
5
|
import { StatusBadge as c } from "../components/StatusBadge.js";
|
|
6
6
|
import { EmptyState as l } from "../components/EmptyState.js";
|
|
7
|
-
import { LoadingView as ee, Section as u } from "../components/StateViews.js";
|
|
8
|
-
import { MiniBar as d } from "../components/MiniBar.js";
|
|
9
7
|
import "../context/index.js";
|
|
10
|
-
import { useMybBodyMetrics as
|
|
8
|
+
import { useMybBodyMetrics as ee, useMybDailyMacros as te, useMybGoals as ne, useMybPrograms as re, useMybRecoveryLogs as u, useMybSessions as d, useMybTodayGuidance as f } from "../hooks/useMyBodyShieldApi.js";
|
|
9
|
+
import { useTr as ie } from "../hooks/useTr.js";
|
|
11
10
|
import "../hooks/index.js";
|
|
11
|
+
import { LoadingView as ae, Section as p } from "../components/StateViews.js";
|
|
12
|
+
import { MiniBar as oe } from "../components/MiniBar.js";
|
|
12
13
|
import { motion as m } from "../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";
|
|
13
|
-
import { useReducedMotion as
|
|
14
|
-
import { GOAL_TYPE_META as
|
|
14
|
+
import { useReducedMotion as se } from "../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js";
|
|
15
|
+
import { GOAL_TYPE_META as ce, IconChip as h, MacroBar as le, MacroLegend as g, Meter as _, ProgressRing as ue, WORKOUT_TYPE_META as de, computeGoalProgress as v } from "./_shared/visuals.js";
|
|
15
16
|
import { useMemo as fe } from "react";
|
|
16
|
-
import { ArrowRight as
|
|
17
|
+
import { ArrowRight as y, BedDouble as b, CalendarCheck as pe, CheckCircle2 as x, Dumbbell as S, Flame as C, Moon as w, Salad as me, Sparkles as he, Target as T, TrendingUp as E, Utensils as D, Weight as ge } from "lucide-react";
|
|
17
18
|
import { jsx as O, jsxs as k } from "react/jsx-runtime";
|
|
18
19
|
import { GlassCard as A } from "@burdenoff/fe-libs/ui";
|
|
19
20
|
//#region src/mybodyshield/pages/DashboardPage.tsx
|
|
@@ -24,38 +25,43 @@ var j = [
|
|
|
24
25
|
1
|
|
25
26
|
], M = {
|
|
26
27
|
REST: {
|
|
27
|
-
icon:
|
|
28
|
+
icon: b,
|
|
28
29
|
textClass: "text-status-error-text",
|
|
29
30
|
bgClass: "bg-status-error-bg-subtle",
|
|
30
|
-
|
|
31
|
+
labelKey: "mybodyshield.pages.dashboard.rest",
|
|
32
|
+
labelFallback: "Rest"
|
|
31
33
|
},
|
|
32
34
|
LIGHTEN_SESSION: {
|
|
33
|
-
icon:
|
|
35
|
+
icon: w,
|
|
34
36
|
textClass: "text-status-warning-text",
|
|
35
37
|
bgClass: "bg-status-warning-bg-subtle",
|
|
36
|
-
|
|
38
|
+
labelKey: "mybodyshield.pages.dashboard.lightenSession",
|
|
39
|
+
labelFallback: "Lighten session"
|
|
37
40
|
},
|
|
38
41
|
PROCEED_AS_PLANNED: {
|
|
39
42
|
icon: x,
|
|
40
43
|
textClass: "text-status-success-text",
|
|
41
44
|
bgClass: "bg-status-success-bg-subtle",
|
|
42
|
-
|
|
45
|
+
labelKey: "mybodyshield.pages.dashboard.proceedAsPlanned",
|
|
46
|
+
labelFallback: "Proceed as planned"
|
|
43
47
|
},
|
|
44
48
|
INCREASE_LOAD: {
|
|
45
49
|
icon: E,
|
|
46
50
|
textClass: "text-status-success-text",
|
|
47
51
|
bgClass: "bg-status-success-bg-subtle",
|
|
48
|
-
|
|
52
|
+
labelKey: "mybodyshield.pages.dashboard.increaseLoad",
|
|
53
|
+
labelFallback: "Increase load"
|
|
49
54
|
},
|
|
50
55
|
REVIEW_NUTRITION: {
|
|
51
56
|
icon: D,
|
|
52
57
|
textClass: "text-status-warning-text",
|
|
53
58
|
bgClass: "bg-status-warning-bg-subtle",
|
|
54
|
-
|
|
59
|
+
labelKey: "mybodyshield.pages.dashboard.reviewNutrition",
|
|
60
|
+
labelFallback: "Review nutrition"
|
|
55
61
|
}
|
|
56
62
|
};
|
|
57
63
|
function N() {
|
|
58
|
-
let { navigateTo:
|
|
64
|
+
let b = ie(), { navigateTo: E, currentUser: D } = e(), N = se(), P = (e) => N ? {} : {
|
|
59
65
|
initial: {
|
|
60
66
|
opacity: 0,
|
|
61
67
|
y: 14
|
|
@@ -73,13 +79,13 @@ function N() {
|
|
|
73
79
|
delay: Math.min(e, 8) * .05,
|
|
74
80
|
ease: j
|
|
75
81
|
}
|
|
76
|
-
},
|
|
82
|
+
}, F = N ? {} : { whileHover: {
|
|
77
83
|
y: -3,
|
|
78
84
|
transition: {
|
|
79
85
|
duration: .2,
|
|
80
86
|
ease: j
|
|
81
87
|
}
|
|
82
|
-
} },
|
|
88
|
+
} }, I = N ? {} : {
|
|
83
89
|
whileHover: {
|
|
84
90
|
y: -3,
|
|
85
91
|
transition: {
|
|
@@ -88,39 +94,39 @@ function N() {
|
|
|
88
94
|
}
|
|
89
95
|
},
|
|
90
96
|
whileTap: { scale: .985 }
|
|
91
|
-
},
|
|
97
|
+
}, L = re({
|
|
92
98
|
status: "ACTIVE",
|
|
93
99
|
pagination: { limit: 50 }
|
|
94
|
-
}),
|
|
100
|
+
}), R = d({ pagination: { limit: 20 } }), z = ne({
|
|
95
101
|
status: "ACTIVE",
|
|
96
102
|
pagination: { limit: 50 }
|
|
97
|
-
}),
|
|
103
|
+
}), B = te(), _e = ee({
|
|
98
104
|
type: "WEIGHT",
|
|
99
105
|
pagination: { limit: 30 }
|
|
100
|
-
}),
|
|
106
|
+
}), ve = u("READINESS"), V = f(), ye = L.data?.items ?? [], H = R.data?.items ?? [], U = z.data?.items ?? [], W = _e.data?.items ?? [], be = ve.data?.items ?? [], xe = (/* @__PURE__ */ new Date()).getTime() - 10080 * 60 * 1e3, G = H.filter((e) => {
|
|
101
107
|
let t = e.completedAt ?? e.startedAt ?? e.scheduledFor ?? e.createdAt;
|
|
102
|
-
return t ? new Date(t).getTime() >=
|
|
103
|
-
}),
|
|
104
|
-
if (
|
|
105
|
-
title: "MyBodyShield",
|
|
108
|
+
return t ? new Date(t).getTime() >= xe : !1;
|
|
109
|
+
}), Se = 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 = be.slice().sort((e, t) => new Date(t.loggedAt).getTime() - new Date(e.loggedAt).getTime())[0], Q = fe(() => U.length === 0 ? 0 : U.reduce((e, t) => e + v(t), 0) / U.length, [U]), $ = B.data, Ce = $?.calorieTarget ? $.calories / $.calorieTarget * 100 : 0;
|
|
110
|
+
if (L.isLoading && R.isLoading && z.isLoading && B.isLoading) return /* @__PURE__ */ O(t, {
|
|
111
|
+
title: b("mybodyshield.pages.dashboard.title", "MyBodyShield"),
|
|
106
112
|
titleGradient: !0,
|
|
107
113
|
aurora: !0,
|
|
108
|
-
children: /* @__PURE__ */ O(
|
|
114
|
+
children: /* @__PURE__ */ O(ae, { label: b("mybodyshield.pages.dashboard.loading", "Loading your fitness overview…") })
|
|
109
115
|
});
|
|
110
|
-
let
|
|
116
|
+
let we = D?.firstName || D?.name || b("mybodyshield.pages.dashboard.greetingFallback", "there"), Te = [
|
|
111
117
|
{
|
|
112
118
|
id: "programs",
|
|
113
119
|
node: /* @__PURE__ */ O(n, {
|
|
114
|
-
icon: /* @__PURE__ */ O(
|
|
115
|
-
value: i(
|
|
116
|
-
label: "Active programs",
|
|
120
|
+
icon: /* @__PURE__ */ O(S, { className: "h-5 w-5" }),
|
|
121
|
+
value: i(ye.length),
|
|
122
|
+
label: b("mybodyshield.pages.dashboard.activePrograms", "Active programs"),
|
|
117
123
|
footer: /* @__PURE__ */ O("p", {
|
|
118
124
|
className: "text-xs text-text-tertiary",
|
|
119
125
|
children: /* @__PURE__ */ O("button", {
|
|
120
126
|
type: "button",
|
|
121
|
-
onClick: () =>
|
|
127
|
+
onClick: () => E("programs"),
|
|
122
128
|
className: "font-medium text-accent hover:underline",
|
|
123
|
-
children: "Manage programs"
|
|
129
|
+
children: b("mybodyshield.pages.dashboard.managePrograms", "Manage programs")
|
|
124
130
|
})
|
|
125
131
|
})
|
|
126
132
|
})
|
|
@@ -128,24 +134,24 @@ function N() {
|
|
|
128
134
|
{
|
|
129
135
|
id: "sessions",
|
|
130
136
|
node: /* @__PURE__ */ O(n, {
|
|
131
|
-
icon: /* @__PURE__ */ O(
|
|
132
|
-
value: i(
|
|
133
|
-
label: "Sessions this week",
|
|
137
|
+
icon: /* @__PURE__ */ O(C, { className: "h-5 w-5" }),
|
|
138
|
+
value: i(Se),
|
|
139
|
+
label: b("mybodyshield.pages.dashboard.sessionsThisWeek", "Sessions this week"),
|
|
134
140
|
accent: K ? "warning" : void 0,
|
|
135
141
|
footer: K ? /* @__PURE__ */ O("button", {
|
|
136
142
|
type: "button",
|
|
137
|
-
onClick: () =>
|
|
143
|
+
onClick: () => E(`train/${K.id}`),
|
|
138
144
|
className: "text-xs font-medium text-status-warning-text hover:underline",
|
|
139
|
-
children: "Resume live session →"
|
|
145
|
+
children: b("mybodyshield.pages.dashboard.resumeLiveSession", "Resume live session →")
|
|
140
146
|
}) : /* @__PURE__ */ k("p", {
|
|
141
147
|
className: "text-xs text-text-tertiary",
|
|
142
148
|
children: [
|
|
143
149
|
/* @__PURE__ */ O("span", {
|
|
144
150
|
className: "tabular-nums text-text-secondary",
|
|
145
|
-
children:
|
|
151
|
+
children: G.length
|
|
146
152
|
}),
|
|
147
153
|
" ",
|
|
148
|
-
"logged"
|
|
154
|
+
b("mybodyshield.pages.dashboard.logged", "logged")
|
|
149
155
|
]
|
|
150
156
|
})
|
|
151
157
|
})
|
|
@@ -154,11 +160,11 @@ function N() {
|
|
|
154
160
|
id: "goals",
|
|
155
161
|
node: /* @__PURE__ */ O(n, {
|
|
156
162
|
icon: /* @__PURE__ */ O(T, { className: "h-5 w-5" }),
|
|
157
|
-
value: i(
|
|
158
|
-
label: "Active goals",
|
|
163
|
+
value: i(U.length),
|
|
164
|
+
label: b("mybodyshield.pages.dashboard.activeGoals", "Active goals"),
|
|
159
165
|
footer: /* @__PURE__ */ k("div", {
|
|
160
166
|
className: "space-y-2",
|
|
161
|
-
children: [/* @__PURE__ */ O(
|
|
167
|
+
children: [/* @__PURE__ */ O(oe, {
|
|
162
168
|
value: Q,
|
|
163
169
|
height: 4,
|
|
164
170
|
barClassName: "bg-action-primary-bg"
|
|
@@ -170,7 +176,7 @@ function N() {
|
|
|
170
176
|
children: a(Q)
|
|
171
177
|
}),
|
|
172
178
|
" ",
|
|
173
|
-
"avg progress"
|
|
179
|
+
b("mybodyshield.pages.dashboard.avgProgress", "avg progress")
|
|
174
180
|
]
|
|
175
181
|
})]
|
|
176
182
|
})
|
|
@@ -179,27 +185,23 @@ function N() {
|
|
|
179
185
|
{
|
|
180
186
|
id: "weight",
|
|
181
187
|
node: /* @__PURE__ */ O(n, {
|
|
182
|
-
icon: /* @__PURE__ */ O(
|
|
188
|
+
icon: /* @__PURE__ */ O(ge, { className: "h-5 w-5" }),
|
|
183
189
|
value: J ? s(J.value) : "—",
|
|
184
|
-
label: "Latest weight",
|
|
190
|
+
label: b("mybodyshield.pages.dashboard.latestWeight", "Latest weight"),
|
|
185
191
|
footer: X == null ? /* @__PURE__ */ O("button", {
|
|
186
192
|
type: "button",
|
|
187
|
-
onClick: () =>
|
|
193
|
+
onClick: () => E("progress"),
|
|
188
194
|
className: "text-xs font-medium text-accent hover:underline",
|
|
189
|
-
children: "Log a measurement →"
|
|
195
|
+
children: b("mybodyshield.pages.dashboard.logMeasurement", "Log a measurement →")
|
|
190
196
|
}) : /* @__PURE__ */ k("p", {
|
|
191
197
|
className: "text-xs text-text-tertiary",
|
|
192
198
|
children: [
|
|
193
|
-
/* @__PURE__ */
|
|
199
|
+
/* @__PURE__ */ O("span", {
|
|
194
200
|
className: X <= 0 ? "font-medium text-status-success-text" : "font-medium text-text-secondary",
|
|
195
|
-
children:
|
|
196
|
-
X > 0 ? "+" : "",
|
|
197
|
-
X.toFixed(1),
|
|
198
|
-
" kg"
|
|
199
|
-
]
|
|
201
|
+
children: b("mybodyshield.pages.dashboard.weightDelta", "{{delta}} kg", { delta: `${X > 0 ? "+" : ""}${X.toFixed(1)}` })
|
|
200
202
|
}),
|
|
201
203
|
" ",
|
|
202
|
-
"vs last"
|
|
204
|
+
b("mybodyshield.pages.dashboard.vsLast", "vs last")
|
|
203
205
|
]
|
|
204
206
|
})
|
|
205
207
|
})
|
|
@@ -207,44 +209,44 @@ function N() {
|
|
|
207
209
|
{
|
|
208
210
|
id: "recovery",
|
|
209
211
|
node: /* @__PURE__ */ O(n, {
|
|
210
|
-
icon: /* @__PURE__ */ O(
|
|
212
|
+
icon: /* @__PURE__ */ O(w, { className: "h-5 w-5" }),
|
|
211
213
|
value: Z ? `${Z.score}` : "—",
|
|
212
|
-
label: "Recovery readiness",
|
|
214
|
+
label: b("mybodyshield.pages.dashboard.recoveryReadiness", "Recovery readiness"),
|
|
213
215
|
accent: Z ? Z.score >= 70 ? "success" : Z.score >= 40 ? "warning" : "error" : void 0,
|
|
214
216
|
footer: Z ? /* @__PURE__ */ O("p", {
|
|
215
217
|
className: "text-xs text-text-tertiary",
|
|
216
218
|
children: o(Z.loggedAt)
|
|
217
219
|
}) : /* @__PURE__ */ O("button", {
|
|
218
220
|
type: "button",
|
|
219
|
-
onClick: () =>
|
|
221
|
+
onClick: () => E("recovery"),
|
|
220
222
|
className: "text-xs font-medium text-accent hover:underline",
|
|
221
|
-
children: "Log recovery →"
|
|
223
|
+
children: b("mybodyshield.pages.dashboard.logRecovery", "Log recovery →")
|
|
222
224
|
})
|
|
223
225
|
})
|
|
224
226
|
}
|
|
225
227
|
];
|
|
226
228
|
return /* @__PURE__ */ k(t, {
|
|
227
|
-
title: "MyBodyShield",
|
|
229
|
+
title: b("mybodyshield.pages.dashboard.title", "MyBodyShield"),
|
|
228
230
|
titleGradient: !0,
|
|
229
231
|
aurora: !0,
|
|
230
|
-
description:
|
|
232
|
+
description: b("mybodyshield.pages.dashboard.description", "Welcome back, {{name}} — your training, nutrition, progress & recovery control room.", { name: we }),
|
|
231
233
|
children: [
|
|
232
234
|
/* @__PURE__ */ O("div", {
|
|
233
235
|
"data-tour": "mybodyshield-dashboard-kpi-grid",
|
|
234
236
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5",
|
|
235
|
-
children:
|
|
237
|
+
children: Te.map((e, t) => /* @__PURE__ */ k(m.div, {
|
|
236
238
|
className: "group relative rounded-2xl transition-shadow duration-300 hover:shadow-float",
|
|
237
|
-
...
|
|
238
|
-
...
|
|
239
|
+
...P(t),
|
|
240
|
+
...F,
|
|
239
241
|
children: [/* @__PURE__ */ O("span", {
|
|
240
242
|
"aria-hidden": !0,
|
|
241
243
|
className: "pointer-events-none absolute inset-x-6 top-0 z-10 h-px rounded-full bg-gradient-to-r from-transparent via-action-primary-bg to-transparent opacity-40 transition-opacity duration-300 group-hover:opacity-90"
|
|
242
244
|
}), e.node]
|
|
243
245
|
}, e.id))
|
|
244
246
|
}),
|
|
245
|
-
!
|
|
247
|
+
!V.isLoading && (V.data?.cards.length ?? 0) > 0 && /* @__PURE__ */ O(m.div, {
|
|
246
248
|
className: "mt-6",
|
|
247
|
-
...
|
|
249
|
+
...P(0),
|
|
248
250
|
children: /* @__PURE__ */ k(A, {
|
|
249
251
|
treatment: "glass",
|
|
250
252
|
className: "p-6",
|
|
@@ -252,19 +254,19 @@ function N() {
|
|
|
252
254
|
/* @__PURE__ */ k("div", {
|
|
253
255
|
className: "mb-4 flex items-center gap-2",
|
|
254
256
|
children: [/* @__PURE__ */ O(h, {
|
|
255
|
-
icon: /* @__PURE__ */ O(
|
|
257
|
+
icon: /* @__PURE__ */ O(he, { className: "h-5 w-5" }),
|
|
256
258
|
tint: "var(--color-accent-primary)"
|
|
257
259
|
}), /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("h2", {
|
|
258
260
|
className: "text-base font-semibold text-text-primary",
|
|
259
|
-
children: "Today's guidance"
|
|
261
|
+
children: b("mybodyshield.pages.dashboard.todaysGuidance", "Today's guidance")
|
|
260
262
|
}), /* @__PURE__ */ O("p", {
|
|
261
263
|
className: "mt-0.5 text-sm text-text-secondary",
|
|
262
|
-
children: "Recovery-aware suggestions from your logged training & recovery data."
|
|
264
|
+
children: b("mybodyshield.pages.dashboard.guidanceDescription", "Recovery-aware suggestions from your logged training & recovery data.")
|
|
263
265
|
})] })]
|
|
264
266
|
}),
|
|
265
267
|
/* @__PURE__ */ O("div", {
|
|
266
268
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
|
|
267
|
-
children:
|
|
269
|
+
children: V.data?.cards.map((e, t) => {
|
|
268
270
|
let n = M[e.action], r = n.icon;
|
|
269
271
|
return /* @__PURE__ */ k("div", {
|
|
270
272
|
className: `rounded-xl border border-seam ${n.bgClass} p-4`,
|
|
@@ -272,7 +274,7 @@ function N() {
|
|
|
272
274
|
className: "mb-1.5 flex items-center gap-1.5",
|
|
273
275
|
children: [/* @__PURE__ */ O(r, { className: `h-4 w-4 shrink-0 ${n.textClass}` }), /* @__PURE__ */ O("span", {
|
|
274
276
|
className: `text-xs font-semibold uppercase tracking-wide ${n.textClass}`,
|
|
275
|
-
children: n.
|
|
277
|
+
children: b(n.labelKey, n.labelFallback)
|
|
276
278
|
})]
|
|
277
279
|
}), /* @__PURE__ */ O("p", {
|
|
278
280
|
className: "text-sm text-text-secondary",
|
|
@@ -281,9 +283,9 @@ function N() {
|
|
|
281
283
|
}, `${e.signal}-${t}`);
|
|
282
284
|
})
|
|
283
285
|
}),
|
|
284
|
-
|
|
286
|
+
V.data?.aiSummary && /* @__PURE__ */ O("p", {
|
|
285
287
|
className: "mt-4 rounded-lg bg-surface p-3 text-sm italic text-text-secondary",
|
|
286
|
-
children:
|
|
288
|
+
children: V.data.aiSummary
|
|
287
289
|
})
|
|
288
290
|
]
|
|
289
291
|
})
|
|
@@ -293,7 +295,7 @@ function N() {
|
|
|
293
295
|
children: [/* @__PURE__ */ O(m.div, {
|
|
294
296
|
"data-tour": "mybodyshield-dashboard-nutrition",
|
|
295
297
|
className: "lg:col-span-2",
|
|
296
|
-
...
|
|
298
|
+
...P(0),
|
|
297
299
|
children: /* @__PURE__ */ k(A, {
|
|
298
300
|
treatment: "glass",
|
|
299
301
|
className: "h-full p-6",
|
|
@@ -301,21 +303,25 @@ function N() {
|
|
|
301
303
|
className: "mb-4 flex flex-wrap items-start justify-between gap-3",
|
|
302
304
|
children: [/* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("h2", {
|
|
303
305
|
className: "text-base font-semibold text-text-primary",
|
|
304
|
-
children: "Today's nutrition"
|
|
306
|
+
children: b("mybodyshield.pages.dashboard.todaysNutrition", "Today's nutrition")
|
|
305
307
|
}), /* @__PURE__ */ O("p", {
|
|
306
308
|
className: "mt-0.5 text-sm text-text-secondary",
|
|
307
|
-
children: "Calories & macros logged against your active plan."
|
|
309
|
+
children: b("mybodyshield.pages.dashboard.nutritionDescription", "Calories & macros logged against your active plan.")
|
|
308
310
|
})] }), /* @__PURE__ */ k("button", {
|
|
309
311
|
type: "button",
|
|
310
|
-
onClick: () =>
|
|
312
|
+
onClick: () => E("nutrition"),
|
|
311
313
|
className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
|
|
312
|
-
children: [
|
|
314
|
+
children: [
|
|
315
|
+
b("mybodyshield.nav.nutrition", "Nutrition"),
|
|
316
|
+
" ",
|
|
317
|
+
/* @__PURE__ */ O(y, { className: "h-4 w-4" })
|
|
318
|
+
]
|
|
313
319
|
})]
|
|
314
320
|
}), !$ || $.calorieTarget === 0 && $.calories === 0 ? /* @__PURE__ */ O(l, {
|
|
315
321
|
illustration: "empty-data",
|
|
316
|
-
icon: /* @__PURE__ */ O(
|
|
317
|
-
title: "No nutrition data yet",
|
|
318
|
-
description: "Activate a nutrition plan and log meals to track your daily macros here."
|
|
322
|
+
icon: /* @__PURE__ */ O(me, { className: "h-10 w-10" }),
|
|
323
|
+
title: b("mybodyshield.pages.dashboard.noNutritionData", "No nutrition data yet"),
|
|
324
|
+
description: b("mybodyshield.pages.dashboard.noNutritionDescription", "Activate a nutrition plan and log meals to track your daily macros here.")
|
|
319
325
|
}) : /* @__PURE__ */ k("div", {
|
|
320
326
|
className: "flex flex-col gap-8 sm:flex-row sm:items-center",
|
|
321
327
|
children: [/* @__PURE__ */ k("div", {
|
|
@@ -325,13 +331,13 @@ function N() {
|
|
|
325
331
|
className: "pointer-events-none absolute inset-2 rounded-full opacity-70 blur-2xl",
|
|
326
332
|
style: { background: "radial-gradient(circle, color-mix(in srgb, var(--color-action-primary-bg) 26%, transparent), transparent 70%)" }
|
|
327
333
|
}), /* @__PURE__ */ k(ue, {
|
|
328
|
-
value:
|
|
334
|
+
value: Ce,
|
|
329
335
|
size: 188,
|
|
330
336
|
stroke: 16,
|
|
331
337
|
children: [
|
|
332
338
|
/* @__PURE__ */ O("span", {
|
|
333
339
|
className: "text-[11px] font-medium uppercase tracking-wide text-text-tertiary",
|
|
334
|
-
children: "Calories"
|
|
340
|
+
children: b("mybodyshield.pages.dashboard.calories", "Calories")
|
|
335
341
|
}),
|
|
336
342
|
/* @__PURE__ */ O("span", {
|
|
337
343
|
className: "text-3xl font-bold tabular-nums text-text-primary",
|
|
@@ -351,32 +357,35 @@ function N() {
|
|
|
351
357
|
className: "flex-1 space-y-4",
|
|
352
358
|
children: [/* @__PURE__ */ k("div", {
|
|
353
359
|
className: "space-y-2",
|
|
354
|
-
children: [/* @__PURE__ */ O(
|
|
360
|
+
children: [/* @__PURE__ */ O(le, {
|
|
355
361
|
proteinG: $.proteinG,
|
|
356
362
|
carbsG: $.carbsG,
|
|
357
363
|
fatG: $.fatG,
|
|
358
364
|
height: 12
|
|
359
|
-
}), /* @__PURE__ */ O(
|
|
365
|
+
}), /* @__PURE__ */ O(g, {})]
|
|
360
366
|
}), /* @__PURE__ */ O("div", {
|
|
361
367
|
className: "grid grid-cols-3 gap-3",
|
|
362
368
|
children: [
|
|
363
369
|
[
|
|
370
|
+
"mybodyshield.pages.dashboard.protein",
|
|
364
371
|
"Protein",
|
|
365
372
|
$.proteinG,
|
|
366
373
|
$.proteinTarget
|
|
367
374
|
],
|
|
368
375
|
[
|
|
376
|
+
"mybodyshield.pages.dashboard.carbs",
|
|
369
377
|
"Carbs",
|
|
370
378
|
$.carbsG,
|
|
371
379
|
$.carbsTarget
|
|
372
380
|
],
|
|
373
381
|
[
|
|
382
|
+
"mybodyshield.pages.dashboard.fat",
|
|
374
383
|
"Fat",
|
|
375
384
|
$.fatG,
|
|
376
385
|
$.fatTarget
|
|
377
386
|
]
|
|
378
|
-
].map(([e, t, n]) => {
|
|
379
|
-
let
|
|
387
|
+
].map(([e, t, n, r]) => {
|
|
388
|
+
let o = r ? n / r * 100 : 0;
|
|
380
389
|
return /* @__PURE__ */ k("div", {
|
|
381
390
|
className: "rounded-2xl bg-bg-sunken/60 p-3 ring-1 ring-inset ring-border-seam/40 transition-shadow hover:shadow-float",
|
|
382
391
|
children: [
|
|
@@ -384,26 +393,26 @@ function N() {
|
|
|
384
393
|
className: "flex items-center justify-between gap-1",
|
|
385
394
|
children: [/* @__PURE__ */ O("p", {
|
|
386
395
|
className: "text-xs font-medium text-text-tertiary",
|
|
387
|
-
children: e
|
|
396
|
+
children: b(e, t)
|
|
388
397
|
}), /* @__PURE__ */ O("span", {
|
|
389
398
|
className: "text-[11px] tabular-nums text-text-tertiary",
|
|
390
|
-
children: a(
|
|
399
|
+
children: a(o)
|
|
391
400
|
})]
|
|
392
401
|
}),
|
|
393
402
|
/* @__PURE__ */ k("p", {
|
|
394
403
|
className: "mt-1 text-sm font-semibold tabular-nums text-text-primary",
|
|
395
|
-
children: [i(
|
|
404
|
+
children: [i(n), /* @__PURE__ */ k("span", {
|
|
396
405
|
className: "text-xs font-normal text-text-tertiary",
|
|
397
406
|
children: [
|
|
398
407
|
" ",
|
|
399
408
|
"/ ",
|
|
400
|
-
i(
|
|
409
|
+
i(r),
|
|
401
410
|
" g"
|
|
402
411
|
]
|
|
403
412
|
})]
|
|
404
413
|
}),
|
|
405
|
-
/* @__PURE__ */ O(
|
|
406
|
-
value:
|
|
414
|
+
/* @__PURE__ */ O(_, {
|
|
415
|
+
value: o,
|
|
407
416
|
height: 5,
|
|
408
417
|
className: "mt-2"
|
|
409
418
|
})
|
|
@@ -416,7 +425,7 @@ function N() {
|
|
|
416
425
|
})
|
|
417
426
|
}), /* @__PURE__ */ O(m.div, {
|
|
418
427
|
"data-tour": "mybodyshield-dashboard-next-up",
|
|
419
|
-
...
|
|
428
|
+
...P(1),
|
|
420
429
|
children: /* @__PURE__ */ k(A, {
|
|
421
430
|
treatment: "glass",
|
|
422
431
|
className: "h-full p-6",
|
|
@@ -424,18 +433,22 @@ function N() {
|
|
|
424
433
|
className: "mb-4 flex items-center justify-between gap-3",
|
|
425
434
|
children: [/* @__PURE__ */ O("h2", {
|
|
426
435
|
className: "text-base font-semibold text-text-primary",
|
|
427
|
-
children: "Next up"
|
|
436
|
+
children: b("mybodyshield.pages.dashboard.nextUp", "Next up")
|
|
428
437
|
}), /* @__PURE__ */ k("button", {
|
|
429
438
|
type: "button",
|
|
430
|
-
onClick: () =>
|
|
439
|
+
onClick: () => E("train"),
|
|
431
440
|
className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
|
|
432
|
-
children: [
|
|
441
|
+
children: [
|
|
442
|
+
b("mybodyshield.nav.train", "Train"),
|
|
443
|
+
" ",
|
|
444
|
+
/* @__PURE__ */ O(y, { className: "h-4 w-4" })
|
|
445
|
+
]
|
|
433
446
|
})]
|
|
434
447
|
}), K ? /* @__PURE__ */ k(m.button, {
|
|
435
448
|
type: "button",
|
|
436
|
-
onClick: () =>
|
|
449
|
+
onClick: () => E(`train/${K.id}`),
|
|
437
450
|
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",
|
|
438
|
-
...
|
|
451
|
+
...I,
|
|
439
452
|
children: [
|
|
440
453
|
/* @__PURE__ */ O("div", {
|
|
441
454
|
className: "flex items-center gap-2",
|
|
@@ -443,23 +456,23 @@ function N() {
|
|
|
443
456
|
}),
|
|
444
457
|
/* @__PURE__ */ O("p", {
|
|
445
458
|
className: "mt-2 text-sm font-medium text-text-primary",
|
|
446
|
-
children: "Live workout in progress"
|
|
459
|
+
children: b("mybodyshield.pages.dashboard.liveWorkoutInProgress", "Live workout in progress")
|
|
447
460
|
}),
|
|
448
|
-
/* @__PURE__ */
|
|
461
|
+
/* @__PURE__ */ O("p", {
|
|
449
462
|
className: "mt-0.5 text-xs text-text-tertiary",
|
|
450
|
-
children:
|
|
463
|
+
children: b("mybodyshield.pages.dashboard.startedAgo", "Started {{time}}", { time: o(K.startedAt) })
|
|
451
464
|
})
|
|
452
465
|
]
|
|
453
466
|
}) : q ? /* @__PURE__ */ O(m.button, {
|
|
454
467
|
type: "button",
|
|
455
|
-
onClick: () =>
|
|
468
|
+
onClick: () => E(`train/${q.id}`),
|
|
456
469
|
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",
|
|
457
|
-
...
|
|
470
|
+
...I,
|
|
458
471
|
children: /* @__PURE__ */ k("div", {
|
|
459
472
|
className: "flex items-center gap-2",
|
|
460
|
-
children: [/* @__PURE__ */ O(h, { icon: /* @__PURE__ */ O(
|
|
473
|
+
children: [/* @__PURE__ */ O(h, { icon: /* @__PURE__ */ O(pe, { className: "h-4 w-4" }) }), /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
|
|
461
474
|
className: "text-sm font-medium text-text-primary",
|
|
462
|
-
children: "Scheduled session"
|
|
475
|
+
children: b("mybodyshield.pages.dashboard.scheduledSession", "Scheduled session")
|
|
463
476
|
}), /* @__PURE__ */ O("p", {
|
|
464
477
|
className: "text-xs text-text-tertiary",
|
|
465
478
|
children: o(q.scheduledFor)
|
|
@@ -470,48 +483,52 @@ function N() {
|
|
|
470
483
|
children: [
|
|
471
484
|
/* @__PURE__ */ O("span", {
|
|
472
485
|
className: "flex size-11 items-center justify-center rounded-full bg-[var(--color-accent-soft)]",
|
|
473
|
-
children: /* @__PURE__ */ O(
|
|
486
|
+
children: /* @__PURE__ */ O(C, { className: "h-5 w-5 text-accent" })
|
|
474
487
|
}),
|
|
475
488
|
/* @__PURE__ */ O("p", {
|
|
476
489
|
className: "mt-3 text-sm font-medium text-text-primary",
|
|
477
|
-
children: "No session scheduled"
|
|
490
|
+
children: b("mybodyshield.pages.dashboard.noSessionScheduled", "No session scheduled")
|
|
478
491
|
}),
|
|
479
492
|
/* @__PURE__ */ O("button", {
|
|
480
493
|
type: "button",
|
|
481
|
-
onClick: () =>
|
|
494
|
+
onClick: () => E("train"),
|
|
482
495
|
className: "mt-1 text-xs font-medium text-accent hover:underline",
|
|
483
|
-
children: "Start a workout"
|
|
496
|
+
children: b("mybodyshield.pages.dashboard.startWorkout", "Start a workout")
|
|
484
497
|
})
|
|
485
498
|
]
|
|
486
499
|
})]
|
|
487
500
|
})
|
|
488
501
|
})]
|
|
489
502
|
}),
|
|
490
|
-
/* @__PURE__ */ O(
|
|
503
|
+
/* @__PURE__ */ O(p, {
|
|
491
504
|
"data-tour": "mybodyshield-dashboard-active-goals",
|
|
492
|
-
title: "Active goals",
|
|
493
|
-
description: "Your current targets across training, nutrition and body composition.",
|
|
505
|
+
title: b("mybodyshield.pages.dashboard.activeGoalsSection", "Active goals"),
|
|
506
|
+
description: b("mybodyshield.pages.dashboard.activeGoalsDescription", "Your current targets across training, nutrition and body composition."),
|
|
494
507
|
action: /* @__PURE__ */ k("button", {
|
|
495
508
|
type: "button",
|
|
496
|
-
onClick: () =>
|
|
509
|
+
onClick: () => E("goals"),
|
|
497
510
|
className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
|
|
498
|
-
children: [
|
|
511
|
+
children: [
|
|
512
|
+
b("mybodyshield.pages.dashboard.allGoals", "All goals"),
|
|
513
|
+
" ",
|
|
514
|
+
/* @__PURE__ */ O(y, { className: "h-4 w-4" })
|
|
515
|
+
]
|
|
499
516
|
}),
|
|
500
|
-
children:
|
|
517
|
+
children: U.length === 0 ? /* @__PURE__ */ O(l, {
|
|
501
518
|
illustration: "empty-data",
|
|
502
519
|
icon: /* @__PURE__ */ O(T, { className: "h-10 w-10" }),
|
|
503
|
-
title: "No active goals",
|
|
504
|
-
description: "Set a goal to give your training and nutrition a clear target to work toward."
|
|
520
|
+
title: b("mybodyshield.pages.dashboard.noActiveGoals", "No active goals"),
|
|
521
|
+
description: b("mybodyshield.pages.dashboard.noActiveGoalsDescription", "Set a goal to give your training and nutrition a clear target to work toward.")
|
|
505
522
|
}) : /* @__PURE__ */ O("div", {
|
|
506
523
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
507
|
-
children:
|
|
508
|
-
let n =
|
|
524
|
+
children: U.slice(0, 6).map((e, t) => {
|
|
525
|
+
let n = v(e), o = ce[e.type], s = o.icon;
|
|
509
526
|
return /* @__PURE__ */ O(m.button, {
|
|
510
527
|
type: "button",
|
|
511
|
-
onClick: () =>
|
|
528
|
+
onClick: () => E("goals"),
|
|
512
529
|
className: "text-left",
|
|
513
|
-
...
|
|
514
|
-
...
|
|
530
|
+
...P(t),
|
|
531
|
+
...I,
|
|
515
532
|
children: /* @__PURE__ */ k(A, {
|
|
516
533
|
treatment: "plain",
|
|
517
534
|
className: "h-full p-4 transition-shadow hover:shadow-float",
|
|
@@ -532,7 +549,7 @@ function N() {
|
|
|
532
549
|
})]
|
|
533
550
|
}), /* @__PURE__ */ k("div", {
|
|
534
551
|
className: "mt-3 space-y-1.5",
|
|
535
|
-
children: [/* @__PURE__ */ O(
|
|
552
|
+
children: [/* @__PURE__ */ O(_, { value: n }), /* @__PURE__ */ k("div", {
|
|
536
553
|
className: "flex items-center justify-between text-xs",
|
|
537
554
|
children: [/* @__PURE__ */ k("span", {
|
|
538
555
|
className: "tabular-nums text-text-secondary",
|
|
@@ -554,31 +571,35 @@ function N() {
|
|
|
554
571
|
})
|
|
555
572
|
})
|
|
556
573
|
}),
|
|
557
|
-
/* @__PURE__ */ O(
|
|
574
|
+
/* @__PURE__ */ O(p, {
|
|
558
575
|
"data-tour": "mybodyshield-dashboard-recent-sessions",
|
|
559
|
-
title: "Recent sessions",
|
|
560
|
-
description: "Your latest logged and scheduled workouts.",
|
|
576
|
+
title: b("mybodyshield.pages.dashboard.recentSessions", "Recent sessions"),
|
|
577
|
+
description: b("mybodyshield.pages.dashboard.recentSessionsDescription", "Your latest logged and scheduled workouts."),
|
|
561
578
|
action: /* @__PURE__ */ k("button", {
|
|
562
579
|
type: "button",
|
|
563
|
-
onClick: () =>
|
|
580
|
+
onClick: () => E("train"),
|
|
564
581
|
className: "inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline",
|
|
565
|
-
children: [
|
|
582
|
+
children: [
|
|
583
|
+
b("mybodyshield.pages.dashboard.allSessions", "All sessions"),
|
|
584
|
+
" ",
|
|
585
|
+
/* @__PURE__ */ O(y, { className: "h-4 w-4" })
|
|
586
|
+
]
|
|
566
587
|
}),
|
|
567
|
-
children:
|
|
588
|
+
children: H.length === 0 ? /* @__PURE__ */ O(l, {
|
|
568
589
|
illustration: "empty-data",
|
|
569
|
-
icon: /* @__PURE__ */ O(
|
|
570
|
-
title: "No sessions yet",
|
|
571
|
-
description: "Start a workout session to begin logging sets and tracking your training."
|
|
590
|
+
icon: /* @__PURE__ */ O(C, { className: "h-10 w-10" }),
|
|
591
|
+
title: b("mybodyshield.pages.dashboard.noSessions", "No sessions yet"),
|
|
592
|
+
description: b("mybodyshield.pages.dashboard.noSessionsDescription", "Start a workout session to begin logging sets and tracking your training.")
|
|
572
593
|
}) : /* @__PURE__ */ O("div", {
|
|
573
594
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
574
|
-
children:
|
|
595
|
+
children: H.slice(0, 6).map((e, t) => {
|
|
575
596
|
let n = de.STRENGTH, r = e.status === "COMPLETED" ? x : n.icon;
|
|
576
597
|
return /* @__PURE__ */ O(m.button, {
|
|
577
598
|
type: "button",
|
|
578
|
-
onClick: () =>
|
|
599
|
+
onClick: () => E(`train/${e.id}`),
|
|
579
600
|
className: "text-left",
|
|
580
|
-
...
|
|
581
|
-
...
|
|
601
|
+
...P(t),
|
|
602
|
+
...I,
|
|
582
603
|
children: /* @__PURE__ */ k(A, {
|
|
583
604
|
treatment: "plain",
|
|
584
605
|
className: "p-4 transition-shadow hover:shadow-float",
|
|
@@ -592,7 +613,7 @@ function N() {
|
|
|
592
613
|
}),
|
|
593
614
|
/* @__PURE__ */ O("p", {
|
|
594
615
|
className: "mt-3 text-sm font-medium text-text-primary",
|
|
595
|
-
children: e.caloriesBurned > 0 ?
|
|
616
|
+
children: e.caloriesBurned > 0 ? b("mybodyshield.pages.dashboard.kcalBurned", "{{kcal}} kcal burned", { kcal: i(e.caloriesBurned) }) : b("mybodyshield.pages.dashboard.workoutSession", "Workout session")
|
|
596
617
|
}),
|
|
597
618
|
/* @__PURE__ */ O("p", {
|
|
598
619
|
className: "mt-0.5 text-xs text-text-tertiary",
|