@webority/theme 0.67.0 → 0.68.1
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/purge-safelist.json +15 -0
- package/dist/webority-theme.css +1 -1
- package/package.json +1 -1
- package/scss/_components.scss +5 -0
- package/scss/wui/_controls.scss +10 -5
- package/scss/wui/_data.scss +40 -0
- package/scss/wui/_drawer.scss +14 -0
- package/scss/wui/_navigation.scss +38 -0
- package/scss/wui/_page-header-bar.scss +9 -0
- package/scss/wui/_shell.scss +58 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.1",
|
|
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/_components.scss
CHANGED
|
@@ -513,6 +513,11 @@
|
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
515
|
|
|
516
|
+
// The form of a posting dropdown item takes no box, so its item stays a plain row of the menu.
|
|
517
|
+
.wui-dropdown-form {
|
|
518
|
+
display: contents;
|
|
519
|
+
}
|
|
520
|
+
|
|
516
521
|
// Group heading: an AppDropdown item `header` or <app-dropdown-header>.
|
|
517
522
|
.dropdown-menu .dropdown-header {
|
|
518
523
|
font-size: 12px;
|
package/scss/wui/_controls.scss
CHANGED
|
@@ -1221,7 +1221,10 @@ wui-select[compact] {
|
|
|
1221
1221
|
border: none;
|
|
1222
1222
|
border-radius: 0;
|
|
1223
1223
|
background: transparent;
|
|
1224
|
-
min-width
|
|
1224
|
+
// Room for four digits however narrow the field: with a unit beside it, a min-width of 0 let the value
|
|
1225
|
+
// shrink to about 20px and vanish. The stepper buttons give way first (flex-shrink below).
|
|
1226
|
+
min-width: calc(4ch + 8px);
|
|
1227
|
+
padding-inline: 4px;
|
|
1225
1228
|
text-align: center;
|
|
1226
1229
|
font-weight: 600;
|
|
1227
1230
|
color: var(--color-text);
|
|
@@ -1237,7 +1240,10 @@ wui-select[compact] {
|
|
|
1237
1240
|
.num-btn {
|
|
1238
1241
|
display: grid;
|
|
1239
1242
|
place-items: center;
|
|
1240
|
-
|
|
1243
|
+
// A 44px cell that shrinks before the value does in a narrow field.
|
|
1244
|
+
flex: 0 1 44px;
|
|
1245
|
+
min-width: 0;
|
|
1246
|
+
overflow: hidden;
|
|
1241
1247
|
// Fill the field height and centre the glyph. `height: 100%` resolved to auto
|
|
1242
1248
|
// against the wrap's content-based height and left the button icon-tall, pinned
|
|
1243
1249
|
// to the top; align-self:stretch fills the full field so place-items centres it.
|
|
@@ -1250,7 +1256,6 @@ wui-select[compact] {
|
|
|
1250
1256
|
transition:
|
|
1251
1257
|
color 0.12s ease,
|
|
1252
1258
|
background 0.12s ease;
|
|
1253
|
-
flex: none;
|
|
1254
1259
|
}
|
|
1255
1260
|
.num-btn:hover:not(:disabled) {
|
|
1256
1261
|
color: var(--color-primary-ink);
|
|
@@ -1286,7 +1291,7 @@ wui-select[compact] {
|
|
|
1286
1291
|
border-radius: var(--wui-field-radius-sm);
|
|
1287
1292
|
}
|
|
1288
1293
|
.num-wrap-sm .num-btn {
|
|
1289
|
-
|
|
1294
|
+
flex-basis: 36px;
|
|
1290
1295
|
}
|
|
1291
1296
|
.num-wrap-sm .num-input {
|
|
1292
1297
|
font-size: 13px;
|
|
@@ -1295,7 +1300,7 @@ wui-select[compact] {
|
|
|
1295
1300
|
border-radius: var(--wui-field-radius-lg);
|
|
1296
1301
|
}
|
|
1297
1302
|
.num-wrap-lg .num-btn {
|
|
1298
|
-
|
|
1303
|
+
flex-basis: 52px;
|
|
1299
1304
|
}
|
|
1300
1305
|
.num-wrap-lg .num-input {
|
|
1301
1306
|
font-size: 16px;
|
package/scss/wui/_data.scss
CHANGED
|
@@ -1736,3 +1736,43 @@ wui-data-table {
|
|
|
1736
1736
|
animation: none;
|
|
1737
1737
|
}
|
|
1738
1738
|
}
|
|
1739
|
+
|
|
1740
|
+
// Drop targets for dragged rows (rowDrop.js): a sticky strip under the table, with a chip per target.
|
|
1741
|
+
.wui-drop-tray {
|
|
1742
|
+
position: sticky;
|
|
1743
|
+
bottom: 0;
|
|
1744
|
+
height: 96px;
|
|
1745
|
+
display: flex;
|
|
1746
|
+
align-items: center;
|
|
1747
|
+
gap: 8px;
|
|
1748
|
+
padding: 0 16px;
|
|
1749
|
+
overflow-x: auto;
|
|
1750
|
+
background: var(--color-surface);
|
|
1751
|
+
border-top: 1px solid var(--color-border);
|
|
1752
|
+
z-index: var(--wui-z-sticky);
|
|
1753
|
+
}
|
|
1754
|
+
.wui-drop-tray [data-wui-drop-target] {
|
|
1755
|
+
display: inline-flex;
|
|
1756
|
+
align-items: center;
|
|
1757
|
+
gap: 6px;
|
|
1758
|
+
height: 40px;
|
|
1759
|
+
padding: 0 14px;
|
|
1760
|
+
border: 1px dashed var(--color-border-strong);
|
|
1761
|
+
border-radius: 999px;
|
|
1762
|
+
white-space: nowrap;
|
|
1763
|
+
background: transparent;
|
|
1764
|
+
}
|
|
1765
|
+
[data-wui-drop-target].is-drop-over {
|
|
1766
|
+
border-style: solid;
|
|
1767
|
+
border-color: var(--color-primary);
|
|
1768
|
+
background: var(--color-primary-soft);
|
|
1769
|
+
}
|
|
1770
|
+
[data-wui-drop-target][aria-disabled="true"] {
|
|
1771
|
+
opacity: .6;
|
|
1772
|
+
}
|
|
1773
|
+
[data-wui-row-drag] tbody tr[draggable="true"] {
|
|
1774
|
+
cursor: grab;
|
|
1775
|
+
}
|
|
1776
|
+
body.wui-row-dragging {
|
|
1777
|
+
cursor: grabbing;
|
|
1778
|
+
}
|
package/scss/wui/_drawer.scss
CHANGED
|
@@ -92,6 +92,20 @@
|
|
|
92
92
|
padding: 12px 20px;
|
|
93
93
|
border-top: 1px solid var(--color-border);
|
|
94
94
|
}
|
|
95
|
+
.wui-drawer-discard {
|
|
96
|
+
display: flex;
|
|
97
|
+
align-items: center;
|
|
98
|
+
gap: 8px;
|
|
99
|
+
width: 100%;
|
|
100
|
+
}
|
|
101
|
+
.wui-drawer-discard-text {
|
|
102
|
+
flex: 1 1 auto;
|
|
103
|
+
min-width: 0;
|
|
104
|
+
font-weight: 500;
|
|
105
|
+
}
|
|
106
|
+
.wui-drawer-discarding > :not(.wui-drawer-discard) {
|
|
107
|
+
display: none;
|
|
108
|
+
}
|
|
95
109
|
|
|
96
110
|
// Side drawer: from md up.
|
|
97
111
|
@include media-breakpoint-up(md) {
|
|
@@ -693,6 +693,44 @@
|
|
|
693
693
|
.search-clear:hover {
|
|
694
694
|
color: var(--color-text);
|
|
695
695
|
}
|
|
696
|
+
// The toggle of <app-search collapsible>: a field folded into an icon until it is opened.
|
|
697
|
+
.wui-search-toggle {
|
|
698
|
+
display: inline-flex;
|
|
699
|
+
align-items: center;
|
|
700
|
+
justify-content: center;
|
|
701
|
+
width: 36px;
|
|
702
|
+
height: 36px;
|
|
703
|
+
padding: 0;
|
|
704
|
+
border: 0;
|
|
705
|
+
border-radius: var(--wui-field-radius);
|
|
706
|
+
background: transparent;
|
|
707
|
+
color: var(--color-text-muted);
|
|
708
|
+
cursor: pointer;
|
|
709
|
+
}
|
|
710
|
+
.search-wrap.search-sm .wui-search-toggle {
|
|
711
|
+
width: 32px;
|
|
712
|
+
height: 32px;
|
|
713
|
+
}
|
|
714
|
+
.search-wrap.search-lg .wui-search-toggle {
|
|
715
|
+
width: 44px;
|
|
716
|
+
height: 44px;
|
|
717
|
+
}
|
|
718
|
+
.wui-search-toggle:hover {
|
|
719
|
+
color: var(--color-text);
|
|
720
|
+
}
|
|
721
|
+
.wui-search-toggle:focus-visible {
|
|
722
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
723
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
724
|
+
}
|
|
725
|
+
.search-wrap.wui-search-collapsible:not(.is-collapsed) .wui-search-toggle {
|
|
726
|
+
display: none;
|
|
727
|
+
}
|
|
728
|
+
.search-wrap.wui-search-collapsible.is-collapsed > :not(.wui-search-toggle) {
|
|
729
|
+
display: none;
|
|
730
|
+
}
|
|
731
|
+
.search-wrap.wui-search-collapsible.is-collapsed {
|
|
732
|
+
width: auto;
|
|
733
|
+
}
|
|
696
734
|
// type=search draws the browser's own cancel ✕; the component ships its own .search-clear,
|
|
697
735
|
// so the native one would double up. Remove it (WebKit/Blink).
|
|
698
736
|
.search-input::-webkit-search-cancel-button,
|
|
@@ -41,6 +41,15 @@
|
|
|
41
41
|
.page-header-bar-bulk[hidden] {
|
|
42
42
|
display: none;
|
|
43
43
|
}
|
|
44
|
+
.page-header-bar-bulk-count {
|
|
45
|
+
font-size: 13px;
|
|
46
|
+
font-weight: 500;
|
|
47
|
+
white-space: nowrap;
|
|
48
|
+
}
|
|
49
|
+
.page-header-bar-views[hidden],
|
|
50
|
+
.page-header-bar-tools[hidden] {
|
|
51
|
+
display: none;
|
|
52
|
+
}
|
|
44
53
|
.page-header-bar-meta {
|
|
45
54
|
font-size: 13px;
|
|
46
55
|
color: var(--color-text-muted);
|
package/scss/wui/_shell.scss
CHANGED
|
@@ -452,6 +452,14 @@
|
|
|
452
452
|
gap: 0;
|
|
453
453
|
padding: 9px 0;
|
|
454
454
|
}
|
|
455
|
+
.app-shell.collapsed .app-nav-item.wui-nav-split {
|
|
456
|
+
padding: 0;
|
|
457
|
+
}
|
|
458
|
+
.app-shell.collapsed .wui-nav-split-link {
|
|
459
|
+
justify-content: center;
|
|
460
|
+
gap: 0;
|
|
461
|
+
padding: 9px 0;
|
|
462
|
+
}
|
|
455
463
|
.app-shell.collapsed .app-nav-badge,
|
|
456
464
|
.app-shell.collapsed .app-nav-group-label,
|
|
457
465
|
.app-shell.collapsed .wui-nav-group-after,
|
|
@@ -575,6 +583,48 @@
|
|
|
575
583
|
white-space: normal;
|
|
576
584
|
overflow-wrap: anywhere;
|
|
577
585
|
}
|
|
586
|
+
// A parent with its own link: the row holds the link and a chevron toggle. The row has no padding,
|
|
587
|
+
// so the link carries the .app-nav-item padding. These rules sit after .app-nav-item.app-nav-subitem,
|
|
588
|
+
// so the row's `padding: 0` wins over that rule's padding-left, and the link takes the same inset.
|
|
589
|
+
.app-nav-item.wui-nav-split {
|
|
590
|
+
display: flex;
|
|
591
|
+
align-items: center;
|
|
592
|
+
padding: 0;
|
|
593
|
+
cursor: default;
|
|
594
|
+
}
|
|
595
|
+
.wui-nav-split-link {
|
|
596
|
+
flex: 1 1 auto;
|
|
597
|
+
min-width: 0;
|
|
598
|
+
display: flex;
|
|
599
|
+
align-items: center;
|
|
600
|
+
padding: 9px 14px;
|
|
601
|
+
gap: 12px;
|
|
602
|
+
color: inherit;
|
|
603
|
+
text-decoration: none;
|
|
604
|
+
}
|
|
605
|
+
.app-nav-item.wui-nav-split.app-nav-subitem .wui-nav-split-link {
|
|
606
|
+
padding-left: calc(46px + (var(--wui-nav-depth, 1) - 1) * 16px);
|
|
607
|
+
}
|
|
608
|
+
.wui-nav-split-toggle {
|
|
609
|
+
border: 0;
|
|
610
|
+
background: transparent;
|
|
611
|
+
padding: 0;
|
|
612
|
+
width: 32px;
|
|
613
|
+
height: 32px;
|
|
614
|
+
border-radius: var(--radius-sm, 6px);
|
|
615
|
+
cursor: pointer;
|
|
616
|
+
}
|
|
617
|
+
.wui-nav-split-toggle:hover {
|
|
618
|
+
background: var(--color-bg-muted);
|
|
619
|
+
}
|
|
620
|
+
.wui-nav-split-toggle[aria-expanded="true"] {
|
|
621
|
+
transform: rotate(90deg);
|
|
622
|
+
}
|
|
623
|
+
.wui-nav-split-link:focus-visible,
|
|
624
|
+
.wui-nav-split-toggle:focus-visible {
|
|
625
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
626
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
627
|
+
}
|
|
578
628
|
|
|
579
629
|
// ── Collapsed rail: label tooltip ────────────────────────────────────────────
|
|
580
630
|
// The rail hides labels, so surface each on hover/focus as a chip to the right —
|
|
@@ -812,6 +862,14 @@
|
|
|
812
862
|
gap: 12px;
|
|
813
863
|
padding: 9px 14px;
|
|
814
864
|
}
|
|
865
|
+
.app-shell.app-shell.collapsed .app-nav-item.wui-nav-split {
|
|
866
|
+
padding: 0;
|
|
867
|
+
}
|
|
868
|
+
.app-shell.app-shell.collapsed .wui-nav-split-link {
|
|
869
|
+
justify-content: flex-start;
|
|
870
|
+
gap: 12px;
|
|
871
|
+
padding: 9px 14px;
|
|
872
|
+
}
|
|
815
873
|
.app-shell.app-shell.collapsed .app-nav-text,
|
|
816
874
|
.app-shell.app-shell.collapsed .app-nav-badge,
|
|
817
875
|
.app-shell.app-shell.collapsed .app-nav-group-label,
|