@webority/theme 0.122.0 → 0.125.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/dist/postcss/forced-states.mjs +1 -1
- package/dist/published-theme.json +7 -7
- package/dist/purge-safelist.json +19 -0
- package/dist/webority-theme.css +1 -1
- package/package.json +2 -2
- package/scss/_bootstrap.generated.scss +1 -1
- package/scss/_components.scss +5 -4
- package/scss/_tokens.generated.scss +55 -24
- package/scss/wui/_card.scss +10 -2
- package/scss/wui/_chat.scss +65 -0
- package/scss/wui/_controls.scss +64 -0
- package/scss/wui/_data.scss +9 -3
- package/scss/wui/_display.scss +4 -0
- package/scss/wui/_markdown.scss +6 -0
- package/scss/wui/_navigation-menu.scss +3 -1
- package/scss/wui/_sections.scss +10 -0
- package/scss/wui/_shell-parts.scss +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.125.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": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"postcss": "^8.5.31"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@webority/tokens": "0.
|
|
50
|
+
"@webority/tokens": "0.125.0",
|
|
51
51
|
"bootstrap": "5.3.3",
|
|
52
52
|
"country-flag-icons": "^1.6.20",
|
|
53
53
|
"sass-embedded": "^1.97.0",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated by @webority/tokens 0.
|
|
1
|
+
// Generated by @webority/tokens 0.125.0 from its token source. Do not edit; run webority brand --library.
|
|
2
2
|
$body-color: #252f4a !default;
|
|
3
3
|
$body-secondary-color: #4b5675 !default;
|
|
4
4
|
$body-tertiary-color: #626a82 !default;
|
package/scss/_components.scss
CHANGED
|
@@ -196,15 +196,16 @@
|
|
|
196
196
|
// tint deepening on hover/press, no border — but keyed off the danger tokens. The label
|
|
197
197
|
// uses --color-danger-text (the AA-safe error red, lifted in dark mode to read on a dark surface),
|
|
198
198
|
// not the brighter --color-danger. Disabled falls through to the shared neutral-grey
|
|
199
|
-
// state below (it is not .btn-danger), like .btn-secondary.
|
|
199
|
+
// state below (it is not .btn-danger), like .btn-secondary. A product sets another label
|
|
200
|
+
// ink with --wui-btn-secondary-danger-ink (e.g. --color-danger-text-on-soft in dark mode).
|
|
200
201
|
.btn-secondary-danger {
|
|
201
|
-
--bs-btn-color: var(--color-danger-text);
|
|
202
|
+
--bs-btn-color: var(--wui-btn-secondary-danger-ink, var(--color-danger-text));
|
|
202
203
|
--bs-btn-bg: color-mix(in srgb, var(--color-danger) 12%, transparent);
|
|
203
204
|
--bs-btn-border-color: transparent;
|
|
204
|
-
--bs-btn-hover-color: var(--color-danger-text);
|
|
205
|
+
--bs-btn-hover-color: var(--wui-btn-secondary-danger-ink, var(--color-danger-text));
|
|
205
206
|
--bs-btn-hover-bg: color-mix(in srgb, var(--color-danger) 18%, transparent);
|
|
206
207
|
--bs-btn-hover-border-color: transparent;
|
|
207
|
-
--bs-btn-active-color: var(--color-danger-text);
|
|
208
|
+
--bs-btn-active-color: var(--wui-btn-secondary-danger-ink, var(--color-danger-text));
|
|
208
209
|
--bs-btn-active-bg: color-mix(in srgb, var(--color-danger) 26%, transparent);
|
|
209
210
|
--bs-btn-active-border-color: transparent;
|
|
210
211
|
// Bootstrap builds the focus ring from --bs-btn-focus-shadow-rgb, which only its own
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated by @webority/tokens 0.
|
|
1
|
+
// Generated by @webority/tokens 0.125.0 from its token source. Do not edit; run webority brand --library.
|
|
2
2
|
|
|
3
3
|
:root {
|
|
4
4
|
--wui-primary: #4F46E5;
|
|
@@ -360,6 +360,13 @@
|
|
|
360
360
|
--wui-surface-mute: var(--wui-dark-bg-muted);
|
|
361
361
|
--wui-neutral-bg-dark: var(--wui-dark-bg-muted);
|
|
362
362
|
--wui-neutral-bg-light: var(--wui-dark-bg-surface);
|
|
363
|
+
--wui-info-10: color-mix(in srgb, var(--wui-info) 16%, var(--wui-dark-bg-surface));
|
|
364
|
+
--wui-info-5: color-mix(in srgb, var(--wui-info) 10%, var(--wui-dark-bg-surface));
|
|
365
|
+
--wui-success-10: color-mix(in srgb, var(--wui-success) 16%, var(--wui-dark-bg-surface));
|
|
366
|
+
--wui-success-5: color-mix(in srgb, var(--wui-success) 10%, var(--wui-dark-bg-surface));
|
|
367
|
+
--wui-warning-10: color-mix(in srgb, var(--wui-warning) 16%, var(--wui-dark-bg-surface));
|
|
368
|
+
--wui-warning-5: color-mix(in srgb, var(--wui-warning) 10%, var(--wui-dark-bg-surface));
|
|
369
|
+
--wui-danger-10: color-mix(in srgb, var(--wui-danger) 16%, var(--wui-dark-bg-surface));
|
|
363
370
|
--wui-danger-5: color-mix(in srgb, var(--wui-danger) 10%, var(--wui-dark-bg-surface));
|
|
364
371
|
--wui-chart-1: var(--wui-dark-primary);
|
|
365
372
|
--wui-chart-2: var(--wui-dark-chart-2);
|
|
@@ -380,6 +387,8 @@
|
|
|
380
387
|
--wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
|
|
381
388
|
--wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
|
|
382
389
|
--wui-chart-neutral: var(--wui-dark-chart-neutral);
|
|
390
|
+
--wui-shadow-popover: 0px 8px 28px -6px rgba(0, 0, 0, 0.55);
|
|
391
|
+
--wui-shadow-modal: 0px 24px 60px -16px rgba(0, 0, 0, 0.7);
|
|
383
392
|
--color-bg: var(--wui-dark-bg-page);
|
|
384
393
|
--color-bg-subtle: var(--wui-dark-bg-elevated);
|
|
385
394
|
--color-bg-muted: var(--wui-dark-bg-muted);
|
|
@@ -475,6 +484,7 @@
|
|
|
475
484
|
--bs-emphasis-color: var(--color-text);
|
|
476
485
|
--bs-secondary-color: var(--color-text-muted);
|
|
477
486
|
--bs-tertiary-color: var(--color-text-subtle);
|
|
487
|
+
--bs-heading-color: var(--color-text);
|
|
478
488
|
--bs-body-bg: var(--color-bg);
|
|
479
489
|
--bs-border-color: var(--color-border);
|
|
480
490
|
--bs-secondary-bg: var(--color-surface);
|
|
@@ -505,6 +515,13 @@
|
|
|
505
515
|
--wui-surface-mute: var(--wui-dark-bg-muted);
|
|
506
516
|
--wui-neutral-bg-dark: var(--wui-dark-bg-muted);
|
|
507
517
|
--wui-neutral-bg-light: var(--wui-dark-bg-surface);
|
|
518
|
+
--wui-info-10: color-mix(in srgb, var(--wui-info) 16%, var(--wui-dark-bg-surface));
|
|
519
|
+
--wui-info-5: color-mix(in srgb, var(--wui-info) 10%, var(--wui-dark-bg-surface));
|
|
520
|
+
--wui-success-10: color-mix(in srgb, var(--wui-success) 16%, var(--wui-dark-bg-surface));
|
|
521
|
+
--wui-success-5: color-mix(in srgb, var(--wui-success) 10%, var(--wui-dark-bg-surface));
|
|
522
|
+
--wui-warning-10: color-mix(in srgb, var(--wui-warning) 16%, var(--wui-dark-bg-surface));
|
|
523
|
+
--wui-warning-5: color-mix(in srgb, var(--wui-warning) 10%, var(--wui-dark-bg-surface));
|
|
524
|
+
--wui-danger-10: color-mix(in srgb, var(--wui-danger) 16%, var(--wui-dark-bg-surface));
|
|
508
525
|
--wui-danger-5: color-mix(in srgb, var(--wui-danger) 10%, var(--wui-dark-bg-surface));
|
|
509
526
|
--wui-chart-1: var(--wui-dark-primary);
|
|
510
527
|
--wui-chart-2: var(--wui-dark-chart-2);
|
|
@@ -525,6 +542,8 @@
|
|
|
525
542
|
--wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
|
|
526
543
|
--wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
|
|
527
544
|
--wui-chart-neutral: var(--wui-dark-chart-neutral);
|
|
545
|
+
--wui-shadow-popover: 0px 8px 28px -6px rgba(0, 0, 0, 0.55);
|
|
546
|
+
--wui-shadow-modal: 0px 24px 60px -16px rgba(0, 0, 0, 0.7);
|
|
528
547
|
--color-bg: var(--wui-dark-bg-page);
|
|
529
548
|
--color-bg-subtle: var(--wui-dark-bg-elevated);
|
|
530
549
|
--color-bg-muted: var(--wui-dark-bg-muted);
|
|
@@ -620,6 +639,7 @@
|
|
|
620
639
|
--bs-emphasis-color: var(--color-text);
|
|
621
640
|
--bs-secondary-color: var(--color-text-muted);
|
|
622
641
|
--bs-tertiary-color: var(--color-text-subtle);
|
|
642
|
+
--bs-heading-color: var(--color-text);
|
|
623
643
|
--bs-body-bg: var(--color-bg);
|
|
624
644
|
--bs-border-color: var(--color-border);
|
|
625
645
|
--bs-secondary-bg: var(--color-surface);
|
|
@@ -645,29 +665,30 @@
|
|
|
645
665
|
|
|
646
666
|
$wui-dark-layer-names: (
|
|
647
667
|
wui-primary-50, wui-primary-30, wui-primary-20, wui-primary-15, wui-primary-10, wui-primary-5,
|
|
648
|
-
wui-surface-soft, wui-surface-violet-soft, wui-surface-mute, wui-neutral-bg-dark, wui-neutral-bg-light, wui-
|
|
649
|
-
wui-
|
|
650
|
-
wui-
|
|
651
|
-
wui-chart-
|
|
652
|
-
wui-chart-
|
|
653
|
-
|
|
654
|
-
color-
|
|
655
|
-
color-
|
|
656
|
-
color-
|
|
657
|
-
color-
|
|
658
|
-
color-
|
|
659
|
-
color-
|
|
660
|
-
color-
|
|
661
|
-
color-
|
|
662
|
-
color-
|
|
663
|
-
color-
|
|
664
|
-
color-
|
|
665
|
-
color-
|
|
666
|
-
color-chart-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
bs-
|
|
670
|
-
bs-tertiary-bg-rgb, bs-
|
|
668
|
+
wui-surface-soft, wui-surface-violet-soft, wui-surface-mute, wui-neutral-bg-dark, wui-neutral-bg-light, wui-info-10,
|
|
669
|
+
wui-info-5, wui-success-10, wui-success-5, wui-warning-10, wui-warning-5, wui-danger-10,
|
|
670
|
+
wui-danger-5, wui-chart-1, wui-chart-2, wui-chart-3, wui-chart-4, wui-chart-5,
|
|
671
|
+
wui-chart-6, wui-chart-7, wui-chart-8, wui-chart-seq-0, wui-chart-seq-1, wui-chart-seq-2,
|
|
672
|
+
wui-chart-seq-3, wui-chart-seq-4, wui-chart-seq-5, wui-chart-seq-6, wui-chart-diverging-low, wui-chart-diverging-mid,
|
|
673
|
+
wui-chart-diverging-high, wui-chart-neutral, wui-shadow-popover, wui-shadow-modal, color-bg, color-bg-subtle,
|
|
674
|
+
color-bg-muted, color-surface, color-surface-inverse, color-text, color-text-body, color-text-muted,
|
|
675
|
+
color-text-subtle, color-text-inverse, color-link, color-border, color-border-subtle, color-border-strong,
|
|
676
|
+
color-field-bg, color-field-border, color-field-border-hover, color-field-border-focus, color-scrim, color-scrim-strong,
|
|
677
|
+
color-progress-track, color-progress-label, color-thumb, color-scrollbar, color-scrollbar-hover, color-scrollbar-active,
|
|
678
|
+
color-primary, color-primary-hover, color-primary-soft, color-primary-text, color-on-primary, color-success,
|
|
679
|
+
color-success-pressed, color-success-soft, color-success-border, color-success-text, color-success-text-on-soft, color-success-strong,
|
|
680
|
+
color-on-success, color-on-success-strong, color-warning, color-warning-pressed, color-warning-soft, color-warning-border,
|
|
681
|
+
color-warning-text, color-warning-text-on-soft, color-warning-strong, color-warning-strong-hover, color-on-warning, color-on-warning-strong,
|
|
682
|
+
color-danger, color-danger-pressed, color-danger-soft, color-danger-border, color-danger-text, color-danger-text-on-soft,
|
|
683
|
+
color-danger-strong, color-danger-strong-hover, color-on-danger, color-on-danger-strong, color-info, color-info-pressed,
|
|
684
|
+
color-info-soft, color-info-border, color-info-text, color-info-text-on-soft, color-info-strong, color-on-info,
|
|
685
|
+
color-on-info-strong, color-chart-1, color-chart-2, color-chart-3, color-chart-4, color-chart-5,
|
|
686
|
+
color-chart-6, color-chart-7, color-chart-8, color-chart-seq-0, color-chart-seq-1, color-chart-seq-2,
|
|
687
|
+
color-chart-seq-3, color-chart-seq-4, color-chart-seq-5, color-chart-seq-6, color-chart-diverging-low, color-chart-diverging-mid,
|
|
688
|
+
color-chart-diverging-high, color-chart-neutral, wui-close-filter, wui-thumb-shadow, wui-thumb-shadow-hover, bs-body-color,
|
|
689
|
+
bs-emphasis-color, bs-secondary-color, bs-tertiary-color, bs-heading-color, bs-body-bg, bs-border-color,
|
|
690
|
+
bs-secondary-bg, bs-tertiary-bg, bs-primary, bs-body-bg-rgb, bs-primary-rgb, bs-body-color-rgb,
|
|
691
|
+
bs-emphasis-color-rgb, bs-secondary-color-rgb, bs-tertiary-color-rgb, bs-secondary-bg-rgb, bs-tertiary-bg-rgb, bs-border-color-rgb
|
|
671
692
|
);
|
|
672
693
|
|
|
673
694
|
// var() resolves where a name is declared, so the html copies keep the light values for a light box.
|
|
@@ -708,6 +729,13 @@ html {
|
|
|
708
729
|
--wui-surface-mute: var(--wui-dark-bg-muted);
|
|
709
730
|
--wui-neutral-bg-dark: var(--wui-dark-bg-muted);
|
|
710
731
|
--wui-neutral-bg-light: var(--wui-dark-bg-surface);
|
|
732
|
+
--wui-info-10: color-mix(in srgb, var(--wui-info) 16%, var(--wui-dark-bg-surface));
|
|
733
|
+
--wui-info-5: color-mix(in srgb, var(--wui-info) 10%, var(--wui-dark-bg-surface));
|
|
734
|
+
--wui-success-10: color-mix(in srgb, var(--wui-success) 16%, var(--wui-dark-bg-surface));
|
|
735
|
+
--wui-success-5: color-mix(in srgb, var(--wui-success) 10%, var(--wui-dark-bg-surface));
|
|
736
|
+
--wui-warning-10: color-mix(in srgb, var(--wui-warning) 16%, var(--wui-dark-bg-surface));
|
|
737
|
+
--wui-warning-5: color-mix(in srgb, var(--wui-warning) 10%, var(--wui-dark-bg-surface));
|
|
738
|
+
--wui-danger-10: color-mix(in srgb, var(--wui-danger) 16%, var(--wui-dark-bg-surface));
|
|
711
739
|
--wui-danger-5: color-mix(in srgb, var(--wui-danger) 10%, var(--wui-dark-bg-surface));
|
|
712
740
|
--wui-chart-1: var(--wui-dark-primary);
|
|
713
741
|
--wui-chart-2: var(--wui-dark-chart-2);
|
|
@@ -728,6 +756,8 @@ html {
|
|
|
728
756
|
--wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
|
|
729
757
|
--wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
|
|
730
758
|
--wui-chart-neutral: var(--wui-dark-chart-neutral);
|
|
759
|
+
--wui-shadow-popover: 0px 8px 28px -6px rgba(0, 0, 0, 0.55);
|
|
760
|
+
--wui-shadow-modal: 0px 24px 60px -16px rgba(0, 0, 0, 0.7);
|
|
731
761
|
--color-bg: var(--wui-dark-bg-page);
|
|
732
762
|
--color-bg-subtle: var(--wui-dark-bg-elevated);
|
|
733
763
|
--color-bg-muted: var(--wui-dark-bg-muted);
|
|
@@ -823,6 +853,7 @@ html {
|
|
|
823
853
|
--bs-emphasis-color: var(--color-text);
|
|
824
854
|
--bs-secondary-color: var(--color-text-muted);
|
|
825
855
|
--bs-tertiary-color: var(--color-text-subtle);
|
|
856
|
+
--bs-heading-color: var(--color-text);
|
|
826
857
|
--bs-body-bg: var(--color-bg);
|
|
827
858
|
--bs-border-color: var(--color-border);
|
|
828
859
|
--bs-secondary-bg: var(--color-surface);
|
package/scss/wui/_card.scss
CHANGED
|
@@ -46,13 +46,21 @@
|
|
|
46
46
|
}
|
|
47
47
|
// Bootstrap has its own `.card-title` (a bare margin-bottom) — these override it,
|
|
48
48
|
// so they must stay in the layer that loads after Bootstrap.
|
|
49
|
+
// A product sets its title type with --wui-card-title-fs and --wui-card-title-lh.
|
|
49
50
|
.card-title {
|
|
50
51
|
margin: 0;
|
|
51
|
-
font-size: 16px;
|
|
52
|
+
font-size: var(--wui-card-title-fs, 16px);
|
|
52
53
|
font-weight: 600;
|
|
53
|
-
line-height: 1.3;
|
|
54
|
+
line-height: var(--wui-card-title-lh, 1.3);
|
|
54
55
|
color: var(--color-text);
|
|
55
56
|
}
|
|
57
|
+
// A title passed as a heading stays a heading for screen readers but takes the title's type.
|
|
58
|
+
.card-title > :is(h1, h2, h3, h4, h5, h6) {
|
|
59
|
+
margin: 0;
|
|
60
|
+
font: inherit;
|
|
61
|
+
letter-spacing: inherit;
|
|
62
|
+
color: inherit;
|
|
63
|
+
}
|
|
56
64
|
.card-subtitle {
|
|
57
65
|
margin: 2px 0 0;
|
|
58
66
|
font-size: 12.5px;
|
package/scss/wui/_chat.scss
CHANGED
|
@@ -89,3 +89,68 @@ wui-chat[position="start"] .wui-chat-panel {
|
|
|
89
89
|
.wui-chat-composer .wui-field-message:empty {
|
|
90
90
|
display: none;
|
|
91
91
|
}
|
|
92
|
+
|
|
93
|
+
// Attachments wrap onto new rows as the composer or a sent question grows.
|
|
94
|
+
.wui-chat-attachments {
|
|
95
|
+
display: flex;
|
|
96
|
+
flex-wrap: wrap;
|
|
97
|
+
gap: var(--wui-space-xs);
|
|
98
|
+
}
|
|
99
|
+
.wui-chat-question-attachments {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-wrap: wrap;
|
|
102
|
+
justify-content: flex-end;
|
|
103
|
+
gap: var(--wui-space-xs);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// The banner that says a question is being edited, with its cancel control beside the text.
|
|
107
|
+
.wui-chat-editing {
|
|
108
|
+
display: flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
gap: var(--wui-space-sm);
|
|
111
|
+
padding: var(--wui-space-sm) var(--wui-space-md);
|
|
112
|
+
background: var(--color-bg-muted);
|
|
113
|
+
border-radius: var(--wui-radius-md);
|
|
114
|
+
color: var(--color-text-muted);
|
|
115
|
+
font-size: var(--wui-fs-sm);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Copy, edit, retry and the other actions under an answer; they wrap rather than overflow the panel.
|
|
119
|
+
.wui-chat-turn-actions {
|
|
120
|
+
display: flex;
|
|
121
|
+
flex-wrap: wrap;
|
|
122
|
+
gap: var(--wui-space-xs);
|
|
123
|
+
margin-block-start: var(--wui-space-xs);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Suggested follow-up questions under an answer, as wrapping chips.
|
|
127
|
+
.wui-chat-suggestions {
|
|
128
|
+
display: flex;
|
|
129
|
+
flex-wrap: wrap;
|
|
130
|
+
gap: var(--wui-space-xs);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Past chats: a scrolling list in the body's padding, one row per chat.
|
|
134
|
+
.wui-chat-past {
|
|
135
|
+
display: flex;
|
|
136
|
+
flex-direction: column;
|
|
137
|
+
flex: 1 1 auto;
|
|
138
|
+
min-height: 0;
|
|
139
|
+
gap: var(--wui-space-xs);
|
|
140
|
+
padding: var(--wui-space-lg);
|
|
141
|
+
overflow: auto;
|
|
142
|
+
}
|
|
143
|
+
// min-width 0 lets the title inside the row shrink and truncate instead of pushing the row wider.
|
|
144
|
+
.wui-chat-past-row {
|
|
145
|
+
display: flex;
|
|
146
|
+
align-items: center;
|
|
147
|
+
gap: var(--wui-space-sm);
|
|
148
|
+
min-width: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Bootstrap's d-flex is !important, so hidden needs its own rule.
|
|
152
|
+
.wui-chat-foot[hidden],
|
|
153
|
+
.wui-chat-past[hidden],
|
|
154
|
+
.wui-chat-suggestions[hidden] {
|
|
155
|
+
display: none !important;
|
|
156
|
+
}
|
package/scss/wui/_controls.scss
CHANGED
|
@@ -255,6 +255,10 @@
|
|
|
255
255
|
box-shadow: none;
|
|
256
256
|
filter: none;
|
|
257
257
|
}
|
|
258
|
+
// Bootstrap paints a mouse-focused box's border in its compiled indigo; the switch keeps its own transparent track.
|
|
259
|
+
.form-check-input:focus:not(:focus-visible):not(:checked):not([type="checkbox"]:indeterminate):not(.form-switch .form-check-input) {
|
|
260
|
+
border-color: color-mix(in srgb, var(--color-primary) 50%, transparent);
|
|
261
|
+
}
|
|
258
262
|
.form-check-input:checked,
|
|
259
263
|
.wui-check:checked,
|
|
260
264
|
.wui-radio:checked {
|
|
@@ -372,6 +376,50 @@
|
|
|
372
376
|
border-radius: 50%;
|
|
373
377
|
corner-shape: round;
|
|
374
378
|
}
|
|
379
|
+
|
|
380
|
+
// Table-row switch (<app-row-switch>, AppRowSwitch): a button, not an input, so a row can post it.
|
|
381
|
+
// Same track, knob, colours and focus ring as the form switch above.
|
|
382
|
+
.wui-row-switch {
|
|
383
|
+
display: inline-flex;
|
|
384
|
+
align-items: center;
|
|
385
|
+
padding: 0;
|
|
386
|
+
border: 0;
|
|
387
|
+
background: none;
|
|
388
|
+
border-radius: var(--wui-radius-pill);
|
|
389
|
+
cursor: pointer;
|
|
390
|
+
}
|
|
391
|
+
.wui-row-switch:focus-visible {
|
|
392
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
393
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
394
|
+
}
|
|
395
|
+
.wui-row-switch__track {
|
|
396
|
+
position: relative;
|
|
397
|
+
display: block;
|
|
398
|
+
width: 40px;
|
|
399
|
+
height: 22px;
|
|
400
|
+
border-radius: var(--wui-radius-pill);
|
|
401
|
+
background-color: var(--color-border-strong);
|
|
402
|
+
}
|
|
403
|
+
.wui-row-switch__thumb {
|
|
404
|
+
position: absolute;
|
|
405
|
+
top: 2px;
|
|
406
|
+
left: 2px;
|
|
407
|
+
width: 18px;
|
|
408
|
+
height: 18px;
|
|
409
|
+
border-radius: 50%;
|
|
410
|
+
background-color: var(--color-surface);
|
|
411
|
+
}
|
|
412
|
+
.wui-row-switch[aria-checked="true"] .wui-row-switch__track {
|
|
413
|
+
background-color: var(--color-primary);
|
|
414
|
+
}
|
|
415
|
+
.wui-row-switch[aria-checked="true"] .wui-row-switch__thumb {
|
|
416
|
+
transform: translateX(18px);
|
|
417
|
+
}
|
|
418
|
+
.wui-row-switch:disabled,
|
|
419
|
+
.wui-row-switch[aria-busy="true"] {
|
|
420
|
+
opacity: var(--wui-disabled-opacity);
|
|
421
|
+
cursor: not-allowed;
|
|
422
|
+
}
|
|
375
423
|
@media (prefers-reduced-motion: reduce) {
|
|
376
424
|
.form-check-input,
|
|
377
425
|
.wui-check,
|
|
@@ -1335,6 +1383,22 @@ wui-select[compact] {
|
|
|
1335
1383
|
.field > .wui-score-scale {
|
|
1336
1384
|
align-self: stretch;
|
|
1337
1385
|
}
|
|
1386
|
+
// A chosen value's photo or initials sits at the control's start edge, and the start padding makes
|
|
1387
|
+
// room for it: the avatar's own width plus the control's gap. The width is .avatar-xs's fixed size,
|
|
1388
|
+
// a layout constant with no token. Logical properties, so the start edge follows the reading direction.
|
|
1389
|
+
.search-select-control.wui-has-value-avatar {
|
|
1390
|
+
--wui-search-select-value-avatar-size: 20px;
|
|
1391
|
+
position: relative;
|
|
1392
|
+
padding-inline-start: calc(var(--wui-space-md) + var(--wui-search-select-value-avatar-size) + var(--wui-space-sm));
|
|
1393
|
+
}
|
|
1394
|
+
.search-select-control.wui-has-value-avatar > .wui-search-select-value-avatar {
|
|
1395
|
+
position: absolute;
|
|
1396
|
+
inset-inline-start: var(--wui-space-md);
|
|
1397
|
+
top: 50%;
|
|
1398
|
+
transform: translateY(-50%);
|
|
1399
|
+
display: inline-flex;
|
|
1400
|
+
pointer-events: none;
|
|
1401
|
+
}
|
|
1338
1402
|
// A file picker fills its column by default (align-self:stretch fills the field on the cross
|
|
1339
1403
|
// axis, but the field itself collapses to its content when it is a flex item — the showcase
|
|
1340
1404
|
// lays fields out in a flex row — so stretch the field to its container first). Override per
|
package/scss/wui/_data.scss
CHANGED
|
@@ -768,7 +768,7 @@
|
|
|
768
768
|
min-width: 0;
|
|
769
769
|
max-width: none;
|
|
770
770
|
white-space: normal;
|
|
771
|
-
overflow-wrap:
|
|
771
|
+
overflow-wrap: break-word;
|
|
772
772
|
}
|
|
773
773
|
.table-ledger.wui-table-stack,
|
|
774
774
|
.table-ledger.wui-table-stack > tbody,
|
|
@@ -826,7 +826,7 @@
|
|
|
826
826
|
// its edge (a long email under an avatar did).
|
|
827
827
|
.table-ledger.wui-table-stack > * > tr > td > * {
|
|
828
828
|
min-width: 0;
|
|
829
|
-
overflow-wrap:
|
|
829
|
+
overflow-wrap: break-word;
|
|
830
830
|
}
|
|
831
831
|
.table-ledger.wui-table-stack > tbody > tr > td .u-meta {
|
|
832
832
|
align-items: flex-end;
|
|
@@ -851,7 +851,7 @@
|
|
|
851
851
|
overflow: visible;
|
|
852
852
|
-webkit-line-clamp: none;
|
|
853
853
|
line-clamp: none;
|
|
854
|
-
overflow-wrap:
|
|
854
|
+
overflow-wrap: break-word;
|
|
855
855
|
}
|
|
856
856
|
// A group header is a section label between the cards, not a card of its own.
|
|
857
857
|
.table-ledger.wui-table-stack > tbody > tr.wui-group-row {
|
|
@@ -937,6 +937,12 @@
|
|
|
937
937
|
.table-wrap.wui-table-scroll:has(> .table-ledger) {
|
|
938
938
|
padding-top: 0;
|
|
939
939
|
}
|
|
940
|
+
// A scrolling table that opens its card needs its spacing outside the scroll box: padding here
|
|
941
|
+
// would show scrolled rows above the sticky header. The card is a flex column, so the margin
|
|
942
|
+
// does not collapse out of it.
|
|
943
|
+
.card > .table-wrap.wui-table-scroll:has(> .table-ledger):first-child {
|
|
944
|
+
margin-top: var(--wui-card-pad);
|
|
945
|
+
}
|
|
940
946
|
|
|
941
947
|
// Pinned first column (`stickyFirstColumn`): the identity column, and the select/expand columns the
|
|
942
948
|
// library puts before it, hold their place while a wide table scrolls sideways. The identity column
|
package/scss/wui/_display.scss
CHANGED
|
@@ -1494,6 +1494,10 @@ button.wui-link {
|
|
|
1494
1494
|
z-index: 0;
|
|
1495
1495
|
white-space: var(--wui-link-label-white-space, nowrap);
|
|
1496
1496
|
}
|
|
1497
|
+
// A link in a table cell may wrap: a nowrap label runs under the pinned actions column.
|
|
1498
|
+
.table-ledger td .wui-link__label {
|
|
1499
|
+
--wui-link-label-white-space: normal;
|
|
1500
|
+
}
|
|
1497
1501
|
.wui-link__ic {
|
|
1498
1502
|
display: inline-flex;
|
|
1499
1503
|
flex: none;
|
package/scss/wui/_markdown.scss
CHANGED
|
@@ -88,3 +88,9 @@
|
|
|
88
88
|
.wui-markdown .table th {
|
|
89
89
|
font-weight: 600;
|
|
90
90
|
}
|
|
91
|
+
// A citation chip sits inside a line of text, so it takes the line's baseline.
|
|
92
|
+
.wui-markdown-citation {
|
|
93
|
+
display: inline-flex;
|
|
94
|
+
vertical-align: baseline;
|
|
95
|
+
margin-inline: var(--wui-space-xxs);
|
|
96
|
+
}
|
|
@@ -33,7 +33,7 @@ wui-navigation-menu {
|
|
|
33
33
|
padding: 8px 12px;
|
|
34
34
|
border: 0;
|
|
35
35
|
border-radius: var(--wui-radius-sm);
|
|
36
|
-
background: transparent;
|
|
36
|
+
background: var(--wui-nav-menu-item-bg, transparent);
|
|
37
37
|
color: var(--color-text);
|
|
38
38
|
font: inherit;
|
|
39
39
|
font-size: 14px;
|
|
@@ -54,6 +54,8 @@ wui-navigation-menu {
|
|
|
54
54
|
outline-offset: 1px;
|
|
55
55
|
}
|
|
56
56
|
&[aria-current="page"] {
|
|
57
|
+
// Set through the item variable, not background, so the hover fill above still wins.
|
|
58
|
+
--wui-nav-menu-item-bg: var(--wui-nav-menu-current-bg, transparent);
|
|
57
59
|
color: var(--color-primary-text);
|
|
58
60
|
}
|
|
59
61
|
}
|
package/scss/wui/_sections.scss
CHANGED
|
@@ -262,6 +262,16 @@
|
|
|
262
262
|
filter: none;
|
|
263
263
|
opacity: 1;
|
|
264
264
|
}
|
|
265
|
+
// Dark pages: a dark mark turns light, and the hover and focus reveal keeps that inversion.
|
|
266
|
+
:root[data-theme="dark"] .wui-section-logo-img {
|
|
267
|
+
filter: grayscale(1) invert(1);
|
|
268
|
+
opacity: 0.8;
|
|
269
|
+
}
|
|
270
|
+
:root[data-theme="dark"] .wui-section-logo-img:hover,
|
|
271
|
+
:root[data-theme="dark"] .wui-section-logo a:focus-visible .wui-section-logo-img {
|
|
272
|
+
filter: grayscale(1) invert(1);
|
|
273
|
+
opacity: 1;
|
|
274
|
+
}
|
|
265
275
|
.wui-section-logo-text {
|
|
266
276
|
font-family: inherit;
|
|
267
277
|
font-weight: 600;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// Phone floor: every control here is at least 44px tall below 768px, and nothing that opens is
|
|
9
9
|
// wider than the viewport less 24px.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
:root {
|
|
12
12
|
// One height the tab bar, the content's bottom padding and the footer's offset agree on.
|
|
13
13
|
--wui-tabbar-h: 60px;
|
|
14
14
|
}
|