@titan-design/react-ui 0.6.0 → 0.7.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 (248) hide show
  1. package/dist/bodymap.js +12 -7
  2. package/dist/bodymap.js.map +1 -1
  3. package/dist/bodymap.mjs +12 -7
  4. package/dist/bodymap.mjs.map +1 -1
  5. package/dist/index.d.mts +855 -124
  6. package/dist/index.d.ts +855 -124
  7. package/dist/index.js +2276 -801
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +2230 -802
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/{pages-MO0JCySL.d.mts → pages-8u_4WbL-.d.mts} +280 -57
  12. package/dist/{pages-D7Jlssvp.d.ts → pages-DaWiBOGa.d.ts} +280 -57
  13. package/dist/pages.d.mts +1 -1
  14. package/dist/pages.d.ts +1 -1
  15. package/dist/pages.js +1255 -798
  16. package/dist/pages.js.map +1 -1
  17. package/dist/pages.mjs +1255 -798
  18. package/dist/pages.mjs.map +1 -1
  19. package/dist/theme/index.d.mts +16 -82
  20. package/dist/theme/index.d.ts +16 -82
  21. package/dist/theme/index.js +13 -115
  22. package/dist/theme/index.js.map +1 -1
  23. package/dist/theme/index.mjs +13 -115
  24. package/dist/theme/index.mjs.map +1 -1
  25. package/dist/theme/tokens-css.js +14 -6
  26. package/dist/theme/tokens-css.js.map +1 -1
  27. package/dist/theme/tokens-css.mjs +14 -6
  28. package/dist/theme/tokens-css.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/src/arch/Architecture.stories.tsx +870 -0
  31. package/src/arch/annotations.json +48 -0
  32. package/src/arch/arch-graph.json +4301 -0
  33. package/src/components/custom/DateTime/DateTime.stories.tsx +1 -1
  34. package/src/components/custom/EmptyState/EmptyState.stories.tsx +1 -1
  35. package/src/components/custom/Gauge/Gauge.stories.tsx +1 -1
  36. package/src/components/custom/Metric/Metric.stories.tsx +1 -1
  37. package/src/components/custom/Scatter/Scatter.stories.tsx +1 -1
  38. package/src/components/custom/Sidebar/Sidebar.stories.tsx +1 -1
  39. package/src/components/custom/Table/Table.stories.tsx +1 -1
  40. package/src/components/custom/TimerReadout/TimerReadout.stories.tsx +62 -0
  41. package/src/components/custom/TimerReadout/TimerReadout.test.tsx +72 -0
  42. package/src/components/custom/TimerReadout/TimerReadout.tsx +75 -0
  43. package/src/components/custom/TimerReadout/index.ts +1 -0
  44. package/src/components/custom/Treemap/Treemap.stories.tsx +1 -1
  45. package/src/components/custom/Typography/Typography.stories.tsx +1 -1
  46. package/src/components/custom/Workout/ActiveWorkoutPage.stories.tsx +21 -13
  47. package/src/components/custom/Workout/ActiveWorkoutPage.test.tsx +16 -13
  48. package/src/components/custom/Workout/ActiveWorkoutPage.tsx +9 -15
  49. package/src/components/custom/Workout/BaseBadge.stories.tsx +1 -1
  50. package/src/components/custom/Workout/BodyMap.stories.tsx +1 -1
  51. package/src/components/custom/Workout/BodyMapDetailPanel.stories.tsx +1 -1
  52. package/src/components/custom/Workout/CapacityBandChart.stories.tsx +1 -1
  53. package/src/components/custom/Workout/DeviationBar.stories.tsx +1 -1
  54. package/src/components/custom/Workout/ExerciseCard.stories.tsx +51 -66
  55. package/src/components/custom/Workout/ExerciseCard.test.tsx +146 -143
  56. package/src/components/custom/Workout/ExerciseCard.tsx +176 -198
  57. package/src/components/custom/Workout/ExerciseCardHeading.stories.tsx +99 -0
  58. package/src/components/custom/Workout/ExerciseCardHeading.test.tsx +72 -0
  59. package/src/components/custom/Workout/ExerciseCardHeading.tsx +43 -0
  60. package/src/components/custom/Workout/ExerciseCardUnified.stories.tsx +151 -0
  61. package/src/components/custom/Workout/ExerciseDetailPage.stories.tsx +5 -3
  62. package/src/components/custom/Workout/ExerciseDetailPage.test.tsx +4 -4
  63. package/src/components/custom/Workout/ExerciseDetailPage.tsx +4 -5
  64. package/src/components/custom/Workout/ExerciseHeading.stories.tsx +81 -0
  65. package/src/components/custom/Workout/ExerciseHeading.test.tsx +77 -0
  66. package/src/components/custom/Workout/ExerciseHeading.tsx +85 -0
  67. package/src/components/custom/Workout/ExerciseIndicator.stories.tsx +110 -0
  68. package/src/components/custom/Workout/ExerciseIndicator.test.tsx +93 -0
  69. package/src/components/custom/Workout/ExerciseIndicator.tsx +120 -0
  70. package/src/components/custom/Workout/FatigueMeter.stories.tsx +51 -0
  71. package/src/components/custom/Workout/FatigueMeter.test.tsx +73 -0
  72. package/src/components/custom/Workout/FatigueMeter.tsx +82 -0
  73. package/src/components/custom/Workout/InputBar.stories.tsx +1 -1
  74. package/src/components/custom/Workout/IntensityBar.stories.tsx +1 -1
  75. package/src/components/custom/Workout/LiveAuraFrame.stories.tsx +153 -0
  76. package/src/components/custom/Workout/LiveAuraFrame.test.tsx +74 -0
  77. package/src/components/custom/Workout/LiveAuraFrame.tsx +105 -0
  78. package/src/components/custom/Workout/MesoCard.stories.tsx +1 -1
  79. package/src/components/custom/Workout/MesoProgressBar.stories.tsx +1 -1
  80. package/src/components/custom/Workout/MesoStatusCard.stories.tsx +1 -1
  81. package/src/components/custom/Workout/MetricTiles.stories.tsx +60 -0
  82. package/src/components/custom/Workout/MetricTiles.test.tsx +58 -0
  83. package/src/components/custom/Workout/MetricTiles.tsx +48 -0
  84. package/src/components/custom/Workout/MuscleGroupChip.stories.tsx +1 -1
  85. package/src/components/custom/Workout/PlaceholderStrip.stories.tsx +1 -1
  86. package/src/components/custom/Workout/PrBadge.stories.tsx +1 -1
  87. package/src/components/custom/Workout/PrHistoryModal.stories.tsx +1 -1
  88. package/src/components/custom/Workout/ProgramPlanningPage.stories.tsx +4 -16
  89. package/src/components/custom/Workout/ProgramPlanningPage.tsx +8 -6
  90. package/src/components/custom/Workout/README.md +146 -4
  91. package/src/components/custom/Workout/ReadinessCheck.stories.tsx +1 -1
  92. package/src/components/custom/Workout/RestTimer.stories.tsx +1 -1
  93. package/src/components/custom/Workout/RestTimer.tsx +15 -10
  94. package/src/components/custom/Workout/RowInventory.stories.tsx +405 -0
  95. package/src/components/custom/Workout/S3FullRail.stories.tsx +34 -0
  96. package/src/components/custom/Workout/S3SessionPace.stories.tsx +95 -0
  97. package/src/components/custom/Workout/S3SessionRailHeading.stories.tsx +61 -0
  98. package/src/components/custom/Workout/S3SetTypes.stories.tsx +176 -0
  99. package/src/components/custom/Workout/S3WorkoutExpansion.stories.tsx +240 -0
  100. package/src/components/custom/Workout/ScheduleTiles.stories.tsx +40 -0
  101. package/src/components/custom/Workout/ScheduleTiles.test.tsx +34 -0
  102. package/src/components/custom/Workout/ScheduleTiles.tsx +70 -0
  103. package/src/components/custom/Workout/SegmentedBar.stories.tsx +99 -0
  104. package/src/components/custom/Workout/SegmentedBar.test.tsx +77 -0
  105. package/src/components/custom/Workout/SegmentedBar.tsx +172 -0
  106. package/src/components/custom/Workout/SegmentedProgressBar.stories.tsx +50 -0
  107. package/src/components/custom/Workout/SegmentedProgressBar.test.tsx +80 -0
  108. package/src/components/custom/Workout/SegmentedProgressBar.tsx +67 -0
  109. package/src/components/custom/Workout/SessionHeader.stories.tsx +121 -0
  110. package/src/components/custom/Workout/SessionHeader.test.tsx +122 -0
  111. package/src/components/custom/Workout/SessionHeader.tsx +152 -0
  112. package/src/components/custom/Workout/SessionRail.stories.tsx +153 -0
  113. package/src/components/custom/Workout/SessionRail.test.tsx +86 -0
  114. package/src/components/custom/Workout/SessionRail.tsx +126 -0
  115. package/src/components/custom/Workout/SetBar.stories.tsx +124 -0
  116. package/src/components/custom/Workout/SetBar.test.tsx +123 -0
  117. package/src/components/custom/Workout/SetBar.tsx +171 -0
  118. package/src/components/custom/Workout/SetRow.stories.tsx +50 -100
  119. package/src/components/custom/Workout/SetRow.test.tsx +94 -166
  120. package/src/components/custom/Workout/SetRow.tsx +169 -232
  121. package/src/components/custom/Workout/SetStrip.stories.tsx +154 -0
  122. package/src/components/custom/Workout/SetStrip.test.tsx +109 -0
  123. package/src/components/custom/Workout/SetStrip.tsx +71 -0
  124. package/src/components/custom/Workout/SetTableHeader.stories.tsx +66 -0
  125. package/src/components/custom/Workout/SetTableHeader.test.tsx +47 -0
  126. package/src/components/custom/Workout/SetTableHeader.tsx +88 -0
  127. package/src/components/custom/Workout/SetsRepsLoad.stories.tsx +47 -0
  128. package/src/components/custom/Workout/SetsRepsLoad.test.tsx +44 -0
  129. package/src/components/custom/Workout/SetsRepsLoad.tsx +52 -0
  130. package/src/components/custom/Workout/Sparkline.stories.tsx +1 -1
  131. package/src/components/custom/Workout/StatusDot.stories.tsx +1 -1
  132. package/src/components/custom/Workout/StatusPill.stories.tsx +59 -0
  133. package/src/components/custom/Workout/StatusPill.test.tsx +63 -0
  134. package/src/components/custom/Workout/StatusPill.tsx +88 -0
  135. package/src/components/custom/Workout/StrengthTrendChart.stories.tsx +1 -1
  136. package/src/components/custom/Workout/SupersetWrapper.stories.tsx +1 -1
  137. package/src/components/custom/Workout/TempoBar.stories.tsx +1 -1
  138. package/src/components/custom/Workout/TempoDisplay.stories.tsx +12 -1
  139. package/src/components/custom/Workout/TempoDisplay.tsx +23 -33
  140. package/src/components/custom/Workout/TrainingStatusPage.stories.tsx +1 -1
  141. package/src/components/custom/Workout/VelocityStrip.modalities.stories.tsx +254 -0
  142. package/src/components/custom/Workout/VelocityStrip.responsive.stories.tsx +145 -0
  143. package/src/components/custom/Workout/VelocityStrip.stories.tsx +129 -66
  144. package/src/components/custom/Workout/VelocityStrip.test.tsx +376 -141
  145. package/src/components/custom/Workout/VelocityStrip.tsx +508 -120
  146. package/src/components/custom/Workout/VolumeLandmarkBar.stories.tsx +73 -0
  147. package/src/components/custom/Workout/VolumeLandmarkBar.test.tsx +119 -0
  148. package/src/components/custom/Workout/VolumeLandmarkBar.tsx +154 -0
  149. package/src/components/custom/Workout/WeekRow.stories.tsx +1 -1
  150. package/src/components/custom/Workout/WeightBadge.stories.tsx +1 -1
  151. package/src/components/custom/Workout/WorkoutCard.stories.tsx +2 -6
  152. package/src/components/custom/Workout/WorkoutCard.test.tsx +13 -46
  153. package/src/components/custom/Workout/WorkoutPill.stories.tsx +1 -1
  154. package/src/components/custom/Workout/ZoneTrack.stories.tsx +140 -0
  155. package/src/components/custom/Workout/ZoneTrack.test.tsx +200 -0
  156. package/src/components/custom/Workout/ZoneTrack.tsx +315 -0
  157. package/src/components/custom/Workout/index.ts +55 -2
  158. package/src/components/custom/Workout/metricText.stories.tsx +69 -0
  159. package/src/components/custom/Workout/metricText.tsx +34 -0
  160. package/src/components/custom/Workout/paceTone.test.ts +29 -0
  161. package/src/components/custom/Workout/paceTone.ts +27 -0
  162. package/src/components/custom/Workout/setHeadingKit.tsx +177 -0
  163. package/src/components/custom/index.ts +1 -0
  164. package/src/components/custom/stepper/Stepper.stories.tsx +1 -1
  165. package/src/components/icons/icons.stories.tsx +67 -2
  166. package/src/components/icons/icons.test.tsx +32 -2
  167. package/src/components/icons/icons.tsx +108 -0
  168. package/src/components/shell/BrandLockup.stories.tsx +3 -3
  169. package/src/components/shell/DashboardShell.stories.tsx +65 -0
  170. package/src/components/shell/DashboardShell.test.tsx +42 -0
  171. package/src/components/shell/DashboardShell.tsx +74 -0
  172. package/src/components/shell/DeviceIndicator.stories.tsx +2 -2
  173. package/src/components/shell/DeviceMenu.stories.tsx +5 -5
  174. package/src/components/shell/DeviceRow.stories.tsx +3 -3
  175. package/src/components/shell/NavItem.stories.tsx +52 -0
  176. package/src/components/shell/NavItem.test.tsx +35 -0
  177. package/src/components/shell/NavItem.tsx +75 -0
  178. package/src/components/shell/README.md +30 -0
  179. package/src/components/shell/SessionRailSpecimen.stories.tsx +753 -0
  180. package/src/components/shell/SessionStatePill.stories.tsx +3 -3
  181. package/src/components/shell/SessionStatePill.tsx +1 -1
  182. package/src/components/shell/SideNav.stories.tsx +81 -0
  183. package/src/components/shell/SideNav.test.tsx +51 -0
  184. package/src/components/shell/SideNav.tsx +74 -0
  185. package/src/components/shell/TopBar.stories.tsx +5 -5
  186. package/src/components/shell/index.ts +5 -0
  187. package/src/components/ui/alert/Alert.stories.tsx +1 -1
  188. package/src/components/ui/autocomplete/Autocomplete.stories.tsx +1 -1
  189. package/src/components/ui/avatar/Avatar.stories.tsx +1 -1
  190. package/src/components/ui/badge/Badge.stories.tsx +1 -1
  191. package/src/components/ui/breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  192. package/src/components/ui/button/Button.stories.tsx +1 -1
  193. package/src/components/ui/card/Card.stories.tsx +1 -1
  194. package/src/components/ui/checkbox/Checkbox.stories.tsx +1 -1
  195. package/src/components/ui/chip/Chip.stories.tsx +1 -1
  196. package/src/components/ui/collapse/Collapse.stories.tsx +1 -1
  197. package/src/components/ui/data-row/DataRow.stories.tsx +1 -1
  198. package/src/components/ui/divider/Divider.stories.tsx +1 -1
  199. package/src/components/ui/drawer/Drawer.stories.tsx +1 -1
  200. package/src/components/ui/form-field/FormField.stories.tsx +1 -1
  201. package/src/components/ui/help-tip/HelpTip.stories.tsx +1 -1
  202. package/src/components/ui/icon-box/IconBox.stories.tsx +1 -1
  203. package/src/components/ui/index.ts +1 -0
  204. package/src/components/ui/indicator/Indicator.stories.tsx +2 -2
  205. package/src/components/ui/indicator/Indicator.test.tsx +1 -0
  206. package/src/components/ui/indicator/Indicator.tsx +6 -1
  207. package/src/components/ui/input/Input.stories.tsx +1 -1
  208. package/src/components/ui/link/Link.stories.tsx +1 -1
  209. package/src/components/ui/list-item/ListItem.stories.tsx +1 -1
  210. package/src/components/ui/menu/Menu.stories.tsx +1 -1
  211. package/src/components/ui/modal/Modal.stories.tsx +1 -1
  212. package/src/components/ui/pill/Pill.stories.tsx +1 -1
  213. package/src/components/ui/popover/Popover.stories.tsx +1 -1
  214. package/src/components/ui/progress/Progress.stories.tsx +1 -1
  215. package/src/components/ui/radio/Radio.stories.tsx +1 -1
  216. package/src/components/ui/section/Section.stories.tsx +1 -1
  217. package/src/components/ui/select/Select.stories.tsx +1 -1
  218. package/src/components/ui/skeleton/Skeleton.stories.tsx +1 -1
  219. package/src/components/ui/spinner/Spinner.stories.tsx +1 -1
  220. package/src/components/ui/stack/Stack.stories.tsx +1 -1
  221. package/src/components/ui/surface/Surface.stories.tsx +1 -1
  222. package/src/components/ui/switch/Switch.stories.tsx +1 -1
  223. package/src/components/ui/tabs/Tabs.stories.tsx +1 -1
  224. package/src/components/ui/tile/Tile.stories.tsx +79 -0
  225. package/src/components/ui/tile/Tile.test.tsx +48 -0
  226. package/src/components/ui/tile/Tile.tsx +64 -0
  227. package/src/components/ui/tile/index.ts +2 -0
  228. package/src/components/ui/toast/Toast.stories.tsx +1 -1
  229. package/src/components/ui/toolbar-button/ToolbarButton.stories.tsx +1 -1
  230. package/src/components/ui/tooltip/Tooltip.stories.tsx +1 -1
  231. package/src/examples/react-hook-form/ReactHookForm.stories.tsx +1 -1
  232. package/src/hooks/index.ts +2 -0
  233. package/src/hooks/useTimer.test.ts +150 -0
  234. package/src/hooks/useTimer.ts +77 -0
  235. package/src/index.ts +3 -0
  236. package/src/pages.ts +1 -1
  237. package/src/stories/PresetShowcase.stories.tsx +1 -1
  238. package/src/stories/ThemePresets.stories.tsx +1 -1
  239. package/src/theme/ColorSystem.stories.tsx +1 -1
  240. package/src/theme/Colors.stories.tsx +5 -8
  241. package/src/theme/config.ts +4 -0
  242. package/src/theme/elevation.stories.tsx +1 -1
  243. package/src/theme/global.css +5 -1
  244. package/src/theme/shadows.stories.tsx +1 -1
  245. package/src/theme/tokens/primitives.ts +11 -107
  246. package/src/theme/tokens/semantic.ts +8 -0
  247. package/src/theme/workout-tokens.ts +11 -7
  248. package/tailwind.config.js +5 -0
