@titan-design/react-ui 0.13.0 → 0.14.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 (146) hide show
  1. package/README.md +14 -0
  2. package/dist/bodymap.js +129 -76
  3. package/dist/bodymap.js.map +1 -1
  4. package/dist/bodymap.mjs +129 -76
  5. package/dist/bodymap.mjs.map +1 -1
  6. package/dist/index.d.mts +117 -26
  7. package/dist/index.d.ts +117 -26
  8. package/dist/index.js +677 -450
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.mjs +673 -451
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/{pages-_3Ajpiqu.d.ts → pages-CsjsUn0G.d.ts} +30 -13
  13. package/dist/{pages-CpW3OB3g.d.mts → pages-ZbT_pD_U.d.mts} +30 -13
  14. package/dist/pages.d.mts +1 -1
  15. package/dist/pages.d.ts +1 -1
  16. package/dist/pages.js +676 -701
  17. package/dist/pages.js.map +1 -1
  18. package/dist/pages.mjs +676 -701
  19. package/dist/pages.mjs.map +1 -1
  20. package/dist/theme/index.d.mts +31 -7
  21. package/dist/theme/index.d.ts +31 -7
  22. package/dist/theme/index.js +84 -20
  23. package/dist/theme/index.js.map +1 -1
  24. package/dist/theme/index.mjs +83 -21
  25. package/dist/theme/index.mjs.map +1 -1
  26. package/dist/theme/tokens-css.js +84 -20
  27. package/dist/theme/tokens-css.js.map +1 -1
  28. package/dist/theme/tokens-css.mjs +84 -20
  29. package/dist/theme/tokens-css.mjs.map +1 -1
  30. package/dist/theme/tokens.d.mts +56 -7
  31. package/dist/theme/tokens.d.ts +56 -7
  32. package/dist/theme/tokens.js +72 -20
  33. package/dist/theme/tokens.js.map +1 -1
  34. package/dist/theme/tokens.mjs +71 -21
  35. package/dist/theme/tokens.mjs.map +1 -1
  36. package/docs/render-testing-pattern.md +130 -0
  37. package/package.json +1 -1
  38. package/src/arch/Architecture.stories.tsx +3 -1
  39. package/src/arch/arch-graph.json +74 -72
  40. package/src/components/custom/ActiveWork/InitiativeBrief.tsx +2 -1
  41. package/src/components/custom/CircularTimer/CircularTimer.stories.tsx +8 -3
  42. package/src/components/custom/EmptyState/EmptyState.stories.tsx +1 -1
  43. package/src/components/custom/Gauge/Gauge.stories.tsx +4 -1
  44. package/src/components/custom/Gauge/Gauge.tsx +3 -1
  45. package/src/components/custom/Scatter/Scatter.stories.tsx +10 -7
  46. package/src/components/custom/Scatter/Scatter.tsx +6 -4
  47. package/src/components/custom/Sidebar/Sidebar.stories.tsx +1 -1
  48. package/src/components/custom/Table/Table.stories.tsx +1 -1
  49. package/src/components/custom/Table/Table.tsx +2 -2
  50. package/src/components/custom/Treemap/Treemap.stories.tsx +13 -10
  51. package/src/components/custom/Treemap/Treemap.tsx +4 -1
  52. package/src/components/custom/Workout/ActiveWorkoutPage.stories.tsx +2 -1
  53. package/src/components/custom/Workout/BaseBadge.stories.tsx +11 -7
  54. package/src/components/custom/Workout/BaseBadge.tsx +3 -2
  55. package/src/components/custom/Workout/BodyMap.tsx +5 -3
  56. package/src/components/custom/Workout/BodyMapDetailPanel.stories.tsx +13 -3
  57. package/src/components/custom/Workout/BodyMapDetailPanel.tsx +5 -3
  58. package/src/components/custom/Workout/CapacityBandChart.stories.tsx +2 -1
  59. package/src/components/custom/Workout/CapacityBandChart.tsx +5 -3
  60. package/src/components/custom/Workout/DeviationBar.test.tsx +5 -2
  61. package/src/components/custom/Workout/DeviationBar.tsx +5 -2
  62. package/src/components/custom/Workout/DualVelocityStrip.stories.tsx +7 -6
  63. package/src/components/custom/Workout/DualVelocityStrip.test.tsx +29 -16
  64. package/src/components/custom/Workout/ExerciseCard.stories.tsx +8 -8
  65. package/src/components/custom/Workout/ExerciseCard.test.tsx +39 -19
  66. package/src/components/custom/Workout/ExerciseCard.tsx +92 -167
  67. package/src/components/custom/Workout/ExerciseCardHeading.stories.tsx +89 -6
  68. package/src/components/custom/Workout/ExerciseCardHeading.test.tsx +189 -1
  69. package/src/components/custom/Workout/ExerciseCardHeading.tsx +167 -18
  70. package/src/components/custom/Workout/ExerciseDetailPage.tsx +3 -2
  71. package/src/components/custom/Workout/ExerciseHeading.tsx +192 -47
  72. package/src/components/custom/Workout/ExerciseIndicator.stories.tsx +6 -5
  73. package/src/components/custom/Workout/InputBar.tsx +4 -2
  74. package/src/components/custom/Workout/IntensityBar.tsx +4 -1
  75. package/src/components/custom/Workout/MesoCard.tsx +2 -1
  76. package/src/components/custom/Workout/MesoStatusCard.tsx +11 -10
  77. package/src/components/custom/Workout/PlaceholderStrip.stories.tsx +8 -3
  78. package/src/components/custom/Workout/PrHistoryModal.stories.tsx +12 -2
  79. package/src/components/custom/Workout/README.md +58 -12
  80. package/src/components/custom/Workout/ReadinessCheck.tsx +4 -2
  81. package/src/components/custom/Workout/RestTimer.stories.tsx +13 -2
  82. package/src/components/custom/Workout/RestTimer.tsx +4 -2
  83. package/src/components/custom/Workout/SegmentedBar.stories.tsx +16 -12
  84. package/src/components/custom/Workout/SegmentedBar.tsx +4 -3
  85. package/src/components/custom/Workout/SetStrip.stories.tsx +3 -2
  86. package/src/components/custom/Workout/SetsRepsLoad.tsx +23 -9
  87. package/src/components/custom/Workout/Sparkline.stories.tsx +13 -10
  88. package/src/components/custom/Workout/StrengthTrendChart.stories.tsx +2 -1
  89. package/src/components/custom/Workout/StrengthTrendChart.tsx +8 -6
  90. package/src/components/custom/Workout/TempoDisplay.stories.tsx +4 -3
  91. package/src/components/custom/Workout/TempoDisplay.tsx +2 -0
  92. package/src/components/custom/Workout/VelocityStrip.dual.stories.tsx +3 -2
  93. package/src/components/custom/Workout/VelocityStrip.expanded.stories.tsx +1 -1
  94. package/src/components/custom/Workout/VelocityStrip.hero.stories.tsx +40 -0
  95. package/src/components/custom/Workout/VelocityStrip.test.tsx +48 -6
  96. package/src/components/custom/Workout/VelocityStrip.tsx +23 -14
  97. package/src/components/custom/Workout/ZoneTrack.stories.tsx +3 -1
  98. package/src/components/custom/Workout/exerciseRowState.ts +29 -0
  99. package/src/components/custom/Workout/index.ts +12 -2
  100. package/src/components/custom/Workout/metricText.stories.tsx +9 -8
  101. package/src/components/custom/Workout/metricText.tsx +4 -2
  102. package/src/components/custom/Workout/setHeadingKit.tsx +12 -10
  103. package/src/components/custom/Workout/velocity-story-kit.tsx +2 -2
  104. package/src/components/custom/charts/README.md +5 -0
  105. package/src/components/custom/charts/SetBarChart.test.tsx +16 -0
  106. package/src/components/custom/charts/SetBarChart.tsx +14 -5
  107. package/src/components/custom/charts/flatBarGeometry.test.ts +41 -0
  108. package/src/components/custom/charts/flatBarGeometry.ts +32 -0
  109. package/src/components/custom/stepper/Stepper.tsx +8 -6
  110. package/src/components/ui/alert/Alert.stories.tsx +14 -4
  111. package/src/components/ui/alert/Alert.tsx +24 -3
  112. package/src/components/ui/button/Button.tsx +12 -12
  113. package/src/components/ui/checkbox/Checkbox.tsx +2 -2
  114. package/src/components/ui/data-row/DataRow.stories.tsx +6 -2
  115. package/src/components/ui/drawer/Drawer.tsx +4 -1
  116. package/src/components/ui/icon-box/IconBox.tsx +8 -6
  117. package/src/components/ui/indicator/Indicator.stories.tsx +4 -3
  118. package/src/components/ui/list-item/ListItem.stories.tsx +7 -4
  119. package/src/components/ui/modal/Modal.tsx +2 -0
  120. package/src/components/ui/pill/Pill.stories.tsx +53 -0
  121. package/src/components/ui/pill/Pill.tsx +10 -6
  122. package/src/components/ui/popover/Popover.stories.tsx +1 -1
  123. package/src/components/ui/progress/Progress.tsx +9 -6
  124. package/src/components/ui/radio/Radio.tsx +1 -1
  125. package/src/components/ui/section/Section.stories.tsx +10 -10
  126. package/src/components/ui/select/Select.tsx +2 -1
  127. package/src/components/ui/spinner/Spinner.tsx +3 -1
  128. package/src/components/ui/stack/Stack.stories.tsx +7 -7
  129. package/src/components/ui/surface/Surface.stories.tsx +75 -28
  130. package/src/components/ui/switch/Switch.tsx +1 -1
  131. package/src/components/ui/tabs/Tabs.tsx +4 -2
  132. package/src/components/ui/toast/Toast.tsx +6 -4
  133. package/src/components/ui/toolbar-button/ToolbarButton.tsx +13 -6
  134. package/src/stories/PresetShowcase.stories.tsx +1 -1
  135. package/src/test/no-raw-color.test.ts +39 -0
  136. package/src/theme/Alpha.stories.tsx +103 -0
  137. package/src/theme/ProposedTokensVW82.stories.tsx +414 -0
  138. package/src/theme/config.ts +12 -0
  139. package/src/theme/global.css +15 -3
  140. package/src/theme/subtle-tone-weight.test.ts +163 -0
  141. package/src/theme/tailwind-var-opacity.test.ts +163 -0
  142. package/src/theme/tokens/primitives.ts +33 -0
  143. package/src/theme/tokens/semantic-hex-guard.test.ts +322 -0
  144. package/src/theme/tokens/semantic.ts +56 -20
  145. package/src/utils/colors.alpha-adoption.test.ts +408 -0
  146. package/tailwind.config.js +50 -9
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": 1,
3
- "componentBarrelHash": "sha256:f79da78718437072ff8b9a1cb578dd3cf670e4a9a4d6324b86f1061032c13548",
3
+ "componentBarrelHash": "sha256:dce43a7ab61690b039e84fc8569e9f7f8a62a40de91a6da5001abbf0ed8a51ba",
4
4
  "components": [
5
5
  {
6
6
  "name": "ActiveWorkoutPage",
@@ -281,7 +281,7 @@
281
281
  "rawText": 0,
282
282
  "inlineStyle": 2,
283
283
  "rawHex": 0,
284
- "loc": 117,
284
+ "loc": 118,
285
285
  "score": 6
286
286
  },
287
287
  "tier": "atom",
@@ -319,7 +319,7 @@
319
319
  "rawText": 3,
320
320
  "inlineStyle": 8,
321
321
  "rawHex": 0,
322
- "loc": 352,
322
+ "loc": 354,
323
323
  "score": 23
324
324
  },
