@webority/theme 0.9.18 → 0.9.20

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.9.18",
3
+ "version": "0.9.20",
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": {
@@ -509,6 +509,10 @@
509
509
  z-index: var(--wui-z-menu);
510
510
  width: 312px;
511
511
  max-width: calc(100vw - 16px);
512
+ // JS (anchorOverlay's clampHeight) sets an inline max-height when the viewport can't fit the
513
+ // whole grid above or below the trigger: overflow-y is the scroll fallback that makes the
514
+ // clamped remainder reachable instead of silently clipped.
515
+ overflow-y: auto;
512
516
  padding: 18px;
513
517
  background: var(--color-surface);
514
518
  border: 1px solid var(--color-border);
@@ -828,6 +832,9 @@ button.datepicker-month:hover {
828
832
  z-index: var(--wui-z-menu);
829
833
  width: 620px;
830
834
  max-width: calc(100vw - 16px);
835
+ // See the matching note on .datepicker-pop: the scroll fallback for clampHeight's inline
836
+ // max-height.
837
+ overflow-y: auto;
831
838
  padding: 18px;
832
839
  background: var(--color-surface);
833
840
  border: 1px solid var(--color-border);
@@ -1075,6 +1075,18 @@ wui-select[compact] {
1075
1075
  border: none;
1076
1076
  border-radius: 0;
1077
1077
  background: transparent;
1078
+ // The wrapper owns the 1px border, so the input must shed those 2px. The input
1079
+ // is a border-box control-height box (44px at md); nesting it in a 1px-bordered
1080
+ // wrapper stacks the wrapper's 2px on top, so a 44px field renders at 46px with a
1081
+ // unit. Subtracting the border here keeps input + wrapper border == the control
1082
+ // height at every size.
1083
+ height: calc(var(--wui-control-height) - 2px);
1084
+ }
1085
+ .input-with-unit .num-input.input-sm {
1086
+ height: calc(var(--wui-control-height-sm) - 2px);
1087
+ }
1088
+ .input-with-unit .num-input.input-lg {
1089
+ height: calc(var(--wui-control-height-lg) - 2px);
1078
1090
  }
1079
1091
  .input-with-unit .num-input:focus {
1080
1092
  box-shadow: none;
@@ -1086,6 +1098,10 @@ wui-select[compact] {
1086
1098
  border-left: 1px solid var(--color-border);
1087
1099
  padding: 9px 14px;
1088
1100
  font-size: 14px;
1101
+ // Tight line box so the pill's intrinsic height never exceeds the (now shortened)
1102
+ // input and drives the wrapper taller at the small size; it is vertically centred
1103
+ // by align-items, so this only removes slack, it does not shift the glyph.
1104
+ line-height: 1;
1089
1105
  font-weight: 500;
1090
1106
  color: var(--color-text-muted);
1091
1107
  font-family: var(--font-sans);
@@ -24,11 +24,10 @@
24
24
  }
25
25
  .faq-item {
26
26
  border: 1px solid var(--color-border);
27
- border-radius: var(--radius-lg);
28
- corner-shape: squircle;
29
27
  background: var(--color-surface);
30
28
  overflow: hidden;
31
29
  transition: border-color 0.15s ease;
30
+ border-radius: var(--wui-field-radius);
32
31
  }
33
32
  .faq-item:hover:not(.open) {
34
33
  border-color: var(--color-border-strong);
@@ -706,6 +706,13 @@ button.step:focus-visible .step-circle {
706
706
  line-height: 1.4;
707
707
  color: var(--color-text-muted);
708
708
  }
709
+ // When the row's fields carry their own labels, those labels supply the vertical separation
710
+ // from the remove control. A removable row whose fields have NO labels has only the thin empty
711
+ // band, so the inputs read as crowding the remove disc. Grow the band to the disc's height when
712
+ // no field label is present, restoring the clearance a label would have given.
713
+ .repeater-row:not(:has(.repeater-body :is(.label, label))) .repeater-row-label {
714
+ min-height: 36px;
715
+ }
709
716
  .repeater-index {
710
717
  flex: none;
711
718
  width: 22px;
@@ -549,21 +549,17 @@
549
549
  display: inline-grid;
550
550
  place-items: center;
551
551
  transform: translateY(-50%);
552
- border: 1px solid var(--color-border);
552
+ border: 0;
553
553
  border-radius: 999px;
554
554
  background: var(--color-surface);
555
555
  color: var(--color-text-muted);
556
556
  cursor: pointer;
557
557
  transition:
558
558
  left 0.2s var(--wui-ease-ui),
559
- background 0.12s ease,
560
- color 0.12s ease,
561
- box-shadow 0.12s ease;
559
+ color 0.12s ease;
562
560
  }
563
561
  .app-sidebar-toggle:hover {
564
- background: var(--color-bg-muted);
565
- color: var(--color-text);
566
- box-shadow: var(--shadow-sm);
562
+ color: var(--color-primary);
567
563
  }
568
564
  .app-sidebar-toggle:focus-visible {
569
565
  outline: 2px solid var(--color-primary);
@@ -576,14 +572,13 @@
576
572
  // `block` kills the inline-block baseline gap (.wui-icon is inline-block), which otherwise
577
573
  // pushes the glyph a hair down in the round button — so the grid can centre it exactly.
578
574
  display: block;
579
- // Optical centring nudge for the chevron in the round button.
580
- // (translateX is in the icon's own frame, so after the collapsed 180° rotation the same value
581
- // mirrors on screen — keeping the flipped chevron optically centred too.)
582
- transform: translateX(-2px);
583
575
  transition: transform 0.2s ease;
584
576
  }
577
+ // The double-chevron glyph is a left/right MIRROR pair, not a point-symmetric shape, so a
578
+ // 180deg rotate (used for the old single-chevron glyph) would flip it upside down too;
579
+ // scaleX(-1) mirrors only the axis that differs between the collapse and expand glyphs.
585
580
  .app-shell.collapsed .app-sidebar-toggle > * {
586
- transform: rotate(180deg) translateX(2px);
581
+ transform: scaleX(-1);
587
582
  }
588
583
 
589
584
  .app-main {