@@ -2,20 +2,6 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ViewProps } from 'react-native';
3
3
  import { c as MesoStatusCardProps } from './MesoStatusCard-CQk71hSi.js';
4
4
 
5
- type PRType = 'e1rm' | 'weight' | 'reps' | 'volume' | 'velocity';
6
- interface PrBadgeProps extends ViewProps {
7
- /** PR type determines auto-generated label */
8
- type?: PRType;
9
- /** Display label (e.g., "PR e1RM", "PR 5RM"). Auto-generated from type if omitted. */
10
- label?: string;
11
- /** Show only the star icon, no text label */
12
- compact?: boolean;
13
- /** Trigger pop animation on mount */
14
- animate?: boolean;
15
- className?: string;
16
- }
17
- declare function PrBadge({ type, label: labelProp, compact, animate, className, ...props }: PrBadgeProps): react_jsx_runtime.JSX.Element;
18
-
19
5
  /**
20
6
  * Spec statuses: completed | current | upcoming | deload.
21
7
  * `next` and `missed` are additive extras supported by this implementation.
@@ -59,8 +45,20 @@ interface VelocityStripProps extends ViewProps {
59
45
  * Drives both bar height and — in the default path — zone color. Callers must
60
46
  * feed mean (not peak) concentric velocity so bar color, height, and the
61
47
  * summary label all describe one metric.
48
+ *
49
+ * Optional: provide exactly one of `velocities` or {@link VelocityStripProps.set}.
50
+ * When neither is given the strip renders nothing.
62
51
  */
