@titan-design/react-ui 0.5.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 (307) hide show
  1. package/dist/bodymap.js +241 -189
  2. package/dist/bodymap.js.map +1 -1
  3. package/dist/bodymap.mjs +241 -189
  4. package/dist/bodymap.mjs.map +1 -1
  5. package/dist/index.d.mts +1017 -130
  6. package/dist/index.d.ts +1017 -130
  7. package/dist/index.js +3058 -1090
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +2992 -1091
  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 +1797 -1292
  16. package/dist/pages.js.map +1 -1
  17. package/dist/pages.mjs +1797 -1292
  18. package/dist/pages.mjs.map +1 -1
  19. package/dist/theme/index.d.mts +464 -268
  20. package/dist/theme/index.d.ts +464 -268
  21. package/dist/theme/index.js +303 -191
  22. package/dist/theme/index.js.map +1 -1
  23. package/dist/theme/index.mjs +295 -192
  24. package/dist/theme/index.mjs.map +1 -1
  25. package/dist/theme/tokens-css.js +160 -143
  26. package/dist/theme/tokens-css.js.map +1 -1
  27. package/dist/theme/tokens-css.mjs +160 -143
  28. package/dist/theme/tokens-css.mjs.map +1 -1
  29. package/package.json +3 -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 +83 -7
  34. package/src/components/custom/DateTime/DateTime.test.tsx +29 -3
  35. package/src/components/custom/DateTime/DateTime.tsx +55 -15
  36. package/src/components/custom/EmptyState/EmptyState.stories.tsx +1 -1
  37. package/src/components/custom/Gauge/Gauge.stories.tsx +1 -1
  38. package/src/components/custom/Gauge/Gauge.test.tsx +2 -2
  39. package/src/components/custom/Gauge/Gauge.tsx +6 -3
  40. package/src/components/custom/Metric/Metric.stories.tsx +1 -1
  41. package/src/components/custom/Scatter/Scatter.stories.tsx +1 -1
  42. package/src/components/custom/Scatter/Scatter.tsx +3 -5
  43. package/src/components/custom/Sidebar/Sidebar.stories.tsx +1 -1
  44. package/src/components/custom/Table/Table.stories.tsx +1 -1
  45. package/src/components/custom/TimerReadout/TimerReadout.stories.tsx +62 -0
  46. package/src/components/custom/TimerReadout/TimerReadout.test.tsx +72 -0
  47. package/src/components/custom/TimerReadout/TimerReadout.tsx +75 -0
  48. package/src/components/custom/TimerReadout/index.ts +1 -0
  49. package/src/components/custom/Treemap/Treemap.stories.tsx +1 -1
  50. package/src/components/custom/Treemap/Treemap.tsx +3 -5
  51. package/src/components/custom/Typography/Typography.stories.tsx +46 -28
  52. package/src/components/custom/Typography/Typography.test.tsx +13 -3
  53. package/src/components/custom/Typography/Typography.tsx +5 -0
  54. package/src/components/custom/Workout/ActiveWorkoutPage.stories.tsx +21 -13
  55. package/src/components/custom/Workout/ActiveWorkoutPage.test.tsx +16 -13
  56. package/src/components/custom/Workout/ActiveWorkoutPage.tsx +11 -16
  57. package/src/components/custom/Workout/BaseBadge.stories.tsx +1 -1
  58. package/src/components/custom/Workout/BodyMap.stories.tsx +1 -1
  59. package/src/components/custom/Workout/BodyMap.tsx +6 -3
  60. package/src/components/custom/Workout/BodyMapDetailPanel.stories.tsx +1 -1
  61. package/src/components/custom/Workout/BodyMapDetailPanel.tsx +6 -3
  62. package/src/components/custom/Workout/CapacityBandChart.stories.tsx +1 -1
  63. package/src/components/custom/Workout/CapacityBandChart.test.tsx +2 -2
  64. package/src/components/custom/Workout/CapacityBandChart.tsx +9 -6
  65. package/src/components/custom/Workout/DeviationBar.stories.tsx +1 -1
  66. package/src/components/custom/Workout/DeviationBar.test.tsx +1 -1
  67. package/src/components/custom/Workout/DeviationBar.tsx +7 -4
  68. package/src/components/custom/Workout/ExerciseCard.stories.tsx +51 -66
  69. package/src/components/custom/Workout/ExerciseCard.test.tsx +146 -143
  70. package/src/components/custom/Workout/ExerciseCard.tsx +176 -198
  71. package/src/components/custom/Workout/ExerciseCardHeading.stories.tsx +99 -0
  72. package/src/components/custom/Workout/ExerciseCardHeading.test.tsx +72 -0
  73. package/src/components/custom/Workout/ExerciseCardHeading.tsx +43 -0
  74. package/src/components/custom/Workout/ExerciseCardUnified.stories.tsx +151 -0
  75. package/src/components/custom/Workout/ExerciseDetailPage.stories.tsx +5 -3
  76. package/src/components/custom/Workout/ExerciseDetailPage.test.tsx +4 -4
  77. package/src/components/custom/Workout/ExerciseDetailPage.tsx +6 -6
  78. package/src/components/custom/Workout/ExerciseHeading.stories.tsx +81 -0
  79. package/src/components/custom/Workout/ExerciseHeading.test.tsx +77 -0
  80. package/src/components/custom/Workout/ExerciseHeading.tsx +85 -0
  81. package/src/components/custom/Workout/ExerciseIndicator.stories.tsx +110 -0
  82. package/src/components/custom/Workout/ExerciseIndicator.test.tsx +93 -0
  83. package/src/components/custom/Workout/ExerciseIndicator.tsx +120 -0
  84. package/src/components/custom/Workout/FatigueMeter.stories.tsx +51 -0
  85. package/src/components/custom/Workout/FatigueMeter.test.tsx +73 -0
  86. package/src/components/custom/Workout/FatigueMeter.tsx +82 -0
  87. package/src/components/custom/Workout/InputBar.stories.tsx +1 -1
  88. package/src/components/custom/Workout/InputBar.tsx +2 -1
  89. package/src/components/custom/Workout/IntensityBar.stories.tsx +1 -1
  90. package/src/components/custom/Workout/IntensityBar.test.tsx +8 -8
  91. package/src/components/custom/Workout/IntensityBar.tsx +10 -6
  92. package/src/components/custom/Workout/LiveAuraFrame.stories.tsx +153 -0
  93. package/src/components/custom/Workout/LiveAuraFrame.test.tsx +74 -0
  94. package/src/components/custom/Workout/LiveAuraFrame.tsx +105 -0
  95. package/src/components/custom/Workout/MesoCard.stories.tsx +1 -1
  96. package/src/components/custom/Workout/MesoCard.tsx +8 -3
  97. package/src/components/custom/Workout/MesoProgressBar.stories.tsx +1 -1
  98. package/src/components/custom/Workout/MesoProgressBar.test.tsx +1 -1
  99. package/src/components/custom/Workout/MesoProgressBar.tsx +3 -2
  100. package/src/components/custom/Workout/MesoStatusCard.stories.tsx +1 -1
  101. package/src/components/custom/Workout/MesoStatusCard.tsx +20 -13
  102. package/src/components/custom/Workout/MetricTiles.stories.tsx +60 -0
  103. package/src/components/custom/Workout/MetricTiles.test.tsx +58 -0
  104. package/src/components/custom/Workout/MetricTiles.tsx +48 -0
  105. package/src/components/custom/Workout/MuscleGroupChip.stories.tsx +1 -1
  106. package/src/components/custom/Workout/MuscleGroupChip.tsx +7 -4
  107. package/src/components/custom/Workout/PlaceholderStrip.stories.tsx +1 -1
  108. package/src/components/custom/Workout/PrBadge.stories.tsx +1 -1
  109. package/src/components/custom/Workout/PrBadge.tsx +5 -2
  110. package/src/components/custom/Workout/PrHistoryModal.stories.tsx +1 -1
  111. package/src/components/custom/Workout/PrHistoryModal.tsx +4 -3
  112. package/src/components/custom/Workout/ProgramPlanningPage.stories.tsx +4 -16
  113. package/src/components/custom/Workout/ProgramPlanningPage.tsx +10 -7
  114. package/src/components/custom/Workout/README.md +146 -4
  115. package/src/components/custom/Workout/ReadinessCheck.stories.tsx +1 -1
  116. package/src/components/custom/Workout/ReadinessCheck.tsx +7 -4
  117. package/src/components/custom/Workout/RestTimer.stories.tsx +1 -1
  118. package/src/components/custom/Workout/RestTimer.tsx +17 -11
  119. package/src/components/custom/Workout/RowInventory.stories.tsx +405 -0
  120. package/src/components/custom/Workout/S3FullRail.stories.tsx +34 -0
  121. package/src/components/custom/Workout/S3SessionPace.stories.tsx +95 -0
  122. package/src/components/custom/Workout/S3SessionRailHeading.stories.tsx +61 -0
  123. package/src/components/custom/Workout/S3SetTypes.stories.tsx +176 -0
  124. package/src/components/custom/Workout/S3WorkoutExpansion.stories.tsx +240 -0
  125. package/src/components/custom/Workout/ScheduleTiles.stories.tsx +40 -0
  126. package/src/components/custom/Workout/ScheduleTiles.test.tsx +34 -0
  127. package/src/components/custom/Workout/ScheduleTiles.tsx +70 -0
  128. package/src/components/custom/Workout/SegmentedBar.stories.tsx +99 -0
  129. package/src/components/custom/Workout/SegmentedBar.test.tsx +77 -0
  130. package/src/components/custom/Workout/SegmentedBar.tsx +172 -0
  131. package/src/components/custom/Workout/SegmentedProgressBar.stories.tsx +50 -0
  132. package/src/components/custom/Workout/SegmentedProgressBar.test.tsx +80 -0
  133. package/src/components/custom/Workout/SegmentedProgressBar.tsx +67 -0
  134. package/src/components/custom/Workout/SessionHeader.stories.tsx +121 -0
  135. package/src/components/custom/Workout/SessionHeader.test.tsx +122 -0
  136. package/src/components/custom/Workout/SessionHeader.tsx +152 -0
  137. package/src/components/custom/Workout/SessionRail.stories.tsx +153 -0
  138. package/src/components/custom/Workout/SessionRail.test.tsx +86 -0
  139. package/src/components/custom/Workout/SessionRail.tsx +126 -0
  140. package/src/components/custom/Workout/SetBar.stories.tsx +124 -0
  141. package/src/components/custom/Workout/SetBar.test.tsx +123 -0
  142. package/src/components/custom/Workout/SetBar.tsx +171 -0
  143. package/src/components/custom/Workout/SetRow.stories.tsx +50 -100
  144. package/src/components/custom/Workout/SetRow.test.tsx +94 -166
  145. package/src/components/custom/Workout/SetRow.tsx +170 -232
  146. package/src/components/custom/Workout/SetStrip.stories.tsx +154 -0
  147. package/src/components/custom/Workout/SetStrip.test.tsx +109 -0
  148. package/src/components/custom/Workout/SetStrip.tsx +71 -0
  149. package/src/components/custom/Workout/SetTableHeader.stories.tsx +66 -0
  150. package/src/components/custom/Workout/SetTableHeader.test.tsx +47 -0
  151. package/src/components/custom/Workout/SetTableHeader.tsx +88 -0
  152. package/src/components/custom/Workout/SetsRepsLoad.stories.tsx +47 -0
  153. package/src/components/custom/Workout/SetsRepsLoad.test.tsx +44 -0
  154. package/src/components/custom/Workout/SetsRepsLoad.tsx +52 -0
  155. package/src/components/custom/Workout/Sparkline.stories.tsx +1 -1
  156. package/src/components/custom/Workout/Sparkline.tsx +2 -1
  157. package/src/components/custom/Workout/StatusDot.stories.tsx +1 -1
  158. package/src/components/custom/Workout/StatusDot.test.tsx +2 -2
  159. package/src/components/custom/Workout/StatusDot.tsx +12 -9
  160. package/src/components/custom/Workout/StatusPill.stories.tsx +59 -0
  161. package/src/components/custom/Workout/StatusPill.test.tsx +63 -0
  162. package/src/components/custom/Workout/StatusPill.tsx +88 -0
  163. package/src/components/custom/Workout/StrengthTrendChart.stories.tsx +1 -1
  164. package/src/components/custom/Workout/StrengthTrendChart.tsx +9 -6
  165. package/src/components/custom/Workout/SupersetWrapper.stories.tsx +1 -1
  166. package/src/components/custom/Workout/SupersetWrapper.tsx +2 -1
  167. package/src/components/custom/Workout/TempoBar.stories.tsx +1 -1
  168. package/src/components/custom/Workout/TempoDisplay.stories.tsx +12 -1
  169. package/src/components/custom/Workout/TempoDisplay.tsx +29 -36
  170. package/src/components/custom/Workout/TrainingStatusPage.stories.tsx +1 -1
  171. package/src/components/custom/Workout/VelocityStrip.modalities.stories.tsx +254 -0
  172. package/src/components/custom/Workout/VelocityStrip.responsive.stories.tsx +145 -0
  173. package/src/components/custom/Workout/VelocityStrip.stories.tsx +129 -66
  174. package/src/components/custom/Workout/VelocityStrip.test.tsx +379 -144
  175. package/src/components/custom/Workout/VelocityStrip.tsx +508 -120
  176. package/src/components/custom/Workout/VolumeLandmarkBar.stories.tsx +73 -0
  177. package/src/components/custom/Workout/VolumeLandmarkBar.test.tsx +119 -0
  178. package/src/components/custom/Workout/VolumeLandmarkBar.tsx +154 -0
  179. package/src/components/custom/Workout/WeekRow.stories.tsx +1 -1
  180. package/src/components/custom/Workout/WeekRow.tsx +3 -2
  181. package/src/components/custom/Workout/WeightBadge.stories.tsx +1 -1
  182. package/src/components/custom/Workout/WeightBadge.tsx +6 -2
  183. package/src/components/custom/Workout/WorkoutCard.stories.tsx +2 -6
  184. package/src/components/custom/Workout/WorkoutCard.test.tsx +13 -46
  185. package/src/components/custom/Workout/WorkoutCard.tsx +5 -2
  186. package/src/components/custom/Workout/WorkoutPill.stories.tsx +1 -1
  187. package/src/components/custom/Workout/WorkoutPill.tsx +12 -8
  188. package/src/components/custom/Workout/ZoneTrack.stories.tsx +140 -0
  189. package/src/components/custom/Workout/ZoneTrack.test.tsx +200 -0
  190. package/src/components/custom/Workout/ZoneTrack.tsx +315 -0
  191. package/src/components/custom/Workout/icons.tsx +6 -67
  192. package/src/components/custom/Workout/index.ts +55 -2
  193. package/src/components/custom/Workout/metricText.stories.tsx +69 -0
  194. package/src/components/custom/Workout/metricText.tsx +34 -0
  195. package/src/components/custom/Workout/paceTone.test.ts +29 -0
  196. package/src/components/custom/Workout/paceTone.ts +27 -0
  197. package/src/components/custom/Workout/setHeadingKit.tsx +177 -0
  198. package/src/components/custom/index.ts +1 -0
  199. package/src/components/custom/stepper/Stepper.stories.tsx +1 -1
  200. package/src/components/icons/SvgIcon.tsx +50 -0
  201. package/src/components/icons/icons.stories.tsx +122 -0
  202. package/src/components/icons/icons.test.tsx +73 -0
  203. package/src/components/icons/icons.tsx +153 -0
  204. package/src/components/icons/index.ts +4 -0
  205. package/src/components/index.ts +6 -0
  206. package/src/components/shell/BrandLockup.stories.tsx +27 -0
  207. package/src/components/shell/BrandLockup.test.tsx +23 -0
  208. package/src/components/shell/BrandLockup.tsx +47 -0
  209. package/src/components/shell/DashboardShell.stories.tsx +65 -0
  210. package/src/components/shell/DashboardShell.test.tsx +42 -0
  211. package/src/components/shell/DashboardShell.tsx +74 -0
  212. package/src/components/shell/DeviceIndicator.stories.tsx +28 -0
  213. package/src/components/shell/DeviceIndicator.test.tsx +26 -0
  214. package/src/components/shell/DeviceIndicator.tsx +52 -0
  215. package/src/components/shell/DeviceMenu.stories.tsx +47 -0
  216. package/src/components/shell/DeviceMenu.test.tsx +40 -0
  217. package/src/components/shell/DeviceMenu.tsx +65 -0
  218. package/src/components/shell/DeviceRow.stories.tsx +38 -0
  219. package/src/components/shell/DeviceRow.test.tsx +37 -0
  220. package/src/components/shell/DeviceRow.tsx +58 -0
  221. package/src/components/shell/NavItem.stories.tsx +52 -0
  222. package/src/components/shell/NavItem.test.tsx +35 -0
  223. package/src/components/shell/NavItem.tsx +75 -0
  224. package/src/components/shell/README.md +116 -0
  225. package/src/components/shell/SessionRailSpecimen.stories.tsx +753 -0
  226. package/src/components/shell/SessionStatePill.stories.tsx +27 -0
  227. package/src/components/shell/SessionStatePill.test.tsx +25 -0
  228. package/src/components/shell/SessionStatePill.tsx +46 -0
  229. package/src/components/shell/SideNav.stories.tsx +81 -0
  230. package/src/components/shell/SideNav.test.tsx +51 -0
  231. package/src/components/shell/SideNav.tsx +74 -0
  232. package/src/components/shell/TopBar.stories.tsx +49 -0
  233. package/src/components/shell/TopBar.test.tsx +36 -0
  234. package/src/components/shell/TopBar.tsx +89 -0
  235. package/src/components/shell/index.ts +13 -0
  236. package/src/components/ui/alert/Alert.stories.tsx +1 -1
  237. package/src/components/ui/autocomplete/Autocomplete.stories.tsx +1 -1
  238. package/src/components/ui/avatar/Avatar.stories.tsx +1 -1
  239. package/src/components/ui/badge/Badge.stories.tsx +1 -1
  240. package/src/components/ui/breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  241. package/src/components/ui/button/Button.stories.tsx +1 -1
  242. package/src/components/ui/card/Card.stories.tsx +1 -1
  243. package/src/components/ui/checkbox/Checkbox.stories.tsx +1 -1
  244. package/src/components/ui/chip/Chip.stories.tsx +1 -1
  245. package/src/components/ui/collapse/Collapse.stories.tsx +1 -1
  246. package/src/components/ui/data-row/DataRow.stories.tsx +1 -1
  247. package/src/components/ui/divider/Divider.stories.tsx +1 -1
  248. package/src/components/ui/drawer/Drawer.stories.tsx +1 -1
  249. package/src/components/ui/form-field/FormField.stories.tsx +1 -1
  250. package/src/components/ui/help-tip/HelpTip.stories.tsx +1 -1
  251. package/src/components/ui/icon-box/IconBox.stories.tsx +1 -1
  252. package/src/components/ui/index.ts +1 -0
  253. package/src/components/ui/indicator/Indicator.stories.tsx +38 -2
  254. package/src/components/ui/indicator/Indicator.test.tsx +20 -1
  255. package/src/components/ui/indicator/Indicator.tsx +50 -6
  256. package/src/components/ui/indicator/index.ts +1 -1
  257. package/src/components/ui/input/Input.stories.tsx +1 -1
  258. package/src/components/ui/link/Link.stories.tsx +1 -1
  259. package/src/components/ui/list-item/ListItem.stories.tsx +1 -1
  260. package/src/components/ui/menu/Menu.stories.tsx +1 -1
  261. package/src/components/ui/modal/Modal.stories.tsx +1 -1
  262. package/src/components/ui/pill/Pill.stories.tsx +1 -1
  263. package/src/components/ui/popover/Popover.stories.tsx +1 -1
  264. package/src/components/ui/progress/Progress.stories.tsx +1 -1
  265. package/src/components/ui/radio/Radio.stories.tsx +1 -1
  266. package/src/components/ui/section/Section.stories.tsx +1 -1
  267. package/src/components/ui/select/Select.stories.tsx +1 -1
  268. package/src/components/ui/skeleton/Skeleton.stories.tsx +1 -1
  269. package/src/components/ui/spinner/Spinner.stories.tsx +1 -1
  270. package/src/components/ui/spinner/Spinner.tsx +3 -2
  271. package/src/components/ui/stack/Stack.stories.tsx +1 -1
  272. package/src/components/ui/surface/Surface.stories.tsx +1 -1
  273. package/src/components/ui/switch/Switch.stories.tsx +1 -1
  274. package/src/components/ui/tabs/Tabs.stories.tsx +1 -1
  275. package/src/components/ui/tile/Tile.stories.tsx +79 -0
  276. package/src/components/ui/tile/Tile.test.tsx +48 -0
  277. package/src/components/ui/tile/Tile.tsx +64 -0
  278. package/src/components/ui/tile/index.ts +2 -0
  279. package/src/components/ui/toast/Toast.stories.tsx +1 -1
  280. package/src/components/ui/toolbar-button/ToolbarButton.stories.tsx +1 -1
  281. package/src/components/ui/toolbar-button/ToolbarButton.tsx +2 -1
  282. package/src/components/ui/tooltip/Tooltip.stories.tsx +1 -1
  283. package/src/examples/react-hook-form/ReactHookForm.stories.tsx +1 -1
  284. package/src/hooks/index.ts +2 -0
  285. package/src/hooks/useTimer.test.ts +150 -0
  286. package/src/hooks/useTimer.ts +77 -0
  287. package/src/index.ts +3 -0
  288. package/src/pages.ts +1 -1
  289. package/src/stories/PresetShowcase.stories.tsx +1 -1
  290. package/src/stories/ThemePresets.stories.tsx +1 -1
  291. package/src/theme/ColorSystem.stories.tsx +323 -0
  292. package/src/theme/Colors.stories.tsx +74 -9
  293. package/src/theme/barrel.ts +1 -0
  294. package/src/theme/config.ts +20 -3
  295. package/src/theme/elevation.stories.tsx +1 -1
  296. package/src/theme/extracted-colors-dataviz.ts +21 -0
  297. package/src/theme/extracted-colors-ui.ts +20 -0
  298. package/src/theme/global.css +69 -53
  299. package/src/theme/gradients.test.ts +25 -0
  300. package/src/theme/gradients.ts +36 -0
  301. package/src/theme/shadows.stories.tsx +1 -1
  302. package/src/theme/tokens/primitives.test.ts +232 -0
  303. package/src/theme/tokens/primitives.ts +238 -87
  304. package/src/theme/tokens/semantic.ts +101 -81
  305. package/src/theme/workout-tokens.ts +26 -21
  306. package/src/utils/avatar-color.ts +3 -3
  307. package/tailwind.config.js +15 -3
