@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
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
border-radius: var(--radius);
|
|
110
110
|
corner-shape: squircle;
|
|
111
111
|
background: var(--color-primary-soft);
|
|
112
|
-
color: var(--color-primary);
|
|
112
|
+
color: var(--color-primary-ink);
|
|
113
113
|
}
|
|
114
114
|
// Sticky tools zone: search + section meta stay put while the list scrolls.
|
|
115
115
|
.drawer-tools {
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
text-decoration: none;
|
|
239
239
|
}
|
|
240
240
|
.app-tab.active {
|
|
241
|
-
color: var(--color-primary);
|
|
241
|
+
color: var(--color-primary-ink);
|
|
242
242
|
// The active tab carries weight as well as colour — colour alone is a weak
|
|
243
243
|
// signal for anyone who reads the strip at a glance or cannot distinguish it.
|
|
244
244
|
font-weight: 600;
|
|
@@ -349,7 +349,7 @@
|
|
|
349
349
|
}
|
|
350
350
|
.app-tab.active .app-tab-count {
|
|
351
351
|
background: var(--color-primary-soft);
|
|
352
|
-
color: var(--color-primary);
|
|
352
|
+
color: var(--color-primary-ink);
|
|
353
353
|
}
|
|
354
354
|
// Semantic tone tints — React `tone` / Razor `Tone`, matching the vocabulary
|
|
355
355
|
// `.status-label` uses (success | warning | danger | info).
|
|
@@ -540,7 +540,7 @@
|
|
|
540
540
|
transition: color 0.12s ease;
|
|
541
541
|
}
|
|
542
542
|
.search-wrap:focus-within > .search-icon {
|
|
543
|
-
color: var(--color-primary);
|
|
543
|
+
color: var(--color-primary-ink);
|
|
544
544
|
}
|
|
545
545
|
.search-field,
|
|
546
546
|
.search-input {
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
text-decoration: none;
|
|
664
664
|
}
|
|
665
665
|
.breadcrumb-item a:hover {
|
|
666
|
-
color: var(--color-primary);
|
|
666
|
+
color: var(--color-primary-ink);
|
|
667
667
|
text-decoration: underline;
|
|
668
668
|
}
|
|
669
669
|
.breadcrumb-item.active {
|
package/scss/wui/_overlays.scss
CHANGED
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
corner-shape: squircle;
|
|
160
160
|
flex: none;
|
|
161
161
|
background: var(--color-primary-soft);
|
|
162
|
-
color: var(--color-primary);
|
|
162
|
+
color: var(--color-primary-ink);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
// Break long unbroken names so they wrap within the heading instead of
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
font-weight: 700;
|
|
184
184
|
letter-spacing: 0.06em;
|
|
185
185
|
text-transform: uppercase;
|
|
186
|
-
color: var(--color-primary);
|
|
186
|
+
color: var(--color-primary-ink);
|
|
187
187
|
margin-bottom: 2px;
|
|
188
188
|
}
|
|
189
189
|
// `tone` tints the header icon tile and the eyebrow, so a destructive or a success dialog
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
text-decoration: none;
|
|
66
66
|
}
|
|
67
67
|
.wui-tabbar-item.active {
|
|
68
|
-
color: var(--color-primary);
|
|
68
|
+
color: var(--color-primary-ink);
|
|
69
69
|
font-weight: 600;
|
|
70
70
|
}
|
|
71
71
|
.wui-tabbar-item:focus-visible {
|
|
@@ -272,7 +272,7 @@
|
|
|
272
272
|
padding: 0 4px;
|
|
273
273
|
border: 0;
|
|
274
274
|
background: none;
|
|
275
|
-
color: var(--color-primary);
|
|
275
|
+
color: var(--color-primary-ink);
|
|
276
276
|
font: inherit;
|
|
277
277
|
font-size: 14px;
|
|
278
278
|
font-weight: 500;
|
|
@@ -353,7 +353,7 @@ a.wui-bell-item:hover {
|
|
|
353
353
|
justify-content: center;
|
|
354
354
|
min-height: 44px;
|
|
355
355
|
border-top: 1px solid var(--color-border);
|
|
356
|
-
color: var(--color-primary);
|
|
356
|
+
color: var(--color-primary-ink);
|
|
357
357
|
font-size: 14px;
|
|
358
358
|
font-weight: 500;
|
|
359
359
|
text-decoration: none;
|
package/scss/wui/_shell.scss
CHANGED
|
@@ -223,9 +223,12 @@
|
|
|
223
223
|
left: 0;
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
+
// Sticky always makes a stacking context, so without a z-index here the page content after the
|
|
227
|
+
// sidebar paints over anything the sidebar lets out, such as an open workspace switcher menu.
|
|
226
228
|
.app-sidebar {
|
|
227
229
|
position: sticky;
|
|
228
230
|
top: 0;
|
|
231
|
+
z-index: var(--wui-z-shell-sidebar);
|
|
229
232
|
align-self: start;
|
|
230
233
|
height: 100vh;
|
|
231
234
|
display: flex;
|
|
@@ -234,7 +237,12 @@
|
|
|
234
237
|
// The bottom inset matches the gap between the collapse toggle and the rule above it,
|
|
235
238
|
// so the toggle row sits evenly spaced between the rule and the sidebar's bottom edge.
|
|
236
239
|
padding: 20px 16px var(--app-sidebar-toggle-gap);
|
|
237
|
-
|
|
240
|
+
// Clipped top to bottom only. The mobile drawer's transform makes it the box a fixed menu
|
|
241
|
+
// is placed in, so a horizontal clip would cut a 300px switcher menu at the drawer's 260px edge.
|
|
242
|
+
overflow: visible clip;
|
|
243
|
+
// A clip, unlike hidden, leaves the grid row free to grow to the whole nav list; this keeps
|
|
244
|
+
// a shell set in a fixed-height box at the box's height, with the nav scrolling inside it.
|
|
245
|
+
min-height: 0;
|
|
238
246
|
background: var(--color-surface);
|
|
239
247
|
transition: padding 0.2s var(--wui-ease-ui);
|
|
240
248
|
}
|
|
@@ -318,11 +326,11 @@
|
|
|
318
326
|
// the 88px rail, so the collapsed state hides it (the mobile drawer restores it).
|
|
319
327
|
// The compact twin (`sidebarStartCompact` / `<app-shell-sidebar-start-compact>`) is
|
|
320
328
|
// the inverse: hidden expanded, shown only on the desktop collapsed rail, sized for
|
|
321
|
-
// a 36px monogram control (AppWorkspaceSwitcher compact).
|
|
329
|
+
// a 36px monogram control (AppWorkspaceSwitcher compact). Neither slot clips: a menu opened
|
|
330
|
+
// from it has to reach past the sidebar's edge.
|
|
322
331
|
.app-sidebar-start {
|
|
323
332
|
flex: none;
|
|
324
333
|
margin-bottom: 8px;
|
|
325
|
-
overflow: hidden;
|
|
326
334
|
}
|
|
327
335
|
.app-sidebar-start-compact {
|
|
328
336
|
display: none;
|
|
@@ -331,11 +339,12 @@
|
|
|
331
339
|
// Centre the fixed square in the 88px rail so it lines up with the icon column.
|
|
332
340
|
justify-content: center;
|
|
333
341
|
align-items: center;
|
|
334
|
-
overflow: hidden;
|
|
335
342
|
}
|
|
343
|
+
// The sidebar clips only top to bottom, so a footer wider than the 88px rail is clipped here.
|
|
336
344
|
.app-sidebar-foot {
|
|
337
345
|
flex: none;
|
|
338
346
|
padding-top: 12px;
|
|
347
|
+
overflow-x: clip;
|
|
339
348
|
}
|
|
340
349
|
|
|
341
350
|
.app-nav-group {
|
|
@@ -394,7 +403,7 @@
|
|
|
394
403
|
}
|
|
395
404
|
.app-nav-item.active {
|
|
396
405
|
background: var(--color-primary-soft);
|
|
397
|
-
color: var(--color-primary);
|
|
406
|
+
color: var(--color-primary-ink);
|
|
398
407
|
font-weight: 600;
|
|
399
408
|
}
|
|
400
409
|
.app-nav-item:focus-visible {
|
|
@@ -408,7 +417,7 @@
|
|
|
408
417
|
color: var(--color-text-subtle);
|
|
409
418
|
}
|
|
410
419
|
.app-nav-item.active .app-nav-icon {
|
|
411
|
-
color: var(--color-primary);
|
|
420
|
+
color: var(--color-primary-ink);
|
|
412
421
|
}
|
|
413
422
|
.app-nav-text {
|
|
414
423
|
// Grows to fill the row so every trailing element — badge, trailing marker,
|
|
@@ -433,7 +442,7 @@
|
|
|
433
442
|
// tinted badge on top of it would vanish.
|
|
434
443
|
.app-nav-item.active .app-nav-badge {
|
|
435
444
|
background: var(--color-surface);
|
|
436
|
-
color: var(--color-primary);
|
|
445
|
+
color: var(--color-primary-ink);
|
|
437
446
|
}
|
|
438
447
|
|
|
439
448
|
// Collapsed rail: icons only, centred. The label is removed from the flow rather
|
|
@@ -507,7 +516,7 @@
|
|
|
507
516
|
color: var(--color-text-subtle);
|
|
508
517
|
}
|
|
509
518
|
.app-nav-item.active .app-nav-trailing {
|
|
510
|
-
color: var(--color-primary);
|
|
519
|
+
color: var(--color-primary-ink);
|
|
511
520
|
}
|
|
512
521
|
|
|
513
522
|
// ── Expandable sub-items ─────────────────────────────────────────────────────
|
|
@@ -646,7 +655,7 @@
|
|
|
646
655
|
pointer-events: none;
|
|
647
656
|
}
|
|
648
657
|
.app-sidebar-toggle:hover {
|
|
649
|
-
color: var(--color-primary);
|
|
658
|
+
color: var(--color-primary-ink);
|
|
650
659
|
background: var(--color-bg-muted);
|
|
651
660
|
}
|
|
652
661
|
.app-sidebar-toggle:focus-visible {
|
package/scss/wui/_sortable.scss
CHANGED
|
@@ -70,7 +70,7 @@ wui-sortable[disabled] .wui-sortable-item,
|
|
|
70
70
|
// Lifted by the keyboard.
|
|
71
71
|
.wui-sortable-handle[aria-pressed="true"] {
|
|
72
72
|
background: var(--color-primary-soft);
|
|
73
|
-
color: var(--color-primary);
|
|
73
|
+
color: var(--color-primary-ink);
|
|
74
74
|
}
|
|
75
75
|
.wui-sortable-handle:disabled {
|
|
76
76
|
cursor: not-allowed;
|
package/scss/wui/_tone-pill.scss
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// $text exists because `primary` has no on-tint token: --color-{status}-text-on-soft is the
|
|
8
8
|
// on-tint hue (equal to -text in light, lifted in dark), but --color-primary-text
|
|
9
9
|
// is the text-on-SOLID-primary color (near-black in dark mode) and fails AA on the
|
|
10
|
-
// soft tint — primary pills pass var(--color-primary) instead.
|
|
10
|
+
// soft tint — primary pills pass var(--color-primary-ink) instead.
|
|
11
11
|
//
|
|
12
12
|
// Component-specific overrides (e.g. .badge-primary's colored border) are applied
|
|
13
13
|
// after the mixin call.
|
package/scss/wui/_tree.scss
CHANGED
|
@@ -39,7 +39,7 @@ wui-tree {
|
|
|
39
39
|
}
|
|
40
40
|
.wui-tree-row.wui-tree-row-selected {
|
|
41
41
|
background: var(--color-primary-soft);
|
|
42
|
-
color: var(--color-primary);
|
|
42
|
+
color: var(--color-primary-ink);
|
|
43
43
|
}
|
|
44
44
|
.wui-tree-item[aria-disabled="true"] > .wui-tree-row {
|
|
45
45
|
color: var(--color-text-subtle);
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
|
|
130
130
|
/* Tones — tinted surface + on-tint text; icon/remove inherit the tone colour. */
|
|
131
131
|
.chip.primary {
|
|
132
|
-
@include wui-tone-pill-colors(primary, var(--color-primary));
|
|
132
|
+
@include wui-tone-pill-colors(primary, var(--color-primary-ink));
|
|
133
133
|
}
|
|
134
134
|
.chip.success {
|
|
135
135
|
@include wui-tone-pill-colors(success);
|
|
@@ -346,7 +346,7 @@ wui-multiselect[collapse-chips] .ms-chips {
|
|
|
346
346
|
flex-shrink: 0;
|
|
347
347
|
background: var(--color-primary-soft);
|
|
348
348
|
border-color: transparent;
|
|
349
|
-
color: var(--color-primary);
|
|
349
|
+
color: var(--color-primary-ink);
|
|
350
350
|
font-weight: 600;
|
|
351
351
|
}
|
|
352
352
|
.search-select-multi .search-select-caret,
|
|
@@ -359,7 +359,7 @@ wui-multiselect[collapse-chips] .ms-chips {
|
|
|
359
359
|
justify-content: center;
|
|
360
360
|
width: 16px;
|
|
361
361
|
flex: none;
|
|
362
|
-
color: var(--color-primary);
|
|
362
|
+
color: var(--color-primary-ink);
|
|
363
363
|
opacity: 0;
|
|
364
364
|
}
|
|
365
365
|
.search-select-option[aria-selected='true'] .ms-check {
|
package/scss/wui/_utilities.scss
CHANGED
|
@@ -84,10 +84,10 @@
|
|
|
84
84
|
transition: color 0.15s;
|
|
85
85
|
}
|
|
86
86
|
.infotip-btn:hover {
|
|
87
|
-
color: var(--color-primary);
|
|
87
|
+
color: var(--color-primary-ink);
|
|
88
88
|
}
|
|
89
89
|
.infotip-btn:focus-visible {
|
|
90
|
-
color: var(--color-primary);
|
|
90
|
+
color: var(--color-primary-ink);
|
|
91
91
|
outline: 2px solid var(--color-primary);
|
|
92
92
|
outline-offset: 2px;
|
|
93
93
|
}
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
border-radius: var(--radius);
|
|
193
193
|
corner-shape: squircle;
|
|
194
194
|
background: var(--color-primary-soft);
|
|
195
|
-
color: var(--color-primary);
|
|
195
|
+
color: var(--color-primary-ink);
|
|
196
196
|
}
|
|
197
197
|
.page-header.tone-success .page-header-icon {
|
|
198
198
|
background: var(--color-success-soft);
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
font-weight: 700;
|
|
220
220
|
letter-spacing: 0.06em;
|
|
221
221
|
text-transform: uppercase;
|
|
222
|
-
color: var(--color-primary);
|
|
222
|
+
color: var(--color-primary-ink);
|
|
223
223
|
margin-bottom: 3px;
|
|
224
224
|
}
|
|
225
225
|
.page-header.tone-success .page-eyebrow {
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
}
|
|
393
393
|
.topbar-icon-btn:hover {
|
|
394
394
|
background: var(--color-primary-soft);
|
|
395
|
-
color: var(--color-primary);
|
|
395
|
+
color: var(--color-primary-ink);
|
|
396
396
|
}
|
|
397
397
|
.topbar-icon-btn.has-badge::after {
|
|
398
398
|
content: "";
|
|
@@ -436,14 +436,14 @@
|
|
|
436
436
|
// passwordRequirements) opens on focus. Rendered identically by React (a JSX <ul>) and Razor
|
|
437
437
|
// (the same <ul> built in webority-ui.js), so both surfaces read the same. `.pw-popover` is the
|
|
438
438
|
// custom class both put on Bootstrap's `.popover` panel.
|
|
439
|
-
// The card surface
|
|
440
|
-
// overlay shadow (the one ink menus/popovers/modals use; not a hand-rolled per-component shadow).
|
|
439
|
+
// The card surface, header and body alike, is the elevated surface (white in light mode), lifted
|
|
440
|
+
// off the page with the shared overlay shadow (the one ink menus/popovers/modals use; not a hand-rolled per-component shadow).
|
|
441
441
|
// The field help popover (AppInfoTip, `.infotip-popover`) shares the same card, so the two
|
|
442
442
|
// help surfaces a form shows read as one family.
|
|
443
443
|
.pw-popover,
|
|
444
444
|
.infotip-popover {
|
|
445
|
-
--bs-popover-bg: var(--
|
|
446
|
-
--bs-popover-header-bg: var(--
|
|
445
|
+
--bs-popover-bg: var(--color-surface);
|
|
446
|
+
--bs-popover-header-bg: var(--color-surface);
|
|
447
447
|
// A 14px heading: one step above the 13px body, so the card reads as help, not a dialog.
|
|
448
448
|
--bs-popover-header-font-size: 14px;
|
|
449
449
|
box-shadow: var(--wui-shadow-overlay);
|
|
@@ -1066,5 +1066,5 @@
|
|
|
1066
1066
|
cursor: help;
|
|
1067
1067
|
}
|
|
1068
1068
|
.tip-icon:hover {
|
|
1069
|
-
color: var(--color-primary);
|
|
1069
|
+
color: var(--color-primary-ink);
|
|
1070
1070
|
}
|
package/scss/wui/_workspace.scss
CHANGED
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
border-radius: 50%;
|
|
86
86
|
background: var(--color-surface);
|
|
87
87
|
border: 1px solid var(--color-border-light);
|
|
88
|
-
color: var(--color-primary);
|
|
88
|
+
color: var(--color-primary-ink);
|
|
89
89
|
font-size: 11px;
|
|
90
90
|
font-weight: 700;
|
|
91
91
|
letter-spacing: 0.02em;
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
.workspace-switcher .workspace-switcher-option.is-active,
|
|
229
229
|
.workspace-switcher .workspace-switcher-option.is-active:hover {
|
|
230
230
|
background: var(--color-primary-soft);
|
|
231
|
-
color: var(--color-primary);
|
|
231
|
+
color: var(--color-primary-ink);
|
|
232
232
|
}
|
|
233
233
|
.workspace-switcher-option-name {
|
|
234
234
|
flex: 1 1 auto;
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
position: relative;
|
|
262
262
|
justify-content: center;
|
|
263
263
|
margin-top: 10px;
|
|
264
|
-
color: var(--color-primary);
|
|
264
|
+
color: var(--color-primary-ink);
|
|
265
265
|
font-weight: 600;
|
|
266
266
|
}
|
|
267
267
|
// Dashed divider above the create row — the list and the "Add …" action read as two zones,
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
padding: 6px;
|
|
285
285
|
border-radius: 50%;
|
|
286
286
|
background: var(--color-primary-soft);
|
|
287
|
-
color: var(--color-primary);
|
|
287
|
+
color: var(--color-primary-ink);
|
|
288
288
|
}
|
|
289
289
|
|
|
290
290
|
// ── Footer ──
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
border-radius: var(--radius-lg);
|
|
307
307
|
corner-shape: squircle;
|
|
308
308
|
background: transparent;
|
|
309
|
-
color: var(--color-primary);
|
|
309
|
+
color: var(--color-primary-ink);
|
|
310
310
|
font-size: 13px;
|
|
311
311
|
font-weight: 600;
|
|
312
312
|
text-align: left;
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
}
|
|
316
316
|
.workspace-switcher .workspace-switcher-footer-action:hover {
|
|
317
317
|
background: var(--color-primary-soft);
|
|
318
|
-
color: var(--color-primary);
|
|
318
|
+
color: var(--color-primary-ink);
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
// ── Menu size tiers ── the panel scales with the trigger's `size`. Placed AFTER the base Menu
|