@webority/theme 0.98.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 +11 -40
  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 -639
  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 -31
  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
@@ -67,7 +67,7 @@
67
67
  // deep drop shadow.
68
68
  box-shadow:
69
69
  0 0 0 1px color-mix(in srgb, var(--color-text) 10%, transparent),
70
- var(--shadow-overlay-lg);
70
+ var(--wui-shadow-modal);
71
71
  background: var(--color-surface);
72
72
  }
73
73
  // `--wui-modal-max-width` is how a caller sets an explicit width. It is set on the
@@ -78,7 +78,7 @@
78
78
  // it on `.modal-dialog`, so the same `maxWidth="800"` produced two different dialogs.
79
79
  .wui-modal {
80
80
  background: var(--color-surface);
81
- border-radius: var(--radius-xl);
81
+ border-radius: var(--wui-radius-xl);
82
82
  corner-shape: squircle;
83
83
  border: none;
84
84
  width: 100%;
@@ -149,11 +149,11 @@
149
149
  justify-content: center;
150
150
  width: 34px;
151
151
  height: 34px;
152
- border-radius: var(--radius);
152
+ border-radius: var(--wui-radius-md);
153
153
  corner-shape: squircle;
154
154
  flex: none;
155
155
  background: var(--color-primary-soft);
156
- color: var(--color-primary-ink);
156
+ color: var(--color-primary-text);
157
157
  }
158
158
 
159
159
  // Break long unbroken names so they wrap within the heading instead of
@@ -177,7 +177,7 @@
177
177
  font-weight: 700;
178
178
  letter-spacing: 0.06em;
179
179
  text-transform: uppercase;
180
- color: var(--color-primary-ink);
180
+ color: var(--color-primary-text);
181
181
  margin-bottom: 2px;
182
182
  }
183
183
  // `tone` tints the header icon tile and the eyebrow, so a destructive or a success dialog
@@ -281,7 +281,7 @@
281
281
  line-height: 1;
282
282
  background: var(--color-bg-subtle);
283
283
  color: var(--color-text-muted);
284
- border-radius: var(--radius-lg);
284
+ border-radius: var(--wui-radius-lg);
285
285
  corner-shape: squircle;
286
286
  transition:
287
287
  background 180ms cubic-bezier(0.4, 0, 0.2, 1),
@@ -290,8 +290,8 @@
290
290
  @media (max-width: 575.98px), (pointer: coarse) {
291
291
  .wui-modal-close,
292
292
  .wui-drawer-close {
293
- width: var(--wui-control-height);
294
- height: var(--wui-control-height);
293
+ width: var(--wui-control-md);
294
+ height: var(--wui-control-md);
295
295
  }
296
296
  }
297
297
  .wui-modal-close:hover,
@@ -467,9 +467,9 @@
467
467
  :where(.tooltip.wui-tooltip) {
468
468
  --wui-tooltip-bg: var(--color-surface);
469
469
  --wui-tooltip-color: var(--color-text);
470
- --wui-tooltip-border: var(--color-border-light);
471
- --wui-tooltip-radius: var(--radius, 10px);
472
- --wui-tooltip-shadow: var(--wui-shadow-overlay);
470
+ --wui-tooltip-border: var(--color-border-subtle);
471
+ --wui-tooltip-radius: var(--wui-radius-md, 10px);
472
+ --wui-tooltip-shadow: var(--wui-shadow-popover);
473
473
  // Size is these four vars — the `md` default. A size-* class swaps them; a caller can
474
474
  // override any one from its own className for a fully custom size.
475
475
  --wui-tooltip-max-width: 240px;
@@ -533,12 +533,12 @@
533
533
  width: max-content;
534
534
  max-width: 240px;
535
535
  padding: 7px 11px;
536
- border-radius: var(--radius, 10px);
536
+ border-radius: var(--wui-radius-md, 10px);
537
537
  corner-shape: squircle;
538
538
  background: var(--color-surface);
539
539
  color: var(--color-text);
540
- border: 1px solid var(--color-border-light);
541
- box-shadow: var(--wui-shadow-overlay);
540
+ border: 1px solid var(--color-border-subtle);
541
+ box-shadow: var(--wui-shadow-popover);
542
542
  font-size: 0.8125rem;
543
543
  font-weight: 500;
544
544
  line-height: 1.4;
@@ -590,7 +590,7 @@
590
590
  }
