@titan-design/react-ui 0.3.0 → 0.4.0
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/bodymap.js +441 -97
- package/dist/bodymap.js.map +1 -1
- package/dist/bodymap.mjs +49 -62
- package/dist/bodymap.mjs.map +1 -1
- package/dist/{chunk-TOD2WQBG.mjs → chunk-2SISKTWM.mjs} +22 -43
- package/dist/chunk-2SISKTWM.mjs.map +1 -0
- package/dist/{chunk-P7TSQUN6.mjs → chunk-SNVKL5WZ.mjs} +42 -5
- package/dist/chunk-SNVKL5WZ.mjs.map +1 -0
- package/dist/index.d.mts +42 -2
- package/dist/index.d.ts +42 -2
- package/dist/index.js +431 -328
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +397 -314
- package/dist/index.mjs.map +1 -1
- package/dist/theme/index.d.mts +28 -2
- package/dist/theme/index.d.ts +28 -2
- package/dist/theme/index.js +37 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/index.mjs +1 -1
- package/package.json +1 -1
- package/src/components/custom/Workout/ActiveWorkoutPage.tsx +10 -15
- package/src/components/custom/Workout/BodyMap.tsx +7 -8
- package/src/components/custom/Workout/BodyMapDetailPanel.tsx +25 -28
- package/src/components/custom/Workout/CapacityBandChart.tsx +2 -3
- package/src/components/custom/Workout/ExerciseCard.tsx +12 -27
- package/src/components/custom/Workout/ExerciseDetailPage.tsx +21 -27
- package/src/components/custom/Workout/InputBar.tsx +10 -11
- package/src/components/custom/Workout/MesoCard.tsx +2 -6
- package/src/components/custom/Workout/MesoStatusCard.tsx +17 -15
- package/src/components/custom/Workout/MuscleGroupChip.tsx +2 -4
- package/src/components/custom/Workout/PlaceholderStrip.tsx +2 -3
- package/src/components/custom/Workout/PrHistoryModal.tsx +12 -14
- package/src/components/custom/Workout/ProgramPlanningPage.tsx +8 -12
- package/src/components/custom/Workout/ReadinessCheck.tsx +13 -11
- package/src/components/custom/Workout/RestTimer.tsx +8 -7
- package/src/components/custom/Workout/SetRow.tsx +10 -7
- package/src/components/custom/Workout/StrengthTrendChart.tsx +15 -17
- package/src/components/custom/Workout/TempoBar.stories.tsx +95 -0
- package/src/components/custom/Workout/TempoBar.test.tsx +103 -0
- package/src/components/custom/Workout/TempoBar.tsx +215 -0
- package/src/components/custom/Workout/TrainingStatusPage.tsx +8 -17
- package/src/components/custom/Workout/VelocityStrip.tsx +7 -5
- package/src/components/custom/Workout/WeekRow.tsx +2 -1
- package/src/components/custom/Workout/WorkoutCard.tsx +3 -8
- package/src/components/custom/Workout/index.ts +9 -0
- package/src/test/nativewind-stub.ts +13 -0
- package/src/theme/ThemeProvider.test.tsx +24 -0
- package/src/theme/ThemeProvider.tsx +50 -0
- package/src/theme/index.ts +2 -0
- package/src/theme/resolve-color.ts +19 -0
- package/dist/chunk-P7TSQUN6.mjs.map +0 -1
- package/dist/chunk-TOD2WQBG.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ var clsx = require('clsx');
|
|
|
5
5
|
var tailwindMerge = require('tailwind-merge');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var React24 = require('react');
|
|
8
|
+
var nativewind = require('nativewind');
|
|
8
9
|
var lucideReact = require('lucide-react');
|
|
9
10
|
|
|
10
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -2160,6 +2161,21 @@ function validateCssPropertyManifest(candidate) {
|
|
|
2160
2161
|
function isCssPropertyManifest(candidate) {
|
|
2161
2162
|
return validateCssPropertyManifest(candidate).valid;
|
|
2162
2163
|
}
|
|
2164
|
+
var MODE_VARS = {
|
|
2165
|
+
dark: nativewind.vars(darkThemeCSSVars),
|
|
2166
|
+
light: nativewind.vars(lightThemeCSSVars)
|
|
2167
|
+
};
|
|
2168
|
+
function ThemeProvider({
|
|
2169
|
+
mode = "dark",
|
|
2170
|
+
style,
|
|
2171
|
+
children,
|
|
2172
|
+
...props
|
|
2173
|
+
}) {
|
|
2174
|
+
return /* @__PURE__ */ jsx(reactNative.View, { style: [MODE_VARS[mode], { flex: 1 }, style], ...props, children });
|
|
2175
|
+
}
|
|
2176
|
+
function resolveColor(token, mode = "dark") {
|
|
2177
|
+
return reactNative.Platform.OS === "web" ? `var(--color-${token})` : getSemanticColors(mode)[token];
|
|
2178
|
+
}
|
|
2163
2179
|
|
|
2164
2180
|
// src/theme/presets/apply.ts
|
|
2165
2181
|
function colorKeyToVar(key) {
|
|
@@ -4985,7 +5001,7 @@ function ToastProvider({
|
|
|
4985
5001
|
return id;
|
|
4986
5002
|
}, [defaultDuration, maxToasts]);
|
|
4987
5003
|
const removeToast = React24.useCallback((id) => {
|
|
4988
|
-
setToasts((prev) => prev.filter((
|
|
5004
|
+
setToasts((prev) => prev.filter((t2) => t2.id !== id));
|
|
4989
5005
|
}, []);
|
|
4990
5006
|
const removeAllToasts = React24.useCallback(() => {
|
|
4991
5007
|
setToasts([]);
|
|
@@ -7121,14 +7137,13 @@ function SingleStrip({
|
|
|
7121
7137
|
return /* @__PURE__ */ jsx(
|
|
7122
7138
|
reactNative.View,
|
|
7123
7139
|
{
|
|
7124
|
-
className: cn(className),
|
|
7140
|
+
className: cn("border-border-strong", className),
|
|
7125
7141
|
style: [
|
|
7126
7142
|
{
|
|
7127
7143
|
height: 3,
|
|
7128
7144
|
backgroundColor: "transparent",
|
|
7129
7145
|
borderWidth: 1,
|
|
7130
7146
|
borderStyle: "dashed",
|
|
7131
|
-
borderColor: "var(--color-border-strong)",
|
|
7132
7147
|
borderRadius: 1,
|
|
7133
7148
|
opacity: 0.5
|
|
7134
7149
|
},
|
|
@@ -7162,13 +7177,13 @@ function SegmentedStrip({
|
|
|
7162
7177
|
children: Array.from({ length: segments }, (_, i) => /* @__PURE__ */ jsx(
|
|
7163
7178
|
reactNative.View,
|
|
7164
7179
|
{
|
|
7180
|
+
className: "border-border-strong",
|
|
7165
7181
|
style: {
|
|
7166
7182
|
flex: 1,
|
|
7167
7183
|
height: 3,
|
|
7168
7184
|
backgroundColor: "transparent",
|
|
7169
7185
|
borderWidth: 1,
|
|
7170
7186
|
borderStyle: "dashed",
|
|
7171
|
-
borderColor: "var(--color-border-strong)",
|
|
7172
7187
|
borderRadius: 1,
|
|
7173
7188
|
minWidth: 4
|
|
7174
7189
|
},
|
|
@@ -7455,6 +7470,198 @@ function TempoDisplay({
|
|
|
7455
7470
|
}
|
|
7456
7471
|
);
|
|
7457
7472
|
}
|
|
7473
|
+
|
|
7474
|
+
// src/utils/colors.ts
|
|
7475
|
+
function getStatusColor(status) {
|
|
7476
|
+
return `var(--color-status-${status})`;
|
|
7477
|
+
}
|
|
7478
|
+
function getResultColor(result) {
|
|
7479
|
+
return `var(--color-result-${result})`;
|
|
7480
|
+
}
|
|
7481
|
+
function alpha(color, opacity) {
|
|
7482
|
+
const clampedOpacity = Math.max(0, Math.min(1, opacity));
|
|
7483
|
+
if (color.startsWith("#")) {
|
|
7484
|
+
const hex = color.slice(1);
|
|
7485
|
+
let r, g, b;
|
|
7486
|
+
if (hex.length === 3) {
|
|
7487
|
+
r = parseInt(hex[0] + hex[0], 16);
|
|
7488
|
+
g = parseInt(hex[1] + hex[1], 16);
|
|
7489
|
+
b = parseInt(hex[2] + hex[2], 16);
|
|
7490
|
+
} else if (hex.length === 6) {
|
|
7491
|
+
r = parseInt(hex.slice(0, 2), 16);
|
|
7492
|
+
g = parseInt(hex.slice(2, 4), 16);
|
|
7493
|
+
b = parseInt(hex.slice(4, 6), 16);
|
|
7494
|
+
} else {
|
|
7495
|
+
return color;
|
|
7496
|
+
}
|
|
7497
|
+
return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
|
|
7498
|
+
}
|
|
7499
|
+
const rgbMatch = color.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
7500
|
+
if (rgbMatch) {
|
|
7501
|
+
const [, r, g, b] = rgbMatch;
|
|
7502
|
+
return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
|
|
7503
|
+
}
|
|
7504
|
+
const rgbaMatch = color.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)/);
|
|
7505
|
+
if (rgbaMatch) {
|
|
7506
|
+
const [, r, g, b] = rgbaMatch;
|
|
7507
|
+
return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
|
|
7508
|
+
}
|
|
7509
|
+
return color;
|
|
7510
|
+
}
|
|
7511
|
+
function getLuminance(color) {
|
|
7512
|
+
if (!color.startsWith("#")) return "dark";
|
|
7513
|
+
const hex = color.slice(1);
|
|
7514
|
+
let r, g, b;
|
|
7515
|
+
if (hex.length === 3) {
|
|
7516
|
+
r = parseInt(hex[0] + hex[0], 16);
|
|
7517
|
+
g = parseInt(hex[1] + hex[1], 16);
|
|
7518
|
+
b = parseInt(hex[2] + hex[2], 16);
|
|
7519
|
+
} else if (hex.length === 6) {
|
|
7520
|
+
r = parseInt(hex.slice(0, 2), 16);
|
|
7521
|
+
g = parseInt(hex.slice(2, 4), 16);
|
|
7522
|
+
b = parseInt(hex.slice(4, 6), 16);
|
|
7523
|
+
} else {
|
|
7524
|
+
return "dark";
|
|
7525
|
+
}
|
|
7526
|
+
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
|
7527
|
+
return luminance > 0.5 ? "light" : "dark";
|
|
7528
|
+
}
|
|
7529
|
+
function getContrastText(backgroundColor) {
|
|
7530
|
+
return getLuminance(backgroundColor) === "light" ? "#000000" : "#FFFFFF";
|
|
7531
|
+
}
|
|
7532
|
+
|
|
7533
|
+
// src/components/custom/Workout/TempoBar.tsx
|
|
7534
|
+
var t = getSemanticColors("dark");
|
|
7535
|
+
var TEMPO_PACING = {
|
|
7536
|
+
behindThresholdPct: 0.15,
|
|
7537
|
+
minPhaseDurationMs: 500
|
|
7538
|
+
};
|
|
7539
|
+
function getTempoPacingState(elapsedMs, targetMs) {
|
|
7540
|
+
if (!targetMs || targetMs < TEMPO_PACING.minPhaseDurationMs) return "none";
|
|
7541
|
+
const ratio = elapsedMs / targetMs;
|
|
7542
|
+
if (ratio > 1 + TEMPO_PACING.behindThresholdPct) return "behind";
|
|
7543
|
+
return "on-pace";
|
|
7544
|
+
}
|
|
7545
|
+
function getTempoFillPct(elapsedMs, targetMs) {
|
|
7546
|
+
if (!targetMs) return 100;
|
|
7547
|
+
return Math.min(100, elapsedMs / targetMs * 100);
|
|
7548
|
+
}
|
|
7549
|
+
var PHASE_ORDER = ["concentric", "hold", "eccentric"];
|
|
7550
|
+
var PHASE_CONFIG = {
|
|
7551
|
+
concentric: { label: "Con", color: t["status-success"], flex: 2 },
|
|
7552
|
+
hold: { label: "Hold", color: t["brand-primary"], flex: 1 },
|
|
7553
|
+
eccentric: { label: "Ecc", color: t["status-warning"], flex: 3 }
|
|
7554
|
+
};
|
|
7555
|
+
function TempoBar({
|
|
7556
|
+
activePhase,
|
|
7557
|
+
phaseElapsedMs,
|
|
7558
|
+
completed,
|
|
7559
|
+
target,
|
|
7560
|
+
className,
|
|
7561
|
+
...props
|
|
7562
|
+
}) {
|
|
7563
|
+
return /* @__PURE__ */ jsxs(reactNative.View, { className, testID: "tempo-bar", ...props, children: [
|
|
7564
|
+
/* @__PURE__ */ jsx(reactNative.View, { style: { flexDirection: "row", marginBottom: 4 }, children: PHASE_ORDER.map((phase) => {
|
|
7565
|
+
const config = PHASE_CONFIG[phase];
|
|
7566
|
+
return /* @__PURE__ */ jsx(reactNative.View, { style: { flex: config.flex, alignItems: "center" }, children: /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 10, color: t["text-disabled"] }, children: config.label }) }, phase);
|
|
7567
|
+
}) }),
|
|
7568
|
+
/* @__PURE__ */ jsx(reactNative.View, { style: { flexDirection: "row", gap: 2, height: 20 }, children: PHASE_ORDER.map((phase) => {
|
|
7569
|
+
const config = PHASE_CONFIG[phase];
|
|
7570
|
+
const isActive = activePhase === phase;
|
|
7571
|
+
const completedMs = completed?.[phase];
|
|
7572
|
+
const targetSec = target?.[phase];
|
|
7573
|
+
const targetMs = targetSec != null ? targetSec * 1e3 : null;
|
|
7574
|
+
return /* @__PURE__ */ jsx(
|
|
7575
|
+
reactNative.View,
|
|
7576
|
+
{
|
|
7577
|
+
style: {
|
|
7578
|
+
flex: config.flex,
|
|
7579
|
+
backgroundColor: alpha("#ffffff", 0.06),
|
|
7580
|
+
borderRadius: 4,
|
|
7581
|
+
overflow: "hidden"
|
|
7582
|
+
},
|
|
7583
|
+
children: isActive ? /* @__PURE__ */ jsx(
|
|
7584
|
+
ActiveSegment,
|
|
7585
|
+
{
|
|
7586
|
+
config,
|
|
7587
|
+
phaseElapsedMs,
|
|
7588
|
+
targetMs
|
|
7589
|
+
}
|
|
7590
|
+
) : completedMs != null ? /* @__PURE__ */ jsx(CompletedSegment, { config, completedMs, targetMs }) : null
|
|
7591
|
+
},
|
|
7592
|
+
phase
|
|
7593
|
+
);
|
|
7594
|
+
}) })
|
|
7595
|
+
] });
|
|
7596
|
+
}
|
|
7597
|
+
function ActiveSegment({
|
|
7598
|
+
config,
|
|
7599
|
+
phaseElapsedMs,
|
|
7600
|
+
targetMs
|
|
7601
|
+
}) {
|
|
7602
|
+
const pacing = getTempoPacingState(phaseElapsedMs, targetMs);
|
|
7603
|
+
const barColor = pacing === "behind" ? t["status-error"] : config.color;
|
|
7604
|
+
const fillPct = getTempoFillPct(phaseElapsedMs, targetMs);
|
|
7605
|
+
const label = targetMs ? `${formatDuration(phaseElapsedMs)} / ${formatDuration(targetMs)}` : formatDuration(phaseElapsedMs);
|
|
7606
|
+
return /* @__PURE__ */ jsxs(reactNative.View, { style: { height: "100%", position: "relative" }, testID: `tempo-segment-active-${config.label}`, children: [
|
|
7607
|
+
/* @__PURE__ */ jsx(
|
|
7608
|
+
reactNative.View,
|
|
7609
|
+
{
|
|
7610
|
+
style: {
|
|
7611
|
+
position: "absolute",
|
|
7612
|
+
left: 0,
|
|
7613
|
+
top: 0,
|
|
7614
|
+
bottom: 0,
|
|
7615
|
+
width: `${fillPct}%`,
|
|
7616
|
+
backgroundColor: alpha(barColor, 0.3),
|
|
7617
|
+
borderRadius: 4
|
|
7618
|
+
}
|
|
7619
|
+
}
|
|
7620
|
+
),
|
|
7621
|
+
/* @__PURE__ */ jsx(
|
|
7622
|
+
reactNative.View,
|
|
7623
|
+
{
|
|
7624
|
+
style: {
|
|
7625
|
+
height: "100%",
|
|
7626
|
+
flexDirection: "row",
|
|
7627
|
+
alignItems: "center",
|
|
7628
|
+
justifyContent: "center"
|
|
7629
|
+
},
|
|
7630
|
+
children: /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 12, fontWeight: "700", color: barColor }, children: label })
|
|
7631
|
+
}
|
|
7632
|
+
)
|
|
7633
|
+
] });
|
|
7634
|
+
}
|
|
7635
|
+
function CompletedSegment({
|
|
7636
|
+
config,
|
|
7637
|
+
completedMs,
|
|
7638
|
+
targetMs
|
|
7639
|
+
}) {
|
|
7640
|
+
const pacing = getTempoPacingState(completedMs, targetMs);
|
|
7641
|
+
const hitTarget = pacing !== "behind";
|
|
7642
|
+
const indicator = targetMs && targetMs >= TEMPO_PACING.minPhaseDurationMs ? hitTarget ? " \u2713" : " \u2717" : "";
|
|
7643
|
+
return /* @__PURE__ */ jsx(
|
|
7644
|
+
reactNative.View,
|
|
7645
|
+
{
|
|
7646
|
+
style: {
|
|
7647
|
+
height: "100%",
|
|
7648
|
+
flexDirection: "row",
|
|
7649
|
+
alignItems: "center",
|
|
7650
|
+
justifyContent: "center",
|
|
7651
|
+
backgroundColor: alpha(config.color, 0.15)
|
|
7652
|
+
},
|
|
7653
|
+
testID: `tempo-segment-completed-${config.label}`,
|
|
7654
|
+
children: /* @__PURE__ */ jsxs(reactNative.Text, { style: { fontSize: 12, fontWeight: "500", color: alpha(config.color, 0.7) }, children: [
|
|
7655
|
+
formatDuration(completedMs),
|
|
7656
|
+
indicator
|
|
7657
|
+
] })
|
|
7658
|
+
}
|
|
7659
|
+
);
|
|
7660
|
+
}
|
|
7661
|
+
function formatDuration(ms) {
|
|
7662
|
+
const s = ms / 1e3;
|
|
7663
|
+
return s < 10 ? s.toFixed(1) : Math.round(s).toString();
|
|
7664
|
+
}
|
|
7458
7665
|
function getDotColor(deviation) {
|
|
7459
7666
|
const abs = Math.abs(deviation);
|
|
7460
7667
|
if (deviation < -0.3) return "#14B8A6";
|
|
@@ -7937,7 +8144,7 @@ function VelocityStrip({
|
|
|
7937
8144
|
const stripContent = /* @__PURE__ */ jsxs(
|
|
7938
8145
|
reactNative.Animated.View,
|
|
7939
8146
|
{
|
|
7940
|
-
className,
|
|
8147
|
+
className: [className, expanded ? "bg-surface-raised" : "bg-transparent"].filter(Boolean).join(" "),
|
|
7941
8148
|
style: [
|
|
7942
8149
|
{
|
|
7943
8150
|
height: heightAnim,
|
|
@@ -7948,7 +8155,6 @@ function VelocityStrip({
|
|
|
7948
8155
|
paddingBottom: expanded ? 24 : 0,
|
|
7949
8156
|
paddingHorizontal: expanded ? 6 : 0,
|
|
7950
8157
|
paddingVertical: expanded ? void 0 : 8,
|
|
7951
|
-
backgroundColor: expanded ? "var(--color-surface-raised)" : "transparent",
|
|
7952
8158
|
overflow: expanded ? "visible" : "hidden"
|
|
7953
8159
|
}
|
|
7954
8160
|
],
|
|
@@ -7972,7 +8178,8 @@ function VelocityStrip({
|
|
|
7972
8178
|
expanded && /* @__PURE__ */ jsx(reactNative.Animated.View, { style: { opacity: labelOpacity, alignItems: "center", position: "absolute", top: -13, left: 0, right: 0 }, accessibilityElementsHidden: true, children: /* @__PURE__ */ jsx(
|
|
7973
8179
|
reactNative.Text,
|
|
7974
8180
|
{
|
|
7975
|
-
|
|
8181
|
+
className: "text-text-secondary",
|
|
8182
|
+
style: { fontSize: 8, fontWeight: "600" },
|
|
7976
8183
|
testID: `velocity-label-${i}`,
|
|
7977
8184
|
children: formatVelocity(v)
|
|
7978
8185
|
}
|
|
@@ -8032,9 +8239,9 @@ function VelocityStrip({
|
|
|
8032
8239
|
/* @__PURE__ */ jsxs(
|
|
8033
8240
|
reactNative.Text,
|
|
8034
8241
|
{
|
|
8242
|
+
className: "text-text-secondary",
|
|
8035
8243
|
style: {
|
|
8036
8244
|
fontSize: 10,
|
|
8037
|
-
color: "var(--color-text-secondary)",
|
|
8038
8245
|
fontFamily: "Inter, sans-serif"
|
|
8039
8246
|
},
|
|
8040
8247
|
children: [
|
|
@@ -8050,9 +8257,9 @@ function VelocityStrip({
|
|
|
8050
8257
|
/* @__PURE__ */ jsxs(
|
|
8051
8258
|
reactNative.Text,
|
|
8052
8259
|
{
|
|
8260
|
+
className: "text-text-secondary",
|
|
8053
8261
|
style: {
|
|
8054
8262
|
fontSize: 10,
|
|
8055
|
-
color: "var(--color-text-secondary)",
|
|
8056
8263
|
fontFamily: "Inter, sans-serif",
|
|
8057
8264
|
...getLossStyle(loss)
|
|
8058
8265
|
},
|
|
@@ -8102,16 +8309,14 @@ function MuscleGroupChip({
|
|
|
8102
8309
|
const content = /* @__PURE__ */ jsxs(
|
|
8103
8310
|
reactNative.View,
|
|
8104
8311
|
{
|
|
8105
|
-
className,
|
|
8312
|
+
className: ["bg-surface-raised border-border", className].filter(Boolean).join(" "),
|
|
8106
8313
|
style: {
|
|
8107
8314
|
flexDirection: "row",
|
|
8108
8315
|
alignItems: "center",
|
|
8109
8316
|
borderRadius: 9999,
|
|
8110
8317
|
paddingHorizontal: 9,
|
|
8111
8318
|
paddingVertical: 3,
|
|
8112
|
-
|
|
8113
|
-
borderWidth: 1,
|
|
8114
|
-
borderColor: "var(--color-border-default)"
|
|
8319
|
+
borderWidth: 1
|
|
8115
8320
|
},
|
|
8116
8321
|
accessibilityLabel: onPress ? void 0 : `${name}, volume status: ${statusLabel}`,
|
|
8117
8322
|
testID: "muscle-group-chip",
|
|
@@ -8135,11 +8340,11 @@ function MuscleGroupChip({
|
|
|
8135
8340
|
/* @__PURE__ */ jsx(
|
|
8136
8341
|
reactNative.Text,
|
|
8137
8342
|
{
|
|
8343
|
+
className: "text-text-secondary",
|
|
8138
8344
|
style: {
|
|
8139
8345
|
fontFamily: "Inter, sans-serif",
|
|
8140
8346
|
fontWeight: "500",
|
|
8141
|
-
fontSize: 11
|
|
8142
|
-
color: "var(--color-text-secondary)"
|
|
8347
|
+
fontSize: 11
|
|
8143
8348
|
},
|
|
8144
8349
|
accessibilityElementsHidden: true,
|
|
8145
8350
|
children: name
|
|
@@ -8389,11 +8594,11 @@ function SetRow({
|
|
|
8389
8594
|
) : /* @__PURE__ */ jsx(
|
|
8390
8595
|
reactNative.Text,
|
|
8391
8596
|
{
|
|
8597
|
+
className: "text-text-secondary",
|
|
8392
8598
|
style: {
|
|
8393
8599
|
fontSize: 13,
|
|
8394
8600
|
fontWeight: "600",
|
|
8395
|
-
fontFamily: "Inter, sans-serif"
|
|
8396
|
-
color: "var(--color-text-secondary)"
|
|
8601
|
+
fontFamily: "Inter, sans-serif"
|
|
8397
8602
|
},
|
|
8398
8603
|
children: setNumber
|
|
8399
8604
|
}
|
|
@@ -8408,10 +8613,10 @@ function SetRow({
|
|
|
8408
8613
|
children: /* @__PURE__ */ jsx(
|
|
8409
8614
|
reactNative.Text,
|
|
8410
8615
|
{
|
|
8616
|
+
className: "text-text-secondary",
|
|
8411
8617
|
style: {
|
|
8412
8618
|
fontSize: 12,
|
|
8413
|
-
fontFamily: "Inter, sans-serif"
|
|
8414
|
-
color: "var(--color-text-secondary)"
|
|
8619
|
+
fontFamily: "Inter, sans-serif"
|
|
8415
8620
|
},
|
|
8416
8621
|
children: previous ? `${previous.reps} x ${roundWeight(previous.weight)}` : "\u2014"
|
|
8417
8622
|
}
|
|
@@ -8426,11 +8631,11 @@ function SetRow({
|
|
|
8426
8631
|
children: isActive && reps == null && targets ? /* @__PURE__ */ jsx(
|
|
8427
8632
|
reactNative.Text,
|
|
8428
8633
|
{
|
|
8634
|
+
className: "text-text-tertiary",
|
|
8429
8635
|
style: {
|
|
8430
8636
|
fontSize: 13,
|
|
8431
8637
|
fontStyle: "italic",
|
|
8432
|
-
fontFamily: "Inter, sans-serif"
|
|
8433
|
-
color: "var(--color-text-tertiary)"
|
|
8638
|
+
fontFamily: "Inter, sans-serif"
|
|
8434
8639
|
},
|
|
8435
8640
|
testID: "set-row-target-reps",
|
|
8436
8641
|
children: targets.reps
|
|
@@ -8438,11 +8643,11 @@ function SetRow({
|
|
|
8438
8643
|
) : /* @__PURE__ */ jsx(
|
|
8439
8644
|
reactNative.Text,
|
|
8440
8645
|
{
|
|
8646
|
+
className: reps != null ? "text-text-primary" : "text-text-tertiary",
|
|
8441
8647
|
style: {
|
|
8442
8648
|
fontSize: 14,
|
|
8443
8649
|
fontWeight: "600",
|
|
8444
|
-
fontFamily: "Inter, sans-serif"
|
|
8445
|
-
color: reps != null ? "var(--color-text-primary)" : "var(--color-text-tertiary)"
|
|
8650
|
+
fontFamily: "Inter, sans-serif"
|
|
8446
8651
|
},
|
|
8447
8652
|
children: reps != null ? reps : "\u2014"
|
|
8448
8653
|
}
|
|
@@ -8457,11 +8662,11 @@ function SetRow({
|
|
|
8457
8662
|
children: isActive && weight == null && targets ? /* @__PURE__ */ jsx(
|
|
8458
8663
|
reactNative.Text,
|
|
8459
8664
|
{
|
|
8665
|
+
className: "text-text-tertiary",
|
|
8460
8666
|
style: {
|
|
8461
8667
|
fontSize: 13,
|
|
8462
8668
|
fontStyle: "italic",
|
|
8463
|
-
fontFamily: "Inter, sans-serif"
|
|
8464
|
-
color: "var(--color-text-tertiary)"
|
|
8669
|
+
fontFamily: "Inter, sans-serif"
|
|
8465
8670
|
},
|
|
8466
8671
|
testID: "set-row-target-weight",
|
|
8467
8672
|
children: roundWeight(targets.weight)
|
|
@@ -8469,11 +8674,11 @@ function SetRow({
|
|
|
8469
8674
|
) : /* @__PURE__ */ jsx(
|
|
8470
8675
|
reactNative.Text,
|
|
8471
8676
|
{
|
|
8677
|
+
className: weight != null ? "text-text-primary" : "text-text-tertiary",
|
|
8472
8678
|
style: {
|
|
8473
8679
|
fontSize: 14,
|
|
8474
8680
|
fontWeight: "600",
|
|
8475
|
-
fontFamily: "Inter, sans-serif"
|
|
8476
|
-
color: weight != null ? "var(--color-text-primary)" : "var(--color-text-tertiary)"
|
|
8681
|
+
fontFamily: "Inter, sans-serif"
|
|
8477
8682
|
},
|
|
8478
8683
|
children: weight != null ? roundWeight(weight) : "\u2014"
|
|
8479
8684
|
}
|
|
@@ -8488,11 +8693,14 @@ function SetRow({
|
|
|
8488
8693
|
children: /* @__PURE__ */ jsx(
|
|
8489
8694
|
reactNative.Text,
|
|
8490
8695
|
{
|
|
8696
|
+
className: rpe != null ? void 0 : "text-text-tertiary",
|
|
8491
8697
|
style: {
|
|
8492
8698
|
fontSize: 13,
|
|
8493
8699
|
fontWeight: "600",
|
|
8494
8700
|
fontFamily: "Inter, sans-serif",
|
|
8495
|
-
|
|
8701
|
+
// rpeColor returns a concrete hex (native-safe); only the tertiary
|
|
8702
|
+
// fallback needs the className token.
|
|
8703
|
+
color: rpe != null ? rpeColor(rpe) : void 0
|
|
8496
8704
|
},
|
|
8497
8705
|
children: rpe != null ? roundRpe(rpe) : "\u2014"
|
|
8498
8706
|
}
|
|
@@ -8538,18 +8746,14 @@ function SetRow({
|
|
|
8538
8746
|
);
|
|
8539
8747
|
}
|
|
8540
8748
|
var BRAND_PRIMARY2 = "#FF7900";
|
|
8541
|
-
var
|
|
8542
|
-
var TEXT_TERTIARY2 = "var(--color-text-tertiary)";
|
|
8749
|
+
var INPUT_CLASSNAME = "bg-surface-raised border-border-strong text-text-primary";
|
|
8543
8750
|
var inputStyle = {
|
|
8544
8751
|
fontSize: 14,
|
|
8545
8752
|
fontWeight: "600",
|
|
8546
8753
|
fontFamily: "Inter, sans-serif",
|
|
8547
|
-
backgroundColor: "var(--color-surface-raised)",
|
|
8548
8754
|
borderWidth: 1,
|
|
8549
|
-
borderColor: "var(--color-border-strong)",
|
|
8550
8755
|
borderRadius: 6,
|
|
8551
8756
|
textAlign: "center",
|
|
8552
|
-
color: TEXT_PRIMARY,
|
|
8553
8757
|
paddingVertical: 5,
|
|
8554
8758
|
paddingHorizontal: 2
|
|
8555
8759
|
};
|
|
@@ -8571,11 +8775,11 @@ function InputBar({
|
|
|
8571
8775
|
return /* @__PURE__ */ jsxs(
|
|
8572
8776
|
reactNative.View,
|
|
8573
8777
|
{
|
|
8778
|
+
className: "bg-surface-elevated",
|
|
8574
8779
|
style: {
|
|
8575
8780
|
width: "100%",
|
|
8576
|
-
backgroundColor: "var(--color-surface-elevated)",
|
|
8577
8781
|
borderTopWidth: 1,
|
|
8578
|
-
borderTopColor: "
|
|
8782
|
+
borderTopColor: resolveColor("border-default"),
|
|
8579
8783
|
paddingTop: 10,
|
|
8580
8784
|
paddingHorizontal: 16,
|
|
8581
8785
|
paddingBottom: 12,
|
|
@@ -8590,11 +8794,11 @@ function InputBar({
|
|
|
8590
8794
|
/* @__PURE__ */ jsx(
|
|
8591
8795
|
reactNative.Text,
|
|
8592
8796
|
{
|
|
8797
|
+
className: "text-text-primary",
|
|
8593
8798
|
style: {
|
|
8594
8799
|
fontSize: 12,
|
|
8595
8800
|
fontWeight: "700",
|
|
8596
|
-
fontFamily: '"Space Grotesk", sans-serif'
|
|
8597
|
-
color: TEXT_PRIMARY
|
|
8801
|
+
fontFamily: '"Space Grotesk", sans-serif'
|
|
8598
8802
|
},
|
|
8599
8803
|
testID: "input-bar-exercise-name",
|
|
8600
8804
|
numberOfLines: 1,
|
|
@@ -8604,10 +8808,10 @@ function InputBar({
|
|
|
8604
8808
|
/* @__PURE__ */ jsx(
|
|
8605
8809
|
reactNative.Text,
|
|
8606
8810
|
{
|
|
8811
|
+
className: "text-text-tertiary",
|
|
8607
8812
|
style: {
|
|
8608
8813
|
fontSize: 10,
|
|
8609
|
-
fontFamily: "Inter, sans-serif"
|
|
8610
|
-
color: TEXT_TERTIARY2
|
|
8814
|
+
fontFamily: "Inter, sans-serif"
|
|
8611
8815
|
},
|
|
8612
8816
|
testID: "input-bar-set-info",
|
|
8613
8817
|
children: setLabel
|
|
@@ -8620,6 +8824,7 @@ function InputBar({
|
|
|
8620
8824
|
{
|
|
8621
8825
|
value: reps,
|
|
8622
8826
|
onChangeText: onRepsChange,
|
|
8827
|
+
className: INPUT_CLASSNAME,
|
|
8623
8828
|
style: { ...inputStyle, width: 36 },
|
|
8624
8829
|
accessibilityLabel: "Reps",
|
|
8625
8830
|
testID: "input-bar-reps",
|
|
@@ -8629,10 +8834,10 @@ function InputBar({
|
|
|
8629
8834
|
/* @__PURE__ */ jsx(
|
|
8630
8835
|
reactNative.Text,
|
|
8631
8836
|
{
|
|
8837
|
+
className: "text-text-tertiary",
|
|
8632
8838
|
style: {
|
|
8633
8839
|
fontSize: 12,
|
|
8634
|
-
fontFamily: "Inter, sans-serif"
|
|
8635
|
-
color: TEXT_TERTIARY2
|
|
8840
|
+
fontFamily: "Inter, sans-serif"
|
|
8636
8841
|
},
|
|
8637
8842
|
children: "\xD7"
|
|
8638
8843
|
}
|
|
@@ -8642,6 +8847,7 @@ function InputBar({
|
|
|
8642
8847
|
{
|
|
8643
8848
|
value: weight,
|
|
8644
8849
|
onChangeText: onWeightChange,
|
|
8850
|
+
className: INPUT_CLASSNAME,
|
|
8645
8851
|
style: { ...inputStyle, width: 52 },
|
|
8646
8852
|
accessibilityLabel: `Weight in ${unit}`,
|
|
8647
8853
|
testID: "input-bar-weight",
|
|
@@ -8651,11 +8857,11 @@ function InputBar({
|
|
|
8651
8857
|
/* @__PURE__ */ jsx(
|
|
8652
8858
|
reactNative.Text,
|
|
8653
8859
|
{
|
|
8860
|
+
className: "text-text-tertiary",
|
|
8654
8861
|
style: {
|
|
8655
8862
|
fontSize: 12,
|
|
8656
8863
|
fontWeight: "500",
|
|
8657
|
-
fontFamily: "Inter, sans-serif"
|
|
8658
|
-
color: TEXT_TERTIARY2
|
|
8864
|
+
fontFamily: "Inter, sans-serif"
|
|
8659
8865
|
},
|
|
8660
8866
|
testID: "input-bar-unit",
|
|
8661
8867
|
children: unit
|
|
@@ -8715,11 +8921,11 @@ function RestTimer({
|
|
|
8715
8921
|
return /* @__PURE__ */ jsxs(
|
|
8716
8922
|
reactNative.View,
|
|
8717
8923
|
{
|
|
8924
|
+
className: "bg-surface-raised",
|
|
8718
8925
|
style: {
|
|
8719
8926
|
width: "100%",
|
|
8720
|
-
backgroundColor: "var(--color-surface-raised)",
|
|
8721
8927
|
borderTopWidth: 1,
|
|
8722
|
-
borderTopColor: "
|
|
8928
|
+
borderTopColor: resolveColor("border-default"),
|
|
8723
8929
|
paddingVertical: 12,
|
|
8724
8930
|
paddingHorizontal: 16
|
|
8725
8931
|
},
|
|
@@ -8741,13 +8947,13 @@ function RestTimer({
|
|
|
8741
8947
|
/* @__PURE__ */ jsx(
|
|
8742
8948
|
reactNative.Text,
|
|
8743
8949
|
{
|
|
8950
|
+
className: "text-text-secondary",
|
|
8744
8951
|
style: {
|
|
8745
8952
|
fontSize: 11,
|
|
8746
8953
|
fontFamily: "Inter, sans-serif",
|
|
8747
8954
|
fontWeight: "600",
|
|
8748
8955
|
textTransform: "uppercase",
|
|
8749
|
-
letterSpacing: 1
|
|
8750
|
-
color: "var(--color-text-secondary)"
|
|
8956
|
+
letterSpacing: 1
|
|
8751
8957
|
},
|
|
8752
8958
|
testID: "rest-timer-label",
|
|
8753
8959
|
children: "REST"
|
|
@@ -8756,10 +8962,10 @@ function RestTimer({
|
|
|
8756
8962
|
nextSetInfo != null && /* @__PURE__ */ jsx(
|
|
8757
8963
|
reactNative.Text,
|
|
8758
8964
|
{
|
|
8965
|
+
className: "text-text-tertiary",
|
|
8759
8966
|
style: {
|
|
8760
8967
|
fontSize: 11,
|
|
8761
8968
|
fontFamily: "Inter, sans-serif",
|
|
8762
|
-
color: "var(--color-text-tertiary)",
|
|
8763
8969
|
marginTop: 2
|
|
8764
8970
|
},
|
|
8765
8971
|
testID: "rest-timer-next-set",
|
|
@@ -8770,11 +8976,11 @@ function RestTimer({
|
|
|
8770
8976
|
/* @__PURE__ */ jsx(
|
|
8771
8977
|
reactNative.Text,
|
|
8772
8978
|
{
|
|
8979
|
+
className: "text-text-primary",
|
|
8773
8980
|
style: {
|
|
8774
8981
|
fontSize: 28,
|
|
8775
8982
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
8776
8983
|
fontWeight: "700",
|
|
8777
|
-
color: "var(--color-text-primary)",
|
|
8778
8984
|
fontVariant: ["tabular-nums"],
|
|
8779
8985
|
letterSpacing: -0.5
|
|
8780
8986
|
},
|
|
@@ -8788,9 +8994,9 @@ function RestTimer({
|
|
|
8788
8994
|
/* @__PURE__ */ jsx(
|
|
8789
8995
|
reactNative.View,
|
|
8790
8996
|
{
|
|
8997
|
+
className: "bg-border",
|
|
8791
8998
|
style: {
|
|
8792
8999
|
height: 3,
|
|
8793
|
-
backgroundColor: "var(--color-border-default)",
|
|
8794
9000
|
borderRadius: 2,
|
|
8795
9001
|
marginBottom: 12
|
|
8796
9002
|
},
|
|
@@ -8826,11 +9032,11 @@ function RestTimer({
|
|
|
8826
9032
|
children: /* @__PURE__ */ jsx(
|
|
8827
9033
|
reactNative.Text,
|
|
8828
9034
|
{
|
|
9035
|
+
className: "text-text-secondary",
|
|
8829
9036
|
style: {
|
|
8830
9037
|
fontSize: 11,
|
|
8831
9038
|
fontFamily: "Inter, sans-serif",
|
|
8832
|
-
fontWeight: "600"
|
|
8833
|
-
color: "var(--color-text-secondary)"
|
|
9039
|
+
fontWeight: "600"
|
|
8834
9040
|
},
|
|
8835
9041
|
children: "+30s"
|
|
8836
9042
|
}
|
|
@@ -8869,19 +9075,6 @@ function RestTimer({
|
|
|
8869
9075
|
}
|
|
8870
9076
|
);
|
|
8871
9077
|
}
|
|
8872
|
-
var COLORS = {
|
|
8873
|
-
// Theme-aware tokens: text foregrounds and this card's own surfaces/borders
|
|
8874
|
-
// must flip together so text stays readable in both light and dark. The
|
|
8875
|
-
// expanded/pressed surfaces are self-owned here (not from a themed Card), so
|
|
8876
|
-
// hardcoding dark values would leave dark-on-dark once the text flips.
|
|
8877
|
-
// react-native-web passes the CSS var through to the inline style.
|
|
8878
|
-
textPrimary: "var(--color-text-primary)",
|
|
8879
|
-
textSecondary: "var(--color-text-secondary)",
|
|
8880
|
-
textTertiary: "var(--color-text-tertiary)",
|
|
8881
|
-
surfaceRaised: "var(--color-surface-raised)",
|
|
8882
|
-
surfaceElevated: "var(--color-surface-elevated)",
|
|
8883
|
-
borderDefault: "var(--color-border-default)"
|
|
8884
|
-
};
|
|
8885
9078
|
function buildColumnHeaders(unit) {
|
|
8886
9079
|
return ["SET", "PREV", "REPS", unit.toUpperCase(), "RPE"];
|
|
8887
9080
|
}
|
|
@@ -8959,11 +9152,11 @@ function CollapsedCard({
|
|
|
8959
9152
|
children: /* @__PURE__ */ jsxs(
|
|
8960
9153
|
reactNative.View,
|
|
8961
9154
|
{
|
|
9155
|
+
className: pressed ? "bg-surface-raised" : void 0,
|
|
8962
9156
|
style: {
|
|
8963
9157
|
padding: 12,
|
|
8964
9158
|
paddingHorizontal: 14,
|
|
8965
9159
|
cursor: "pointer",
|
|
8966
|
-
backgroundColor: pressed ? COLORS.surfaceRaised : "transparent",
|
|
8967
9160
|
...borderRadius,
|
|
8968
9161
|
...supersetMargin
|
|
8969
9162
|
},
|
|
@@ -8977,11 +9170,11 @@ function CollapsedCard({
|
|
|
8977
9170
|
/* @__PURE__ */ jsx(
|
|
8978
9171
|
reactNative.Text,
|
|
8979
9172
|
{
|
|
9173
|
+
className: "text-text-primary",
|
|
8980
9174
|
style: {
|
|
8981
9175
|
fontSize: 14,
|
|
8982
9176
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
8983
|
-
fontWeight: "700"
|
|
8984
|
-
color: COLORS.textPrimary
|
|
9177
|
+
fontWeight: "700"
|
|
8985
9178
|
},
|
|
8986
9179
|
testID: "exercise-card-name",
|
|
8987
9180
|
children: name
|
|
@@ -8991,10 +9184,10 @@ function CollapsedCard({
|
|
|
8991
9184
|
summary && /* @__PURE__ */ jsx(
|
|
8992
9185
|
reactNative.Text,
|
|
8993
9186
|
{
|
|
9187
|
+
className: "text-text-secondary",
|
|
8994
9188
|
style: {
|
|
8995
9189
|
fontSize: 12,
|
|
8996
9190
|
fontFamily: "Inter, sans-serif",
|
|
8997
|
-
color: COLORS.textSecondary,
|
|
8998
9191
|
marginRight: 8
|
|
8999
9192
|
},
|
|
9000
9193
|
testID: "exercise-card-summary",
|
|
@@ -9064,10 +9257,9 @@ function ExpandedCard({
|
|
|
9064
9257
|
return /* @__PURE__ */ jsxs(
|
|
9065
9258
|
reactNative.View,
|
|
9066
9259
|
{
|
|
9260
|
+
className: "bg-surface-elevated border-border",
|
|
9067
9261
|
style: {
|
|
9068
|
-
backgroundColor: COLORS.surfaceElevated,
|
|
9069
9262
|
borderWidth: 1,
|
|
9070
|
-
borderColor: COLORS.borderDefault,
|
|
9071
9263
|
...borderRadius,
|
|
9072
9264
|
...supersetMargin
|
|
9073
9265
|
},
|
|
@@ -9090,17 +9282,17 @@ function ExpandedCard({
|
|
|
9090
9282
|
paddingHorizontal: 14,
|
|
9091
9283
|
paddingBottom: 10,
|
|
9092
9284
|
borderBottomWidth: 1,
|
|
9093
|
-
borderBottomColor:
|
|
9285
|
+
borderBottomColor: resolveColor("border-default")
|
|
9094
9286
|
},
|
|
9095
9287
|
children: [
|
|
9096
9288
|
/* @__PURE__ */ jsx(
|
|
9097
9289
|
reactNative.Text,
|
|
9098
9290
|
{
|
|
9291
|
+
className: "text-text-primary",
|
|
9099
9292
|
style: {
|
|
9100
9293
|
fontSize: 14,
|
|
9101
9294
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
9102
|
-
fontWeight: "700"
|
|
9103
|
-
color: COLORS.textPrimary
|
|
9295
|
+
fontWeight: "700"
|
|
9104
9296
|
},
|
|
9105
9297
|
testID: "exercise-card-name",
|
|
9106
9298
|
children: name
|
|
@@ -9110,10 +9302,10 @@ function ExpandedCard({
|
|
|
9110
9302
|
summary && /* @__PURE__ */ jsx(
|
|
9111
9303
|
reactNative.Text,
|
|
9112
9304
|
{
|
|
9305
|
+
className: "text-text-secondary",
|
|
9113
9306
|
style: {
|
|
9114
9307
|
fontSize: 12,
|
|
9115
9308
|
fontFamily: "Inter, sans-serif",
|
|
9116
|
-
color: COLORS.textSecondary,
|
|
9117
9309
|
marginRight: 8
|
|
9118
9310
|
},
|
|
9119
9311
|
testID: "exercise-card-summary",
|
|
@@ -9164,13 +9356,13 @@ function ExpandedCard({
|
|
|
9164
9356
|
children: /* @__PURE__ */ jsx(
|
|
9165
9357
|
reactNative.Text,
|
|
9166
9358
|
{
|
|
9359
|
+
className: "text-text-tertiary",
|
|
9167
9360
|
style: {
|
|
9168
9361
|
fontSize: 10,
|
|
9169
9362
|
fontWeight: "600",
|
|
9170
9363
|
fontFamily: "Inter, sans-serif",
|
|
9171
9364
|
textTransform: "uppercase",
|
|
9172
|
-
letterSpacing: 0.8
|
|
9173
|
-
color: COLORS.textTertiary
|
|
9365
|
+
letterSpacing: 0.8
|
|
9174
9366
|
},
|
|
9175
9367
|
children: header
|
|
9176
9368
|
}
|
|
@@ -9210,11 +9402,11 @@ function UpcomingCard({
|
|
|
9210
9402
|
/* @__PURE__ */ jsx(
|
|
9211
9403
|
reactNative.Text,
|
|
9212
9404
|
{
|
|
9405
|
+
className: "text-text-primary",
|
|
9213
9406
|
style: {
|
|
9214
9407
|
fontSize: 14,
|
|
9215
9408
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
9216
|
-
fontWeight: "700"
|
|
9217
|
-
color: COLORS.textPrimary
|
|
9409
|
+
fontWeight: "700"
|
|
9218
9410
|
},
|
|
9219
9411
|
testID: "exercise-card-name",
|
|
9220
9412
|
children: name
|
|
@@ -9223,10 +9415,10 @@ function UpcomingCard({
|
|
|
9223
9415
|
prescription && /* @__PURE__ */ jsx(
|
|
9224
9416
|
reactNative.Text,
|
|
9225
9417
|
{
|
|
9418
|
+
className: "text-text-secondary",
|
|
9226
9419
|
style: {
|
|
9227
9420
|
fontSize: 12,
|
|
9228
9421
|
fontFamily: "Inter, sans-serif",
|
|
9229
|
-
color: COLORS.textSecondary,
|
|
9230
9422
|
marginLeft: 8
|
|
9231
9423
|
},
|
|
9232
9424
|
testID: "exercise-card-prescription",
|
|
@@ -9237,10 +9429,10 @@ function UpcomingCard({
|
|
|
9237
9429
|
previousBest && /* @__PURE__ */ jsx(
|
|
9238
9430
|
reactNative.Text,
|
|
9239
9431
|
{
|
|
9432
|
+
className: "text-text-tertiary",
|
|
9240
9433
|
style: {
|
|
9241
9434
|
fontSize: 11,
|
|
9242
|
-
fontFamily: "Inter, sans-serif"
|
|
9243
|
-
color: COLORS.textTertiary
|
|
9435
|
+
fontFamily: "Inter, sans-serif"
|
|
9244
9436
|
},
|
|
9245
9437
|
testID: "exercise-card-previous-best",
|
|
9246
9438
|
children: previousBest
|
|
@@ -9478,11 +9670,12 @@ function WeekRow({
|
|
|
9478
9670
|
/* @__PURE__ */ jsx(
|
|
9479
9671
|
reactNative.Text,
|
|
9480
9672
|
{
|
|
9673
|
+
className: isCurrent ? void 0 : "text-text-primary",
|
|
9481
9674
|
style: {
|
|
9482
9675
|
fontSize: 13,
|
|
9483
9676
|
fontWeight: "700",
|
|
9484
9677
|
fontFamily: "Inter, sans-serif",
|
|
9485
|
-
color: isCurrent ? BRAND_PRIMARY5 :
|
|
9678
|
+
color: isCurrent ? BRAND_PRIMARY5 : void 0
|
|
9486
9679
|
},
|
|
9487
9680
|
accessibilityElementsHidden: true,
|
|
9488
9681
|
children: `W${weekNumber}`
|
|
@@ -9521,21 +9714,16 @@ function WeekRow({
|
|
|
9521
9714
|
}
|
|
9522
9715
|
);
|
|
9523
9716
|
}
|
|
9524
|
-
var
|
|
9525
|
-
// Theme-aware foregrounds: resolve to a readable color in both light and dark
|
|
9526
|
-
// (react-native-web passes the CSS var through to the inline style).
|
|
9527
|
-
textPrimary: "var(--color-text-primary)",
|
|
9528
|
-
textSecondary: "var(--color-text-secondary)",
|
|
9529
|
-
textTertiary: "var(--color-text-tertiary)",
|
|
9717
|
+
var COLORS = {
|
|
9530
9718
|
statusSuccess: "#14B8A6",
|
|
9531
9719
|
brandPrimary: "#FF7900",
|
|
9532
9720
|
borderDefault: "#1F1F1F",
|
|
9533
9721
|
brandPrimarySubtle: "rgba(255,121,0,0.06)"
|
|
9534
9722
|
};
|
|
9535
9723
|
var statusBorderColors = {
|
|
9536
|
-
completed:
|
|
9537
|
-
today:
|
|
9538
|
-
upcoming:
|
|
9724
|
+
completed: COLORS.statusSuccess,
|
|
9725
|
+
today: COLORS.brandPrimary,
|
|
9726
|
+
upcoming: COLORS.borderDefault
|
|
9539
9727
|
};
|
|
9540
9728
|
var volumeStatusMap = {
|
|
9541
9729
|
under: "behind",
|
|
@@ -9572,11 +9760,11 @@ function WorkoutCard({
|
|
|
9572
9760
|
/* @__PURE__ */ jsx(
|
|
9573
9761
|
reactNative.Text,
|
|
9574
9762
|
{
|
|
9763
|
+
className: "text-text-primary",
|
|
9575
9764
|
style: {
|
|
9576
9765
|
fontSize: 15,
|
|
9577
9766
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
9578
|
-
fontWeight: "700"
|
|
9579
|
-
color: COLORS2.textPrimary
|
|
9767
|
+
fontWeight: "700"
|
|
9580
9768
|
},
|
|
9581
9769
|
testID: "workout-card-name",
|
|
9582
9770
|
children: name
|
|
@@ -9586,10 +9774,10 @@ function WorkoutCard({
|
|
|
9586
9774
|
/* @__PURE__ */ jsx(
|
|
9587
9775
|
reactNative.Text,
|
|
9588
9776
|
{
|
|
9777
|
+
className: "text-text-tertiary",
|
|
9589
9778
|
style: {
|
|
9590
9779
|
fontSize: 11,
|
|
9591
|
-
fontFamily: "Inter, sans-serif"
|
|
9592
|
-
color: COLORS2.textTertiary
|
|
9780
|
+
fontFamily: "Inter, sans-serif"
|
|
9593
9781
|
},
|
|
9594
9782
|
testID: "workout-card-date",
|
|
9595
9783
|
children: date
|
|
@@ -9599,11 +9787,11 @@ function WorkoutCard({
|
|
|
9599
9787
|
/* @__PURE__ */ jsx(
|
|
9600
9788
|
reactNative.Text,
|
|
9601
9789
|
{
|
|
9790
|
+
className: "text-text-secondary",
|
|
9602
9791
|
style: {
|
|
9603
9792
|
marginTop: 4,
|
|
9604
9793
|
fontSize: 12,
|
|
9605
|
-
fontFamily: "Inter, sans-serif"
|
|
9606
|
-
color: COLORS2.textSecondary
|
|
9794
|
+
fontFamily: "Inter, sans-serif"
|
|
9607
9795
|
},
|
|
9608
9796
|
testID: "workout-card-stats",
|
|
9609
9797
|
children: formatStats(totalSets, totalVolume, unit, duration)
|
|
@@ -9634,7 +9822,7 @@ function WorkoutCard({
|
|
|
9634
9822
|
variant: "accent",
|
|
9635
9823
|
elevation: 1,
|
|
9636
9824
|
accentColor: statusBorderColors[status],
|
|
9637
|
-
bgColor: isToday ?
|
|
9825
|
+
bgColor: isToday ? COLORS.brandPrimarySubtle : void 0,
|
|
9638
9826
|
className,
|
|
9639
9827
|
style: isUpcoming ? { opacity: 0.6 } : void 0,
|
|
9640
9828
|
testID: "workout-card",
|
|
@@ -9674,8 +9862,6 @@ var BRAND_PRIMARY6 = "#FF7900";
|
|
|
9674
9862
|
var BRAND_PRIMARY_DARK = "#C45E00";
|
|
9675
9863
|
var BRAND_PRIMARY_LIGHT = "#FFB066";
|
|
9676
9864
|
var BORDER_DEFAULT = "#1F1F1F";
|
|
9677
|
-
var TEXT_PRIMARY2 = "var(--color-text-primary)";
|
|
9678
|
-
var TEXT_SECONDARY = "var(--color-text-secondary)";
|
|
9679
9865
|
var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY6, BRAND_PRIMARY_LIGHT];
|
|
9680
9866
|
function heatmapColor(percentage) {
|
|
9681
9867
|
const clamped = Math.max(0, Math.min(100, percentage));
|
|
@@ -9718,11 +9904,11 @@ function MesoCard({
|
|
|
9718
9904
|
/* @__PURE__ */ jsx(
|
|
9719
9905
|
reactNative.Text,
|
|
9720
9906
|
{
|
|
9907
|
+
className: "text-text-primary",
|
|
9721
9908
|
style: {
|
|
9722
9909
|
fontSize: 15,
|
|
9723
9910
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
9724
|
-
fontWeight: "700"
|
|
9725
|
-
color: TEXT_PRIMARY2
|
|
9911
|
+
fontWeight: "700"
|
|
9726
9912
|
},
|
|
9727
9913
|
testID: "meso-card-name",
|
|
9728
9914
|
children: name
|
|
@@ -9733,11 +9919,11 @@ function MesoCard({
|
|
|
9733
9919
|
/* @__PURE__ */ jsx(
|
|
9734
9920
|
reactNative.Text,
|
|
9735
9921
|
{
|
|
9922
|
+
className: "text-text-secondary",
|
|
9736
9923
|
style: {
|
|
9737
9924
|
marginTop: 4,
|
|
9738
9925
|
fontSize: 12,
|
|
9739
|
-
fontFamily: "Inter, sans-serif"
|
|
9740
|
-
color: TEXT_SECONDARY
|
|
9926
|
+
fontFamily: "Inter, sans-serif"
|
|
9741
9927
|
},
|
|
9742
9928
|
testID: "meso-card-subheader",
|
|
9743
9929
|
children: `${split} \xB7 ${weekRange}`
|
|
@@ -9831,11 +10017,7 @@ function MesoCard({
|
|
|
9831
10017
|
var BRAND_PRIMARY7 = "#FF7900";
|
|
9832
10018
|
var RECENT_BORDER = "rgba(255,176,32,0.3)";
|
|
9833
10019
|
var RECENT_GLOW = "0 0 12px rgba(255,176,32,0.06)";
|
|
9834
|
-
var
|
|
9835
|
-
var BORDER_DEFAULT2 = "var(--color-border-default)";
|
|
9836
|
-
var TEXT_PRIMARY3 = "var(--color-text-primary)";
|
|
9837
|
-
var TEXT_SECONDARY2 = "var(--color-text-secondary)";
|
|
9838
|
-
var TEXT_TERTIARY3 = "var(--color-text-tertiary)";
|
|
10020
|
+
var BORDER_DEFAULT2 = resolveColor("border-default");
|
|
9839
10021
|
var TYPE_LABELS = {
|
|
9840
10022
|
e1rm: "e1RM",
|
|
9841
10023
|
weight: "Weight",
|
|
@@ -9861,14 +10043,13 @@ function PrRecordRow({ record, index }) {
|
|
|
9861
10043
|
{
|
|
9862
10044
|
accessibilityRole: "text",
|
|
9863
10045
|
accessibilityLabel: a11yLabel,
|
|
9864
|
-
className: "flex-row items-center",
|
|
10046
|
+
className: "flex-row items-center bg-surface-raised",
|
|
9865
10047
|
style: {
|
|
9866
10048
|
gap: 10,
|
|
9867
10049
|
paddingVertical: 10,
|
|
9868
10050
|
paddingHorizontal: 12,
|
|
9869
10051
|
marginBottom: 8,
|
|
9870
10052
|
borderRadius: 8,
|
|
9871
|
-
backgroundColor: SURFACE_RAISED,
|
|
9872
10053
|
borderWidth: 1,
|
|
9873
10054
|
borderColor: record.isRecent ? RECENT_BORDER : BORDER_DEFAULT2,
|
|
9874
10055
|
...record.isRecent ? { boxShadow: RECENT_GLOW } : {}
|
|
@@ -9879,12 +10060,12 @@ function PrRecordRow({ record, index }) {
|
|
|
9879
10060
|
/* @__PURE__ */ jsx(
|
|
9880
10061
|
reactNative.Text,
|
|
9881
10062
|
{
|
|
10063
|
+
className: "text-text-secondary",
|
|
9882
10064
|
style: {
|
|
9883
10065
|
flex: 1,
|
|
9884
10066
|
fontSize: 13,
|
|
9885
10067
|
fontFamily: "Inter, sans-serif",
|
|
9886
|
-
fontWeight: "600"
|
|
9887
|
-
color: TEXT_SECONDARY2
|
|
10068
|
+
fontWeight: "600"
|
|
9888
10069
|
},
|
|
9889
10070
|
testID: `pr-history-modal-record-${index}-type`,
|
|
9890
10071
|
children: label
|
|
@@ -9893,11 +10074,11 @@ function PrRecordRow({ record, index }) {
|
|
|
9893
10074
|
/* @__PURE__ */ jsx(
|
|
9894
10075
|
reactNative.Text,
|
|
9895
10076
|
{
|
|
10077
|
+
className: "text-text-primary",
|
|
9896
10078
|
style: {
|
|
9897
10079
|
fontSize: 14,
|
|
9898
10080
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
9899
|
-
fontWeight: "700"
|
|
9900
|
-
color: TEXT_PRIMARY3
|
|
10081
|
+
fontWeight: "700"
|
|
9901
10082
|
},
|
|
9902
10083
|
testID: `pr-history-modal-record-${index}-value`,
|
|
9903
10084
|
children: valueText
|
|
@@ -9906,12 +10087,12 @@ function PrRecordRow({ record, index }) {
|
|
|
9906
10087
|
/* @__PURE__ */ jsx(
|
|
9907
10088
|
reactNative.Text,
|
|
9908
10089
|
{
|
|
10090
|
+
className: "text-text-tertiary",
|
|
9909
10091
|
style: {
|
|
9910
10092
|
minWidth: 64,
|
|
9911
10093
|
textAlign: "right",
|
|
9912
10094
|
fontSize: 11,
|
|
9913
|
-
fontFamily: "Inter, sans-serif"
|
|
9914
|
-
color: TEXT_TERTIARY3
|
|
10095
|
+
fontFamily: "Inter, sans-serif"
|
|
9915
10096
|
},
|
|
9916
10097
|
testID: `pr-history-modal-record-${index}-date`,
|
|
9917
10098
|
children: record.date
|
|
@@ -9949,13 +10130,13 @@ function PrHistoryModal({
|
|
|
9949
10130
|
reactNative.View,
|
|
9950
10131
|
{
|
|
9951
10132
|
accessibilityElementsHidden: true,
|
|
10133
|
+
className: "bg-border",
|
|
9952
10134
|
style: {
|
|
9953
10135
|
alignSelf: "center",
|
|
9954
10136
|
width: 40,
|
|
9955
10137
|
height: 4,
|
|
9956
10138
|
borderRadius: 2,
|
|
9957
|
-
marginTop: 8
|
|
9958
|
-
backgroundColor: BORDER_DEFAULT2
|
|
10139
|
+
marginTop: 8
|
|
9959
10140
|
},
|
|
9960
10141
|
testID: "pr-history-modal-handle"
|
|
9961
10142
|
}
|
|
@@ -9971,11 +10152,11 @@ function PrHistoryModal({
|
|
|
9971
10152
|
reactNative.Text,
|
|
9972
10153
|
{
|
|
9973
10154
|
accessibilityRole: "header",
|
|
10155
|
+
className: "text-text-primary",
|
|
9974
10156
|
style: {
|
|
9975
10157
|
fontSize: 16,
|
|
9976
10158
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
9977
|
-
fontWeight: "700"
|
|
9978
|
-
color: TEXT_PRIMARY3
|
|
10159
|
+
fontWeight: "700"
|
|
9979
10160
|
},
|
|
9980
10161
|
testID: "pr-history-modal-title",
|
|
9981
10162
|
children: dialogLabel
|
|
@@ -9990,7 +10171,7 @@ function PrHistoryModal({
|
|
|
9990
10171
|
hitSlop: 8,
|
|
9991
10172
|
style: { padding: 4, margin: -4 },
|
|
9992
10173
|
testID: "pr-history-modal-close",
|
|
9993
|
-
children: /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 22, lineHeight: 22
|
|
10174
|
+
children: /* @__PURE__ */ jsx(reactNative.Text, { className: "text-text-secondary", style: { fontSize: 22, lineHeight: 22 }, children: "\xD7" })
|
|
9994
10175
|
}
|
|
9995
10176
|
)
|
|
9996
10177
|
]
|
|
@@ -9999,11 +10180,11 @@ function PrHistoryModal({
|
|
|
9999
10180
|
/* @__PURE__ */ jsx(DrawerBody, { className: "px-4 pt-0 pb-4", children: records.length === 0 ? /* @__PURE__ */ jsx(reactNative.View, { style: { paddingVertical: 24 }, testID: "pr-history-modal-empty", children: /* @__PURE__ */ jsx(
|
|
10000
10181
|
reactNative.Text,
|
|
10001
10182
|
{
|
|
10183
|
+
className: "text-text-tertiary",
|
|
10002
10184
|
style: {
|
|
10003
10185
|
textAlign: "center",
|
|
10004
10186
|
fontSize: 13,
|
|
10005
|
-
fontFamily: "Inter, sans-serif"
|
|
10006
|
-
color: TEXT_TERTIARY3
|
|
10187
|
+
fontFamily: "Inter, sans-serif"
|
|
10007
10188
|
},
|
|
10008
10189
|
children: "No personal records yet"
|
|
10009
10190
|
}
|
|
@@ -10024,8 +10205,6 @@ var BRAND_PRIMARY_SUBTLE = "rgba(255,121,0,0.12)";
|
|
|
10024
10205
|
var STATUS_SUCCESS = "#14B8A6";
|
|
10025
10206
|
var STATUS_WARNING = "#FFB020";
|
|
10026
10207
|
var STATUS_ERROR = "#D14343";
|
|
10027
|
-
var TEXT_PRIMARY4 = "var(--color-text-primary)";
|
|
10028
|
-
var TEXT_SECONDARY3 = "var(--color-text-secondary)";
|
|
10029
10208
|
var EMOJI_SETS = {
|
|
10030
10209
|
sleep: ["\u{1F634}", "\u{1F610}", "\u{1F642}", "\u{1F60A}", "\u{1F929}"],
|
|
10031
10210
|
soreness: ["\u{1F635}", "\u{1F623}", "\u{1F610}", "\u{1F642}", "\u{1F4AA}"],
|
|
@@ -10057,7 +10236,8 @@ function EmojiSlider({ factor }) {
|
|
|
10057
10236
|
/* @__PURE__ */ jsx(
|
|
10058
10237
|
reactNative.Text,
|
|
10059
10238
|
{
|
|
10060
|
-
|
|
10239
|
+
className: "text-text-secondary",
|
|
10240
|
+
style: { fontSize: 12, fontWeight: "500", fontFamily: "Inter, sans-serif" },
|
|
10061
10241
|
testID: "readiness-check-factor-label",
|
|
10062
10242
|
children: factor.label
|
|
10063
10243
|
}
|
|
@@ -10081,14 +10261,15 @@ function EmojiSlider({ factor }) {
|
|
|
10081
10261
|
accessibilityLabel: `${factor.label} level ${level} of 5`,
|
|
10082
10262
|
"aria-checked": selected,
|
|
10083
10263
|
testID: "readiness-check-emoji",
|
|
10264
|
+
className: selected ? void 0 : "border-border bg-surface-raised",
|
|
10084
10265
|
style: ({ pressed }) => ({
|
|
10085
10266
|
flex: 1,
|
|
10086
10267
|
alignItems: "center",
|
|
10087
10268
|
paddingVertical: 8,
|
|
10088
10269
|
borderRadius: 8,
|
|
10089
10270
|
borderWidth: 1,
|
|
10090
|
-
borderColor: selected ? BRAND_PRIMARY8 :
|
|
10091
|
-
backgroundColor: selected ? BRAND_PRIMARY_SUBTLE :
|
|
10271
|
+
borderColor: selected ? BRAND_PRIMARY8 : void 0,
|
|
10272
|
+
backgroundColor: selected ? BRAND_PRIMARY_SUBTLE : void 0,
|
|
10092
10273
|
opacity: selected ? 1 : pressed ? 0.8 : 0.55,
|
|
10093
10274
|
transform: [{ scale: selected ? 1.06 : 1 }]
|
|
10094
10275
|
}),
|
|
@@ -10109,13 +10290,13 @@ function ScoreGauge({ score }) {
|
|
|
10109
10290
|
accessibilityRole: "image",
|
|
10110
10291
|
accessibilityLabel: `Readiness score: ${score} out of 100`,
|
|
10111
10292
|
testID: "readiness-check-score",
|
|
10293
|
+
className: "bg-surface-raised",
|
|
10112
10294
|
style: {
|
|
10113
10295
|
width: 60,
|
|
10114
10296
|
height: 60,
|
|
10115
10297
|
borderRadius: 30,
|
|
10116
10298
|
borderWidth: 4,
|
|
10117
10299
|
borderColor: color,
|
|
10118
|
-
backgroundColor: "var(--color-surface-raised)",
|
|
10119
10300
|
alignItems: "center",
|
|
10120
10301
|
justifyContent: "center"
|
|
10121
10302
|
},
|
|
@@ -10135,13 +10316,12 @@ function WarmUpCard({ validation }) {
|
|
|
10135
10316
|
return /* @__PURE__ */ jsxs(
|
|
10136
10317
|
reactNative.View,
|
|
10137
10318
|
{
|
|
10319
|
+
className: "border-border bg-surface-raised",
|
|
10138
10320
|
style: {
|
|
10139
10321
|
marginTop: 16,
|
|
10140
10322
|
padding: 12,
|
|
10141
10323
|
borderRadius: 8,
|
|
10142
|
-
borderWidth: 1
|
|
10143
|
-
borderColor: "var(--color-border-default)",
|
|
10144
|
-
backgroundColor: "var(--color-surface-raised)"
|
|
10324
|
+
borderWidth: 1
|
|
10145
10325
|
},
|
|
10146
10326
|
testID: "readiness-check-warmup",
|
|
10147
10327
|
children: [
|
|
@@ -10149,7 +10329,8 @@ function WarmUpCard({ validation }) {
|
|
|
10149
10329
|
/* @__PURE__ */ jsx(
|
|
10150
10330
|
reactNative.Text,
|
|
10151
10331
|
{
|
|
10152
|
-
|
|
10332
|
+
className: "text-text-secondary",
|
|
10333
|
+
style: { fontSize: 12, fontWeight: "600", fontFamily: "Inter, sans-serif" },
|
|
10153
10334
|
testID: "readiness-check-warmup-deficit",
|
|
10154
10335
|
children: velocityDeficitText(validation.velocityDeficit)
|
|
10155
10336
|
}
|
|
@@ -10159,7 +10340,8 @@ function WarmUpCard({ validation }) {
|
|
|
10159
10340
|
/* @__PURE__ */ jsx(
|
|
10160
10341
|
reactNative.Text,
|
|
10161
10342
|
{
|
|
10162
|
-
|
|
10343
|
+
className: "text-text-primary",
|
|
10344
|
+
style: { marginTop: 6, fontSize: 13, fontFamily: "Inter, sans-serif" },
|
|
10163
10345
|
testID: "readiness-check-warmup-recommendation",
|
|
10164
10346
|
children: validation.recommendation
|
|
10165
10347
|
}
|
|
@@ -10181,7 +10363,8 @@ function ReadinessCheck({
|
|
|
10181
10363
|
/* @__PURE__ */ jsx(
|
|
10182
10364
|
reactNative.Text,
|
|
10183
10365
|
{
|
|
10184
|
-
|
|
10366
|
+
className: "text-text-primary",
|
|
10367
|
+
style: { fontSize: 18, fontWeight: "700", fontFamily: '"Space Grotesk", sans-serif' },
|
|
10185
10368
|
testID: "readiness-check-title",
|
|
10186
10369
|
children: "How are you feeling?"
|
|
10187
10370
|
}
|
|
@@ -10214,14 +10397,11 @@ function ReadinessCheck({
|
|
|
10214
10397
|
var BRAND_PRIMARY9 = "#FF7900";
|
|
10215
10398
|
var BRAND_PRIMARY_DARK2 = "#C45E00";
|
|
10216
10399
|
var BRAND_PRIMARY_LIGHT2 = "#FFB066";
|
|
10217
|
-
var TEXT_PRIMARY5 = "var(--color-text-primary)";
|
|
10218
|
-
var TEXT_SECONDARY4 = "var(--color-text-secondary)";
|
|
10219
|
-
var TEXT_TERTIARY4 = "var(--color-text-tertiary)";
|
|
10220
10400
|
var SUCCESS = "#14B8A6";
|
|
10221
10401
|
var WARNING = "#FFB020";
|
|
10222
10402
|
var ERROR = "#D14343";
|
|
10223
10403
|
var ACCENT_STOPS2 = [BRAND_PRIMARY_DARK2, BRAND_PRIMARY9, BRAND_PRIMARY_LIGHT2];
|
|
10224
|
-
var CARD_GRADIENT =
|
|
10404
|
+
var CARD_GRADIENT = `linear-gradient(135deg, ${resolveColor("surface-elevated")} 0%, ${resolveColor("surface-raised")} 100%)`;
|
|
10225
10405
|
var GAUGE_GRADIENT = "linear-gradient(90deg, rgba(20,184,166,0.25) 0%, rgba(255,176,32,0.25) 50%, rgba(209,67,67,0.25) 100%)";
|
|
10226
10406
|
var STATUS_VARIANTS = {
|
|
10227
10407
|
success: { bg: "rgba(20,184,166,0.15)", border: "rgba(20,184,166,0.3)", text: SUCCESS },
|
|
@@ -10248,7 +10428,8 @@ function renderCoachingText(text, highlights) {
|
|
|
10248
10428
|
(part, index) => highlights.includes(part) ? /* @__PURE__ */ jsx(
|
|
10249
10429
|
reactNative.Text,
|
|
10250
10430
|
{
|
|
10251
|
-
|
|
10431
|
+
className: "text-text-primary",
|
|
10432
|
+
style: { fontWeight: "700" },
|
|
10252
10433
|
children: part
|
|
10253
10434
|
},
|
|
10254
10435
|
`${part}-${index}`
|
|
@@ -10295,13 +10476,13 @@ function MetricCell({ metric }) {
|
|
|
10295
10476
|
/* @__PURE__ */ jsx(
|
|
10296
10477
|
reactNative.Text,
|
|
10297
10478
|
{
|
|
10479
|
+
className: "text-text-tertiary",
|
|
10298
10480
|
style: {
|
|
10299
10481
|
fontSize: 10,
|
|
10300
10482
|
fontFamily: "Inter, sans-serif",
|
|
10301
10483
|
fontWeight: "600",
|
|
10302
10484
|
letterSpacing: 0.5,
|
|
10303
|
-
textTransform: "uppercase"
|
|
10304
|
-
color: TEXT_TERTIARY4
|
|
10485
|
+
textTransform: "uppercase"
|
|
10305
10486
|
},
|
|
10306
10487
|
children: metric.label
|
|
10307
10488
|
}
|
|
@@ -10309,12 +10490,12 @@ function MetricCell({ metric }) {
|
|
|
10309
10490
|
/* @__PURE__ */ jsx(
|
|
10310
10491
|
reactNative.Text,
|
|
10311
10492
|
{
|
|
10493
|
+
className: "text-text-primary",
|
|
10312
10494
|
style: {
|
|
10313
10495
|
marginTop: 2,
|
|
10314
10496
|
fontSize: 13,
|
|
10315
10497
|
fontFamily: "Inter, sans-serif",
|
|
10316
|
-
fontWeight: "600"
|
|
10317
|
-
color: TEXT_PRIMARY5
|
|
10498
|
+
fontWeight: "600"
|
|
10318
10499
|
},
|
|
10319
10500
|
children: metric.value
|
|
10320
10501
|
}
|
|
@@ -10346,13 +10527,13 @@ function Gauge({ gauge }) {
|
|
|
10346
10527
|
/* @__PURE__ */ jsx(
|
|
10347
10528
|
reactNative.Text,
|
|
10348
10529
|
{
|
|
10530
|
+
className: "text-text-secondary",
|
|
10349
10531
|
style: {
|
|
10350
10532
|
fontSize: 10,
|
|
10351
10533
|
fontFamily: "Inter, sans-serif",
|
|
10352
10534
|
fontWeight: "500",
|
|
10353
10535
|
letterSpacing: 0.5,
|
|
10354
|
-
textTransform: "uppercase"
|
|
10355
|
-
color: TEXT_SECONDARY4
|
|
10536
|
+
textTransform: "uppercase"
|
|
10356
10537
|
},
|
|
10357
10538
|
children: gauge.label
|
|
10358
10539
|
}
|
|
@@ -10360,11 +10541,11 @@ function Gauge({ gauge }) {
|
|
|
10360
10541
|
gauge.sublabel != null && /* @__PURE__ */ jsx(
|
|
10361
10542
|
reactNative.Text,
|
|
10362
10543
|
{
|
|
10544
|
+
className: "text-text-tertiary",
|
|
10363
10545
|
style: {
|
|
10364
10546
|
fontSize: 10,
|
|
10365
10547
|
fontFamily: "Inter, sans-serif",
|
|
10366
|
-
fontWeight: "500"
|
|
10367
|
-
color: TEXT_TERTIARY4
|
|
10548
|
+
fontWeight: "500"
|
|
10368
10549
|
},
|
|
10369
10550
|
children: gauge.sublabel
|
|
10370
10551
|
}
|
|
@@ -10401,6 +10582,7 @@ function Gauge({ gauge }) {
|
|
|
10401
10582
|
/* @__PURE__ */ jsx(
|
|
10402
10583
|
reactNative.View,
|
|
10403
10584
|
{
|
|
10585
|
+
className: "border-text-primary",
|
|
10404
10586
|
style: {
|
|
10405
10587
|
position: "absolute",
|
|
10406
10588
|
left: `${percentage}%`,
|
|
@@ -10410,7 +10592,6 @@ function Gauge({ gauge }) {
|
|
|
10410
10592
|
height: 14,
|
|
10411
10593
|
borderRadius: 9999,
|
|
10412
10594
|
borderWidth: 2,
|
|
10413
|
-
borderColor: TEXT_PRIMARY5,
|
|
10414
10595
|
backgroundColor: markerColor,
|
|
10415
10596
|
boxShadow: "0 0 4px rgba(0,0,0,0.5)"
|
|
10416
10597
|
},
|
|
@@ -10473,12 +10654,12 @@ function MesoStatusCard({
|
|
|
10473
10654
|
/* @__PURE__ */ jsx(
|
|
10474
10655
|
reactNative.Text,
|
|
10475
10656
|
{
|
|
10657
|
+
className: "text-text-primary",
|
|
10476
10658
|
style: {
|
|
10477
10659
|
flexShrink: 1,
|
|
10478
10660
|
fontSize: 15,
|
|
10479
10661
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
10480
|
-
fontWeight: "700"
|
|
10481
|
-
color: TEXT_PRIMARY5
|
|
10662
|
+
fontWeight: "700"
|
|
10482
10663
|
},
|
|
10483
10664
|
testID: "meso-status-card-name",
|
|
10484
10665
|
children: mesoName
|
|
@@ -10491,11 +10672,11 @@ function MesoStatusCard({
|
|
|
10491
10672
|
/* @__PURE__ */ jsx(
|
|
10492
10673
|
reactNative.Text,
|
|
10493
10674
|
{
|
|
10675
|
+
className: "text-text-secondary",
|
|
10494
10676
|
style: {
|
|
10495
10677
|
marginTop: 4,
|
|
10496
10678
|
fontSize: 12,
|
|
10497
|
-
fontFamily: "Inter, sans-serif"
|
|
10498
|
-
color: TEXT_SECONDARY4
|
|
10679
|
+
fontFamily: "Inter, sans-serif"
|
|
10499
10680
|
},
|
|
10500
10681
|
testID: "meso-status-card-subtitle",
|
|
10501
10682
|
children: mesoSubtitle
|
|
@@ -10527,11 +10708,11 @@ function MesoStatusCard({
|
|
|
10527
10708
|
children: /* @__PURE__ */ jsx(
|
|
10528
10709
|
reactNative.Text,
|
|
10529
10710
|
{
|
|
10711
|
+
className: "text-text-secondary",
|
|
10530
10712
|
style: {
|
|
10531
10713
|
fontSize: 12,
|
|
10532
10714
|
lineHeight: 17,
|
|
10533
|
-
fontFamily: "Inter, sans-serif"
|
|
10534
|
-
color: TEXT_SECONDARY4
|
|
10715
|
+
fontFamily: "Inter, sans-serif"
|
|
10535
10716
|
},
|
|
10536
10717
|
children: renderCoachingText(coaching.text, coaching.highlights)
|
|
10537
10718
|
}
|
|
@@ -10576,15 +10757,11 @@ function MesoStatusCard({
|
|
|
10576
10757
|
);
|
|
10577
10758
|
}
|
|
10578
10759
|
var BRAND_PRIMARY10 = "#FF7900";
|
|
10579
|
-
var
|
|
10580
|
-
var TEXT_SECONDARY5 = "var(--color-text-secondary)";
|
|
10581
|
-
var TEXT_TERTIARY5 = "var(--color-text-tertiary)";
|
|
10582
|
-
var BORDER_STRONG = "var(--color-border-strong)";
|
|
10760
|
+
var PROJECTION_LINE_COLOR = resolveColor("text-tertiary");
|
|
10583
10761
|
var STATUS_SUCCESS2 = "#14B8A6";
|
|
10584
10762
|
var STATUS_ERROR2 = "#D14343";
|
|
10585
10763
|
var STATUS_WARNING2 = "#FFB020";
|
|
10586
10764
|
var GRID_LINE = "rgba(255,255,255,0.06)";
|
|
10587
|
-
var TOOLTIP_BG = "var(--color-surface-elevated)";
|
|
10588
10765
|
var SUCCESS_PILL_BG = "rgba(20,184,166,0.10)";
|
|
10589
10766
|
var SUCCESS_PILL_BORDER = "rgba(20,184,166,0.20)";
|
|
10590
10767
|
var ERROR_PILL_BG = "rgba(209,67,67,0.10)";
|
|
@@ -10592,8 +10769,8 @@ var ERROR_PILL_BORDER = "rgba(209,67,67,0.20)";
|
|
|
10592
10769
|
var PLOT_LEFT = 26;
|
|
10593
10770
|
var TOOLTIP_WIDTH = 124;
|
|
10594
10771
|
function timeOf(dateStr) {
|
|
10595
|
-
const
|
|
10596
|
-
return Number.isNaN(
|
|
10772
|
+
const t2 = Date.parse(dateStr);
|
|
10773
|
+
return Number.isNaN(t2) ? 0 : t2;
|
|
10597
10774
|
}
|
|
10598
10775
|
function formatValue(value) {
|
|
10599
10776
|
return `${Math.round(value)}`;
|
|
@@ -10765,7 +10942,7 @@ function StrengthTrendChart({
|
|
|
10765
10942
|
alignItems: "center",
|
|
10766
10943
|
justifyContent: "center"
|
|
10767
10944
|
},
|
|
10768
|
-
children: /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 12, fontFamily: "Inter, sans-serif"
|
|
10945
|
+
children: /* @__PURE__ */ jsx(reactNative.Text, { className: "text-text-tertiary", style: { fontSize: 12, fontFamily: "Inter, sans-serif" }, children: "No strength data yet" })
|
|
10769
10946
|
}
|
|
10770
10947
|
)
|
|
10771
10948
|
}
|
|
@@ -10809,6 +10986,7 @@ function StrengthTrendChart({
|
|
|
10809
10986
|
children: /* @__PURE__ */ jsx(
|
|
10810
10987
|
reactNative.Text,
|
|
10811
10988
|
{
|
|
10989
|
+
className: "text-text-tertiary",
|
|
10812
10990
|
style: {
|
|
10813
10991
|
position: "absolute",
|
|
10814
10992
|
left: -PLOT_LEFT,
|
|
@@ -10816,8 +10994,7 @@ function StrengthTrendChart({
|
|
|
10816
10994
|
width: PLOT_LEFT - 4,
|
|
10817
10995
|
textAlign: "right",
|
|
10818
10996
|
fontSize: 9,
|
|
10819
|
-
fontFamily: "Inter, sans-serif"
|
|
10820
|
-
color: TEXT_TERTIARY5
|
|
10997
|
+
fontFamily: "Inter, sans-serif"
|
|
10821
10998
|
},
|
|
10822
10999
|
children: line.label
|
|
10823
11000
|
}
|
|
@@ -10860,7 +11037,7 @@ function StrengthTrendChart({
|
|
|
10860
11037
|
ChartLine,
|
|
10861
11038
|
{
|
|
10862
11039
|
coords: geometry.projection,
|
|
10863
|
-
color:
|
|
11040
|
+
color: PROJECTION_LINE_COLOR,
|
|
10864
11041
|
strokeWidth: 2,
|
|
10865
11042
|
dashed: true,
|
|
10866
11043
|
testID: "strength-trend-chart-projection-segment"
|
|
@@ -10936,6 +11113,7 @@ function StrengthTrendChart({
|
|
|
10936
11113
|
{
|
|
10937
11114
|
testID: "strength-trend-chart-tooltip",
|
|
10938
11115
|
accessibilityElementsHidden: true,
|
|
11116
|
+
className: "bg-surface-elevated border-border-strong",
|
|
10939
11117
|
style: {
|
|
10940
11118
|
position: "absolute",
|
|
10941
11119
|
left: Math.max(
|
|
@@ -10944,9 +11122,7 @@ function StrengthTrendChart({
|
|
|
10944
11122
|
),
|
|
10945
11123
|
top: Math.max(0, selectedCoord.y - 52),
|
|
10946
11124
|
maxWidth: TOOLTIP_WIDTH,
|
|
10947
|
-
backgroundColor: TOOLTIP_BG,
|
|
10948
11125
|
borderWidth: 1,
|
|
10949
|
-
borderColor: BORDER_STRONG,
|
|
10950
11126
|
borderRadius: 8,
|
|
10951
11127
|
paddingVertical: 8,
|
|
10952
11128
|
paddingHorizontal: 10
|
|
@@ -10955,10 +11131,10 @@ function StrengthTrendChart({
|
|
|
10955
11131
|
/* @__PURE__ */ jsx(
|
|
10956
11132
|
reactNative.Text,
|
|
10957
11133
|
{
|
|
11134
|
+
className: "text-text-tertiary",
|
|
10958
11135
|
style: {
|
|
10959
11136
|
fontSize: 10,
|
|
10960
|
-
fontFamily: "Inter, sans-serif"
|
|
10961
|
-
color: TEXT_TERTIARY5
|
|
11137
|
+
fontFamily: "Inter, sans-serif"
|
|
10962
11138
|
},
|
|
10963
11139
|
children: selectedCoord.point.sessionLabel ?? selectedCoord.point.date
|
|
10964
11140
|
}
|
|
@@ -10966,12 +11142,12 @@ function StrengthTrendChart({
|
|
|
10966
11142
|
/* @__PURE__ */ jsx(
|
|
10967
11143
|
reactNative.Text,
|
|
10968
11144
|
{
|
|
11145
|
+
className: "text-text-primary",
|
|
10969
11146
|
style: {
|
|
10970
11147
|
marginTop: 2,
|
|
10971
11148
|
fontSize: 13,
|
|
10972
11149
|
fontFamily: "Inter, sans-serif",
|
|
10973
|
-
fontWeight: "700"
|
|
10974
|
-
color: TEXT_PRIMARY6
|
|
11150
|
+
fontWeight: "700"
|
|
10975
11151
|
},
|
|
10976
11152
|
children: `${formatValue(selectedCoord.point.e1rm)} ${unit}`
|
|
10977
11153
|
}
|
|
@@ -11004,14 +11180,14 @@ function StrengthTrendChart({
|
|
|
11004
11180
|
reactNative.Text,
|
|
11005
11181
|
{
|
|
11006
11182
|
testID: "strength-trend-chart-axis-label",
|
|
11183
|
+
className: "text-text-tertiary",
|
|
11007
11184
|
style: {
|
|
11008
11185
|
position: "absolute",
|
|
11009
11186
|
left: boundary.x - 24,
|
|
11010
11187
|
width: 48,
|
|
11011
11188
|
textAlign: "center",
|
|
11012
11189
|
fontSize: 10,
|
|
11013
|
-
fontFamily: "Inter, sans-serif"
|
|
11014
|
-
color: TEXT_TERTIARY5
|
|
11190
|
+
fontFamily: "Inter, sans-serif"
|
|
11015
11191
|
},
|
|
11016
11192
|
children: boundary.label
|
|
11017
11193
|
},
|
|
@@ -11055,7 +11231,7 @@ function StrengthTrendChart({
|
|
|
11055
11231
|
children: [
|
|
11056
11232
|
/* @__PURE__ */ jsxs(reactNative.View, { className: "flex-row items-center", style: { gap: 5 }, children: [
|
|
11057
11233
|
/* @__PURE__ */ jsx(reactNative.View, { style: { width: 14, height: 2.5, borderRadius: 1.5, backgroundColor: BRAND_PRIMARY10 } }),
|
|
11058
|
-
/* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 10, fontFamily: "Inter, sans-serif"
|
|
11234
|
+
/* @__PURE__ */ jsx(reactNative.Text, { className: "text-text-secondary", style: { fontSize: 10, fontFamily: "Inter, sans-serif" }, children: "Actual" })
|
|
11059
11235
|
] }),
|
|
11060
11236
|
/* @__PURE__ */ jsxs(reactNative.View, { className: "flex-row items-center", style: { gap: 5 }, children: [
|
|
11061
11237
|
/* @__PURE__ */ jsx(
|
|
@@ -11066,15 +11242,15 @@ function StrengthTrendChart({
|
|
|
11066
11242
|
height: 0,
|
|
11067
11243
|
borderTopWidth: 2,
|
|
11068
11244
|
borderStyle: "dashed",
|
|
11069
|
-
borderTopColor:
|
|
11245
|
+
borderTopColor: PROJECTION_LINE_COLOR
|
|
11070
11246
|
}
|
|
11071
11247
|
}
|
|
11072
11248
|
),
|
|
11073
|
-
/* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 10, fontFamily: "Inter, sans-serif"
|
|
11249
|
+
/* @__PURE__ */ jsx(reactNative.Text, { className: "text-text-secondary", style: { fontSize: 10, fontFamily: "Inter, sans-serif" }, children: "Projected" })
|
|
11074
11250
|
] }),
|
|
11075
11251
|
/* @__PURE__ */ jsxs(reactNative.View, { className: "flex-row items-center", style: { gap: 5 }, children: [
|
|
11076
11252
|
/* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 12, color: STATUS_WARNING2 }, children: "\u2605" }),
|
|
11077
|
-
/* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 10, fontFamily: "Inter, sans-serif"
|
|
11253
|
+
/* @__PURE__ */ jsx(reactNative.Text, { className: "text-text-secondary", style: { fontSize: 10, fontFamily: "Inter, sans-serif" }, children: "PR" })
|
|
11078
11254
|
] })
|
|
11079
11255
|
]
|
|
11080
11256
|
}
|
|
@@ -11087,7 +11263,6 @@ var STATUS_SUCCESS3 = "#14B8A6";
|
|
|
11087
11263
|
var STATUS_WARNING3 = "#FFB020";
|
|
11088
11264
|
var STATUS_INFO = "#2196F3";
|
|
11089
11265
|
var DOT_BORDER = "#F3F4F6";
|
|
11090
|
-
var TEXT_TERTIARY6 = "var(--color-text-tertiary)";
|
|
11091
11266
|
var BAND_FILL = "rgba(20,184,166,0.1)";
|
|
11092
11267
|
var BAND_EDGE = "rgba(20,184,166,0.45)";
|
|
11093
11268
|
var PROJECTION_FILL = "rgba(20,184,166,0.05)";
|
|
@@ -11129,8 +11304,8 @@ function interpEdge(pixels, x, key) {
|
|
|
11129
11304
|
const a = pixels[i];
|
|
11130
11305
|
const b = pixels[i + 1];
|
|
11131
11306
|
if (x >= a.x && x <= b.x) {
|
|
11132
|
-
const
|
|
11133
|
-
return a[key] +
|
|
11307
|
+
const t2 = b.x === a.x ? 0 : (x - a.x) / (b.x - a.x);
|
|
11308
|
+
return a[key] + t2 * (b[key] - a[key]);
|
|
11134
11309
|
}
|
|
11135
11310
|
}
|
|
11136
11311
|
return pixels[pixels.length - 1][key];
|
|
@@ -11368,6 +11543,7 @@ function CapacityBandChart({
|
|
|
11368
11543
|
/* @__PURE__ */ jsx(
|
|
11369
11544
|
reactNative.Text,
|
|
11370
11545
|
{
|
|
11546
|
+
className: "text-text-tertiary",
|
|
11371
11547
|
style: {
|
|
11372
11548
|
position: "absolute",
|
|
11373
11549
|
left: PADDING_LEFT / 2 - 14,
|
|
@@ -11376,7 +11552,6 @@ function CapacityBandChart({
|
|
|
11376
11552
|
textAlign: "center",
|
|
11377
11553
|
fontSize: 9,
|
|
11378
11554
|
fontFamily: "Inter, sans-serif",
|
|
11379
|
-
color: TEXT_TERTIARY6,
|
|
11380
11555
|
transform: [{ rotate: "-90deg" }]
|
|
11381
11556
|
},
|
|
11382
11557
|
accessibilityElementsHidden: true,
|
|
@@ -11390,6 +11565,7 @@ function CapacityBandChart({
|
|
|
11390
11565
|
return /* @__PURE__ */ jsx(
|
|
11391
11566
|
reactNative.Text,
|
|
11392
11567
|
{
|
|
11568
|
+
className: "text-text-tertiary",
|
|
11393
11569
|
style: {
|
|
11394
11570
|
position: "absolute",
|
|
11395
11571
|
left: toX(point.date) - 14,
|
|
@@ -11397,8 +11573,7 @@ function CapacityBandChart({
|
|
|
11397
11573
|
width: 28,
|
|
11398
11574
|
textAlign: "center",
|
|
11399
11575
|
fontSize: 10,
|
|
11400
|
-
fontFamily: "Inter, sans-serif"
|
|
11401
|
-
color: TEXT_TERTIARY6
|
|
11576
|
+
fontFamily: "Inter, sans-serif"
|
|
11402
11577
|
},
|
|
11403
11578
|
accessibilityElementsHidden: true,
|
|
11404
11579
|
importantForAccessibility: "no-hide-descendants",
|
|
@@ -11460,12 +11635,7 @@ function CapacityBandChart({
|
|
|
11460
11635
|
}
|
|
11461
11636
|
);
|
|
11462
11637
|
}
|
|
11463
|
-
var SURFACE_ELEVATED = "var(--color-surface-elevated)";
|
|
11464
|
-
var BORDER_DEFAULT3 = "var(--color-border-default)";
|
|
11465
11638
|
var BRAND_PRIMARY11 = "#FF7900";
|
|
11466
|
-
var TEXT_PRIMARY7 = "var(--color-text-primary)";
|
|
11467
|
-
var TEXT_TERTIARY7 = "var(--color-text-tertiary)";
|
|
11468
|
-
var PAGE_BG = "var(--color-background-base)";
|
|
11469
11639
|
var WORKOUT_PILL_STATUS = {
|
|
11470
11640
|
completed: "completed",
|
|
11471
11641
|
today: "current",
|
|
@@ -11517,7 +11687,7 @@ function Breadcrumbs2({ crumbs, onNavigate }) {
|
|
|
11517
11687
|
children: crumbs.map((crumb, index) => {
|
|
11518
11688
|
const isLast = index === crumbs.length - 1;
|
|
11519
11689
|
return /* @__PURE__ */ jsxs(reactNative.View, { className: "flex-row items-center", style: { gap: 4 }, children: [
|
|
11520
|
-
index > 0 && /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 12
|
|
11690
|
+
index > 0 && /* @__PURE__ */ jsx(reactNative.Text, { className: "text-text-tertiary", style: { fontSize: 12 }, children: "\u203A" }),
|
|
11521
11691
|
/* @__PURE__ */ jsx(
|
|
11522
11692
|
reactNative.Pressable,
|
|
11523
11693
|
{
|
|
@@ -11528,11 +11698,12 @@ function Breadcrumbs2({ crumbs, onNavigate }) {
|
|
|
11528
11698
|
children: /* @__PURE__ */ jsx(
|
|
11529
11699
|
reactNative.Text,
|
|
11530
11700
|
{
|
|
11701
|
+
className: isLast ? "text-text-primary" : void 0,
|
|
11531
11702
|
style: {
|
|
11532
11703
|
fontSize: 12,
|
|
11533
11704
|
fontFamily: "Inter, sans-serif",
|
|
11534
11705
|
fontWeight: isLast ? "700" : "500",
|
|
11535
|
-
color: isLast ?
|
|
11706
|
+
color: isLast ? void 0 : BRAND_PRIMARY11
|
|
11536
11707
|
},
|
|
11537
11708
|
children: crumb.label
|
|
11538
11709
|
}
|
|
@@ -11661,8 +11832,8 @@ function ProgramPlanningPage({
|
|
|
11661
11832
|
return /* @__PURE__ */ jsx(
|
|
11662
11833
|
reactNative.View,
|
|
11663
11834
|
{
|
|
11664
|
-
className,
|
|
11665
|
-
style: { width: 390
|
|
11835
|
+
className: cn(className, "bg-background-base"),
|
|
11836
|
+
style: { width: 390 },
|
|
11666
11837
|
accessibilityRole: "main",
|
|
11667
11838
|
"aria-label": title,
|
|
11668
11839
|
testID: "program-planning-page",
|
|
@@ -11672,11 +11843,11 @@ function ProgramPlanningPage({
|
|
|
11672
11843
|
reactNative.Text,
|
|
11673
11844
|
{
|
|
11674
11845
|
accessibilityRole: "header",
|
|
11846
|
+
className: "text-text-primary",
|
|
11675
11847
|
style: {
|
|
11676
11848
|
fontSize: 20,
|
|
11677
11849
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
11678
|
-
fontWeight: "700"
|
|
11679
|
-
color: TEXT_PRIMARY7
|
|
11850
|
+
fontWeight: "700"
|
|
11680
11851
|
},
|
|
11681
11852
|
testID: "program-planning-page-title",
|
|
11682
11853
|
children: title
|
|
@@ -11700,10 +11871,9 @@ function ProgramPlanningPage({
|
|
|
11700
11871
|
/* @__PURE__ */ jsxs(
|
|
11701
11872
|
reactNative.View,
|
|
11702
11873
|
{
|
|
11874
|
+
className: "bg-surface-elevated border-border",
|
|
11703
11875
|
style: {
|
|
11704
|
-
backgroundColor: SURFACE_ELEVATED,
|
|
11705
11876
|
borderWidth: 1,
|
|
11706
|
-
borderColor: BORDER_DEFAULT3,
|
|
11707
11877
|
borderRadius: 12,
|
|
11708
11878
|
padding: 12
|
|
11709
11879
|
},
|
|
@@ -11734,13 +11904,7 @@ function ProgramPlanningPage({
|
|
|
11734
11904
|
}
|
|
11735
11905
|
);
|
|
11736
11906
|
}
|
|
11737
|
-
var SURFACE_ELEVATED2 = "var(--color-surface-elevated)";
|
|
11738
|
-
var BORDER_DEFAULT4 = "var(--color-border-default)";
|
|
11739
11907
|
var BRAND_PRIMARY12 = "#FF7900";
|
|
11740
|
-
var TEXT_PRIMARY8 = "var(--color-text-primary)";
|
|
11741
|
-
var TEXT_SECONDARY6 = "var(--color-text-secondary)";
|
|
11742
|
-
var TEXT_TERTIARY8 = "var(--color-text-tertiary)";
|
|
11743
|
-
var PAGE_BG2 = "var(--color-background-base)";
|
|
11744
11908
|
var CHART_WIDTH = 326;
|
|
11745
11909
|
var CHART_HEIGHT = 150;
|
|
11746
11910
|
var EXERCISE_DETAIL_TABS = [
|
|
@@ -11787,7 +11951,7 @@ function TabBar({ active, onSelect }) {
|
|
|
11787
11951
|
className: "flex-row",
|
|
11788
11952
|
style: {
|
|
11789
11953
|
borderBottomWidth: 1,
|
|
11790
|
-
borderBottomColor:
|
|
11954
|
+
borderBottomColor: resolveColor("border-default")
|
|
11791
11955
|
},
|
|
11792
11956
|
accessibilityRole: "tablist",
|
|
11793
11957
|
testID: "exercise-detail-page-tabs",
|
|
@@ -11810,11 +11974,11 @@ function TabBar({ active, onSelect }) {
|
|
|
11810
11974
|
children: /* @__PURE__ */ jsx(
|
|
11811
11975
|
reactNative.Text,
|
|
11812
11976
|
{
|
|
11977
|
+
className: isActive ? "text-text-primary" : "text-text-tertiary",
|
|
11813
11978
|
style: {
|
|
11814
11979
|
fontSize: 13,
|
|
11815
11980
|
fontFamily: "Inter, sans-serif",
|
|
11816
|
-
fontWeight: isActive ? "700" : "500"
|
|
11817
|
-
color: isActive ? TEXT_PRIMARY8 : TEXT_TERTIARY8
|
|
11981
|
+
fontWeight: isActive ? "700" : "500"
|
|
11818
11982
|
},
|
|
11819
11983
|
children: label
|
|
11820
11984
|
}
|
|
@@ -11838,24 +12002,23 @@ function StatStrip({ stats, unit }) {
|
|
|
11838
12002
|
return /* @__PURE__ */ jsxs(
|
|
11839
12003
|
reactNative.View,
|
|
11840
12004
|
{
|
|
12005
|
+
className: "bg-surface-elevated border-border",
|
|
11841
12006
|
style: {
|
|
11842
12007
|
flex: 1,
|
|
11843
12008
|
padding: 12,
|
|
11844
12009
|
borderRadius: 10,
|
|
11845
|
-
|
|
11846
|
-
borderWidth: 1,
|
|
11847
|
-
borderColor: BORDER_DEFAULT4
|
|
12010
|
+
borderWidth: 1
|
|
11848
12011
|
},
|
|
11849
12012
|
testID: `exercise-detail-page-stat-${key}`,
|
|
11850
12013
|
children: [
|
|
11851
12014
|
/* @__PURE__ */ jsx(
|
|
11852
12015
|
reactNative.Text,
|
|
11853
12016
|
{
|
|
12017
|
+
className: "text-text-primary",
|
|
11854
12018
|
style: {
|
|
11855
12019
|
fontSize: 18,
|
|
11856
12020
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
11857
|
-
fontWeight: "700"
|
|
11858
|
-
color: TEXT_PRIMARY8
|
|
12021
|
+
fontWeight: "700"
|
|
11859
12022
|
},
|
|
11860
12023
|
children: value
|
|
11861
12024
|
}
|
|
@@ -11863,14 +12026,14 @@ function StatStrip({ stats, unit }) {
|
|
|
11863
12026
|
/* @__PURE__ */ jsx(
|
|
11864
12027
|
reactNative.Text,
|
|
11865
12028
|
{
|
|
12029
|
+
className: "text-text-tertiary",
|
|
11866
12030
|
style: {
|
|
11867
12031
|
marginTop: 2,
|
|
11868
12032
|
fontSize: 10,
|
|
11869
12033
|
fontFamily: "Inter, sans-serif",
|
|
11870
12034
|
fontWeight: "600",
|
|
11871
12035
|
letterSpacing: 0.4,
|
|
11872
|
-
textTransform: "uppercase"
|
|
11873
|
-
color: TEXT_TERTIARY8
|
|
12036
|
+
textTransform: "uppercase"
|
|
11874
12037
|
},
|
|
11875
12038
|
children: label
|
|
11876
12039
|
}
|
|
@@ -11889,10 +12052,9 @@ function SectionCard({
|
|
|
11889
12052
|
return /* @__PURE__ */ jsxs(
|
|
11890
12053
|
reactNative.View,
|
|
11891
12054
|
{
|
|
12055
|
+
className: "bg-surface-elevated border-border",
|
|
11892
12056
|
style: {
|
|
11893
|
-
backgroundColor: SURFACE_ELEVATED2,
|
|
11894
12057
|
borderWidth: 1,
|
|
11895
|
-
borderColor: BORDER_DEFAULT4,
|
|
11896
12058
|
borderRadius: 12,
|
|
11897
12059
|
padding: 12,
|
|
11898
12060
|
gap: 10
|
|
@@ -11902,13 +12064,13 @@ function SectionCard({
|
|
|
11902
12064
|
/* @__PURE__ */ jsx(
|
|
11903
12065
|
reactNative.Text,
|
|
11904
12066
|
{
|
|
12067
|
+
className: "text-text-tertiary",
|
|
11905
12068
|
style: {
|
|
11906
12069
|
fontSize: 11,
|
|
11907
12070
|
fontFamily: "Inter, sans-serif",
|
|
11908
12071
|
fontWeight: "600",
|
|
11909
12072
|
letterSpacing: 0.6,
|
|
11910
|
-
textTransform: "uppercase"
|
|
11911
|
-
color: TEXT_TERTIARY8
|
|
12073
|
+
textTransform: "uppercase"
|
|
11912
12074
|
},
|
|
11913
12075
|
children: title
|
|
11914
12076
|
}
|
|
@@ -11923,7 +12085,8 @@ function EntryList({ entries, expandedId, onToggle, emptyLabel, testID }) {
|
|
|
11923
12085
|
return /* @__PURE__ */ jsx(
|
|
11924
12086
|
reactNative.Text,
|
|
11925
12087
|
{
|
|
11926
|
-
|
|
12088
|
+
className: "text-text-tertiary",
|
|
12089
|
+
style: { fontSize: 12, fontFamily: "Inter, sans-serif" },
|
|
11927
12090
|
testID: `${testID}-empty`,
|
|
11928
12091
|
children: emptyLabel
|
|
11929
12092
|
}
|
|
@@ -11951,12 +12114,12 @@ function VbtBreakdown({ sets }) {
|
|
|
11951
12114
|
/* @__PURE__ */ jsx(
|
|
11952
12115
|
reactNative.Text,
|
|
11953
12116
|
{
|
|
12117
|
+
className: "text-text-secondary",
|
|
11954
12118
|
style: {
|
|
11955
12119
|
width: 44,
|
|
11956
12120
|
fontSize: 11,
|
|
11957
12121
|
fontFamily: "Inter, sans-serif",
|
|
11958
|
-
fontWeight: "600"
|
|
11959
|
-
color: TEXT_SECONDARY6
|
|
12122
|
+
fontWeight: "600"
|
|
11960
12123
|
},
|
|
11961
12124
|
children: set.label
|
|
11962
12125
|
}
|
|
@@ -11965,11 +12128,11 @@ function VbtBreakdown({ sets }) {
|
|
|
11965
12128
|
/* @__PURE__ */ jsx(
|
|
11966
12129
|
reactNative.Text,
|
|
11967
12130
|
{
|
|
12131
|
+
className: "text-text-tertiary",
|
|
11968
12132
|
style: {
|
|
11969
12133
|
fontSize: 11,
|
|
11970
12134
|
fontFamily: "Inter, sans-serif",
|
|
11971
|
-
fontVariant: ["tabular-nums"]
|
|
11972
|
-
color: TEXT_TERTIARY8
|
|
12135
|
+
fontVariant: ["tabular-nums"]
|
|
11973
12136
|
},
|
|
11974
12137
|
children: `${mean.toFixed(2)} \xB7 -${loss}%`
|
|
11975
12138
|
}
|
|
@@ -11988,23 +12151,22 @@ function VbtSummaryRow({ summary }) {
|
|
|
11988
12151
|
return /* @__PURE__ */ jsx(reactNative.View, { className: "flex-row", style: { gap: 8 }, testID: "exercise-detail-page-vbt-summary", children: cells.map((cell) => /* @__PURE__ */ jsxs(
|
|
11989
12152
|
reactNative.View,
|
|
11990
12153
|
{
|
|
12154
|
+
className: "bg-surface-elevated border-border",
|
|
11991
12155
|
style: {
|
|
11992
12156
|
flex: 1,
|
|
11993
12157
|
padding: 12,
|
|
11994
12158
|
borderRadius: 10,
|
|
11995
|
-
|
|
11996
|
-
borderWidth: 1,
|
|
11997
|
-
borderColor: BORDER_DEFAULT4
|
|
12159
|
+
borderWidth: 1
|
|
11998
12160
|
},
|
|
11999
12161
|
children: [
|
|
12000
12162
|
/* @__PURE__ */ jsx(
|
|
12001
12163
|
reactNative.Text,
|
|
12002
12164
|
{
|
|
12165
|
+
className: "text-text-primary",
|
|
12003
12166
|
style: {
|
|
12004
12167
|
fontSize: 16,
|
|
12005
12168
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
12006
|
-
fontWeight: "700"
|
|
12007
|
-
color: TEXT_PRIMARY8
|
|
12169
|
+
fontWeight: "700"
|
|
12008
12170
|
},
|
|
12009
12171
|
children: cell.value
|
|
12010
12172
|
}
|
|
@@ -12012,14 +12174,14 @@ function VbtSummaryRow({ summary }) {
|
|
|
12012
12174
|
/* @__PURE__ */ jsx(
|
|
12013
12175
|
reactNative.Text,
|
|
12014
12176
|
{
|
|
12177
|
+
className: "text-text-tertiary",
|
|
12015
12178
|
style: {
|
|
12016
12179
|
marginTop: 2,
|
|
12017
12180
|
fontSize: 10,
|
|
12018
12181
|
fontFamily: "Inter, sans-serif",
|
|
12019
12182
|
fontWeight: "600",
|
|
12020
12183
|
letterSpacing: 0.4,
|
|
12021
|
-
textTransform: "uppercase"
|
|
12022
|
-
color: TEXT_TERTIARY8
|
|
12184
|
+
textTransform: "uppercase"
|
|
12023
12185
|
},
|
|
12024
12186
|
children: cell.label
|
|
12025
12187
|
}
|
|
@@ -12048,8 +12210,8 @@ function ExerciseDetailPage({
|
|
|
12048
12210
|
return /* @__PURE__ */ jsx(
|
|
12049
12211
|
reactNative.View,
|
|
12050
12212
|
{
|
|
12051
|
-
className,
|
|
12052
|
-
style: { width: 390
|
|
12213
|
+
className: cn("bg-background-base", className),
|
|
12214
|
+
style: { width: 390 },
|
|
12053
12215
|
accessibilityRole: "main",
|
|
12054
12216
|
"aria-label": exercise.name,
|
|
12055
12217
|
testID: "exercise-detail-page",
|
|
@@ -12067,11 +12229,11 @@ function ExerciseDetailPage({
|
|
|
12067
12229
|
reactNative.Text,
|
|
12068
12230
|
{
|
|
12069
12231
|
accessibilityRole: "header",
|
|
12232
|
+
className: "text-text-primary",
|
|
12070
12233
|
style: {
|
|
12071
12234
|
fontSize: 20,
|
|
12072
12235
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
12073
|
-
fontWeight: "700"
|
|
12074
|
-
color: TEXT_PRIMARY8
|
|
12236
|
+
fontWeight: "700"
|
|
12075
12237
|
},
|
|
12076
12238
|
testID: "exercise-detail-page-title",
|
|
12077
12239
|
children: exercise.name
|
|
@@ -12080,11 +12242,11 @@ function ExerciseDetailPage({
|
|
|
12080
12242
|
/* @__PURE__ */ jsx(
|
|
12081
12243
|
reactNative.Text,
|
|
12082
12244
|
{
|
|
12245
|
+
className: "text-text-secondary",
|
|
12083
12246
|
style: {
|
|
12084
12247
|
marginTop: 2,
|
|
12085
12248
|
fontSize: 12,
|
|
12086
|
-
fontFamily: "Inter, sans-serif"
|
|
12087
|
-
color: TEXT_SECONDARY6
|
|
12249
|
+
fontFamily: "Inter, sans-serif"
|
|
12088
12250
|
},
|
|
12089
12251
|
testID: "exercise-detail-page-subtitle",
|
|
12090
12252
|
children: exercise.subtitle
|
|
@@ -12107,13 +12269,13 @@ function ExerciseDetailPage({
|
|
|
12107
12269
|
/* @__PURE__ */ jsx(
|
|
12108
12270
|
reactNative.Text,
|
|
12109
12271
|
{
|
|
12272
|
+
className: "text-text-tertiary",
|
|
12110
12273
|
style: {
|
|
12111
12274
|
fontSize: 9,
|
|
12112
12275
|
fontFamily: "Inter, sans-serif",
|
|
12113
12276
|
fontWeight: "600",
|
|
12114
12277
|
letterSpacing: 0.4,
|
|
12115
|
-
textTransform: "uppercase"
|
|
12116
|
-
color: TEXT_TERTIARY8
|
|
12278
|
+
textTransform: "uppercase"
|
|
12117
12279
|
},
|
|
12118
12280
|
children: "e1RM"
|
|
12119
12281
|
}
|
|
@@ -12191,13 +12353,7 @@ function ExerciseDetailPage({
|
|
|
12191
12353
|
}
|
|
12192
12354
|
);
|
|
12193
12355
|
}
|
|
12194
|
-
var SURFACE_ELEVATED3 = "var(--color-surface-elevated)";
|
|
12195
|
-
var BORDER_DEFAULT5 = "var(--color-border-default)";
|
|
12196
12356
|
var BRAND_PRIMARY13 = "#FF7900";
|
|
12197
|
-
var TEXT_PRIMARY9 = "var(--color-text-primary)";
|
|
12198
|
-
var TEXT_SECONDARY7 = "var(--color-text-secondary)";
|
|
12199
|
-
var TEXT_TERTIARY9 = "var(--color-text-tertiary)";
|
|
12200
|
-
var PAGE_BG3 = "var(--color-background-base)";
|
|
12201
12357
|
function countCompletedSets(exercise) {
|
|
12202
12358
|
if (exercise.setVelocities != null) return exercise.setVelocities.length;
|
|
12203
12359
|
if (exercise.status === "completed") return exercise.totalPlannedSets;
|
|
@@ -12280,11 +12436,11 @@ function WorkoutHeader({
|
|
|
12280
12436
|
reactNative.Text,
|
|
12281
12437
|
{
|
|
12282
12438
|
accessibilityRole: "header",
|
|
12439
|
+
className: "text-text-primary",
|
|
12283
12440
|
style: {
|
|
12284
12441
|
fontSize: 20,
|
|
12285
12442
|
fontFamily: '"Space Grotesk", sans-serif',
|
|
12286
|
-
fontWeight: "700"
|
|
12287
|
-
color: TEXT_PRIMARY9
|
|
12443
|
+
fontWeight: "700"
|
|
12288
12444
|
},
|
|
12289
12445
|
testID: "active-workout-page-title",
|
|
12290
12446
|
children: title
|
|
@@ -12293,11 +12449,11 @@ function WorkoutHeader({
|
|
|
12293
12449
|
subtitle != null && /* @__PURE__ */ jsx(
|
|
12294
12450
|
reactNative.Text,
|
|
12295
12451
|
{
|
|
12452
|
+
className: "text-text-secondary",
|
|
12296
12453
|
style: {
|
|
12297
12454
|
marginTop: 2,
|
|
12298
12455
|
fontSize: 12,
|
|
12299
|
-
fontFamily: "Inter, sans-serif"
|
|
12300
|
-
color: TEXT_SECONDARY7
|
|
12456
|
+
fontFamily: "Inter, sans-serif"
|
|
12301
12457
|
},
|
|
12302
12458
|
testID: "active-workout-page-subtitle",
|
|
12303
12459
|
children: subtitle
|
|
@@ -12321,13 +12477,13 @@ function WorkoutHeader({
|
|
|
12321
12477
|
/* @__PURE__ */ jsx(
|
|
12322
12478
|
reactNative.Text,
|
|
12323
12479
|
{
|
|
12480
|
+
className: "text-text-tertiary",
|
|
12324
12481
|
style: {
|
|
12325
12482
|
fontSize: 10,
|
|
12326
12483
|
fontFamily: "Inter, sans-serif",
|
|
12327
12484
|
fontWeight: "600",
|
|
12328
12485
|
letterSpacing: 0.4,
|
|
12329
|
-
textTransform: "uppercase"
|
|
12330
|
-
color: TEXT_TERTIARY9
|
|
12486
|
+
textTransform: "uppercase"
|
|
12331
12487
|
},
|
|
12332
12488
|
children: `${progress.completedSets}/${progress.totalSets} sets`
|
|
12333
12489
|
}
|
|
@@ -12337,7 +12493,8 @@ function WorkoutHeader({
|
|
|
12337
12493
|
/* @__PURE__ */ jsx(
|
|
12338
12494
|
reactNative.View,
|
|
12339
12495
|
{
|
|
12340
|
-
|
|
12496
|
+
className: "bg-border",
|
|
12497
|
+
style: { height: 4, borderRadius: 2 },
|
|
12341
12498
|
testID: "active-workout-page-progress-track",
|
|
12342
12499
|
children: /* @__PURE__ */ jsx(
|
|
12343
12500
|
reactNative.View,
|
|
@@ -12361,10 +12518,9 @@ function ExerciseList({ groups, focusedId, onToggle }) {
|
|
|
12361
12518
|
return /* @__PURE__ */ jsx(
|
|
12362
12519
|
reactNative.View,
|
|
12363
12520
|
{
|
|
12521
|
+
className: "bg-surface-elevated border-border",
|
|
12364
12522
|
style: {
|
|
12365
|
-
backgroundColor: SURFACE_ELEVATED3,
|
|
12366
12523
|
borderWidth: 1,
|
|
12367
|
-
borderColor: BORDER_DEFAULT5,
|
|
12368
12524
|
borderRadius: 12
|
|
12369
12525
|
},
|
|
12370
12526
|
children: /* @__PURE__ */ jsx(
|
|
@@ -12430,8 +12586,8 @@ function ActiveWorkoutPage({
|
|
|
12430
12586
|
return /* @__PURE__ */ jsxs(
|
|
12431
12587
|
reactNative.View,
|
|
12432
12588
|
{
|
|
12433
|
-
className,
|
|
12434
|
-
style: { position: "relative", width: 390
|
|
12589
|
+
className: ["bg-background-base", className].filter(Boolean).join(" "),
|
|
12590
|
+
style: { position: "relative", width: 390 },
|
|
12435
12591
|
accessibilityRole: "main",
|
|
12436
12592
|
"aria-label": title,
|
|
12437
12593
|
testID: "active-workout-page",
|
|
@@ -12444,7 +12600,7 @@ function ActiveWorkoutPage({
|
|
|
12444
12600
|
(showRest || showInput) && /* @__PURE__ */ jsx(
|
|
12445
12601
|
reactNative.View,
|
|
12446
12602
|
{
|
|
12447
|
-
style: { borderTopWidth: 1, borderTopColor:
|
|
12603
|
+
style: { borderTopWidth: 1, borderTopColor: resolveColor("border-default") },
|
|
12448
12604
|
testID: "active-workout-page-bottom-bar",
|
|
12449
12605
|
children: showRest && rest != null ? /* @__PURE__ */ jsx(
|
|
12450
12606
|
RestTimer,
|
|
@@ -12704,28 +12860,28 @@ function Scatter({
|
|
|
12704
12860
|
testID: "scatter-canvas",
|
|
12705
12861
|
style: { position: "absolute", top: 0, left: 0, width, height, overflow: "hidden" },
|
|
12706
12862
|
children: [
|
|
12707
|
-
ticksOf(yd, TICK_COUNT).map((
|
|
12708
|
-
const y = toY(
|
|
12863
|
+
ticksOf(yd, TICK_COUNT).map((t2, i) => {
|
|
12864
|
+
const y = toY(t2);
|
|
12709
12865
|
return /* @__PURE__ */ jsx(
|
|
12710
12866
|
reactNative.View,
|
|
12711
12867
|
{
|
|
12712
12868
|
accessibilityElementsHidden: true,
|
|
12713
12869
|
testID: "scatter-gridline-y",
|
|
12714
12870
|
style: { position: "absolute", left: PLOT_LEFT2, width: innerW, top: y, height: 1, backgroundColor: GRID_LINE2 },
|
|
12715
|
-
children: /* @__PURE__ */ jsx(reactNative.Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", left: -PLOT_LEFT2, top: -6, width: PLOT_LEFT2 - 6, textAlign: "right" }, children: formatTick(
|
|
12871
|
+
children: /* @__PURE__ */ jsx(reactNative.Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", left: -PLOT_LEFT2, top: -6, width: PLOT_LEFT2 - 6, textAlign: "right" }, children: formatTick(t2) })
|
|
12716
12872
|
},
|
|
12717
12873
|
`y-${i}`
|
|
12718
12874
|
);
|
|
12719
12875
|
}),
|
|
12720
|
-
ticksOf(xd, TICK_COUNT).map((
|
|
12721
|
-
const x = toX(
|
|
12876
|
+
ticksOf(xd, TICK_COUNT).map((t2, i) => {
|
|
12877
|
+
const x = toX(t2);
|
|
12722
12878
|
return /* @__PURE__ */ jsx(
|
|
12723
12879
|
reactNative.View,
|
|
12724
12880
|
{
|
|
12725
12881
|
accessibilityElementsHidden: true,
|
|
12726
12882
|
testID: "scatter-gridline-x",
|
|
12727
12883
|
style: { position: "absolute", top: PLOT_TOP, height: innerH, left: x, width: 1, backgroundColor: GRID_LINE2 },
|
|
12728
|
-
children: /* @__PURE__ */ jsx(reactNative.Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", top: innerH + 4, left: -16, width: 32, textAlign: "center" }, children: formatTick(
|
|
12884
|
+
children: /* @__PURE__ */ jsx(reactNative.Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", top: innerH + 4, left: -16, width: 32, textAlign: "center" }, children: formatTick(t2) })
|
|
12729
12885
|
},
|
|
12730
12886
|
`x-${i}`
|
|
12731
12887
|
);
|
|
@@ -12859,23 +13015,23 @@ function Gauge2({
|
|
|
12859
13015
|
testID: "gauge",
|
|
12860
13016
|
...props,
|
|
12861
13017
|
children: [
|
|
12862
|
-
ticks.map((
|
|
13018
|
+
ticks.map((t2) => /* @__PURE__ */ jsx(
|
|
12863
13019
|
reactNative.View,
|
|
12864
13020
|
{
|
|
12865
13021
|
accessibilityElementsHidden: true,
|
|
12866
13022
|
testID: "gauge-segment",
|
|
12867
13023
|
style: {
|
|
12868
13024
|
position: "absolute",
|
|
12869
|
-
left:
|
|
12870
|
-
top:
|
|
13025
|
+
left: t2.left - tickThickness / 2,
|
|
13026
|
+
top: t2.top - tickLength / 2,
|
|
12871
13027
|
width: tickThickness,
|
|
12872
13028
|
height: tickLength,
|
|
12873
13029
|
borderRadius: tickThickness / 2,
|
|
12874
|
-
backgroundColor:
|
|
12875
|
-
transform: [{ rotate:
|
|
13030
|
+
backgroundColor: t2.color,
|
|
13031
|
+
transform: [{ rotate: t2.rotate }]
|
|
12876
13032
|
}
|
|
12877
13033
|
},
|
|
12878
|
-
|
|
13034
|
+
t2.key
|
|
12879
13035
|
)),
|
|
12880
13036
|
/* @__PURE__ */ jsxs(reactNative.View, { style: { position: "absolute", top: 0, left: 0, width: size, height: size }, className: "items-center justify-center", children: [
|
|
12881
13037
|
/* @__PURE__ */ jsxs(reactNative.View, { className: "flex-row items-baseline gap-0.5", children: [
|
|
@@ -12889,65 +13045,6 @@ function Gauge2({
|
|
|
12889
13045
|
);
|
|
12890
13046
|
}
|
|
12891
13047
|
|
|
12892
|
-
// src/utils/colors.ts
|
|
12893
|
-
function getStatusColor(status) {
|
|
12894
|
-
return `var(--color-status-${status})`;
|
|
12895
|
-
}
|
|
12896
|
-
function getResultColor(result) {
|
|
12897
|
-
return `var(--color-result-${result})`;
|
|
12898
|
-
}
|
|
12899
|
-
function alpha(color, opacity) {
|
|
12900
|
-
const clampedOpacity = Math.max(0, Math.min(1, opacity));
|
|
12901
|
-
if (color.startsWith("#")) {
|
|
12902
|
-
const hex = color.slice(1);
|
|
12903
|
-
let r, g, b;
|
|
12904
|
-
if (hex.length === 3) {
|
|
12905
|
-
r = parseInt(hex[0] + hex[0], 16);
|
|
12906
|
-
g = parseInt(hex[1] + hex[1], 16);
|
|
12907
|
-
b = parseInt(hex[2] + hex[2], 16);
|
|
12908
|
-
} else if (hex.length === 6) {
|
|
12909
|
-
r = parseInt(hex.slice(0, 2), 16);
|
|
12910
|
-
g = parseInt(hex.slice(2, 4), 16);
|
|
12911
|
-
b = parseInt(hex.slice(4, 6), 16);
|
|
12912
|
-
} else {
|
|
12913
|
-
return color;
|
|
12914
|
-
}
|
|
12915
|
-
return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
|
|
12916
|
-
}
|
|
12917
|
-
const rgbMatch = color.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
12918
|
-
if (rgbMatch) {
|
|
12919
|
-
const [, r, g, b] = rgbMatch;
|
|
12920
|
-
return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
|
|
12921
|
-
}
|
|
12922
|
-
const rgbaMatch = color.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)/);
|
|
12923
|
-
if (rgbaMatch) {
|
|
12924
|
-
const [, r, g, b] = rgbaMatch;
|
|
12925
|
-
return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
|
|
12926
|
-
}
|
|
12927
|
-
return color;
|
|
12928
|
-
}
|
|
12929
|
-
function getLuminance(color) {
|
|
12930
|
-
if (!color.startsWith("#")) return "dark";
|
|
12931
|
-
const hex = color.slice(1);
|
|
12932
|
-
let r, g, b;
|
|
12933
|
-
if (hex.length === 3) {
|
|
12934
|
-
r = parseInt(hex[0] + hex[0], 16);
|
|
12935
|
-
g = parseInt(hex[1] + hex[1], 16);
|
|
12936
|
-
b = parseInt(hex[2] + hex[2], 16);
|
|
12937
|
-
} else if (hex.length === 6) {
|
|
12938
|
-
r = parseInt(hex.slice(0, 2), 16);
|
|
12939
|
-
g = parseInt(hex.slice(2, 4), 16);
|
|
12940
|
-
b = parseInt(hex.slice(4, 6), 16);
|
|
12941
|
-
} else {
|
|
12942
|
-
return "dark";
|
|
12943
|
-
}
|
|
12944
|
-
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
|
12945
|
-
return luminance > 0.5 ? "light" : "dark";
|
|
12946
|
-
}
|
|
12947
|
-
function getContrastText(backgroundColor) {
|
|
12948
|
-
return getLuminance(backgroundColor) === "light" ? "#000000" : "#FFFFFF";
|
|
12949
|
-
}
|
|
12950
|
-
|
|
12951
13048
|
// src/utils/form.ts
|
|
12952
13049
|
function getFieldValidationProps(state) {
|
|
12953
13050
|
return {
|
|
@@ -13175,6 +13272,7 @@ exports.StrengthTrendChart = StrengthTrendChart;
|
|
|
13175
13272
|
exports.SupersetWrapper = SupersetWrapper;
|
|
13176
13273
|
exports.Surface = Surface;
|
|
13177
13274
|
exports.Switch = Switch;
|
|
13275
|
+
exports.TEMPO_PACING = TEMPO_PACING;
|
|
13178
13276
|
exports.Tab = Tab;
|
|
13179
13277
|
exports.TabList = TabList;
|
|
13180
13278
|
exports.TabPanel = TabPanel;
|
|
@@ -13187,7 +13285,9 @@ exports.TableHeaderCell = TableHeaderCell;
|
|
|
13187
13285
|
exports.TablePagination = TablePagination;
|
|
13188
13286
|
exports.TableRow = TableRow;
|
|
13189
13287
|
exports.Tabs = Tabs;
|
|
13288
|
+
exports.TempoBar = TempoBar;
|
|
13190
13289
|
exports.TempoDisplay = TempoDisplay;
|
|
13290
|
+
exports.ThemeProvider = ThemeProvider;
|
|
13191
13291
|
exports.Toast = Toast;
|
|
13192
13292
|
exports.ToastProvider = ToastProvider;
|
|
13193
13293
|
exports.ToolbarButton = ToolbarButton;
|
|
@@ -13248,6 +13348,8 @@ exports.getLuminance = getLuminance;
|
|
|
13248
13348
|
exports.getResultColor = getResultColor;
|
|
13249
13349
|
exports.getSemanticColors = getSemanticColors;
|
|
13250
13350
|
exports.getStatusColor = getStatusColor;
|
|
13351
|
+
exports.getTempoFillPct = getTempoFillPct;
|
|
13352
|
+
exports.getTempoPacingState = getTempoPacingState;
|
|
13251
13353
|
exports.getThemeCSSVars = getThemeCSSVars;
|
|
13252
13354
|
exports.getValidatedElevation = getValidatedElevation;
|
|
13253
13355
|
exports.getVelocityZoneColor = getVelocityZoneColor;
|
|
@@ -13272,6 +13374,7 @@ exports.primitiveShadows = primitiveShadows;
|
|
|
13272
13374
|
exports.primitiveSpacing = primitiveSpacing;
|
|
13273
13375
|
exports.primitiveTypography = primitiveTypography;
|
|
13274
13376
|
exports.primitiveZIndex = primitiveZIndex;
|
|
13377
|
+
exports.resolveColor = resolveColor;
|
|
13275
13378
|
exports.rgbToHex = rgbToHex;
|
|
13276
13379
|
exports.rgbToHsv = rgbToHsv;
|
|
13277
13380
|
exports.roundRpe = roundRpe;
|