@webority/theme 0.9.7 → 0.9.9
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/dist/webority-theme.css +1 -1
- package/package.json +2 -2
- package/scss/wui/_data.scss +34 -0
- package/scss/wui/_overlays.scss +13 -0
- package/scss/wui/_utilities.scss +7 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
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": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"bootstrap": "5.3.3",
|
|
32
32
|
"country-flag-icons": "^1.6.20",
|
|
33
|
-
"sass": "
|
|
33
|
+
"sass-embedded": "^1.97.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "sass index.scss dist/webority-theme.css --load-path=node_modules --style=compressed --no-source-map --quiet-deps && node ../../scripts/sync-rcl-assets.mjs theme"
|
package/scss/wui/_data.scss
CHANGED
|
@@ -112,6 +112,40 @@
|
|
|
112
112
|
.table-ledger tbody tr:hover td.wui-table-empty:has(> .tbl-empty) {
|
|
113
113
|
background: transparent;
|
|
114
114
|
}
|
|
115
|
+
// Keep the empty state on screen. An empty table has no data to scroll to, yet its
|
|
116
|
+
// header row can still be wider than the viewport (many columns, or wide header
|
|
117
|
+
// labels), so `.table-wrap` would scroll horizontally and the centred empty message —
|
|
118
|
+
// spanning that full width in a colSpan cell — would slide off screen on a narrow
|
|
119
|
+
// screen. Keyed off the empty body itself (`.tbl-empty` for a rich AppTableEmptyState,
|
|
120
|
+
// `.tbl-empty-plain` for a plain string — both surfaces render one), lay the empty
|
|
121
|
+
// table out at the visible wrap width and drop the scroll, so the message stays centred
|
|
122
|
+
// and fully in view. This is the "do it without turning the scroll container into a
|
|
123
|
+
// query container" path the pin note on `.table-wrap:has(> .table-ledger)` calls for —
|
|
124
|
+
// it replaces the earlier `container-type` + `100cqw` pin, which collapsed the wrap as a
|
|
125
|
+
// flex/grid item. Scoped to the empty body, so a table WITH rows is untouched and still
|
|
126
|
+
// scrolls its columns.
|
|
127
|
+
// Keyed on the empty CELL (`td.wui-table-empty`, the one element unique to the empty
|
|
128
|
+
// state on both surfaces) with CHILD combinators, NOT a loose descendant `:has(.tbl-empty)`.
|
|
129
|
+
// The child chain matches only a table's OWN empty body — so an expandable row whose
|
|
130
|
+
// nested table happens to be empty can never force the outer, data-bearing table into
|
|
131
|
+
// this layout. A data table (no empty cell of its own) is untouched and still scrolls.
|
|
132
|
+
.table-wrap:has(> table > tbody > tr > td.wui-table-empty) {
|
|
133
|
+
overflow-x: hidden;
|
|
134
|
+
}
|
|
135
|
+
.table:has(> tbody > tr > td.wui-table-empty) {
|
|
136
|
+
width: 100%;
|
|
137
|
+
min-width: 0;
|
|
138
|
+
table-layout: fixed;
|
|
139
|
+
}
|
|
140
|
+
// Under the fixed layout above the columns are narrow, so a long header label would
|
|
141
|
+
// spill out of its cell and back into horizontal overflow — the very thing we just
|
|
142
|
+
// removed. Clip each header to its column (ellipsis) in the empty state; short labels
|
|
143
|
+
// are unaffected, and the data table keeps its natural header sizing.
|
|
144
|
+
.table:has(> tbody > tr > td.wui-table-empty) > thead th {
|
|
145
|
+
overflow: hidden;
|
|
146
|
+
white-space: nowrap;
|
|
147
|
+
text-overflow: ellipsis;
|
|
148
|
+
}
|
|
115
149
|
|
|
116
150
|
// ── Table (base) ──
|
|
117
151
|
// The shared data-table look, on the plain `.table` class Bootstrap already
|
package/scss/wui/_overlays.scss
CHANGED
|
@@ -547,6 +547,19 @@
|
|
|
547
547
|
animation: wui-toast-in 0.24s ease;
|
|
548
548
|
}
|
|
549
549
|
|
|
550
|
+
// A single-line toast — bare message, no title / action / progress stack — centers its icon,
|
|
551
|
+
// text and close as one row. The flex-start default above exists for the multi-line variants
|
|
552
|
+
// (title+message, an action button, a progress track), where the icon must sit on the first
|
|
553
|
+
// line rather than float to the middle of a tall card.
|
|
554
|
+
.wui-toast:not(:has(.wui-toast-title)):not(:has(.wui-toast-action)):not(:has(.wui-toast-task)) {
|
|
555
|
+
align-items: center;
|
|
556
|
+
}
|
|
557
|
+
// The 1px top nudges align the icon/close with the first text line under flex-start; once the
|
|
558
|
+
// row is centered they would push those items a touch low, so zero them here.
|
|
559
|
+
.wui-toast:not(:has(.wui-toast-title)):not(:has(.wui-toast-action)):not(:has(.wui-toast-task)) :is(.wui-toast-icon, .wui-toast-close) {
|
|
560
|
+
margin-top: 0;
|
|
561
|
+
}
|
|
562
|
+
|
|
550
563
|
// While a swipe is in progress the toast follows the pointer with no transition.
|
|
551
564
|
.wui-toast--dragging {
|
|
552
565
|
transition: none;
|
package/scss/wui/_utilities.scss
CHANGED
|
@@ -164,6 +164,13 @@
|
|
|
164
164
|
align-items: center;
|
|
165
165
|
justify-content: space-between;
|
|
166
166
|
gap: 16px;
|
|
167
|
+
// Content-driven wrap: while the title block and actions both fit, space-between keeps the
|
|
168
|
+
// actions pinned right; once a long title needs the full width they can no longer share the
|
|
169
|
+
// row, so the actions drop onto their own line — left-aligned, since space-between places a
|
|
170
|
+
// lone wrapped item at flex-start — instead of being crushed against the title. The gap above
|
|
171
|
+
// doubles as the row-gap to that dropped line. (Below lg they stack unconditionally, further
|
|
172
|
+
// down; this is the any-width, content-driven case.)
|
|
173
|
+
flex-wrap: wrap;
|
|
167
174
|
}
|
|
168
175
|
// Left block: an optional leading icon tile + the title stack, kept together.
|
|
169
176
|
.page-header-lead {
|