@webority/theme 0.67.0 → 0.68.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/theme",
3
- "version": "0.67.0",
3
+ "version": "0.68.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": {
@@ -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;
@@ -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,