@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.
Files changed (52) hide show
  1. package/dist/bodymap.js +441 -97
  2. package/dist/bodymap.js.map +1 -1
  3. package/dist/bodymap.mjs +49 -62
  4. package/dist/bodymap.mjs.map +1 -1
  5. package/dist/{chunk-TOD2WQBG.mjs → chunk-2SISKTWM.mjs} +22 -43
  6. package/dist/chunk-2SISKTWM.mjs.map +1 -0
  7. package/dist/{chunk-P7TSQUN6.mjs → chunk-SNVKL5WZ.mjs} +42 -5
  8. package/dist/chunk-SNVKL5WZ.mjs.map +1 -0
  9. package/dist/index.d.mts +42 -2
  10. package/dist/index.d.ts +42 -2
  11. package/dist/index.js +431 -328
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mjs +397 -314
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/theme/index.d.mts +28 -2
  16. package/dist/theme/index.d.ts +28 -2
  17. package/dist/theme/index.js +37 -0
  18. package/dist/theme/index.js.map +1 -1
  19. package/dist/theme/index.mjs +1 -1
  20. package/package.json +1 -1
  21. package/src/components/custom/Workout/ActiveWorkoutPage.tsx +10 -15
  22. package/src/components/custom/Workout/BodyMap.tsx +7 -8
  23. package/src/components/custom/Workout/BodyMapDetailPanel.tsx +25 -28
  24. package/src/components/custom/Workout/CapacityBandChart.tsx +2 -3
  25. package/src/components/custom/Workout/ExerciseCard.tsx +12 -27
  26. package/src/components/custom/Workout/ExerciseDetailPage.tsx +21 -27
  27. package/src/components/custom/Workout/InputBar.tsx +10 -11
  28. package/src/components/custom/Workout/MesoCard.tsx +2 -6
  29. package/src/components/custom/Workout/MesoStatusCard.tsx +17 -15
  30. package/src/components/custom/Workout/MuscleGroupChip.tsx +2 -4
  31. package/src/components/custom/Workout/PlaceholderStrip.tsx +2 -3
  32. package/src/components/custom/Workout/PrHistoryModal.tsx +12 -14
  33. package/src/components/custom/Workout/ProgramPlanningPage.tsx +8 -12
  34. package/src/components/custom/Workout/ReadinessCheck.tsx +13 -11
  35. package/src/components/custom/Workout/RestTimer.tsx +8 -7
  36. package/src/components/custom/Workout/SetRow.tsx +10 -7
  37. package/src/components/custom/Workout/StrengthTrendChart.tsx +15 -17
  38. package/src/components/custom/Workout/TempoBar.stories.tsx +95 -0
  39. package/src/components/custom/Workout/TempoBar.test.tsx +103 -0
  40. package/src/components/custom/Workout/TempoBar.tsx +215 -0
  41. package/src/components/custom/Workout/TrainingStatusPage.tsx +8 -17
  42. package/src/components/custom/Workout/VelocityStrip.tsx +7 -5
  43. package/src/components/custom/Workout/WeekRow.tsx +2 -1
  44. package/src/components/custom/Workout/WorkoutCard.tsx +3 -8
  45. package/src/components/custom/Workout/index.ts +9 -0
  46. package/src/test/nativewind-stub.ts +13 -0
  47. package/src/theme/ThemeProvider.test.tsx +24 -0
  48. package/src/theme/ThemeProvider.tsx +50 -0
  49. package/src/theme/index.ts +2 -0
  50. package/src/theme/resolve-color.ts +19 -0
  51. package/dist/chunk-P7TSQUN6.mjs.map +0 -1
  52. package/dist/chunk-TOD2WQBG.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { jsxs, jsx, cn, WORKOUT_TOKENS, Fragment, Card, Badge, MesoStatusCard } from './chunk-TOD2WQBG.mjs';
2
- export { Badge, BadgeText, Card, CardContent, CardDescription, CardFooter, CardHeader, CardSkeleton, CardTitle, Indicator, MesoStatusCard, Sparkline, StatusDot, cn } from './chunk-TOD2WQBG.mjs';
3
- import { getHoverColors, getBaseSurfaceColor, getElevationSurface, getElevationShadow, getGlowShadow, neumorphicShadows } from './chunk-P7TSQUN6.mjs';
4
- export { applyThemePreset, audiobookPreset, componentElevationRanges, createFlatShadow, createPressedHoverShadow, createPressedShadow, createRaisedHoverShadow, createRaisedShadow, darken, defaultPreset, elevationSystem, getBaseSurfaceColor, getElevationConfig, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getValidatedElevation, hexToRgb, hsvToRgb, isCssPropertyManifest, isDark, lighten, neumorphicShadows, rgbToHex, rgbToHsv, shadowColors, validateCssPropertyManifest } from './chunk-P7TSQUN6.mjs';
5
- import { semanticColorsDark, __require } from './chunk-7XPB4NAO.mjs';
1
+ import { cn, WORKOUT_TOKENS, Card, Badge, MesoStatusCard } from './chunk-2SISKTWM.mjs';
2
+ export { Badge, BadgeText, Card, CardContent, CardDescription, CardFooter, CardHeader, CardSkeleton, CardTitle, Indicator, MesoStatusCard, Sparkline, StatusDot, cn } from './chunk-2SISKTWM.mjs';
3
+ import { jsxs, jsx, getHoverColors, resolveColor, Fragment, getBaseSurfaceColor, getElevationSurface, getElevationShadow, getGlowShadow, neumorphicShadows } from './chunk-SNVKL5WZ.mjs';
4
+ export { ThemeProvider, applyThemePreset, audiobookPreset, componentElevationRanges, createFlatShadow, createPressedHoverShadow, createPressedShadow, createRaisedHoverShadow, createRaisedShadow, darken, defaultPreset, elevationSystem, getBaseSurfaceColor, getElevationConfig, getElevationShadow, getElevationSurface, getGlowShadow, getHoverColors, getValidatedElevation, hexToRgb, hsvToRgb, isCssPropertyManifest, isDark, lighten, neumorphicShadows, resolveColor, rgbToHex, rgbToHsv, shadowColors, validateCssPropertyManifest } from './chunk-SNVKL5WZ.mjs';
5
+ import { semanticColorsDark, __require, getSemanticColors } from './chunk-7XPB4NAO.mjs';
6
6
  export { buttonSizes, darkThemeCSSVars, discreteRainbow, getDiscreteRainbowColor, getSemanticColors, getThemeCSSVars, gluestackConfig, lightThemeCSSVars, primitiveBorderRadius, primitiveBreakpoints, primitiveColors, primitiveShadows, primitiveSpacing, primitiveTypography, primitiveZIndex, semanticColorsDark, semanticColorsLight, semanticTypography } from './chunk-7XPB4NAO.mjs';
7
7
  import { Pressable, ActivityIndicator, Text, View, TextInput, Platform, StyleSheet, Easing, Image, Modal as Modal$1, ScrollView, Animated } from 'react-native';
8
8
  import React23, { forwardRef, useState, createContext, useContext, useRef, useEffect, useCallback, useMemo } from 'react';
@@ -2788,7 +2788,7 @@ function ToastProvider({
2788
2788
  return id;
2789
2789
  }, [defaultDuration, maxToasts]);
2790
2790
  const removeToast = useCallback((id) => {
2791
- setToasts((prev) => prev.filter((t) => t.id !== id));
2791
+ setToasts((prev) => prev.filter((t2) => t2.id !== id));
2792
2792
  }, []);
