@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/theme",
3
- "version": "0.67.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": {
@@ -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;
@@ -1221,7 +1221,10 @@ wui-select[compact] {
1221
1221
  border: none;
1222
1222
  border-radius: 0;
1223
1223
  background: transparent;
1224
- min-width: 0;
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
- width: 44px;
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
- width: 36px;
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
- width: 52px;
1303
+ flex-basis: 52px;
1299
1304
  }
1300
1305
  .num-wrap-lg .num-input {
1301
1306
  font-size: 16px;
@@ -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
+ }
@@ -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);
@@ -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,