@webority/theme 0.9.4 → 0.9.6

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.4",
3
+ "version": "0.9.6",
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": {
@@ -865,7 +865,11 @@ textarea.form-control.autosize {
865
865
  }
866
866
  // Character counter — a right-aligned count under the field; turns danger at the limit.
867
867
  .field-count {
868
- margin-top: 2px;
868
+ // `.field` is align-items:flex-start, so a shrink-wrapped count would sit on the LEFT —
869
+ // text-align alone can't move it. align-self pushes it to the control's right edge.
870
+ align-self: flex-end;
871
+ // Tighten the space above the count: .field's 4px gap → effective 2px, matching .field-error.
872
+ margin-top: -2px;
869
873
  font-size: 12px;
870
874
  line-height: normal;
871
875
  text-align: right;
@@ -911,7 +915,6 @@ textarea.form-control.autosize {
911
915
  flex-direction: column;
912
916
  align-items: flex-start;
913
917
  gap: 4px;
914
- margin-bottom: 16px;
915
918
  }
916
919
  .field > .label,
917
920
  .field label {
@@ -58,19 +58,6 @@
58
58
  align-items: center;
59
59
  text-align: center;
60
60
  padding: 40px 24px;
61
- // An empty ledger still renders its header row, whose nowrap cells can push the
62
- // table wider than the viewport, so `.table-wrap` scrolls horizontally with no
63
- // data to justify it. This state row spans the full scroll width, so without a
64
- // pin the message centres over that width and slides off screen on mobile.
65
- // Stick it to the scrollport's left edge and size it to the visible wrap width
66
- // (`100cqw`, from the container on `.table-wrap`), so the message stays centred
67
- // and fully in view no matter how far the header scrolls. `left: 0` is relative
68
- // to the scroll container; on a wide screen `100cqw` equals the content width, so
69
- // this is a no-op there.
70
- position: sticky;
71
- left: 0;
72
- width: 100cqw;
73
- box-sizing: border-box;
74
61
  }
75
62
  .tbl-empty-icon {
76
63
  display: inline-grid;
@@ -115,16 +102,11 @@
115
102
  border-bottom: 0;
116
103
  }
117
104
  // A plain-string empty (no `.tbl-empty` wrapper) — carries the padding the cell
118
- // used to own, plus the same viewport pin as `.tbl-empty` so it stays on screen
119
- // when a narrow ledger scrolls horizontally (see the pin note on `.tbl-empty`).
105
+ // used to own.
120
106
  .tbl-empty-plain {
121
107
  padding: 36px 24px;
122
108
  text-align: center;
123
109
  color: var(--color-text-muted);
124
- position: sticky;
125
- left: 0;
126
- width: 100cqw;
127
- box-sizing: border-box;
128
110
  }
129
111
  .table tbody tr:hover td.wui-table-empty:has(> .tbl-empty),
130
112
  .table-ledger tbody tr:hover td.wui-table-empty:has(> .tbl-empty) {
@@ -279,11 +261,13 @@
279
261
  // class (set --wui-table-pad) without overriding this selector. Bottom padding is now
280
262
  // included (was 0) so the last row isn't flush against the card edge.
281
263
  padding: var(--wui-table-pad, 20px);
282
- // Query container for the empty-state pin below. The header row can force the
283
- // ledger wider than the viewport, so on a narrow screen `.table-wrap` scrolls
284
- // horizontally; `100cqw` here is the *visible* wrap width regardless of that
285
- // scroll, which is what keeps the empty message on screen (see `.tbl-empty`).
286
- container-type: inline-size;
264
+ // NOTE: do NOT set `container-type` here. Size containment (from `container-type:
265
+ // inline-size`) collapses `.table-wrap` to a ~40px sliver whenever it is a flex/grid
266
+ // ITEM (a very common product layout), forcing the whole table into a tiny horizontal
267
+ // scroll. It was briefly added for a `100cqw` empty-state pin; the collapse is far worse
268
+ // than the empty message not being perfectly centred on a narrow scrolling table, so the
269
+ // pin was removed. If the empty state ever needs viewport-relative sizing again, do it
270
+ // without turning the scroll container into a query container.
287
271
  }
288
272
  .table-ledger {
289
273
  border-spacing: 0;
@@ -681,6 +681,15 @@
681
681
  margin-top: 1px;
682
682
  font-size: 0.65rem;
683
683
  }
684
+ // Bootstrap's .btn-close paints a box-shadow ring on :focus (fires on mouse click too).
685
+ // Drop it; keep a keyboard-only outline so dismissal stays reachable without a mouse.
686
+ .wui-toast-close:focus {
687
+ box-shadow: none;
688
+ }
689
+ .wui-toast-close:focus-visible {
690
+ outline: 2px solid var(--wui-toast-accent);
691
+ outline-offset: 2px;
692
+ }
684
693
 
685
694
  // The auto-dismiss TIMER, deliberately invisible (height 0): the element still runs the
686
695
  // countdown animation because its animationend is what dismisses the toast on both surfaces,