325
325
  "tier": "atom",
@@ -359,7 +359,7 @@
359
359
  "rawText": 15,
360
360
  "inlineStyle": 36,
361
361
  "rawHex": 1,
362
- "loc": 514,
362
+ "loc": 515,
363
363
  "score": 103
364
364
  },
365
365
  "tier": "organism",
@@ -556,7 +556,7 @@
556
556
  "rawText": 4,
557
557
  "inlineStyle": 12,
558
558
  "rawHex": 1,
559
- "loc": 527,
559
+ "loc": 528,
560
560
  "score": 38
561
561
  },
562
562
  "tier": "atom",
@@ -912,7 +912,7 @@
912
912
  "rawText": 0,
913
913
  "inlineStyle": 2,
914
914
  "rawHex": 0,
915
- "loc": 88,
915
+ "loc": 91,
916
916
  "score": 7
917
917
  },
918
918
  "tier": "atom",
@@ -1201,9 +1201,10 @@
1201
1201
  "ExerciseCardProps",
1202
1202
  "getSupersetBorderRadius",
1203
1203
  "getSupersetMargin",
1204
- "formatSummary",
1205
- "formatAccessibilityLabel",
1206
- "onToggle"
1204
+ "supersetChrome",
1205
+ "deriveCollapsedSetStates",
1206
+ "CollapsedCard",
1207
+ "deriveHeaderSetStates"
1207
1208
  ],
