@webority/theme 0.99.0 → 0.100.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 (75) hide show
  1. package/README.md +9 -9
  2. package/dist/published-theme.json +8 -31
  3. package/dist/purge-safelist.json +1 -0
  4. package/dist/webority-theme.css +1 -1
  5. package/index.scss +4 -3
  6. package/package.json +6 -3
  7. package/scss/_bootstrap.generated.scss +18 -0
  8. package/scss/_components.scss +38 -38
  9. package/scss/_marketing.scss +8 -8
  10. package/scss/_tokens.generated.scss +831 -0
  11. package/scss/_tokens.scss +4 -638
  12. package/scss/_variables.scss +7 -12
  13. package/scss/_wui-components.scss +1 -1
  14. package/scss/_wui-residual.scss +8 -0
  15. package/scss/wui/_avatar-picker.scss +2 -2
  16. package/scss/wui/_calendar.scss +6 -6
  17. package/scss/wui/_card.scss +1 -1
  18. package/scss/wui/_carousel.scss +2 -2
  19. package/scss/wui/_chart-card.scss +2 -2
  20. package/scss/wui/_chart.scss +8 -8
  21. package/scss/wui/_chat.scss +2 -2
  22. package/scss/wui/_choice.scss +78 -78
  23. package/scss/wui/_code-block.scss +2 -2
  24. package/scss/wui/_command-palette.scss +9 -9
  25. package/scss/wui/_comment-thread.scss +5 -5
  26. package/scss/wui/_consent-banner.scss +2 -2
  27. package/scss/wui/_controls.scss +52 -52
  28. package/scss/wui/_data.scss +38 -38
  29. package/scss/wui/_disclosure.scss +6 -6
  30. package/scss/wui/_display.scss +51 -51
  31. package/scss/wui/_dock.scss +4 -4
  32. package/scss/wui/_drawer.scss +3 -3
  33. package/scss/wui/_file-viewer.scss +2 -2
  34. package/scss/wui/_filter-popover.scss +1 -1
  35. package/scss/wui/_floating.scss +1 -1
  36. package/scss/wui/_flow.scss +60 -60
  37. package/scss/wui/_groups.scss +7 -7
  38. package/scss/wui/_hover-card.scss +1 -1
  39. package/scss/wui/_image-crop.scss +3 -3
  40. package/scss/wui/_interaction.scss +3 -3
  41. package/scss/wui/_kanban.scss +4 -4
  42. package/scss/wui/_lightbox.scss +2 -2
  43. package/scss/wui/_media.scss +28 -28
  44. package/scss/wui/_mention-input.scss +4 -4
  45. package/scss/wui/_menu-motion.scss +1 -1
  46. package/scss/wui/_modal-remote.scss +2 -2
  47. package/scss/wui/_navigation-menu.scss +4 -4
  48. package/scss/wui/_navigation.scss +25 -25
  49. package/scss/wui/_notification-center.scss +4 -4
  50. package/scss/wui/_onboarding-checklist.scss +2 -2
  51. package/scss/wui/_overlays.scss +21 -21
  52. package/scss/wui/_pending.scss +1 -1
  53. package/scss/wui/_rich-text.scss +7 -7
  54. package/scss/wui/_rolling-number.scss +1 -1
  55. package/scss/wui/_score-scale.scss +1 -1
  56. package/scss/wui/_sections.scss +8 -8
  57. package/scss/wui/_shell-parts.scss +15 -15
  58. package/scss/wui/_shell.scss +20 -20
  59. package/scss/wui/_shortcuts.scss +1 -1
  60. package/scss/wui/_sortable.scss +2 -2
  61. package/scss/wui/_split-view.scss +4 -4
  62. package/scss/wui/_theme-toggle.scss +1 -1
  63. package/scss/wui/_tone-pill.scss +2 -2
  64. package/scss/wui/_toolbar.scss +2 -2
  65. package/scss/wui/_tree.scss +3 -3
  66. package/scss/wui/_typography.scss +6 -6
  67. package/scss/wui/_utilities.scss +27 -19
  68. package/scss/wui/_whats-new.scss +4 -4
  69. package/scss/wui/_workspace.scss +16 -16
  70. package/scss/wui/tour/_advance.scss +1 -1
  71. package/scss/wui/tour/_base.scss +1 -1
  72. package/scss/wui/tour/_end.scss +1 -1
  73. package/scss/wui/tour/_motion.scss +1 -1
  74. package/token-meanings.json +56 -64
  75. package/scss/_wui-aliases.scss +0 -495
@@ -127,7 +127,7 @@
127
127
  padding: 14px 16px;
128
128
  min-height: 56px;
129
129
  border: 1px solid var(--color-border);
130
- border-radius: var(--radius);
130
+ border-radius: var(--wui-radius-md);
131
131
  background: var(--color-surface);