591
591
  .tooltip.wui-tooltip.tone-primary {
592
592
  --wui-tooltip-bg: var(--color-primary);
593
- --wui-tooltip-color: var(--color-primary-text);
593
+ --wui-tooltip-color: var(--color-on-primary);
594
594
  --wui-tooltip-border: transparent;
595
595
  }
596
596
  .tooltip.wui-tooltip.tone-success {
@@ -656,8 +656,8 @@
656
656
  // The full-strength border, not border-light: on a white page the surface-on-white
657
657
  // card otherwise merges into the background (the overlay shadow alone is too soft).
658
658
  border: 1px solid var(--color-border);
659
- border-radius: var(--radius-lg, 12px);
660
- box-shadow: var(--wui-shadow-overlay);
659
+ border-radius: var(--wui-radius-lg, 12px);
660
+ box-shadow: var(--wui-shadow-popover);
661
661
  overflow: hidden;
662
662
  touch-action: pan-y;
663
663
  user-select: none;
@@ -847,10 +847,10 @@
847
847
  font-weight: 600;
848
848
  color: var(--color-text-subtle);
849
849
  background: var(--color-surface);
850
- border: 1px solid var(--color-border-light);
850
+ border: 1px solid var(--color-border-subtle);
851
851
  border-radius: 999px;
852
852
  padding: 2px 12px;
853
- box-shadow: var(--wui-shadow-overlay);
853
+ box-shadow: var(--wui-shadow-popover);
854
854
  }
855
855
 