63
- velocities: number[];
52
+ velocities?: number[];
53
+ /**
54
+ * Optional structured strength-training set descriptor (see {@link VelocitySet}).
55
+ * When present it supersedes `velocities`: the done-velocity array is derived
56
+ * from the set (so mean / loss / zone summaries still work) and the strip is
57
+ * drawn as a typed slot list — grey todo, cyan variable / continue windows and
58
+ * the wide-gap chunking that distinguishes drop / myo / cluster sets. Provide
59
+ * exactly one of `velocities` or `set`.
60
+ */
61
+ set?: VelocitySet;
64
62
  /**
65
63
  * Optional velocity-zone bands (shape-compatible with WA's
66
64
  * `VelocityZones.bands`). When provided, bar color and the summary zone label
@@ -73,13 +71,36 @@ interface VelocityStripProps extends ViewProps {
73
71
  * Live mode: index of the most-recently-completed rep. That bar animates in
74
72
  * with a "pop"; if it is also the current set peak (a new best), it "bounces"
75
73
  * instead. Only the latest bar animates. Honors `prefers-reduced-motion`.
76
- * Full variant only.
74
+ * Framed `expanded` chart only (interactive tap-to-expand use).
77
75
  */
78
76
  liveRepIndex?: number;
77
+ /**
78
+ * `expanded` variant: whether the chart is OPEN. Default true (the variant shows
79
+ * its chart). Toggle it (with {@link onToggle}) for the interactive tap-to-expand
80
+ * collapse↔chart animation; a static open chart (no `onToggle`) does not animate.
81
+ */
79
82
  expanded?: boolean;