132
132
  transition:
133
133
  border-color 0.12s ease,
@@ -219,7 +219,7 @@
219
219
  }
220
220
  .form-check-input[type="checkbox"],
221
221
  .wui-check {
222
- border-radius: var(--radius-sm);
222
+ border-radius: var(--wui-radius-sm);
223
223
  corner-shape: squircle;
224
224
  }
225
225
  .form-check-input[type="radio"],
@@ -393,9 +393,9 @@
393
393
  .textarea {
394
394
  box-sizing: border-box;
395
395
  width: 100%;
396
- height: var(--wui-control-height);
396
+ height: var(--wui-control-md);
397
397
  padding: 6px 12px;
398
- border-radius: var(--wui-field-radius);
398
+ border-radius: var(--wui-field-md-radius);
399
399
  border: 1px solid var(--color-field-border);
400
400
  background: var(--color-field-bg);
401
401
  font-size: 14px;
@@ -411,17 +411,17 @@
411
411
  // BS field can match without the .input alias.
412
412
  .form-control-sm,
413
413
  .input-sm {
414
- height: var(--wui-control-height-sm);
414
+ height: var(--wui-control-sm);
415
415
  padding: 5px 10px;
416
416
  font-size: 13px;
417
- border-radius: var(--wui-field-radius-sm);
417
+ border-radius: var(--wui-field-sm-radius);
418
418
  }
419
419
  .form-control-lg,
420
420
  .input-lg {
421
- height: var(--wui-control-height-lg);
421
+ height: var(--wui-control-lg);
422
422
  padding: 9px 16px;
423
423
  font-size: 16px;
424
- border-radius: var(--wui-field-radius-lg);
424
+ border-radius: var(--wui-field-lg-radius);
425
425
  }
426
426
  // xl (size="xl"): the 52px control for large forms. A literal height, because the control-height
427
427
  // ladder stops at 44px and its tokens live in the theme's token file. A floating label needs no
@@ -430,7 +430,7 @@
430
430
  height: 52px;
431
431
  padding: 9px 16px;
432
432
  font-size: 16px;
433
- border-radius: var(--wui-field-radius-lg);
433
+ border-radius: var(--wui-field-lg-radius);
434
434
  }
435
435
  .textarea,