1208
1209
  "libDependents": 7,
1209
1210
  "storyRefs": 7,
@@ -1217,21 +1218,18 @@
1217
1218
  "dependsOn": [
1218
1219
  "ExerciseCardHeading",
1219
1220
  "ExerciseIndicator",
1220
- "PlaceholderStrip",
1221
- "PrBadge",
1222
1221
  "SetBar",
1223
1222
  "SetRow",
1224
1223
  "SetTableHeader",
1225
- "Typography",
1226
1224
  "VelocityStrip"
1227
1225
  ],
1228
1226
  "leak": {
1229
- "rawView": 11,
1227
+ "rawView": 3,
1230
1228
  "rawText": 0,
1231
- "inlineStyle": 7,
1229
+ "inlineStyle": 2,
1232
1230
  "rawHex": 0,
1233
- "loc": 403,
1234
- "score": 25
1231
+ "loc": 328,
1232
+ "score": 7
1235
1233
  },
1236
1234
  "tier": "organism",
1237
1235
  "verdict": "keep-core",
@@ -1246,7 +1244,11 @@
1246
1244
  "family": "custom/Workout",
1247
1245
  "exports": [
1248
1246
  "ExerciseCardHeading",
1249
- "ExerciseCardHeadingProps"
1247
+ "ExerciseRowDensity",
1248
+ "ExerciseCardHeadingProps",
1249
+ "useRowInteraction",
1250
+ "rowWash",
1251
+ "prescriptionProps"
1250
1252
  ],
1251
1253
  "libDependents": 2,
1252
1254
  "storyRefs": 3,
@@ -1260,15 +1262,16 @@
1260
1262
  "dependsOn": [
1261
1263
  "ExerciseHeading",
1262
1264
  "SetBar",
1263
- "SetStrip"
1265
+ "SetStrip",
1266
+ "Tooltip"
1264
1267
  ],