80
83
  onToggle?: () => void;
81
84
  onRepPress?: (index: number, velocity: number) => void;
82
- variant?: 'full' | 'mini';
85
+ /**
86
+ * `mini` — a flat 3px static strip (set-type aware). `expanded` — the velocity-
87
+ * HEIGHT bar chart (rounded tops), whose chrome is prop-driven: with
88
+ * {@link showNumbers} or {@link showInfo} on it's the framed chart (raised surface,
89
+ * padding, per-bar m/s labels, mean/loss info row, interactive collapse); with both
90
+ * off it's a bare strip — the active-set "spotlight" of {@link ExerciseCard}.
91
+ */
92
+ variant?: 'mini' | 'expanded';
93
+ /** `expanded` plot height in px (bars scale to this). Default 60. */
94
+ height?: number;
95
+ /**
96
+ * `expanded` bar scaling. `peak` (default) scales to the set's own max (+15%
97
+ * headroom). `fixed` scales to a fixed velocity ceiling so bar heights read the
98
+ * same absolute velocity across sets (the spotlight).
99
+ */
100
+ scale?: 'peak' | 'fixed';
101
+ /** `expanded` framed chart: per-bar m/s labels. Default true. */
102
+ showNumbers?: boolean;
103
+ /** `expanded` framed chart: the mean/loss info row. Default true. */
83
104
  showInfo?: boolean;
84
105
  className?: string;
85
106
  }
@@ -93,46 +114,232 @@ declare function getVelocityZoneName(velocity: number): string;
93
114
  declare function calculateVelocityLoss(velocities: number[]): number;
94
115
  /** Arithmetic mean of the per-rep mean-concentric velocities. */
95
116
  declare function calculateMeanVelocity(velocities: number[]): number;
96
- declare function VelocityStrip({ velocities, zones, liveRepIndex, expanded, onToggle, onRepPress, variant, showInfo, className, ...props }: VelocityStripProps): react_jsx_runtime.JSX.Element;
117
+ /**
118
+ * A structured strength-training set. Supply as {@link VelocityStripProps.set} to
119
+ * render its set-type encoding; the done-velocity array (used for the mean / loss
120
+ * / zone summary) is derived from the type's velocity fields.
121
+ */
122
+ type VelocitySet =
123
+ /** Fixed reps at a fixed load: done reps colored + a grey todo remainder to `planned`. */
124
+ {
125
+ type: 'straight';
126
+ velocities: number[];
127
+ planned?: number;
128
+ }
129
+ /** Bounded reps: committed slots `0..floor`, then a cyan variable window `floor..max`. */
130
+ | {
131
+ type: 'range';
132
+ velocities: number[];
133
+ floor: number;
134
+ max: number;
135
+ }
136
+ /** As-many-reps-as-possible: done reps + a trailing cyan "continue" slot that never closes. */
137
+ | {
138
+ type: 'amrap';
139
+ velocities: number[];
140
+ target?: number;
141
+ }
142
+ /** Load drops with no rest: each sub-load's reps, split by a WIDE notch gap. */
143
+ | {
144
+ type: 'drop';
145
+ subloads: number[][];
146
+ }
147
+ /** Rest-pause: an activation chunk + mini-clusters split by WIDE gaps; `open` adds a cyan continue. */
148
+ | {
149
+ type: 'myo';
150
+ activation: number[];
151
+ clusters: number[][];
152
+ open?: boolean;
153
+ }
154
+ /** Fixed count broken by intra-set rests: reps grouped by `groupSize` with WIDE intra-rest gaps. */
155
+ | {
156
+ type: 'cluster';
157
+ velocities: number[];
158
+ groupSize: number;
159
+ planned?: number;
160
+ };
161
+ declare function VelocityStrip({ velocities, set, zones, liveRepIndex, expanded, onToggle, onRepPress, variant, height, scale, showNumbers, showInfo, className, ...props }: VelocityStripProps): react_jsx_runtime.JSX.Element | null;
97
162
 
