@webority/theme 0.86.1 → 0.87.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/published-theme.json +35 -3
- package/dist/purge-safelist.json +2 -0
- package/dist/webority-theme-export.mjs +1 -1
- package/dist/webority-theme.css +1 -1
- package/package.json +1 -1
- package/scss/_tokens.scss +65 -3
- package/scss/_wui-aliases.scss +2 -2
- package/scss/wui/_choice.scss +7 -0
- package/scss/wui/_code-block.scss +1 -1
- package/scss/wui/_controls.scss +25 -1
- package/scss/wui/_hover-card.scss +1 -1
- package/scss/wui/_interaction.scss +3 -25
- package/scss/wui/_kanban.scss +6 -6
- package/scss/wui/_lightbox.scss +1 -1
- package/scss/wui/_navigation-menu.scss +1 -1
- package/scss/wui/_onboarding-checklist.scss +1 -1
- package/scss/wui/_rich-text.scss +3 -3
- package/scss/wui/_shell.scss +5 -4
- package/scss/wui/_shortcuts.scss +1 -1
- package/scss/wui/_sortable.scss +1 -1
- package/scss/wui/_split-view.scss +1 -1
- package/scss/wui/_toolbar.scss +2 -2
- package/scss/wui/_utilities.scss +13 -0
- package/token-meanings.json +24 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.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/_tokens.scss
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
--wui-text-3: #687088;
|
|
45
45
|
/// meaning: Decorative faint ink, not for text a person must read.
|
|
46
46
|
--wui-text-4: #99A1B7;
|
|
47
|
-
/// meaning: Faintest ink, for decorative marks
|
|
47
|
+
/// meaning: Faintest ink, for decorative marks.
|
|
48
48
|
--wui-text-5: #C4CADA;
|
|
49
49
|
|
|
50
50
|
// Surfaces
|
|
@@ -72,6 +72,8 @@
|
|
|
72
72
|
--wui-border-light: #EBEDF3;
|
|
73
73
|
/// meaning: Softest border, for inner dividers.
|
|
74
74
|
--wui-border-soft: #F4F6F8;
|
|
75
|
+
/// meaning: Strong border for emphasised separators, chart axes and unselected control outlines.
|
|
76
|
+
--wui-border-strong: #C4CADA;
|
|
75
77
|
// The unfilled part of a progress bar / meter. Darker than every surface it can sit on
|
|
76
78
|
// (card, page, muted fill) so the empty track reads as a track, yet light enough that the
|
|
77
79
|
// mid-yellow warning fill still separates from it.
|
|
@@ -316,12 +318,47 @@
|
|
|
316
318
|
// Corner radii (DESIGN.md scale) — portal aliases as --radius-*
|
|
317
319
|
/// meaning: Small step of the corner radius scale.
|
|
318
320
|
--wui-radius-sm: 8px;
|
|
319
|
-
/// meaning:
|
|
320
|
-
--wui-radius: 10px;
|
|
321
|
+
/// meaning: Medium step of the corner radius scale, the default corner.
|
|
322
|
+
--wui-radius-md: 10px;
|
|
321
323
|
/// meaning: Large step of the corner radius scale.
|
|
322
324
|
--wui-radius-lg: 14px;
|
|
323
325
|
/// meaning: Extra-large step of the corner radius scale.
|
|
324
326
|
--wui-radius-xl: 16px;
|
|
327
|
+
/// meaning: Fully rounded corner, for pills and round buttons.
|
|
328
|
+
--wui-radius-pill: 9999px;
|
|
329
|
+
|
|
330
|
+
// Spacing scale, shared with the phone library and every Canvas theme.
|
|
331
|
+
/// meaning: No space.
|
|
332
|
+
--wui-space-none: 0px;
|
|
333
|
+
/// meaning: Hairline step of the spacing scale.
|
|
334
|
+
--wui-space-xxs: 2px;
|
|
335
|
+
/// meaning: Extra-small step of the spacing scale.
|
|
336
|
+
--wui-space-xs: 4px;
|
|
337
|
+
/// meaning: Small step of the spacing scale.
|
|
338
|
+
--wui-space-sm: 8px;
|
|
339
|
+
/// meaning: Medium step of the spacing scale.
|
|
340
|
+
--wui-space-md: 12px;
|
|
341
|
+
/// meaning: Large step of the spacing scale.
|
|
342
|
+
--wui-space-lg: 16px;
|
|
343
|
+
/// meaning: Extra-large step of the spacing scale.
|
|
344
|
+
--wui-space-xl: 24px;
|
|
345
|
+
/// meaning: Double extra-large step of the spacing scale.
|
|
346
|
+
--wui-space-2xl: 32px;
|
|
347
|
+
/// meaning: Triple extra-large step of the spacing scale.
|
|
348
|
+
--wui-space-3xl: 48px;
|
|
349
|
+
/// meaning: Largest step of the spacing scale.
|
|
350
|
+
--wui-space-4xl: 64px;
|
|
351
|
+
|
|
352
|
+
/// meaning: Regular text weight.
|
|
353
|
+
--wui-fw-normal: 400;
|
|
354
|
+
/// meaning: Medium text weight.
|
|
355
|
+
--wui-fw-medium: 500;
|
|
356
|
+
/// meaning: Semibold text weight, for labels and titles.
|
|
357
|
+
--wui-fw-semibold: 600;
|
|
358
|
+
/// meaning: Bold text weight.
|
|
359
|
+
--wui-fw-bold: 700;
|
|
360
|
+
/// meaning: Tight line height, for headings and single-line labels.
|
|
361
|
+
--wui-lh-tight: 1.2;
|
|
325
362
|
|
|
326
363
|
// Field (input/select/datepicker/…) radius — a flat 8px corner across every
|
|
327
364
|
// size, for a crisp plain-rounded field (no squircle). Change here to restyle
|
|
@@ -478,6 +515,8 @@
|
|
|
478
515
|
--wui-fs-xs: clamp(0.75rem, 0.73rem + 0.1vw, 0.8125rem);
|
|
479
516
|
/// meaning: Small step of the fluid type scale; a product opts in per element.
|
|
480
517
|
--wui-fs-sm: clamp(0.8125rem, 0.79rem + 0.12vw, 0.875rem);
|
|
518
|
+
/// meaning: Step between the small and body sizes of the fluid type scale; a product opts in per element.
|
|
519
|
+
--wui-fs-smb: clamp(0.875rem, 0.8rem + 0.2vw, 0.9375rem);
|
|
481
520
|
/// meaning: Body-size step of the fluid type scale, close to Bootstrap's 1rem.
|
|
482
521
|
--wui-fs-base: clamp(0.95rem, 0.9rem + 0.25vw, 1.05rem);
|
|
483
522
|
/// meaning: Large step of the fluid type scale; a product opts in per element.
|
|
@@ -488,12 +527,20 @@
|
|
|
488
527
|
--wui-fs-2xl: clamp(1.5rem, 1.3rem + 1vw, 2rem);
|
|
489
528
|
/// meaning: Triple extra-large step of the fluid type scale; a product opts in per element.
|
|
490
529
|
--wui-fs-3xl: clamp(1.875rem, 1.5rem + 1.75vw, 2.75rem);
|
|
530
|
+
/// meaning: Step between the triple and fourth extra-large sizes of the fluid type scale; a product opts in per element.
|
|
531
|
+
--wui-fs-48: clamp(2.5rem, 2.2rem + 1.5vw, 3rem);
|
|
491
532
|
/// meaning: Fourth extra-large step of the fluid type scale; a product opts in per element.
|
|
492
533
|
--wui-fs-4xl: clamp(2.25rem, 1.7rem + 2.5vw, 3.5rem);
|
|
493
534
|
/// meaning: Fifth extra-large step of the fluid type scale; a product opts in per element.
|
|
494
535
|
--wui-fs-5xl: clamp(2.75rem, 1.9rem + 3.75vw, 4.5rem);
|
|
536
|
+
/// meaning: Step between the fifth and sixth extra-large sizes of the fluid type scale; a product opts in per element.
|
|
537
|
+
--wui-fs-64: clamp(3rem, 2.6rem + 2.5vw, 4rem);
|
|
495
538
|
/// meaning: Sixth extra-large step of the fluid type scale; a product opts in per element.
|
|
496
539
|
--wui-fs-6xl: clamp(3.5rem, 2.2rem + 5.5vw, 6rem);
|
|
540
|
+
/// meaning: First display step above the fluid type scale, 64px on a phone to 120px on a desktop.
|
|
541
|
+
--wui-fs-7xl: clamp(4rem, 2.7rem + 5.33vw, 7.5rem);
|
|
542
|
+
/// meaning: Largest display step of the fluid type scale, 72px on a phone to 144px on a desktop.
|
|
543
|
+
--wui-fs-8xl: clamp(4.5rem, 2.83rem + 6.86vw, 9rem);
|
|
497
544
|
|
|
498
545
|
// ---- Font stacks ---------------------------------------------------
|
|
499
546
|
// Sans-serif body font (Bootstrap's system stack or product override).
|
|
@@ -557,6 +604,21 @@
|
|
|
557
604
|
--wui-first-day: 1;
|
|
558
605
|
}
|
|
559
606
|
|
|
607
|
+
// The neutral surfaces follow the dark theme, so a neutral alert or table row stays dark on a dark
|
|
608
|
+
// page. The selectors match the dark theme (manual attribute, and the automatic media query).
|
|
609
|
+
:root[data-theme="dark"],
|
|
610
|
+
:root[data-bs-theme="dark"] {
|
|
611
|
+
--wui-neutral-bg-light: var(--wui-dark-bg-surface);
|
|
612
|
+
--wui-neutral-bg-dark: var(--wui-dark-bg-muted);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
:root[data-theme="auto"] {
|
|
616
|
+
@media (prefers-color-scheme: dark) {
|
|
617
|
+
--wui-neutral-bg-light: var(--wui-dark-bg-surface);
|
|
618
|
+
--wui-neutral-bg-dark: var(--wui-dark-bg-muted);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
560
622
|
// A finger needs 44px: on a phone-width or touch screen the default control takes the lg rung. The
|
|
561
623
|
// same query sizes the modal and drawer close buttons (wui/_overlays.scss).
|
|
562
624
|
@media (max-width: 575.98px), (pointer: coarse) {
|
package/scss/_wui-aliases.scss
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
/// meaning: Softest border for inner dividers and list edges.
|
|
26
26
|
--color-border-light: var(--wui-border-soft);
|
|
27
27
|
/// meaning: Stronger border for emphasised separators.
|
|
28
|
-
--color-border-strong: var(--wui-
|
|
28
|
+
--color-border-strong: var(--wui-border-strong);
|
|
29
29
|
// The resting and hover border of an input-like control.
|
|
30
30
|
// Decorative card and table borders stay on --color-border.
|
|
31
31
|
/// meaning: Resting border of an input-like control such as a field or select.
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
|
|
252
252
|
// Corner radii
|
|
253
253
|
--radius-sm: var(--wui-radius-sm);
|
|
254
|
-
--radius: var(--wui-radius);
|
|
254
|
+
--radius: var(--wui-radius-md);
|
|
255
255
|
--radius-lg: var(--wui-radius-lg);
|
|
256
256
|
--radius-xl: var(--wui-radius-xl);
|
|
257
257
|
}
|
package/scss/wui/_choice.scss
CHANGED
|
@@ -319,6 +319,13 @@
|
|
|
319
319
|
font-size: 16px;
|
|
320
320
|
border-radius: var(--wui-field-radius-lg);
|
|
321
321
|
}
|
|
322
|
+
// xl: the 52px select, the same height as an AppInput at size="xl". A literal height, as on the input.
|
|
323
|
+
.wui-search-select-xl .search-select-control {
|
|
324
|
+
height: 52px;
|
|
325
|
+
min-height: 52px;
|
|
326
|
+
font-size: 16px;
|
|
327
|
+
border-radius: var(--wui-field-radius-lg);
|
|
328
|
+
}
|
|
322
329
|
// Multi-select grows with its chips, so a size sets the FLOOR (min-height from the rule
|
|
323
330
|
// above) but never a fixed height — reset height:auto so a second row of chips can appear.
|
|
324
331
|
.search-select-sm .search-select-multi,
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
display: block;
|
|
11
11
|
min-width: 0;
|
|
12
12
|
border: 1px solid var(--color-border);
|
|
13
|
-
border-radius: var(--wui-radius);
|
|
13
|
+
border-radius: var(--wui-radius-md);
|
|
14
14
|
background: var(--color-bg-subtle);
|
|
15
15
|
color: var(--color-text);
|
|
16
16
|
font-family: var(--bs-font-monospace);
|
package/scss/wui/_controls.scss
CHANGED
|
@@ -423,6 +423,15 @@
|
|
|
423
423
|
font-size: 16px;
|
|
424
424
|
border-radius: var(--wui-field-radius-lg);
|
|
425
425
|
}
|
|
426
|
+
// xl (size="xl"): the 52px control for large forms. A literal height, because the control-height
|
|
427
|
+
// ladder stops at 44px and its tokens live in the theme's token file. A floating label needs no
|
|
428
|
+
// rule of its own: it centres on the field's box, so it stays inside at 52px.
|
|
429
|
+
.wui-input-xl {
|
|
430
|
+
height: 52px;
|
|
431
|
+
padding: 9px 16px;
|
|
432
|
+
font-size: 16px;
|
|
433
|
+
border-radius: var(--wui-field-radius-lg);
|
|
434
|
+
}
|
|
426
435
|
.textarea,
|
|
427
436
|
textarea.form-control {
|
|
428
437
|
height: auto;
|
|
@@ -850,7 +859,8 @@ $wui-field-error-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/
|
|
|
850
859
|
--wui-input-icon-size: 14px;
|
|
851
860
|
--wui-input-icon-gap: 10px;
|
|
852
861
|
}
|
|
853
|
-
.input-icon:has(> .input-lg)
|
|
862
|
+
.input-icon:has(> .input-lg),
|
|
863
|
+
.input-icon:has(> .wui-input-xl) {
|
|
854
864
|
--wui-input-icon-slot: 48px;
|
|
855
865
|
--wui-input-icon-size: 18px;
|
|
856
866
|
--wui-input-icon-gap: 14px;
|
|
@@ -1318,6 +1328,17 @@ wui-select[compact] {
|
|
|
1318
1328
|
}
|
|
1319
1329
|
}
|
|
1320
1330
|
|
|
1331
|
+
// Under 16px, iOS Safari zooms the whole page when a text field takes focus. On the same screens
|
|
1332
|
+
// that raise the control to 44px, every text-entry element gets a 16px floor. Component rules set
|
|
1333
|
+
// their own sizes at higher specificity, so the floor needs !important to hold for all of them.
|
|
1334
|
+
@media (max-width: 575.98px), (pointer: coarse) {
|
|
1335
|
+
input:not([type="checkbox"], [type="radio"], [type="range"], [type="button"], [type="submit"], [type="reset"], [type="file"], [type="color"], [type="image"], [type="hidden"]),
|
|
1336
|
+
textarea,
|
|
1337
|
+
select {
|
|
1338
|
+
font-size: 16px !important;
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1321
1342
|
// red border around a non-input group (e.g. a structure-form card row)
|
|
1322
1343
|
.group-invalid {
|
|
1323
1344
|
border: 1px solid var(--color-danger);
|
|
@@ -1372,6 +1393,9 @@ wui-select[compact] {
|
|
|
1372
1393
|
.input-with-unit .num-input.input-lg {
|
|
1373
1394
|
height: calc(var(--wui-control-height-lg) - 2px);
|
|
1374
1395
|
}
|
|
1396
|
+
.input-with-unit .num-input.wui-input-xl {
|
|
1397
|
+
height: calc(52px - 2px);
|
|
1398
|
+
}
|
|
1375
1399
|
.input-with-unit .num-input:focus {
|
|
1376
1400
|
box-shadow: none;
|
|
1377
1401
|
}
|
|
@@ -25,7 +25,7 @@ wui-hover-card {
|
|
|
25
25
|
overflow: auto;
|
|
26
26
|
padding: 12px 14px;
|
|
27
27
|
border: 1px solid var(--color-border);
|
|
28
|
-
border-radius: var(--wui-radius);
|
|
28
|
+
border-radius: var(--wui-radius-md);
|
|
29
29
|
background: var(--color-surface);
|
|
30
30
|
color: var(--color-text);
|
|
31
31
|
box-shadow: var(--wui-shadow-overlay);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// ---- Default ring -----------------------------------------------------------
|
|
12
12
|
// Anything focusable that no partial styles gets the shared ring instead of the browser's.
|
|
13
13
|
// Zero specificity, so every component rule (including a panel's deliberate `outline: none`)
|
|
14
|
-
// still wins. Text fields are not in this list;
|
|
14
|
+
// still wins. Text fields are not in this list; their focus border marks them.
|
|
15
15
|
:where(
|
|
16
16
|
a[href],
|
|
17
17
|
area[href],
|
|
@@ -83,30 +83,8 @@
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
// ---- Text fields --------------------------------------------------------------
|
|
86
|
-
// A text field
|
|
87
|
-
//
|
|
88
|
-
// in the field. A field drawn inside a shell (phone, unit, stepper, input group, one-time code) rings
|
|
89
|
-
// the shell and the bare input inside it draws nothing; so does the borderless .input-bare, which
|
|
90
|
-
// sits inside another control's chrome.
|
|
91
|
-
:is(.form-control, .form-select, .input, .select, .textarea):not(.input-bare):focus-visible {
|
|
92
|
-
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
93
|
-
outline-offset: var(--wui-focus-ring-offset);
|
|
94
|
-
}
|
|
95
|
-
.app-phone-number-input .phone-input-wrap:has(> .input:focus-visible),
|
|
96
|
-
.input-with-unit:has(.num-input:focus-visible),
|
|
97
|
-
.num-wrap:has(.num-input:focus-visible),
|
|
98
|
-
.wui-input-group:has(> :is(.form-control, .input):focus-visible),
|
|
99
|
-
.otp:has(.otp-field:focus-visible) .otp-slot.active {
|
|
100
|
-
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
101
|
-
outline-offset: var(--wui-focus-ring-offset);
|
|
102
|
-
}
|
|
103
|
-
// After the ring rule: these tie with it on specificity, so source order decides.
|
|
104
|
-
.app-phone-number-input .phone-input-wrap > .input:focus-visible,
|
|
105
|
-
.input-with-unit .num-input:focus-visible,
|
|
106
|
-
.num-wrap .num-input:focus-visible,
|
|
107
|
-
.wui-input-group > :is(.form-control, .input):focus-visible {
|
|
108
|
-
outline: none;
|
|
109
|
-
}
|
|
86
|
+
// A text field (and a shell around one: phone, unit, stepper, input group, one-time code) draws no
|
|
87
|
+
// outer ring. Its soft focus border in _controls.scss is the focus cue.
|
|
110
88
|
|
|
111
89
|
// ---- Not obscured (WCAG 2.4.11) ---------------------------------------------
|
|
112
90
|
// A control focused by Tab scrolls clear of the sticky shell topbar (72px) and a sticky form
|
package/scss/wui/_kanban.scss
CHANGED
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
height: 32px;
|
|
184
184
|
padding: 0;
|
|
185
185
|
border: 0;
|
|
186
|
-
border-radius: var(--wui-radius);
|
|
186
|
+
border-radius: var(--wui-radius-md);
|
|
187
187
|
background: transparent;
|
|
188
188
|
color: var(--color-text-muted);
|
|
189
189
|
cursor: pointer;
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
margin: 0 8px 8px;
|
|
241
241
|
padding: 16px 8px;
|
|
242
242
|
border: 1px dashed var(--color-border);
|
|
243
|
-
border-radius: var(--wui-radius);
|
|
243
|
+
border-radius: var(--wui-radius-md);
|
|
244
244
|
color: var(--color-text-muted);
|
|
245
245
|
font-size: 0.8125rem;
|
|
246
246
|
text-align: center;
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
padding: 12px;
|
|
252
252
|
background: var(--color-surface);
|
|
253
253
|
border: 1px solid var(--color-border);
|
|
254
|
-
border-radius: var(--wui-radius);
|
|
254
|
+
border-radius: var(--wui-radius-md);
|
|
255
255
|
color: var(--color-text);
|
|
256
256
|
cursor: grab;
|
|
257
257
|
touch-action: manipulation;
|
|
@@ -299,7 +299,7 @@
|
|
|
299
299
|
margin: 0 8px 8px;
|
|
300
300
|
padding: 6px 10px;
|
|
301
301
|
border: 0;
|
|
302
|
-
border-radius: var(--wui-radius);
|
|
302
|
+
border-radius: var(--wui-radius-md);
|
|
303
303
|
background: transparent;
|
|
304
304
|
color: var(--color-text-muted);
|
|
305
305
|
font-size: 0.8125rem;
|
|
@@ -347,7 +347,7 @@
|
|
|
347
347
|
position: absolute;
|
|
348
348
|
inset: auto 0 0;
|
|
349
349
|
height: 3px;
|
|
350
|
-
border-radius: 0 0 var(--wui-radius) var(--wui-radius);
|
|
350
|
+
border-radius: 0 0 var(--wui-radius-md) var(--wui-radius-md);
|
|
351
351
|
background: linear-gradient(90deg, transparent, var(--color-primary), transparent);
|
|
352
352
|
background-size: 200% 100%;
|
|
353
353
|
animation: wui-kanban-saving 1.1s linear infinite;
|
|
@@ -384,7 +384,7 @@
|
|
|
384
384
|
.wui-kanban-drop-note {
|
|
385
385
|
margin: 0 8px 8px;
|
|
386
386
|
padding: 8px 10px;
|
|
387
|
-
border-radius: var(--wui-radius);
|
|
387
|
+
border-radius: var(--wui-radius-md);
|
|
388
388
|
background: var(--color-surface);
|
|
389
389
|
color: var(--color-text-muted);
|
|
390
390
|
font-size: 0.8125rem;
|
package/scss/wui/_lightbox.scss
CHANGED
|
@@ -145,7 +145,7 @@ wui-navigation-menu {
|
|
|
145
145
|
max-width: min(36rem, calc(100vw - 16px));
|
|
146
146
|
padding: 8px;
|
|
147
147
|
border: 1px solid var(--color-border);
|
|
148
|
-
border-radius: var(--wui-radius);
|
|
148
|
+
border-radius: var(--wui-radius-md);
|
|
149
149
|
corner-shape: squircle;
|
|
150
150
|
background: var(--color-surface);
|
|
151
151
|
box-shadow: var(--wui-shadow-overlay);
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
.wui-onboarding-card {
|
|
20
20
|
padding: 12px 16px 8px;
|
|
21
21
|
border: 1px solid var(--color-border);
|
|
22
|
-
border-radius: var(--wui-radius);
|
|
22
|
+
border-radius: var(--wui-radius-md);
|
|
23
23
|
corner-shape: squircle;
|
|
24
24
|
background: var(--color-surface);
|
|
25
25
|
color: var(--color-text);
|
package/scss/wui/_rich-text.scss
CHANGED
|
@@ -91,7 +91,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
|
|
|
91
91
|
height: 32px;
|
|
92
92
|
padding: 0 6px;
|
|
93
93
|
border: 0;
|
|
94
|
-
border-radius: var(--wui-radius);
|
|
94
|
+
border-radius: var(--wui-radius-md);
|
|
95
95
|
background: transparent;
|
|
96
96
|
color: var(--color-text-muted);
|
|
97
97
|
font: inherit;
|
|
@@ -170,7 +170,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
|
|
|
170
170
|
height: 32px;
|
|
171
171
|
padding: 0 10px;
|
|
172
172
|
border: 0;
|
|
173
|
-
border-radius: var(--wui-radius);
|
|
173
|
+
border-radius: var(--wui-radius-md);
|
|
174
174
|
background: transparent;
|
|
175
175
|
color: var(--color-text-muted);
|
|
176
176
|
font: inherit;
|
|
@@ -271,7 +271,7 @@ wui-rich-text[readonly] .wui-rich-text-prose {
|
|
|
271
271
|
.wui-rich-text-prose pre {
|
|
272
272
|
margin: 0 0 0.75em;
|
|
273
273
|
padding: 10px 12px;
|
|
274
|
-
border-radius: var(--wui-radius);
|
|
274
|
+
border-radius: var(--wui-radius-md);
|
|
275
275
|
background: var(--color-bg-muted);
|
|
276
276
|
overflow-x: auto;
|
|
277
277
|
}
|
package/scss/wui/_shell.scss
CHANGED
|
@@ -384,7 +384,8 @@
|
|
|
384
384
|
align-items: center;
|
|
385
385
|
gap: 12px;
|
|
386
386
|
// Comfortable row: 44px, which with the 2px group gap is a 46px pitch. Compact sets its own below.
|
|
387
|
-
|
|
387
|
+
// An explicit itemHeight sets --wui-nav-item-height on the shell and replaces all three heights.
|
|
388
|
+
min-height: var(--wui-nav-item-height, var(--wui-control-height-lg));
|
|
388
389
|
padding: 9px 14px;
|
|
389
390
|
border-radius: var(--radius-xl);
|
|
390
391
|
corner-shape: squircle;
|
|
@@ -400,11 +401,11 @@
|
|
|
400
401
|
}
|
|
401
402
|
// Compact: 40px rows, a 42px pitch. The touch floor holds on a coarse pointer whatever the density.
|
|
402
403
|
.app-shell[data-density="compact"] .app-nav-item:not(.app-nav-subitem) {
|
|
403
|
-
min-height: 40px;
|
|
404
|
+
min-height: var(--wui-nav-item-height, 40px);
|
|
404
405
|
}
|
|
405
406
|
@media (pointer: coarse) {
|
|
406
407
|
.app-shell[data-density="compact"] .app-nav-item:not(.app-nav-subitem) {
|
|
407
|
-
min-height: var(--wui-control-height-lg);
|
|
408
|
+
min-height: var(--wui-nav-item-height, var(--wui-control-height-lg));
|
|
408
409
|
}
|
|
409
410
|
}
|
|
410
411
|
.app-nav-item:hover {
|
|
@@ -840,7 +841,7 @@
|
|
|
840
841
|
clip-path: inset(50%);
|
|
841
842
|
white-space: nowrap;
|
|
842
843
|
padding: 8px 12px;
|
|
843
|
-
border-radius: var(--wui-radius);
|
|
844
|
+
border-radius: var(--wui-radius-md);
|
|
844
845
|
background: var(--color-surface);
|
|
845
846
|
color: var(--color-text);
|
|
846
847
|
}
|
package/scss/wui/_shortcuts.scss
CHANGED
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
z-index: var(--wui-z-dropdown, 1000);
|
|
83
83
|
width: min(320px, calc(100vw - 32px));
|
|
84
84
|
border: 1px solid var(--color-border);
|
|
85
|
-
border-radius: var(--wui-radius);
|
|
85
|
+
border-radius: var(--wui-radius-md);
|
|
86
86
|
corner-shape: squircle;
|
|
87
87
|
background: var(--color-surface);
|
|
88
88
|
color: var(--color-text);
|
package/scss/wui/_sortable.scss
CHANGED
|
@@ -24,7 +24,7 @@ wui-sortable[orientation="horizontal"] {
|
|
|
24
24
|
padding: 6px 12px 6px 6px;
|
|
25
25
|
background: var(--color-surface);
|
|
26
26
|
border: 1px solid var(--color-border);
|
|
27
|
-
border-radius: var(--wui-radius);
|
|
27
|
+
border-radius: var(--wui-radius-md);
|
|
28
28
|
corner-shape: squircle;
|
|
29
29
|
color: var(--color-text);
|
|
30
30
|
// Dragging a body text selection is never what a drag on an item means.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
height: var(--wui-split-height, min(760px, calc(100dvh - 12rem)));
|
|
16
16
|
min-height: 320px;
|
|
17
17
|
border: 1px solid var(--color-border);
|
|
18
|
-
border-radius: var(--wui-radius);
|
|
18
|
+
border-radius: var(--wui-radius-md);
|
|
19
19
|
corner-shape: squircle;
|
|
20
20
|
background: var(--color-surface);
|
|
21
21
|
color: var(--color-text);
|
package/scss/wui/_toolbar.scss
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
align-items: center;
|
|
27
27
|
height: 36px;
|
|
28
28
|
padding-inline: 9px;
|
|
29
|
-
border-radius: var(--wui-radius);
|
|
29
|
+
border-radius: var(--wui-radius-md);
|
|
30
30
|
color: var(--color-text-muted);
|
|
31
31
|
cursor: pointer;
|
|
32
32
|
margin-bottom: 0;
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
height: 36px;
|
|
109
109
|
padding: 0;
|
|
110
110
|
border: none;
|
|
111
|
-
border-radius: var(--wui-radius);
|
|
111
|
+
border-radius: var(--wui-radius-md);
|
|
112
112
|
background: transparent;
|
|
113
113
|
color: var(--color-text-muted);
|
|
114
114
|
cursor: pointer;
|
package/scss/wui/_utilities.scss
CHANGED
|
@@ -819,6 +819,16 @@
|
|
|
819
819
|
// AA-safe text colour for the heading and an accented <strong>.
|
|
820
820
|
--alert-text: var(--color-danger-text-on-soft);
|
|
821
821
|
}
|
|
822
|
+
// Neutral (`variant="neutral"`): a plain notice with no semantic colour. It sits on the neutral surface
|
|
823
|
+
// pair, its body and heading take the same ink as the status variants, and its edge is the muted text
|
|
824
|
+
// colour, so nothing in it reads as a status.
|
|
825
|
+
.alert-neutral {
|
|
826
|
+
--bs-alert-bg: var(--wui-neutral-bg-light);
|
|
827
|
+
--bs-alert-border-color: var(--wui-neutral-bg-dark);
|
|
828
|
+
--bs-alert-color: var(--color-text-body);
|
|
829
|
+
--alert-accent: var(--color-text-muted);
|
|
830
|
+
--alert-text: var(--color-text-body);
|
|
831
|
+
}
|
|
822
832
|
|
|
823
833
|
// AppErrorSummary: a danger alert holding a heading and one link per field error. It takes
|
|
824
834
|
// focus when it appears, so its focus ring is the alert's own edge rather than an outline.
|
|
@@ -1001,6 +1011,9 @@
|
|
|
1001
1011
|
.alert-danger .alert-heading {
|
|
1002
1012
|
color: var(--alert-text);
|
|
1003
1013
|
}
|
|
1014
|
+
.alert-neutral .alert-heading {
|
|
1015
|
+
color: var(--alert-text);
|
|
1016
|
+
}
|
|
1004
1017
|
|
|
1005
1018
|
// Heading and body type step with the size: sm 13px / 11px, md 14px / 12px (the base above),
|
|
1006
1019
|
// lg 16px / 14px. Declared after the base heading rule so these override it.
|
package/token-meanings.json
CHANGED
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"--wui-bg-page": "Page background behind every surface in light mode.",
|
|
86
86
|
"--wui-border-light": "Default hairline border of cards, tables and dividers.",
|
|
87
87
|
"--wui-border-soft": "Softest border, for inner dividers.",
|
|
88
|
+
"--wui-border-strong": "Strong border for emphasised separators, chart axes and unselected control outlines.",
|
|
88
89
|
"--wui-chart-1": "Colour of chart series 1, the brand primary.",
|
|
89
90
|
"--wui-chart-2": "Colour of chart series 2 of the eight categorical series.",
|
|
90
91
|
"--wui-chart-3": "Colour of chart series 3 of the eight categorical series.",
|
|
@@ -180,14 +181,23 @@
|
|
|
180
181
|
"--wui-font-mono": "Monospace typeface for code, identifiers and figures that must line up.",
|
|
181
182
|
"--wui-fs-2xl": "Double extra-large step of the fluid type scale; a product opts in per element.",
|
|
182
183
|
"--wui-fs-3xl": "Triple extra-large step of the fluid type scale; a product opts in per element.",
|
|
184
|
+
"--wui-fs-48": "Step between the triple and fourth extra-large sizes of the fluid type scale; a product opts in per element.",
|
|
183
185
|
"--wui-fs-4xl": "Fourth extra-large step of the fluid type scale; a product opts in per element.",
|
|
184
186
|
"--wui-fs-5xl": "Fifth extra-large step of the fluid type scale; a product opts in per element.",
|
|
187
|
+
"--wui-fs-64": "Step between the fifth and sixth extra-large sizes of the fluid type scale; a product opts in per element.",
|
|
185
188
|
"--wui-fs-6xl": "Sixth extra-large step of the fluid type scale; a product opts in per element.",
|
|
189
|
+
"--wui-fs-7xl": "First display step above the fluid type scale, 64px on a phone to 120px on a desktop.",
|
|
190
|
+
"--wui-fs-8xl": "Largest display step of the fluid type scale, 72px on a phone to 144px on a desktop.",
|
|
186
191
|
"--wui-fs-base": "Body-size step of the fluid type scale, close to Bootstrap's 1rem.",
|
|
187
192
|
"--wui-fs-lg": "Large step of the fluid type scale; a product opts in per element.",
|
|
188
193
|
"--wui-fs-sm": "Small step of the fluid type scale; a product opts in per element.",
|
|
194
|
+
"--wui-fs-smb": "Step between the small and body sizes of the fluid type scale; a product opts in per element.",
|
|
189
195
|
"--wui-fs-xl": "Extra-large step of the fluid type scale; a product opts in per element.",
|
|
190
196
|
"--wui-fs-xs": "Extra-small step of the fluid type scale; a product opts in per element.",
|
|
197
|
+
"--wui-fw-bold": "Bold text weight.",
|
|
198
|
+
"--wui-fw-medium": "Medium text weight.",
|
|
199
|
+
"--wui-fw-normal": "Regular text weight.",
|
|
200
|
+
"--wui-fw-semibold": "Semibold text weight, for labels and titles.",
|
|
191
201
|
"--wui-hero-gradient": "Background gradient of the hero band on marketing pages.",
|
|
192
202
|
"--wui-info": "Vivid info fill for badges, dots and info buttons.",
|
|
193
203
|
"--wui-info-10": "Info tint 10, the soft background of info alerts and badges.",
|
|
@@ -198,6 +208,7 @@
|
|
|
198
208
|
"--wui-info-active": "Info ink for icons and active states on light surfaces.",
|
|
199
209
|
"--wui-info-text": "Info colour as text on light surfaces.",
|
|
200
210
|
"--wui-ink": "Pure black ink, the highest-contrast text colour.",
|
|
211
|
+
"--wui-lh-tight": "Tight line height, for headings and single-line labels.",
|
|
201
212
|
"--wui-neutral-bg-dark": "Muted background of table emphasis rows and mega-menu hover.",
|
|
202
213
|
"--wui-neutral-bg-light": "Faint background for table emphasis and mega-menu hover.",
|
|
203
214
|
"--wui-neutral-border-dark": "Border tone of table emphasis rows and dividers.",
|
|
@@ -216,8 +227,9 @@
|
|
|
216
227
|
"--wui-primary-pressed": "Primary fill while a control is pressed or active.",
|
|
217
228
|
"--wui-primary-text": "Text and icon colour on a solid primary fill, such as a primary button label.",
|
|
218
229
|
"--wui-progress-track": "Unfilled track of a progress bar or meter.",
|
|
219
|
-
"--wui-radius": "Default step of the corner radius scale.",
|
|
220
230
|
"--wui-radius-lg": "Large step of the corner radius scale.",
|
|
231
|
+
"--wui-radius-md": "Medium step of the corner radius scale, the default corner.",
|
|
232
|
+
"--wui-radius-pill": "Fully rounded corner, for pills and round buttons.",
|
|
221
233
|
"--wui-radius-sm": "Small step of the corner radius scale.",
|
|
222
234
|
"--wui-radius-xl": "Extra-large step of the corner radius scale.",
|
|
223
235
|
"--wui-scrollbar": "Resting thumb colour of a thin scrollbar.",
|
|
@@ -230,6 +242,16 @@
|
|
|
230
242
|
"--wui-shadow-overlay-lg": "Larger overlay shadow, for the largest floating surfaces.",
|
|
231
243
|
"--wui-shadow-thumb": "Shadow under a slider thumb and other small interactive elements.",
|
|
232
244
|
"--wui-shadow-thumb-hover": "Shadow under a slider thumb while it is hovered.",
|
|
245
|
+
"--wui-space-2xl": "Double extra-large step of the spacing scale.",
|
|
246
|
+
"--wui-space-3xl": "Triple extra-large step of the spacing scale.",
|
|
247
|
+
"--wui-space-4xl": "Largest step of the spacing scale.",
|
|
248
|
+
"--wui-space-lg": "Large step of the spacing scale.",
|
|
249
|
+
"--wui-space-md": "Medium step of the spacing scale.",
|
|
250
|
+
"--wui-space-none": "No space.",
|
|
251
|
+
"--wui-space-sm": "Small step of the spacing scale.",
|
|
252
|
+
"--wui-space-xl": "Extra-large step of the spacing scale.",
|
|
253
|
+
"--wui-space-xs": "Extra-small step of the spacing scale.",
|
|
254
|
+
"--wui-space-xxs": "Hairline step of the spacing scale.",
|
|
233
255
|
"--wui-success": "Vivid success fill for badges, dots and success buttons.",
|
|
234
256
|
"--wui-success-10": "Success tint 10, the soft background of success alerts and badges.",
|
|
235
257
|
"--wui-success-20": "Success tint 20 for soft fills behind success alerts and badges.",
|
|
@@ -248,7 +270,7 @@
|
|
|
248
270
|
"--wui-text-2": "Secondary text for descriptions, sub-labels and muted copy.",
|
|
249
271
|
"--wui-text-3": "Tertiary text for hints, captions, labels, timestamps and placeholders.",
|
|
250
272
|
"--wui-text-4": "Decorative faint ink, not for text a person must read.",
|
|
251
|
-
"--wui-text-5": "Faintest ink, for decorative marks
|
|
273
|
+
"--wui-text-5": "Faintest ink, for decorative marks.",
|
|
252
274
|
"--wui-text-heading": "Heading ink for page and section titles.",
|
|
253
275
|
"--wui-warning": "Vivid warning fill for badges and dots.",
|
|
254
276
|
"--wui-warning-10": "Warning tint 10, the soft background of warning alerts and badges.",
|