@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.mjs CHANGED
@@ -12,43 +12,20 @@ function cn(...inputs) {
12
12
 
13
13
  // src/theme/tokens/primitives.ts
14
14
  var primitiveColors = {
15
- // Blue scale (primary brand)
15
+ // Blue scale
16
16
  blue: {
17
17
  400: "#60A5FA",
18
18
  600: "#5048E5",
19
- // Primary main
20
19
  700: "#3832A0"},
21
- // Teal scale (success)
22
- teal: {
23
- 50: "#F0FDFA",
24
- 400: "#43C6B7",
25
- // Success light
26
- 500: "#14B8A6",
27
- 700: "#0E8074"},
28
- // Red scale (error)
20
+ // Red scale
29
21
  red: {
30
- 50: "#FEF2F2",
31
- 400: "#DA6868",
32
- // Error light
33
22
  500: "#EF4444",
34
- 600: "#D14343",
35
- // Error main
36
- 700: "#922E2E"},
37
- // Amber scale (warning)
38
- amber: {
39
- 50: "#FFFBEB",
40
- 400: "#FFBF4C",
41
- // Warning light
42
- 500: "#FFB020",
43
- // Warning main
44
- 600: "#B27B16"},
45
- // Sky/Blue scale (info)
46
- sky: {
47
- 50: "#F0F9FF",
48
- 400: "#64B6F7",
49
- // Info light
50
- 500: "#2196F3",
51
- 700: "#0B79D0"},
23
+ 600: "#D14343"},
24
+ // Vivid red scale
25
+ redVivid: {
26
+ 400: "#FF6070",
27
+ 500: "#FF4757",
28
+ 700: "#C42539"},
52
29
  // Neutral/Gray scale
53
30
  neutral: {
54
31
  50: "#FAFAFA",
@@ -58,16 +35,9 @@ var primitiveColors = {
58
35
  500: "#6B7280",
59
36
  600: "#4B5563",
60
37
  900: "#111827"},
61
- // Orange scale (accent/brand color)
62
- accent: {
63
- 200: "#FF9630",
64
- 300: "#FF8500",
65
- 400: "#FF7900",
66
- 500: "#F56C00",
67
- 600: "#E06D10",
68
- 700: "#D0620C"},
69
38
  // Charcoal scale (dark backgrounds)
70
39
  charcoal: {
40
+ 200: "#3C3C3C",
71
41
  300: "#2C2C2C",
72
42
  400: "#1F1F1F",
73
43
  500: "#1C1C1C",
@@ -75,15 +45,59 @@ var primitiveColors = {
75
45
  700: "#161616",
76
46
  900: "#101010"
77
47
  },
78
- // Steel scale (cool accent)
79
- steel: {
80
- 300: "#678498",
81
- 400: "#557488",
82
- 500: "#406D87",
83
- 600: "#39617A",
84
- 700: "#32556D"},
85
48
  // Pure colors
86
49
  white: "#FFFFFF"};
50
+ var primitiveRamps = {
51
+ red: {
52
+ 50: "#FFF4F4",
53
+ 500: "#E05254",
54
+ 600: "#D14343",
55
+ // pin
56
+ 700: "#A4221C"},
57
+ orange: {
58
+ 200: "#FFC7A2",
59
+ 300: "#FFA063",
60
+ 400: "#FF7900",
61
+ // pin
62
+ 500: "#DA5F00",
63
+ 600: "#B94A00"},
64
+ amber: {
65
+ 50: "#FFF7DD",
66
+ 200: "#FFD352",
67
+ 300: "#F9B415",
68
+ 500: "#C27400"},
69
+ green: {
70
+ 50: "#E3FFEE",
71
+ 200: "#58F69E",
72
+ 300: "#2ED573",
73
+ 500: "#22A444",
74
+ 600: "#298732"},
75
+ cyan: {
76
+ 300: "#22D3EE",
77
+ // pin
78
+ 400: "#01B5D1",
79
+ 500: "#2697B7",
80
+ 600: "#307B9B",
81
+ 700: "#2A617F",
82
+ 800: "#22465F"},
83
+ blue: {
84
+ 50: "#EFF8FF",
85
+ 300: "#78C2FF",
86
+ 500: "#2196F3",
87
+ // pin
88
+ 600: "#1072CB"}};
89
+ var divergingScale = [
90
+ primitiveRamps.blue[500],
91
+ // under
92
+ primitiveRamps.cyan[300],
93
+ // maintenance
94
+ primitiveRamps.green[200],
95
+ // optimal (light center)
96
+ primitiveRamps.amber[300],
97
+ // approaching
98
+ primitiveRamps.red[600]
99
+ // over
100
+ ];
87
101
  var discreteRainbow = [
88
102
  "#E8ECFB",
89
103
  "#D9CCE3",
@@ -119,56 +133,46 @@ var discreteRainbow = [
119
133
  // src/theme/tokens/semantic.ts
120
134
  var semanticColorsLight = {
121
135
  // Brand colors (brand-*)
122
- "brand-primary": primitiveColors.accent[400],
123
- // #FF7900
124
- "brand-primary-light": primitiveColors.accent[200],
125
- // #FF9630
126
- "brand-primary-dark": primitiveColors.accent[700],
127
- // #D0620C
136
+ "brand-primary": primitiveRamps.orange[400],
137
+ "brand-primary-light": primitiveRamps.orange[300],
138
+ "brand-primary-dark": primitiveRamps.orange[500],
128
139
  "brand-primary-subtle": "rgba(255, 121, 0, 0.08)",
129
- "brand-primary-hover": primitiveColors.accent[500],
130
- "brand-primary-active": primitiveColors.accent[600],
131
- "brand-secondary": primitiveColors.steel[500],
132
- // #406D87
133
- "brand-secondary-light": primitiveColors.steel[300],
134
- // #678498
135
- "brand-secondary-dark": primitiveColors.steel[700],
136
- // #32556D
137
- "brand-secondary-subtle": "rgba(64, 109, 135, 0.08)",
138
- "brand-secondary-hover": primitiveColors.steel[600],
139
- "brand-secondary-active": primitiveColors.steel[700],
140
+ "brand-primary-hover": primitiveRamps.orange[500],
141
+ "brand-primary-active": primitiveRamps.orange[600],
142
+ "brand-secondary": primitiveRamps.cyan[600],
143
+ "brand-secondary-light": primitiveRamps.cyan[500],
144
+ "brand-secondary-dark": primitiveRamps.cyan[700],
145
+ "brand-secondary-subtle": "rgba(48, 123, 155, 0.08)",
146
+ "brand-secondary-hover": primitiveRamps.cyan[700],
147
+ "brand-secondary-active": primitiveRamps.cyan[800],
140
148
  // Text on brand backgrounds (on-*)
141
149
  "on-brand-primary": primitiveColors.white,
142
150
  "on-brand-secondary": primitiveColors.white,
143
151
  // Status colors (status-*)
144
- "status-success": primitiveColors.teal[500],
145
- // #14B8A6
146
- "status-success-light": primitiveColors.teal[400],
147
- // #43C6B7
148
- "status-success-dark": primitiveColors.teal[700],
149
- // #0E8074
150
- "status-success-subtle": primitiveColors.teal[50],
151
- "status-error": primitiveColors.red[600],
152
- // #D14343
153
- "status-error-light": primitiveColors.red[400],
154
- // #DA6868
155
- "status-error-dark": primitiveColors.red[700],
156
- // #922E2E
157
- "status-error-subtle": primitiveColors.red[50],
158
- "status-warning": primitiveColors.amber[500],
159
- // #FFB020
160
- "status-warning-light": primitiveColors.amber[400],
161
- // #FFBF4C
162
- "status-warning-dark": primitiveColors.amber[600],
163
- // #B27B16
164
- "status-warning-subtle": primitiveColors.amber[50],
165
- "status-info": primitiveColors.sky[500],
166
- // #2196F3
167
- "status-info-light": primitiveColors.sky[400],
168
- // #64B6F7
169
- "status-info-dark": primitiveColors.sky[700],
170
- // #0B79D0
171
- "status-info-subtle": primitiveColors.sky[50],
152
+ "status-success": primitiveRamps.green[300],
153
+ "status-success-light": primitiveRamps.green[200],
154
+ "status-success-dark": primitiveRamps.green[600],
155
+ "status-success-subtle": primitiveRamps.green[50],
156
+ // Live-session accent — its OWN role, decoupled from success so the two can diverge
157
+ "status-live": primitiveRamps.green[300],
158
+ "status-live-muted": primitiveRamps.green[500],
159
+ "status-error": primitiveRamps.red[600],
160
+ "status-error-light": primitiveRamps.red[500],
161
+ "status-error-dark": primitiveRamps.red[700],
162
+ "status-error-subtle": primitiveRamps.red[50],
163
+ "status-error-vivid": primitiveColors.redVivid[500],
164
+ // vivid alert red
165
+ "status-error-vivid-light": primitiveColors.redVivid[400],
166
+ "status-error-vivid-dark": primitiveColors.redVivid[700],
167
+ "status-error-vivid-subtle": "rgba(255, 71, 87, 0.12)",
168
+ "status-warning": primitiveRamps.amber[300],
169
+ "status-warning-light": primitiveRamps.amber[200],
170
+ "status-warning-dark": primitiveRamps.amber[500],
171
+ "status-warning-subtle": primitiveRamps.amber[50],
172
+ "status-info": primitiveRamps.blue[500],
173
+ "status-info-light": primitiveRamps.blue[300],
174
+ "status-info-dark": primitiveRamps.blue[600],
175
+ "status-info-subtle": primitiveRamps.blue[50],
172
176
  // Text on status backgrounds (on-status-*)
173
177
  "on-status-success": primitiveColors.white,
174
178
  "on-status-error": primitiveColors.white,
@@ -195,25 +199,25 @@ var semanticColorsLight = {
195
199
  // Data visualization colors (data-*)
196
200
  // First 10 colors from discrete rainbow optimized for charts
197
201
  "data-1": discreteRainbow[9],
198
- // #1965B0 - Blue
202
+ // Blue
199
203
  "data-2": discreteRainbow[14],
200
- // #4EB265 - Green
204
+ // Green
201
205
  "data-3": discreteRainbow[17],
202
- // #F7F056 - Yellow
206
+ // Yellow
203
207
  "data-4": discreteRainbow[25],
204
- // #DC050C - Red
208
+ // Red
205
209
  "data-5": discreteRainbow[8],
206
- // #882E72 - Purple
210
+ // Purple
207
211
  "data-6": discreteRainbow[20],
208
- // #F4A736 - Orange
212
+ // Orange
209
213
  "data-7": discreteRainbow[13],
210
- // #7BAFDE - Light Blue
214
+ // Light Blue
211
215
  "data-8": discreteRainbow[15],
212
- // #90C987 - Light Green
216
+ // Light Green
213
217
  "data-9": discreteRainbow[3],
214
- // #CAACCB - Lavender
218
+ // Lavender
215
219
  "data-10": discreteRainbow[22],
216
- // #EE8026 - Dark Orange
220
+ // Dark Orange
217
221
  // Text colors (text-*)
218
222
  "text-primary": "#121828",
219
223
  "text-secondary": "#65748B",
@@ -225,9 +229,9 @@ var semanticColorsLight = {
225
229
  // Surface colors (surface-*) - for elevated containers
226
230
  "surface-base": primitiveColors.white,
227
231
  "surface-elevated": primitiveColors.neutral[50],
228
- // #FAFAFA - slightly off-white for elevated cards
232
+ // slightly off-white for elevated cards
229
233
  "surface-raised": primitiveColors.neutral[100],
230
- // #F3F4F6 - light gray for raised cards
234
+ // light gray for raised cards
231
235
  "surface-overlay": primitiveColors.white,
232
236
  "surface-input": primitiveColors.neutral[50],
233
237
  // Input field background (filled variant)
@@ -239,6 +243,8 @@ var semanticColorsLight = {
239
243
  "border-default": "#E8E9EB",
240
244
  "border-subtle": primitiveColors.neutral[100],
241
245
  "border-strong": primitiveColors.neutral[300],
246
+ "border-prominent": primitiveColors.neutral[400],
247
+ // high-visibility divider
242
248
  "border-focus": primitiveColors.blue[600],
243
249
  "border-input": primitiveColors.neutral[300],
244
250
  // Input field border
@@ -263,37 +269,44 @@ var semanticColorsLight = {
263
269
  };
264
270
  var semanticColorsDark = {
265
271
  // Brand colors stay the same in dark mode
266
- "brand-primary": primitiveColors.accent[400],
267
- "brand-primary-light": primitiveColors.accent[200],
268
- "brand-primary-dark": primitiveColors.accent[700],
272
+ "brand-primary": primitiveRamps.orange[400],
273
+ "brand-primary-light": primitiveRamps.orange[300],
274
+ "brand-primary-dark": primitiveRamps.orange[500],
269
275
  "brand-primary-subtle": "rgba(255, 121, 0, 0.12)",
270
- "brand-primary-hover": primitiveColors.accent[300],
271
- "brand-primary-active": primitiveColors.accent[200],
272
- "brand-secondary": primitiveColors.steel[500],
273
- "brand-secondary-light": primitiveColors.steel[300],
274
- "brand-secondary-dark": primitiveColors.steel[700],
275
- "brand-secondary-subtle": "rgba(64, 109, 135, 0.12)",
276
- "brand-secondary-hover": primitiveColors.steel[400],
277
- "brand-secondary-active": primitiveColors.steel[300],
276
+ "brand-primary-hover": primitiveRamps.orange[300],
277
+ "brand-primary-active": primitiveRamps.orange[200],
278
+ "brand-secondary": primitiveRamps.cyan[600],
279
+ "brand-secondary-light": primitiveRamps.cyan[500],
280
+ "brand-secondary-dark": primitiveRamps.cyan[700],
281
+ "brand-secondary-subtle": "rgba(48, 123, 155, 0.12)",
282
+ "brand-secondary-hover": primitiveRamps.cyan[500],
283
+ "brand-secondary-active": primitiveRamps.cyan[400],
278
284
  // Text on brand backgrounds
279
285
  "on-brand-primary": primitiveColors.white,
280
286
  "on-brand-secondary": primitiveColors.white,
281
287
  // Status colors
282
- "status-success": primitiveColors.teal[500],
283
- "status-success-light": primitiveColors.teal[400],
284
- "status-success-dark": primitiveColors.teal[700],
285
- "status-success-subtle": "rgba(20, 184, 166, 0.12)",
286
- "status-error": primitiveColors.red[600],
287
- "status-error-light": primitiveColors.red[400],
288
- "status-error-dark": primitiveColors.red[700],
288
+ "status-success": primitiveRamps.green[300],
289
+ "status-success-light": primitiveRamps.green[200],
290
+ "status-success-dark": primitiveRamps.green[600],
291
+ "status-success-subtle": "rgba(46, 213, 115, 0.12)",
292
+ // Live-session accent — its OWN role, decoupled from success so the two can diverge
293
+ "status-live": primitiveRamps.green[300],
294
+ "status-live-muted": primitiveRamps.green[500],
295
+ "status-error": primitiveRamps.red[600],
296
+ "status-error-light": primitiveRamps.red[500],
297
+ "status-error-dark": primitiveRamps.red[700],
289
298
  "status-error-subtle": "rgba(209, 67, 67, 0.12)",
290
- "status-warning": primitiveColors.amber[500],
291
- "status-warning-light": primitiveColors.amber[400],
292
- "status-warning-dark": primitiveColors.amber[600],
293
- "status-warning-subtle": "rgba(255, 176, 32, 0.12)",
294
- "status-info": primitiveColors.sky[500],
295
- "status-info-light": primitiveColors.sky[400],
296
- "status-info-dark": primitiveColors.sky[700],
299
+ "status-error-vivid": primitiveColors.redVivid[500],
300
+ "status-error-vivid-light": primitiveColors.redVivid[400],
301
+ "status-error-vivid-dark": primitiveColors.redVivid[700],
302
+ "status-error-vivid-subtle": "rgba(255, 71, 87, 0.12)",
303
+ "status-warning": primitiveRamps.amber[300],
304
+ "status-warning-light": primitiveRamps.amber[200],
305
+ "status-warning-dark": primitiveRamps.amber[500],
306
+ "status-warning-subtle": "rgba(249, 180, 21, 0.12)",
307
+ "status-info": primitiveRamps.blue[500],
308
+ "status-info-light": primitiveRamps.blue[300],
309
+ "status-info-dark": primitiveRamps.blue[600],
297
310
  "status-info-subtle": "rgba(33, 150, 243, 0.12)",
298
311
  // Text on status backgrounds
299
312
  "on-status-success": primitiveColors.white,
@@ -335,29 +348,31 @@ var semanticColorsDark = {
335
348
  "text-link-hover": primitiveColors.blue[400],
336
349
  // Surface colors - dark backgrounds
337
350
  "surface-base": primitiveColors.charcoal[700],
338
- // #161616 - main surface
351
+ // main surface
339
352
  "surface-elevated": primitiveColors.charcoal[600],
340
- // #191919 - elevated surface
353
+ // elevated surface
341
354
  "surface-raised": primitiveColors.charcoal[500],
342
- // #1C1C1C - raised surface
355
+ // raised surface
343
356
  "surface-overlay": primitiveColors.charcoal[600],
344
- // #191919 - overlay surface
357
+ // overlay surface
345
358
  "surface-input": primitiveColors.charcoal[600],
346
- // #191919 - input surface
359
+ // input surface
347
360
  // Background colors
348
361
  "background-base": primitiveColors.charcoal[900],
349
- // #101010 - darkest charcoal
362
+ // darkest charcoal
350
363
  "background-default": primitiveColors.charcoal[700],
351
- // #161616 - main background
364
+ // main background
352
365
  "background-subtle": primitiveColors.charcoal[500],
353
- // #1C1C1C - subtle background
366
+ // subtle background
354
367
  // Border colors
355
368
  "border-default": primitiveColors.charcoal[400],
356
- // #1F1F1F - default border
369
+ // default border
357
370
  "border-subtle": primitiveColors.charcoal[500],
358
- // #1C1C1C - subtle border
371
+ // subtle border
359
372
  "border-strong": primitiveColors.charcoal[300],
360
- // #2C2C2C - strong border
373
+ // strong border
374
+ "border-prominent": primitiveColors.charcoal[200],
375
+ // high-visibility divider
361
376
  "border-focus": "#828DF8",
362
377
  "border-input": primitiveColors.neutral[600],
363
378
  "border-input-hover": primitiveColors.neutral[500],
@@ -372,7 +387,7 @@ var semanticColorsDark = {
372
387
  "interactive-disabled-text": "rgba(255, 255, 255, 0.26)",
373
388
  // Divider
374
389
  "divider": primitiveColors.charcoal[400],
375
- // #1F1F1F - divider color
390
+ // divider color
376
391
  // Avatar default
377
392
  "avatar-background": primitiveColors.neutral[600],
378
393
  "avatar-text": primitiveColors.white
@@ -388,21 +403,22 @@ function resolveColor(token, mode = "dark") {
388
403
 
389
404
  // src/theme/workout-tokens.ts
390
405
  var WORKOUT_TOKENS = {
391
- // BodyMap volume heatmap scale (drive dynamic SVG fills, so inline values).
392
- // Maps weekly-volume status against MEV/MAV/MRV landmarks to a fill color.
406
+ // BodyMap volume heatmap the canonical `divergingScale` (under optimal
407
+ // over): a true diverging shape with a light green center, cool-blue under-
408
+ // trained end and warm-red over-reaching end (colorblind-robust in lightness).
393
409
  heatmap: {
394
410
  none: "#E0E0E0",
395
- // gray — no training data
396
- under: "#4A90D9",
397
- // cool blue — below MEV
398
- maintenance: "#F5C842",
399
- // warm yellow — MEV to MAV
400
- productive: "#4CAF50",
401
- // green — MAV to MRV
402
- approaching: "#FFA502",
403
- // orange — near MRV
404
- over: "#FF6B35"
405
- // red-orange — over MRV
411
+ // no training data
412
+ under: divergingScale[0],
413
+ // below MEV
414
+ maintenance: divergingScale[1],
415
+ // MEV to MAV
416
+ productive: divergingScale[2],
417
+ // optimal center — MAV to MRV
418
+ approaching: divergingScale[3],
419
+ // near MRV
420
+ over: divergingScale[4]
421
+ // over MRV
406
422
  }};
407
423
 
408
424
  // src/components/custom/Workout/muscleTaxonomy.ts
@@ -608,6 +624,7 @@ var jsxs = wrapJsx(jsxs$1);
608
624
 
609
625
  // src/components/custom/Workout/BodyMap.tsx
610
626
  var Body = BodyHighlighter.default ?? BodyHighlighter;
627
+ var BRAND_PRIMARY = getSemanticColors("dark")["brand-primary"];
611
628
  var OUTLINE_FILL = "rgba(255,255,255,0.08)";
612
629
  var OUTLINE_BORDER = "rgba(255,255,255,0.12)";
613
630
  var BODY_SCALE = 0.8;
@@ -786,7 +803,7 @@ function ViewToggle({ view, onViewChange }) {
786
803
  borderRadius: 9999,
787
804
  backgroundColor: active ? "rgba(255,121,0,0.16)" : "transparent",
788
805
  borderWidth: 1,
789
- borderColor: active ? "#FF7900" : resolveColor("border-strong")
806
+ borderColor: active ? BRAND_PRIMARY : resolveColor("border-strong")
790
807
  },
791
808
  testID: `body-map-toggle-${side}`,
792
809
  children: /* @__PURE__ */ jsx(
@@ -796,7 +813,7 @@ function ViewToggle({ view, onViewChange }) {
796
813
  fontSize: 12,
797
814
  fontFamily: "Inter, sans-serif",
798
815
  fontWeight: active ? "700" : "500",
799
- color: active ? "#FF7900" : resolveColor("text-secondary"),
816
+ color: active ? BRAND_PRIMARY : resolveColor("text-secondary"),
800
817
  textTransform: "capitalize"
801
818
  },
802
819
  children: side
@@ -828,7 +845,7 @@ function MuscleButton({ entry, highlighted, onMusclePress }) {
828
845
  paddingVertical: 3,
829
846
  borderRadius: 9999,
830
847
  borderWidth: 1,
831
- borderColor: highlighted ? "#FF7900" : resolveColor("border-default")
848
+ borderColor: highlighted ? BRAND_PRIMARY : resolveColor("border-default")
832
849
  },
833
850
  testID: `body-map-muscle-${entry.key}`,
834
851
  children: [
@@ -867,9 +884,11 @@ var colorStyles = {
867
884
  default: "bg-text-tertiary",
868
885
  primary: "bg-brand-primary",
869
886
  success: "bg-status-success",
887
+ live: "bg-status-live",
870
888
  error: "bg-status-error",
871
889
  warning: "bg-status-warning",
872
- info: "bg-status-info"
890
+ info: "bg-status-info",
891
+ "error-vivid": "bg-status-error-vivid"
873
892
  };
874
893
  function Indicator({
875
894
  size = "sm",
@@ -877,14 +896,40 @@ function Indicator({
877
896
  customColor,
878
897
  glow = false,
879
898
  ring = false,
899
+ pulse = false,
880
900
  className,
881
901
  style,
882
902
  ...props
883
903
  }) {
904
+ const pulseMode = pulse === true ? "opacity" : pulse || false;
905
+ const colorClass = !customColor ? colorStyles[color] : void 0;
906
+ const colorStyle = customColor ? { backgroundColor: customColor } : void 0;
907
+ if (pulseMode === "ping") {
908
+ return /* @__PURE__ */ jsxs(View, { className: cn("relative", sizeStyles[size], className), style, ...props, children: [
909
+ /* @__PURE__ */ jsx(
910
+ View,
911
+ {
912
+ className: cn("absolute inset-0 rounded-full animate-ping", colorClass),
913
+ style: colorStyle
914
+ }
915
+ ),
916
+ /* @__PURE__ */ jsx(
917
+ View,
918
+ {
919
+ className: cn(
920
+ "relative rounded-full",
921
+ sizeStyles[size],
922
+ colorClass,
923
+ ring && "border-2 border-background-base"
924
+ ),
925
+ style: colorStyle
926
+ }
927
+ )
928
+ ] });
929
+ }
884
930
  const dynamicStyle = {
885
931
  ...typeof style === "object" ? style : {},
886
- ...customColor ? { backgroundColor: customColor } : {},
887
- ...glow && !customColor ? {} : {},
932
+ ...colorStyle ?? {},
888
933
  ...glow && customColor ? { boxShadow: `0 0 6px ${customColor}` } : {}
889
934
  };
890
935
  return /* @__PURE__ */ jsx(
@@ -893,12 +938,14 @@ function Indicator({
893
938
  className: cn(
894
939
  "rounded-full shrink-0",
895
940
  sizeStyles[size],
896
- !customColor && colorStyles[color],
941
+ colorClass,
942
+ pulseMode === "opacity" && "animate-pulse",
897
943
  ring && "border-2 border-background-base",
898
- glow && !customColor && color === "success" && "shadow-[0_0_6px_rgba(20,184,166,0.6)]",
944
+ glow && !customColor && (color === "success" || color === "live") && "shadow-[0_0_6px_rgba(46,213,115,0.6)]",
899
945
  glow && !customColor && color === "error" && "shadow-[0_0_6px_rgba(239,68,68,0.6)]",
900
946
  glow && !customColor && color === "warning" && "shadow-[0_0_6px_rgba(245,158,11,0.6)]",
901
947
  glow && !customColor && color === "primary" && "shadow-[0_0_6px_rgba(255,121,0,0.6)]",
948
+ glow && !customColor && color === "error-vivid" && "shadow-[0_0_6px_rgba(255,71,87,0.6)]",
902
949
  className
903
950
  ),
904
951
  style: Object.keys(dynamicStyle).length > 0 ? dynamicStyle : style,
@@ -976,7 +1023,7 @@ function Badge({
976
1023
  }
977
1024
  );
978
1025
  }
979
- var BRAND_PRIMARY = "#FF7900";
1026
+ var BRAND_PRIMARY2 = getSemanticColors("dark")["brand-primary"];
980
1027
  function normalizeData(data, height) {
981
1028
  if (data.length === 0) return [];
982
1029
  const min = Math.min(...data);
@@ -1013,7 +1060,7 @@ function Sparkline({
1013
1060
  }
1014
1061
  );
1015
1062
  }
1016
- const resolvedColor = color ?? BRAND_PRIMARY;
1063
+ const resolvedColor = color ?? BRAND_PRIMARY2;
1017
1064
  const normalized = normalizeData(data, height);
1018
1065
  const stepX = data.length > 1 ? width / (data.length - 1) : 0;
1019
1066
  const dotSize = 3;
@@ -1129,8 +1176,9 @@ function Sparkline({
1129
1176
  }
1130
1177
 
1131
1178
  // src/components/custom/Workout/BodyMapDetailPanel.tsx
1132
- var BRAND_PRIMARY2 = "#FF7900";
1133
- var VOLUME_GRADIENT = "linear-gradient(90deg, #2196F3 0%, #14B8A6 50%, #D14343 100%)";
1179
+ var t = getSemanticColors("dark");
1180
+ var BRAND_PRIMARY3 = t["brand-primary"];
1181
+ var VOLUME_GRADIENT = `linear-gradient(90deg, ${t["status-info"]} 0%, ${t["status-success"]} 50%, ${t["status-error"]} 100%)`;
1134
1182
  var SLIDE_OFFSET = 400;
1135
1183
  var BACKDROP_OPACITY = 0.4;
1136
1184
  var STATUS_BADGE_COLOR = {
@@ -1528,7 +1576,7 @@ function BodyMapDetailPanel({
1528
1576
  borderColor: "rgba(255,121,0,0.3)"
1529
1577
  },
1530
1578
  testID: "body-map-detail-panel-view-exercises",
1531
- children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 13, fontFamily: "Inter, sans-serif", fontWeight: "700", color: BRAND_PRIMARY2 }, children: "View exercises" })
1579
+ children: /* @__PURE__ */ jsx(Text, { style: { fontSize: 13, fontFamily: "Inter, sans-serif", fontWeight: "700", color: BRAND_PRIMARY3 }, children: "View exercises" })
1532
1580
  }
1533
1581
  )
1534
1582
  ]
@@ -2266,17 +2314,18 @@ function CardContent({ children, className }) {
2266
2314
  function CardFooter({ children, className }) {
2267
2315
  return /* @__PURE__ */ jsx(View, { className: cn("px-6 py-4 flex-row items-center gap-2", className), children });
2268
2316
  }
2317
+ var t2 = getSemanticColors("dark");
2269
2318
  var solidVariantColors = {
2270
- success: "#14B8A6",
2271
- warning: "#FFB020",
2272
- error: "#D14343",
2319
+ success: t2["status-success"],
2320
+ warning: t2["status-warning"],
2321
+ error: t2["status-error"],
2273
2322
  neutral: "#6B7280"
2274
2323
  };
2275
2324
  var ringVariantStyles = {
2276
2325
  "on-track": {
2277
- backgroundColor: "rgba(20,184,166,0.15)",
2326
+ backgroundColor: "rgba(46,213,115,0.15)",
2278
2327
  borderWidth: 1,
2279
- borderColor: "rgba(20,184,166,0.3)"
2328
+ borderColor: "rgba(46,213,115,0.3)"
2280
2329
  },
2281
2330
  deviation: {
2282
2331
  backgroundColor: "rgba(245,158,11,0.15)",
@@ -2291,11 +2340,11 @@ var ringVariantStyles = {
2291
2340
  }
2292
2341
  };
2293
2342
  var glowStyles = {
2294
- success: { boxShadow: "0 0 4px rgba(20,184,166,0.4)" },
2343
+ success: { boxShadow: "0 0 4px rgba(46,213,115,0.4)" },
2295
2344
  warning: { boxShadow: "0 0 4px rgba(245,158,11,0.4)" },
2296
2345
  error: { boxShadow: "0 0 4px rgba(239,68,68,0.4)" },
2297
2346
  neutral: { boxShadow: "0 0 4px rgba(107,114,128,0.4)" },
2298
- "on-track": { boxShadow: "0 0 4px rgba(20,184,166,0.4)" },
2347
+ "on-track": { boxShadow: "0 0 4px rgba(46,213,115,0.4)" },
2299
2348
  deviation: { boxShadow: "0 0 4px rgba(245,158,11,0.4)" },
2300
2349
  future: { boxShadow: "0 0 4px rgba(107,114,128,0.4)" }
2301
2350
  };
@@ -2309,8 +2358,8 @@ var iconColors = {
2309
2358
  warning: "#6B4000",
2310
2359
  error: "#5C1A1A",
2311
2360
  neutral: "#D1D5DB",
2312
- "on-track": "#14B8A6",
2313
- deviation: "#FFB020",
2361
+ "on-track": t2["status-success"],
2362
+ deviation: t2["status-warning"],
2314
2363
  future: "#6B7280"
2315
2364
  };
2316
2365
  var sizeDimensions = {
@@ -2391,20 +2440,23 @@ function StatusDot({
2391
2440
  }
2392
2441
  return /* @__PURE__ */ jsx(View, { className, ...props, children: dot });
2393
2442
  }
2443
+ var MESO_ACCENT_GRADIENT_DARK = primitiveRamps.orange[500];
2444
+ var MESO_ACCENT_GRADIENT_LIGHT = primitiveRamps.orange[300];
2394
2445
 
2395
2446
  // src/components/custom/Workout/MesoStatusCard.tsx
2396
- var BRAND_PRIMARY3 = "#FF7900";
2397
- var BRAND_PRIMARY_DARK = "#C45E00";
2398
- var BRAND_PRIMARY_LIGHT = "#FFB066";
2399
- var SUCCESS = "#14B8A6";
2400
- var WARNING = "#FFB020";
2401
- var ERROR = "#D14343";
2402
- var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY3, BRAND_PRIMARY_LIGHT];
2447
+ var t3 = getSemanticColors("dark");
2448
+ var BRAND_PRIMARY4 = t3["brand-primary"];
2449
+ var BRAND_PRIMARY_DARK = MESO_ACCENT_GRADIENT_DARK;
2450
+ var BRAND_PRIMARY_LIGHT = MESO_ACCENT_GRADIENT_LIGHT;
2451
+ var SUCCESS = t3["status-success"];
2452
+ var WARNING = t3["status-warning"];
2453
+ var ERROR = t3["status-error"];
2454
+ var ACCENT_STOPS = [BRAND_PRIMARY_DARK, BRAND_PRIMARY4, BRAND_PRIMARY_LIGHT];
2403
2455
  var CARD_GRADIENT = `linear-gradient(135deg, ${resolveColor("surface-elevated")} 0%, ${resolveColor("surface-raised")} 100%)`;
2404
- 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%)";
2456
+ 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%)";
2405
2457
  var STATUS_VARIANTS = {
2406
- success: { bg: "rgba(20,184,166,0.15)", border: "rgba(20,184,166,0.3)", text: SUCCESS },
2407
- warning: { bg: "rgba(255,176,32,0.15)", border: "rgba(255,176,32,0.3)", text: WARNING },
2458
+ success: { bg: "rgba(46,213,115,0.15)", border: "rgba(46,213,115,0.3)", text: SUCCESS },
2459
+ warning: { bg: "rgba(249,180,21,0.15)", border: "rgba(249,180,21,0.3)", text: WARNING },
2408
2460
  error: { bg: "rgba(209,67,67,0.15)", border: "rgba(209,67,67,0.25)", text: ERROR }
2409
2461
  };
2410
2462
  function clamp012(value) {
@@ -2696,9 +2748,9 @@ function MesoStatusCard({
2696
2748
  View,
2697
2749
  {
2698
2750
  style: {
2699
- backgroundColor: "rgba(255,176,32,0.06)",
2751
+ backgroundColor: "rgba(249,180,21,0.06)",
2700
2752
  borderWidth: 1,
2701
- borderColor: "rgba(255,176,32,0.15)",
2753
+ borderColor: "rgba(249,180,21,0.15)",
2702
2754
  borderRadius: 8,
2703
2755
  paddingVertical: 10,
2704
2756
  paddingHorizontal: 12
@@ -2724,9 +2776,9 @@ function MesoStatusCard({
2724
2776
  className: "flex-row items-center",
2725
2777
  style: {
2726
2778
  gap: 8,
2727
- backgroundColor: "rgba(20,184,166,0.06)",
2779
+ backgroundColor: "rgba(46,213,115,0.06)",
2728
2780
  borderWidth: 1,
2729
- borderColor: "rgba(20,184,166,0.2)",
2781
+ borderColor: "rgba(46,213,115,0.2)",
2730
2782
  borderRadius: 8,
2731
2783
  paddingVertical: 10,
2732
2784
  paddingHorizontal: 12