436
436
  textarea.form-control {
@@ -474,7 +474,7 @@ textarea.form-control.autosize {
474
474
  background-color: var(--color-surface);
475
475
  color: var(--color-text);
476
476
  // Soft brand border is the focus cue (per the reference) — no ring/shadow.
477
- border-color: var(--color-focus-border);
477
+ border-color: var(--color-field-border-focus);
478
478
  box-shadow: none;
479
479
  }
480
480
  .form-control::placeholder,
@@ -614,7 +614,7 @@ textarea.form-control.autosize {
614
614
  .field-error {
615
615
  font-size: 12px;
616
616
  line-height: normal;
617
- // Must clear AA against the surface: --color-danger-active (#E82646) is 4.38:1 at this
617
+ // Must clear AA against the surface: --color-danger-pressed (#E82646) is 4.38:1 at this
618
618
  // 12px size, under the 4.5:1 floor the a11y gate enforces.
619
619
  color: var(--color-danger-text);
620
620
  // Tighten the space above the message: .field's 10px gap → effective 8px, without
@@ -768,7 +768,7 @@ form .wui-field-message:empty {
768
768
  color: var(--color-text);
769
769
  }
770
770
  .num-stepper-btns button:active {
771
- color: var(--color-primary-ink);
771
+ color: var(--color-primary-text);
772
772
  }
773
773
  .input-date-wrap > .input {
774
774
  padding-right: 38px;
@@ -896,7 +896,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
896
896
  padding-left: calc(var(--wui-input-icon-slot) + var(--wui-input-icon-gap));
897
897
  }
898
898
  .input-icon:focus-within > .ic {
899
- color: var(--color-primary-ink);
899
+ color: var(--color-primary-text);
900
900
  }
901
901
 
902
902
  // Trailing action beside the field — a control (a labelled button, or a confirmation once the
@@ -939,14 +939,14 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
939
939
  border: none;
940
940
  background: transparent;
941
941
  color: var(--color-text-subtle);
942
- border-radius: var(--radius);
942
+ border-radius: var(--wui-radius-md);
943
943
  cursor: pointer;
944
944
  transition:
945
945
  color 0.12s ease,
946
946
  background 0.12s ease;
947
947
  }
948
948
  .pw-toggle:hover {
949
- color: var(--color-primary-ink);
949
+ color: var(--color-primary-text);
950
950
  background: transparent;
951
951
  }
952
952
  .pw-toggle:focus-visible {
@@ -1009,7 +1009,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
1009
1009
  align-items: stretch;
1010
1010
  width: 100%;
1011
1011
  border: 1px solid var(--color-field-border);
1012
- border-radius: var(--wui-field-radius);
1012
+ border-radius: var(--wui-field-md-radius);
1013
1013
  // Soft-filled at rest, white on focus — one shared fill for the whole control so the
1014
1014
  // prefix/suffix and the input body are always the SAME colour combination as the field.
1015
1015
  background: var(--color-field-bg);
@@ -1022,7 +1022,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
1022
1022
  }
1023
1023
  .input-affixed:focus-within {
1024
1024
  background: var(--color-surface);
1025
- border-color: var(--color-focus-border);
1025
+ border-color: var(--color-field-border-focus);
1026
1026
  }
1027
1027
  .input-affixed:has(.input.error),
1028
1028
  .input-affixed:has(.input[aria-invalid="true"]) {
@@ -1058,11 +1058,11 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
1058
1058
  }
1059
1059
  .input-affixed .affix-pre {
1060
1060
  border-right: 1px solid var(--color-border);
1061
- border-radius: var(--wui-field-radius) 0 0 var(--wui-field-radius);
1061
+ border-radius: var(--wui-field-md-radius) 0 0 var(--wui-field-md-radius);
1062
1062
  }
1063
1063
  .input-affixed .affix-suf {
1064
1064
  border-left: 1px solid var(--color-border);
1065
- border-radius: 0 var(--wui-field-radius) var(--wui-field-radius) 0;
1065
+ border-radius: 0 var(--wui-field-md-radius) var(--wui-field-md-radius) 0;
1066
1066
  }
1067
1067
 
1068
1068
  // Floating label — the label starts centred as the placeholder, then slides up and shrinks
@@ -1082,7 +1082,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
1082
1082
  padding: 0 6px;
1083
1083
  // Rounded so the background mask reads as a soft pill sitting on the border, not a sharp
1084
1084
  // rectangle. Invisible at rest (label fill == field fill); only shows once it floats up.
1085
- border-radius: var(--radius-sm);
1085
+ border-radius: var(--wui-radius-sm);
1086
1086
  max-width: calc(100% - 24px);
1087
1087
  overflow: hidden;
1088
1088
  text-overflow: ellipsis;
@@ -1107,7 +1107,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
1107
1107
  transform: translateY(-50%) scale(0.86);
1108
1108
  }
1109
1109
  .field-float .input:focus ~ .float-label {
1110
- color: var(--color-primary-ink);
1110
+ color: var(--color-primary-text);
1111
1111
  }
1112
1112
  .field-float .input.error ~ .float-label {
1113
1113
  color: var(--color-danger-text);
@@ -1167,7 +1167,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
1167
1167
  transform: translateY(-50%) scale(0.86);
1168
1168
  }
1169
1169
  .field-float:has(.search-select-control.open) .float-label {
1170
- color: var(--color-primary-ink);
1170
+ color: var(--color-primary-text);
1171
1171
  // The control turns white while open, so the label mask follows (a closed select keeps the
1172
1172
  // default muted mask, matching its muted resting fill, even while it holds focus).
1173
1173
  background: var(--color-surface);
@@ -1347,7 +1347,7 @@ wui-select[compact] {
1347
1347
  // red border around a non-input group (e.g. a structure-form card row)
1348
1348
  .group-invalid {
1349
1349
  border: 1px solid var(--color-danger);
1350
- border-radius: var(--radius);
1350
+ border-radius: var(--wui-radius-md);
1351
1351
  padding: 8px;
1352
1352
  }
1353
1353
 
@@ -1357,7 +1357,7 @@ wui-select[compact] {
1357
1357
  display: flex;
1358
1358
  align-items: stretch;
1359
1359
  border: 1px solid var(--color-field-border);
1360
- border-radius: var(--wui-field-radius);
1360
+ border-radius: var(--wui-field-md-radius);
1361
1361
  // Soft-filled at rest, white on focus — the numeric input and its unit pill share the
1362
1362
  // one wrapper fill, same colour combination as every other field.
1363
1363
  background: var(--color-field-bg);
@@ -1371,7 +1371,7 @@ wui-select[compact] {
1371
1371
  }
1372
1372
  .input-with-unit:focus-within {
1373
1373
  background: var(--color-surface);
1374
- border-color: var(--color-focus-border);
1374
+ border-color: var(--color-field-border-focus);
1375
1375
  }
1376
1376
  .input-with-unit:has(.num-input.error) {
1377
1377
  background: var(--color-surface);
@@ -1390,13 +1390,13 @@ wui-select[compact] {
1390
1390
  // wrapper stacks the wrapper's 2px on top, so a 36px field renders at 38px with a
1391
1391
  // unit. Subtracting the border here keeps input + wrapper border == the control
1392
1392
  // height at every size.
1393
- height: calc(var(--wui-control-height) - 2px);
1393
+ height: calc(var(--wui-control-md) - 2px);
1394
1394
  }
1395
1395
  .input-with-unit .num-input.input-sm {
1396
- height: calc(var(--wui-control-height-sm) - 2px);
1396
+ height: calc(var(--wui-control-sm) - 2px);
1397
1397
  }
1398
1398
  .input-with-unit .num-input.input-lg {
1399
- height: calc(var(--wui-control-height-lg) - 2px);
1399
+ height: calc(var(--wui-control-lg) - 2px);
1400
1400
  }
1401
1401
  .input-with-unit .num-input.wui-input-xl {
1402
1402
  height: calc(52px - 2px);
@@ -1417,7 +1417,7 @@ wui-select[compact] {
1417
1417
  line-height: 1;
1418
1418
  font-weight: 500;
1419
1419
  color: var(--color-text-muted);
1420
- font-family: var(--font-sans);
1420
+ font-family: var(--wui-font-ui);
1421
1421
  display: inline-flex;
1422
1422
  align-items: center;
1423
1423
  white-space: nowrap;
@@ -1431,7 +1431,7 @@ wui-select[compact] {
1431
1431
  align-items: stretch;
1432
1432
  border: 1px solid var(--color-field-border);
1433
1433
  // Field radius ladder (matches AppInput): md 18px; sm/lg step below.
1434
- border-radius: var(--wui-field-radius);
1434
+ border-radius: var(--wui-field-md-radius);
1435
1435
  // Match AppInput exactly: muted resting fill that lifts to a clean surface on focus.
1436
1436
  background: var(--color-field-bg);
1437
1437
  transition:
@@ -1447,7 +1447,7 @@ wui-select[compact] {
1447
1447
  }
1448
1448
  .num-wrap:focus-within {
1449
1449
  background: var(--color-surface);
1450
- border-color: var(--color-focus-border);
1450
+ border-color: var(--color-field-border-focus);
1451
1451
  }
1452
1452
  .num-wrap:has(.num-input.error),
1453
1453
  .num-wrap:has(.num-input.is-invalid),
@@ -1489,7 +1489,7 @@ wui-select[compact] {
1489
1489
  display: grid;
1490
1490
  place-items: center;
1491
1491
  // A control-height cell that shrinks before the value does in a narrow field.
1492
- flex: 0 1 var(--wui-control-height);
1492
+ flex: 0 1 var(--wui-control-md);
1493
1493
  min-width: 0;
1494
1494
  overflow: hidden;
1495
1495
  // Fill the field height and centre the glyph. `height: 100%` resolved to auto
@@ -1506,16 +1506,16 @@ wui-select[compact] {
1506
1506
  background 0.12s ease;
1507
1507
  }
1508
1508
  .num-btn:hover:not(:disabled) {
1509
- color: var(--color-primary-ink);
1509
+ color: var(--color-primary-text);
1510
1510
  background: var(--color-bg-muted);
1511
1511
  }
1512
1512
  .num-btn:focus-visible {
1513
1513
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
1514
1514
  outline-offset: var(--wui-focus-ring-inset);
1515
- color: var(--color-primary-ink);
1515
+ color: var(--color-primary-text);
1516
1516
  }
1517
1517
  .num-btn:active:not(:disabled) {
1518
- color: color-mix(in srgb, var(--color-primary-ink) 80%, black);
1518
+ color: color-mix(in srgb, var(--color-primary-text) 80%, black);
1519
1519
  }
1520
1520
  .num-btn:disabled {
1521
1521
  color: var(--color-text-subtle);
@@ -1536,19 +1536,19 @@ wui-select[compact] {
1536
1536
  // font), the wrapper carries .num-wrap-sm / .num-wrap-lg to scale the button
1537
1537
  // cells to match. Default (md) uses the control-height cell above.
1538
1538
  .num-wrap-sm {
1539
- border-radius: var(--wui-field-radius-sm);
1539
+ border-radius: var(--wui-field-sm-radius);
1540
1540
  }
1541
1541
  .num-wrap-sm .num-btn {
1542
- flex-basis: var(--wui-control-height-sm);
1542
+ flex-basis: var(--wui-control-sm);
1543
1543
  }
1544
1544
  .num-wrap-sm .num-input {
1545
1545
  font-size: 13px;
1546
1546
  }
1547
1547
  .num-wrap-lg {
1548
- border-radius: var(--wui-field-radius-lg);
1548
+ border-radius: var(--wui-field-lg-radius);
1549
1549
  }
1550
1550
  .num-wrap-lg .num-btn {
1551
- flex-basis: var(--wui-control-height-lg);
1551
+ flex-basis: var(--wui-control-lg);
1552
1552
  }
1553
1553
  .num-wrap-lg .num-input {
1554
1554
  font-size: 16px;
@@ -1563,7 +1563,7 @@ wui-select[compact] {
1563
1563
  font-size: 14px;
1564
1564
  font-weight: 500;
1565
1565
  color: var(--color-text-muted);
1566
- font-family: var(--font-sans);
1566
+ font-family: var(--wui-font-ui);
1567
1567
  display: inline-flex;
1568
1568
  align-items: center;
1569
1569
  white-space: nowrap;
@@ -1584,7 +1584,7 @@ wui-select[compact] {
1584
1584
  border: 1px solid var(--color-border);
1585
1585
  }
1586
1586
  .badge-primary {
1587
- @include wui-tone-pill-colors(primary, var(--color-primary-ink));
1587
+ @include wui-tone-pill-colors(primary, var(--color-primary-text));
1588
1588
  border-color: color-mix(in srgb, var(--color-primary) 25%, transparent);
1589
1589
  }
1590
1590
  .badge-success {
@@ -1637,7 +1637,7 @@ wui-select[compact] {
1637
1637
  @include wui-tone-pill-colors(info);
1638
1638
  }
1639
1639
  .status-label.primary {
1640
- @include wui-tone-pill-colors(primary, var(--color-primary-ink));
1640
+ @include wui-tone-pill-colors(primary, var(--color-primary-text));
1641
1641
  }
1642
1642
  // Default/neutral — also the bare `.status-label` look, so an unknown or omitted
1643
1643
  // tone still renders as a proper pill instead of transparent text.
@@ -1656,7 +1656,7 @@ wui-select[compact] {
1656
1656
  display: inline-flex;
1657
1657
  align-items: center;
1658
1658
  gap: 8px;
1659
- min-height: var(--wui-control-height);
1659
+ min-height: var(--wui-control-md);
1660
1660
  padding: 0 14px;
1661
1661
  border: 1px solid var(--color-border);
1662
1662
  border-radius: 999px;
@@ -1688,7 +1688,7 @@ wui-select[compact] {
1688
1688
  .choice-chip:has(input:checked) {
1689
1689
  border-color: color-mix(in srgb, var(--color-primary) 30%, transparent);
1690
1690
  background: var(--color-primary-soft);
1691
- color: var(--color-primary-ink);
1691
+ color: var(--color-primary-text);
1692
1692
  }
1693
1693
  // A tick before the label, so selection does not rest on the tint alone. Its slot is kept on every
1694
1694
  // chip, so picking one never widens it and a wrapping row never shifts.
@@ -1721,19 +1721,19 @@ wui-select[compact] {
1721
1721
  }
1722
1722
  .choice-chip:has(input:checked) .count {
1723
1723
  background: var(--color-surface);
1724
- color: var(--color-primary-ink);
1724
+ color: var(--color-primary-text);
1725
1725
  }
1726
1726
 
1727
1727
  // Size scale (`size`): height, padding, gap and font step together; md is the base above.
1728
1728
  .choice-chip-sm {
1729
1729
  gap: 6px;
1730
- min-height: var(--wui-control-height-sm);
1730
+ min-height: var(--wui-control-sm);
1731
1731
  padding: 0 11px;
1732
1732
  font-size: 13px;
1733
1733
  }
1734
1734
  .choice-chip-lg {
1735
1735
  gap: 10px;
1736
- min-height: var(--wui-control-height-lg);
1736
+ min-height: var(--wui-control-lg);
1737
1737
  padding: 0 18px;
1738
1738
  font-size: 15px;
1739
1739
  }
@@ -1834,11 +1834,11 @@ wui-otp {
1834
1834
  width: 44px;
1835
1835
  min-width: 22px;
1836
1836
  flex: 0 1 auto;
1837
- height: var(--wui-control-height-lg);
1837
+ height: var(--wui-control-lg);
1838
1838
  // Colour model matches AppInput exactly: muted resting fill + soft border, same
1839
1839
  // field radius. State rules below mirror AppInput's hover/focus/invalid/disabled.
1840
1840
  border: 1px solid var(--color-field-border);
1841
- border-radius: var(--wui-field-radius);
1841
+ border-radius: var(--wui-field-md-radius);
1842
1842
  background: var(--color-field-bg);
1843
1843
  font-size: 18px;
1844
1844
  font-weight: 600;
@@ -1858,7 +1858,7 @@ wui-otp {
1858
1858
  // surface fill + soft brand border, no ring.
1859
1859
  .otp-slot.active {
1860
1860
  background: var(--color-surface);
1861
- border-color: var(--color-focus-border);
1861
+ border-color: var(--color-field-border-focus);
1862
1862
  box-shadow: none;
1863
1863
  }
1864
1864
  .otp-field:disabled ~ .otp-slots .otp-slot {
@@ -1954,7 +1954,7 @@ wui-otp[aria-invalid="true"] .otp-slot {
1954
1954
  background-color: var(--color-surface);
1955
1955
  border: 3px solid var(--color-primary);
1956
1956
  border-radius: 50%;
1957
- box-shadow: var(--wui-shadow-thumb);
1957
+ box-shadow: var(--wui-thumb-shadow);
1958
1958
  cursor: pointer;
1959
1959
  // The thumb owns every touch that starts on it. Left at the default, a touch browser
1960
1960
  // reads the first few pixels of a horizontal drag as a pan, cancels the pointer stream
@@ -1967,7 +1967,7 @@ wui-otp[aria-invalid="true"] .otp-slot {
1967
1967
  }
1968
1968
  .slider-thumb:hover:not(:disabled) {
1969
1969
  transform: scale(1.08);
1970
- box-shadow: var(--wui-shadow-thumb-hover);
1970
+ box-shadow: var(--wui-thumb-shadow-hover);
1971
1971
  }
1972
1972
  .slider-thumb:active:not(:disabled) {
1973
1973
  transform: scale(1.14);
@@ -43,9 +43,9 @@
43
43
  .empty-state-icon {
44
44
  width: 48px;
45
45
  height: 48px;
46
- border-radius: var(--radius-lg);
46
+ border-radius: var(--wui-radius-lg);
47
47
  background: var(--color-primary-soft);
48
- color: var(--color-primary-ink);
48
+ color: var(--color-primary-text);
49
49
  display: inline-flex;
50
50
  align-items: center;
51
51
  justify-content: center;
@@ -70,7 +70,7 @@
70
70
  height: 50px;
71
71
  border-radius: 50%;
72
72
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
73
- color: var(--color-primary-ink);
73
+ color: var(--color-primary-text);
74
74
  margin-bottom: 16px;
75
75
  }
76
76
  .tbl-empty-title {
@@ -254,7 +254,7 @@
254
254
  height: 28px;
255
255
  padding: 0;
256
256
  border: none;
257
- border-radius: var(--radius-sm, 6px);
257
+ border-radius: var(--wui-radius-sm, 6px);
258
258
  background: transparent;
259
259
  color: var(--color-text-subtle);
260
260
  cursor: pointer;
@@ -271,7 +271,7 @@
271
271
  outline-offset: var(--wui-focus-ring-offset);
272
272
  }
273
273
  .wui-expand-toggle .wui-icon {
274
- transition: transform 0.18s var(--wui-ease-out-quart, ease);
274
+ transition: transform 0.18s var(--wui-ease-out, ease);
275
275
  }
276
276
  .wui-expand-toggle.is-open .wui-icon {
277
277
  transform: rotate(180deg);
@@ -310,7 +310,7 @@
310
310
  padding: 0 12px;
311
311
  background: var(--wui-table-header-bg, var(--color-bg-muted));
312
312
  border-bottom: none;
313
- font-family: var(--font-sans);
313
+ font-family: var(--wui-font-ui);
314
314
  font-size: 12px;
315
315
  font-weight: 500;
316
316
  line-height: 17px;
@@ -323,17 +323,17 @@
323
323
  }
324
324
  .table-ledger thead th:first-child {
325
325
  padding-left: 20px;
326
- border-radius: var(--radius-sm) 0 0 var(--radius-sm);
326
+ border-radius: var(--wui-radius-sm) 0 0 var(--wui-radius-sm);
327
327
  }
328
328
  .table-ledger thead th:last-child {
329
329
  padding-right: 20px;
330
- border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
330
+ border-radius: 0 var(--wui-radius-sm) var(--wui-radius-sm) 0;
331
331
  }
332
332
  .table-ledger tbody td {
333
333
  height: 54px;
334
334
  padding: 12px;
335
335
  border-bottom: 0.5px solid var(--color-border);
336
- font-family: var(--font-sans);
336
+ font-family: var(--wui-font-ui);
337
337
  font-size: 12px;
338
338
  font-weight: 500;
339
339
  line-height: 15px;
@@ -503,7 +503,7 @@
503
503
  gap: 8px;
504
504
  min-height: 40px;
505
505
  padding: 4px 8px 4px 16px;
506
- border-radius: var(--radius);
506
+ border-radius: var(--wui-radius-md);
507
507
  background: var(--color-primary-soft);
508
508
  }
509
509
  .wui-table-toolbar-count {
@@ -636,8 +636,8 @@
636
636
  padding: 12px;
637
637
  background: var(--color-surface);
638
638
  border: 1px solid var(--color-border);
639
- border-radius: var(--radius-xl);
640
- box-shadow: var(--shadow-overlay);
639
+ border-radius: var(--wui-radius-xl);
640
+ box-shadow: var(--wui-shadow-popover);
641
641
  }
642
642
  .wui-filter-more:not([open]) > .wui-filter-more-panel {
643
643
  display: none;
@@ -670,7 +670,7 @@
670
670
  overflow-y: auto;
671
671
  padding: 16px 20px 24px;
672
672
  border-width: 1px 0 0;
673
- border-radius: var(--radius-xl) var(--radius-xl) 0 0;
673
+ border-radius: var(--wui-radius-xl) var(--wui-radius-xl) 0 0;
674
674
  }
675
675
  .wui-filter-more[open] > summary::before {
676
676
  content: "";
@@ -702,12 +702,12 @@
702
702
  .select.tpg-select {
703
703
  width: auto;
704
704
  min-width: 64px;
705
- height: var(--wui-control-height-sm);
706
- min-height: var(--wui-control-height-sm);
705
+ height: var(--wui-control-sm);
706
+ min-height: var(--wui-control-sm);
707
707
  padding: 0 28px 0 12px;
708
708
  font-size: 13px;
709
709
  font-weight: 600;
710
- border-radius: var(--radius);
710
+ border-radius: var(--wui-radius-md);
711
711
  background-position: right 8px center;
712
712
  background-size: 14px;
713
713
  }
@@ -728,8 +728,8 @@
728
728
  .tpg-arrow {
729
729
  display: grid;
730
730
  place-items: center;
731
- width: var(--wui-control-height-sm);
732
- height: var(--wui-control-height-sm);
731
+ width: var(--wui-control-sm);
732
+ height: var(--wui-control-sm);
733
733
  border: none;
734
734
  background: transparent;
735
735
  color: var(--color-text-muted);
@@ -741,7 +741,7 @@
741
741
  }
742
742
  .tpg-arrow:hover:not(:disabled) {
743
743
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
744
- color: var(--color-primary-ink);
744
+ color: var(--color-primary-text);
745
745
  }
746
746
  .tpg-arrow:focus-visible {
747
747
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
@@ -758,8 +758,8 @@
758
758
  .tpg-page {
759
759
  display: grid;
760
760
  place-items: center;
761
- min-width: var(--wui-control-height-sm);
762
- height: var(--wui-control-height-sm);
761
+ min-width: var(--wui-control-sm);
762
+ height: var(--wui-control-sm);
763
763
  padding: 0 6px;
764
764
  border: none;
765
765
  background: transparent;
@@ -776,7 +776,7 @@
776
776
  }
777
777
  .tpg-page:hover:not(.is-active) {
778
778
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
779
- color: var(--color-primary-ink);
779
+ color: var(--color-primary-text);
780
780
  }
781
781
  .tpg-page:focus-visible {
782
782
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
@@ -784,14 +784,14 @@
784
784
  }
785
785
  .tpg-page.is-active {
786
786
  background: var(--color-primary);
787
- color: var(--color-primary-text);
787
+ color: var(--color-on-primary);
788
788
  cursor: default;
789
789
  }
790
790
  .tpg-ellipsis {
791
791
  display: grid;
792
792
  place-items: center;
793
793
  min-width: 24px;
794
- height: var(--wui-control-height-sm);
794
+ height: var(--wui-control-sm);
795
795
  color: var(--color-text-subtle);
796
796
  font-size: 13px;
797
797
  user-select: none;
@@ -799,19 +799,19 @@
799
799
  // A finger needs a 44px target: the pager's controls grow to the control height on a phone.
800
800
  @media (max-width: 575.98px) {
801
801
  .select.tpg-select {
802
- height: var(--wui-control-height);
803
- min-height: var(--wui-control-height);
802
+ height: var(--wui-control-md);
803
+ min-height: var(--wui-control-md);
804
804
  }
805
805
  .tpg-arrow {
806
- width: var(--wui-control-height);
807
- height: var(--wui-control-height);
806
+ width: var(--wui-control-md);
807
+ height: var(--wui-control-md);
808
808
  }
809
809
  .tpg-page {
810
- min-width: var(--wui-control-height);
811
- height: var(--wui-control-height);
810
+ min-width: var(--wui-control-md);
811
+ height: var(--wui-control-md);
812
812
  }
813
813
  .tpg-ellipsis {
814
- height: var(--wui-control-height);
814
+ height: var(--wui-control-md);
815
815
  }
816
816
  }
817
817
 
@@ -1086,7 +1086,7 @@
1086
1086
  margin-bottom: 12px;
1087
1087
  padding: 12px 16px;
1088
1088
  border: 1px solid var(--color-border);
1089
- border-radius: var(--radius-lg, 12px);
1089
+ border-radius: var(--wui-radius-lg, 12px);
1090
1090
  }
1091
1091
  .table-ledger.wui-table-stack > tbody > tr > td,
1092
1092
  .table-ledger.wui-table-stack > tfoot > tr > td {
@@ -1363,7 +1363,7 @@
1363
1363
  }
1364
1364
  .u-action:hover:not(:disabled) {
1365
1365
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
1366
- color: var(--color-primary-ink);
1366
+ color: var(--color-primary-text);
1367
1367
  }
1368
1368
  .u-action:focus-visible {
1369
1369
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
@@ -1382,7 +1382,7 @@
1382
1382
  }
1383
1383
  .u-action.u-action-preview {
1384
1384
  background: var(--color-primary-soft);
1385
- color: var(--color-primary-ink);
1385
+ color: var(--color-primary-text);
1386
1386
  }
1387
1387
  .u-action.u-action-download {
1388
1388
  background: var(--color-success-soft);
@@ -1394,7 +1394,7 @@
1394
1394
  }
1395
1395
  .u-action.u-action-preview:hover:not(:disabled) {
1396
1396
  background: var(--color-primary-soft);
1397
- color: var(--color-primary-ink);
1397
+ color: var(--color-primary-text);
1398
1398
  }
1399
1399
  .u-action.u-action-download:hover:not(:disabled) {
1400
1400
  background: var(--color-success-soft);
@@ -1424,7 +1424,7 @@
1424
1424
  place-items: center;
1425
1425
  font-size: 16px;
1426
1426
  font-weight: 600;
1427
- color: var(--color-primary-ink);
1427
+ color: var(--color-primary-text);
1428
1428
  background: color-mix(in srgb, var(--color-primary) 20%, transparent);
1429
1429
  }
1430
1430
  .u-meta {
@@ -1497,7 +1497,7 @@
1497
1497
  .table th.sortable[aria-sort="ascending"] .sort-icon,
1498
1498
  .table th.sortable[aria-sort="descending"] .sort-icon {
1499
1499
  opacity: 1;
1500
- color: var(--color-primary-ink);
1500
+ color: var(--color-primary-text);
1501
1501
  }
1502
1502
  .table th.sortable[aria-sort="descending"] .sort-icon {
1503
1503
  transform: rotate(180deg);
@@ -1667,7 +1667,7 @@ wui-data-table {
1667
1667
  max-width: 100%;
1668
1668
  padding: 4px 8px 4px 4px;
1669
1669
  border: none;
1670
- border-radius: var(--radius-sm, 6px);
1670
+ border-radius: var(--wui-radius-sm, 6px);
1671
1671
  background: transparent;
1672
1672
  color: inherit;
1673
1673
  font: inherit;
@@ -27,7 +27,7 @@
27
27
  background: var(--color-surface);
28
28
  overflow: hidden;
29
29
  transition: border-color 0.15s ease;
30
- border-radius: var(--wui-field-radius);
30
+ border-radius: var(--wui-field-md-radius);
31
31
  }
32
32
  .faq-item:hover:not(.open) {
33
33
  border-color: var(--color-border-strong);
@@ -54,14 +54,14 @@
54
54
  transition: color 0.12s ease;
55
55
  }
56
56
  .faq-q:hover {
57
- color: var(--color-primary-ink);
57
+ color: var(--color-primary-text);
58
58
  }
59
59
  .faq-q:focus-visible {
60
60
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
61
61
  outline-offset: var(--wui-focus-ring-inset);
62
62
  }
63
63
  .faq-item.open .faq-q {
64
- color: var(--color-primary-ink);
64
+ color: var(--color-primary-text);
65
65
  }
66
66
  // Chevron rotates to point up when the pane is open.
67
67
  .faq-q-icon {
@@ -69,11 +69,11 @@
69
69
  display: grid;
70
70
  place-items: center;
71
71
  color: var(--color-text-subtle);
72
- transition: transform 0.2s var(--wui-ease-out-quart);
72
+ transition: transform 0.2s var(--wui-ease-out);
73
73
  }
74
74
  .faq-item.open .faq-q-icon {
75
75
  transform: rotate(180deg);
76
- color: var(--color-primary-ink);
76
+ color: var(--color-primary-text);
77
77
  }
78
78
 
79
79
  // The animating track. `min-height: 0` on the inner element is required — a grid
@@ -82,7 +82,7 @@
82
82
  .faq-a-wrap {
83
83
  display: grid;
84
84
  grid-template-rows: 0fr;
85
- transition: grid-template-rows 0.28s var(--wui-ease-out-quart);
85
+ transition: grid-template-rows 0.28s var(--wui-ease-out);
86
86
  }
87
87
  .faq-item.open .faq-a-wrap {
88
88
  grid-template-rows: 1fr;