1265
1268
  "leak": {
1266
- "rawView": 2,
1269
+ "rawView": 1,
1267
1270
  "rawText": 0,
1268
- "inlineStyle": 2,
1271
+ "inlineStyle": 1,
1269
1272
  "rawHex": 0,
1270
- "loc": 44,
1271
- "score": 6
1273
+ "loc": 187,
1274
+ "score": 3
1272
1275
  },
1273
1276
  "tier": "organism",
1274
1277
  "verdict": "keep-core",
@@ -1319,7 +1322,7 @@
1319
1322
  "rawText": 13,
1320
1323
  "inlineStyle": 32,
1321
1324
  "rawHex": 0,
1322
- "loc": 644,
1325
+ "loc": 645,
1323
1326
  "score": 95
1324
1327
  },
1325
1328
  "tier": "page",
@@ -1334,9 +1337,12 @@
1334
1337
  "dir": "workout",
1335
1338
  "family": "custom/Workout",
1336
1339
  "exports": [
1340
+ "exerciseHeadingLabel",
1337
1341
  "ExerciseHeading",
1342
+ "ExerciseHeadingLayout",
1338
1343
  "ExerciseHeadingProps",
1339
- "headingLabel"
1344
+ "prescriptionText",
1345
+ "pressProps"
1340
1346
  ],
1341
1347
  "libDependents": 1,
1342
1348
  "storyRefs": 1,
@@ -1354,12 +1360,12 @@
1354
1360
  "Typography"
1355
1361
  ],
1356
1362
  "leak": {
1357
- "rawView": 4,
1363
+ "rawView": 6,
1358
1364
  "rawText": 0,
1359
- "inlineStyle": 3,
1365
+ "inlineStyle": 5,
1360
1366
  "rawHex": 0,
1361
- "loc": 91,
1362
- "score": 10
1367
+ "loc": 222,
1368
+ "score": 16
1363
1369
  },
1364
1370
  "tier": "organism",
1365
1371
  "verdict": "keep-internal",
@@ -1755,7 +1761,7 @@
1755
1761
  "rawText": 3,
1756
1762
  "inlineStyle": 4,
1757
1763
  "rawHex": 0,
1758
- "loc": 174,
1764
+ "loc": 176,
1759
1765
  "score": 15
1760
1766
  },
1761
1767
  "tier": "atom",
@@ -2299,7 +2305,7 @@
2299
2305
  "rawText": 2,
2300
2306
  "inlineStyle": 5,
2301
2307
  "rawHex": 2,
2302
- "loc": 224,
2308
+ "loc": 225,
2303
2309
  "score": 18
2304
2310
  },
2305
2311
  "tier": "atom",
@@ -2624,7 +2630,7 @@
2624
2630
  "rawText": 2,
2625
2631
  "inlineStyle": 9,
2626
2632
  "rawHex": 0,
2627
- "loc": 244,
2633
+ "loc": 245,
2628
2634
  "score": 28
2629
2635
  },
2630
2636
  "tier": "organism",
@@ -2707,7 +2713,7 @@
2707
2713
  "rawText": 11,
2708
2714
  "inlineStyle": 24,
2709
2715
  "rawHex": 0,
2710
- "loc": 452,
2716
+ "loc": 453,
2711
2717
  "score": 76
2712
2718
  },
2713
2719
  "tier": "organism",
@@ -3034,7 +3040,7 @@
3034
3040
  "PlaceholderStripProps",
3035
3041
  "SingleStrip"
3036
3042
  ],
3037
- "libDependents": 3,
3043
+ "libDependents": 2,
3038
3044
  "storyRefs": 2,
3039
3045
  "xproj": {
3040
3046
  "mobile": 0,
@@ -3153,7 +3159,7 @@
3153
3159
  "PRType",
3154
3160
  "PrBadgeProps"
3155
3161
  ],
3156
- "libDependents": 3,
3162
+ "libDependents": 2,
3157
3163
  "storyRefs": 2,
3158
3164
  "xproj": {
3159
3165
  "mobile": 0,
@@ -3392,7 +3398,7 @@
3392
3398
  "rawText": 7,
3393
3399
  "inlineStyle": 14,
3394
3400
  "rawHex": 1,
3395
- "loc": 287,
3401
+ "loc": 288,
3396
3402
  "score": 43
3397
3403
  },
3398
3404
  "tier": "organism",
@@ -3427,7 +3433,7 @@
3427
3433
  "rawText": 6,
3428
3434
  "inlineStyle": 15,
3429
3435
  "rawHex": 0,
3430
- "loc": 280,
3436
+ "loc": 282,
3431
3437
  "score": 43
3432
3438
  },
3433
3439
  "tier": "organism",
@@ -3504,7 +3510,7 @@
3504
3510
  "rawText": 5,
3505
3511
  "inlineStyle": 14,
3506
3512
  "rawHex": 1,
3507
- "loc": 361,
3513
+ "loc": 363,
3508
3514
  "score": 42
3509
3515
  },
3510
3516
  "tier": "atom",
