@webority/theme 0.16.0 → 0.17.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.16.0",
3
+ "version": "0.17.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": {
@@ -550,8 +550,8 @@ a.info-row:hover .info-value {
550
550
  }
551
551
  // Borderless (bordered={false} / bordered="false") — the selected pill keeps its tint and primary
552
552
  // label but drops the ring, on both the sliding thumb and the no-JS per-option pill.
553
- .segmented-borderless .segmented-thumb,
554
- .segmented-borderless .segmented-option:has(.segmented-input:checked) {
553
+ .wui-segmented-borderless .segmented-thumb,
554
+ .wui-segmented-borderless .segmented-option:has(.segmented-input:checked) {
555
555
  box-shadow: none;
556
556
  }
557
557
  // Icon pop — the selected segment's glyph springs up a touch as it becomes active.
@@ -561,7 +561,7 @@ a.info-row:hover .info-value {
561
561
  }
562
562
  .segmented-sm .segmented-thumb,
563
563
  .segmented-lg .segmented-thumb,
564
- .segmented-xl .segmented-thumb {
564
+ .wui-segmented-xl .segmented-thumb {
565
565
  top: 3px;
566
566
  bottom: 3px;
567
567
  }
@@ -574,7 +574,7 @@ a.info-row:hover .info-value {
574
574
  --segmented-icon: 15px;
575
575
  --segmented-note: 11px;
576
576
  }
577
- .segmented-xl {
577
+ .wui-segmented-xl {
578
578
  --segmented-option-h: 36px;
579
579
  --segmented-icon: 17px;
580
580
  --segmented-note: 12px;
@@ -588,7 +588,7 @@ a.info-row:hover .info-value {
588
588
  padding: 4px 16px;
589
589
  font-size: 13px;
590
590
  }
591
- .segmented-xl .segmented-option {
591
+ .wui-segmented-xl .segmented-option {
592
592
  gap: 7px;
593
593
  padding: 4px 20px;
594
594
  font-size: 15px;
@@ -9,17 +9,26 @@
9
9
  // AppSidebarMenu — react-bootstrap Offcanvas mapped onto the app tokens plus
10
10
  // a flex column layout for the header / scrolling body / sticky footer.
11
11
  .app-sidebar-menu.offcanvas {
12
- --bs-offcanvas-width: var(--asm-width, 420px);
12
+ // Phone first: a side panel fills the screen, because a 420px panel on a 430px phone leaves a
13
+ // sliver of page that reads as a rendering fault. From sm up it takes its own width (below).
14
+ --bs-offcanvas-width: 100vw;
13
15
  --bs-offcanvas-bg: var(--color-surface);
14
16
  --bs-offcanvas-color: var(--color-text);
15
17
  --bs-offcanvas-border-color: var(--color-border);
16
18
  --bs-offcanvas-border-width: 1px;
17
19
  --bs-offcanvas-padding-x: 0;
18
20
  --bs-offcanvas-padding-y: 0;
19
- max-width: var(--asm-max-width, 92vw);
21
+ // A caller's own maxWidth still caps the panel on a phone.
22
+ max-width: var(--asm-max-width, 100vw);
20
23
  display: flex;
21
24
  flex-direction: column;
22
25
  }
26
+ @include media-breakpoint-up(sm) {
27
+ .app-sidebar-menu.offcanvas {
28
+ --bs-offcanvas-width: var(--asm-width, 420px);
29
+ max-width: var(--asm-max-width, 92vw);
30
+ }
31
+ }
23
32
  .app-sidebar-menu .offcanvas-body {
24
33
  // Inset the content to the same 20px gutter as the header/footer so plain body
25
34
  // content doesn't stick to the panel edge. Full-bleed content (edge-to-edge nav
@@ -249,7 +249,11 @@
249
249
  // hover, so dismissing reads as the destructive-ish gesture it is. The corner is
250
250
  // fixed across states: only the tint animates, so the button never morphs into a
251
251
  // circle. Slower on the way in than the way out.
252
- .wui-modal-close {
252
+ //
253
+ // The drawer (AppSidebarMenu) header close shares the rule, so the two overlays dismiss with
254
+ // the same control.
255
+ .wui-modal-close,
256
+ .wui-drawer-close {
253
257
  margin-left: auto;
254
258
  display: grid;
255
259
  place-items: center;
@@ -268,20 +272,24 @@
268
272
  background 180ms cubic-bezier(0.4, 0, 0.2, 1),
269
273
  color 180ms cubic-bezier(0.4, 0, 0.2, 1);
270
274
  }
271
- .wui-modal-close:hover {
275
+ .wui-modal-close:hover,
276
+ .wui-drawer-close:hover {
272
277
  background: var(--color-danger-soft);
273
278
  color: var(--color-danger-text);
274
279
  transition:
275
280
  background 280ms cubic-bezier(0.16, 1, 0.3, 1),
276
281
  color 280ms cubic-bezier(0.16, 1, 0.3, 1);
277
282
  }
278
- .wui-modal-close:focus-visible {
283
+ .wui-modal-close:focus-visible,
284
+ .wui-drawer-close:focus-visible {
279
285
  outline: 2px solid var(--color-primary);
280
286
  outline-offset: 2px;
281
287
  }
282
288
  @media (prefers-reduced-motion: reduce) {
283
289
  .wui-modal-close,
284
- .wui-modal-close:hover {
290
+ .wui-modal-close:hover,
291
+ .wui-drawer-close,
292
+ .wui-drawer-close:hover {
285
293
  transition:
286
294
  background 1ms linear,
287
295
  color 1ms linear;