@webority/theme 0.7.6 → 0.7.7

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.7.6",
3
+ "version": "0.7.7",
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": {
@@ -222,6 +222,23 @@ $link-hover-decoration: underline;
222
222
  $focus-ring-width: 3px; // BS 0.25rem (4px)
223
223
 
224
224
 
225
+ // ---- Z-index ----------------------------------------------------------
226
+ // Mirrors the --wui-z-* ladder in _tokens.scss (full rationale there). Our modal is
227
+ // elevated to 1505 via a CSS custom property set directly in wui/_overlays.scss —
228
+ // Bootstrap's own $zindex-modal SCSS var is unused by it — but Bootstrap's stock
229
+ // popover/tooltip/toast (1070/1080/1090) are still miles below that, so any of
230
+ // those fired from inside an <AppModal> painted UNDER the dialog. Bring them onto
231
+ // the ladder's -menu/-tooltip/-toast rungs. Dropdown/sticky/fixed/offcanvas already
232
+ // sit at or near their matching -dropdown/-sticky/-fixed/-shell-scrim/-shell-drawer
233
+ // rungs, so those are left at Bootstrap's defaults.
234
+ //
235
+ // SCSS variables are compile-time and can't reference the runtime custom
236
+ // properties above — keep these numbers in sync with _tokens.scss by hand.
237
+ $zindex-popover: 1600;
238
+ $zindex-tooltip: 1650;
239
+ $zindex-toast: 1700;
240
+
241
+
225
242
  // ---- Table ----------------------------------------------------------
226
243
  // Set HERE, not in the component layer, and the reason is specificity.
227
244
  // Bootstrap emits `.table > :not(caption) > * > * { padding: … }` at (0,1,1).
@@ -312,6 +312,14 @@
312
312
  border-color: var(--color-primary);
313
313
  background: var(--color-primary-soft);
314
314
  }
315
+ // The hidden input is a sibling of the label (not a descendant), so :focus-within on
316
+ // .attach-drop never fires — reach the label through the general sibling combinator instead.
317
+ .attach-drop:has(+ input:focus-visible) {
318
+ border-color: var(--color-primary);
319
+ background: var(--color-primary-soft);
320
+ outline: 2px solid var(--color-primary);
321
+ outline-offset: 2px;
322
+ }
315
323
  .attach-drop-icon {
316
324
  flex: 0 0 auto;
317
325
  width: 36px;
@@ -42,7 +42,9 @@
42
42
  height: 100vh;
43
43
  background: var(--color-surface);
44
44
  border-left: 1px solid var(--color-border);
45
- z-index: 200;
45
+ // Same rung as the mobile sidebar drawer — the highest shell-chrome rung below
46
+ // the modal ladder, so this panel is never trapped under sticky/fixed shell chrome.
47
+ z-index: var(--wui-z-shell-drawer);
46
48
  transform: translateX(100%);
47
49
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
48
50
  display: flex;
@@ -58,7 +60,7 @@
58
60
  opacity: 0;
59
61
  pointer-events: none;
60
62
  transition: opacity 0.2s;
61
- z-index: 150;
63
+ z-index: var(--wui-z-shell-scrim);
62
64
  }
63
65
  .drawer-backdrop.open {
64
66
  opacity: 1;
@@ -262,6 +262,14 @@
262
262
  width: 0;
263
263
  height: 0;
264
264
  }
265
+ // Between the brand row and the nav — a workspace/tenant switcher, an environment
266
+ // badge. It must not shrink when the nav overflows, and it has no place on the
267
+ // 88px rail, so the collapsed state removes it (the mobile drawer restores it).
268
+ .app-sidebar-start {
269
+ flex: none;
270
+ margin-bottom: 8px;
271
+ overflow: hidden;
272
+ }
265
273
  .app-sidebar-foot {
266
274
  flex: none;
267
275
  padding-top: 12px;
@@ -369,7 +377,8 @@
369
377
  .app-shell.collapsed .app-nav-text,
370
378
  .app-shell.collapsed .app-nav-badge,
371
379
  .app-shell.collapsed .app-nav-group-label,
372
- .app-shell.collapsed .app-sidebar-brand-text {
380
+ .app-shell.collapsed .app-sidebar-brand-text,
381
+ .app-shell.collapsed .app-sidebar-start {
373
382
  display: none;
374
383
  }
375
384
 
@@ -492,7 +501,7 @@
492
501
  // 36px = half the 72px topbar, so the button lines up with the topbar's centre.
493
502
  top: 36px;
494
503
  left: calc(var(--app-sidebar-w) - 12px);
495
- z-index: 30;
504
+ z-index: var(--wui-z-fixed);
496
505
  width: 24px;
497
506
  height: 24px;
498
507
  display: inline-grid;
@@ -597,7 +606,7 @@
597
606
  right: 0;
598
607
  bottom: 0;
599
608
  left: var(--app-sidebar-w);
600
- z-index: 30;
609
+ z-index: var(--wui-z-fixed);
601
610
  background: color-mix(in srgb, var(--color-surface) 90%, transparent);
602
611
  backdrop-filter: blur(50px);
603
612
  -webkit-backdrop-filter: blur(50px);
@@ -638,7 +647,8 @@
638
647
  }
639
648
  .app-shell.app-shell.collapsed .app-nav-text,
640
649
  .app-shell.app-shell.collapsed .app-nav-badge,
641
- .app-shell.app-shell.collapsed .app-nav-group-label {
650
+ .app-shell.app-shell.collapsed .app-nav-group-label,
651
+ .app-shell.app-shell.collapsed .app-sidebar-start {
642
652
  display: revert;
643
653
  }
644
654
  .app-shell.app-shell .app-sidebar-toggle {
@@ -89,7 +89,9 @@
89
89
  bottom: calc(100% + 8px);
90
90
  left: 50%;
91
91
  transform: translateX(-50%);
92
- z-index: 220;
92
+ // Same rung as the .is-portal variant below — an anchored infotip inside a
93
+ // modal must clear the same modal it was previously trapped under at 220.
94
+ z-index: var(--wui-z-menu);
93
95
  display: flex;
94
96
  flex-direction: column;
95
97
  gap: 4px;