@@ -3614,7 +3620,7 @@
3614
3620
  "rawText": 0,
3615
3621
  "inlineStyle": 3,
3616
3622
  "rawHex": 0,
3617
- "loc": 177,
3623
+ "loc": 178,
3618
3624
  "score": 10
3619
3625
  },
3620
3626
  "tier": "atom",
@@ -3985,7 +3991,7 @@
3985
3991
  "rawText": 0,
3986
3992
  "inlineStyle": 1,
3987
3993
  "rawHex": 0,
3988
- "loc": 189,
3994
+ "loc": 198,
3989
3995
  "score": 2
3990
3996
  },
3991
3997
  "tier": "molecule",
@@ -4002,6 +4008,8 @@
4002
4008
  "exports": [
4003
4009
  "scaleDenominator",
4004
4010
  "valueLabelFontSize",
4011
+ "estimateValueLabelWidth",
4012
+ "shouldFlipEdgeLabel",
4005
4013
  "computeBarLayout",
4006
4014
  "SetBarChart",
4007
4015
  "sideLabelFontSize",
@@ -4012,6 +4020,7 @@
4012
4020
  "SetSlot",
4013
4021
  "SetBarGeometry",
4014
4022
  "SetBarChartProps",
4023
+ "FIXED_MAX_VALUE",
4015
4024
  "PEAK_HEADROOM",
4016
4025
  "SET_BAR_DEFAULT_HEIGHT",
4017
4026
  "GAP_RATIO",
@@ -4030,7 +4039,7 @@
4030
4039
  "showBarLabel"
4031
4040
  ],
4032
4041
  "libDependents": 2,
4033
- "storyRefs": 0,
4042
+ "storyRefs": 1,
4034
4043
  "xproj": {
4035
4044
  "mobile": 0,
4036
4045
  "mcp": 0,
@@ -4044,7 +4053,7 @@
4044
4053
  "rawText": 2,
4045
4054
  "inlineStyle": 8,
4046
4055
  "rawHex": 0,
4047
- "loc": 652,
4056
+ "loc": 699,
4048
4057
  "score": 29
4049
4058
  },
4050
4059
  "tier": "atom",
@@ -4204,7 +4213,8 @@
4204
4213
  "SetStrip",
4205
4214
  "SetStripProps",
4206
4215
  "setCategory",
4207
- "describeSets"
4216
+ "describeSets",
4217
+ "repsRangeLabel"
4208
4218
  ],
4209
4219
  "libDependents": 1,
4210
4220
  "storyRefs": 1,
@@ -4219,12 +4229,12 @@
4219
4229
  "SetBar"
4220
4230
  ],
4221
4231
  "leak": {
4222
- "rawView": 1,
4223
- "rawText": 0,
4224
- "inlineStyle": 1,
4232
+ "rawView": 2,
4233
+ "rawText": 1,
4234
+ "inlineStyle": 3,
4225
4235
  "rawHex": 0,
4226
- "loc": 72,
4227
- "score": 3
4236
+ "loc": 92,
4237
+ "score": 9
4228
4238
  },
4229
4239
  "tier": "organism",
4230
4240
  "verdict": "keep-core",
@@ -4729,7 +4739,7 @@
4729
4739
  "rawText": 12,
4730
4740
  "inlineStyle": 33,
4731
4741
  "rawHex": 0,
4732
- "loc": 631,
4742
+ "loc": 633,
4733
4743
  "score": 98
4734
4744
  },
4735
4745
  "tier": "atom",
@@ -5262,7 +5272,7 @@
5262
5272
  "rawText": 1,
5263
5273
  "inlineStyle": 0,
5264
5274
  "rawHex": 2,
5265
- "loc": 305,
5275
+ "loc": 304,
5266
5276
  "score": 6
5267
5277
  },
5268
5278
  "tier": "molecule",
@@ -5285,7 +5295,7 @@
5285
5295
  "show",
5286
5296
  "hide"
5287
5297
  ],
5288
- "libDependents": 8,
5298
+ "libDependents": 9,
5289
5299
  "storyRefs": 1,
5290
5300
  "xproj": {
5291
5301
  "mobile": 0,
@@ -5489,7 +5499,7 @@
5489
5499
  "LabelProps",
5490
5500
  "OverlineProps"
5491
5501
  ],
5492
- "libDependents": 41,
5502
+ "libDependents": 40,
5493
5503
  "storyRefs": 9,
5494
5504
  "xproj": {
5495
5505
  "mobile": 0,
@@ -5659,7 +5669,7 @@
5659
5669
  "rawText": 4,
5660
5670
  "inlineStyle": 15,
5661
5671
  "rawHex": 0,
5662
- "loc": 1469,
5672
+ "loc": 1481,
5663
5673
  "score": 50
5664
5674
  },
5665
5675
  "tier": "molecule",
@@ -6508,14 +6518,6 @@
6508
6518
  "ExerciseCard",
6509
6519
  "VelocityStrip"
6510
6520
  ],