98
- type SetRowMode = 'active' | 'completed' | 'history';
99
- interface SetRowProps {
100
- mode: SetRowMode;
163
+ type SetRowUnit = 'lbs' | 'kg';
164
+ /** A set's lifecycle: logged (`done`), being performed now (`live`), or planned (`todo`). */
165
+ type SetRowState = 'done' | 'live' | 'todo';
166
+ interface SetRowBase {
101
167
  setNumber: number;
102
- previous?: {
168
+ unit: SetRowUnit;
169
+ /** Optional set-type marker (e.g. "DROP", "AMRAP") shown in the SET cell. */
170
+ setType?: string;
171
+ /** Optional velocity-zone bands (WA `VelocityZones.bands`); default scale when absent. */
172
+ velocityZones?: readonly VelocityZoneBandProp[];
173
+ }
174
+ /**
175
+ * One row of the unified expanded exercise table (SET · REPS · LBS · RPE + a
176
+ * per-row velocity strip), as a lifecycle discriminated union:
177
+ * - `done` — a logged set: recorded reps / weight / rpe, a flat `mini` strip.
178
+ * - `live` — performed right now: shows its TARGET (never "reps-done/target"),
179
+ * stands out by brightness, and a compact velocity-HEIGHT spotlight strip.
180
+ * - `todo` — planned: shows its target, muted, a flat grey `mini` stub strip.
181
+ *
182
+ * `done` + `todo` share ONE muted treatment; only `live` is brightened. There is
183
+ * no PREV column (dropped in the unified design).
184
+ */
185
+ type SetRowProps = (SetRowBase & {
186
+ state: 'done';
187
+ reps: number;
188
+ weight: number;
189
+ rpe?: number | null;
190
+ /** Per-rep MEAN concentric velocities (m/s). */
191
+ velocities: number[];
192
+ }) | (SetRowBase & {
193
+ state: 'live';
194
+ /** The prescribed target shown in the REPS / LBS cells (no live "5/10"). */
195
+ target: {
103
196
  reps: number;
104
197
  weight: number;
105
- } | null;
106
- reps: number | null;
107
- weight: number | null;
198
+ };
199
+ /** Reps / weight committed so far (available to hosts; the display shows `target`). */
200
+ reps: number;
201
+ weight: number;
108
202
  rpe?: number | null;
109
- unit: 'lbs' | 'kg';
110
- /** Per-rep MEAN concentric velocities (m/s). */
111
- velocities?: number[];
112
- /** Optional velocity-zone bands (WA `VelocityZones.bands`); default scale when absent. */
113
- velocityZones?: readonly VelocityZoneBandProp[];
114
- /** Live mode: index of the newest rep bar to animate (pop / new-peak bounce). */
115
- velocityLiveRepIndex?: number;
116
- velocityExpanded?: boolean;
117
- onVelocityToggle?: () => void;
118
- setType?: string;
119
- prBadges?: Array<{
120
- type: PRType;
121
- label: string;
122
- }>;
123
- isNextSet?: boolean;
124
- targets?: {
203
+ /** Per-rep MEAN concentric velocities logged so far this set. */
204
+ velocities: number[];
205
+ /** Newest rep index — reserved; the compact spotlight strip is static. */
206
+ liveRepIndex?: number;
207
+ }) | (SetRowBase & {
208
+ state: 'todo';
209
+ /** The prescribed target shown in the REPS / LBS cells. */
210
+ target: {
125
211
  reps: number;
126
212
  weight: number;
127
213
  };
214
+ /** Planned rep count backing the grey stub strip. Default `target.reps`. */
215
+ planned?: number;
216
+ });
217
+ /**
218
+ * ONE set row of the unified expanded exercise table. SET · REPS · LBS · RPE over
219
+ * a per-row {@link VelocityStrip}; `live` stands out by brightness with a compact
220
+ * velocity-height spotlight, `done`/`todo` are muted with a flat mini strip. Its
221
+ * column widths mirror {@link SetTableHeader}(`showPrevious={false}`).
222
+ */
223
+ declare function SetRow(set: SetRowProps): react_jsx_runtime.JSX.Element;
224
+
225
+ /**
226
+ * The four canonical rep-intensity zone pins (real titan ramp pins). A rep's mean
227
+ * velocity ratio maps to one of these; butted together they form a set's bar.
228
+ */
229
+ declare const SET_STRIP_ZONES: {
230
+ readonly slow: "#D14343";
231
+ readonly moderate: "#FF7900";
232
+ readonly fast: "#F9B415";
233
+ readonly fastest: "#2ED573";
234
+ };
235
+ /**
236
+ * The learned "variable / unknown / opportunity" semantic (cyan-900, a real ramp
237
+ * pin): an unperformed rep in a range's variable zone, and the fading trail of a
238
+ * myo set whose cluster count isn't yet known.
239
+ */
240
+ declare const SET_STRIP_VARIABLE_COLOR: "#0B3149";
241
+ /** Map a per-rep mean-velocity ratio to its zone pin (fastest = green, slowest = red). */
242
+ declare function velocityZoneColor(v: number): string;
243
+ /**
244
+ * One set's data. Flat variants: `done` = every rep performed; `active` = reps-so-far
245
+ * performed against a planned count (remainder greyed, performed reps pulse); `todo` =
246
+ * a planned but unstarted set (solid grey bar). Set-type variants:
247
+ * - `range` — variable rep-range (e.g. 15–20): `max` segments; committed zone
248
+ * `0..floor` (done = velocity, todo = grey), variable zone `floor..max` (done =
249
+ * velocity, todo = the variable/opportunity cyan). `doneVels` may run past `floor`.
250
+ * - `drop` — one set, no rest: `subloads` butted internally, split by 2px notches.
251
+ * - `myo` — done rest-pause: `activation` chunk + `clusters`, split by 3px cluster gaps.
252
+ * - `myo-upcoming` — planned myo, length unknown: grey activation (`activationLen`) +
253
+ * a fading cyan "clusters-to-failure" trail with the right edge left open.
254
+ */
255
+ type SetStripSet = {
256
+ status: 'done';
257
+ velocities: number[];
258
+ } | {
259
+ status: 'active';
260
+ velocities: number[];
261
+ planned: number;
262
+ } | {
263
+ status: 'todo';
264
+ planned: number;
265
+ } | {
266
+ status: 'range';
267
+ floor: number;
268
+ max: number;
269
+ doneVels: number[];
270
+ } | {
271
+ status: 'drop';
272
+ subloads: number[][];
273
+ } | {
274
+ status: 'myo';
275
+ activation: number[];
276
+ clusters: number[][];
277
+ } | {
278
+ status: 'myo-upcoming';
279
+ activationLen: number;
280
+ clusterCount?: number;
281
+ };
282
+ interface SetBarProps {
283
+ /** One set's performance state (done / active / todo). */
284
+ set: SetStripSet;
285
+ /** Bar height in px. Default 8. */
286
+ height?: number;
287
+ }
288
+ /**
289
+ * ONE set's multi-coloured bar: the butted per-rep colour segments for a single
290
+ * set (`done` = velocity-coloured reps · `active` = performed reps pulsing + grey
291
+ * remainder · `todo` = a solid grey bar), composed over {@link SegmentedBar}.
292
+ * Fills its flex slot; {@link SetStrip} lays several side by side. Colours are the
293
+ * real titan ramp pins.
294
+ */
295
+ declare function SetBar({ set, height }: SetBarProps): react_jsx_runtime.JSX.Element;
296
+
297
+ /**
298
+ * The LOCKED 6-kind indicator taxonomy (TD-03.51). One precedence-ranked slot is
299
+ * ever shown per exercise, resolved by {@link resolveIndicator}. Glyph = the
300
+ * specific signal; color = the severity tier (danger/warning/success/info, bound
301
+ * to titan status tokens). Outlined (border + glyph, no fill) so a chip never
302
+ * collides with the filled velocity strip beside it.
303
+ */
304
+ type ExerciseIndicatorKind = 'imbalance' | 'overshoot' | 'velocity-loss' | 'missed-reps' | 'pr' | 'info';
305
+ /**
306
+ * Precedence order (1=highest → last=lowest). A single chip is shown, so when
307
+ * several signals are true the highest-ranked wins. Alerts outrank `pr`; `info`
308
+ * is the floor. This ordering is LOCKED — do not reshuffle.
309
+ */
310
+ declare const INDICATOR_PRECEDENCE: readonly ExerciseIndicatorKind[];
311
+ /**
312
+ * Given the signals currently true for an exercise, pick the single
313
+ * highest-precedence kind to surface (or `undefined` when none apply). Order and
314
+ * duplicates in `candidates` don't matter — {@link INDICATOR_PRECEDENCE} decides.
315
+ */
316
+ declare function resolveIndicator(candidates: ExerciseIndicatorKind[]): ExerciseIndicatorKind | undefined;
317
+ interface ExerciseIndicatorProps extends Omit<ViewProps, 'children'> {
318
+ kind: ExerciseIndicatorKind;
319
+ /** Optional tap handler (surfaces detail — PR history / alert / info). */
320
+ onPress?: () => void;
321
+ className?: string;
128
322
  }
129
- declare function SetRow({ mode, setNumber, previous, reps, weight, rpe, unit, velocities, velocityZones, velocityLiveRepIndex, velocityExpanded, onVelocityToggle, setType, prBadges, isNextSet, targets, }: SetRowProps): react_jsx_runtime.JSX.Element;
323
+ /**
324
+ * A small circular outlined chip for an exercise heading. Presentational and
325
+ * static (chips are chrome — no pulse); the tap detail (tooltip/sheet) is wired
326
+ * by the consumer.
327
+ */
328
+ declare function ExerciseIndicator({ kind, onPress, className, ...props }: ExerciseIndicatorProps): react_jsx_runtime.JSX.Element;
130
329
 
131
- type ExerciseCardState = 'collapsed' | 'expanded' | 'upcoming';
132
330
  interface ExerciseCardProps {
133
331
  name: string;
134
- state: ExerciseCardState;
135
- onToggle: () => void;
332
+ /**
333
+ * The dimmed, not-yet-reached representation (prescription + previous-best line).
334
+ * Overrides the expand state — an upcoming card never expands.
335
+ */
336
+ upcoming?: boolean;
337
+ /** Controlled expand state. Omit to run uncontrolled (see {@link defaultExpanded}). */
338
+ expanded?: boolean;
339
+ /** Uncontrolled initial expand state. Default false. Ignored when `expanded` is set. */
340
+ defaultExpanded?: boolean;
341
+ /** Notified when the user toggles the card between collapsed and expanded. */
342
+ onExpandedChange?: (expanded: boolean) => void;
136
343
  onNavigateDetail?: () => void;
137
344
  summary?: {
138
345
  sets: number;
@@ -140,23 +347,38 @@ interface ExerciseCardProps {
140
347
  weight: number;
141
348
  unit: 'lbs' | 'kg';
142
349
  };
143
- e1rm?: {
144
- value: number;
145
- unit: 'lbs' | 'kg';
146
- };
147
350
  isPR?: boolean;
351
+ /** Collapsed glance: per-set logged velocities (drives the mini strips). */
148
352
  setVelocities?: number[][];
149
353
  /** Optional velocity-zone bands shared across this exercise's sets (WA bands). */
150
354
  velocityZones?: readonly VelocityZoneBandProp[];
355
+ /** Collapsed glance: total planned sets (placeholder strips fill the remainder). */
151
356
  totalPlannedSets?: number;
357
+ /** Expanded body: the per-set rows (done / live / todo). */
152
358
  sets?: SetRowProps[];
153
359
  tempo?: [number, number, number, number];
154
360
  prescription?: string;
155
361
  previousBest?: string;
156
362
  supersetPosition?: 'first' | 'last' | 'middle' | null;
157
363
  supersetColor?: string;
364
+ /** Expanded header per-set strip override; derived from `sets` when omitted. */
365
+ setStates?: SetStripSet[];
366
+ /** A small PR / issue / info chip in the title line (expanded header). */
367
+ indicator?: ExerciseIndicatorKind;
368
+ /** Expanded header strip height in px. Default 8. */
369
+ stripHeight?: number;
158
370
  }
159
- declare function ExerciseCard(props: ExerciseCardProps): react_jsx_runtime.JSX.Element;
371
+ /**
372
+ * The data-contract exercise card, in three representations:
373
+ * - `upcoming` — a dimmed, not-yet-reached row (prescription + previous best).
374
+ * - collapsed — a glance: name + summary + per-set velocity strips.
375
+ * - expanded — the unified card: the real {@link ExerciseCardHeading} header over
376
+ * the SET · REPS · LBS · RPE body (one {@link SetRow} per set).
377
+ *
378
+ * Expand is controlled (`expanded` + `onExpandedChange`) or uncontrolled
379
+ * (`defaultExpanded`, internal state). `upcoming` overrides expand.
380
+ */
381
+ declare function ExerciseCard({ upcoming, expanded, defaultExpanded, onExpandedChange, ...rest }: ExerciseCardProps): react_jsx_runtime.JSX.Element;
160
382
 
161
383
  type MesoStatus = 'completed' | 'current' | 'upcoming';
162
384
  interface Meso {
@@ -564,8 +786,11 @@ interface ExerciseDetailEntry {
564
786
  title: string;
565
787
  /** Collapsed summary (sets × reps @ weight). */
566
788
  summary?: ExerciseCardProps['summary'];
567
- /** Estimated one-rep max badge. */
568
- e1rm?: ExerciseCardProps['e1rm'];
789
+ /** Estimated one-rep max, feeding the page's best-e1RM stat. */
790
+ e1rm?: {
791
+ value: number;
792
+ unit: 'lbs' | 'kg';
793
+ };
569
794
  /** Flags a personal-record entry. */
570
795
  isPR?: boolean;
571
796
  /** Prescribed tempo, revealed when expanded. */
@@ -681,8 +906,6 @@ interface ActiveWorkoutExercise {
681
906
  totalPlannedSets: number;
682
907
  /** Collapsed summary (sets × reps @ weight) for a completed exercise. */
683
908
  summary?: ExerciseCardProps['summary'];
684
- /** Estimated one-rep max badge. */
685
- e1rm?: ExerciseCardProps['e1rm'];
686
909
  /** Flags a personal-record exercise. */
687
910
  isPR?: boolean;
688
911
  /** Prescribed tempo, revealed when expanded. */
@@ -768,8 +991,8 @@ declare function countCompletedSets(exercise: ActiveWorkoutExercise): number;
768
991
  declare function deriveWorkoutProgress(exercises: ActiveWorkoutExercise[]): WorkoutProgress;
769
992
  /** The active exercise anchors the bottom bar; find it, or null (pure). */
770
993
  declare function findActiveExercise(exercises: ActiveWorkoutExercise[]): ActiveWorkoutExercise | null;
771
- /** Map an exercise's status + focus onto an `ExerciseCard` visual state (pure). */
772
- declare function statusToCardState(status: ActiveExerciseStatus, focused: boolean): ExerciseCardState;
994
+ /** Whether an exercise renders as the dimmed, not-yet-reached representation (pure). */
995
+ declare function isUpcomingExercise(status: ActiveExerciseStatus): boolean;
773
996
  /** Project an exercise onto ExerciseCard props, wiring zoom focus (pure). */
774
997
  declare function toActiveCardProps(exercise: ActiveWorkoutExercise, focused: boolean, onToggle: () => void, supersetPosition?: ExerciseCardProps['supersetPosition'], supersetColor?: string): ExerciseCardProps;
775
998
  /** Fold consecutive same-superset exercises into render groups (pure). */
@@ -788,4 +1011,4 @@ declare function groupExercises(exercises: ActiveWorkoutExercise[], supersets: A
788
1011
  */
789
1012
  declare function ActiveWorkoutPage({ title, subtitle, exercises, supersets, input, rest, initialResting, className, ...props }: ActiveWorkoutPageProps): react_jsx_runtime.JSX.Element;
790
1013
 
791
- export { type WorkoutCardProps as $, type ActiveExerciseStatus as A, type PlanWorkout as B, CapacityBandChart as C, PrBadge as D, ExerciseCard as E, type PrBadgeProps as F, type ProgramBreadcrumb as G, type ProgramNavLevel as H, type ProgramPlanningPageProps as I, type ProgramSelection as J, type SetRowMode as K, type SetRowProps as L, type Meso as M, StrengthTrendChart as N, type StrengthTrendChartMesoBoundary as O, type PRType as P, type StrengthTrendChartProps as Q, type StrengthTrendDataPoint as R, SetRow as S, VelocityStrip as T, type VelocityStripProps as U, type VbtSummary as V, type VelocityZoneBandProp as W, WeekRow as X, type WeekRowProps as Y, type WeekRowWorkout as Z, WorkoutCard as _, type ActiveWorkoutExercise as a, type WorkoutDot as a0, type WorkoutDotStatus as a1, type WorkoutGroup as a2, type WorkoutMuscleGroup as a3, type WorkoutMuscleVolumeStatus as a4, WorkoutPill as a5, type WorkoutPillProps as a6, type WorkoutPillStatus as a7, type WorkoutProgress as a8, type WorkoutStatus as a9, calculateMeanVelocity as aa, calculateVelocityLoss as ab, getVelocityZoneColor as ac, getVelocityZoneName as ad, ActiveWorkoutPage as ae, EXERCISE_DETAIL_TABS as af, ExerciseDetailPage as ag, ProgramPlanningPage as ah, buildBreadcrumbs as ai, countCompletedSets as aj, deriveExerciseStats as ak, deriveNavLevel as al, deriveWorkoutProgress as am, findActiveExercise as an, findMeso as ao, findWeek as ap, findWorkout as aq, groupExercises as ar, statusToCardState as as, summarizeVbt as at, toActiveCardProps as au, toExerciseCardProps as av, toProgressBarMesos as aw, type ActiveWorkoutInput as b, type ActiveWorkoutPageProps as c, type ActiveWorkoutRest as d, type ActiveWorkoutSuperset as e, type CapacityBandChartProps as f, type CapacityBandDataPoint as g, type CapacityBandProjection as h, type ExerciseCardProps as i, type ExerciseCardState as j, type ExerciseDetailEntry as k, type ExerciseDetailHeader as l, type ExerciseDetailPageProps as m, type ExerciseDetailStats as n, type ExerciseDetailTab as o, type ExerciseTrend as p, type ExerciseVbt as q, type ExerciseVbtSet as r, MesoCard as s, type MesoCardProps as t, MesoProgressBar as u, type MesoProgressBarProps as v, type MesoStatus as w, type MesoVolumeHeatmapEntry as x, type PlanMeso as y, type PlanWeek as z };
1014
+ export { VelocityStrip as $, type ActiveExerciseStatus as A, type PlanWeek as B, CapacityBandChart as C, type PlanWorkout as D, type ExerciseIndicatorKind as E, type ProgramBreadcrumb as F, type ProgramNavLevel as G, type ProgramPlanningPageProps as H, INDICATOR_PRECEDENCE as I, type ProgramSelection as J, SET_STRIP_VARIABLE_COLOR as K, SET_STRIP_ZONES as L, type Meso as M, SetBar as N, type SetBarProps as O, type PlanMeso as P, SetRow as Q, type SetRowProps as R, type SetStripSet as S, type SetRowState as T, type SetRowUnit as U, StrengthTrendChart as V, type StrengthTrendChartMesoBoundary as W, type StrengthTrendChartProps as X, type StrengthTrendDataPoint as Y, type VbtSummary as Z, type VelocitySet as _, type ActiveWorkoutExercise as a, type VelocityStripProps as a0, type VelocityZoneBandProp as a1, WeekRow as a2, type WeekRowProps as a3, type WeekRowWorkout as a4, WorkoutCard as a5, type WorkoutCardProps as a6, type WorkoutDot as a7, type WorkoutDotStatus as a8, type WorkoutGroup as a9, groupExercises as aA, isUpcomingExercise as aB, summarizeVbt as aC, toActiveCardProps as aD, toExerciseCardProps as aE, toProgressBarMesos as aF, type WorkoutMuscleGroup as aa, type WorkoutMuscleVolumeStatus as ab, WorkoutPill as ac, type WorkoutPillProps as ad, type WorkoutPillStatus as ae, type WorkoutProgress as af, type WorkoutStatus as ag, calculateMeanVelocity as ah, calculateVelocityLoss as ai, getVelocityZoneColor as aj, getVelocityZoneName as ak, resolveIndicator as al, velocityZoneColor as am, ActiveWorkoutPage as an, EXERCISE_DETAIL_TABS as ao, ExerciseDetailPage as ap, ProgramPlanningPage as aq, buildBreadcrumbs as ar, countCompletedSets as as, deriveExerciseStats as at, deriveNavLevel as au, deriveWorkoutProgress as av, findActiveExercise as aw, findMeso as ax, findWeek as ay, findWorkout as az, type ActiveWorkoutInput as b, type ActiveWorkoutPageProps as c, type ActiveWorkoutRest as d, type ActiveWorkoutSuperset as e, type CapacityBandChartProps as f, type CapacityBandDataPoint as g, type CapacityBandProjection as h, ExerciseCard as i, type ExerciseCardProps as j, type ExerciseDetailEntry as k, type ExerciseDetailHeader as l, type ExerciseDetailPageProps as m, type ExerciseDetailStats as n, type ExerciseDetailTab as o, ExerciseIndicator as p, type ExerciseIndicatorProps as q, type ExerciseTrend as r, type ExerciseVbt as s, type ExerciseVbtSet as t, MesoCard as u, type MesoCardProps as v, MesoProgressBar as w, type MesoProgressBarProps as x, type MesoStatus as y, type MesoVolumeHeatmapEntry as z };
package/dist/pages.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ActiveExerciseStatus, a as ActiveWorkoutExercise, b as ActiveWorkoutInput, ae as ActiveWorkoutPage, c as ActiveWorkoutPageProps, d as ActiveWorkoutRest, e as ActiveWorkoutSuperset, af as EXERCISE_DETAIL_TABS, k as ExerciseDetailEntry, l as ExerciseDetailHeader, ag as ExerciseDetailPage, m as ExerciseDetailPageProps, n as ExerciseDetailStats, o as ExerciseDetailTab, p as ExerciseTrend, q as ExerciseVbt, r as ExerciseVbtSet, y as PlanMeso, z as PlanWeek, B as PlanWorkout, G as ProgramBreadcrumb, H as ProgramNavLevel, ah as ProgramPlanningPage, I as ProgramPlanningPageProps, J as ProgramSelection, V as VbtSummary, a2 as WorkoutGroup, a8 as WorkoutProgress, ai as buildBreadcrumbs, aj as countCompletedSets, ak as deriveExerciseStats, al as deriveNavLevel, am as deriveWorkoutProgress, an as findActiveExercise, ao as findMeso, ap as findWeek, aq as findWorkout, ar as groupExercises, as as statusToCardState, at as summarizeVbt, au as toActiveCardProps, av as toExerciseCardProps, aw as toProgressBarMesos } from './pages-MO0JCySL.mjs';
1
+ export { A as ActiveExerciseStatus, a as ActiveWorkoutExercise, b as ActiveWorkoutInput, an as ActiveWorkoutPage, c as ActiveWorkoutPageProps, d as ActiveWorkoutRest, e as ActiveWorkoutSuperset, ao as EXERCISE_DETAIL_TABS, k as ExerciseDetailEntry, l as ExerciseDetailHeader, ap as ExerciseDetailPage, m as ExerciseDetailPageProps, n as ExerciseDetailStats, o as ExerciseDetailTab, r as ExerciseTrend, s as ExerciseVbt, t as ExerciseVbtSet, P as PlanMeso, B as PlanWeek, D as PlanWorkout, F as ProgramBreadcrumb, G as ProgramNavLevel, aq as ProgramPlanningPage, H as ProgramPlanningPageProps, J as ProgramSelection, Z as VbtSummary, a9 as WorkoutGroup, af as WorkoutProgress, ar as buildBreadcrumbs, as as countCompletedSets, at as deriveExerciseStats, au as deriveNavLevel, av as deriveWorkoutProgress, aw as findActiveExercise, ax as findMeso, ay as findWeek, az as findWorkout, aA as groupExercises, aB as isUpcomingExercise, aC as summarizeVbt, aD as toActiveCardProps, aE as toExerciseCardProps, aF as toProgressBarMesos } from './pages-8u_4WbL-.mjs';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react-native';
4
4
  import './MesoStatusCard-CQk71hSi.mjs';
package/dist/pages.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ActiveExerciseStatus, a as ActiveWorkoutExercise, b as ActiveWorkoutInput, ae as ActiveWorkoutPage, c as ActiveWorkoutPageProps, d as ActiveWorkoutRest, e as ActiveWorkoutSuperset, af as EXERCISE_DETAIL_TABS, k as ExerciseDetailEntry, l as ExerciseDetailHeader, ag as ExerciseDetailPage, m as ExerciseDetailPageProps, n as ExerciseDetailStats, o as ExerciseDetailTab, p as ExerciseTrend, q as ExerciseVbt, r as ExerciseVbtSet, y as PlanMeso, z as PlanWeek, B as PlanWorkout, G as ProgramBreadcrumb, H as ProgramNavLevel, ah as ProgramPlanningPage, I as ProgramPlanningPageProps, J as ProgramSelection, V as VbtSummary, a2 as WorkoutGroup, a8 as WorkoutProgress, ai as buildBreadcrumbs, aj as countCompletedSets, ak as deriveExerciseStats, al as deriveNavLevel, am as deriveWorkoutProgress, an as findActiveExercise, ao as findMeso, ap as findWeek, aq as findWorkout, ar as groupExercises, as as statusToCardState, at as summarizeVbt, au as toActiveCardProps, av as toExerciseCardProps, aw as toProgressBarMesos } from './pages-D7Jlssvp.js';
1
+ export { A as ActiveExerciseStatus, a as ActiveWorkoutExercise, b as ActiveWorkoutInput, an as ActiveWorkoutPage, c as ActiveWorkoutPageProps, d as ActiveWorkoutRest, e as ActiveWorkoutSuperset, ao as EXERCISE_DETAIL_TABS, k as ExerciseDetailEntry, l as ExerciseDetailHeader, ap as ExerciseDetailPage, m as ExerciseDetailPageProps, n as ExerciseDetailStats, o as ExerciseDetailTab, r as ExerciseTrend, s as ExerciseVbt, t as ExerciseVbtSet, P as PlanMeso, B as PlanWeek, D as PlanWorkout, F as ProgramBreadcrumb, G as ProgramNavLevel, aq as ProgramPlanningPage, H as ProgramPlanningPageProps, J as ProgramSelection, Z as VbtSummary, a9 as WorkoutGroup, af as WorkoutProgress, ar as buildBreadcrumbs, as as countCompletedSets, at as deriveExerciseStats, au as deriveNavLevel, av as deriveWorkoutProgress, aw as findActiveExercise, ax as findMeso, ay as findWeek, az as findWorkout, aA as groupExercises, aB as isUpcomingExercise, aC as summarizeVbt, aD as toActiveCardProps, aE as toExerciseCardProps, aF as toProgressBarMesos } from './pages-DaWiBOGa.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react-native';
4
4
  import './MesoStatusCard-CQk71hSi.js';