@webority/theme 0.39.0 → 0.41.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/purge-safelist.json +1 -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 +18 -18
- package/scss/_marketing.scss +1 -1
- package/scss/_tokens.scss +13 -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 +31 -11
- 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 +18 -9
- 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 +10 -10
- package/scss/wui/_workspace.scss +6 -6
package/scss/wui/_controls.scss
CHANGED
|
@@ -607,7 +607,7 @@ textarea.form-control.autosize {
|
|
|
607
607
|
color: var(--color-text);
|
|
608
608
|
}
|
|
609
609
|
.num-stepper-btns button:active {
|
|
610
|
-
color: var(--color-primary);
|
|
610
|
+
color: var(--color-primary-ink);
|
|
611
611
|
}
|
|
612
612
|
.input-date-wrap > .input {
|
|
613
613
|
padding-right: 38px;
|
|
@@ -701,7 +701,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
|
|
|
701
701
|
padding-left: 40px;
|
|
702
702
|
}
|
|
703
703
|
.input-icon:focus-within > .ic {
|
|
704
|
-
color: var(--color-primary);
|
|
704
|
+
color: var(--color-primary-ink);
|
|
705
705
|
}
|
|
706
706
|
|
|
707
707
|
// Trailing action beside the field — a control (a labelled button, or a confirmation once the
|
|
@@ -751,7 +751,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
|
|
|
751
751
|
background 0.12s ease;
|
|
752
752
|
}
|
|
753
753
|
.pw-toggle:hover {
|
|
754
|
-
color: var(--color-primary);
|
|
754
|
+
color: var(--color-primary-ink);
|
|
755
755
|
background: transparent;
|
|
756
756
|
}
|
|
757
757
|
.pw-toggle:focus-visible {
|
|
@@ -912,7 +912,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
|
|
|
912
912
|
transform: translateY(-50%) scale(0.86);
|
|
913
913
|
}
|
|
914
914
|
.field-float .input:focus ~ .float-label {
|
|
915
|
-
color: var(--color-primary);
|
|
915
|
+
color: var(--color-primary-ink);
|
|
916
916
|
}
|
|
917
917
|
.field-float .input.error ~ .float-label {
|
|
918
918
|
color: var(--color-danger-text);
|
|
@@ -937,7 +937,7 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
|
|
|
937
937
|
}
|
|
938
938
|
.field-float:has(.search-select-control:focus) .float-label,
|
|
939
939
|
.field-float:has(.search-select-control.open) .float-label {
|
|
940
|
-
color: var(--color-primary);
|
|
940
|
+
color: var(--color-primary-ink);
|
|
941
941
|
// The control turns white while focused/open, so the label mask follows (a filled-but-closed
|
|
942
942
|
// select keeps the default muted mask, matching its muted resting fill).
|
|
943
943
|
background: var(--color-surface);
|
|
@@ -1243,15 +1243,15 @@ wui-select[compact] {
|
|
|
1243
1243
|
flex: none;
|
|
1244
1244
|
}
|
|
1245
1245
|
.num-btn:hover:not(:disabled) {
|
|
1246
|
-
color: var(--color-primary);
|
|
1246
|
+
color: var(--color-primary-ink);
|
|
1247
1247
|
background: var(--color-bg-muted);
|
|
1248
1248
|
}
|
|
1249
1249
|
.num-btn:focus-visible {
|
|
1250
1250
|
outline: none;
|
|
1251
|
-
color: var(--color-primary);
|
|
1251
|
+
color: var(--color-primary-ink);
|
|
1252
1252
|
}
|
|
1253
1253
|
.num-btn:active:not(:disabled) {
|
|
1254
|
-
color: color-mix(in srgb, var(--color-primary) 80%, black);
|
|
1254
|
+
color: color-mix(in srgb, var(--color-primary-ink) 80%, black);
|
|
1255
1255
|
}
|
|
1256
1256
|
.num-btn:disabled {
|
|
1257
1257
|
color: var(--color-text-subtle);
|
|
@@ -1320,7 +1320,7 @@ wui-select[compact] {
|
|
|
1320
1320
|
border: 1px solid var(--color-border);
|
|
1321
1321
|
}
|
|
1322
1322
|
.badge-primary {
|
|
1323
|
-
@include wui-tone-pill-colors(primary, var(--color-primary));
|
|
1323
|
+
@include wui-tone-pill-colors(primary, var(--color-primary-ink));
|
|
1324
1324
|
border-color: color-mix(in srgb, var(--color-primary) 25%, transparent);
|
|
1325
1325
|
}
|
|
1326
1326
|
.badge-success {
|
|
@@ -1373,7 +1373,7 @@ wui-select[compact] {
|
|
|
1373
1373
|
@include wui-tone-pill-colors(info);
|
|
1374
1374
|
}
|
|
1375
1375
|
.status-label.primary {
|
|
1376
|
-
@include wui-tone-pill-colors(primary, var(--color-primary));
|
|
1376
|
+
@include wui-tone-pill-colors(primary, var(--color-primary-ink));
|
|
1377
1377
|
}
|
|
1378
1378
|
// Default/neutral — also the bare `.status-label` look, so an unknown or omitted
|
|
1379
1379
|
// tone still renders as a proper pill instead of transparent text.
|
|
@@ -1423,7 +1423,7 @@ wui-select[compact] {
|
|
|
1423
1423
|
// full-strength primary line (they read as the same selection language).
|
|
1424
1424
|
border-color: color-mix(in srgb, var(--color-primary) 30%, transparent);
|
|
1425
1425
|
background: var(--color-primary-soft);
|
|
1426
|
-
color: var(--color-primary);
|
|
1426
|
+
color: var(--color-primary-ink);
|
|
1427
1427
|
}
|
|
1428
1428
|
|
|
1429
1429
|
// A count badge inside a selectable chip — "Active 12". Inverts on selection for
|
|
@@ -1439,7 +1439,7 @@ wui-select[compact] {
|
|
|
1439
1439
|
}
|
|
1440
1440
|
.choice-chip.checked .count {
|
|
1441
1441
|
background: var(--color-surface);
|
|
1442
|
-
color: var(--color-primary);
|
|
1442
|
+
color: var(--color-primary-ink);
|
|
1443
1443
|
}
|
|
1444
1444
|
|
|
1445
1445
|
// Size scale (`size`): padding, gap and font step together; md is the base above.
|
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 {
|
|
@@ -511,17 +511,37 @@
|
|
|
511
511
|
}
|
|
512
512
|
// Facets size themselves: a select, multi-select or date range takes about 180 to 240px and the
|
|
513
513
|
// search box a wider 260 to 320px, so they wrap as a compact row instead of stacking at full
|
|
514
|
-
// width. Segments keep their own width.
|
|
515
|
-
|
|
514
|
+
// width. Segments keep their own width. A date range is the bare custom element, not a .field,
|
|
515
|
+
// and on its own it fills its line.
|
|
516
|
+
.wui-filter-bar > .field,
|
|
517
|
+
.wui-filter-bar > wui-date-range {
|
|
516
518
|
flex: 1 1 180px;
|
|
517
519
|
min-width: 0;
|
|
518
520
|
max-width: 240px;
|
|
519
521
|
}
|
|
522
|
+
.wui-filter-bar > wui-date-range .daterange {
|
|
523
|
+
width: 100%;
|
|
524
|
+
}
|
|
520
525
|
.wui-filter-bar > .search-wrap {
|
|
521
526
|
flex: 1 1 260px;
|
|
522
527
|
min-width: 0;
|
|
523
528
|
max-width: 320px;
|
|
524
529
|
}
|
|
530
|
+
// The Razor bar sits in a GET form beside its Apply button. Its own box would take a whole
|
|
531
|
+
// line and push Apply below it, so the form lays the controls, chips, Clear all and Apply out
|
|
532
|
+
// as one row. `!important` beats the bar's d-flex utility, which React shares.
|
|
533
|
+
.wui-filter-form > .wui-filter-bar {
|
|
534
|
+
display: contents !important;
|
|
535
|
+
}
|
|
536
|
+
// On a phone each facet takes its own line; segments and buttons keep their width.
|
|
537
|
+
@media (max-width: 575.98px) {
|
|
538
|
+
.wui-filter-bar > .field,
|
|
539
|
+
.wui-filter-bar > wui-date-range,
|
|
540
|
+
.wui-filter-bar > .search-wrap {
|
|
541
|
+
flex-basis: 100%;
|
|
542
|
+
max-width: none;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
525
545
|
|
|
526
546
|
// Pagination footer: a "10 per page" menu beside the page buttons, flush under a table. No row
|
|
527
547
|
// range and no total; the page buttons say where you are.
|
|
@@ -583,7 +603,7 @@
|
|
|
583
603
|
}
|
|
584
604
|
.tpg-arrow:hover:not(:disabled) {
|
|
585
605
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
586
|
-
color: var(--color-primary);
|
|
606
|
+
color: var(--color-primary-ink);
|
|
587
607
|
}
|
|
588
608
|
.tpg-arrow:focus-visible {
|
|
589
609
|
outline: 2px solid var(--color-primary);
|
|
@@ -618,7 +638,7 @@
|
|
|
618
638
|
}
|
|
619
639
|
.tpg-page:hover:not(.is-active) {
|
|
620
640
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
621
|
-
color: var(--color-primary);
|
|
641
|
+
color: var(--color-primary-ink);
|
|
622
642
|
}
|
|
623
643
|
.tpg-page:focus-visible {
|
|
624
644
|
outline: 2px solid var(--color-primary);
|
|
@@ -1084,7 +1104,7 @@
|
|
|
1084
1104
|
}
|
|
1085
1105
|
.u-action:hover:not(:disabled) {
|
|
1086
1106
|
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
|
|
1087
|
-
color: var(--color-primary);
|
|
1107
|
+
color: var(--color-primary-ink);
|
|
1088
1108
|
}
|
|
1089
1109
|
.u-action:focus-visible {
|
|
1090
1110
|
outline: 2px solid var(--color-primary);
|
|
@@ -1103,7 +1123,7 @@
|
|
|
1103
1123
|
}
|
|
1104
1124
|
.u-action.u-action-preview {
|
|
1105
1125
|
background: var(--color-primary-soft);
|
|
1106
|
-
color: var(--color-primary);
|
|
1126
|
+
color: var(--color-primary-ink);
|
|
1107
1127
|
}
|
|
1108
1128
|
.u-action.u-action-download {
|
|
1109
1129
|
background: var(--color-success-soft);
|
|
@@ -1115,7 +1135,7 @@
|
|
|
1115
1135
|
}
|
|
1116
1136
|
.u-action.u-action-preview:hover:not(:disabled) {
|
|
1117
1137
|
background: var(--color-primary-soft);
|
|
1118
|
-
color: var(--color-primary);
|
|
1138
|
+
color: var(--color-primary-ink);
|
|
1119
1139
|
}
|
|
1120
1140
|
.u-action.u-action-download:hover:not(:disabled) {
|
|
1121
1141
|
background: var(--color-success-soft);
|
|
@@ -1145,7 +1165,7 @@
|
|
|
1145
1165
|
place-items: center;
|
|
1146
1166
|
font-size: 16px;
|
|
1147
1167
|
font-weight: 600;
|
|
1148
|
-
color: var(--color-primary);
|
|
1168
|
+
color: var(--color-primary-ink);
|
|
1149
1169
|
background: color-mix(in srgb, var(--color-primary) 20%, transparent);
|
|
1150
1170
|
}
|
|
1151
1171
|
.u-meta {
|
|
@@ -1218,7 +1238,7 @@
|
|
|
1218
1238
|
.table th.sortable[aria-sort="ascending"] .sort-icon,
|
|
1219
1239
|
.table th.sortable[aria-sort="descending"] .sort-icon {
|
|
1220
1240
|
opacity: 1;
|
|
1221
|
-
color: var(--color-primary);
|
|
1241
|
+
color: var(--color-primary-ink);
|
|
1222
1242
|
}
|
|
1223
1243
|
.table th.sortable[aria-sort="descending"] .sort-icon {
|
|
1224
1244
|
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
|