6511
- [
6512
- "ExerciseCard",
6513
- "PlaceholderStrip"
6514
- ],
6515
- [
6516
- "ExerciseCard",
6517
- "PrBadge"
6518
- ],
6519
6521
  [
6520
6522
  "ExerciseCard",
6521
6523
  "SetRow"
@@ -6537,8 +6539,8 @@
6537
6539
  "ExerciseIndicator"
6538
6540
  ],
6539
6541
  [
6540
- "ExerciseCard",
6541
- "Typography"
6542
+ "ExerciseCardHeading",
6543
+ "Tooltip"
6542
6544
  ],
6543
6545
  [
6544
6546
  "ExerciseCardHeading",
@@ -7487,7 +7489,7 @@
7487
7489
  "rawText": 15,
7488
7490
  "inlineStyle": 36,
7489
7491
  "rawHex": 1,
7490
- "loc": 514,
7492
+ "loc": 515,
7491
7493
  "score": 103
7492
7494
  },
7493
7495
  {
@@ -7497,7 +7499,7 @@
7497
7499
  "rawText": 12,
7498
7500
  "inlineStyle": 33,
7499
7501
  "rawHex": 0,
7500
- "loc": 631,
7502
+ "loc": 633,
7501
7503
  "score": 98
7502
7504
  },
7503
7505
  {
@@ -7507,7 +7509,7 @@
7507
7509
  "rawText": 13,
7508
7510
  "inlineStyle": 32,
7509
7511
  "rawHex": 0,
7510
- "loc": 644,
7512
+ "loc": 645,
7511
7513
  "score": 95
7512
7514
  },
7513
7515
  {
@@ -7517,7 +7519,7 @@
7517
7519
  "rawText": 11,
7518
7520
  "inlineStyle": 24,
7519
7521
  "rawHex": 0,
7520
- "loc": 452,
7522
+ "loc": 453,
7521
7523
  "score": 76
7522
7524
  },
7523
7525
  {
@@ -7537,7 +7539,7 @@
7537
7539
  "rawText": 4,
7538
7540
  "inlineStyle": 15,
7539
7541
  "rawHex": 0,
7540
- "loc": 1469,
7542
+ "loc": 1481,
7541
7543
  "score": 50
7542
7544
  },
7543
7545
  {
@@ -7567,7 +7569,7 @@
7567
7569
  "rawText": 7,
7568
7570
  "inlineStyle": 14,
7569
7571
  "rawHex": 1,
7570
- "loc": 287,
7572
+ "loc": 288,
7571
7573
  "score": 43
7572
7574
  },
7573
7575
  {
@@ -7577,7 +7579,7 @@
7577
7579
  "rawText": 6,
7578
7580
  "inlineStyle": 15,
7579
7581
  "rawHex": 0,
7580
- "loc": 280,
7582
+ "loc": 282,
7581
7583
  "score": 43
7582
7584
  },
7583
7585
  {
@@ -7587,7 +7589,7 @@
7587
7589
  "rawText": 5,
7588
7590
  "inlineStyle": 14,
7589
7591
  "rawHex": 1,
7590
- "loc": 361,
7592
+ "loc": 363,
7591
7593
  "score": 42
7592
7594
  },
7593
7595
  {
@@ -7617,7 +7619,7 @@
7617
7619
  "rawText": 4,
7618
7620
  "inlineStyle": 12,
7619
7621
  "rawHex": 1,
7620
- "loc": 527,
7622
+ "loc": 528,
7621
7623
  "score": 38
7622
7624
  },
7623
7625
  {
@@ -7633,7 +7635,7 @@
7633
7635
  ],