package/dist/bodymap.js CHANGED
@@ -18,43 +18,20 @@ function cn(...inputs) {
18
18
 
19
19
  // src/theme/tokens/primitives.ts
20
20
  var primitiveColors = {
21
- // Blue scale (primary brand)
21
+ // Blue scale
22
22
  blue: {
23
23
  400: "#60A5FA",
24
24
  600: "#5048E5",
25
- // Primary main
26
25
  700: "#3832A0"},
27
- // Teal scale (success)
28
- teal: {
29
- 50: "#F0FDFA",
30
- 400: "#43C6B7",
31
- // Success light
32
- 500: "#14B8A6",
33
- 700: "#0E8074"},
34
- // Red scale (error)
26
+ // Red scale
35
27
  red: {
36
- 50: "#FEF2F2",
37
- 400: "#DA6868",
38
- // Error light
39
28
  500: "#EF4444",
40
- 600: "#D14343",
41
- // Error main
42
- 700: "#922E2E"},
43
- // Amber scale (warning)
44
- amber: {
45
- 50: "#FFFBEB",
46
- 400: "#FFBF4C",
47
- // Warning light
48
- 500: "#FFB020",
49
- // Warning main
50
- 600: "#B27B16"},
51
- // Sky/Blue scale (info)
52
- sky: {
53
- 50: "#F0F9FF",
54
- 400: "#64B6F7",
55
- // Info light
56
- 500: "#2196F3",
57
- 700: "#0B79D0"},
29
+ 600: "#D14343"},
30
+ // Vivid red scale
31
+ redVivid: {
32
+ 400: "#FF6070",
33
+ 500: "#FF4757",
34
+ 700: "#C42539"},
58
35
  // Neutral/Gray scale
59
36
  neutral: {
60
37
  50: "#FAFAFA",
@@ -64,16 +41,9 @@ var primitiveColors = {
64
41
  500: "#6B7280",
65
42
  600: "#4B5563",
66
43
  900: "#111827"},
67
- // Orange scale (accent/brand color)
68
- accent: {
69
- 200: "#FF9630",
70
- 300: "#FF8500",
71
- 400: "#FF7900",
72
- 500: "#F56C00",
73
- 600: "#E06D10",
74
- 700: "#D0620C"},
75
44
  // Charcoal scale (dark backgrounds)
76
45
  charcoal: {
46
+ 200: "#3C3C3C",
77
47
  300: "#2C2C2C",
78
48
  400: "#1F1F1F",
79
49
  500: "#1C1C1C",
@@ -81,15 +51,59 @@ var primitiveColors = {
81
51
  700: "#161616",
82
52
  900: "#101010"
83
53
  },
84
- // Steel scale (cool accent)
85
- steel: {
86
- 300: "#678498",
87
- 400: "#557488",
88
- 500: "#406D87",
89
- 600: "#39617A",
90
- 700: "#32556D"},
91
54
  // Pure colors
92
55
  white: "#FFFFFF"};
56
+ var primitiveRamps = {
57
+ red: {
58
+ 50: "#FFF4F4",
59
+ 500: "#E05254",
60
+ 600: "#D14343",
61
+ // pin
62
+ 700: "#A4221C"},
63
+ orange: {
64
+ 200: "#FFC7A2",
65
+ 300: "#FFA063",
66
+ 400: "#FF7900",
67
+ // pin
68
+ 500: "#DA5F00",
69
+ 600: "#B94A00"},
70
+ amber: {
71
+ 50: "#FFF7DD",
72
+ 200: "#FFD352",
73
+ 300: "#F9B415",
74
+ 500: "#C27400"},
75
+ green: {
76
+ 50: "#E3FFEE",
77
+ 200: "#58F69E",
78
+ 300: "#2ED573",
79
+ 500: "#22A444",
80
+ 600: "#298732"},
81
+ cyan: {
82
+ 300: "#22D3EE",
83
+ // pin
84
+ 400: "#01B5D1",
85
+ 500: "#2697B7",
86
+ 600: "#307B9B",
87
+ 700: "#2A617F",
88
+ 800: "#22465F"},
89
+ blue: {
90
+ 50: "#EFF8FF",
91
+ 300: "#78C2FF",
92
+ 500: "#2196F3",
93
+ // pin
94
+ 600: "#1072CB"}};
95
+ var divergingScale = [
96
+ primitiveRamps.blue[500],
97
+ // under
98
+ primitiveRamps.cyan[300],
99
+ // maintenance
100
+ primitiveRamps.green[200],
101
+ // optimal (light center)
102
+ primitiveRamps.amber[300],
103
+ // approaching
104
+ primitiveRamps.red[600]
105
+ // over
106
+ ];
93
107
  var discreteRainbow = [
94
108
  "#E8ECFB",
95
109
  "#D9CCE3",
@@ -125,56 +139,46 @@ var discreteRainbow = [
125
139
  // src/theme/tokens/semantic.ts
126
140
  var semanticColorsLight = {
127
141
  // Brand colors (brand-*)
128
- "brand-primary": primitiveColors.accent[400],
129
- // #FF7900
130
- "brand-primary-light": primitiveColors.accent[200],
131
- // #FF9630
132
- "brand-primary-dark": primitiveColors.accent[700],
133
- // #D0620C
142
+ "brand-primary": primitiveRamps.orange[400],
143
+ "brand-primary-light": primitiveRamps.orange[300],
144
+ "brand-primary-dark": primitiveRamps.orange[500],
134
145
  "brand-primary-subtle": "rgba(255, 121, 0, 0.08)",
135
- "brand-primary-hover": primitiveColors.accent[500],
136
- "brand-primary-active": primitiveColors.accent[600],
137
- "brand-secondary": primitiveColors.steel[500],
138
- // #406D87
139
- "brand-secondary-light": primitiveColors.steel[300],
140
- // #678498
141
- "brand-secondary-dark": primitiveColors.steel[700],
142
- // #32556D
143
- "brand-secondary-subtle": "rgba(64, 109, 135, 0.08)",
144
- "brand-secondary-hover": primitiveColors.steel[600],
145
- "brand-secondary-active": primitiveColors.steel[700],
146
+ "brand-primary-hover": primitiveRamps.orange[500],
147
+ "brand-primary-active": primitiveRamps.orange[600],
148
+ "brand-secondary": primitiveRamps.cyan[600],
149
+ "brand-secondary-light": primitiveRamps.cyan[500],
150
+ "brand-secondary-dark": primitiveRamps.cyan[700],
151
+ "brand-secondary-subtle": "rgba(48, 123, 155, 0.08)",
152
+ "brand-secondary-hover": primitiveRamps.cyan[700],
153
+ "brand-secondary-active": primitiveRamps.cyan[800],
146
154
  // Text on brand backgrounds (on-*)
147
155
  "on-brand-primary": primitiveColors.white,
148
156
  "on-brand-secondary": primitiveColors.white,
149
157
  // Status colors (status-*)
150
- "status-success": primitiveColors.teal[500],
151
- // #14B8A6
152
- "status-success-light": primitiveColors.teal[400],
153
- // #43C6B7
154
- "status-success-dark": primitiveColors.teal[700],
155
- // #0E8074
156
- "status-success-subtle": primitiveColors.teal[50],
157
- "status-error": primitiveColors.red[600],
158
- // #D14343
159
- "status-error-light": primitiveColors.red[400],
160
- // #DA6868
161
- "status-error-dark": primitiveColors.red[700],
162
- // #922E2E
163
- "status-error-subtle": primitiveColors.red[50],
164
- "status-warning": primitiveColors.amber[500],
165
- // #FFB020
166
- "status-warning-light": primitiveColors.amber[400],
167
- // #FFBF4C
168
- "status-warning-dark": primitiveColors.amber[600],
169
- // #B27B16
170
- "status-warning-subtle": primitiveColors.amber[50],
171
- "status-info": primitiveColors.sky[500],
172
- // #2196F3
173
- "status-info-light": primitiveColors.sky[400],
174
- // #64B6F7
175
- "status-info-dark": primitiveColors.sky[700],
176
- // #0B79D0
177
- "status-info-subtle": primitiveColors.sky[50],
158
+ "status-success": primitiveRamps.green[300],
159
+ "status-success-light": primitiveRamps.green[200],
160
+ "status-success-dark": primitiveRamps.green[600],
161
+ "status-success-subtle": primitiveRamps.green[50],
162
+ // Live-session accent — its OWN role, decoupled from success so the two can diverge
163
+ "status-live": primitiveRamps.green[300],
164
+ "status-live-muted": primitiveRamps.green[500],
165
+ "status-error": primitiveRamps.red[600],
166
+ "status-error-light": primitiveRamps.red[500],
167
+ "status-error-dark": primitiveRamps.red[700],
168
+ "status-error-subtle": primitiveRamps.red[50],
169
+ "status-error-vivid": primitiveColors.redVivid[500],
170
+ // vivid alert red
171
+ "status-error-vivid-light": primitiveColors.redVivid[400],
172
+ "status-error-vivid-dark": primitiveColors.redVivid[700],
173
+ "status-error-vivid-subtle": "rgba(255, 71, 87, 0.12)",
174
+ "status-warning": primitiveRamps.amber[300],
175
+ "status-warning-light": primitiveRamps.amber[200],
176
+ "status-warning-dark": primitiveRamps.amber[500],
177
+ "status-warning-subtle": primitiveRamps.amber[50],
178
+ "status-info": primitiveRamps.blue[500],
179
+ "status-info-light": primitiveRamps.blue[300],
180
+ "status-info-dark": primitiveRamps.blue[600],
181
+ "status-info-subtle": primitiveRamps.blue[50],
178
182
  // Text on status backgrounds (on-status-*)
179
183
  "on-status-success": primitiveColors.white,
180
184
  "on-status-error": primitiveColors.white,
@@ -201,25 +205,25 @@ var semanticColorsLight = {
201
205
  // Data visualization colors (data-*)
202
206
  // First 10 colors from discrete rainbow optimized for charts
203
207
  "data-1": discreteRainbow[9],
204
- // #1965B0 - Blue
208
+ // Blue
205
209
  "data-2": discreteRainbow[14],
206
- // #4EB265 - Green
210
+ // Green
207
211
  "data-3": discreteRainbow[17],
208
- // #F7F056 - Yellow
212
+ // Yellow
209
213
  "data-4": discreteRainbow[25],
210
- // #DC050C - Red
214
+ // Red
211
215
  "data-5": discreteRainbow[8],
212
- // #882E72 - Purple
216
+ // Purple
213
217
  "data-6": discreteRainbow[20],
214
- // #F4A736 - Orange
218
+ // Orange
215
219
  "data-7": discreteRainbow[13],
216
- // #7BAFDE - Light Blue
220
+ // Light Blue
217
221
  "data-8": discreteRainbow[15],
218
- // #90C987 - Light Green
222
+ // Light Green
219
223
  "data-9": discreteRainbow[3],
220
- // #CAACCB - Lavender
224
+ // Lavender
221
225
  "data-10": discreteRainbow[22],
222
- // #EE8026 - Dark Orange
226
+ // Dark Orange
223
227
  // Text colors (text-*)
224
228
  "text-primary": "#121828",
225
229
  "text-secondary": "#65748B",
@@ -231,9 +235,9 @@ var semanticColorsLight = {
231
235
  // Surface colors (surface-*) - for elevated containers
232
236
  "surface-base": primitiveColors.white,
233
237
  "surface-elevated": primitiveColors.neutral[50],
234
- // #FAFAFA - slightly off-white for elevated cards
238
+ // slightly off-white for elevated cards
235
239
  "surface-raised": primitiveColors.neutral[100],
236
- // #F3F4F6 - light gray for raised cards
240
+ // light gray for raised cards
237
241
  "surface-overlay": primitiveColors.white,
238
242
  "surface-input": primitiveColors.neutral[50],
239
243
  // Input field background (filled variant)
@@ -245,6 +249,8 @@ var semanticColorsLight = {
245
249
  "border-default": "#E8E9EB",
246
250
  "border-subtle": primitiveColors.neutral[100],
247
251
  "border-strong": primitiveColors.neutral[300],
252
+ "border-prominent": primitiveColors.neutral[400],
253
+ // high-visibility divider
248
254
  "border-focus": primitiveColors.blue[600],
249
255
  "border-input": primitiveColors.neutral[300],
250
256
  // Input field border
@@ -269,37 +275,44 @@ var semanticColorsLight = {
269
275
  };
270
276
  var semanticColorsDark = {
271
277
  // Brand colors stay the same in dark mode
272
- "brand-primary": primitiveColors.accent[400],
273
- "brand-primary-light": primitiveColors.accent[200],
274
- "brand-primary-dark": primitiveColors.accent[700],
278
+ "brand-primary": primitiveRamps.orange[400],
279
+ "brand-primary-light": primitiveRamps.orange[300],
280
+ "brand-primary-dark": primitiveRamps.orange[500],
275
281
  "brand-primary-subtle": "rgba(255, 121, 0, 0.12)",
276
- "brand-primary-hover": primitiveColors.accent[300],
277
- "brand-primary-active": primitiveColors.accent[200],
278
- "brand-secondary": primitiveColors.steel[500],
279
- "brand-secondary-light": primitiveColors.steel[300],
280
- "brand-secondary-dark": primitiveColors.steel[700],
281
- "brand-secondary-subtle": "rgba(64, 109, 135, 0.12)",
282
- "brand-secondary-hover": primitiveColors.steel[400],
283
- "brand-secondary-active": primitiveColors.steel[300],
282
+ "brand-primary-hover": primitiveRamps.orange[300],
283
+ "brand-primary-active": primitiveRamps.orange[200],
284
+ "brand-secondary": primitiveRamps.cyan[600],
285
+ "brand-secondary-light": primitiveRamps.cyan[500],
286
+ "brand-secondary-dark": primitiveRamps.cyan[700],
287
+ "brand-secondary-subtle": "rgba(48, 123, 155, 0.12)",
288
+ "brand-secondary-hover": primitiveRamps.cyan[500],
289
+ "brand-secondary-active": primitiveRamps.cyan[400],
284
290
  // Text on brand backgrounds
285
291
  "on-brand-primary": primitiveColors.white,
286
292
  "on-brand-secondary": primitiveColors.white,
287
293
  // Status colors
288
- "status-success": primitiveColors.teal[500],
289
- "status-success-light": primitiveColors.teal[400],
290
- "status-success-dark": primitiveColors.teal[700],
291
- "status-success-subtle": "rgba(20, 184, 166, 0.12)",
292
- "status-error": primitiveColors.red[600],
293
- "status-error-light": primitiveColors.red[400],
294
- "status-error-dark": primitiveColors.red[700],
294
+ "status-success": primitiveRamps.green[300],
295
+ "status-success-light": primitiveRamps.green[200],
296
+ "status-success-dark": primitiveRamps.green[600],
297
+ "status-success-subtle": "rgba(46, 213, 115, 0.12)",
298
+ // Live-session accent — its OWN role, decoupled from success so the two can diverge
299
+ "status-live": primitiveRamps.green[300],
300
+ "status-live-muted": primitiveRamps.green[500],
301
+ "status-error": primitiveRamps.red[600],
302
+ "status-error-light": primitiveRamps.red[500],
303
+ "status-error-dark": primitiveRamps.red[700],
295
304
  "status-error-subtle": "rgba(209, 67, 67, 0.12)",
296
- "status-warning": primitiveColors.amber[500],
297
- "status-warning-light": primitiveColors.amber[400],
298
- "status-warning-dark": primitiveColors.amber[600],
299
- "status-warning-subtle": "rgba(255, 176, 32, 0.12)",
300
- "status-info": primitiveColors.sky[500],
301
- "status-info-light": primitiveColors.sky[400],
302
- "status-info-dark": primitiveColors.sky[700],
305
+ "status-error-vivid": primitiveColors.redVivid[500],
306
+ "status-error-vivid-light": primitiveColors.redVivid[400],
307
+ "status-error-vivid-dark": primitiveColors.redVivid[700],
308
+ "status-error-vivid-subtle": "rgba(255, 71, 87, 0.12)",
309
+ "status-warning": primitiveRamps.amber[300],
310
+ "status-warning-light": primitiveRamps.amber[200],
311
+ "status-warning-dark": primitiveRamps.amber[500],
312
+ "status-warning-subtle": "rgba(249, 180, 21, 0.12)",
313
+ "status-info": primitiveRamps.blue[500],
314
+ "status-info-light": primitiveRamps.blue[300],
315
+ "status-info-dark": primitiveRamps.blue[600],
303
316
  "status-info-subtle": "rgba(33, 150, 243, 0.12)",
304
317
  // Text on status backgrounds
305
318
  "on-status-success": primitiveColors.white,
@@ -341,29 +354,31 @@ var semanticColorsDark = {
341
354
  "text-link-hover": primitiveColors.blue[400],
342
355
  // Surface colors - dark backgrounds
343
356
  "surface-base": primitiveColors.charcoal[700],
344
- // #161616 - main surface
357
+ // main surface
345
358
  "surface-elevated": primitiveColors.charcoal[600],
346
- // #191919 - elevated surface
359
+ // elevated surface
347
360
  "surface-raised": primitiveColors.charcoal[500],
348
- // #1C1C1C - raised surface
361
+ // raised surface
349
362
  "surface-overlay": primitiveColors.charcoal[600],
350
- // #191919 - overlay surface
363
+ // overlay surface
351
364
  "surface-input": primitiveColors.charcoal[600],
352
- // #191919 - input surface
365
+ // input surface
353
366
  // Background colors
354
367
  "background-base": primitiveColors.charcoal[900],
355
- // #101010 - darkest charcoal
368
+ // darkest charcoal
356
369
  "background-default": primitiveColors.charcoal[700],
357
- // #161616 - main background
370
+ // main background
358
371
  "background-subtle": primitiveColors.charcoal[500],
359
- // #1C1C1C - subtle background
372
+ // subtle background
360
373
  // Border colors
361
374
  "border-default": primitiveColors.charcoal[400],
362
- // #1F1F1F - default border
375
+ // default border
363
376
  "border-subtle": primitiveColors.charcoal[500],
364
- // #1C1C1C - subtle border
377
+ // subtle border
365
378
  "border-strong": primitiveColors.charcoal[300],
366
- // #2C2C2C - strong border
379
+ // strong border
380
+ "border-prominent": primitiveColors.charcoal[200],
381
+ // high-visibility divider
367
382
  "border-focus": "#828DF8",
368
383
  "border-input": primitiveColors.neutral[600],
369
384
  "border-input-hover": primitiveColors.neutral[500],
@@ -378,7 +393,7 @@ var semanticColorsDark = {
378
393
  "interactive-disabled-text": "rgba(255, 255, 255, 0.26)",
379
394
  // Divider
380
395
  "divider": primitiveColors.charcoal[400],
381
- // #1F1F1F - divider color
396
+ // divider color
382
397
  // Avatar default
383
398
  "avatar-background": primitiveColors.neutral[600],
384
399
  "avatar-text": primitiveColors.white
@@ -394,21 +409,22 @@ function resolveColor(token, mode = "dark") {
394
409
 
395
410
  // src/theme/workout-tokens.ts
396
411
  var WORKOUT_TOKENS = {
397
- // BodyMap volume heatmap scale (drive dynamic SVG fills, so inline values).
398
- // Maps weekly-volume status against MEV/MAV/MRV landmarks to a fill color.
412
+ // BodyMap volume heatmap the canonical `divergingScale` (under optimal
413
+ // over): a true diverging shape with a light green center, cool-blue under-
414
+ // trained end and warm-red over-reaching end (colorblind-robust in lightness).
399
415
  heatmap: {
400
416
  none: "#E0E0E0",
401
- // gray — no training data
402
- under: "#4A90D9",
403
- // cool blue — below MEV
404
- maintenance: "#F5C842",
405
- // warm yellow — MEV to MAV
406
- productive: "#4CAF50",
407
- // green — MAV to MRV
408
- approaching: "#FFA502",
409
- // orange — near MRV
410
- over: "#FF6B35"
411
- // red-orange — over MRV
417
+ // no training data
418
+ under: divergingScale[0],
419
+ // below MEV
420
+ maintenance: divergingScale[1],
421
+ // MEV to MAV
422
+ productive: divergingScale[2],
423
+ // optimal center — MAV to MRV
424
+ approaching: divergingScale[3],
425
+ // near MRV
426
+ over: divergingScale[4]
427
+ // over MRV
412
428
  }};
413
429
 
414
430
  // src/components/custom/Workout/muscleTaxonomy.ts
@@ -614,6 +630,7 @@ var jsxs = wrapJsx(jsxRuntime.jsxs);
614
630
 
615
631
  // src/components/custom/Workout/BodyMap.tsx
616
632
  var Body = BodyHighlighter__default.default.default ?? BodyHighlighter__default.default;
633
+ var BRAND_PRIMARY = getSemanticColors("dark")["brand-primary"];
617
634
  var OUTLINE_FILL = "rgba(255,255,255,0.08)";
618
635
  var OUTLINE_BORDER = "rgba(255,255,255,0.12)";
619
636
  var BODY_SCALE = 0.8;
@@ -792,7 +809,7 @@ function ViewToggle({ view, onViewChange }) {
792
809
  borderRadius: 9999,
793
810
  backgroundColor: active ? "rgba(255,121,0,0.16)" : "transparent",
794
811
  borderWidth: 1,
795
- borderColor: active ? "#FF7900" : resolveColor("border-strong")
812
+ borderColor: active ? BRAND_PRIMARY : resolveColor("border-strong")
796
813
  },
797
814
  testID: `body-map-toggle-${side}`,
798
815
  children: /* @__PURE__ */ jsx(
@@ -802,7 +819,7 @@ function ViewToggle({ view, onViewChange }) {
802
819
  fontSize: 12,
803
820
  fontFamily: "Inter, sans-serif",
804
821
  fontWeight: active ? "700" : "500",
805
- color: active ? "#FF7900" : resolveColor("text-secondary"),
822
+ color: active ? BRAND_PRIMARY : resolveColor("text-secondary"),
806
823
  textTransform: "capitalize"
807
824
  },
808
825
  children: side
@@ -834,7 +851,7 @@ function MuscleButton({ entry, highlighted, onMusclePress }) {
834
851
  paddingVertical: 3,
835
852
  borderRadius: 9999,
836
853
  borderWidth: 1,
837
- borderColor: highlighted ? "#FF7900" : resolveColor("border-default")
854
+ borderColor: highlighted ? BRAND_PRIMARY : resolveColor("border-default")
838
855
  },
839
856
  testID: `body-map-muscle-${entry.key}`,
840
857
  children: [
@@ -873,9 +890,11 @@ var colorStyles = {
873
890
  default: "bg-text-tertiary",
874
891
  primary: "bg-brand-primary",
875
892
  success: "bg-status-success",
893
+ live: "bg-status-live",
876
894
  error: "bg-status-error",
877
895
  warning: "bg-status-warning",
878
- info: "bg-status-info"
896
+ info: "bg-status-info",
897
+ "error-vivid": "bg-status-error-vivid"
879
898
  };
880
899
  function Indicator({
881
900
  size = "sm",
@@ -883,14 +902,40 @@ function Indicator({
883
902
  customColor,
884
903
  glow = false,
885
904
  ring = false,
905
+ pulse = false,
886
906
  className,
887
907
  style,
888
908
  ...props
889
909
  }) {
910
+ const pulseMode = pulse === true ? "opacity" : pulse || false;
911
+ const colorClass = !customColor ? colorStyles[color] : void 0;
912
+ const colorStyle = customColor ? { backgroundColor: customColor } : void 0;
913
+ if (pulseMode === "ping") {
914
+ return /* @__PURE__ */ jsxs(reactNative.View, { className: cn("relative", sizeStyles[size], className), style, ...props, children: [
915
+ /* @__PURE__ */ jsx(
916
+ reactNative.View,
917
+ {
918
+ className: cn("absolute inset-0 rounded-full animate-ping", colorClass),
919
+ style: colorStyle
920
+ }
921
+ ),
922
+ /* @__PURE__ */ jsx(
923
+ reactNative.View,
924
+ {
925
+ className: cn(
926
+ "relative rounded-full",
927
+ sizeStyles[size],
928
+ colorClass,
929
+ ring && "border-2 border-background-base"
930
+ ),
931
+ style: colorStyle
932
+ }
933
+ )
934
+ ] });
935
+ }
890
936
  const dynamicStyle = {
891
937
  ...typeof style === "object" ? style : {},
892
- ...customColor ? { backgroundColor: customColor } : {},
893
- ...glow && !customColor ? {} : {},
938
+ ...colorStyle ?? {},
894
939
  ...glow && customColor ? { boxShadow: `0 0 6px ${customColor}` } : {}
895
940
  };
896
941
  return /* @__PURE__ */ jsx(
@@ -899,12 +944,14 @@ function Indicator({
899
944
  className: cn(
900
945
  "rounded-full shrink-0",
901
946
  sizeStyles[size],
902
- !customColor && colorStyles[color],
947
+ colorClass,
948
+ pulseMode === "opacity" && "animate-pulse",
903
949
  ring && "border-2 border-background-base",
904
- glow && !customColor && color === "success" && "shadow-[0_0_6px_rgba(20,184,166,0.6)]",
950
+ glow && !customColor && (color === "success" || color === "live") && "shadow-[0_0_6px_rgba(46,213,115,0.6)]",
905
951
  glow && !customColor && color === "error" && "shadow-[0_0_6px_rgba(239,68,68,0.6)]",
906
952
  glow && !customColor && color === "warning" && "shadow-[0_0_6px_rgba(245,158,11,0.6)]",
907
953
  glow && !customColor && color === "primary" && "shadow-[0_0_6px_rgba(255,121,0,0.6)]",
954
+ glow && !customColor && color === "error-vivid" && "shadow-[0_0_6px_rgba(255,71,87,0.6)]",
908
955
  className
909
956
  ),
910
957
  style: Object.keys(dynamicStyle).length > 0 ? dynamicStyle : style,
@@ -982,7 +1029,7 @@ function Badge({
982
1029
  }
983
1030
  );
984
1031
  }
985
- var BRAND_PRIMARY = "#FF7900";
1032
+ var BRAND_PRIMARY2 = getSemanticColors("dark")["brand-primary"];
986
1033
  function normalizeData(data, height) {
987
1034
  if (data.length === 0) return [];
988
1035
  const min = Math.min(...data);
@@ -1019,7 +1066,7 @@ function Sparkline({
1019
1066
  }
1020
1067
  );
1021
1068
  }
1022
- const resolvedColor = color ?? BRAND_PRIMARY;
1069
+ const resolvedColor = color ?? BRAND_PRIMARY2;
1023
1070
  const normalized = normalizeData(data, height);
1024
1071
  const stepX = data.length > 1 ? width / (data.length - 1) : 0;
1025
1072
  const dotSize = 3;
@@ -1135,8 +1182,9 @@ function Sparkline({
1135
1182
  }
1136
1183
 
1137
1184
  // src/components/custom/Workout/BodyMapDetailPanel.tsx
1138
- var BRAND_PRIMARY2 = "#FF7900";
1139
- var VOLUME_GRADIENT = "linear-gradient(90deg, #2196F3 0%, #14B8A6 50%, #D14343 100%)";
1185
+ var t = getSemanticColors("dark");
1186
+ var BRAND_PRIMARY3 = t["brand-primary"];
1187
+ var VOLUME_GRADIENT = `linear-gradient(90deg, ${t["status-info"]} 0%, ${t["status-success"]} 50%, ${t["status-error"]} 100%)`;
1140
1188
  var SLIDE_OFFSET = 400;
1141
1189
  var BACKDROP_OPACITY = 0.4;
1142
1190
  var STATUS_BADGE_COLOR = {
@@ -1534,7 +1582,7 @@ function BodyMapDetailPanel({
1534
1582
  borderColor: "rgba(255,121,0,0.3)"
1535
1583
  },
1536
1584
  testID: "body-map-detail-panel-view-exercises",
1537
- children: /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 13, fontFamily: "Inter, sans-serif", fontWeight: "700", color: BRAND_PRIMARY2 }, children: "View exercises" })
1585
+ children: /* @__PURE__ */ jsx(reactNative.Text, { style: { fontSize: 13, fontFamily: "Inter, sans-serif", fontWeight: "700", color: BRAND_PRIMARY3 }, children: "View exercises" })
1538
1586
  }
1539
1587
  )
1540
1588
  ]
@@ -2272,17 +2320,18 @@ function CardContent({ children, className }) {
2272
2320
  function CardFooter({ children, className }) {
2273
2321
  return /* @__PURE__ */ jsx(reactNative.View, { className: cn("px-6 py-4 flex-row items-center gap-2", className), children });
2274
2322
  }
2323
+ var t2 = getSemanticColors("dark");
2275
2324
  var solidVariantColors = {
2276
- success: "#14B8A6",
2277
- warning: "#FFB020",
2278
- error: "#D14343",
2325
+ success: t2["status-success"],
2326
+ warning: t2["status-warning"],
2327
+ error: t2["status-error"],
2279
2328
  neutral: "#6B7280"
2280
2329
  };
2281
2330
  var ringVariantStyles = {
2282
2331
  "on-track": {
2283
- backgroundColor: "rgba(20,184,166,0.15)",
2332
+ backgroundColor: "rgba(46,213,115,0.15)",
2284
2333
  borderWidth: 1,
2285
- borderColor: "rgba(20,184,166,0.3)"
2334
+ borderColor: "rgba(46,213,115,0.3)"
2286
2335
  },
2287
2336
  deviation: {
2288
2337
  backgroundColor: "rgba(245,158,11,0.15)",
@@ -2297,11 +2346,11 @@ var ringVariantStyles = {
2297
2346
  }
2298
2347
  };
2299
2348
  var glowStyles = {
2300
- success: { boxShadow: "0 0 4px rgba(20,184,166,0.4)" },
2349
+ success: { boxShadow: "0 0 4px rgba(46,213,115,0.4)" },
2301
2350
  warning: { boxShadow: "0 0 4px rgba(245,158,11,0.4)" },
2302
2351
  error: { boxShadow: "0 0 4px rgba(239,68,68,0.4)" },
2303
2352
  neutral: { boxShadow: "0 0 4px rgba(107,114,128,0.4)" },
2304
- "on-track": { boxShadow: "0 0 4px rgba(20,184,166,0.4)" },
2353
+ "on-track": { boxShadow: "0 0 4px rgba(46,213,115,0.4)" },
2305
2354
  deviation: { boxShadow: "0 0 4px rgba(245,158,11,0.4)" },
2306
2355
  future: { boxShadow: "0 0 4px rgba(107,114,128,0.4)" }
2307
2356
  };
@@ -2315,8 +2364,8 @@ var iconColors = {
2315
2364
  warning: "#6B4000",
2316
2365
  error: "#5C1A1A",
2317
2366
  neutral: "#D1D5DB",
2318
- "on-track": "#14B8A6",
2319
- deviation: "#FFB020",
2367
+ "on-track": t2["status-success"],
2368
+ deviation: t2["status-warning"],
2320
2369
  future: "#6B7280"
2321
2370
  };
2322
2371
  var sizeDimensions = {
@@ -2397,20 +2446,23 @@ function StatusDot({
2397
2446
  }
2398
2447
  return /* @__PURE__ */ jsx(reactNative.View, { className, ...props, children: dot });
2399
2448
  }
2449
+ var MESO_ACCENT_GRADIENT_DARK = primitiveRamps.orange[500];
2450
+ var MESO_ACCENT_GRADIENT_LIGHT = primitiveRamps.orange[300];
2400
2451
 
2401
2452
  // src/components/custom/Workout/MesoStatusCard.tsx
2402
- var BRAND_PRIMARY3 = "#FF7900";
2403
- var BRAND_PRIMARY_DARK = "#C45E00";
2404
- var BRAND_PRIMARY_LIGHT = "#FFB066";
2405
- var SUCCESS = "#14B8A6";
2406
- var WARNING = "#FFB020";
2407
- var ERROR = "#D14343";
2408
- var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY3, BRAND_PRIMARY_LIGHT];
2453
+ var t3 = getSemanticColors("dark");
2454
+ var BRAND_PRIMARY4 = t3["brand-primary"];
2455
+ var BRAND_PRIMARY_DARK = MESO_ACCENT_GRADIENT_DARK;
2456
+ var BRAND_PRIMARY_LIGHT = MESO_ACCENT_GRADIENT_LIGHT;
2457
+ var SUCCESS = t3["status-success"];
2458
+ var WARNING = t3["status-warning"];
2459
+ var ERROR = t3["status-error"];
2460
+ var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY4, BRAND_PRIMARY_LIGHT];
2409
2461
  var CARD_GRADIENT = `linear-gradient(135deg, ${resolveColor("surface-elevated")} 0%, ${resolveColor("surface-raised")} 100%)`;
2410
- var GAUGE_GRADIENT = "linear-gradient(90deg, rgba(20,184,166,0.25) 0%, rgba(255,176,32,0.25) 50%, rgba(209,67,67,0.25) 100%)";
2462
+ var GAUGE_GRADIENT = "linear-gradient(90deg, rgba(46,213,115,0.25) 0%, rgba(249,180,21,0.25) 50%, rgba(209,67,67,0.25) 100%)";
2411
2463
  var STATUS_VARIANTS = {
2412
- success: { bg: "rgba(20,184,166,0.15)", border: "rgba(20,184,166,0.3)", text: SUCCESS },
2413
- warning: { bg: "rgba(255,176,32,0.15)", border: "rgba(255,176,32,0.3)", text: WARNING },
2464
+ success: { bg: "rgba(46,213,115,0.15)", border: "rgba(46,213,115,0.3)", text: SUCCESS },
2465
+ warning: { bg: "rgba(249,180,21,0.15)", border: "rgba(249,180,21,0.3)", text: WARNING },
2414
2466
  error: { bg: "rgba(209,67,67,0.15)", border: "rgba(209,67,67,0.25)", text: ERROR }
2415
2467
  };
2416
2468
  function clamp012(value) {
@@ -2702,9 +2754,9 @@ function MesoStatusCard({
2702
2754
  reactNative.View,
2703
2755
  {
2704
2756
  style: {
2705
- backgroundColor: "rgba(255,176,32,0.06)",
2757
+ backgroundColor: "rgba(249,180,21,0.06)",
2706
2758
  borderWidth: 1,
2707
- borderColor: "rgba(255,176,32,0.15)",
2759
+ borderColor: "rgba(249,180,21,0.15)",
2708
2760
  borderRadius: 8,
2709
2761
  paddingVertical: 10,
2710
2762
  paddingHorizontal: 12
@@ -2730,9 +2782,9 @@ function MesoStatusCard({
2730
2782
  className: "flex-row items-center",
2731
2783
  style: {
2732
2784
  gap: 8,
2733
- backgroundColor: "rgba(20,184,166,0.06)",
2785
+ backgroundColor: "rgba(46,213,115,0.06)",
2734
2786
  borderWidth: 1,
2735
- borderColor: "rgba(20,184,166,0.2)",
2787
+ borderColor: "rgba(46,213,115,0.2)",
2736
2788
  borderRadius: 8,
2737
2789
  paddingVertical: 10,
2738
2790
  paddingHorizontal: 12