856
856
  @keyframes wui-toast-countdown {
@@ -881,13 +881,13 @@
881
881
  // materializes softly while the status icon grows from a dot with a slight overshoot,
882
882
  // and the message trails in last.
883
883
  .wui-toast--anim-organic {
884
- animation: wui-toast-materialize 360ms var(--wui-ease-out-quart);
884
+ animation: wui-toast-materialize 360ms var(--wui-ease-out);
885
885
  }
886
886
  .wui-toast--anim-organic .wui-toast-icon {
887
887
  animation: wui-toast-icon-grow 420ms 60ms cubic-bezier(0.34, 1.45, 0.64, 1) backwards;
888
888
  }
889
889
  .wui-toast--anim-organic .wui-toast-content {
890
- animation: wui-toast-content-in 300ms 190ms var(--wui-ease-out-quart) backwards;
890
+ animation: wui-toast-content-in 300ms 190ms var(--wui-ease-out) backwards;
891
891
  }
892
892
 
893
893
  // `jelly` — drops in with a squash-and-stretch landing.
@@ -3,7 +3,7 @@
3
3
  // and the field does not jump or flash option text.
4
4
  :is(wui-multiselect, wui-autocomplete, wui-taginput, wui-timepicker, wui-date-range, wui-phone, wui-country-select, wui-slider, wui-mention-input):not(:defined) {
5
5
  display: block;
6
- min-height: var(--wui-control-height);
6
+ min-height: var(--wui-control-md);
7
7
  }
8
8
  :is(wui-multiselect, wui-autocomplete, wui-taginput, wui-timepicker, wui-date-range, wui-phone, wui-country-select, wui-slider, wui-mention-input):not(:defined) > wui-option {
9
9
  display: none;
@@ -3,7 +3,7 @@
3
3
  // Part of the wui-components layer; see _wui-components.scss for the load order. The shell wears the
4
4
  // shared field chrome (muted fill at rest, white surface and brand border on focus, soft danger
5
5
  // border when invalid) around a toolbar and the editable surface; the content takes the page's
6
- // type. Every colour is a token the dark remap in _wui-aliases.scss flips with the rest of the portal.
6
+ // type. Every colour is a token the dark remap in _tokens.generated.scss flips with the rest of the portal.
7
7
 
8
8
  wui-rich-text {
9
9
  display: block;
@@ -27,7 +27,7 @@ wui-rich-text:not(:defined) > textarea {
27
27
  flex-direction: column;
28
28
  width: 100%;
29
29
  border: 1px solid var(--color-field-border);
30
- border-radius: var(--wui-field-radius);
30
+ border-radius: var(--wui-field-md-radius);
31
31
  background: var(--color-field-bg);
32
32
  color: var(--color-text);
33
33
  font-size: 14px;
@@ -42,7 +42,7 @@ wui-rich-text:not(:defined) > textarea {
42
42
  }
43
43
  .wui-rich-text-shell:focus-within {
44
44
  background: var(--color-surface);
45
- border-color: var(--color-focus-border);
45
+ border-color: var(--color-field-border-focus);
46
46
  }
47
47
  wui-rich-text[aria-invalid="true"] .wui-rich-text-shell,
48
48
  wui-rich-text[aria-invalid="true"] .wui-rich-text-shell:focus-within {
@@ -151,7 +151,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
151
151
  height: 32px;
152
152
  padding: 0 10px;
153
153
  border: 1px solid var(--color-border);
154
- border-radius: var(--wui-field-radius-sm);
154
+ border-radius: var(--wui-field-sm-radius);
155
155
  background: var(--color-surface);
156
156
  color: var(--color-text);
157
157
  font: inherit;
@@ -165,7 +165,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
165
165
  }
166
166
  .wui-rich-text-link-input:focus {
167
167
  outline: none;
168
- border-color: var(--color-focus-border);
168
+ border-color: var(--color-field-border-focus);
169
169
  }
170
170
  .wui-rich-text-link-input[aria-invalid="true"] {
171
171
  border-color: color-mix(in srgb, var(--color-danger) 30%, transparent);
@@ -185,7 +185,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
185
185
  }
186
186
  .wui-rich-text-link-apply {
187
187
  background: var(--color-primary);
188
- color: var(--color-primary-text);
188
+ color: var(--color-on-primary);
189
189
  }
190
190
  .wui-rich-text-link-apply:hover {
191
191
  background: var(--color-primary-hover);
@@ -308,5 +308,5 @@ wui-rich-text[readonly] .wui-rich-text-prose {
308
308
  .wui-rich-text-link-cancel,
309
309
  .wui-rich-text-link-remove
310
310
  ):active:not(:disabled, [aria-disabled="true"]) {
311
- background-image: linear-gradient(var(--color-pressed-overlay), var(--color-pressed-overlay)) !important;
311
+ background-image: linear-gradient(var(--wui-pressed-overlay), var(--wui-pressed-overlay)) !important;
312
312
  }
@@ -56,7 +56,7 @@ $wui-roll-cell: 1.2em;
56
56
  }
57
57
  // Only a figure that is moving has a transition, so a still render never catches a reel mid-move.
58
58
  .wui-rolling-number[data-rolling] .wui-rolling-number-reel {
59
- transition: transform var(--wui-roll-duration, 600ms) var(--wui-ease-out-quart);
59
+ transition: transform var(--wui-roll-duration, 600ms) var(--wui-ease-out);
60
60
  }
61
61
 
62
62
  @media (prefers-reduced-motion: reduce) {
@@ -35,7 +35,7 @@
35
35
  .wui-score-scale__item--selected {
36
36
  border-color: var(--color-primary);
37
37
  background: var(--color-primary);
38
- color: var(--color-primary-text);
38
+ color: var(--color-on-primary);
39
39
  }
40
40
  .wui-score-scale__item:has(input:focus-visible) {
41
41
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
@@ -48,7 +48,7 @@
48
48
  }
49
49
  .wui-section-eyebrow {
50
50
  margin: 0;
51
- color: var(--color-primary-ink);
51
+ color: var(--color-primary-text);
52
52
  font-size: var(--wui-fs-sm);
53
53
  font-weight: 600;
54
54
  letter-spacing: 0.04em;
@@ -67,7 +67,7 @@
67
67
  border-color: transparent;
68
68
  }
69
69
  .wui-section-eyebrow-primary {
70
- @include wui-tone-pill-colors(primary, var(--color-primary-ink));
70
+ @include wui-tone-pill-colors(primary, var(--color-primary-text));
71
71
  border-color: color-mix(in srgb, var(--color-primary) 25%, transparent);
72
72
  }
73
73
  .wui-section-eyebrow-success {
@@ -125,7 +125,7 @@
125
125
  display: block;
126
126
  width: 100%;
127
127
  height: auto;
128
- border-radius: var(--radius-xl);
128
+ border-radius: var(--wui-radius-xl);
129
129
  }
130
130
 
131
131
  // ── Hero ──
@@ -180,9 +180,9 @@
180
180
  width: 3rem;
181
181
  height: 3rem;
182
182
  margin-bottom: 0.5rem;
183
- border-radius: var(--radius-lg);
183
+ border-radius: var(--wui-radius-lg);
184
184
  background: var(--color-primary-soft);
185
- color: var(--color-primary-ink);
185
+ color: var(--color-primary-text);
186
186
  }
187
187
  .wui-section-feature-title {
188
188
  margin: 0;
@@ -238,7 +238,7 @@
238
238
  }
239
239
  .wui-section-logo a {
240
240
  display: inline-flex;
241
- border-radius: var(--radius-sm);
241
+ border-radius: var(--wui-radius-sm);
242
242
  }
243
243
  .wui-section-logo a:focus-visible {
244
244
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
@@ -284,7 +284,7 @@
284
284
  margin: 0;
285
285
  padding: 1.75rem;
286
286
  border: 1px solid var(--color-border);
287
- border-radius: var(--radius-xl);
287
+ border-radius: var(--wui-radius-xl);
288
288
  background: var(--color-surface);
289
289
  }
290
290
  .wui-section-testimonial-quote {
@@ -341,7 +341,7 @@
341
341
  width: 100%;
342
342
  max-width: none;
343
343
  padding: clamp(2rem, 1.5rem + 3vw, 4rem);
344
- border-radius: var(--radius-xl);
344
+ border-radius: var(--wui-radius-xl);
345
345
  background: var(--color-primary-soft);
346
346
  }
347
347
  .wui-section-call-to-action .wui-section-subtitle {
@@ -75,13 +75,13 @@
75
75
  text-decoration: none;
76
76
  }
77
77
  .wui-tabbar-item.active {
78
- color: var(--color-primary-ink);
78
+ color: var(--color-primary-text);
79
79
  font-weight: 600;
80
80
  }
81
81
  .wui-tabbar-item:focus-visible {
82
82
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
83
83
  outline-offset: -4px;
84
- border-radius: var(--radius-lg);
84
+ border-radius: var(--wui-radius-lg);
85
85
  }
86
86
  .wui-tabbar-icon {
87
87
  display: inline-grid;
@@ -147,16 +147,16 @@
147
147
  left: auto;
148
148
  max-width: calc(100vw - 24px);
149
149
  border: 1px solid var(--color-border);
150
- border-radius: var(--radius-lg);
150
+ border-radius: var(--wui-radius-lg);
151
151
  background: var(--color-surface);
152
- box-shadow: var(--shadow-overlay);
152
+ box-shadow: var(--wui-shadow-popover);
153
153
  }
154
154
  .wui-usermenu-menu .dropdown-item {
155
155
  display: flex;
156
156
  align-items: center;
157
157
  gap: 10px;
158
158
  min-height: 44px;
159
- border-radius: var(--radius-sm);
159
+ border-radius: var(--wui-radius-sm);
160
160
  color: var(--color-text-body);
161
161
  white-space: normal;
162
162
  }
@@ -296,7 +296,7 @@
296
296
  padding: 0 4px;
297
297
  border: 0;
298
298
  background: none;
299
- color: var(--color-primary-ink);
299
+ color: var(--color-primary-text);
300
300
  font: inherit;
301
301
  font-size: 14px;
302
302
  font-weight: 500;
@@ -321,7 +321,7 @@
321
321
  gap: 12px;
322
322
  min-height: 44px;
323
323
  padding: 12px 16px;
324
- border-bottom: 1px solid var(--color-border-light);
324
+ border-bottom: 1px solid var(--color-border-subtle);
325
325
  color: var(--color-text-body);
326
326
  text-decoration: none;
327
327
  }
@@ -382,7 +382,7 @@ a.wui-bell-item:focus-visible {
382
382
  justify-content: center;
383
383
  min-height: 44px;
384
384
  border-top: 1px solid var(--color-border);
385
- color: var(--color-primary-ink);
385
+ color: var(--color-primary-text);
386
386
  font-size: 14px;
387
387
  font-weight: 500;
388
388
  text-decoration: none;
@@ -429,9 +429,9 @@ a.wui-bell-item:focus-visible {
429
429
  padding: 6px;
430
430
  overflow-y: auto;
431
431
  border: 1px solid var(--color-border);
432
- border-radius: var(--radius-lg);
432
+ border-radius: var(--wui-radius-lg);
433
433
  background: var(--color-surface);
434
- box-shadow: var(--shadow-overlay);
434
+ box-shadow: var(--wui-shadow-popover);
435
435
  }
436
436
  .wui-topsearch-results[hidden] {
437
437
  display: none;
@@ -439,7 +439,7 @@ a.wui-bell-item:focus-visible {
439
439
  .wui-topsearch-group + .wui-topsearch-group {
440
440
  margin-top: 4px;
441
441
  padding-top: 4px;
442
- border-top: 1px solid var(--color-border-light);
442
+ border-top: 1px solid var(--color-border-subtle);
443
443
  }
444
444
  .wui-topsearch-group-label {
445
445
  padding: 6px 10px 4px;
@@ -455,7 +455,7 @@ a.wui-bell-item:focus-visible {
455
455
  gap: 10px;
456
456
  min-height: 44px;
457
457
  padding: 6px 10px;
458
- border-radius: var(--radius-sm);
458
+ border-radius: var(--wui-radius-sm);
459
459
  color: var(--color-text-body);
460
460
  text-decoration: none;
461
461
  }
@@ -492,8 +492,8 @@ a.wui-bell-item:focus-visible {
492
492
  }
493
493
  .wui-topsearch-all {
494
494
  margin-top: 4px;
495
- border-top: 1px solid var(--color-border-light);
496
- border-radius: 0 0 var(--radius-sm) var(--radius-sm);
495
+ border-top: 1px solid var(--color-border-subtle);
496
+ border-radius: 0 0 var(--wui-radius-sm) var(--wui-radius-sm);
497
497
  }
498
498
  .wui-topsearch-empty {
499
499
  padding: 14px 10px;
@@ -525,7 +525,7 @@ a.wui-bell-item:focus-visible {
525
525
  padding: 12px;
526
526
  border-bottom: 1px solid var(--color-border);
527
527
  background: var(--color-surface);
528
- box-shadow: var(--shadow-overlay);
528
+ box-shadow: var(--wui-shadow-popover);
529
529
  }
530
530
  .wui-topsearch-results {
531
531
  position: static;
@@ -41,9 +41,9 @@
41
41
  height: var(--wui-splash-size, 56px);
42
42
  display: inline-grid;
43
43
  place-items: center;
44
- border-radius: var(--radius-lg);
44
+ border-radius: var(--wui-radius-lg);
45
45
  background: var(--color-primary);
46
- color: var(--color-primary-text);
46
+ color: var(--color-on-primary);
47
47
  font-size: calc(var(--wui-splash-size, 56px) * 0.39);
48
48
  font-weight: 700;
49
49
  animation: wui-splash-breathe 2.6s ease-in-out infinite;
@@ -385,9 +385,9 @@
385
385
  gap: 12px;
386
386
  // Comfortable row: 44px, which with the 2px group gap is a 46px pitch. Compact sets its own below.
387
387
  // An explicit itemHeight sets --wui-nav-item-height on the shell and replaces all three heights.
388
- min-height: var(--wui-nav-item-height, var(--wui-control-height-lg));
388
+ min-height: var(--wui-nav-item-height, var(--wui-control-lg));
389
389
  padding: 9px 14px;
390
- border-radius: var(--radius-xl);
390
+ border-radius: var(--wui-radius-xl);
391
391
  corner-shape: squircle;
392
392
  font-size: 14px;
393
393
  font-weight: 500;
@@ -405,7 +405,7 @@
405
405
  }
406
406
  @media (pointer: coarse) {
407
407
  .app-shell[data-density="compact"] .app-nav-item:not(.app-nav-subitem) {
408
- min-height: var(--wui-nav-item-height, var(--wui-control-height-lg));
408
+ min-height: var(--wui-nav-item-height, var(--wui-control-lg));
409
409
  }
410
410
  }
411
411
  .app-nav-item:hover {
@@ -415,7 +415,7 @@
415
415
  }
416
416
  .app-nav-item.active {
417
417
  background: var(--color-primary-soft);
418
- color: var(--color-primary-ink);
418
+ color: var(--color-primary-text);
419
419
  font-weight: 600;
420
420
  }
421
421
  .app-nav-item:focus-visible {
@@ -429,7 +429,7 @@
429
429
  color: var(--color-text-subtle);
430
430
  }
431
431
  .app-nav-item.active .app-nav-icon {
432
- color: var(--color-primary-ink);
432
+ color: var(--color-primary-text);
433
433
  }
434
434
  .app-nav-text {
435
435
  // Grows to fill the row so every trailing element — badge, trailing marker,
@@ -454,7 +454,7 @@
454
454
  // tinted badge on top of it would vanish.
455
455
  .app-nav-item.active .app-nav-badge {
456
456
  background: var(--color-surface);
457
- color: var(--color-primary-ink);
457
+ color: var(--color-primary-text);
458
458
  }
459
459
 
460
460
  // Collapsed rail: icons only, centred. The label is removed from the flow rather
@@ -536,7 +536,7 @@
536
536
  color: var(--color-text-subtle);
537
537
  }
538
538
  .app-nav-item.active .app-nav-trailing {
539
- color: var(--color-primary-ink);
539
+ color: var(--color-primary-text);
540
540
  }
541
541
 
542
542
  // ── Expandable sub-items ─────────────────────────────────────────────────────
@@ -628,7 +628,7 @@
628
628
  padding: 0;
629
629
  width: 32px;
630
630
  height: 32px;
631
- border-radius: var(--radius-sm, 6px);
631
+ border-radius: var(--wui-radius-sm, 6px);
632
632
  cursor: pointer;
633
633
  }
634
634
  .wui-nav-split-toggle:hover {
@@ -658,13 +658,13 @@
658
658
  top: 50%;
659
659
  z-index: 40;
660
660
  padding: 5px 10px;
661
- border-radius: var(--radius-lg);
661
+ border-radius: var(--wui-radius-lg);
662
662
  background: var(--color-text);
663
663
  color: var(--color-surface);
664
664
  font-size: 12px;
665
665
  font-weight: 500;
666
666
  white-space: nowrap;
667
- box-shadow: var(--shadow-md);
667
+ box-shadow: var(--wui-shadow-card);
668
668
  opacity: 0;
669
669
  transform: translateY(-50%) scale(0.96);
670
670
  transform-origin: left center;
@@ -700,7 +700,7 @@
700
700
  margin-top: calc(9px + var(--app-sidebar-toggle-gap));
701
701
  padding: 0;
702
702
  border: 0;
703
- border-radius: var(--radius-xl);
703
+ border-radius: var(--wui-radius-xl);
704
704
  corner-shape: squircle;
705
705
  background: transparent;
706
706
  color: var(--color-text-muted);
@@ -722,7 +722,7 @@
722
722
  pointer-events: none;
723
723
  }
724
724
  .app-sidebar-toggle:hover {
725
- color: var(--color-primary-ink);
725
+ color: var(--color-primary-text);
726
726
  background: var(--color-bg-muted);
727
727
  }
728
728
  .app-sidebar-toggle:focus-visible {
@@ -771,7 +771,7 @@
771
771
  }
772
772
  .app-topbar[data-tone="primary"] {
773
773
  background: var(--color-primary);
774
- color: var(--color-primary-text);
774
+ color: var(--color-on-primary);
775
775
  }
776
776
  .app-topbar[data-tone="primary"] :is(.app-topbar-menu, .topbar-icon-btn, .wui-usermenu-trigger) {
777
777
  color: inherit;
@@ -783,10 +783,10 @@
783
783
  }
784
784
  .app-topbar[data-tone="primary"] .app-topbar-menu {
785
785
  background: transparent;
786
- border-color: color-mix(in srgb, var(--color-primary-text) 60%, transparent);
786
+ border-color: color-mix(in srgb, var(--color-on-primary) 60%, transparent);
787
787
  }
788
788
  .app-topbar[data-tone="primary"] :is(.app-topbar-menu, .topbar-icon-btn, .wui-usermenu-trigger):hover {
789
- background: color-mix(in srgb, var(--color-primary-text) 12%, transparent);
789
+ background: color-mix(in srgb, var(--color-on-primary) 12%, transparent);
790
790
  }
791
791
  // Two groups: the leading one shrinks and ellipsises a long page title, the
792
792
  // trailing one is pinned so actions are never pushed off-screen.
@@ -890,15 +890,15 @@
890
890
  // Hidden once the slide-out ends so a closed drawer's links leave the Tab order.
891
891
  visibility: hidden;
892
892
  transition:
893
- transform 0.24s var(--wui-ease-out-quart),
893
+ transform 0.24s var(--wui-ease-out),
894
894
  visibility 0s linear 0.24s;
895
- box-shadow: var(--shadow-overlay-lg);
895
+ box-shadow: var(--wui-shadow-modal);
896
896
  }
897
897
  .app-shell.app-shell.mobile-open .app-sidebar {
898
898
  transform: translateX(0);
899
899
  visibility: visible;
900
900
  transition:
901
- transform 0.24s var(--wui-ease-out-quart),
901
+ transform 0.24s var(--wui-ease-out),
902
902
  visibility 0s;
903
903
  }
904
904
  // The rail is a desktop affordance; on a drawer it makes no sense, so the
@@ -92,7 +92,7 @@
92
92
  corner-shape: squircle;
93
93
  background: var(--color-surface);
94
94
  color: var(--color-text);
95
- box-shadow: var(--wui-shadow-overlay);
95
+ box-shadow: var(--wui-shadow-popover);
96
96
  font-size: 14px;
97
97
  text-align: start;
98
98
  }
@@ -70,7 +70,7 @@ wui-sortable[disabled] .wui-sortable-item,
70
70
  // Lifted by the keyboard.
71
71
  .wui-sortable-handle[aria-pressed="true"] {
72
72
  background: var(--color-primary-soft);
73
- color: var(--color-primary-ink);
73
+ color: var(--color-primary-text);
74
74
  }
75
75
  .wui-sortable-handle:disabled {
76
76
  cursor: not-allowed;
@@ -102,7 +102,7 @@ wui-sortable[disabled] .wui-sortable-item,
102
102
  left: 0;
103
103
  z-index: var(--wui-z-tooltip, 1650);
104
104
  margin: 0;
105
- box-shadow: var(--wui-shadow-overlay);
105
+ box-shadow: var(--wui-shadow-popover);
106
106
  pointer-events: none;
107
107
  cursor: grabbing;
108
108
  }
@@ -90,7 +90,7 @@
90
90
  .wui-split-head-bulk {
91
91
  min-height: 36px;
92
92
  padding: 2px 8px 2px 12px;
93
- border-radius: var(--radius);
93
+ border-radius: var(--wui-radius-md);
94
94
  background: var(--color-primary-soft);
95
95
  }
96
96
  .wui-split-head-main[hidden],
@@ -133,7 +133,7 @@
133
133
  .wui-split-item {
134
134
  display: flex;
135
135
  align-items: flex-start;
136
- border-bottom: 1px solid var(--color-border-light);
136
+ border-bottom: 1px solid var(--color-border-subtle);
137
137
  }
138
138
  .wui-split-item:hover {
139
139
  background: var(--color-bg-muted);
@@ -221,7 +221,7 @@
221
221
  padding: 1px 7px;
222
222
  border-radius: 999px;
223
223
  background: var(--color-primary-soft);
224
- color: var(--color-primary-ink);
224
+ color: var(--color-primary-text);
225
225
  font-size: 12px;
226
226
  font-weight: 600;
227
227
  line-height: 18px;
@@ -242,7 +242,7 @@
242
242
  flex-direction: column;
243
243
  gap: 8px;
244
244
  padding: 14px 16px;
245
- border-bottom: 1px solid var(--color-border-light);
245
+ border-bottom: 1px solid var(--color-border-subtle);
246
246
  }
247
247
  .wui-split-skeleton-title,
248
248
  .wui-split-skeleton-meta {
@@ -34,7 +34,7 @@ html.wui-theme-switching *::after {
34
34
  // The disc's glyph turns a touch on hover, the one cue that it changes something page-wide. The
35
35
  // segmented variant (one option per mode) keeps AppSegmented's own look.
36
36
  .u-action.wui-theme-toggle .wui-icon {
37
- transition: transform 0.3s var(--wui-ease-out-quart, ease-out);
37
+ transition: transform 0.3s var(--wui-ease-out, ease-out);
38
38
  }
39
39
  .u-action.wui-theme-toggle:hover .wui-icon {
40
40
  transform: rotate(24deg);
@@ -5,9 +5,9 @@
5
5
  // border-color: transparent
6
6
  //
7
7
  // $text exists because `primary` has no on-tint token: --color-{status}-text-on-soft is the
8
- // on-tint hue (equal to -text in light, lifted in dark), but --color-primary-text
8
+ // on-tint hue (equal to -text in light, lifted in dark), but --color-on-primary
9
9
  // is the text-on-SOLID-primary color (near-black in dark mode) and fails AA on the
10
- // soft tint — primary pills pass var(--color-primary-ink) instead.
10
+ // soft tint — primary pills pass var(--color-primary-text) instead.
11
11
  //
12
12
  // Component-specific overrides (e.g. .badge-primary's colored border) are applied
13
13
  // after the mixin call.
@@ -14,7 +14,7 @@
14
14
  border: 1px solid var(--color-border);
15
15
  border-radius: var(--wui-radius-lg);
16
16
  corner-shape: squircle;
17
- box-shadow: var(--wui-shadow-overlay);
17
+ box-shadow: var(--wui-shadow-popover);
18
18
  }
19
19
  .toolbar.is-disabled {
20
20
  opacity: var(--wui-disabled-opacity);
@@ -41,7 +41,7 @@
41
41
  // The active tool: brand fill + the label slides open beside the icon.
42
42
  .toolbar-item:has(.toolbar-input:checked) {
43
43
  background: var(--color-primary);
44
- color: var(--color-primary-text);
44
+ color: var(--color-on-primary);
45
45
  }
46
46
  .toolbar-item:has(.toolbar-input:disabled) {
47
47
  opacity: var(--wui-disabled-opacity);
@@ -29,7 +29,7 @@ wui-tree {
29
29
  min-height: 36px;
30
30
  padding: 4px 8px;
31
31
  padding-inline-start: calc(8px + var(--wui-tree-level, 0) * 20px);
32
- border-radius: var(--radius-sm);
32
+ border-radius: var(--wui-radius-sm);
33
33
  color: var(--color-text);
34
34
  cursor: pointer;
35
35
  user-select: none;
@@ -39,7 +39,7 @@ wui-tree {
39
39
  }
40
40
  .wui-tree-row.wui-tree-row-selected {
41
41
  background: var(--color-primary-soft);
42
- color: var(--color-primary-ink);
42
+ color: var(--color-primary-text);
43
43
  }
44
44
  .wui-tree-item[aria-disabled="true"] > .wui-tree-row {
45
45
  color: var(--color-text-subtle);
@@ -125,5 +125,5 @@ wui-tree {
125
125
 
126
126
  // The shared pressed wash of wui/interaction, restated here so it ships with this on-demand layer.
127
127
  .wui-tree-row:active:not(:disabled, [aria-disabled="true"]) {
128
- background-image: linear-gradient(var(--color-pressed-overlay), var(--color-pressed-overlay)) !important;
128
+ background-image: linear-gradient(var(--wui-pressed-overlay), var(--wui-pressed-overlay)) !important;
129
129
  }