@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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "Webority shared design system — Bootstrap 5.3 SCSS overrides, --wui-* tokens, and shared component CSS. The single source of brand chrome for React portals and Razor sites.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"publishConfig": {
|
package/scss/_brand-signal.scss
CHANGED
|
@@ -46,6 +46,8 @@
|
|
|
46
46
|
--wui-primary-10: #F1EBFF;
|
|
47
47
|
--wui-primary-5: #F8F5FF;
|
|
48
48
|
--wui-primary-text: #FFFFFF;
|
|
49
|
+
// Violet clears 4.5:1 as text on every light surface and its tint, so it is its own ink.
|
|
50
|
+
--wui-primary-ink: #4A0FBF;
|
|
49
51
|
--wui-accent-dark: #340A88;
|
|
50
52
|
--wui-surface-soft: #F1EBFF;
|
|
51
53
|
--wui-surface-violet: #E6DCFD;
|
|
@@ -117,7 +119,7 @@
|
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
.btn-outline-primary {
|
|
120
|
-
--bs-btn-color: var(--color-primary);
|
|
122
|
+
--bs-btn-color: var(--color-primary-ink);
|
|
121
123
|
--bs-btn-border-color: var(--color-primary);
|
|
122
124
|
--bs-btn-hover-color: #fff;
|
|
123
125
|
--bs-btn-hover-bg: #4A0FBF;
|
package/scss/_components.scss
CHANGED
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
// then press. No border (the tint carries the shape). Disabled is the shared
|
|
48
48
|
// neutral-grey state below, like every other variant.
|
|
49
49
|
.btn-secondary {
|
|
50
|
-
--bs-btn-color: var(--color-primary);
|
|
50
|
+
--bs-btn-color: var(--color-primary-ink);
|
|
51
51
|
--bs-btn-bg: color-mix(in srgb, var(--color-primary) 12%, transparent);
|
|
52
52
|
--bs-btn-border-color: transparent;
|
|
53
|
-
--bs-btn-hover-color: var(--color-primary);
|
|
53
|
+
--bs-btn-hover-color: var(--color-primary-ink);
|
|
54
54
|
--bs-btn-hover-bg: color-mix(in srgb, var(--color-primary) 18%, transparent);
|
|
55
55
|
--bs-btn-hover-border-color: transparent;
|
|
56
|
-
--bs-btn-active-color: var(--color-primary);
|
|
56
|
+
--bs-btn-active-color: var(--color-primary-ink);
|
|
57
57
|
--bs-btn-active-bg: color-mix(in srgb, var(--color-primary) 26%, transparent);
|
|
58
58
|
--bs-btn-active-border-color: transparent;
|
|
59
59
|
}
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
// on a transparent fill; hover fills with the brand and flips the label to the on-brand text
|
|
105
105
|
// token; active deepens to the pressed fill.
|
|
106
106
|
.btn-outline-primary {
|
|
107
|
-
--bs-btn-color: var(--color-primary);
|
|
107
|
+
--bs-btn-color: var(--color-primary-ink);
|
|
108
108
|
--bs-btn-border-color: var(--color-primary);
|
|
109
109
|
--bs-btn-hover-color: var(--wui-primary-text);
|
|
110
110
|
--bs-btn-hover-bg: var(--color-primary);
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
--bs-btn-active-color: var(--wui-primary-text);
|
|
113
113
|
--bs-btn-active-bg: var(--wui-primary-pressed);
|
|
114
114
|
--bs-btn-active-border-color: var(--wui-primary-pressed);
|
|
115
|
-
--bs-btn-disabled-color: var(--color-primary);
|
|
115
|
+
--bs-btn-disabled-color: var(--color-primary-ink);
|
|
116
116
|
--bs-btn-disabled-border-color: var(--color-primary);
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -135,17 +135,17 @@
|
|
|
135
135
|
// instead of a solid red fill, for a quieter destructive action (e.g. a "Remove" that
|
|
136
136
|
// shouldn't shout like a solid .btn-danger). Mirrors .btn-secondary exactly — low-alpha
|
|
137
137
|
// tint deepening on hover/press, no border — but keyed off the danger tokens. The label
|
|
138
|
-
// uses --
|
|
138
|
+
// uses --color-danger-text (the AA-safe error red, lifted in dark mode to read on a dark surface),
|
|
139
139
|
// not the brighter --color-danger. Disabled falls through to the shared neutral-grey
|
|
140
140
|
// state below (it is not .btn-danger), like .btn-secondary.
|
|
141
141
|
.btn-secondary-danger {
|
|
142
|
-
--bs-btn-color: var(--
|
|
142
|
+
--bs-btn-color: var(--color-danger-text);
|
|
143
143
|
--bs-btn-bg: color-mix(in srgb, var(--color-danger) 12%, transparent);
|
|
144
144
|
--bs-btn-border-color: transparent;
|
|
145
|
-
--bs-btn-hover-color: var(--
|
|
145
|
+
--bs-btn-hover-color: var(--color-danger-text);
|
|
146
146
|
--bs-btn-hover-bg: color-mix(in srgb, var(--color-danger) 18%, transparent);
|
|
147
147
|
--bs-btn-hover-border-color: transparent;
|
|
148
|
-
--bs-btn-active-color: var(--
|
|
148
|
+
--bs-btn-active-color: var(--color-danger-text);
|
|
149
149
|
--bs-btn-active-bg: color-mix(in srgb, var(--color-danger) 26%, transparent);
|
|
150
150
|
--bs-btn-active-border-color: transparent;
|
|
151
151
|
}
|
|
@@ -411,9 +411,9 @@
|
|
|
411
411
|
--bs-dropdown-padding-y: 0.375rem;
|
|
412
412
|
--bs-dropdown-item-padding-y: 0.5rem;
|
|
413
413
|
--bs-dropdown-item-padding-x: 0.625rem;
|
|
414
|
-
--bs-dropdown-border-color: var(--
|
|
414
|
+
--bs-dropdown-border-color: var(--color-border);
|
|
415
415
|
--bs-dropdown-border-radius: var(--wui-radius-lg);
|
|
416
|
-
--bs-dropdown-link-color: var(--
|
|
416
|
+
--bs-dropdown-link-color: var(--color-text-body);
|
|
417
417
|
--bs-dropdown-link-hover-color: var(--color-primary-hover);
|
|
418
418
|
--bs-dropdown-link-hover-bg: var(--color-primary-soft);
|
|
419
419
|
--bs-dropdown-link-active-color: var(--color-primary-hover);
|
|
@@ -460,12 +460,12 @@
|
|
|
460
460
|
.wui-icon, i, svg {
|
|
461
461
|
flex-shrink: 0;
|
|
462
462
|
font-size: 1rem;
|
|
463
|
-
color: var(--
|
|
463
|
+
color: var(--color-text-subtle);
|
|
464
464
|
transition: color 0.12s ease;
|
|
465
465
|
}
|
|
466
466
|
&:hover .wui-icon, &:hover i, &:hover svg,
|
|
467
467
|
&:focus .wui-icon, &:focus i, &:focus svg {
|
|
468
|
-
color: var(--
|
|
468
|
+
color: var(--color-primary-ink);
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
// A leading picture instead of a glyph — an external logo/avatar, a brand mark.
|
|
@@ -480,8 +480,8 @@
|
|
|
480
480
|
|
|
481
481
|
// Destructive row action — red label, red glyph, red-tinted hover.
|
|
482
482
|
&.danger {
|
|
483
|
-
--bs-dropdown-link-color: var(--
|
|
484
|
-
--bs-dropdown-link-hover-color: var(--
|
|
483
|
+
--bs-dropdown-link-color: var(--color-danger-text);
|
|
484
|
+
--bs-dropdown-link-hover-color: var(--color-danger-text);
|
|
485
485
|
--bs-dropdown-link-hover-bg: var(--color-danger-soft);
|
|
486
486
|
.wui-icon, i, svg { color: var(--wui-danger); }
|
|
487
487
|
&:hover .wui-icon, &:hover i, &:hover svg,
|
|
@@ -625,7 +625,7 @@
|
|
|
625
625
|
display: inline-flex;
|
|
626
626
|
align-items: center;
|
|
627
627
|
justify-content: center;
|
|
628
|
-
color: var(--
|
|
628
|
+
color: var(--color-text-subtle);
|
|
629
629
|
flex-shrink: 0;
|
|
630
630
|
font-size: 1rem;
|
|
631
631
|
line-height: 1;
|
|
@@ -645,13 +645,13 @@ button.wui-input-leading {
|
|
|
645
645
|
}
|
|
646
646
|
button.wui-input-trailing:hover,
|
|
647
647
|
button.wui-input-leading:hover {
|
|
648
|
-
color: var(--
|
|
648
|
+
color: var(--color-text-body);
|
|
649
649
|
}
|
|
650
650
|
button.wui-input-trailing:focus-visible,
|
|
651
651
|
button.wui-input-leading:focus-visible {
|
|
652
652
|
outline: 2px solid var(--color-primary);
|
|
653
653
|
outline-offset: 2px;
|
|
654
|
-
color: var(--
|
|
654
|
+
color: var(--color-primary-ink);
|
|
655
655
|
border-radius: 9999px;
|
|
656
656
|
}
|
|
657
657
|
|
package/scss/_marketing.scss
CHANGED
package/scss/_tokens.scss
CHANGED
|
@@ -138,9 +138,16 @@
|
|
|
138
138
|
// from a fill, for using the status colour AS body text), this is the text/icon
|
|
139
139
|
// colour to use ON TOP OF a solid --wui-primary fill — a selected datepicker day,
|
|
140
140
|
// an active pagination page, a checked segmented option, .btn-primary's label.
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
--wui-primary-text: #
|
|
141
|
+
// Derived from $primary (_variables.scss): white when it clears AA on the primary, near-black
|
|
142
|
+
// when the primary is too light for white. A runtime rebrand of --wui-primary sets it too.
|
|
143
|
+
--wui-primary-text: #{wui-hex($wui-primary-text)};
|
|
144
|
+
|
|
145
|
+
// ---- Primary as text -----------------------------------------------
|
|
146
|
+
// The brand primary darkened until it clears AA (4.5:1) as text on every light surface and on
|
|
147
|
+
// its own soft tint (_variables.scss). Every link, tab label, page number, selected option and
|
|
148
|
+
// primary-coloured icon reads this, never --wui-primary, which is sized as a fill. Equal to
|
|
149
|
+
// --wui-primary when the primary already clears AA. A runtime rebrand of --wui-primary sets it too.
|
|
150
|
+
--wui-primary-ink: #{wui-hex($wui-primary-ink)};
|
|
144
151
|
|
|
145
152
|
// ---- Semantic status ramps -------------------------------------
|
|
146
153
|
// Canonical info/success/warning/danger scales: `active` (text/icon on
|
|
@@ -332,6 +339,9 @@
|
|
|
332
339
|
// pick a rung from this list.
|
|
333
340
|
--wui-z-dropdown: 1000;
|
|
334
341
|
--wui-z-sticky: 1020;
|
|
342
|
+
// Desktop shell sidebar: its overflowing menus (the workspace switcher) paint over sticky page
|
|
343
|
+
// content, while the fixed corner layers (consent banner, floating buttons) still cover it.
|
|
344
|
+
--wui-z-shell-sidebar: 1025;
|
|
335
345
|
--wui-z-fixed: 1030;
|
|
336
346
|
--wui-z-shell: 1040; // splash, shell base chrome
|
|
337
347
|
--wui-z-shell-scrim: 1044; // mobile drawer scrim
|
package/scss/_variables.scss
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
@use "sass:color";
|
|
2
|
+
@use "sass:list";
|
|
3
|
+
@use "sass:math";
|
|
4
|
+
@use "sass:string";
|
|
5
|
+
|
|
1
6
|
// =====================================================================
|
|
2
7
|
// Webority UI — Bootstrap variable overrides.
|
|
3
8
|
// Imported BEFORE `bootstrap/scss/bootstrap` so Bootstrap derives every
|
|
@@ -43,10 +48,90 @@ $theme-colors: (
|
|
|
43
48
|
"dark": $dark,
|
|
44
49
|
);
|
|
45
50
|
|
|
51
|
+
// ---- Primary as text ------------------------------------------------
|
|
52
|
+
// A brand primary is chosen as a fill. A light one (an orange measures 3.6:1 on white) fails
|
|
53
|
+
// WCAG AA (4.5:1) as text, so text and small UI in the brand colour use the primary ink: the
|
|
54
|
+
// primary mixed with black, in 2% steps, until it clears 4.5:1 on every light surface it lands
|
|
55
|
+
// on (white, the page, the muted and elevated fills) and on the brand's own soft tint. A primary
|
|
56
|
+
// that already clears it is its own ink. Derived from $primary, so a product that sets $primary
|
|
57
|
+
// gets a matching ink; it can still set $wui-primary-ink, or --wui-primary-ink at runtime.
|
|
58
|
+
$wui-ink-floor: 4.5;
|
|
59
|
+
$wui-ink-surfaces: (#FFFFFF, #F4F6F8, #F5F6FA, #F9FBFC);
|
|
60
|
+
|
|
61
|
+
@function wui-luminance($color) {
|
|
62
|
+
$linear: ();
|
|
63
|
+
@each $channel in ("red", "green", "blue") {
|
|
64
|
+
$s: math.div(color.channel($color, $channel, $space: rgb), 255);
|
|
65
|
+
@if $s <= 0.04045 {
|
|
66
|
+
$linear: list.append($linear, math.div($s, 12.92));
|
|
67
|
+
} @else {
|
|
68
|
+
$linear: list.append($linear, math.pow(math.div($s + 0.055, 1.055), 2.4));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
@return 0.2126 * list.nth($linear, 1) + 0.7152 * list.nth($linear, 2) + 0.0722 * list.nth($linear, 3);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@function wui-contrast($a, $b) {
|
|
75
|
+
$la: wui-luminance($a);
|
|
76
|
+
$lb: wui-luminance($b);
|
|
77
|
+
@return math.div(math.max($la, $lb) + 0.05, math.min($la, $lb) + 0.05);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@function wui-worst-contrast($ink, $surfaces) {
|
|
81
|
+
$worst: 21;
|
|
82
|
+
@each $surface in $surfaces {
|
|
83
|
+
$worst: math.min($worst, wui-contrast($ink, $surface));
|
|
84
|
+
}
|
|
85
|
+
@return $worst;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@function wui-primary-ink($primary) {
|
|
89
|
+
// The soft tint (selected rows, avatar initials, the secondary button) is about 15% of the
|
|
90
|
+
// primary over white.
|
|
91
|
+
$surfaces: list.append($wui-ink-surfaces, color.mix($primary, #FFFFFF, 15%));
|
|
92
|
+
$ink: $primary;
|
|
93
|
+
$step: 0;
|
|
94
|
+
@while wui-worst-contrast($ink, $surfaces) < $wui-ink-floor and $step < 50 {
|
|
95
|
+
$step: $step + 1;
|
|
96
|
+
$ink: color.mix(black, $primary, $step * 2%);
|
|
97
|
+
}
|
|
98
|
+
// Whole channels, so the token compiles to a plain hex.
|
|
99
|
+
@return rgb(
|
|
100
|
+
math.round(color.channel($ink, "red", $space: rgb)),
|
|
101
|
+
math.round(color.channel($ink, "green", $space: rgb)),
|
|
102
|
+
math.round(color.channel($ink, "blue", $space: rgb))
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// A colour as a #rrggbb literal, so a computed token reads like the hand-written ones around it.
|
|
107
|
+
@function wui-hex($color) {
|
|
108
|
+
$digits: "0123456789abcdef";
|
|
109
|
+
$out: "#";
|
|
110
|
+
@each $channel in ("red", "green", "blue") {
|
|
111
|
+
$v: math.round(color.channel($color, $channel, $space: rgb));
|
|
112
|
+
$out: $out + string.slice($digits, math.floor(math.div($v, 16)) + 1, math.floor(math.div($v, 16)) + 1) + string.slice($digits, $v % 16 + 1, $v % 16 + 1);
|
|
113
|
+
}
|
|
114
|
+
@return string.unquote($out);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// The label on a solid primary fill (.btn-primary, the active page, a checked option): white
|
|
118
|
+
// when it clears 4.5:1 on the primary, near-black when the primary is too light for white.
|
|
119
|
+
@function wui-on-primary($primary) {
|
|
120
|
+
@if wui-contrast(#FFFFFF, $primary) >= $wui-ink-floor {
|
|
121
|
+
@return #FFFFFF;
|
|
122
|
+
}
|
|
123
|
+
@return #0F0F0F;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
$wui-primary-ink: wui-primary-ink($primary) !default;
|
|
127
|
+
$wui-primary-text: wui-on-primary($primary) !default;
|
|
128
|
+
$link-color: $wui-primary-ink !default;
|
|
129
|
+
|
|
46
130
|
// Brand helper — set a product's primary ONCE and have the theme-colour map
|
|
47
131
|
// (so every .btn-primary / .bg-primary / .text-primary utility), $link-color,
|
|
48
|
-
//
|
|
49
|
-
// the product's pre-bootstrap variables,
|
|
132
|
+
// $link-hover-color, the primary ink and the on-primary label follow, instead of
|
|
133
|
+
// overriding each in turn. Call it in the product's pre-bootstrap variables,
|
|
134
|
+
// BEFORE `bootstrap/scss/bootstrap`, e.g.:
|
|
50
135
|
//
|
|
51
136
|
// @include wui-brand-primary(#0EA5E9);
|
|
52
137
|
// @import "bootstrap/scss/bootstrap";
|
|
@@ -57,8 +142,10 @@ $theme-colors: (
|
|
|
57
142
|
@mixin wui-brand-primary($primary) {
|
|
58
143
|
$primary: $primary !global;
|
|
59
144
|
$theme-colors: map-merge($theme-colors, ("primary": $primary)) !global;
|
|
60
|
-
$
|
|
61
|
-
$
|
|
145
|
+
$wui-primary-ink: wui-primary-ink($primary) !global;
|
|
146
|
+
$wui-primary-text: wui-on-primary($primary) !global;
|
|
147
|
+
$link-color: $wui-primary-ink !global;
|
|
148
|
+
$link-hover-color: mix(black, $wui-primary-ink, 12%) !global;
|
|
62
149
|
}
|
|
63
150
|
|
|
64
151
|
|
|
@@ -208,11 +295,11 @@ $toast-box-shadow: $wui-shadow-overlay-lg;
|
|
|
208
295
|
|
|
209
296
|
|
|
210
297
|
// ---- Links ----------------------------------------------------------
|
|
211
|
-
// $link-color
|
|
212
|
-
// Hover is a darkened mix of
|
|
298
|
+
// $link-color is the primary ink (above), so a link clears AA whatever the brand.
|
|
299
|
+
// Hover is a darkened mix of the ink — never a hard-coded indigo — so a product
|
|
213
300
|
// that sets $primary (or calls wui-brand-primary) gets a matching hover. Approximate
|
|
214
301
|
// of Bootstrap's shift-color($link-color, 20%) without importing BS functions here.
|
|
215
|
-
$link-hover-color: mix(black, $primary, 12%);
|
|
302
|
+
$link-hover-color: mix(black, $wui-primary-ink, 12%);
|
|
216
303
|
$link-decoration: none; // BS default is underline
|
|
217
304
|
$link-hover-decoration: underline;
|
|
218
305
|
|
package/scss/_wui-aliases.scss
CHANGED
|
@@ -62,6 +62,12 @@
|
|
|
62
62
|
// Text/icon colour for content sitting ON a solid --color-primary fill — see
|
|
63
63
|
// --wui-primary-text for why this is a different axis from the -text tokens below.
|
|
64
64
|
--color-primary-text: var(--wui-primary-text);
|
|
65
|
+
// The primary as TEXT or a small glyph on a light surface: AA-safe whatever the brand (see
|
|
66
|
+
// --wui-primary-ink). --color-primary stays the fill, border and focus colour.
|
|
67
|
+
--color-primary-ink: var(--wui-primary-ink);
|
|
68
|
+
// Ink on the primary ink used as a fill (the active step badge): the ink clears 4.5:1 against
|
|
69
|
+
// white by construction, so white in light mode; near-black on the lifted dark primary.
|
|
70
|
+
--color-on-primary-ink: #FFFFFF;
|
|
65
71
|
|
|
66
72
|
// Semantic status ramps
|
|
67
73
|
--color-info-active: var(--wui-info-active);
|
|
@@ -211,6 +217,9 @@
|
|
|
211
217
|
// Dark mode primary text: #fff on #6B83EC measures 3.5:1, below WCAG AA (4.5:1).
|
|
212
218
|
// Map to a near-black for safe contrast (6.9:1 on --wui-dark-primary) when text sits on primary fill.
|
|
213
219
|
--color-primary-text: #0F0F0F;
|
|
220
|
+
// The dark primary is already lifted to clear 4.5:1 on every dark surface and tint.
|
|
221
|
+
--color-primary-ink: var(--wui-dark-primary);
|
|
222
|
+
--color-on-primary-ink: #0F0F0F;
|
|
214
223
|
--color-on-status-strong: #0F0F0F;
|
|
215
224
|
|
|
216
225
|
// On a dark surface the darkened `-text` values would sink into the background, so dark
|
package/scss/wui/_calendar.scss
CHANGED
|
@@ -70,7 +70,7 @@ wui-calendar {
|
|
|
70
70
|
.wui-calendar-nav-btn:hover {
|
|
71
71
|
background: var(--color-primary-soft);
|
|
72
72
|
border-color: var(--color-primary);
|
|
73
|
-
color: var(--color-primary);
|
|
73
|
+
color: var(--color-primary-ink);
|
|
74
74
|
}
|
|
75
75
|
.wui-calendar-today-btn:focus-visible,
|
|
76
76
|
.wui-calendar-nav-btn:focus-visible,
|
|
@@ -116,12 +116,12 @@ wui-calendar {
|
|
|
116
116
|
color 0.14s ease;
|
|
117
117
|
}
|
|
118
118
|
.wui-calendar-view-btn:hover {
|
|
119
|
-
color: var(--color-primary);
|
|
119
|
+
color: var(--color-primary-ink);
|
|
120
120
|
}
|
|
121
121
|
.wui-calendar-view-btn[aria-pressed="true"] {
|
|
122
122
|
background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
|
|
123
123
|
box-shadow: inset 0 0 0 2px var(--color-primary);
|
|
124
|
-
color: var(--color-primary);
|
|
124
|
+
color: var(--color-primary-ink);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
// On a phone the title takes a row of its own between the two controls, and every control is a
|
|
@@ -217,7 +217,7 @@ wui-calendar[data-view="week"] .wui-calendar-surface > * {
|
|
|
217
217
|
.wui-calendar-event-primary {
|
|
218
218
|
--fc-event-bg-color: var(--color-primary-soft);
|
|
219
219
|
--fc-event-border-color: var(--color-primary);
|
|
220
|
-
--fc-event-text-color: var(--color-primary);
|
|
220
|
+
--fc-event-text-color: var(--color-primary-ink);
|
|
221
221
|
}
|
|
222
222
|
.wui-calendar-event-success {
|
|
223
223
|
--fc-event-bg-color: var(--color-success-soft);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
:where(.wui-sparkline) {
|
|
8
8
|
display: inline-block;
|
|
9
9
|
vertical-align: middle;
|
|
10
|
-
color: var(--color-primary);
|
|
10
|
+
color: var(--color-primary-ink);
|
|
11
11
|
}
|
|
12
12
|
.wui-sparkline polyline {
|
|
13
13
|
stroke-width: 1.5;
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
.wui-chart-card-tool[aria-pressed="true"] {
|
|
29
29
|
background: var(--color-primary-soft);
|
|
30
|
-
color: var(--color-primary);
|
|
30
|
+
color: var(--color-primary-ink);
|
|
31
31
|
}
|
|
32
32
|
// The legend toggle is useful only while the chart shows a legend: two or more series, in the
|
|
33
33
|
// chart view. Before the element has drawn there is none, so the button waits for it.
|
package/scss/wui/_choice.scss
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
background: color-mix(in srgb, var(--color-primary) 5%, transparent);
|
|
34
34
|
}
|
|
35
35
|
.struct-card.checked .struct-card-title {
|
|
36
|
-
color: var(--color-primary);
|
|
36
|
+
color: var(--color-primary-ink);
|
|
37
37
|
}
|
|
38
38
|
.struct-card-input {
|
|
39
39
|
position: absolute;
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
.struct-card.checked .struct-card-ic {
|
|
58
58
|
background: var(--color-surface);
|
|
59
|
-
color: var(--color-primary);
|
|
59
|
+
color: var(--color-primary-ink);
|
|
60
60
|
}
|
|
61
61
|
// An image in the round icon disc (React iconNode={<img …/>}) keeps its own colours whether or not
|
|
62
62
|
// the card is selected, fills the whole disc and is cropped to its circle, whatever the image's own
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
align-items: center;
|
|
93
93
|
justify-content: center;
|
|
94
94
|
background: transparent;
|
|
95
|
-
color: var(--color-primary);
|
|
95
|
+
color: var(--color-primary-ink);
|
|
96
96
|
opacity: 0;
|
|
97
97
|
transform: scale(0.5);
|
|
98
98
|
transition:
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
border-color: var(--color-focus-border);
|
|
434
434
|
}
|
|
435
435
|
.search-select-search:focus-within svg {
|
|
436
|
-
color: var(--color-primary);
|
|
436
|
+
color: var(--color-primary-ink);
|
|
437
437
|
}
|
|
438
438
|
.search-select-clear {
|
|
439
439
|
display: grid;
|
|
@@ -500,17 +500,17 @@
|
|
|
500
500
|
.search-select-option:hover,
|
|
501
501
|
.search-select-option.is-active {
|
|
502
502
|
background: var(--color-primary-soft);
|
|
503
|
-
color: var(--color-primary);
|
|
503
|
+
color: var(--color-primary-ink);
|
|
504
504
|
}
|
|
505
505
|
.search-select-option.selected {
|
|
506
506
|
background: var(--color-primary-soft);
|
|
507
|
-
color: var(--color-primary);
|
|
507
|
+
color: var(--color-primary-ink);
|
|
508
508
|
font-weight: 500;
|
|
509
509
|
}
|
|
510
510
|
// allow-custom's freeform row — reads as an action ("Add "…"") rather than a listed value.
|
|
511
511
|
.search-select-option-custom {
|
|
512
512
|
font-style: italic;
|
|
513
|
-
color: var(--color-primary);
|
|
513
|
+
color: var(--color-primary-ink);
|
|
514
514
|
}
|
|
515
515
|
.search-select-empty {
|
|
516
516
|
padding: 12px 10px;
|
|
@@ -651,7 +651,7 @@ wui-date-range:not([aria-invalid="true"]) .daterange:not(.open) .daterange-trigg
|
|
|
651
651
|
}
|
|
652
652
|
button.datepicker-month:hover {
|
|
653
653
|
background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary) 8%, transparent));
|
|
654
|
-
color: var(--color-primary);
|
|
654
|
+
color: var(--color-primary-ink);
|
|
655
655
|
}
|
|
656
656
|
.datepicker-nav {
|
|
657
657
|
display: inline-flex;
|
|
@@ -676,7 +676,7 @@ button.datepicker-month:hover {
|
|
|
676
676
|
.datepicker-nav-btn:hover {
|
|
677
677
|
background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary) 8%, transparent));
|
|
678
678
|
border-color: var(--color-primary);
|
|
679
|
-
color: var(--color-primary);
|
|
679
|
+
color: var(--color-primary-ink);
|
|
680
680
|
}
|
|
681
681
|
.datepicker-weekdays {
|
|
682
682
|
display: grid;
|
|
@@ -728,7 +728,7 @@ button.datepicker-month:hover {
|
|
|
728
728
|
}
|
|
729
729
|
.datepicker-day:hover:not(:disabled):not(.is-selected) {
|
|
730
730
|
background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary) 8%, transparent));
|
|
731
|
-
color: var(--color-primary);
|
|
731
|
+
color: var(--color-primary-ink);
|
|
732
732
|
}
|
|
733
733
|
.datepicker-day.is-outside {
|
|
734
734
|
color: var(--color-text-subtle);
|
|
@@ -736,7 +736,7 @@ button.datepicker-month:hover {
|
|
|
736
736
|
}
|
|
737
737
|
.datepicker-day.is-today {
|
|
738
738
|
font-weight: 700;
|
|
739
|
-
color: var(--color-primary);
|
|
739
|
+
color: var(--color-primary-ink);
|
|
740
740
|
box-shadow: inset 0 0 0 1.5px var(--color-primary);
|
|
741
741
|
}
|
|
742
742
|
.datepicker-day.is-selected {
|
|
@@ -770,7 +770,7 @@ button.datepicker-month:hover {
|
|
|
770
770
|
border-radius: var(--radius);
|
|
771
771
|
font-size: 13px;
|
|
772
772
|
font-weight: 600;
|
|
773
|
-
color: var(--color-primary);
|
|
773
|
+
color: var(--color-primary-ink);
|
|
774
774
|
cursor: pointer;
|
|
775
775
|
transition: background 0.12s;
|
|
776
776
|
}
|
|
@@ -808,11 +808,11 @@ button.datepicker-month:hover {
|
|
|
808
808
|
}
|
|
809
809
|
.datepicker-cell:hover:not(:disabled):not(.is-selected) {
|
|
810
810
|
background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary) 8%, transparent));
|
|
811
|
-
color: var(--color-primary);
|
|
811
|
+
color: var(--color-primary-ink);
|
|
812
812
|
}
|
|
813
813
|
.datepicker-cell.is-today {
|
|
814
814
|
box-shadow: inset 0 0 0 1.5px var(--color-primary);
|
|
815
|
-
color: var(--color-primary);
|
|
815
|
+
color: var(--color-primary-ink);
|
|
816
816
|
font-weight: 700;
|
|
817
817
|
}
|
|
818
818
|
.datepicker-cell.is-selected {
|
|
@@ -961,7 +961,7 @@ button.datepicker-month:hover {
|
|
|
961
961
|
// Days inside the chosen span get a soft rail; the two endpoints get the solid fill.
|
|
962
962
|
.datepicker-day.in-range {
|
|
963
963
|
background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary) 12%, transparent));
|
|
964
|
-
color: var(--color-primary);
|
|
964
|
+
color: var(--color-primary-ink);
|
|
965
965
|
border-radius: 6px;
|
|
966
966
|
}
|
|
967
967
|
.datepicker-day.is-range-start,
|
|
@@ -1232,7 +1232,7 @@ wui-timepicker[aria-invalid="true"] .timepicker.open .timepicker-trigger {
|
|
|
1232
1232
|
transition: color 0.12s ease;
|
|
1233
1233
|
}
|
|
1234
1234
|
.dropdown-search-wrapper:focus-within .dropdown-search-icon {
|
|
1235
|
-
color: var(--color-primary);
|
|
1235
|
+
color: var(--color-primary-ink);
|
|
1236
1236
|
}
|
|
1237
1237
|
.dropdown-search-input {
|
|
1238
1238
|
width: 100%;
|
|
@@ -1306,11 +1306,11 @@ wui-timepicker[aria-invalid="true"] .timepicker.open .timepicker-trigger {
|
|
|
1306
1306
|
.country-dropdown-item:focus,
|
|
1307
1307
|
.country-dropdown-item.is-active {
|
|
1308
1308
|
background: var(--color-primary-soft) !important;
|
|
1309
|
-
color: var(--color-primary) !important;
|
|
1309
|
+
color: var(--color-primary-ink) !important;
|
|
1310
1310
|
}
|
|
1311
1311
|
.country-dropdown-item.selected {
|
|
1312
1312
|
background: var(--color-primary-soft) !important;
|
|
1313
|
-
color: var(--color-primary) !important;
|
|
1313
|
+
color: var(--color-primary-ink) !important;
|
|
1314
1314
|
font-weight: 500;
|
|
1315
1315
|
}
|
|
1316
1316
|
.country-dropdown-menu .wui-flag {
|
|
@@ -1340,7 +1340,7 @@ wui-timepicker[aria-invalid="true"] .timepicker.open .timepicker-trigger {
|
|
|
1340
1340
|
.selected-check-icon {
|
|
1341
1341
|
margin-left: auto;
|
|
1342
1342
|
display: flex;
|
|
1343
|
-
color: var(--color-primary);
|
|
1343
|
+
color: var(--color-primary-ink);
|
|
1344
1344
|
}
|
|
1345
1345
|
.country-empty {
|
|
1346
1346
|
padding: 10px 16px;
|
|
@@ -1387,7 +1387,7 @@ wui-timepicker[aria-invalid="true"] .timepicker.open .timepicker-trigger {
|
|
|
1387
1387
|
}
|
|
1388
1388
|
.wui-timepicker-toggle:hover:not(:disabled),
|
|
1389
1389
|
.timepicker.open .wui-timepicker-toggle {
|
|
1390
|
-
color: var(--color-primary);
|
|
1390
|
+
color: var(--color-primary-ink);
|
|
1391
1391
|
}
|
|
1392
1392
|
.wui-timepicker-toggle:focus-visible {
|
|
1393
1393
|
outline: 2px solid var(--color-primary);
|
|
@@ -1507,7 +1507,7 @@ wui-timepicker[aria-invalid="true"] .timepicker.open .timepicker-trigger {
|
|
|
1507
1507
|
.timepicker-option:hover:not(:disabled),
|
|
1508
1508
|
.timepicker-option.is-active {
|
|
1509
1509
|
background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary) 8%, transparent));
|
|
1510
|
-
color: var(--color-primary);
|
|
1510
|
+
color: var(--color-primary-ink);
|
|
1511
1511
|
}
|
|
1512
1512
|
.timepicker-option.is-selected {
|
|
1513
1513
|
background: var(--color-primary);
|
|
@@ -60,7 +60,7 @@ wui-command-palette {
|
|
|
60
60
|
}
|
|
61
61
|
.wui-cmd-spinner {
|
|
62
62
|
flex: 0 0 auto;
|
|
63
|
-
color: var(--color-primary);
|
|
63
|
+
color: var(--color-primary-ink);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
.wui-cmd-list {
|
|
@@ -103,7 +103,7 @@ wui-command-palette {
|
|
|
103
103
|
}
|
|
104
104
|
.wui-cmd-item[aria-selected="true"] {
|
|
105
105
|
background: var(--color-primary-soft);
|
|
106
|
-
color: var(--color-primary);
|
|
106
|
+
color: var(--color-primary-ink);
|
|
107
107
|
}
|
|
108
108
|
.wui-cmd-item[aria-disabled="true"] {
|
|
109
109
|
color: var(--color-text-muted);
|
|
@@ -123,7 +123,7 @@ wui-command-palette {
|
|
|
123
123
|
}
|
|
124
124
|
.wui-cmd-item[aria-selected="true"] .wui-cmd-item-icon {
|
|
125
125
|
background: var(--color-surface);
|
|
126
|
-
color: var(--color-primary);
|
|
126
|
+
color: var(--color-primary-ink);
|
|
127
127
|
}
|
|
128
128
|
.wui-cmd-item-text {
|
|
129
129
|
display: flex;
|