@webority/theme 0.104.1 → 0.106.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/dist/purge-safelist.json +26 -0
- package/dist/webority-theme.css +1 -1
- package/package.json +2 -2
- package/scss/_bootstrap.generated.scss +1 -1
- package/scss/_tokens.generated.scss +5 -1
- package/scss/_wui-components.scss +3 -0
- package/scss/_wui-core.scss +3 -0
- package/scss/wui/_calendar.scss +19 -0
- package/scss/wui/_comment-thread.scss +20 -0
- package/scss/wui/_detail-pane.scss +25 -0
- package/scss/wui/_disclosure.scss +39 -0
- package/scss/wui/_drawer.scss +3 -0
- package/scss/wui/_file-tiles.scss +57 -0
- package/scss/wui/_media.scss +23 -0
- package/scss/wui/_modal-remote.scss +1 -1
- package/scss/wui/_nav-list.scss +90 -0
- package/scss/wui/_overlays.scss +27 -0
- package/scss/wui/_sortable.scss +27 -0
- package/scss/wui/_utilities.scss +10 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.106.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": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"country-flag-icons": "^1.6.20",
|
|
52
52
|
"sass-embedded": "^1.97.0",
|
|
53
53
|
"vite": "^8.0.12",
|
|
54
|
-
"@webority/tokens": "0.
|
|
54
|
+
"@webority/tokens": "0.106.0"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"tokens": "node ../tokens/dist/webority.js brand --library --out ../tokens/dist --web scss/_tokens.generated.scss",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated by @webority/tokens 0.
|
|
1
|
+
// Generated by @webority/tokens 0.106.0 from its token source. Do not edit; run webority brand --library.
|
|
2
2
|
$body-color: #252f4a !default;
|
|
3
3
|
$body-secondary-color: #4b5675 !default;
|
|
4
4
|
$body-tertiary-color: #626a82 !default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated by @webority/tokens 0.
|
|
1
|
+
// Generated by @webority/tokens 0.106.0 from its token source. Do not edit; run webority brand --library.
|
|
2
2
|
|
|
3
3
|
:root {
|
|
4
4
|
--wui-primary: #4F46E5;
|
|
@@ -210,6 +210,10 @@
|
|
|
210
210
|
--color-surface-inverse: var(--wui-text-heading);
|
|
211
211
|
--color-surface-inverse-raised: color-mix(in srgb, var(--color-text-inverse) 5%, var(--color-surface-inverse));
|
|
212
212
|
--color-surface-inverse-elevated: color-mix(in srgb, var(--color-text-inverse) 9%, var(--color-surface-inverse));
|
|
213
|
+
--color-surface-dark: var(--wui-text-heading);
|
|
214
|
+
--color-surface-dark-border: color-mix(in srgb, var(--wui-bg-light) 14%, var(--wui-text-heading));
|
|
215
|
+
--color-on-surface-dark: var(--wui-bg-light);
|
|
216
|
+
--color-on-surface-dark-muted: color-mix(in srgb, var(--wui-bg-light) 72%, var(--wui-text-heading));
|
|
213
217
|
--color-text: var(--wui-text-heading);
|
|
214
218
|
--color-text-body: var(--wui-text-1);
|
|
215
219
|
--color-text-muted: var(--wui-text-2);
|
|
@@ -30,9 +30,11 @@
|
|
|
30
30
|
@import "wui/pending";
|
|
31
31
|
@import "wui/choice";
|
|
32
32
|
@import "wui/media";
|
|
33
|
+
@import "wui/file-tiles";
|
|
33
34
|
@import "wui/image-crop";
|
|
34
35
|
@import "wui/avatar-picker";
|
|
35
36
|
@import "wui/navigation";
|
|
37
|
+
@import "wui/nav-list";
|
|
36
38
|
@import "wui/card";
|
|
37
39
|
@import "wui/data";
|
|
38
40
|
@import "wui/illustration";
|
|
@@ -62,6 +64,7 @@
|
|
|
62
64
|
@import "wui/record-pager";
|
|
63
65
|
@import "wui/shortcuts";
|
|
64
66
|
@import "wui/split-view";
|
|
67
|
+
@import "wui/detail-pane";
|
|
65
68
|
@import "wui/groups";
|
|
66
69
|
@import "wui/carousel";
|
|
67
70
|
@import "wui/onboarding-checklist";
|
package/scss/_wui-core.scss
CHANGED
|
@@ -23,8 +23,10 @@
|
|
|
23
23
|
@import "wui/pending";
|
|
24
24
|
@import "wui/choice";
|
|
25
25
|
@import "wui/media";
|
|
26
|
+
@import "wui/file-tiles";
|
|
26
27
|
@import "wui/avatar-picker";
|
|
27
28
|
@import "wui/navigation";
|
|
29
|
+
@import "wui/nav-list";
|
|
28
30
|
@import "wui/card";
|
|
29
31
|
@import "wui/data";
|
|
30
32
|
@import "wui/illustration";
|
|
@@ -51,6 +53,7 @@
|
|
|
51
53
|
@import "wui/record-pager";
|
|
52
54
|
@import "wui/shortcuts";
|
|
53
55
|
@import "wui/split-view";
|
|
56
|
+
@import "wui/detail-pane";
|
|
54
57
|
@import "wui/groups";
|
|
55
58
|
@import "wui/carousel";
|
|
56
59
|
@import "wui/onboarding-checklist";
|
package/scss/wui/_calendar.scss
CHANGED
|
@@ -275,6 +275,25 @@ wui-calendar[data-view="month"] .wui-calendar-chip-title {
|
|
|
275
275
|
white-space: normal;
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
+
// The "+N" link on a card that stands for several events: a small pill of its own inside the card.
|
|
279
|
+
.wui-calendar-stack {
|
|
280
|
+
display: inline-block;
|
|
281
|
+
margin-inline-start: var(--wui-space-xs);
|
|
282
|
+
padding: 0 var(--wui-space-xs);
|
|
283
|
+
border-radius: var(--wui-radius-pill);
|
|
284
|
+
background: var(--color-surface);
|
|
285
|
+
color: var(--color-text-body);
|
|
286
|
+
font-size: var(--wui-fs-xs);
|
|
287
|
+
font-weight: var(--wui-fw-semibold);
|
|
288
|
+
line-height: var(--wui-lh-heading);
|
|
289
|
+
text-decoration: none;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.wui-calendar-stack:hover,
|
|
293
|
+
.wui-calendar-stack:focus-visible {
|
|
294
|
+
background: var(--color-bg-muted);
|
|
295
|
+
}
|
|
296
|
+
|
|
278
297
|
// What a page with no script shows until the element's script replaces it.
|
|
279
298
|
.wui-calendar-fallback {
|
|
280
299
|
margin: 0;
|
|
@@ -221,6 +221,26 @@ button.wui-reaction:hover,
|
|
|
221
221
|
flex-wrap: wrap;
|
|
222
222
|
gap: 8px;
|
|
223
223
|
}
|
|
224
|
+
.wui-comment-composer-inline {
|
|
225
|
+
display: flex;
|
|
226
|
+
flex-direction: row;
|
|
227
|
+
flex-wrap: wrap;
|
|
228
|
+
align-items: flex-start;
|
|
229
|
+
gap: var(--wui-space-xs);
|
|
230
|
+
}
|
|
231
|
+
.wui-comment-composer-inline .wui-comment-composer-avatar {
|
|
232
|
+
flex: none;
|
|
233
|
+
}
|
|
234
|
+
.wui-comment-composer-inline .wui-mention-input {
|
|
235
|
+
flex: 1;
|
|
236
|
+
min-width: 0;
|
|
237
|
+
}
|
|
238
|
+
.wui-comment-composer-inline .wui-comment-form-actions {
|
|
239
|
+
margin: 0;
|
|
240
|
+
}
|
|
241
|
+
.wui-comment-composer-inline .wui-comment-error {
|
|
242
|
+
flex: 1 0 100%;
|
|
243
|
+
}
|
|
224
244
|
|
|
225
245
|
.wui-comment-error {
|
|
226
246
|
font-size: 12px;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// AppDetailPane / <app-detail-pane>: an in-page detail column beside a list, filled by WUI.pane.load.
|
|
2
|
+
|
|
3
|
+
.wui-detail-pane {
|
|
4
|
+
min-width: 0;
|
|
5
|
+
}
|
|
6
|
+
.wui-detail-pane[data-sticky] {
|
|
7
|
+
position: sticky;
|
|
8
|
+
top: var(--wui-detail-pane-top, var(--wui-space-4xl));
|
|
9
|
+
align-self: start;
|
|
10
|
+
max-height: calc(100dvh - var(--wui-detail-pane-top, var(--wui-space-4xl)) - var(--wui-space-lg));
|
|
11
|
+
overflow: auto;
|
|
12
|
+
}
|
|
13
|
+
.wui-detail-pane > .wui-modal {
|
|
14
|
+
max-width: none;
|
|
15
|
+
border: 1px solid var(--color-border);
|
|
16
|
+
border-radius: var(--wui-radius-lg);
|
|
17
|
+
box-shadow: none;
|
|
18
|
+
background: var(--color-surface);
|
|
19
|
+
}
|
|
20
|
+
.wui-detail-pane > .wui-modal > .wui-modal-body {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
gap: var(--wui-space-md);
|
|
24
|
+
padding: var(--wui-space-lg);
|
|
25
|
+
}
|
|
@@ -107,6 +107,45 @@
|
|
|
107
107
|
padding-bottom: 16px;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
// Flat: a text toggle with a leading chevron, for a section header rather than a card.
|
|
111
|
+
.faq-list.wui-accordion-flat {
|
|
112
|
+
gap: 0;
|
|
113
|
+
}
|
|
114
|
+
.faq-list.wui-accordion-flat .faq-item {
|
|
115
|
+
border: 0;
|
|
116
|
+
background: none;
|
|
117
|
+
box-shadow: none;
|
|
118
|
+
}
|
|
119
|
+
.faq-list.wui-accordion-flat .faq-q {
|
|
120
|
+
display: flex;
|
|
121
|
+
align-items: center;
|
|
122
|
+
justify-content: flex-start;
|
|
123
|
+
gap: var(--wui-space-xs);
|
|
124
|
+
margin: var(--wui-space-lg) 0 var(--wui-space-xs);
|
|
125
|
+
padding: var(--wui-space-xxs) 0;
|
|
126
|
+
font-size: var(--wui-fs-sm);
|
|
127
|
+
font-weight: var(--wui-fw-semibold);
|
|
128
|
+
color: var(--color-text-muted);
|
|
129
|
+
background: none;
|
|
130
|
+
}
|
|
131
|
+
.faq-list.wui-accordion-flat .faq-q-icon {
|
|
132
|
+
transform: rotate(-90deg);
|
|
133
|
+
}
|
|
134
|
+
.faq-list.wui-accordion-flat .faq-item.open .faq-q-icon {
|
|
135
|
+
transform: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.wui-accordion-count {
|
|
139
|
+
display: inline-flex;
|
|
140
|
+
justify-content: center;
|
|
141
|
+
min-width: 20px;
|
|
142
|
+
padding: 0 var(--wui-space-xs);
|
|
143
|
+
border-radius: var(--wui-radius-pill);
|
|
144
|
+
background: var(--color-bg-muted);
|
|
145
|
+
color: var(--color-text-muted);
|
|
146
|
+
font-size: var(--wui-fs-xs);
|
|
147
|
+
}
|
|
148
|
+
|
|
110
149
|
@media (prefers-reduced-motion: reduce) {
|
|
111
150
|
.faq-a-wrap,
|
|
112
151
|
.faq-q-icon,
|
package/scss/wui/_drawer.scss
CHANGED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// AppFileTiles / <app-file-tiles>: a read-only grid of file tiles with a type tile, name, size and meta line.
|
|
2
|
+
|
|
3
|
+
.wui-file-tiles {
|
|
4
|
+
display: grid;
|
|
5
|
+
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
|
6
|
+
gap: var(--wui-space-xs);
|
|
7
|
+
list-style: none;
|
|
8
|
+
margin: 0;
|
|
9
|
+
padding: 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.wui-file-tile {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: var(--wui-space-sm);
|
|
16
|
+
min-width: 0;
|
|
17
|
+
padding: var(--wui-space-xs) var(--wui-space-sm);
|
|
18
|
+
border: 1px solid var(--color-border);
|
|
19
|
+
border-radius: var(--wui-radius-md);
|
|
20
|
+
color: var(--color-text);
|
|
21
|
+
font-size: var(--wui-fs-sm);
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
a.wui-file-tile:hover {
|
|
26
|
+
border-color: var(--color-primary);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.wui-file-tile-ext {
|
|
30
|
+
flex: none;
|
|
31
|
+
display: grid;
|
|
32
|
+
place-items: center;
|
|
33
|
+
width: 34px;
|
|
34
|
+
height: 34px;
|
|
35
|
+
border-radius: var(--wui-radius-sm);
|
|
36
|
+
background: var(--color-primary-soft);
|
|
37
|
+
color: var(--color-primary-text);
|
|
38
|
+
font-size: var(--wui-fs-xs);
|
|
39
|
+
font-weight: var(--wui-fw-bold);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.wui-file-tile-text {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-direction: column;
|
|
45
|
+
min-width: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.wui-file-tile-name {
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
text-overflow: ellipsis;
|
|
51
|
+
white-space: nowrap;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.wui-file-tile-meta {
|
|
55
|
+
font-size: var(--wui-fs-xs);
|
|
56
|
+
color: var(--color-text-subtle);
|
|
57
|
+
}
|
package/scss/wui/_media.scss
CHANGED
|
@@ -752,6 +752,29 @@
|
|
|
752
752
|
overflow-wrap: anywhere;
|
|
753
753
|
}
|
|
754
754
|
|
|
755
|
+
// The button form (AppFilePicker variant="button"): one outline button in a bare field, no dropzone.
|
|
756
|
+
// Positioned so the loading veil covers the button rather than the page.
|
|
757
|
+
.wui-file-input-button-field {
|
|
758
|
+
position: relative;
|
|
759
|
+
display: inline-flex;
|
|
760
|
+
flex-direction: column;
|
|
761
|
+
align-items: flex-start;
|
|
762
|
+
gap: var(--wui-space-xxs);
|
|
763
|
+
border: 0;
|
|
764
|
+
padding: 0;
|
|
765
|
+
background: none;
|
|
766
|
+
min-height: 0;
|
|
767
|
+
}
|
|
768
|
+
// The base .file-input fills its column and tints on hover and focus; the button form keeps its
|
|
769
|
+
// natural width and no band behind the button.
|
|
770
|
+
.file-input.wui-file-input-button-field {
|
|
771
|
+
width: auto;
|
|
772
|
+
}
|
|
773
|
+
.file-input.wui-file-input-button-field:hover:not(:focus-within),
|
|
774
|
+
.file-input.wui-file-input-button-field:focus-within {
|
|
775
|
+
background: none;
|
|
776
|
+
}
|
|
777
|
+
|
|
755
778
|
// Large preview shown once an image exists; hover reveals a "Change image"
|
|
756
779
|
// overlay.
|
|
757
780
|
.file-preview {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
// The remote drawer: the same shell and card, docked to the end edge at full height. Width
|
|
58
|
-
// comes from `--wui-modal-max-width` (sm 360, md 480, lg 640), set on the shell by the script.
|
|
58
|
+
// comes from `--wui-modal-max-width` (sm 360, md 480, lg 640, xl 720), set on the shell by the script.
|
|
59
59
|
.modal.wui-modal-shell.wui-remote-drawer {
|
|
60
60
|
justify-content: flex-end;
|
|
61
61
|
align-items: stretch;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// AppNavList / <app-nav-list>: a page-level rail of links with icons or dots, counts and a tinted current row.
|
|
2
|
+
// The current row is tinted by the primary soft fill and its text takes the AA primary text colour. Every colour is a theme token.
|
|
3
|
+
//
|
|
4
|
+
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
5
|
+
|
|
6
|
+
.wui-nav-list {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
gap: var(--wui-space-xxs);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.wui-nav-list-item {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: var(--wui-space-sm);
|
|
16
|
+
width: 100%;
|
|
17
|
+
min-height: 40px;
|
|
18
|
+
padding: var(--wui-space-xs) var(--wui-space-sm);
|
|
19
|
+
border: 0;
|
|
20
|
+
border-radius: var(--wui-radius-lg);
|
|
21
|
+
background: none;
|
|
22
|
+
color: var(--color-text);
|
|
23
|
+
font: inherit;
|
|
24
|
+
font-size: var(--wui-fs-sm);
|
|
25
|
+
text-align: start;
|
|
26
|
+
text-decoration: none;
|
|
27
|
+
|
|
28
|
+
&:hover {
|
|
29
|
+
background: var(--color-bg-muted);
|
|
30
|
+
}
|
|
31
|
+
&:focus-visible {
|
|
32
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
33
|
+
outline-offset: 1px;
|
|
34
|
+
}
|
|
35
|
+
&.is-active {
|
|
36
|
+
background: var(--color-primary-soft);
|
|
37
|
+
color: var(--color-primary-text);
|
|
38
|
+
font-weight: var(--wui-fw-medium);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.wui-nav-list-icon {
|
|
43
|
+
flex: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.wui-nav-list-label {
|
|
47
|
+
flex: 1;
|
|
48
|
+
min-width: 0;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
text-overflow: ellipsis;
|
|
51
|
+
white-space: nowrap;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.wui-nav-list-dot {
|
|
55
|
+
flex: none;
|
|
56
|
+
width: 10px;
|
|
57
|
+
height: 10px;
|
|
58
|
+
border-radius: 50%;
|
|
59
|
+
background: var(--color-text-subtle);
|
|
60
|
+
|
|
61
|
+
&.tone-primary {
|
|
62
|
+
background: var(--color-primary);
|
|
63
|
+
}
|
|
64
|
+
&.tone-info {
|
|
65
|
+
background: var(--color-info);
|
|
66
|
+
}
|
|
67
|
+
&.tone-success {
|
|
68
|
+
background: var(--color-success);
|
|
69
|
+
}
|
|
70
|
+
&.tone-warning {
|
|
71
|
+
background: var(--color-warning);
|
|
72
|
+
}
|
|
73
|
+
&.tone-danger {
|
|
74
|
+
background: var(--color-danger);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.wui-nav-list-count {
|
|
79
|
+
margin-inline-start: auto;
|
|
80
|
+
color: var(--color-text-subtle);
|
|
81
|
+
font-size: var(--wui-fs-xs);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.wui-nav-list-divider {
|
|
85
|
+
height: 0;
|
|
86
|
+
margin: var(--wui-space-xs) var(--wui-space-xxs);
|
|
87
|
+
border: 0;
|
|
88
|
+
border-top: 1px solid var(--color-border);
|
|
89
|
+
opacity: 1;
|
|
90
|
+
}
|
package/scss/wui/_overlays.scss
CHANGED
|
@@ -34,6 +34,13 @@
|
|
|
34
34
|
z-index: var(--wui-z-modal);
|
|
35
35
|
padding: 20px;
|
|
36
36
|
}
|
|
37
|
+
// A dialog opened over a side panel (drawer or offcanvas) sits above it and its dim layer.
|
|
38
|
+
.modal.wui-modal-stacked {
|
|
39
|
+
z-index: calc(var(--bs-modal-zindex, 1055) + 10);
|
|
40
|
+
}
|
|
41
|
+
.modal-backdrop.wui-modal-backdrop-stacked {
|
|
42
|
+
z-index: calc(var(--bs-modal-zindex, 1055) + 9);
|
|
43
|
+
}
|
|
37
44
|
// `display: flex` ONLY while the dialog is actually open.
|
|
38
45
|
//
|
|
39
46
|
// This was `display: flex !important` on the rule above, which beat Bootstrap's
|
|
@@ -143,6 +150,14 @@
|
|
|
143
150
|
.wui-modal-headtext {
|
|
144
151
|
min-width: 0;
|
|
145
152
|
}
|
|
153
|
+
// Actions beside the title sit before the close button, pushed to the trailing edge.
|
|
154
|
+
.wui-modal-header-actions {
|
|
155
|
+
display: flex;
|
|
156
|
+
align-items: center;
|
|
157
|
+
gap: var(--wui-space-xs);
|
|
158
|
+
flex-wrap: wrap;
|
|
159
|
+
margin-inline-start: auto;
|
|
160
|
+
}
|
|
146
161
|
.wui-modal-headicon {
|
|
147
162
|
display: inline-flex;
|
|
148
163
|
align-items: center;
|
|
@@ -490,6 +505,18 @@
|
|
|
490
505
|
.wui-confirm-actions .btn {
|
|
491
506
|
flex: 1;
|
|
492
507
|
}
|
|
508
|
+
// Plain confirm: text reads from the start edge, and its small buttons keep their natural width,
|
|
509
|
+
// right-aligned, instead of sharing the row.
|
|
510
|
+
.wui-confirm-plain .wui-confirm-content {
|
|
511
|
+
align-items: flex-start;
|
|
512
|
+
text-align: start;
|
|
513
|
+
}
|
|
514
|
+
.wui-confirm-plain .wui-confirm-actions {
|
|
515
|
+
justify-content: flex-end;
|
|
516
|
+
}
|
|
517
|
+
.wui-confirm-plain .wui-confirm-actions .btn {
|
|
518
|
+
flex: none;
|
|
519
|
+
}
|
|
493
520
|
|
|
494
521
|
// ── Tooltip ──
|
|
495
522
|
// Both surfaces render Bootstrap's .tooltip / .tooltip-inner (React via react-bootstrap
|
package/scss/wui/_sortable.scss
CHANGED
|
@@ -40,6 +40,12 @@ wui-sortable[disabled] .wui-sortable-item,
|
|
|
40
40
|
.wui-sortable-item[data-disabled] {
|
|
41
41
|
color: var(--color-text-muted);
|
|
42
42
|
}
|
|
43
|
+
wui-sortable[borderless] .wui-sortable-item {
|
|
44
|
+
border-color: transparent;
|
|
45
|
+
background: transparent;
|
|
46
|
+
padding: 0;
|
|
47
|
+
box-shadow: none;
|
|
48
|
+
}
|
|
43
49
|
|
|
44
50
|
.wui-sortable-handle {
|
|
45
51
|
display: grid;
|
|
@@ -79,6 +85,27 @@ wui-sortable[disabled] .wui-sortable-item,
|
|
|
79
85
|
color: var(--color-text-subtle);
|
|
80
86
|
}
|
|
81
87
|
|
|
88
|
+
// The gutter keeps the handle's space whether or not it shows, so showing it moves nothing.
|
|
89
|
+
wui-sortable[handle-display="hover"] {
|
|
90
|
+
padding-inline-start: var(--wui-space-lg);
|
|
91
|
+
}
|
|
92
|
+
wui-sortable[handle-display="hover"] .wui-sortable-handle {
|
|
93
|
+
margin-inline-start: calc(-1 * var(--wui-space-lg));
|
|
94
|
+
}
|
|
95
|
+
wui-sortable[handle-display="hover"] .wui-sortable-handle {
|
|
96
|
+
opacity: 0;
|
|
97
|
+
}
|
|
98
|
+
wui-sortable[handle-display="hover"] .wui-sortable-item:hover .wui-sortable-handle,
|
|
99
|
+
wui-sortable[handle-display="hover"] .wui-sortable-handle:focus-visible,
|
|
100
|
+
wui-sortable[handle-display="hover"] .wui-sortable-handle[aria-pressed="true"] {
|
|
101
|
+
opacity: 1;
|
|
102
|
+
}
|
|
103
|
+
@media (hover: none) {
|
|
104
|
+
wui-sortable[handle-display="hover"] .wui-sortable-handle {
|
|
105
|
+
opacity: 1;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
82
109
|
.wui-sortable-body {
|
|
83
110
|
flex: 1 1 auto;
|
|
84
111
|
// Lets long content wrap instead of widening the list past a 375px phone.
|
package/scss/wui/_utilities.scss
CHANGED
|
@@ -273,6 +273,16 @@
|
|
|
273
273
|
color: var(--color-text-muted);
|
|
274
274
|
margin-top: 2px;
|
|
275
275
|
}
|
|
276
|
+
.wui-page-header-subtitle-inline .page-titlebar {
|
|
277
|
+
align-items: baseline;
|
|
278
|
+
flex-wrap: wrap;
|
|
279
|
+
column-gap: var(--wui-space-sm);
|
|
280
|
+
}
|
|
281
|
+
.wui-page-header-subtitle-inline .page-subtitle {
|
|
282
|
+
margin: 0;
|
|
283
|
+
font-size: var(--wui-fs-sm);
|
|
284
|
+
color: var(--color-text-subtle);
|
|
285
|
+
}
|
|
276
286
|
.page-actions {
|
|
277
287
|
display: flex;
|
|
278
288
|
gap: 8px;
|