7634
7636
  "substitution": {
7635
7637
  "library(titan)": {
7636
- "Text": 68,
7638
+ "Text": 69,
7637
7639
  "View": 126,
7638
7640
  "TouchableOpacity": 0,
7639
7641
  "Pressable": 54,
@@ -79,9 +79,10 @@ function StepButton({
79
79
  disabled ? '' : 'web:hover:bg-interactive-hover active:bg-interactive-active'
80
80
  )}
81
81
  >
82
+ {/* Was a tertiary text token under an opacity modifier, which emitted no rule (VW-308). */}
82
83
  <Typography
83
84
  variant="body2"
84
- className={cn('leading-none', disabled ? 'text-text-tertiary/40' : 'text-text-secondary')}
85
+ className={cn('leading-none', disabled ? 'text-text-disabled' : 'text-text-secondary')}
85
86
  >
86
87
  {glyph}
87
88
  </Typography>
@@ -1,6 +1,11 @@
1
1
  import type { Decorator, Meta, StoryObj } from '@storybook/react-vite'
2
2
  import { View, Text, Pressable } from 'react-native'
3
3
  import { CircularTimer } from './CircularTimer'
4
+ import { greyRamp, primitiveColors } from '../../../theme/tokens/primitives'
5
+ import { getSemanticColors } from '../../../theme/tokens/semantic'
6
+ import { alpha } from '../../../utils/colors'
7
+
8
+ const t = getSemanticColors('dark')
4
9
 
5
10
  const meta: Meta<typeof CircularTimer> = {
6
11
  title: 'Components/Molecules/CircularTimer',
@@ -32,7 +37,7 @@ export default meta
32
37
  type Story = StoryObj<typeof CircularTimer>
33
38
 
34
39
  const dark: Decorator = (Story) => (
35
- <View style={{ padding: 32, alignItems: 'center', backgroundColor: '#0E0E0E' }}>
40
+ <View style={{ padding: 32, alignItems: 'center', backgroundColor: t['background-frame'] }}>
36
41
  <Story />
37
42
  </View>
38
43
  )
@@ -64,13 +69,13 @@ export const DoneWithLabel: Story = {
64
69
  const DemoButton = ({ label }: { label: string }) => (
65
70
  <Pressable
66
71
  style={{
67
- backgroundColor: 'rgba(255,255,255,0.06)',
72
+ backgroundColor: alpha(primitiveColors.white, 0.06),
68
73
  paddingVertical: 8,
69
74
  paddingHorizontal: 20,
70
75
  borderRadius: 8,
71
76
  }}
72
77
  >
73
- <Text style={{ color: '#DADADA', fontSize: 11, fontWeight: '600' }}>{label}</Text>
78
+ <Text style={{ color: greyRamp[200], fontSize: 11, fontWeight: '600' }}>{label}</Text>
74
79
  </Pressable>
75
80
  )
76
81
 
@@ -91,7 +91,7 @@ export const WithIcon: Story = {
91
91
  function ActionButton() {
92
92
  return (
93
93
  <View className="bg-brand-primary px-4 py-2 rounded-md">
94
- <Text className="text-white font-semibold text-sm">Create New</Text>
94
+ <Text className="text-on-brand-primary font-semibold text-sm">Create New</Text>
95
95
  </View>
96
96
  )
97
97
  }
@@ -1,5 +1,8 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite'
2
2
  import { Gauge } from './Gauge'
3
+ import { getSemanticColors } from '../../../theme/tokens/semantic'
4
+
5
+ const t = getSemanticColors('dark')
3
6
 
4
7
  const meta: Meta<typeof Gauge> = {
5
8
  title: 'Custom/Charts/Gauge',
@@ -32,7 +35,7 @@ export const ArbitraryDomain: Story = {
32
35
 
33
36
  /** Single-color override ignores the threshold bands. */
34
37
  export const OverrideColor: Story = {
35
- args: { value: 55, unit: '%', label: 'Coverage', color: '#5B9BD5', size: 180 },
38
+ args: { value: 55, unit: '%', label: 'Coverage', color: t['data-7'], size: 180 },
36
39
  }
37
40
 
38
41
  /** Value above max is clamped for the fill but shown verbatim. */
@@ -1,6 +1,8 @@
1
1
  import { View, Text, type ViewProps } from 'react-native'
2
2
  import { cn } from '../../../utils/cn'
3
3
  import { getSemanticColors } from '../../../theme/tokens/semantic'
4
+ import { primitiveColors } from '../../../theme/tokens/primitives'
5
+ import { alpha } from '../../../utils/colors'
4
6
 
5
7
  const sem = getSemanticColors('dark')
6
8
 
@@ -36,7 +38,7 @@ export interface GaugeProps extends Omit<ViewProps, 'children'> {
36
38
  const STATUS_SUCCESS = sem['status-success']
37
39
  const STATUS_WARNING = sem['status-warning']
38
40
  const STATUS_ERROR = sem['status-error']
39
- const TRACK = 'rgba(255,255,255,0.08)'
41
+ const TRACK = alpha(primitiveColors.white, 0.08)
40
42
 
41
43
  /** Titan status-token bands for a 0–100 score. */
42
44
  const DEFAULT_THRESHOLDS: GaugeThreshold[] = [
@@ -1,5 +1,8 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite'
2
2
  import { Scatter, type ScatterDatum } from './Scatter'
3
+ import { getSemanticColors } from '../../../theme/tokens/semantic'
4
+
5
+ const t = getSemanticColors('dark')
3
6
 
4
7
  const meta: Meta<typeof Scatter> = {
5
8
  title: 'Custom/Charts/Scatter',
@@ -16,12 +19,12 @@ type Story = StoryObj<typeof Scatter>
16
19
 
17
20
  /** Modules on the instability × abstractness "main sequence". */
18
21
  const mainSequence: ScatterDatum[] = [
19
- { id: 'core', x: 0.08, y: 0.85, r: 10, color: '#14B8A6', label: 'core' },
20
- { id: 'domain', x: 0.22, y: 0.7, r: 8, color: '#14B8A6', label: 'domain' },
21
- { id: 'services', x: 0.45, y: 0.4, r: 12, color: '#5B9BD5', label: 'services' },
22
- { id: 'api', x: 0.6, y: 0.35, r: 7, color: '#5B9BD5', label: 'api' },
23
- { id: 'cli', x: 0.9, y: 0.08, r: 9, color: '#F4A736', label: 'cli' },
24
- { id: 'utils', x: 0.85, y: 0.75, r: 6, color: '#F83030', label: 'utils (pain?)' },
22
+ { id: 'core', x: 0.08, y: 0.85, r: 10, color: t['data-1'], label: 'core' },
23
+ { id: 'domain', x: 0.22, y: 0.7, r: 8, color: t['data-1'], label: 'domain' },
24
+ { id: 'services', x: 0.45, y: 0.4, r: 12, color: t['data-7'], label: 'services' },
25
+ { id: 'api', x: 0.6, y: 0.35, r: 7, color: t['data-7'], label: 'api' },
26
+ { id: 'cli', x: 0.9, y: 0.08, r: 9, color: t['data-6'], label: 'cli' },
27
+ { id: 'utils', x: 0.85, y: 0.75, r: 6, color: t['data-4'], label: 'utils (pain?)' },
25
28
  ]
26
29
 
27
30
  export const Default: Story = {
@@ -90,7 +93,7 @@ export const Outlier: Story = {
90
93
  args: {
91
94
  data: [
92
95
  ...mainSequence,
93
- { id: 'legacy', x: 0.98, y: 0.98, r: 16, color: '#F83030', label: 'legacy.ts' },
96
+ { id: 'legacy', x: 0.98, y: 0.98, r: 16, color: t['data-4'], label: 'legacy.ts' },
94
97
  ],
95
98
  width: 480,
96
99
  height: 340,
@@ -1,6 +1,8 @@
1
1
  import { View, Text, Pressable, type ViewProps } from 'react-native'
2
2
  import { cn } from '../../../utils/cn'
3
3
  import { DATAVIZ_CATEGORICAL_PALETTE } from '../../../theme/extracted-colors-dataviz'
4
+ import { primitiveColors } from '../../../theme/tokens/primitives'
5
+ import { alpha } from '../../../utils/colors'
4
6
 
5
7
  export interface ScatterDatum {
6
8
  /** Stable identity — returned by onPress and used as the React key. */
@@ -49,9 +51,9 @@ export interface ScatterProps extends Omit<ViewProps, 'children'> {
49
51
  /** Titan categorical fallback palette (see extracted-colors-dataviz). */
50
52
  const PALETTE = DATAVIZ_CATEGORICAL_PALETTE
51
53
 
52
- const GRID_LINE = 'rgba(255,255,255,0.07)'
53
- const AXIS_LINE = 'rgba(255,255,255,0.18)'
54
- const DIAGONAL_LINE = 'rgba(255,255,255,0.28)'
54
+ const GRID_LINE = alpha(primitiveColors.white, 0.07)
55
+ const AXIS_LINE = alpha(primitiveColors.white, 0.18)
56
+ const DIAGONAL_LINE = alpha(primitiveColors.white, 0.28)
55
57
  const DEFAULT_R = 6
56
58
 
57
59
  const PLOT_LEFT = 40
@@ -334,7 +336,7 @@ export function Scatter({
334
336
  backgroundColor: p.color,
335
337
  opacity: selected ? 1 : 0.82,
336
338
  borderWidth: selected ? 2 : 0,
337
- borderColor: '#ffffff',
339
+ borderColor: primitiveColors.white,
338
340
  }}
339
341
  >
340
342
  {showLabel && (
@@ -220,7 +220,7 @@ export const WithBadge: Story = {
220
220
  label="Messages"
221
221
  badge={
222
222
  <View className="bg-status-error rounded-full px-1.5 py-0.5">
223
- <Text className="text-white text-xs font-bold">5</Text>
223
+ <Text className="text-on-status-error text-xs font-bold">5</Text>
224
224
  </View>
225
225
  }
226
226
  />
@@ -91,7 +91,7 @@ export const Default: Story = {
91
91
  <View
92
92
  className={cn(
93
93
  'px-2 py-0.5 rounded-full self-start',
94
- user.status === 'Active' ? 'bg-status-success/20' : 'bg-status-warning/20'
94
+ user.status === 'Active' ? 'bg-status-success-subtle' : 'bg-status-warning-subtle'
95
95
  )}
96
96
  >
97
97
  <Text
@@ -690,7 +690,7 @@ export function TableSelectAllCell({ className }: TableSelectAllCellProps) {
690
690
  )}
691
691
  >
692
692
  {(allSelected || someSelected) && (
693
- <Text className="text-white text-xs font-bold">{allSelected ? '✓' : '−'}</Text>
693
+ <Text className="text-on-brand-primary text-xs font-bold">{allSelected ? '✓' : '−'}</Text>
694
694
  )}
695
695
  </Pressable>
696
696
  </View>
@@ -726,7 +726,7 @@ export function TableSelectCell({ rowId, className }: TableSelectCellProps) {
726
726
  : 'border-hairline-strong bg-transparent web:hover:border-brand-primary'
727
727
  )}
728
728
  >
729
- {isSelected && <Text className="text-white text-xs font-bold">✓</Text>}
729
+ {isSelected && <Text className="text-on-brand-primary text-xs font-bold">✓</Text>}
730
730
  </Pressable>
731
731
  </View>
732
732
  )