2793
2793
  const removeAllToasts = useCallback(() => {
2794
2794
  setToasts([]);
@@ -4799,14 +4799,13 @@ function SingleStrip({
4799
4799
  return /* @__PURE__ */ jsx(
4800
4800
  View,
4801
4801
  {
4802
- className: cn(className),
4802
+ className: cn("border-border-strong", className),
4803
4803
  style: [
4804
4804
  {
4805
4805
  height: 3,
4806
4806
  backgroundColor: "transparent",
4807
4807
  borderWidth: 1,
4808
4808
  borderStyle: "dashed",
4809
- borderColor: "var(--color-border-strong)",
4810
4809
  borderRadius: 1,
4811
4810
  opacity: 0.5
4812
4811
  },
@@ -4840,13 +4839,13 @@ function SegmentedStrip({
4840
4839
  children: Array.from({ length: segments }, (_, i) => /* @__PURE__ */ jsx(
4841
4840
  View,
4842
4841
  {
4842
+ className: "border-border-strong",
4843
4843
  style: {
4844
4844
  flex: 1,
4845
4845
  height: 3,
4846
4846
  backgroundColor: "transparent",
4847
4847
  borderWidth: 1,
4848
4848
  borderStyle: "dashed",
4849
- borderColor: "var(--color-border-strong)",
4850
4849
  borderRadius: 1,
4851
4850
  minWidth: 4
4852
4851
  },
@@ -5116,6 +5115,198 @@ function TempoDisplay({
5116
5115
  }
5117
5116
  );
5118
5117
  }
5118
+
5119
+ // src/utils/colors.ts
5120
+ function getStatusColor(status) {
5121
+ return `var(--color-status-${status})`;
5122
+ }
5123
+ function getResultColor(result) {
5124
+ return `var(--color-result-${result})`;
5125
+ }
5126
+ function alpha(color, opacity) {
5127
+ const clampedOpacity = Math.max(0, Math.min(1, opacity));
5128
+ if (color.startsWith("#")) {
5129
+ const hex = color.slice(1);
5130
+ let r, g, b;
5131
+ if (hex.length === 3) {
5132
+ r = parseInt(hex[0] + hex[0], 16);
5133
+ g = parseInt(hex[1] + hex[1], 16);
5134
+ b = parseInt(hex[2] + hex[2], 16);
5135
+ } else if (hex.length === 6) {
5136
+ r = parseInt(hex.slice(0, 2), 16);
5137
+ g = parseInt(hex.slice(2, 4), 16);
5138
+ b = parseInt(hex.slice(4, 6), 16);
5139
+ } else {
5140
+ return color;
5141
+ }
5142
+ return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
5143
+ }
5144
+ const rgbMatch = color.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
5145
+ if (rgbMatch) {
5146
+ const [, r, g, b] = rgbMatch;
5147
+ return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
5148
+ }
5149
+ const rgbaMatch = color.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)/);
5150
+ if (rgbaMatch) {
5151
+ const [, r, g, b] = rgbaMatch;
5152
+ return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
5153
+ }
5154
+ return color;
5155
+ }
5156
+ function getLuminance(color) {
5157
+ if (!color.startsWith("#")) return "dark";
5158
+ const hex = color.slice(1);
5159
+ let r, g, b;
5160
+ if (hex.length === 3) {
5161
+ r = parseInt(hex[0] + hex[0], 16);
5162
+ g = parseInt(hex[1] + hex[1], 16);
5163
+ b = parseInt(hex[2] + hex[2], 16);
5164
+ } else if (hex.length === 6) {
5165
+ r = parseInt(hex.slice(0, 2), 16);
5166
+ g = parseInt(hex.slice(2, 4), 16);
5167
+ b = parseInt(hex.slice(4, 6), 16);
5168
+ } else {
5169
+ return "dark";
5170
+ }
5171
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
5172
+ return luminance > 0.5 ? "light" : "dark";
5173
+ }
5174
+ function getContrastText(backgroundColor) {
5175
+ return getLuminance(backgroundColor) === "light" ? "#000000" : "#FFFFFF";
5176
+ }
5177
+
5178
+ // src/components/custom/Workout/TempoBar.tsx
5179
+ var t = getSemanticColors("dark");
5180
+ var TEMPO_PACING = {
5181
+ behindThresholdPct: 0.15,
5182
+ minPhaseDurationMs: 500
5183
+ };
5184
+ function getTempoPacingState(elapsedMs, targetMs) {
5185
+ if (!targetMs || targetMs < TEMPO_PACING.minPhaseDurationMs) return "none";
5186
+ const ratio = elapsedMs / targetMs;
5187
+ if (ratio > 1 + TEMPO_PACING.behindThresholdPct) return "behind";
5188
+ return "on-pace";
5189
+ }
5190
+ function getTempoFillPct(elapsedMs, targetMs) {
5191
+ if (!targetMs) return 100;
5192
+ return Math.min(100, elapsedMs / targetMs * 100);
5193
+ }
5194
+ var PHASE_ORDER = ["concentric", "hold", "eccentric"];
5195
+ var PHASE_CONFIG = {
5196
+ concentric: { label: "Con", color: t["status-success"], flex: 2 },
5197
+ hold: { label: "Hold", color: t["brand-primary"], flex: 1 },
5198
+ eccentric: { label: "Ecc", color: t["status-warning"], flex: 3 }
5199
+ };
5200
+ function TempoBar({
5201
+ activePhase,
5202
+ phaseElapsedMs,
5203
+ completed,
5204
+ target,
5205
+ className,
5206
+ ...props
5207
+ }) {
5208
+ return /* @__PURE__ */ jsxs(View, { className, testID: "tempo-bar", ...props, children: [
5209
+ /* @__PURE__ */ jsx(View, { style: { flexDirection: "row", marginBottom: 4 }, children: PHASE_ORDER.map((phase) => {
5210
+ const config = PHASE_CONFIG[phase];
5211
+ return /* @__PURE__ */ jsx(View, { style: { flex: config.flex, alignItems: "center" }, children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 10, color: t["text-disabled"] }, children: config.label }) }, phase);
5212
+ }) }),
5213
+ /* @__PURE__ */ jsx(View, { style: { flexDirection: "row", gap: 2, height: 20 }, children: PHASE_ORDER.map((phase) => {
5214
+ const config = PHASE_CONFIG[phase];
5215
+ const isActive = activePhase === phase;
5216
+ const completedMs = completed?.[phase];
5217
+ const targetSec = target?.[phase];
5218
+ const targetMs = targetSec != null ? targetSec * 1e3 : null;
5219
+ return /* @__PURE__ */ jsx(
5220
+ View,
5221
+ {
5222
+ style: {
5223
+ flex: config.flex,
5224
+ backgroundColor: alpha("#ffffff", 0.06),
5225
+ borderRadius: 4,
5226
+ overflow: "hidden"
5227
+ },
5228
+ children: isActive ? /* @__PURE__ */ jsx(
5229
+ ActiveSegment,
5230
+ {
5231
+ config,
5232
+ phaseElapsedMs,
5233
+ targetMs
5234
+ }
5235
+ ) : completedMs != null ? /* @__PURE__ */ jsx(CompletedSegment, { config, completedMs, targetMs }) : null
5236
+ },
5237
+ phase
5238
+ );
5239
+ }) })
5240
+ ] });
5241
+ }
5242
+ function ActiveSegment({
5243
+ config,
5244
+ phaseElapsedMs,
5245
+ targetMs
5246
+ }) {
5247
+ const pacing = getTempoPacingState(phaseElapsedMs, targetMs);
5248
+ const barColor = pacing === "behind" ? t["status-error"] : config.color;
5249
+ const fillPct = getTempoFillPct(phaseElapsedMs, targetMs);
5250
+ const label = targetMs ? `${formatDuration(phaseElapsedMs)} / ${formatDuration(targetMs)}` : formatDuration(phaseElapsedMs);
5251
+ return /* @__PURE__ */ jsxs(View, { style: { height: "100%", position: "relative" }, testID: `tempo-segment-active-${config.label}`, children: [
5252
+ /* @__PURE__ */ jsx(
5253
+ View,
5254
+ {
5255
+ style: {
5256
+ position: "absolute",
5257
+ left: 0,
5258
+ top: 0,
5259
+ bottom: 0,
5260
+ width: `${fillPct}%`,
5261
+ backgroundColor: alpha(barColor, 0.3),
5262
+ borderRadius: 4
5263
+ }
5264
+ }
5265
+ ),
5266
+ /* @__PURE__ */ jsx(
5267
+ View,
5268
+ {
5269
+ style: {
5270
+ height: "100%",
5271
+ flexDirection: "row",
5272
+ alignItems: "center",
5273
+ justifyContent: "center"
5274
+ },
5275
+ children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 12, fontWeight: "700", color: barColor }, children: label })
5276
+ }
5277
+ )
5278
+ ] });
5279
+ }
5280
+ function CompletedSegment({
5281
+ config,
5282
+ completedMs,
5283
+ targetMs
5284
+ }) {
5285
+ const pacing = getTempoPacingState(completedMs, targetMs);
5286
+ const hitTarget = pacing !== "behind";
5287
+ const indicator = targetMs && targetMs >= TEMPO_PACING.minPhaseDurationMs ? hitTarget ? " \u2713" : " \u2717" : "";
5288
+ return /* @__PURE__ */ jsx(
5289
+ View,
5290
+ {
5291
+ style: {
5292
+ height: "100%",
5293
+ flexDirection: "row",
5294
+ alignItems: "center",
5295
+ justifyContent: "center",
5296
+ backgroundColor: alpha(config.color, 0.15)
5297
+ },
5298
+ testID: `tempo-segment-completed-${config.label}`,
5299
+ children: /* @__PURE__ */ jsxs(Text, { style: { fontSize: 12, fontWeight: "500", color: alpha(config.color, 0.7) }, children: [
5300
+ formatDuration(completedMs),
5301
+ indicator
5302
+ ] })
5303
+ }
5304
+ );
5305
+ }
5306
+ function formatDuration(ms) {
5307
+ const s = ms / 1e3;
5308
+ return s < 10 ? s.toFixed(1) : Math.round(s).toString();
5309
+ }
5119
5310
  function getDotColor(deviation) {
5120
5311
  const abs = Math.abs(deviation);
5121
5312
  if (deviation < -0.3) return "#14B8A6";
@@ -5598,7 +5789,7 @@ function VelocityStrip({
5598
5789
  const stripContent = /* @__PURE__ */ jsxs(
5599
5790
  Animated.View,
5600
5791
  {
5601
- className,
5792
+ className: [className, expanded ? "bg-surface-raised" : "bg-transparent"].filter(Boolean).join(" "),
5602
5793
  style: [
5603
5794
  {
5604
5795
  height: heightAnim,
@@ -5609,7 +5800,6 @@ function VelocityStrip({
5609
5800
  paddingBottom: expanded ? 24 : 0,
5610
5801
  paddingHorizontal: expanded ? 6 : 0,
5611
5802
  paddingVertical: expanded ? void 0 : 8,
5612
- backgroundColor: expanded ? "var(--color-surface-raised)" : "transparent",
5613
5803
  overflow: expanded ? "visible" : "hidden"
5614
5804
  }
5615
5805
  ],
@@ -5633,7 +5823,8 @@ function VelocityStrip({
5633
5823
  expanded && /* @__PURE__ */ jsx(Animated.View, { style: { opacity: labelOpacity, alignItems: "center", position: "absolute", top: -13, left: 0, right: 0 }, accessibilityElementsHidden: true, children: /* @__PURE__ */ jsx(
5634
5824
  Text,
5635
5825
  {
5636
- style: { fontSize: 8, fontWeight: "600", color: "var(--color-text-secondary)" },
5826
+ className: "text-text-secondary",
5827
+ style: { fontSize: 8, fontWeight: "600" },
5637
5828
  testID: `velocity-label-${i}`,
5638
5829
  children: formatVelocity(v)
5639
5830
  }
@@ -5693,9 +5884,9 @@ function VelocityStrip({
5693
5884
  /* @__PURE__ */ jsxs(
5694
5885
  Text,
5695
5886
  {
5887
+ className: "text-text-secondary",
5696
5888
  style: {
5697
5889
  fontSize: 10,
5698
- color: "var(--color-text-secondary)",
5699
5890
  fontFamily: "Inter, sans-serif"
5700
5891
  },
5701
5892
  children: [
@@ -5711,9 +5902,9 @@ function VelocityStrip({
5711
5902
  /* @__PURE__ */ jsxs(
5712
5903
  Text,
5713
5904
  {
5905
+ className: "text-text-secondary",
5714
5906
  style: {
5715
5907
  fontSize: 10,
5716
- color: "var(--color-text-secondary)",
5717
5908
  fontFamily: "Inter, sans-serif",
5718
5909
  ...getLossStyle(loss)
5719
5910
  },
@@ -5763,16 +5954,14 @@ function MuscleGroupChip({
5763
5954
  const content = /* @__PURE__ */ jsxs(
5764
5955
  View,
5765
5956
  {
5766
- className,
5957
+ className: ["bg-surface-raised border-border", className].filter(Boolean).join(" "),
5767
5958
  style: {
5768
5959
  flexDirection: "row",
5769
5960
  alignItems: "center",
5770
5961
  borderRadius: 9999,
5771
5962
  paddingHorizontal: 9,
5772
5963
  paddingVertical: 3,
5773
- backgroundColor: "var(--color-surface-raised)",
5774
- borderWidth: 1,
5775
- borderColor: "var(--color-border-default)"
5964
+ borderWidth: 1
5776
5965
  },
5777
5966
  accessibilityLabel: onPress ? void 0 : `${name}, volume status: ${statusLabel}`,
5778
5967
  testID: "muscle-group-chip",
@@ -5796,11 +5985,11 @@ function MuscleGroupChip({
5796
5985
  /* @__PURE__ */ jsx(
5797
5986
  Text,
5798
5987
  {
5988
+ className: "text-text-secondary",
5799
5989
  style: {
5800
5990
  fontFamily: "Inter, sans-serif",
5801
5991
  fontWeight: "500",
5802
- fontSize: 11,
5803
- color: "var(--color-text-secondary)"
5992
+ fontSize: 11
5804
5993
  },
5805
5994
  accessibilityElementsHidden: true,
5806
5995
  children: name
@@ -5899,11 +6088,11 @@ function SetRow({
5899
6088
  ) : /* @__PURE__ */ jsx(
5900
6089
  Text,
5901
6090
  {
6091
+ className: "text-text-secondary",
5902
6092
  style: {
5903
6093
  fontSize: 13,
5904
6094
  fontWeight: "600",
5905
- fontFamily: "Inter, sans-serif",
5906
- color: "var(--color-text-secondary)"
6095
+ fontFamily: "Inter, sans-serif"
5907
6096
  },
5908
6097
  children: setNumber
5909
6098
  }
@@ -5918,10 +6107,10 @@ function SetRow({
5918
6107
  children: /* @__PURE__ */ jsx(
5919
6108
  Text,
5920
6109
  {
6110
+ className: "text-text-secondary",
5921
6111
  style: {
5922
6112
  fontSize: 12,
5923
- fontFamily: "Inter, sans-serif",
5924
- color: "var(--color-text-secondary)"
6113
+ fontFamily: "Inter, sans-serif"
5925
6114
  },
5926
6115
  children: previous ? `${previous.reps} x ${roundWeight(previous.weight)}` : "\u2014"
5927
6116
  }
@@ -5936,11 +6125,11 @@ function SetRow({
5936
6125
  children: isActive && reps == null && targets ? /* @__PURE__ */ jsx(
5937
6126
  Text,
5938
6127
  {
6128
+ className: "text-text-tertiary",
5939
6129
  style: {
5940
6130
  fontSize: 13,
5941
6131
  fontStyle: "italic",
5942
- fontFamily: "Inter, sans-serif",
5943
- color: "var(--color-text-tertiary)"
6132
+ fontFamily: "Inter, sans-serif"
5944
6133
  },
5945
6134
  testID: "set-row-target-reps",
5946
6135
  children: targets.reps
@@ -5948,11 +6137,11 @@ function SetRow({
5948
6137
  ) : /* @__PURE__ */ jsx(
5949
6138
  Text,
5950
6139
  {
6140
+ className: reps != null ? "text-text-primary" : "text-text-tertiary",
5951
6141
  style: {
5952
6142
  fontSize: 14,
5953
6143
  fontWeight: "600",
5954
- fontFamily: "Inter, sans-serif",
5955
- color: reps != null ? "var(--color-text-primary)" : "var(--color-text-tertiary)"
6144
+ fontFamily: "Inter, sans-serif"
5956
6145
  },
5957
6146
  children: reps != null ? reps : "\u2014"
5958
6147
  }
@@ -5967,11 +6156,11 @@ function SetRow({
5967
6156
  children: isActive && weight == null && targets ? /* @__PURE__ */ jsx(
5968
6157
  Text,
5969
6158
  {
6159
+ className: "text-text-tertiary",
5970
6160
  style: {
5971
6161
  fontSize: 13,
5972
6162
  fontStyle: "italic",
5973
- fontFamily: "Inter, sans-serif",
5974
- color: "var(--color-text-tertiary)"
6163
+ fontFamily: "Inter, sans-serif"
5975
6164
  },
5976
6165
  testID: "set-row-target-weight",
5977
6166
  children: roundWeight(targets.weight)
@@ -5979,11 +6168,11 @@ function SetRow({
5979
6168
  ) : /* @__PURE__ */ jsx(
5980
6169
  Text,
5981
6170
  {
6171
+ className: weight != null ? "text-text-primary" : "text-text-tertiary",
5982
6172
  style: {
5983
6173
  fontSize: 14,
5984
6174
  fontWeight: "600",
5985
- fontFamily: "Inter, sans-serif",
5986
- color: weight != null ? "var(--color-text-primary)" : "var(--color-text-tertiary)"
6175
+ fontFamily: "Inter, sans-serif"
5987
6176
  },
5988
6177
  children: weight != null ? roundWeight(weight) : "\u2014"
5989
6178
  }
@@ -5998,11 +6187,14 @@ function SetRow({
5998
6187
  children: /* @__PURE__ */ jsx(
5999
6188
  Text,
6000
6189
  {
6190
+ className: rpe != null ? void 0 : "text-text-tertiary",
6001
6191
  style: {
6002
6192
  fontSize: 13,
6003
6193
  fontWeight: "600",
6004
6194
  fontFamily: "Inter, sans-serif",
6005
- color: rpe != null ? rpeColor(rpe) : "var(--color-text-tertiary)"
6195
+ // rpeColor returns a concrete hex (native-safe); only the tertiary
6196
+ // fallback needs the className token.
6197
+ color: rpe != null ? rpeColor(rpe) : void 0
6006
6198
  },
6007
6199
  children: rpe != null ? roundRpe(rpe) : "\u2014"
6008
6200
  }
@@ -6048,18 +6240,14 @@ function SetRow({
6048
6240
  );
6049
6241
  }
6050
6242
  var BRAND_PRIMARY = "#FF7900";
6051
- var TEXT_PRIMARY = "var(--color-text-primary)";
6052
- var TEXT_TERTIARY2 = "var(--color-text-tertiary)";
6243
+ var INPUT_CLASSNAME = "bg-surface-raised border-border-strong text-text-primary";
6053
6244
  var inputStyle = {
6054
6245
  fontSize: 14,
6055
6246
  fontWeight: "600",
6056
6247
  fontFamily: "Inter, sans-serif",
6057
- backgroundColor: "var(--color-surface-raised)",
6058
6248
  borderWidth: 1,
6059
- borderColor: "var(--color-border-strong)",
6060
6249
  borderRadius: 6,
6061
6250
  textAlign: "center",
6062
- color: TEXT_PRIMARY,
6063
6251
  paddingVertical: 5,
6064
6252
  paddingHorizontal: 2
6065
6253
  };
@@ -6081,11 +6269,11 @@ function InputBar({
6081
6269
  return /* @__PURE__ */ jsxs(
6082
6270
  View,
6083
6271
  {
6272
+ className: "bg-surface-elevated",
6084
6273
  style: {
6085
6274
  width: "100%",
6086
- backgroundColor: "var(--color-surface-elevated)",
6087
6275
  borderTopWidth: 1,
6088
- borderTopColor: "var(--color-border-default)",
6276
+ borderTopColor: resolveColor("border-default"),
6089
6277
  paddingTop: 10,
6090
6278
  paddingHorizontal: 16,
6091
6279
  paddingBottom: 12,
@@ -6100,11 +6288,11 @@ function InputBar({
6100
6288
  /* @__PURE__ */ jsx(
6101
6289
  Text,
6102
6290
  {
6291
+ className: "text-text-primary",
6103
6292
  style: {
6104
6293
  fontSize: 12,
6105
6294
  fontWeight: "700",
6106
- fontFamily: '"Space Grotesk", sans-serif',
6107
- color: TEXT_PRIMARY
6295
+ fontFamily: '"Space Grotesk", sans-serif'
6108
6296
  },
6109
6297
  testID: "input-bar-exercise-name",
6110
6298
  numberOfLines: 1,
@@ -6114,10 +6302,10 @@ function InputBar({
6114
6302
  /* @__PURE__ */ jsx(
6115
6303
  Text,
6116
6304
  {
6305
+ className: "text-text-tertiary",
6117
6306
  style: {
6118
6307
  fontSize: 10,
6119
- fontFamily: "Inter, sans-serif",
6120
- color: TEXT_TERTIARY2
6308
+ fontFamily: "Inter, sans-serif"
6121
6309
  },
6122
6310
  testID: "input-bar-set-info",
6123
6311
  children: setLabel
@@ -6130,6 +6318,7 @@ function InputBar({
6130
6318
  {
6131
6319
  value: reps,
6132
6320
  onChangeText: onRepsChange,
6321
+ className: INPUT_CLASSNAME,
6133
6322
  style: { ...inputStyle, width: 36 },
6134
6323
  accessibilityLabel: "Reps",
6135
6324
  testID: "input-bar-reps",
@@ -6139,10 +6328,10 @@ function InputBar({
6139
6328
  /* @__PURE__ */ jsx(
6140
6329
  Text,
6141
6330
  {
6331
+ className: "text-text-tertiary",
6142
6332
  style: {
6143
6333
  fontSize: 12,
6144
- fontFamily: "Inter, sans-serif",
6145
- color: TEXT_TERTIARY2
6334
+ fontFamily: "Inter, sans-serif"
6146
6335
  },
6147
6336
  children: "\xD7"
6148
6337
  }
@@ -6152,6 +6341,7 @@ function InputBar({
6152
6341
  {
6153
6342
  value: weight,
6154
6343
  onChangeText: onWeightChange,
6344
+ className: INPUT_CLASSNAME,
6155
6345
  style: { ...inputStyle, width: 52 },
6156
6346
  accessibilityLabel: `Weight in ${unit}`,
6157
6347
  testID: "input-bar-weight",
@@ -6161,11 +6351,11 @@ function InputBar({
6161
6351
  /* @__PURE__ */ jsx(
6162
6352
  Text,
6163
6353
  {
6354
+ className: "text-text-tertiary",
6164
6355
  style: {
6165
6356
  fontSize: 12,
6166
6357
  fontWeight: "500",
6167
- fontFamily: "Inter, sans-serif",
6168
- color: TEXT_TERTIARY2
6358
+ fontFamily: "Inter, sans-serif"
6169
6359
  },
6170
6360
  testID: "input-bar-unit",
6171
6361
  children: unit
@@ -6225,11 +6415,11 @@ function RestTimer({
6225
6415
  return /* @__PURE__ */ jsxs(
6226
6416
  View,
6227
6417
  {
6418
+ className: "bg-surface-raised",
6228
6419
  style: {
6229
6420
  width: "100%",
6230
- backgroundColor: "var(--color-surface-raised)",
6231
6421
  borderTopWidth: 1,
6232
- borderTopColor: "var(--color-border-default)",
6422
+ borderTopColor: resolveColor("border-default"),
6233
6423
  paddingVertical: 12,
6234
6424
  paddingHorizontal: 16
6235
6425
  },
@@ -6251,13 +6441,13 @@ function RestTimer({
6251
6441
  /* @__PURE__ */ jsx(
6252
6442
  Text,
6253
6443
  {
6444
+ className: "text-text-secondary",
6254
6445
  style: {
6255
6446
  fontSize: 11,
6256
6447
  fontFamily: "Inter, sans-serif",
6257
6448
  fontWeight: "600",
6258
6449
  textTransform: "uppercase",
6259
- letterSpacing: 1,
6260
- color: "var(--color-text-secondary)"
6450
+ letterSpacing: 1
6261
6451
  },
6262
6452
  testID: "rest-timer-label",
6263
6453
  children: "REST"
@@ -6266,10 +6456,10 @@ function RestTimer({
6266
6456
  nextSetInfo != null && /* @__PURE__ */ jsx(
6267
6457
  Text,
6268
6458
  {
6459
+ className: "text-text-tertiary",
6269
6460
  style: {
6270
6461
  fontSize: 11,
6271
6462
  fontFamily: "Inter, sans-serif",
6272
- color: "var(--color-text-tertiary)",
6273
6463
  marginTop: 2
6274
6464
  },
6275
6465
  testID: "rest-timer-next-set",
@@ -6280,11 +6470,11 @@ function RestTimer({
6280
6470
  /* @__PURE__ */ jsx(
6281
6471
  Text,
6282
6472
  {
6473
+ className: "text-text-primary",
6283
6474
  style: {
6284
6475
  fontSize: 28,
6285
6476
  fontFamily: '"Space Grotesk", sans-serif',
6286
6477
  fontWeight: "700",
6287
- color: "var(--color-text-primary)",
6288
6478
  fontVariant: ["tabular-nums"],
6289
6479
  letterSpacing: -0.5
6290
6480
  },
@@ -6298,9 +6488,9 @@ function RestTimer({
6298
6488
  /* @__PURE__ */ jsx(
6299
6489
  View,
6300
6490
  {
6491
+ className: "bg-border",
6301
6492
  style: {
6302
6493
  height: 3,
6303
- backgroundColor: "var(--color-border-default)",
6304
6494
  borderRadius: 2,
6305
6495
  marginBottom: 12
6306
6496
  },
@@ -6336,11 +6526,11 @@ function RestTimer({
6336
6526
  children: /* @__PURE__ */ jsx(
6337
6527
  Text,
6338
6528
  {
6529
+ className: "text-text-secondary",
6339
6530
  style: {
6340
6531
  fontSize: 11,
6341
6532
  fontFamily: "Inter, sans-serif",
6342
- fontWeight: "600",
6343
- color: "var(--color-text-secondary)"
6533
+ fontWeight: "600"
6344
6534
  },
6345
6535
  children: "+30s"
6346
6536
  }
@@ -6379,19 +6569,6 @@ function RestTimer({
6379
6569
  }
6380
6570
  );
6381
6571
  }
6382
- var COLORS = {
6383
- // Theme-aware tokens: text foregrounds and this card's own surfaces/borders
6384
- // must flip together so text stays readable in both light and dark. The
6385
- // expanded/pressed surfaces are self-owned here (not from a themed Card), so
6386
- // hardcoding dark values would leave dark-on-dark once the text flips.
6387
- // react-native-web passes the CSS var through to the inline style.
6388
- textPrimary: "var(--color-text-primary)",
6389
- textSecondary: "var(--color-text-secondary)",
6390
- textTertiary: "var(--color-text-tertiary)",
6391
- surfaceRaised: "var(--color-surface-raised)",
6392
- surfaceElevated: "var(--color-surface-elevated)",
6393
- borderDefault: "var(--color-border-default)"
6394
- };
6395
6572
  function buildColumnHeaders(unit) {
6396
6573
  return ["SET", "PREV", "REPS", unit.toUpperCase(), "RPE"];
6397
6574
  }
@@ -6469,11 +6646,11 @@ function CollapsedCard({
6469
6646
  children: /* @__PURE__ */ jsxs(
6470
6647
  View,
6471
6648
  {
6649
+ className: pressed ? "bg-surface-raised" : void 0,
6472
6650
  style: {
6473
6651
  padding: 12,
6474
6652
  paddingHorizontal: 14,
6475
6653
  cursor: "pointer",
6476
- backgroundColor: pressed ? COLORS.surfaceRaised : "transparent",
6477
6654
  ...borderRadius,
6478
6655
  ...supersetMargin
6479
6656
  },
@@ -6487,11 +6664,11 @@ function CollapsedCard({
6487
6664
  /* @__PURE__ */ jsx(
6488
6665
  Text,
6489
6666
  {
6667
+ className: "text-text-primary",
6490
6668
  style: {
6491
6669
  fontSize: 14,
6492
6670
  fontFamily: '"Space Grotesk", sans-serif',
6493
- fontWeight: "700",
6494
- color: COLORS.textPrimary
6671
+ fontWeight: "700"
6495
6672
  },
6496
6673
  testID: "exercise-card-name",
6497
6674
  children: name
@@ -6501,10 +6678,10 @@ function CollapsedCard({
6501
6678
  summary && /* @__PURE__ */ jsx(
6502
6679
  Text,
6503
6680
  {
6681
+ className: "text-text-secondary",
6504
6682
  style: {
6505
6683
  fontSize: 12,
6506
6684
  fontFamily: "Inter, sans-serif",
6507
- color: COLORS.textSecondary,
6508
6685
  marginRight: 8
6509
6686
  },
6510
6687
  testID: "exercise-card-summary",
@@ -6574,10 +6751,9 @@ function ExpandedCard({
6574
6751
  return /* @__PURE__ */ jsxs(
6575
6752
  View,
6576
6753
  {
6754
+ className: "bg-surface-elevated border-border",
6577
6755
  style: {
6578
- backgroundColor: COLORS.surfaceElevated,
6579
6756
  borderWidth: 1,
6580
- borderColor: COLORS.borderDefault,
6581
6757
  ...borderRadius,
6582
6758
  ...supersetMargin
6583
6759
  },
@@ -6600,17 +6776,17 @@ function ExpandedCard({
6600
6776
  paddingHorizontal: 14,
6601
6777
  paddingBottom: 10,
6602
6778
  borderBottomWidth: 1,
6603
- borderBottomColor: COLORS.borderDefault
6779
+ borderBottomColor: resolveColor("border-default")
6604
6780
  },
6605
6781
  children: [
6606
6782
  /* @__PURE__ */ jsx(
6607
6783
  Text,
6608
6784
  {
6785
+ className: "text-text-primary",
6609
6786
  style: {
6610
6787
  fontSize: 14,
6611
6788
  fontFamily: '"Space Grotesk", sans-serif',
6612
- fontWeight: "700",
6613
- color: COLORS.textPrimary
6789
+ fontWeight: "700"
6614
6790
  },
6615
6791
  testID: "exercise-card-name",
6616
6792
  children: name
@@ -6620,10 +6796,10 @@ function ExpandedCard({
6620
6796
  summary && /* @__PURE__ */ jsx(
6621
6797
  Text,
6622
6798
  {
6799
+ className: "text-text-secondary",
6623
6800
  style: {
6624
6801
  fontSize: 12,
6625
6802
  fontFamily: "Inter, sans-serif",
6626
- color: COLORS.textSecondary,
6627
6803
  marginRight: 8
6628
6804
  },
6629
6805
  testID: "exercise-card-summary",
@@ -6674,13 +6850,13 @@ function ExpandedCard({
6674
6850
  children: /* @__PURE__ */ jsx(
6675
6851
  Text,
6676
6852
  {
6853
+ className: "text-text-tertiary",
6677
6854
  style: {
6678
6855
  fontSize: 10,
6679
6856
  fontWeight: "600",
6680
6857
  fontFamily: "Inter, sans-serif",
6681
6858
  textTransform: "uppercase",
6682
- letterSpacing: 0.8,
6683
- color: COLORS.textTertiary
6859
+ letterSpacing: 0.8
6684
6860
  },
6685
6861
  children: header
6686
6862
  }
@@ -6720,11 +6896,11 @@ function UpcomingCard({
6720
6896
  /* @__PURE__ */ jsx(
6721
6897
  Text,
6722
6898
  {
6899
+ className: "text-text-primary",
6723
6900
  style: {
6724
6901
  fontSize: 14,
6725
6902
  fontFamily: '"Space Grotesk", sans-serif',
6726
- fontWeight: "700",
6727
- color: COLORS.textPrimary
6903
+ fontWeight: "700"
6728
6904
  },
6729
6905
  testID: "exercise-card-name",
6730
6906
  children: name
@@ -6733,10 +6909,10 @@ function UpcomingCard({
6733
6909
  prescription && /* @__PURE__ */ jsx(
6734
6910
  Text,
6735
6911
  {
6912
+ className: "text-text-secondary",
6736
6913
  style: {
6737
6914
  fontSize: 12,
6738
6915
  fontFamily: "Inter, sans-serif",
6739
- color: COLORS.textSecondary,
6740
6916
  marginLeft: 8
6741
6917
  },
6742
6918
  testID: "exercise-card-prescription",
@@ -6747,10 +6923,10 @@ function UpcomingCard({
6747
6923
  previousBest && /* @__PURE__ */ jsx(
6748
6924
  Text,
6749
6925
  {
6926
+ className: "text-text-tertiary",
6750
6927
  style: {
6751
6928
  fontSize: 11,
6752
- fontFamily: "Inter, sans-serif",
6753
- color: COLORS.textTertiary
6929
+ fontFamily: "Inter, sans-serif"
6754
6930
  },
6755
6931
  testID: "exercise-card-previous-best",
6756
6932
  children: previousBest
@@ -6988,11 +7164,12 @@ function WeekRow({
6988
7164
  /* @__PURE__ */ jsx(
6989
7165
  Text,
6990
7166
  {
7167
+ className: isCurrent ? void 0 : "text-text-primary",
6991
7168
  style: {
6992
7169
  fontSize: 13,
6993
7170
  fontWeight: "700",
6994
7171
  fontFamily: "Inter, sans-serif",
6995
- color: isCurrent ? BRAND_PRIMARY4 : "var(--color-text-primary)"
7172
+ color: isCurrent ? BRAND_PRIMARY4 : void 0
6996
7173
  },
6997
7174
  accessibilityElementsHidden: true,
6998
7175
  children: `W${weekNumber}`
@@ -7031,21 +7208,16 @@ function WeekRow({
7031
7208
  }
7032
7209
  );
7033
7210
  }
7034
- var COLORS2 = {
7035
- // Theme-aware foregrounds: resolve to a readable color in both light and dark
7036
- // (react-native-web passes the CSS var through to the inline style).
7037
- textPrimary: "var(--color-text-primary)",
7038
- textSecondary: "var(--color-text-secondary)",
7039
- textTertiary: "var(--color-text-tertiary)",
7211
+ var COLORS = {
7040
7212
  statusSuccess: "#14B8A6",
7041
7213
  brandPrimary: "#FF7900",
7042
7214
  borderDefault: "#1F1F1F",
7043
7215
  brandPrimarySubtle: "rgba(255,121,0,0.06)"
7044
7216
  };
7045
7217
  var statusBorderColors = {
7046
- completed: COLORS2.statusSuccess,
7047
- today: COLORS2.brandPrimary,
7048
- upcoming: COLORS2.borderDefault
7218
+ completed: COLORS.statusSuccess,
7219
+ today: COLORS.brandPrimary,
7220
+ upcoming: COLORS.borderDefault
7049
7221
  };
7050
7222
  var volumeStatusMap = {
7051
7223
  under: "behind",
@@ -7082,11 +7254,11 @@ function WorkoutCard({
7082
7254
  /* @__PURE__ */ jsx(
7083
7255
  Text,
7084
7256
  {
7257
+ className: "text-text-primary",
7085
7258
  style: {
7086
7259
  fontSize: 15,
7087
7260
  fontFamily: '"Space Grotesk", sans-serif',
7088
- fontWeight: "700",
7089
- color: COLORS2.textPrimary
7261
+ fontWeight: "700"
7090
7262
  },
7091
7263
  testID: "workout-card-name",
7092
7264
  children: name
@@ -7096,10 +7268,10 @@ function WorkoutCard({
7096
7268
  /* @__PURE__ */ jsx(
7097
7269
  Text,
7098
7270
  {
7271
+ className: "text-text-tertiary",
7099
7272
  style: {
7100
7273
  fontSize: 11,
7101
- fontFamily: "Inter, sans-serif",
7102
- color: COLORS2.textTertiary
7274
+ fontFamily: "Inter, sans-serif"
7103
7275
  },
7104
7276
  testID: "workout-card-date",
7105
7277
  children: date
@@ -7109,11 +7281,11 @@ function WorkoutCard({
7109
7281
  /* @__PURE__ */ jsx(
7110
7282
  Text,
7111
7283
  {
7284
+ className: "text-text-secondary",
7112
7285
  style: {
7113
7286
  marginTop: 4,
7114
7287
  fontSize: 12,
7115
- fontFamily: "Inter, sans-serif",
7116
- color: COLORS2.textSecondary
7288
+ fontFamily: "Inter, sans-serif"
7117
7289
  },
7118
7290
  testID: "workout-card-stats",
7119
7291
  children: formatStats(totalSets, totalVolume, unit, duration)
@@ -7144,7 +7316,7 @@ function WorkoutCard({
7144
7316
  variant: "accent",
7145
7317
  elevation: 1,
7146
7318
  accentColor: statusBorderColors[status],
7147
- bgColor: isToday ? COLORS2.brandPrimarySubtle : void 0,
7319
+ bgColor: isToday ? COLORS.brandPrimarySubtle : void 0,
7148
7320
  className,
7149
7321
  style: isUpcoming ? { opacity: 0.6 } : void 0,
7150
7322
  testID: "workout-card",
@@ -7184,8 +7356,6 @@ var BRAND_PRIMARY5 = "#FF7900";
7184
7356
  var BRAND_PRIMARY_DARK = "#C45E00";
7185
7357
  var BRAND_PRIMARY_LIGHT = "#FFB066";
7186
7358
  var BORDER_DEFAULT = "#1F1F1F";
7187
- var TEXT_PRIMARY2 = "var(--color-text-primary)";
7188
- var TEXT_SECONDARY = "var(--color-text-secondary)";
7189
7359
  var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY5, BRAND_PRIMARY_LIGHT];
7190
7360
  function heatmapColor(percentage) {
7191
7361
  const clamped = Math.max(0, Math.min(100, percentage));
@@ -7228,11 +7398,11 @@ function MesoCard({
7228
7398
  /* @__PURE__ */ jsx(
7229
7399
  Text,
7230
7400
  {
7401
+ className: "text-text-primary",
7231
7402
  style: {
7232
7403
  fontSize: 15,
7233
7404
  fontFamily: '"Space Grotesk", sans-serif',
7234
- fontWeight: "700",
7235
- color: TEXT_PRIMARY2
7405
+ fontWeight: "700"
7236
7406
  },
7237
7407
  testID: "meso-card-name",
7238
7408
  children: name
@@ -7243,11 +7413,11 @@ function MesoCard({
7243
7413
  /* @__PURE__ */ jsx(
7244
7414
  Text,
7245
7415
  {
7416
+ className: "text-text-secondary",
7246
7417
  style: {
7247
7418
  marginTop: 4,
7248
7419
  fontSize: 12,
7249
- fontFamily: "Inter, sans-serif",
7250
- color: TEXT_SECONDARY
7420
+ fontFamily: "Inter, sans-serif"
7251
7421
  },
7252
7422
  testID: "meso-card-subheader",
7253
7423
  children: `${split} \xB7 ${weekRange}`
@@ -7341,11 +7511,7 @@ function MesoCard({
7341
7511
  var BRAND_PRIMARY6 = "#FF7900";
7342
7512
  var RECENT_BORDER = "rgba(255,176,32,0.3)";
7343
7513
  var RECENT_GLOW = "0 0 12px rgba(255,176,32,0.06)";
7344
- var SURFACE_RAISED = "var(--color-surface-raised)";
7345
- var BORDER_DEFAULT2 = "var(--color-border-default)";
7346
- var TEXT_PRIMARY3 = "var(--color-text-primary)";
7347
- var TEXT_SECONDARY2 = "var(--color-text-secondary)";
7348
- var TEXT_TERTIARY3 = "var(--color-text-tertiary)";
7514
+ var BORDER_DEFAULT2 = resolveColor("border-default");
7349
7515
  var TYPE_LABELS = {
7350
7516
  e1rm: "e1RM",
7351
7517
  weight: "Weight",
@@ -7371,14 +7537,13 @@ function PrRecordRow({ record, index }) {
7371
7537
  {
7372
7538
  accessibilityRole: "text",
7373
7539
  accessibilityLabel: a11yLabel,
7374
- className: "flex-row items-center",
7540
+ className: "flex-row items-center bg-surface-raised",
7375
7541
  style: {
7376
7542
  gap: 10,
7377
7543
  paddingVertical: 10,
7378
7544
  paddingHorizontal: 12,
7379
7545
  marginBottom: 8,
7380
7546
  borderRadius: 8,
7381
- backgroundColor: SURFACE_RAISED,
7382
7547
  borderWidth: 1,
7383
7548
  borderColor: record.isRecent ? RECENT_BORDER : BORDER_DEFAULT2,
7384
7549
  ...record.isRecent ? { boxShadow: RECENT_GLOW } : {}
@@ -7389,12 +7554,12 @@ function PrRecordRow({ record, index }) {
7389
7554
  /* @__PURE__ */ jsx(
7390
7555
  Text,
7391
7556
  {
7557
+ className: "text-text-secondary",
7392
7558
  style: {
7393
7559
  flex: 1,
7394
7560
  fontSize: 13,
7395
7561
  fontFamily: "Inter, sans-serif",
7396
- fontWeight: "600",
7397
- color: TEXT_SECONDARY2
7562
+ fontWeight: "600"
7398
7563
  },
7399
7564
  testID: `pr-history-modal-record-${index}-type`,
7400
7565
  children: label
@@ -7403,11 +7568,11 @@ function PrRecordRow({ record, index }) {
7403
7568
  /* @__PURE__ */ jsx(
7404
7569
  Text,
7405
7570
  {
7571
+ className: "text-text-primary",
7406
7572
  style: {
7407
7573
  fontSize: 14,
7408
7574
  fontFamily: '"Space Grotesk", sans-serif',
7409
- fontWeight: "700",
7410
- color: TEXT_PRIMARY3
7575
+ fontWeight: "700"
7411
7576
  },
7412
7577
  testID: `pr-history-modal-record-${index}-value`,
7413
7578
  children: valueText
@@ -7416,12 +7581,12 @@ function PrRecordRow({ record, index }) {
7416
7581
  /* @__PURE__ */ jsx(
7417
7582
  Text,
7418
7583
  {
7584
+ className: "text-text-tertiary",
7419
7585
  style: {
7420
7586
  minWidth: 64,
7421
7587
  textAlign: "right",
7422
7588
  fontSize: 11,
7423
- fontFamily: "Inter, sans-serif",
7424
- color: TEXT_TERTIARY3
7589
+ fontFamily: "Inter, sans-serif"
7425
7590
  },
7426
7591
  testID: `pr-history-modal-record-${index}-date`,
7427
7592
  children: record.date
@@ -7459,13 +7624,13 @@ function PrHistoryModal({
7459
7624
  View,
7460
7625
  {
7461
7626
  accessibilityElementsHidden: true,
7627
+ className: "bg-border",
7462
7628
  style: {
7463
7629
  alignSelf: "center",
7464
7630
  width: 40,
7465
7631
  height: 4,
7466
7632
  borderRadius: 2,
7467
- marginTop: 8,
7468
- backgroundColor: BORDER_DEFAULT2
7633
+ marginTop: 8
7469
7634
  },
7470
7635
  testID: "pr-history-modal-handle"
7471
7636
  }
@@ -7481,11 +7646,11 @@ function PrHistoryModal({
7481
7646
  Text,
7482
7647
  {
7483
7648
  accessibilityRole: "header",
7649
+ className: "text-text-primary",
7484
7650
  style: {
7485
7651
  fontSize: 16,
7486
7652
  fontFamily: '"Space Grotesk", sans-serif',
7487
- fontWeight: "700",
7488
- color: TEXT_PRIMARY3
7653
+ fontWeight: "700"
7489
7654
  },
7490
7655
  testID: "pr-history-modal-title",
7491
7656
  children: dialogLabel
@@ -7500,7 +7665,7 @@ function PrHistoryModal({
7500
7665
  hitSlop: 8,
7501
7666
  style: { padding: 4, margin: -4 },
7502
7667
  testID: "pr-history-modal-close",
7503
- children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 22, lineHeight: 22, color: TEXT_SECONDARY2 }, children: "\xD7" })
7668
+ children: /* @__PURE__ */ jsx(Text, { className: "text-text-secondary", style: { fontSize: 22, lineHeight: 22 }, children: "\xD7" })
7504
7669
  }
7505
7670
  )
7506
7671
  ]
@@ -7509,11 +7674,11 @@ function PrHistoryModal({
7509
7674
  /* @__PURE__ */ jsx(DrawerBody, { className: "px-4 pt-0 pb-4", children: records.length === 0 ? /* @__PURE__ */ jsx(View, { style: { paddingVertical: 24 }, testID: "pr-history-modal-empty", children: /* @__PURE__ */ jsx(
7510
7675
  Text,
7511
7676
  {
7677
+ className: "text-text-tertiary",
7512
7678
  style: {
7513
7679
  textAlign: "center",
7514
7680
  fontSize: 13,
7515
- fontFamily: "Inter, sans-serif",
7516
- color: TEXT_TERTIARY3
7681
+ fontFamily: "Inter, sans-serif"
7517
7682
  },
7518
7683
  children: "No personal records yet"
7519
7684
  }
@@ -7534,8 +7699,6 @@ var BRAND_PRIMARY_SUBTLE = "rgba(255,121,0,0.12)";
7534
7699
  var STATUS_SUCCESS = "#14B8A6";
7535
7700
  var STATUS_WARNING = "#FFB020";
7536
7701
  var STATUS_ERROR = "#D14343";
7537
- var TEXT_PRIMARY4 = "var(--color-text-primary)";
7538
- var TEXT_SECONDARY3 = "var(--color-text-secondary)";
7539
7702
  var EMOJI_SETS = {
7540
7703
  sleep: ["\u{1F634}", "\u{1F610}", "\u{1F642}", "\u{1F60A}", "\u{1F929}"],
7541
7704
  soreness: ["\u{1F635}", "\u{1F623}", "\u{1F610}", "\u{1F642}", "\u{1F4AA}"],
@@ -7567,7 +7730,8 @@ function EmojiSlider({ factor }) {
7567
7730
  /* @__PURE__ */ jsx(
7568
7731
  Text,
7569
7732
  {
7570
- style: { fontSize: 12, fontWeight: "500", fontFamily: "Inter, sans-serif", color: TEXT_SECONDARY3 },
7733
+ className: "text-text-secondary",
7734
+ style: { fontSize: 12, fontWeight: "500", fontFamily: "Inter, sans-serif" },
7571
7735
  testID: "readiness-check-factor-label",
7572
7736
  children: factor.label
7573
7737
  }
@@ -7591,14 +7755,15 @@ function EmojiSlider({ factor }) {
7591
7755
  accessibilityLabel: `${factor.label} level ${level} of 5`,
7592
7756
  "aria-checked": selected,
7593
7757
  testID: "readiness-check-emoji",
7758
+ className: selected ? void 0 : "border-border bg-surface-raised",
7594
7759
  style: ({ pressed }) => ({
7595
7760
  flex: 1,
7596
7761
  alignItems: "center",
7597
7762
  paddingVertical: 8,
7598
7763
  borderRadius: 8,
7599
7764
  borderWidth: 1,
7600
- borderColor: selected ? BRAND_PRIMARY7 : "var(--color-border-default)",
7601
- backgroundColor: selected ? BRAND_PRIMARY_SUBTLE : "var(--color-surface-raised)",
7765
+ borderColor: selected ? BRAND_PRIMARY7 : void 0,
7766
+ backgroundColor: selected ? BRAND_PRIMARY_SUBTLE : void 0,
7602
7767
  opacity: selected ? 1 : pressed ? 0.8 : 0.55,
7603
7768
  transform: [{ scale: selected ? 1.06 : 1 }]
7604
7769
  }),
@@ -7619,13 +7784,13 @@ function ScoreGauge({ score }) {
7619
7784
  accessibilityRole: "image",
7620
7785
  accessibilityLabel: `Readiness score: ${score} out of 100`,
7621
7786
  testID: "readiness-check-score",
7787
+ className: "bg-surface-raised",
7622
7788
  style: {
7623
7789
  width: 60,
7624
7790
  height: 60,
7625
7791
  borderRadius: 30,
7626
7792
  borderWidth: 4,
7627
7793
  borderColor: color,
7628
- backgroundColor: "var(--color-surface-raised)",
7629
7794
  alignItems: "center",
7630
7795
  justifyContent: "center"
7631
7796
  },
@@ -7645,13 +7810,12 @@ function WarmUpCard({ validation }) {
7645
7810
  return /* @__PURE__ */ jsxs(
7646
7811
  View,
7647
7812
  {
7813
+ className: "border-border bg-surface-raised",
7648
7814
  style: {
7649
7815
  marginTop: 16,
7650
7816
  padding: 12,
7651
7817
  borderRadius: 8,
7652
- borderWidth: 1,
7653
- borderColor: "var(--color-border-default)",
7654
- backgroundColor: "var(--color-surface-raised)"
7818
+ borderWidth: 1
7655
7819
  },
7656
7820
  testID: "readiness-check-warmup",
7657
7821
  children: [
@@ -7659,7 +7823,8 @@ function WarmUpCard({ validation }) {
7659
7823
  /* @__PURE__ */ jsx(
7660
7824
  Text,
7661
7825
  {
7662
- style: { fontSize: 12, fontWeight: "600", fontFamily: "Inter, sans-serif", color: TEXT_SECONDARY3 },
7826
+ className: "text-text-secondary",
7827
+ style: { fontSize: 12, fontWeight: "600", fontFamily: "Inter, sans-serif" },
7663
7828
  testID: "readiness-check-warmup-deficit",
7664
7829
  children: velocityDeficitText(validation.velocityDeficit)
7665
7830
  }
@@ -7669,7 +7834,8 @@ function WarmUpCard({ validation }) {
7669
7834
  /* @__PURE__ */ jsx(
7670
7835
  Text,
7671
7836
  {
7672
- style: { marginTop: 6, fontSize: 13, fontFamily: "Inter, sans-serif", color: TEXT_PRIMARY4 },
7837
+ className: "text-text-primary",
7838
+ style: { marginTop: 6, fontSize: 13, fontFamily: "Inter, sans-serif" },
7673
7839
  testID: "readiness-check-warmup-recommendation",
7674
7840
  children: validation.recommendation
7675
7841
  }
@@ -7691,7 +7857,8 @@ function ReadinessCheck({
7691
7857
  /* @__PURE__ */ jsx(
7692
7858
  Text,
7693
7859
  {
7694
- style: { fontSize: 18, fontWeight: "700", fontFamily: '"Space Grotesk", sans-serif', color: TEXT_PRIMARY4 },
7860
+ className: "text-text-primary",
7861
+ style: { fontSize: 18, fontWeight: "700", fontFamily: '"Space Grotesk", sans-serif' },
7695
7862
  testID: "readiness-check-title",
7696
7863
  children: "How are you feeling?"
7697
7864
  }
@@ -7722,15 +7889,11 @@ function ReadinessCheck({
7722
7889
  ] }) });
7723
7890
  }
7724
7891
  var BRAND_PRIMARY8 = "#FF7900";
7725
- var TEXT_PRIMARY5 = "var(--color-text-primary)";
7726
- var TEXT_SECONDARY4 = "var(--color-text-secondary)";
7727
- var TEXT_TERTIARY4 = "var(--color-text-tertiary)";
7728
- var BORDER_STRONG = "var(--color-border-strong)";
7892
+ var PROJECTION_LINE_COLOR = resolveColor("text-tertiary");
7729
7893
  var STATUS_SUCCESS2 = "#14B8A6";
7730
7894
  var STATUS_ERROR2 = "#D14343";
7731
7895
  var STATUS_WARNING2 = "#FFB020";
7732
7896
  var GRID_LINE = "rgba(255,255,255,0.06)";
7733
- var TOOLTIP_BG = "var(--color-surface-elevated)";
7734
7897
  var SUCCESS_PILL_BG = "rgba(20,184,166,0.10)";
7735
7898
  var SUCCESS_PILL_BORDER = "rgba(20,184,166,0.20)";
7736
7899
  var ERROR_PILL_BG = "rgba(209,67,67,0.10)";
@@ -7738,8 +7901,8 @@ var ERROR_PILL_BORDER = "rgba(209,67,67,0.20)";
7738
7901
  var PLOT_LEFT = 26;
7739
7902
  var TOOLTIP_WIDTH = 124;
7740
7903
  function timeOf(dateStr) {
7741
- const t = Date.parse(dateStr);
7742
- return Number.isNaN(t) ? 0 : t;
7904
+ const t2 = Date.parse(dateStr);
7905
+ return Number.isNaN(t2) ? 0 : t2;
7743
7906
  }
7744
7907
  function formatValue(value) {
7745
7908
  return `${Math.round(value)}`;
@@ -7911,7 +8074,7 @@ function StrengthTrendChart({
7911
8074
  alignItems: "center",
7912
8075
  justifyContent: "center"
7913
8076
  },
7914
- children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 12, fontFamily: "Inter, sans-serif", color: TEXT_TERTIARY4 }, children: "No strength data yet" })
8077
+ children: /* @__PURE__ */ jsx(Text, { className: "text-text-tertiary", style: { fontSize: 12, fontFamily: "Inter, sans-serif" }, children: "No strength data yet" })
7915
8078
  }
7916
8079
  )
7917
8080
  }
@@ -7955,6 +8118,7 @@ function StrengthTrendChart({
7955
8118
  children: /* @__PURE__ */ jsx(
7956
8119
  Text,
7957
8120
  {
8121
+ className: "text-text-tertiary",
7958
8122
  style: {
7959
8123
  position: "absolute",
7960
8124
  left: -PLOT_LEFT,
@@ -7962,8 +8126,7 @@ function StrengthTrendChart({
7962
8126
  width: PLOT_LEFT - 4,
7963
8127
  textAlign: "right",
7964
8128
  fontSize: 9,
7965
- fontFamily: "Inter, sans-serif",
7966
- color: TEXT_TERTIARY4
8129
+ fontFamily: "Inter, sans-serif"
7967
8130
  },
7968
8131
  children: line.label
7969
8132
  }
@@ -8006,7 +8169,7 @@ function StrengthTrendChart({
8006
8169
  ChartLine,
8007
8170
  {
8008
8171
  coords: geometry.projection,
8009
- color: TEXT_TERTIARY4,
8172
+ color: PROJECTION_LINE_COLOR,
8010
8173
  strokeWidth: 2,
8011
8174
  dashed: true,
8012
8175
  testID: "strength-trend-chart-projection-segment"
@@ -8082,6 +8245,7 @@ function StrengthTrendChart({
8082
8245
  {
8083
8246
  testID: "strength-trend-chart-tooltip",
8084
8247
  accessibilityElementsHidden: true,
8248
+ className: "bg-surface-elevated border-border-strong",
8085
8249
  style: {
8086
8250
  position: "absolute",
8087
8251
  left: Math.max(
@@ -8090,9 +8254,7 @@ function StrengthTrendChart({
8090
8254
  ),
8091
8255
  top: Math.max(0, selectedCoord.y - 52),
8092
8256
  maxWidth: TOOLTIP_WIDTH,
8093
- backgroundColor: TOOLTIP_BG,
8094
8257
  borderWidth: 1,
8095
- borderColor: BORDER_STRONG,
8096
8258
  borderRadius: 8,
8097
8259
  paddingVertical: 8,
8098
8260
  paddingHorizontal: 10
@@ -8101,10 +8263,10 @@ function StrengthTrendChart({
8101
8263
  /* @__PURE__ */ jsx(
8102
8264
  Text,
8103
8265
  {
8266
+ className: "text-text-tertiary",
8104
8267
  style: {
8105
8268
  fontSize: 10,
8106
- fontFamily: "Inter, sans-serif",
8107
- color: TEXT_TERTIARY4
8269
+ fontFamily: "Inter, sans-serif"
8108
8270
  },
8109
8271
  children: selectedCoord.point.sessionLabel ?? selectedCoord.point.date
8110
8272
  }
@@ -8112,12 +8274,12 @@ function StrengthTrendChart({
8112
8274
  /* @__PURE__ */ jsx(
8113
8275
  Text,
8114
8276
  {
8277
+ className: "text-text-primary",
8115
8278
  style: {
8116
8279
  marginTop: 2,
8117
8280
  fontSize: 13,
8118
8281
  fontFamily: "Inter, sans-serif",
8119
- fontWeight: "700",
8120
- color: TEXT_PRIMARY5
8282
+ fontWeight: "700"
8121
8283
  },
8122
8284
  children: `${formatValue(selectedCoord.point.e1rm)} ${unit}`
8123
8285
  }
@@ -8150,14 +8312,14 @@ function StrengthTrendChart({
8150
8312
  Text,
8151
8313
  {
8152
8314
  testID: "strength-trend-chart-axis-label",
8315
+ className: "text-text-tertiary",
8153
8316
  style: {
8154
8317
  position: "absolute",
8155
8318
  left: boundary.x - 24,
8156
8319
  width: 48,
8157
8320
  textAlign: "center",
8158
8321
  fontSize: 10,
8159
- fontFamily: "Inter, sans-serif",
8160
- color: TEXT_TERTIARY4
8322
+ fontFamily: "Inter, sans-serif"
8161
8323
  },
8162
8324
  children: boundary.label
8163
8325
  },
@@ -8201,7 +8363,7 @@ function StrengthTrendChart({
8201
8363
  children: [
8202
8364
  /* @__PURE__ */ jsxs(View, { className: "flex-row items-center", style: { gap: 5 }, children: [
8203
8365
  /* @__PURE__ */ jsx(View, { style: { width: 14, height: 2.5, borderRadius: 1.5, backgroundColor: BRAND_PRIMARY8 } }),
8204
- /* @__PURE__ */ jsx(Text, { style: { fontSize: 10, fontFamily: "Inter, sans-serif", color: TEXT_SECONDARY4 }, children: "Actual" })
8366
+ /* @__PURE__ */ jsx(Text, { className: "text-text-secondary", style: { fontSize: 10, fontFamily: "Inter, sans-serif" }, children: "Actual" })
8205
8367
  ] }),
8206
8368
  /* @__PURE__ */ jsxs(View, { className: "flex-row items-center", style: { gap: 5 }, children: [
8207
8369
  /* @__PURE__ */ jsx(
@@ -8212,15 +8374,15 @@ function StrengthTrendChart({
8212
8374
  height: 0,
8213
8375
  borderTopWidth: 2,
8214
8376
  borderStyle: "dashed",
8215
- borderTopColor: TEXT_TERTIARY4
8377
+ borderTopColor: PROJECTION_LINE_COLOR
8216
8378
  }
8217
8379
  }
8218
8380
  ),
8219
- /* @__PURE__ */ jsx(Text, { style: { fontSize: 10, fontFamily: "Inter, sans-serif", color: TEXT_SECONDARY4 }, children: "Projected" })
8381
+ /* @__PURE__ */ jsx(Text, { className: "text-text-secondary", style: { fontSize: 10, fontFamily: "Inter, sans-serif" }, children: "Projected" })
8220
8382
  ] }),
8221
8383
  /* @__PURE__ */ jsxs(View, { className: "flex-row items-center", style: { gap: 5 }, children: [
8222
8384
  /* @__PURE__ */ jsx(Text, { style: { fontSize: 12, color: STATUS_WARNING2 }, children: "\u2605" }),
8223
- /* @__PURE__ */ jsx(Text, { style: { fontSize: 10, fontFamily: "Inter, sans-serif", color: TEXT_SECONDARY4 }, children: "PR" })
8385
+ /* @__PURE__ */ jsx(Text, { className: "text-text-secondary", style: { fontSize: 10, fontFamily: "Inter, sans-serif" }, children: "PR" })
8224
8386
  ] })
8225
8387
  ]
8226
8388
  }
@@ -8233,7 +8395,6 @@ var STATUS_SUCCESS3 = "#14B8A6";
8233
8395
  var STATUS_WARNING3 = "#FFB020";
8234
8396
  var STATUS_INFO = "#2196F3";
8235
8397
  var DOT_BORDER = "#F3F4F6";
8236
- var TEXT_TERTIARY5 = "var(--color-text-tertiary)";
8237
8398
  var BAND_FILL = "rgba(20,184,166,0.1)";
8238
8399
  var BAND_EDGE = "rgba(20,184,166,0.45)";
8239
8400
  var PROJECTION_FILL = "rgba(20,184,166,0.05)";
@@ -8275,8 +8436,8 @@ function interpEdge(pixels, x, key) {
8275
8436
  const a = pixels[i];
8276
8437
  const b = pixels[i + 1];
8277
8438
  if (x >= a.x && x <= b.x) {
8278
- const t = b.x === a.x ? 0 : (x - a.x) / (b.x - a.x);
8279
- return a[key] + t * (b[key] - a[key]);
8439
+ const t2 = b.x === a.x ? 0 : (x - a.x) / (b.x - a.x);
8440
+ return a[key] + t2 * (b[key] - a[key]);
8280
8441
  }
8281
8442
  }
8282
8443
  return pixels[pixels.length - 1][key];
@@ -8514,6 +8675,7 @@ function CapacityBandChart({
8514
8675
  /* @__PURE__ */ jsx(
8515
8676
  Text,
8516
8677
  {
8678
+ className: "text-text-tertiary",
8517
8679
  style: {
8518
8680
  position: "absolute",
8519
8681
  left: PADDING_LEFT / 2 - 14,
@@ -8522,7 +8684,6 @@ function CapacityBandChart({
8522
8684
  textAlign: "center",
8523
8685
  fontSize: 9,
8524
8686
  fontFamily: "Inter, sans-serif",
8525
- color: TEXT_TERTIARY5,
8526
8687
  transform: [{ rotate: "-90deg" }]
8527
8688
  },
8528
8689
  accessibilityElementsHidden: true,
@@ -8536,6 +8697,7 @@ function CapacityBandChart({
8536
8697
  return /* @__PURE__ */ jsx(
8537
8698
  Text,
8538
8699
  {
8700
+ className: "text-text-tertiary",
8539
8701
  style: {
8540
8702
  position: "absolute",
8541
8703
  left: toX(point.date) - 14,
@@ -8543,8 +8705,7 @@ function CapacityBandChart({
8543
8705
  width: 28,
8544
8706
  textAlign: "center",
8545
8707
  fontSize: 10,
8546
- fontFamily: "Inter, sans-serif",
8547
- color: TEXT_TERTIARY5
8708
+ fontFamily: "Inter, sans-serif"
8548
8709
  },
8549
8710
  accessibilityElementsHidden: true,
8550
8711
  importantForAccessibility: "no-hide-descendants",
@@ -8606,12 +8767,7 @@ function CapacityBandChart({
8606
8767
  }
8607
8768
  );
8608
8769
  }
8609
- var SURFACE_ELEVATED = "var(--color-surface-elevated)";
8610
- var BORDER_DEFAULT3 = "var(--color-border-default)";
8611
8770
  var BRAND_PRIMARY9 = "#FF7900";
8612
- var TEXT_PRIMARY6 = "var(--color-text-primary)";
8613
- var TEXT_TERTIARY6 = "var(--color-text-tertiary)";
8614
- var PAGE_BG = "var(--color-background-base)";
8615
8771
  var WORKOUT_PILL_STATUS = {
8616
8772
  completed: "completed",
8617
8773
  today: "current",
@@ -8663,7 +8819,7 @@ function Breadcrumbs2({ crumbs, onNavigate }) {
8663
8819
  children: crumbs.map((crumb, index) => {
8664
8820
  const isLast = index === crumbs.length - 1;
8665
8821
  return /* @__PURE__ */ jsxs(View, { className: "flex-row items-center", style: { gap: 4 }, children: [
8666
- index > 0 && /* @__PURE__ */ jsx(Text, { style: { fontSize: 12, color: TEXT_TERTIARY6 }, children: "\u203A" }),
8822
+ index > 0 && /* @__PURE__ */ jsx(Text, { className: "text-text-tertiary", style: { fontSize: 12 }, children: "\u203A" }),
8667
8823
  /* @__PURE__ */ jsx(
8668
8824
  Pressable,
8669
8825
  {
@@ -8674,11 +8830,12 @@ function Breadcrumbs2({ crumbs, onNavigate }) {
8674
8830
  children: /* @__PURE__ */ jsx(
8675
8831
  Text,
8676
8832
  {
8833
+ className: isLast ? "text-text-primary" : void 0,
8677
8834
  style: {
8678
8835
  fontSize: 12,
8679
8836
  fontFamily: "Inter, sans-serif",
8680
8837
  fontWeight: isLast ? "700" : "500",
8681
- color: isLast ? TEXT_PRIMARY6 : BRAND_PRIMARY9
8838
+ color: isLast ? void 0 : BRAND_PRIMARY9
8682
8839
  },
8683
8840
  children: crumb.label
8684
8841
  }
@@ -8807,8 +8964,8 @@ function ProgramPlanningPage({
8807
8964
  return /* @__PURE__ */ jsx(
8808
8965
  View,
8809
8966
  {
8810
- className,
8811
- style: { width: 390, backgroundColor: PAGE_BG },
8967
+ className: cn(className, "bg-background-base"),
8968
+ style: { width: 390 },
8812
8969
  accessibilityRole: "main",
8813
8970
  "aria-label": title,
8814
8971
  testID: "program-planning-page",
@@ -8818,11 +8975,11 @@ function ProgramPlanningPage({
8818
8975
  Text,
8819
8976
  {
8820
8977
  accessibilityRole: "header",
8978
+ className: "text-text-primary",
8821
8979
  style: {
8822
8980
  fontSize: 20,
8823
8981
  fontFamily: '"Space Grotesk", sans-serif',
8824
- fontWeight: "700",
8825
- color: TEXT_PRIMARY6
8982
+ fontWeight: "700"
8826
8983
  },
8827
8984
  testID: "program-planning-page-title",
8828
8985
  children: title
@@ -8846,10 +9003,9 @@ function ProgramPlanningPage({
8846
9003
  /* @__PURE__ */ jsxs(
8847
9004
  View,
8848
9005
  {
9006
+ className: "bg-surface-elevated border-border",
8849
9007
  style: {
8850
- backgroundColor: SURFACE_ELEVATED,
8851
9008
  borderWidth: 1,
8852
- borderColor: BORDER_DEFAULT3,
8853
9009
  borderRadius: 12,
8854
9010
  padding: 12
8855
9011
  },
@@ -8880,13 +9036,7 @@ function ProgramPlanningPage({
8880
9036
  }
8881
9037
  );
8882
9038
  }
8883
- var SURFACE_ELEVATED2 = "var(--color-surface-elevated)";
8884
- var BORDER_DEFAULT4 = "var(--color-border-default)";
8885
9039
  var BRAND_PRIMARY10 = "#FF7900";
8886
- var TEXT_PRIMARY7 = "var(--color-text-primary)";
8887
- var TEXT_SECONDARY5 = "var(--color-text-secondary)";
8888
- var TEXT_TERTIARY7 = "var(--color-text-tertiary)";
8889
- var PAGE_BG2 = "var(--color-background-base)";
8890
9040
  var CHART_WIDTH = 326;
8891
9041
  var CHART_HEIGHT = 150;
8892
9042
  var EXERCISE_DETAIL_TABS = [
@@ -8933,7 +9083,7 @@ function TabBar({ active, onSelect }) {
8933
9083
  className: "flex-row",
8934
9084
  style: {
8935
9085
  borderBottomWidth: 1,
8936
- borderBottomColor: BORDER_DEFAULT4
9086
+ borderBottomColor: resolveColor("border-default")
8937
9087
  },
8938
9088
  accessibilityRole: "tablist",
8939
9089
  testID: "exercise-detail-page-tabs",
@@ -8956,11 +9106,11 @@ function TabBar({ active, onSelect }) {
8956
9106
  children: /* @__PURE__ */ jsx(
8957
9107
  Text,
8958
9108
  {
9109
+ className: isActive ? "text-text-primary" : "text-text-tertiary",
8959
9110
  style: {
8960
9111
  fontSize: 13,
8961
9112
  fontFamily: "Inter, sans-serif",
8962
- fontWeight: isActive ? "700" : "500",
8963
- color: isActive ? TEXT_PRIMARY7 : TEXT_TERTIARY7
9113
+ fontWeight: isActive ? "700" : "500"
8964
9114
  },
8965
9115
  children: label
8966
9116
  }
@@ -8984,24 +9134,23 @@ function StatStrip({ stats, unit }) {
8984
9134
  return /* @__PURE__ */ jsxs(
8985
9135
  View,
8986
9136
  {
9137
+ className: "bg-surface-elevated border-border",
8987
9138
  style: {
8988
9139
  flex: 1,
8989
9140
  padding: 12,
8990
9141
  borderRadius: 10,
8991
- backgroundColor: SURFACE_ELEVATED2,
8992
- borderWidth: 1,
8993
- borderColor: BORDER_DEFAULT4
9142
+ borderWidth: 1
8994
9143
  },
8995
9144
  testID: `exercise-detail-page-stat-${key}`,
8996
9145
  children: [
8997
9146
  /* @__PURE__ */ jsx(
8998
9147
  Text,
8999
9148
  {
9149
+ className: "text-text-primary",
9000
9150
  style: {
9001
9151
  fontSize: 18,
9002
9152
  fontFamily: '"Space Grotesk", sans-serif',
9003
- fontWeight: "700",
9004
- color: TEXT_PRIMARY7
9153
+ fontWeight: "700"
9005
9154
  },
9006
9155
  children: value
9007
9156
  }
@@ -9009,14 +9158,14 @@ function StatStrip({ stats, unit }) {
9009
9158
  /* @__PURE__ */ jsx(
9010
9159
  Text,
9011
9160
  {
9161
+ className: "text-text-tertiary",
9012
9162
  style: {
9013
9163
  marginTop: 2,
9014
9164
  fontSize: 10,
9015
9165
  fontFamily: "Inter, sans-serif",
9016
9166
  fontWeight: "600",
9017
9167
  letterSpacing: 0.4,
9018
- textTransform: "uppercase",
9019
- color: TEXT_TERTIARY7
9168
+ textTransform: "uppercase"
9020
9169
  },
9021
9170
  children: label
9022
9171
  }
@@ -9035,10 +9184,9 @@ function SectionCard({
9035
9184
  return /* @__PURE__ */ jsxs(
9036
9185
  View,
9037
9186
  {
9187
+ className: "bg-surface-elevated border-border",
9038
9188
  style: {
9039
- backgroundColor: SURFACE_ELEVATED2,
9040
9189
  borderWidth: 1,
9041
- borderColor: BORDER_DEFAULT4,
9042
9190
  borderRadius: 12,
9043
9191
  padding: 12,
9044
9192
  gap: 10
@@ -9048,13 +9196,13 @@ function SectionCard({
9048
9196
  /* @__PURE__ */ jsx(
9049
9197
  Text,
9050
9198
  {
9199
+ className: "text-text-tertiary",
9051
9200
  style: {
9052
9201
  fontSize: 11,
9053
9202
  fontFamily: "Inter, sans-serif",
9054
9203
  fontWeight: "600",
9055
9204
  letterSpacing: 0.6,
9056
- textTransform: "uppercase",
9057
- color: TEXT_TERTIARY7
9205
+ textTransform: "uppercase"
9058
9206
  },
9059
9207
  children: title
9060
9208
  }
@@ -9069,7 +9217,8 @@ function EntryList({ entries, expandedId, onToggle, emptyLabel, testID }) {
9069
9217
  return /* @__PURE__ */ jsx(
9070
9218
  Text,
9071
9219
  {
9072
- style: { fontSize: 12, fontFamily: "Inter, sans-serif", color: TEXT_TERTIARY7 },
9220
+ className: "text-text-tertiary",
9221
+ style: { fontSize: 12, fontFamily: "Inter, sans-serif" },
9073
9222
  testID: `${testID}-empty`,
9074
9223
  children: emptyLabel
9075
9224
  }
@@ -9097,12 +9246,12 @@ function VbtBreakdown({ sets }) {
9097
9246
  /* @__PURE__ */ jsx(
9098
9247
  Text,
9099
9248
  {
9249
+ className: "text-text-secondary",
9100
9250
  style: {
9101
9251
  width: 44,
9102
9252
  fontSize: 11,
9103
9253
  fontFamily: "Inter, sans-serif",
9104
- fontWeight: "600",
9105
- color: TEXT_SECONDARY5
9254
+ fontWeight: "600"
9106
9255
  },
9107
9256
  children: set.label
9108
9257
  }
@@ -9111,11 +9260,11 @@ function VbtBreakdown({ sets }) {
9111
9260
  /* @__PURE__ */ jsx(
9112
9261
  Text,
9113
9262
  {
9263
+ className: "text-text-tertiary",
9114
9264
  style: {
9115
9265
  fontSize: 11,
9116
9266
  fontFamily: "Inter, sans-serif",
9117
- fontVariant: ["tabular-nums"],
9118
- color: TEXT_TERTIARY7
9267
+ fontVariant: ["tabular-nums"]
9119
9268
  },
9120
9269
  children: `${mean.toFixed(2)} \xB7 -${loss}%`
9121
9270
  }
@@ -9134,23 +9283,22 @@ function VbtSummaryRow({ summary }) {
9134
9283
  return /* @__PURE__ */ jsx(View, { className: "flex-row", style: { gap: 8 }, testID: "exercise-detail-page-vbt-summary", children: cells.map((cell) => /* @__PURE__ */ jsxs(
9135
9284
  View,
9136
9285
  {
9286
+ className: "bg-surface-elevated border-border",
9137
9287
  style: {
9138
9288
  flex: 1,
9139
9289
  padding: 12,
9140
9290
  borderRadius: 10,
9141
- backgroundColor: SURFACE_ELEVATED2,
9142
- borderWidth: 1,
9143
- borderColor: BORDER_DEFAULT4
9291
+ borderWidth: 1
9144
9292
  },
9145
9293
  children: [
9146
9294
  /* @__PURE__ */ jsx(
9147
9295
  Text,
9148
9296
  {
9297
+ className: "text-text-primary",
9149
9298
  style: {
9150
9299
  fontSize: 16,
9151
9300
  fontFamily: '"Space Grotesk", sans-serif',
9152
- fontWeight: "700",
9153
- color: TEXT_PRIMARY7
9301
+ fontWeight: "700"
9154
9302
  },
9155
9303
  children: cell.value
9156
9304
  }
@@ -9158,14 +9306,14 @@ function VbtSummaryRow({ summary }) {
9158
9306
  /* @__PURE__ */ jsx(
9159
9307
  Text,
9160
9308
  {
9309
+ className: "text-text-tertiary",
9161
9310
  style: {
9162
9311
  marginTop: 2,
9163
9312
  fontSize: 10,
9164
9313
  fontFamily: "Inter, sans-serif",
9165
9314
  fontWeight: "600",
9166
9315
  letterSpacing: 0.4,
9167
- textTransform: "uppercase",
9168
- color: TEXT_TERTIARY7
9316
+ textTransform: "uppercase"
9169
9317
  },
9170
9318
  children: cell.label
9171
9319
  }
@@ -9194,8 +9342,8 @@ function ExerciseDetailPage({
9194
9342
  return /* @__PURE__ */ jsx(
9195
9343
  View,
9196
9344
  {
9197
- className,
9198
- style: { width: 390, backgroundColor: PAGE_BG2 },
9345
+ className: cn("bg-background-base", className),
9346
+ style: { width: 390 },
9199
9347
  accessibilityRole: "main",
9200
9348
  "aria-label": exercise.name,
9201
9349
  testID: "exercise-detail-page",
@@ -9213,11 +9361,11 @@ function ExerciseDetailPage({
9213
9361
  Text,
9214
9362
  {
9215
9363
  accessibilityRole: "header",
9364
+ className: "text-text-primary",
9216
9365
  style: {
9217
9366
  fontSize: 20,
9218
9367
  fontFamily: '"Space Grotesk", sans-serif',
9219
- fontWeight: "700",
9220
- color: TEXT_PRIMARY7
9368
+ fontWeight: "700"
9221
9369
  },
9222
9370
  testID: "exercise-detail-page-title",
9223
9371
  children: exercise.name
@@ -9226,11 +9374,11 @@ function ExerciseDetailPage({
9226
9374
  /* @__PURE__ */ jsx(
9227
9375
  Text,
9228
9376
  {
9377
+ className: "text-text-secondary",
9229
9378
  style: {
9230
9379
  marginTop: 2,
9231
9380
  fontSize: 12,
9232
- fontFamily: "Inter, sans-serif",
9233
- color: TEXT_SECONDARY5
9381
+ fontFamily: "Inter, sans-serif"
9234
9382
  },
9235
9383
  testID: "exercise-detail-page-subtitle",
9236
9384
  children: exercise.subtitle
@@ -9253,13 +9401,13 @@ function ExerciseDetailPage({
9253
9401
  /* @__PURE__ */ jsx(
9254
9402
  Text,
9255
9403
  {
9404
+ className: "text-text-tertiary",
9256
9405
  style: {
9257
9406
  fontSize: 9,
9258
9407
  fontFamily: "Inter, sans-serif",
9259
9408
  fontWeight: "600",
9260
9409
  letterSpacing: 0.4,
9261
- textTransform: "uppercase",
9262
- color: TEXT_TERTIARY7
9410
+ textTransform: "uppercase"
9263
9411
  },
9264
9412
  children: "e1RM"
9265
9413
  }
@@ -9337,13 +9485,7 @@ function ExerciseDetailPage({
9337
9485
  }
9338
9486
  );
9339
9487
  }
9340
- var SURFACE_ELEVATED3 = "var(--color-surface-elevated)";
9341
- var BORDER_DEFAULT5 = "var(--color-border-default)";
9342
9488
  var BRAND_PRIMARY11 = "#FF7900";
9343
- var TEXT_PRIMARY8 = "var(--color-text-primary)";
9344
- var TEXT_SECONDARY6 = "var(--color-text-secondary)";
9345
- var TEXT_TERTIARY8 = "var(--color-text-tertiary)";
9346
- var PAGE_BG3 = "var(--color-background-base)";
9347
9489
  function countCompletedSets(exercise) {
9348
9490
  if (exercise.setVelocities != null) return exercise.setVelocities.length;
9349
9491
  if (exercise.status === "completed") return exercise.totalPlannedSets;
@@ -9426,11 +9568,11 @@ function WorkoutHeader({
9426
9568
  Text,
9427
9569
  {
9428
9570
  accessibilityRole: "header",
9571
+ className: "text-text-primary",
9429
9572
  style: {
9430
9573
  fontSize: 20,
9431
9574
  fontFamily: '"Space Grotesk", sans-serif',
9432
- fontWeight: "700",
9433
- color: TEXT_PRIMARY8
9575
+ fontWeight: "700"
9434
9576
  },
9435
9577
  testID: "active-workout-page-title",
9436
9578
  children: title
@@ -9439,11 +9581,11 @@ function WorkoutHeader({
9439
9581
  subtitle != null && /* @__PURE__ */ jsx(
9440
9582
  Text,
9441
9583
  {
9584
+ className: "text-text-secondary",
9442
9585
  style: {
9443
9586
  marginTop: 2,
9444
9587
  fontSize: 12,
9445
- fontFamily: "Inter, sans-serif",
9446
- color: TEXT_SECONDARY6
9588
+ fontFamily: "Inter, sans-serif"
9447
9589
  },
9448
9590
  testID: "active-workout-page-subtitle",
9449
9591
  children: subtitle
@@ -9467,13 +9609,13 @@ function WorkoutHeader({
9467
9609
  /* @__PURE__ */ jsx(
9468
9610
  Text,
9469
9611
  {
9612
+ className: "text-text-tertiary",
9470
9613
  style: {
9471
9614
  fontSize: 10,
9472
9615
  fontFamily: "Inter, sans-serif",
9473
9616
  fontWeight: "600",
9474
9617
  letterSpacing: 0.4,
9475
- textTransform: "uppercase",
9476
- color: TEXT_TERTIARY8
9618
+ textTransform: "uppercase"
9477
9619
  },
9478
9620
  children: `${progress.completedSets}/${progress.totalSets} sets`
9479
9621
  }
@@ -9483,7 +9625,8 @@ function WorkoutHeader({
9483
9625
  /* @__PURE__ */ jsx(
9484
9626
  View,
9485
9627
  {
9486
- style: { height: 4, backgroundColor: BORDER_DEFAULT5, borderRadius: 2 },
9628
+ className: "bg-border",
9629
+ style: { height: 4, borderRadius: 2 },
9487
9630
  testID: "active-workout-page-progress-track",
9488
9631
  children: /* @__PURE__ */ jsx(
9489
9632
  View,
@@ -9507,10 +9650,9 @@ function ExerciseList({ groups, focusedId, onToggle }) {
9507
9650
  return /* @__PURE__ */ jsx(
9508
9651
  View,
9509
9652
  {
9653
+ className: "bg-surface-elevated border-border",
9510
9654
  style: {
9511
- backgroundColor: SURFACE_ELEVATED3,
9512
9655
  borderWidth: 1,
9513
- borderColor: BORDER_DEFAULT5,
9514
9656
  borderRadius: 12
9515
9657
  },
9516
9658
  children: /* @__PURE__ */ jsx(
@@ -9576,8 +9718,8 @@ function ActiveWorkoutPage({
9576
9718
  return /* @__PURE__ */ jsxs(
9577
9719
  View,
9578
9720
  {
9579
- className,
9580
- style: { position: "relative", width: 390, backgroundColor: PAGE_BG3 },
9721
+ className: ["bg-background-base", className].filter(Boolean).join(" "),
9722
+ style: { position: "relative", width: 390 },
9581
9723
  accessibilityRole: "main",
9582
9724
  "aria-label": title,
9583
9725
  testID: "active-workout-page",
@@ -9590,7 +9732,7 @@ function ActiveWorkoutPage({
9590
9732
  (showRest || showInput) && /* @__PURE__ */ jsx(
9591
9733
  View,
9592
9734
  {
9593
- style: { borderTopWidth: 1, borderTopColor: BORDER_DEFAULT5 },
9735
+ style: { borderTopWidth: 1, borderTopColor: resolveColor("border-default") },
9594
9736
  testID: "active-workout-page-bottom-bar",
9595
9737
  children: showRest && rest != null ? /* @__PURE__ */ jsx(
9596
9738
  RestTimer,
@@ -9850,28 +9992,28 @@ function Scatter({
9850
9992
  testID: "scatter-canvas",
9851
9993
  style: { position: "absolute", top: 0, left: 0, width, height, overflow: "hidden" },
9852
9994
  children: [
9853
- ticksOf(yd, TICK_COUNT).map((t, i) => {
9854
- const y = toY(t);
9995
+ ticksOf(yd, TICK_COUNT).map((t2, i) => {
9996
+ const y = toY(t2);
9855
9997
  return /* @__PURE__ */ jsx(
9856
9998
  View,
9857
9999
  {
9858
10000
  accessibilityElementsHidden: true,
9859
10001
  testID: "scatter-gridline-y",
9860
10002
  style: { position: "absolute", left: PLOT_LEFT2, width: innerW, top: y, height: 1, backgroundColor: GRID_LINE2 },
9861
- children: /* @__PURE__ */ jsx(Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", left: -PLOT_LEFT2, top: -6, width: PLOT_LEFT2 - 6, textAlign: "right" }, children: formatTick(t) })
10003
+ children: /* @__PURE__ */ jsx(Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", left: -PLOT_LEFT2, top: -6, width: PLOT_LEFT2 - 6, textAlign: "right" }, children: formatTick(t2) })
9862
10004
  },
9863
10005
  `y-${i}`
9864
10006
  );
9865
10007
  }),
9866
- ticksOf(xd, TICK_COUNT).map((t, i) => {
9867
- const x = toX(t);
10008
+ ticksOf(xd, TICK_COUNT).map((t2, i) => {
10009
+ const x = toX(t2);
9868
10010
  return /* @__PURE__ */ jsx(
9869
10011
  View,
9870
10012
  {
9871
10013
  accessibilityElementsHidden: true,
9872
10014
  testID: "scatter-gridline-x",
9873
10015
  style: { position: "absolute", top: PLOT_TOP, height: innerH, left: x, width: 1, backgroundColor: GRID_LINE2 },
9874
- children: /* @__PURE__ */ jsx(Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", top: innerH + 4, left: -16, width: 32, textAlign: "center" }, children: formatTick(t) })
10016
+ children: /* @__PURE__ */ jsx(Text, { className: "text-[9px] text-text-tertiary", style: { position: "absolute", top: innerH + 4, left: -16, width: 32, textAlign: "center" }, children: formatTick(t2) })
9875
10017
  },
9876
10018
  `x-${i}`
9877
10019
  );
@@ -10005,23 +10147,23 @@ function Gauge({
10005
10147
  testID: "gauge",
10006
10148
  ...props,
10007
10149
  children: [
10008
- ticks.map((t) => /* @__PURE__ */ jsx(
10150
+ ticks.map((t2) => /* @__PURE__ */ jsx(
10009
10151
  View,
10010
10152
  {
10011
10153
  accessibilityElementsHidden: true,
10012
10154
  testID: "gauge-segment",
10013
10155
  style: {
10014
10156
  position: "absolute",
10015
- left: t.left - tickThickness / 2,
10016
- top: t.top - tickLength / 2,
10157
+ left: t2.left - tickThickness / 2,
10158
+ top: t2.top - tickLength / 2,
10017
10159
  width: tickThickness,
10018
10160
  height: tickLength,
10019
10161
  borderRadius: tickThickness / 2,
10020
- backgroundColor: t.color,
10021
- transform: [{ rotate: t.rotate }]
10162
+ backgroundColor: t2.color,
10163
+ transform: [{ rotate: t2.rotate }]
10022
10164
  }
10023
10165
  },
10024
- t.key
10166
+ t2.key
10025
10167
  )),
10026
10168
  /* @__PURE__ */ jsxs(View, { style: { position: "absolute", top: 0, left: 0, width: size, height: size }, className: "items-center justify-center", children: [
10027
10169
  /* @__PURE__ */ jsxs(View, { className: "flex-row items-baseline gap-0.5", children: [
@@ -10035,65 +10177,6 @@ function Gauge({
10035
10177
  );
10036
10178
  }
10037
10179
 
10038
- // src/utils/colors.ts
10039
- function getStatusColor(status) {
10040
- return `var(--color-status-${status})`;
10041
- }
10042
- function getResultColor(result) {
10043
- return `var(--color-result-${result})`;
10044
- }
10045
- function alpha(color, opacity) {
10046
- const clampedOpacity = Math.max(0, Math.min(1, opacity));
10047
- if (color.startsWith("#")) {
10048
- const hex = color.slice(1);
10049
- let r, g, b;
10050
- if (hex.length === 3) {
10051
- r = parseInt(hex[0] + hex[0], 16);
10052
- g = parseInt(hex[1] + hex[1], 16);
10053
- b = parseInt(hex[2] + hex[2], 16);
10054
- } else if (hex.length === 6) {
10055
- r = parseInt(hex.slice(0, 2), 16);
10056
- g = parseInt(hex.slice(2, 4), 16);
10057
- b = parseInt(hex.slice(4, 6), 16);
10058
- } else {
10059
- return color;
10060
- }
10061
- return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
10062
- }
10063
- const rgbMatch = color.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
10064
- if (rgbMatch) {
10065
- const [, r, g, b] = rgbMatch;
10066
- return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
10067
- }
10068
- const rgbaMatch = color.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)/);
10069
- if (rgbaMatch) {
10070
- const [, r, g, b] = rgbaMatch;
10071
- return `rgba(${r}, ${g}, ${b}, ${clampedOpacity})`;
10072
- }
10073
- return color;
10074
- }
10075
- function getLuminance(color) {
10076
- if (!color.startsWith("#")) return "dark";
10077
- const hex = color.slice(1);
10078
- let r, g, b;
10079
- if (hex.length === 3) {
10080
- r = parseInt(hex[0] + hex[0], 16);
10081
- g = parseInt(hex[1] + hex[1], 16);
10082
- b = parseInt(hex[2] + hex[2], 16);
10083
- } else if (hex.length === 6) {
10084
- r = parseInt(hex.slice(0, 2), 16);
10085
- g = parseInt(hex.slice(2, 4), 16);
10086
- b = parseInt(hex.slice(4, 6), 16);
10087
- } else {
10088
- return "dark";
10089
- }
10090
- const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
10091
- return luminance > 0.5 ? "light" : "dark";
10092
- }
10093
- function getContrastText(backgroundColor) {
10094
- return getLuminance(backgroundColor) === "light" ? "#000000" : "#FFFFFF";
10095
- }
10096
-
10097
10180
  // src/utils/form.ts
10098
10181
  function getFieldValidationProps(state) {
10099
10182
  return {
@@ -10182,6 +10265,6 @@ function composeValidators(...validators) {
10182
10265
  };
10183
10266
  }
10184
10267
 
10185
- export { Accordion, AccordionButton, AccordionItem, AccordionPanel, ActiveWorkoutPage, Alert, AlertDescription, AlertTitle, Autocomplete, Avatar, AvatarBadge, AvatarGroup, BaseBadge, BreadcrumbItem, Breadcrumbs, Button, ButtonIcon, ButtonSpinner, ButtonText, CapacityBandChart, Caption, Checkbox, CheckboxGroup, Chip, CircularProgress, Collapse, CollapseButton, CollapseContent, DataRow, DateTime, DeviationBar, Divider, Drawer, DrawerBody, DrawerFooter, DrawerHeader, EXERCISE_DETAIL_TABS, EmptyState, ExerciseCard, ExerciseDetailPage, FormActions, FormField, FormRow, FormSection, Gauge, HStack, Heading, HelpTip, IconBox, Input, InputBar, InputGroup, IntensityBar, Label, LabelWithHelp, Link, ListItem, ListItemContent, ListItemDivider, ListItemIcon, ListItemTrailing, Menu, MenuDivider, MenuGroup, MenuItem, MenuList, MenuTrigger, MesoCard, MesoProgressBar, Metric, MetricGroup, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalTitle, MuscleGroupChip, Overline, Paragraph, PasswordInput, Pill, PlaceholderStrip, Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, PrBadge, PrHistoryModal, ProgramPlanningPage, Progress, ProgressSteps, Radio, RadioGroup, ReadinessCheck, RestTimer, Scatter, Section, SectionContent, SectionHeader, Select, SetRow, Sidebar, SidebarContent, SidebarDivider, SidebarFooter, SidebarHeader, SidebarItem, SidebarSection, Skeleton, SkeletonCard, SkeletonCircle, SkeletonListItem, SkeletonText, Spinner, Stack, StepContent, StepIndicator, StepLabel, Stepper, Step as StepperStep, StrengthTrendChart, SupersetWrapper, Surface, Switch, Tab, TabList, TabPanel, TabPanels, Table, TableBody, TableCell, TableHeader, TableHeaderCell, TablePagination, TableRow, Tabs, TempoDisplay, Toast, ToastProvider, ToolbarButton, ToolbarButtonGroup, Tooltip, Treemap, Typography, VStack, VelocityStrip, WeekRow, WeightBadge, WorkoutCard, WorkoutPill, alpha, buildBreadcrumbs, calculateMeanVelocity, calculateVelocityLoss, composeValidators, countCompletedSets, createFieldId, deriveExerciseStats, deriveNavLevel, deriveWorkoutProgress, findActiveExercise, findMeso, findWeek, findWorkout, formatDateTime, formatPrescription, formatSignedPct, formatVelocity, getContrastText, getFieldAriaProps, getFieldValidationProps, getLuminance, getResultColor, getStatusColor, getVelocityZoneColor, getVelocityZoneName, groupExercises, hasMaxLength, hasMinLength, isEmpty, isValidEmail, roundRpe, roundTempo, roundWeight, rpeColor, statusToCardState, summarizeVbt, toActiveCardProps, toExerciseCardProps, toProgressBarMesos, useTable, useToast, useToolbarButton, validationRules };
10268
+ export { Accordion, AccordionButton, AccordionItem, AccordionPanel, ActiveWorkoutPage, Alert, AlertDescription, AlertTitle, Autocomplete, Avatar, AvatarBadge, AvatarGroup, BaseBadge, BreadcrumbItem, Breadcrumbs, Button, ButtonIcon, ButtonSpinner, ButtonText, CapacityBandChart, Caption, Checkbox, CheckboxGroup, Chip, CircularProgress, Collapse, CollapseButton, CollapseContent, DataRow, DateTime, DeviationBar, Divider, Drawer, DrawerBody, DrawerFooter, DrawerHeader, EXERCISE_DETAIL_TABS, EmptyState, ExerciseCard, ExerciseDetailPage, FormActions, FormField, FormRow, FormSection, Gauge, HStack, Heading, HelpTip, IconBox, Input, InputBar, InputGroup, IntensityBar, Label, LabelWithHelp, Link, ListItem, ListItemContent, ListItemDivider, ListItemIcon, ListItemTrailing, Menu, MenuDivider, MenuGroup, MenuItem, MenuList, MenuTrigger, MesoCard, MesoProgressBar, Metric, MetricGroup, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalTitle, MuscleGroupChip, Overline, Paragraph, PasswordInput, Pill, PlaceholderStrip, Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, PrBadge, PrHistoryModal, ProgramPlanningPage, Progress, ProgressSteps, Radio, RadioGroup, ReadinessCheck, RestTimer, Scatter, Section, SectionContent, SectionHeader, Select, SetRow, Sidebar, SidebarContent, SidebarDivider, SidebarFooter, SidebarHeader, SidebarItem, SidebarSection, Skeleton, SkeletonCard, SkeletonCircle, SkeletonListItem, SkeletonText, Spinner, Stack, StepContent, StepIndicator, StepLabel, Stepper, Step as StepperStep, StrengthTrendChart, SupersetWrapper, Surface, Switch, TEMPO_PACING, Tab, TabList, TabPanel, TabPanels, Table, TableBody, TableCell, TableHeader, TableHeaderCell, TablePagination, TableRow, Tabs, TempoBar, TempoDisplay, Toast, ToastProvider, ToolbarButton, ToolbarButtonGroup, Tooltip, Treemap, Typography, VStack, VelocityStrip, WeekRow, WeightBadge, WorkoutCard, WorkoutPill, alpha, buildBreadcrumbs, calculateMeanVelocity, calculateVelocityLoss, composeValidators, countCompletedSets, createFieldId, deriveExerciseStats, deriveNavLevel, deriveWorkoutProgress, findActiveExercise, findMeso, findWeek, findWorkout, formatDateTime, formatPrescription, formatSignedPct, formatVelocity, getContrastText, getFieldAriaProps, getFieldValidationProps, getLuminance, getResultColor, getStatusColor, getTempoFillPct, getTempoPacingState, getVelocityZoneColor, getVelocityZoneName, groupExercises, hasMaxLength, hasMinLength, isEmpty, isValidEmail, roundRpe, roundTempo, roundWeight, rpeColor, statusToCardState, summarizeVbt, toActiveCardProps, toExerciseCardProps, toProgressBarMesos, useTable, useToast, useToolbarButton, validationRules };
10186
10269
  //# sourceMappingURL=index.mjs.map
10187
10270
  //# sourceMappingURL=index.mjs.map