@webority/theme 0.39.0 → 0.40.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.
- package/README.md +20 -0
- package/dist/webority-brand-signal.css +1 -1
- package/dist/webority-theme.css +1 -1
- package/package.json +1 -1
- package/scss/_brand-signal.scss +3 -1
- package/scss/_components.scss +7 -7
- package/scss/_marketing.scss +1 -1
- package/scss/_tokens.scss +10 -3
- package/scss/_variables.scss +94 -7
- package/scss/_wui-aliases.scss +9 -0
- package/scss/wui/_avatar-picker.scss +1 -1
- package/scss/wui/_calendar.scss +4 -4
- package/scss/wui/_chart-card.scss +2 -2
- package/scss/wui/_choice.scss +21 -21
- package/scss/wui/_command-palette.scss +3 -3
- package/scss/wui/_consent-banner.scss +1 -1
- package/scss/wui/_controls.scss +12 -12
- package/scss/wui/_data.scss +9 -9
- package/scss/wui/_disclosure.scss +3 -3
- package/scss/wui/_display.scss +14 -14
- package/scss/wui/_dock.scss +1 -1
- package/scss/wui/_file-viewer.scss +1 -1
- package/scss/wui/_flow.scss +37 -37
- package/scss/wui/_media.scss +8 -8
- package/scss/wui/_navigation.scss +5 -5
- package/scss/wui/_overlays.scss +2 -2
- package/scss/wui/_shell-parts.scss +3 -3
- package/scss/wui/_shell.scss +5 -5
- package/scss/wui/_sortable.scss +1 -1
- package/scss/wui/_tone-pill.scss +1 -1
- package/scss/wui/_tree.scss +1 -1
- package/scss/wui/_typography.scss +3 -3
- package/scss/wui/_utilities.scss +6 -6
- package/scss/wui/_workspace.scss +6 -6
package/scss/wui/_data.scss
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
height: 48px;
|
|
45
45
|
border-radius: var(--radius-lg);
|
|
46
46
|
background: var(--color-primary-soft);
|
|
47
|
-
color: var(--color-primary);
|
|
47
|
+
color: var(--color-primary-ink);
|
|
48
48
|
display: inline-flex;
|
|
49
49
|
align-items: center;
|
|
50
50
|
justify-content: center;
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
height: 50px;
|
|
70
70
|
border-radius: 50%;
|
|
71
71
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
72
|
-
color: var(--color-primary);
|
|
72
|
+
color: var(--color-primary-ink);
|
|
73
73
|
margin-bottom: 16px;
|
|
74
74
|
}
|
|
75
75
|
.tbl-empty-title {
|
|
@@ -583,7 +583,7 @@
|
|
|
583
583
|
}
|
|
584
584
|
.tpg-arrow:hover:not(:disabled) {
|
|
585
585
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
586
|
-
color: var(--color-primary);
|
|
586
|
+
color: var(--color-primary-ink);
|
|
587
587
|
}
|
|
588
588
|
.tpg-arrow:focus-visible {
|
|
589
589
|
outline: 2px solid var(--color-primary);
|
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
}
|
|
619
619
|
.tpg-page:hover:not(.is-active) {
|
|
620
620
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
621
|
-
color: var(--color-primary);
|
|
621
|
+
color: var(--color-primary-ink);
|
|
622
622
|
}
|
|
623
623
|
.tpg-page:focus-visible {
|
|
624
624
|
outline: 2px solid var(--color-primary);
|
|
@@ -1084,7 +1084,7 @@
|
|
|
1084
1084
|
}
|
|
1085
1085
|
.u-action:hover:not(:disabled) {
|
|
1086
1086
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
1087
|
-
color: var(--color-primary);
|
|
1087
|
+
color: var(--color-primary-ink);
|
|
1088
1088
|
}
|
|
1089
1089
|
.u-action:focus-visible {
|
|
1090
1090
|
outline: 2px solid var(--color-primary);
|
|
@@ -1103,7 +1103,7 @@
|
|
|
1103
1103
|
}
|
|
1104
1104
|
.u-action.u-action-preview {
|
|
1105
1105
|
background: var(--color-primary-soft);
|
|
1106
|
-
color: var(--color-primary);
|
|
1106
|
+
color: var(--color-primary-ink);
|
|
1107
1107
|
}
|
|
1108
1108
|
.u-action.u-action-download {
|
|
1109
1109
|
background: var(--color-success-soft);
|
|
@@ -1115,7 +1115,7 @@
|
|
|
1115
1115
|
}
|
|
1116
1116
|
.u-action.u-action-preview:hover:not(:disabled) {
|
|
1117
1117
|
background: var(--color-primary-soft);
|
|
1118
|
-
color: var(--color-primary);
|
|
1118
|
+
color: var(--color-primary-ink);
|
|
1119
1119
|
}
|
|
1120
1120
|
.u-action.u-action-download:hover:not(:disabled) {
|
|
1121
1121
|
background: var(--color-success-soft);
|
|
@@ -1145,7 +1145,7 @@
|
|
|
1145
1145
|
place-items: center;
|
|
1146
1146
|
font-size: 16px;
|
|
1147
1147
|
font-weight: 600;
|
|
1148
|
-
color: var(--color-primary);
|
|
1148
|
+
color: var(--color-primary-ink);
|
|
1149
1149
|
background: color-mix(in srgb, var(--color-primary) 20%, transparent);
|
|
1150
1150
|
}
|
|
1151
1151
|
.u-meta {
|
|
@@ -1218,7 +1218,7 @@
|
|
|
1218
1218
|
.table th.sortable[aria-sort="ascending"] .sort-icon,
|
|
1219
1219
|
.table th.sortable[aria-sort="descending"] .sort-icon {
|
|
1220
1220
|
opacity: 1;
|
|
1221
|
-
color: var(--color-primary);
|
|
1221
|
+
color: var(--color-primary-ink);
|
|
1222
1222
|
}
|
|
1223
1223
|
.table th.sortable[aria-sort="descending"] .sort-icon {
|
|
1224
1224
|
transform: rotate(180deg);
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
transition: color 0.12s ease;
|
|
55
55
|
}
|
|
56
56
|
.faq-q:hover {
|
|
57
|
-
color: var(--color-primary);
|
|
57
|
+
color: var(--color-primary-ink);
|
|
58
58
|
}
|
|
59
59
|
.faq-q:focus-visible {
|
|
60
60
|
outline: 2px solid var(--color-primary);
|
|
61
61
|
outline-offset: -2px;
|
|
62
62
|
}
|
|
63
63
|
.faq-item.open .faq-q {
|
|
64
|
-
color: var(--color-primary);
|
|
64
|
+
color: var(--color-primary-ink);
|
|
65
65
|
}
|
|
66
66
|
// Chevron rotates to point up when the pane is open.
|
|
67
67
|
.faq-q-icon {
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
}
|
|
74
74
|
.faq-item.open .faq-q-icon {
|
|
75
75
|
transform: rotate(180deg);
|
|
76
|
-
color: var(--color-primary);
|
|
76
|
+
color: var(--color-primary-ink);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
// The animating track. `min-height: 0` on the inner element is required — a grid
|
package/scss/wui/_display.scss
CHANGED
|
@@ -25,14 +25,14 @@
|
|
|
25
25
|
margin-bottom: 12px;
|
|
26
26
|
border-radius: 999px;
|
|
27
27
|
background: var(--color-primary-soft);
|
|
28
|
-
color: var(--color-primary);
|
|
28
|
+
color: var(--color-primary-ink);
|
|
29
29
|
}
|
|
30
30
|
// Tone modifiers — same semantic vocabulary as .badge/.status-label (success / warning /
|
|
31
31
|
// danger / info / primary / neutral). primary is the default look above, restated here so
|
|
32
32
|
// an explicit icon-tone="primary" matches an omitted one.
|
|
33
33
|
.kpi-icon-primary {
|
|
34
34
|
background: var(--color-primary-soft);
|
|
35
|
-
color: var(--color-primary);
|
|
35
|
+
color: var(--color-primary-ink);
|
|
36
36
|
}
|
|
37
37
|
.kpi-icon-success {
|
|
38
38
|
background: var(--color-success-soft);
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
width: 48px;
|
|
108
108
|
height: 16px;
|
|
109
109
|
margin-top: 8px;
|
|
110
|
-
color: var(--color-primary);
|
|
110
|
+
color: var(--color-primary-ink);
|
|
111
111
|
}
|
|
112
112
|
.kpi-sparkline polyline {
|
|
113
113
|
stroke-width: 1.5;
|
|
@@ -292,7 +292,7 @@ a.kpi:focus-visible {
|
|
|
292
292
|
place-items: center;
|
|
293
293
|
border-radius: 999px;
|
|
294
294
|
background: var(--color-primary-soft);
|
|
295
|
-
color: var(--color-primary);
|
|
295
|
+
color: var(--color-primary-ink);
|
|
296
296
|
}
|
|
297
297
|
.info-meta {
|
|
298
298
|
display: flex;
|
|
@@ -325,7 +325,7 @@ a.info-row:hover {
|
|
|
325
325
|
text-decoration: none;
|
|
326
326
|
}
|
|
327
327
|
a.info-row:hover .info-value {
|
|
328
|
-
color: var(--color-primary);
|
|
328
|
+
color: var(--color-primary-ink);
|
|
329
329
|
text-decoration: underline;
|
|
330
330
|
}
|
|
331
331
|
|
|
@@ -481,7 +481,7 @@ a.info-row:hover .info-value {
|
|
|
481
481
|
white-space: nowrap;
|
|
482
482
|
}
|
|
483
483
|
.segmented-option:hover {
|
|
484
|
-
color: var(--color-primary);
|
|
484
|
+
color: var(--color-primary-ink);
|
|
485
485
|
}
|
|
486
486
|
// A per-option sub-label under the main text — optional, so a segment without one keeps the
|
|
487
487
|
// plain single-line layout above untouched.
|
|
@@ -510,7 +510,7 @@ a.info-row:hover .info-value {
|
|
|
510
510
|
.segmented-option:has(.segmented-input:checked) {
|
|
511
511
|
background: var(--segmented-selected-bg);
|
|
512
512
|
box-shadow: inset 0 0 0 2px var(--color-primary);
|
|
513
|
-
color: var(--color-primary);
|
|
513
|
+
color: var(--color-primary-ink);
|
|
514
514
|
}
|
|
515
515
|
// The ring is drawn on the label because the input it belongs to has no box.
|
|
516
516
|
.segmented-option:has(.segmented-input:focus-visible) {
|
|
@@ -1008,7 +1008,7 @@ a.info-row:hover .info-value {
|
|
|
1008
1008
|
}
|
|
1009
1009
|
.compare-table th.is-highlight {
|
|
1010
1010
|
background: var(--color-primary-soft);
|
|
1011
|
-
color: var(--color-primary);
|
|
1011
|
+
color: var(--color-primary-ink);
|
|
1012
1012
|
}
|
|
1013
1013
|
.compare-table td.is-highlight {
|
|
1014
1014
|
background: color-mix(in srgb, var(--color-primary) 4%, var(--color-surface));
|
|
@@ -1074,7 +1074,7 @@ a.info-row:hover .info-value {
|
|
|
1074
1074
|
place-items: center;
|
|
1075
1075
|
border-radius: 999px;
|
|
1076
1076
|
background: var(--color-primary-soft);
|
|
1077
|
-
color: var(--color-primary);
|
|
1077
|
+
color: var(--color-primary-ink);
|
|
1078
1078
|
transition: background 0.3s var(--wui-ease-out-quart);
|
|
1079
1079
|
}
|
|
1080
1080
|
// On hover the card takes the soft tint, so the icon inverts to the surface
|
|
@@ -1097,7 +1097,7 @@ a.info-row:hover .info-value {
|
|
|
1097
1097
|
transition: color 0.3s var(--wui-ease-out-quart);
|
|
1098
1098
|
}
|
|
1099
1099
|
.res-card:hover .res-card-title {
|
|
1100
|
-
color: var(--color-primary);
|
|
1100
|
+
color: var(--color-primary-ink);
|
|
1101
1101
|
}
|
|
1102
1102
|
.res-card-text {
|
|
1103
1103
|
margin-top: 2px;
|
|
@@ -1214,14 +1214,14 @@ a.info-row:hover .info-value {
|
|
|
1214
1214
|
align-items: center;
|
|
1215
1215
|
gap: 0.35em;
|
|
1216
1216
|
position: relative;
|
|
1217
|
-
color: var(--color-primary);
|
|
1217
|
+
color: var(--color-primary-ink);
|
|
1218
1218
|
font-weight: 500;
|
|
1219
1219
|
cursor: pointer;
|
|
1220
1220
|
border-radius: 4px;
|
|
1221
1221
|
transition: color 0.25s var(--wui-ease-out-quart);
|
|
1222
1222
|
}
|
|
1223
1223
|
.wui-link:hover {
|
|
1224
|
-
color: var(--color-primary);
|
|
1224
|
+
color: var(--color-primary-ink);
|
|
1225
1225
|
}
|
|
1226
1226
|
.wui-link:focus-visible {
|
|
1227
1227
|
outline: 2px solid var(--color-primary);
|
|
@@ -1356,7 +1356,7 @@ a.info-row:hover .info-value {
|
|
|
1356
1356
|
}
|
|
1357
1357
|
.wui-link--fade:hover,
|
|
1358
1358
|
.wui-link--fade:focus-visible {
|
|
1359
|
-
color: var(--color-primary);
|
|
1359
|
+
color: var(--color-primary-ink);
|
|
1360
1360
|
}
|
|
1361
1361
|
|
|
1362
1362
|
// static — the same thin single line, always visible (no text-decoration, so it matches
|
|
@@ -1489,6 +1489,6 @@ a.info-row:hover .info-value {
|
|
|
1489
1489
|
.wui-link--shine .wui-link__label {
|
|
1490
1490
|
background-image: none;
|
|
1491
1491
|
-webkit-text-fill-color: var(--color-primary);
|
|
1492
|
-
color: var(--color-primary);
|
|
1492
|
+
color: var(--color-primary-ink);
|
|
1493
1493
|
}
|
|
1494
1494
|
}
|
package/scss/wui/_dock.scss
CHANGED
|
@@ -465,7 +465,7 @@ wui-file-viewer:fullscreen {
|
|
|
465
465
|
height: 96px;
|
|
466
466
|
border-radius: 50%;
|
|
467
467
|
background: color-mix(in srgb, var(--color-primary) 12%, transparent);
|
|
468
|
-
color: var(--color-primary);
|
|
468
|
+
color: var(--color-primary-ink);
|
|
469
469
|
}
|
|
470
470
|
.wui-file-viewer-controls {
|
|
471
471
|
flex: 0 0 auto;
|
package/scss/wui/_flow.scss
CHANGED
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
// var fallbacks instead — which now also default to primary. :where() keeps this at ZERO
|
|
50
50
|
// specificity, so a .wui-step-tone-* class or an inline --wui-step-* override still wins.
|
|
51
51
|
:where(.stepper:not(.wizard-stepper)) {
|
|
52
|
-
--wui-step-accent: var(--color-primary);
|
|
53
|
-
--wui-step-accent-fg: var(--color-primary-
|
|
52
|
+
--wui-step-accent: var(--color-primary-ink);
|
|
53
|
+
--wui-step-accent-fg: var(--color-on-primary-ink);
|
|
54
54
|
--wui-step-soft: var(--color-primary-soft);
|
|
55
|
-
--wui-step-soft-fg: var(--color-primary);
|
|
55
|
+
--wui-step-soft-fg: var(--color-primary-ink);
|
|
56
56
|
}
|
|
57
57
|
.step {
|
|
58
58
|
position: relative;
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
z-index: 0;
|
|
79
79
|
}
|
|
80
80
|
.step.done + .step::before {
|
|
81
|
-
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
81
|
+
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
82
82
|
}
|
|
83
83
|
// The active circle's 4px ring would swallow the 4px gap, so both connectors touching the
|
|
84
84
|
// active step start 4px further out and keep the same gap from the ring's edge.
|
|
@@ -104,18 +104,18 @@
|
|
|
104
104
|
font-weight: 600;
|
|
105
105
|
color: var(--color-text-subtle);
|
|
106
106
|
}
|
|
107
|
-
// An untoned wizard sets no --wui-step-* vars, so the
|
|
108
|
-
//
|
|
107
|
+
// An untoned wizard sets no --wui-step-* vars, so the fallbacks fill with the primary ink (AA as
|
|
108
|
+
// text whatever the brand) under --color-on-primary-ink, which clears AA on it in both themes.
|
|
109
109
|
.step.active .step-circle {
|
|
110
|
-
border-color: var(--wui-step-accent, var(--color-primary));
|
|
111
|
-
background: var(--wui-step-accent, var(--color-primary));
|
|
112
|
-
color: var(--wui-step-accent-fg, var(--color-primary-
|
|
110
|
+
border-color: var(--wui-step-accent, var(--color-primary-ink));
|
|
111
|
+
background: var(--wui-step-accent, var(--color-primary-ink));
|
|
112
|
+
color: var(--wui-step-accent-fg, var(--color-on-primary-ink));
|
|
113
113
|
box-shadow: 0 0 0 4px var(--wui-step-soft, var(--color-primary-soft));
|
|
114
114
|
}
|
|
115
115
|
.step.done .step-circle {
|
|
116
|
-
border-color: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
117
|
-
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
118
|
-
color: var(--wui-step-done-accent-fg, var(--wui-step-accent-fg, var(--color-primary-
|
|
116
|
+
border-color: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
117
|
+
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
118
|
+
color: var(--wui-step-done-accent-fg, var(--wui-step-accent-fg, var(--color-on-primary-ink)));
|
|
119
119
|
}
|
|
120
120
|
.step-label {
|
|
121
121
|
max-width: 130px;
|
|
@@ -152,7 +152,7 @@ button.step:hover .step-circle {
|
|
|
152
152
|
}
|
|
153
153
|
a.step:hover .step-label,
|
|
154
154
|
button.step:hover .step-label {
|
|
155
|
-
color: var(--wui-step-accent, var(--color-primary));
|
|
155
|
+
color: var(--wui-step-accent, var(--color-primary-ink));
|
|
156
156
|
}
|
|
157
157
|
a.step:focus-visible,
|
|
158
158
|
button.step:focus-visible {
|
|
@@ -163,7 +163,7 @@ a.step:focus-visible .step-circle,
|
|
|
163
163
|
button.step:focus-visible .step-circle {
|
|
164
164
|
box-shadow:
|
|
165
165
|
0 0 0 4px var(--wui-step-soft, var(--color-primary-soft)),
|
|
166
|
-
0 0 0 6px var(--wui-step-accent, var(--color-primary));
|
|
166
|
+
0 0 0 6px var(--wui-step-accent, var(--color-primary-ink));
|
|
167
167
|
}
|
|
168
168
|
// A completed step keeps its own colour while hovered or focused, so a done-tone step does
|
|
169
169
|
// not flash the main accent. Unset, these resolve to the same accent as the rules above.
|
|
@@ -173,13 +173,13 @@ button.step.done:hover .step-circle {
|
|
|
173
173
|
}
|
|
174
174
|
a.step.done:hover .step-label,
|
|
175
175
|
button.step.done:hover .step-label {
|
|
176
|
-
color: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
176
|
+
color: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
177
177
|
}
|
|
178
178
|
a.step.done:focus-visible .step-circle,
|
|
179
179
|
button.step.done:focus-visible .step-circle {
|
|
180
180
|
box-shadow:
|
|
181
181
|
0 0 0 4px var(--wui-step-done-soft, var(--wui-step-soft, var(--color-primary-soft))),
|
|
182
|
-
0 0 0 6px var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
182
|
+
0 0 0 6px var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
183
183
|
}
|
|
184
184
|
// A step that failed its stage — a red circle with an alert, so an invalid step
|
|
185
185
|
// reads as wrong at a glance rather than merely "not done".
|
|
@@ -236,11 +236,11 @@ button.step.done:focus-visible .step-circle {
|
|
|
236
236
|
}
|
|
237
237
|
.stepper-journey .step.done .step-circle {
|
|
238
238
|
background: var(--wui-step-done-soft, var(--wui-step-soft, var(--color-primary-soft)));
|
|
239
|
-
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary)));
|
|
239
|
+
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary-ink)));
|
|
240
240
|
}
|
|
241
241
|
.stepper-journey .step.active .step-circle {
|
|
242
|
-
background: var(--wui-step-accent, var(--color-primary));
|
|
243
|
-
color: var(--wui-step-accent-fg, var(--color-primary-
|
|
242
|
+
background: var(--wui-step-accent, var(--color-primary-ink));
|
|
243
|
+
color: var(--wui-step-accent-fg, var(--color-on-primary-ink));
|
|
244
244
|
box-shadow: none;
|
|
245
245
|
transform: scale(1.06);
|
|
246
246
|
}
|
|
@@ -261,10 +261,10 @@ button.step.done:focus-visible .step-circle {
|
|
|
261
261
|
color: var(--color-text-subtle);
|
|
262
262
|
}
|
|
263
263
|
.stepper-journey .step.done .step-index {
|
|
264
|
-
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary)));
|
|
264
|
+
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary-ink)));
|
|
265
265
|
}
|
|
266
266
|
.stepper-journey .step.active .step-index {
|
|
267
|
-
color: var(--wui-step-accent, var(--color-primary));
|
|
267
|
+
color: var(--wui-step-accent, var(--color-primary-ink));
|
|
268
268
|
}
|
|
269
269
|
.stepper-journey .step.error .step-circle {
|
|
270
270
|
background: var(--color-danger-soft);
|
|
@@ -309,7 +309,7 @@ button.step.done:focus-visible .step-circle {
|
|
|
309
309
|
background: var(--color-border-strong);
|
|
310
310
|
}
|
|
311
311
|
.stepper-journey .step-line.done {
|
|
312
|
-
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
312
|
+
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
313
313
|
}
|
|
314
314
|
// Below xl the four label+title pairs no longer fit side by side, so the bar
|
|
315
315
|
// becomes a vertical list and the connectors go away.
|
|
@@ -387,7 +387,7 @@ button.step.done:focus-visible .step-circle {
|
|
|
387
387
|
z-index: 0;
|
|
388
388
|
}
|
|
389
389
|
.stepper-vertical .step.done:not(:last-child)::after {
|
|
390
|
-
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
390
|
+
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
391
391
|
}
|
|
392
392
|
// The journey bar stacked vertically reuses its own narrow-width treatment: a plain
|
|
393
393
|
// column with the horizontal connectors dropped (a real vertical rail here would
|
|
@@ -429,8 +429,8 @@ button.step.done:focus-visible .step-circle {
|
|
|
429
429
|
// active badge, a soft-primary done badge, a primary rail. Every colour routes through the
|
|
430
430
|
// shared --wui-step-* vars, so a `.wui-step-tone-*` class or an override recolours it.
|
|
431
431
|
.stepper-icons .step.active .step-circle {
|
|
432
|
-
background: var(--wui-step-accent, var(--color-primary));
|
|
433
|
-
color: var(--wui-step-accent-fg, var(--color-primary-
|
|
432
|
+
background: var(--wui-step-accent, var(--color-primary-ink));
|
|
433
|
+
color: var(--wui-step-accent-fg, var(--color-on-primary-ink));
|
|
434
434
|
// The compact variant rings the active circle; here the solid fill carries it, so
|
|
435
435
|
// drop the ring to match the flat badge look.
|
|
436
436
|
box-shadow: none;
|
|
@@ -438,7 +438,7 @@ button.step.done:focus-visible .step-circle {
|
|
|
438
438
|
.stepper-icons .step.done .step-circle {
|
|
439
439
|
border: none;
|
|
440
440
|
background: var(--wui-step-done-soft, var(--wui-step-soft, var(--color-primary-soft)));
|
|
441
|
-
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary)));
|
|
441
|
+
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary-ink)));
|
|
442
442
|
}
|
|
443
443
|
.stepper-icons .step.error .step-circle {
|
|
444
444
|
background: var(--color-danger-soft);
|
|
@@ -460,10 +460,10 @@ button.step.done:focus-visible .step-circle {
|
|
|
460
460
|
color: var(--color-text-subtle);
|
|
461
461
|
}
|
|
462
462
|
.stepper-icons .step.active .step-index {
|
|
463
|
-
color: var(--wui-step-accent, var(--color-primary));
|
|
463
|
+
color: var(--wui-step-accent, var(--color-primary-ink));
|
|
464
464
|
}
|
|
465
465
|
.stepper-icons .step.done .step-index {
|
|
466
|
-
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary)));
|
|
466
|
+
color: var(--wui-step-done-soft-fg, var(--wui-step-soft-fg, var(--color-primary-ink)));
|
|
467
467
|
}
|
|
468
468
|
.stepper-icons .step.error .step-index {
|
|
469
469
|
color: var(--color-danger-text);
|
|
@@ -489,7 +489,7 @@ button.step.done:focus-visible .step-circle {
|
|
|
489
489
|
background: var(--wui-step-connector, var(--color-border));
|
|
490
490
|
}
|
|
491
491
|
.stepper-icons .step.done + .step::before {
|
|
492
|
-
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary)));
|
|
492
|
+
background: var(--wui-step-done-accent, var(--wui-step-accent, var(--color-primary-ink)));
|
|
493
493
|
}
|
|
494
494
|
// The compact hover ring is calibrated to the 28px badge; the 56px icon badge just
|
|
495
495
|
// lifts on hover instead.
|
|
@@ -542,10 +542,10 @@ button.step.done:focus-visible .step-circle {
|
|
|
542
542
|
// class recolours every variant consistently; error steps stay red regardless (semantic).
|
|
543
543
|
// ----------------------------------------------------------------------------
|
|
544
544
|
.wui-step-tone-primary {
|
|
545
|
-
--wui-step-accent: var(--color-primary);
|
|
546
|
-
--wui-step-accent-fg: var(--color-primary-
|
|
545
|
+
--wui-step-accent: var(--color-primary-ink);
|
|
546
|
+
--wui-step-accent-fg: var(--color-on-primary-ink);
|
|
547
547
|
--wui-step-soft: var(--color-primary-soft);
|
|
548
|
-
--wui-step-soft-fg: var(--color-primary);
|
|
548
|
+
--wui-step-soft-fg: var(--color-primary-ink);
|
|
549
549
|
}
|
|
550
550
|
// Like primary, each tone fills with its deep shade (the -text token) under white ink in light mode,
|
|
551
551
|
// and with the bright fill under near-black ink in dark mode; both pairs clear AA.
|
|
@@ -580,10 +580,10 @@ button.step.done:focus-visible .step-circle {
|
|
|
580
580
|
// Error and skipped steps keep their own look.
|
|
581
581
|
// ----------------------------------------------------------------------------
|
|
582
582
|
.wui-step-done-tone-primary {
|
|
583
|
-
--wui-step-done-accent: var(--color-primary);
|
|
584
|
-
--wui-step-done-accent-fg: var(--color-primary-
|
|
583
|
+
--wui-step-done-accent: var(--color-primary-ink);
|
|
584
|
+
--wui-step-done-accent-fg: var(--color-on-primary-ink);
|
|
585
585
|
--wui-step-done-soft: var(--color-primary-soft);
|
|
586
|
-
--wui-step-done-soft-fg: var(--color-primary);
|
|
586
|
+
--wui-step-done-soft-fg: var(--color-primary-ink);
|
|
587
587
|
}
|
|
588
588
|
.wui-step-done-tone-success {
|
|
589
589
|
--wui-step-done-accent: var(--color-success-text);
|
|
@@ -765,7 +765,7 @@ button.step.done:focus-visible .step-circle {
|
|
|
765
765
|
.plan-feature-icon {
|
|
766
766
|
flex: none;
|
|
767
767
|
margin-top: 2px;
|
|
768
|
-
color: var(--color-primary);
|
|
768
|
+
color: var(--color-primary-ink);
|
|
769
769
|
}
|
|
770
770
|
// A feature the tier does NOT include, kept in the list so every card has the
|
|
771
771
|
// same rows and the columns line up when read across.
|
|
@@ -851,7 +851,7 @@ button.step.done:focus-visible .step-circle {
|
|
|
851
851
|
place-items: center;
|
|
852
852
|
border-radius: var(--radius-sm);
|
|
853
853
|
background: var(--color-primary-soft);
|
|
854
|
-
color: var(--color-primary);
|
|
854
|
+
color: var(--color-primary-ink);
|
|
855
855
|
font-size: 12px;
|
|
856
856
|
font-weight: 700;
|
|
857
857
|
}
|
package/scss/wui/_media.scss
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
height: var(--avatar-size, 32px);
|
|
36
36
|
border-radius: 999px;
|
|
37
37
|
background: color-mix(in srgb, var(--color-primary) 15%, var(--color-surface));
|
|
38
|
-
color: var(--color-primary);
|
|
38
|
+
color: var(--color-primary-ink);
|
|
39
39
|
font-size: calc(var(--avatar-size, 32px) * 0.375);
|
|
40
40
|
font-weight: 600;
|
|
41
41
|
display: inline-flex;
|
|
@@ -329,7 +329,7 @@
|
|
|
329
329
|
justify-content: center;
|
|
330
330
|
border-radius: 999px;
|
|
331
331
|
background: var(--color-primary-soft);
|
|
332
|
-
color: var(--color-primary);
|
|
332
|
+
color: var(--color-primary-ink);
|
|
333
333
|
}
|
|
334
334
|
.attach-drop:hover .attach-drop-icon {
|
|
335
335
|
background: var(--color-surface);
|
|
@@ -358,7 +358,7 @@
|
|
|
358
358
|
flex: 0 0 auto;
|
|
359
359
|
font-size: 12px;
|
|
360
360
|
font-weight: 600;
|
|
361
|
-
color: var(--color-primary);
|
|
361
|
+
color: var(--color-primary-ink);
|
|
362
362
|
border: 1px solid var(--color-border);
|
|
363
363
|
border-radius: 999px;
|
|
364
364
|
padding: 5px 14px;
|
|
@@ -478,7 +478,7 @@
|
|
|
478
478
|
border-radius: var(--radius);
|
|
479
479
|
overflow: hidden;
|
|
480
480
|
background: var(--color-bg-muted);
|
|
481
|
-
color: var(--color-primary);
|
|
481
|
+
color: var(--color-primary-ink);
|
|
482
482
|
}
|
|
483
483
|
.attach-item-media img {
|
|
484
484
|
width: 100%;
|
|
@@ -705,7 +705,7 @@
|
|
|
705
705
|
height: 54px;
|
|
706
706
|
border-radius: 50%;
|
|
707
707
|
background: var(--color-primary-soft);
|
|
708
|
-
color: var(--color-primary);
|
|
708
|
+
color: var(--color-primary-ink);
|
|
709
709
|
transition: transform 0.15s ease;
|
|
710
710
|
}
|
|
711
711
|
.file-input.file-input-tall.dragging .file-input-icon {
|
|
@@ -717,7 +717,7 @@
|
|
|
717
717
|
color: var(--color-text);
|
|
718
718
|
}
|
|
719
719
|
.file-input-title .browse {
|
|
720
|
-
color: var(--color-primary);
|
|
720
|
+
color: var(--color-primary-ink);
|
|
721
721
|
}
|
|
722
722
|
.file-input.file-input-tall .file-input-text {
|
|
723
723
|
padding: 0;
|
|
@@ -887,7 +887,7 @@
|
|
|
887
887
|
align-items: center;
|
|
888
888
|
justify-content: center;
|
|
889
889
|
background: color-mix(in srgb, var(--color-surface) 65%, transparent);
|
|
890
|
-
color: var(--color-primary);
|
|
890
|
+
color: var(--color-primary-ink);
|
|
891
891
|
cursor: progress;
|
|
892
892
|
}
|
|
893
893
|
|
|
@@ -943,7 +943,7 @@
|
|
|
943
943
|
font-size: calc(var(--wui-logo-size) * 0.32);
|
|
944
944
|
font-weight: 700;
|
|
945
945
|
letter-spacing: -0.02em;
|
|
946
|
-
color: var(--color-primary);
|
|
946
|
+
color: var(--color-primary-ink);
|
|
947
947
|
background: var(--color-primary-soft);
|
|
948
948
|
}
|
|
949
949
|
// Avatar variant — the standard avatar disc (muted fill) instead of the soft-primary
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
border-radius: var(--radius);
|
|
110
110
|
corner-shape: squircle;
|
|
111
111
|
background: var(--color-primary-soft);
|
|
112
|
-
color: var(--color-primary);
|
|
112
|
+
color: var(--color-primary-ink);
|
|
113
113
|
}
|
|
114
114
|
// Sticky tools zone: search + section meta stay put while the list scrolls.
|
|
115
115
|
.drawer-tools {
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
text-decoration: none;
|
|
239
239
|
}
|
|
240
240
|
.app-tab.active {
|
|
241
|
-
color: var(--color-primary);
|
|
241
|
+
color: var(--color-primary-ink);
|
|
242
242
|
// The active tab carries weight as well as colour — colour alone is a weak
|
|
243
243
|
// signal for anyone who reads the strip at a glance or cannot distinguish it.
|
|
244
244
|
font-weight: 600;
|
|
@@ -349,7 +349,7 @@
|
|
|
349
349
|
}
|
|
350
350
|
.app-tab.active .app-tab-count {
|
|
351
351
|
background: var(--color-primary-soft);
|
|
352
|
-
color: var(--color-primary);
|
|
352
|
+
color: var(--color-primary-ink);
|
|
353
353
|
}
|
|
354
354
|
// Semantic tone tints — React `tone` / Razor `Tone`, matching the vocabulary
|
|
355
355
|
// `.status-label` uses (success | warning | danger | info).
|
|
@@ -540,7 +540,7 @@
|
|
|
540
540
|
transition: color 0.12s ease;
|
|
541
541
|
}
|
|
542
542
|
.search-wrap:focus-within > .search-icon {
|
|
543
|
-
color: var(--color-primary);
|
|
543
|
+
color: var(--color-primary-ink);
|
|
544
544
|
}
|
|
545
545
|
.search-field,
|
|
546
546
|
.search-input {
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
text-decoration: none;
|
|
664
664
|
}
|
|
665
665
|
.breadcrumb-item a:hover {
|
|
666
|
-
color: var(--color-primary);
|
|
666
|
+
color: var(--color-primary-ink);
|
|
667
667
|
text-decoration: underline;
|
|
668
668
|
}
|
|
669
669
|
.breadcrumb-item.active {
|
package/scss/wui/_overlays.scss
CHANGED
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
corner-shape: squircle;
|
|
160
160
|
flex: none;
|
|
161
161
|
background: var(--color-primary-soft);
|
|
162
|
-
color: var(--color-primary);
|
|
162
|
+
color: var(--color-primary-ink);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
// Break long unbroken names so they wrap within the heading instead of
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
font-weight: 700;
|
|
184
184
|
letter-spacing: 0.06em;
|
|
185
185
|
text-transform: uppercase;
|
|
186
|
-
color: var(--color-primary);
|
|
186
|
+
color: var(--color-primary-ink);
|
|
187
187
|
margin-bottom: 2px;
|
|
188
188
|
}
|
|
189
189
|
// `tone` tints the header icon tile and the eyebrow, so a destructive or a success dialog
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
text-decoration: none;
|
|
66
66
|
}
|
|
67
67
|
.wui-tabbar-item.active {
|
|
68
|
-
color: var(--color-primary);
|
|
68
|
+
color: var(--color-primary-ink);
|
|
69
69
|
font-weight: 600;
|
|
70
70
|
}
|
|
71
71
|
.wui-tabbar-item:focus-visible {
|
|
@@ -272,7 +272,7 @@
|
|
|
272
272
|
padding: 0 4px;
|
|
273
273
|
border: 0;
|
|
274
274
|
background: none;
|
|
275
|
-
color: var(--color-primary);
|
|
275
|
+
color: var(--color-primary-ink);
|
|
276
276
|
font: inherit;
|
|
277
277
|
font-size: 14px;
|
|
278
278
|
font-weight: 500;
|
|
@@ -353,7 +353,7 @@ a.wui-bell-item:hover {
|
|
|
353
353
|
justify-content: center;
|
|
354
354
|
min-height: 44px;
|
|
355
355
|
border-top: 1px solid var(--color-border);
|
|
356
|
-
color: var(--color-primary);
|
|
356
|
+
color: var(--color-primary-ink);
|
|
357
357
|
font-size: 14px;
|
|
358
358
|
font-weight: 500;
|
|
359
359
|
text-decoration: none;
|
package/scss/wui/_shell.scss
CHANGED
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
}
|
|
395
395
|
.app-nav-item.active {
|
|
396
396
|
background: var(--color-primary-soft);
|
|
397
|
-
color: var(--color-primary);
|
|
397
|
+
color: var(--color-primary-ink);
|
|
398
398
|
font-weight: 600;
|
|
399
399
|
}
|
|
400
400
|
.app-nav-item:focus-visible {
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
color: var(--color-text-subtle);
|
|
409
409
|
}
|
|
410
410
|
.app-nav-item.active .app-nav-icon {
|
|
411
|
-
color: var(--color-primary);
|
|
411
|
+
color: var(--color-primary-ink);
|
|
412
412
|
}
|
|
413
413
|
.app-nav-text {
|
|
414
414
|
// Grows to fill the row so every trailing element — badge, trailing marker,
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
// tinted badge on top of it would vanish.
|
|
434
434
|
.app-nav-item.active .app-nav-badge {
|
|
435
435
|
background: var(--color-surface);
|
|
436
|
-
color: var(--color-primary);
|
|
436
|
+
color: var(--color-primary-ink);
|
|
437
437
|
}
|
|
438
438
|
|
|
439
439
|
// Collapsed rail: icons only, centred. The label is removed from the flow rather
|
|
@@ -507,7 +507,7 @@
|
|
|
507
507
|
color: var(--color-text-subtle);
|
|
508
508
|
}
|
|
509
509
|
.app-nav-item.active .app-nav-trailing {
|
|
510
|
-
color: var(--color-primary);
|
|
510
|
+
color: var(--color-primary-ink);
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
// ── Expandable sub-items ─────────────────────────────────────────────────────
|
|
@@ -646,7 +646,7 @@
|
|
|
646
646
|
pointer-events: none;
|
|
647
647
|
}
|
|
648
648
|
.app-sidebar-toggle:hover {
|
|
649
|
-
color: var(--color-primary);
|
|
649
|
+
color: var(--color-primary-ink);
|
|
650
650
|
background: var(--color-bg-muted);
|
|
651
651
|
}
|
|
652
652
|
.app-sidebar-toggle:focus-visible {
|
package/scss/wui/_sortable.scss
CHANGED
|
@@ -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);
|
|
73
|
+
color: var(--color-primary-ink);
|
|
74
74
|
}
|
|
75
75
|
.wui-sortable-handle:disabled {
|
|
76
76
|
cursor: not-allowed;
|
package/scss/wui/_tone-pill.scss
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// $text exists because `primary` has no on-tint token: --color-{status}-text-on-soft is the
|
|
8
8
|
// on-tint hue (equal to -text in light, lifted in dark), but --color-primary-text
|
|
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) instead.
|
|
10
|
+
// soft tint — primary pills pass var(--color-primary-ink) instead.
|
|
11
11
|
//
|
|
12
12
|
// Component-specific overrides (e.g. .badge-primary's colored border) are applied
|
|
13
13
|
// after the mixin call.
|