@webority/theme 0.53.1 → 0.55.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 +354 -3
- package/dist/webority-theme.css +1 -1
- package/package.json +2 -1
- package/scss/_components.scss +27 -4
- package/scss/_marketing.scss +5 -0
- package/scss/_variables.scss +5 -4
- package/scss/_wui-aliases.scss +14 -0
- package/scss/_wui-components.scss +29 -0
- package/scss/wui/_avatar-picker.scss +1 -1
- package/scss/wui/_calendar.scss +5 -5
- package/scss/wui/_card.scss +2 -2
- package/scss/wui/_carousel.scss +182 -0
- package/scss/wui/_chart.scss +2 -2
- package/scss/wui/_choice.scss +88 -8
- package/scss/wui/_code-block.scss +138 -0
- package/scss/wui/_command-palette.scss +99 -1
- package/scss/wui/_comment-thread.scss +268 -0
- package/scss/wui/_context-menu.scss +2 -2
- package/scss/wui/_controls.scss +14 -12
- package/scss/wui/_data.scss +407 -14
- package/scss/wui/_disclosure.scss +2 -2
- package/scss/wui/_display.scss +13 -9
- package/scss/wui/_dock.scss +2 -2
- package/scss/wui/_drawer.scss +198 -0
- package/scss/wui/_file-viewer.scss +6 -6
- package/scss/wui/_groups.scss +111 -0
- package/scss/wui/_hover-card.scss +55 -0
- package/scss/wui/_illustration.scss +76 -0
- package/scss/wui/_image-crop.scss +6 -6
- package/scss/wui/_inline-edit.scss +131 -0
- package/scss/wui/_interaction.scss +286 -0
- package/scss/wui/_kanban.scss +6 -6
- package/scss/wui/_lightbox.scss +169 -0
- package/scss/wui/_media.scss +8 -5
- package/scss/wui/_mention-input.scss +88 -0
- package/scss/wui/_menubar.scss +110 -0
- package/scss/wui/_navigation-menu.scss +172 -0
- package/scss/wui/_navigation.scss +109 -6
- package/scss/wui/_notification-center.scss +251 -0
- package/scss/wui/_onboarding-checklist.scss +199 -0
- package/scss/wui/_overlays.scss +7 -11
- package/scss/wui/_rating.scss +87 -0
- package/scss/wui/_record-pager.scss +27 -0
- package/scss/wui/_relative-time.scss +10 -0
- package/scss/wui/_resizable.scss +98 -0
- package/scss/wui/_rich-text.scss +2 -2
- package/scss/wui/_rolling-number.scss +60 -0
- package/scss/wui/_sections.scss +315 -0
- package/scss/wui/_shell-parts.scss +12 -3
- package/scss/wui/_shell.scss +6 -6
- package/scss/wui/_shortcuts.scss +143 -0
- package/scss/wui/_show-more.scss +30 -0
- package/scss/wui/_sortable.scss +2 -2
- package/scss/wui/_split-view.scss +321 -0
- package/scss/wui/_toolbar.scss +4 -4
- package/scss/wui/_tour.scss +14 -93
- package/scss/wui/_tree.scss +2 -2
- package/scss/wui/_truncate.scss +32 -0
- package/scss/wui/_typography.scss +14 -0
- package/scss/wui/_utilities.scss +8 -8
- package/scss/wui/_whats-new.scss +147 -0
- package/scss/wui/_workspace.scss +2 -2
- package/scss/wui/tour/_advance.scss +67 -0
- package/scss/wui/tour/_base.scss +82 -0
- package/scss/wui/tour/_end.scss +82 -0
- package/scss/wui/tour/_media.scss +54 -0
- package/scss/wui/tour/_motion.scss +133 -0
- package/scss/wui/tour/_placement.scss +65 -0
- package/scss/wui/tour/_progress.scss +26 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
// ── Split view ──
|
|
2
|
+
// AppSplitView / <app-split-view>: a list beside a reading pane. Mobile-first: one screen at a
|
|
3
|
+
// time (the list, or the pane once an item is open, `.wui-split-reading`) until the tier in
|
|
4
|
+
// `data-stack-below`, then both side by side on the 12-column split in `data-list-width`. Each
|
|
5
|
+
// column scrolls on its own inside the height cap, so the list keeps its place while the pane
|
|
6
|
+
// scrolls.
|
|
7
|
+
//
|
|
8
|
+
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
9
|
+
|
|
10
|
+
.wui-split-view {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: grid;
|
|
13
|
+
grid-template-columns: minmax(0, 1fr);
|
|
14
|
+
grid-template-rows: minmax(0, 1fr);
|
|
15
|
+
height: var(--wui-split-height, min(760px, calc(100dvh - 12rem)));
|
|
16
|
+
min-height: 320px;
|
|
17
|
+
border: 1px solid var(--color-border);
|
|
18
|
+
border-radius: var(--wui-radius);
|
|
19
|
+
corner-shape: squircle;
|
|
20
|
+
background: var(--color-surface);
|
|
21
|
+
color: var(--color-text);
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@for $n from 3 through 8 {
|
|
26
|
+
.wui-split-view[data-list-width="#{$n}"] {
|
|
27
|
+
--wui-split-list-fr: #{$n}fr;
|
|
28
|
+
--wui-split-pane-fr: #{12 - $n}fr;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.wui-split-list,
|
|
33
|
+
.wui-split-pane {
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
min-width: 0;
|
|
36
|
+
min-height: 0;
|
|
37
|
+
}
|
|
38
|
+
.wui-split-list {
|
|
39
|
+
display: flex;
|
|
40
|
+
}
|
|
41
|
+
.wui-split-pane {
|
|
42
|
+
display: none;
|
|
43
|
+
}
|
|
44
|
+
.wui-split-view.wui-split-reading > .wui-split-list {
|
|
45
|
+
display: none;
|
|
46
|
+
}
|
|
47
|
+
.wui-split-view.wui-split-reading > .wui-split-pane {
|
|
48
|
+
display: flex;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Side by side from the stack tier up. The legend only shows here: a phone has no keyboard to
|
|
52
|
+
// press J or K on.
|
|
53
|
+
@each $tier in sm, md, lg, xl, xxl {
|
|
54
|
+
@include media-breakpoint-up($tier) {
|
|
55
|
+
.wui-split-view[data-stack-below="#{$tier}"] {
|
|
56
|
+
grid-template-columns: minmax(0, var(--wui-split-list-fr, 5fr)) minmax(0, var(--wui-split-pane-fr, 7fr));
|
|
57
|
+
}
|
|
58
|
+
.wui-split-view[data-stack-below="#{$tier}"] > .wui-split-list {
|
|
59
|
+
display: flex;
|
|
60
|
+
border-right: 1px solid var(--color-border);
|
|
61
|
+
}
|
|
62
|
+
.wui-split-view[data-stack-below="#{$tier}"] > .wui-split-pane {
|
|
63
|
+
display: flex;
|
|
64
|
+
}
|
|
65
|
+
.wui-split-view[data-stack-below="#{$tier}"] .wui-split-legend {
|
|
66
|
+
display: flex;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// The list header, swapped for the bulk bar while items are ticked (as the table toolbar does).
|
|
72
|
+
.wui-split-head {
|
|
73
|
+
display: flex;
|
|
74
|
+
flex: none;
|
|
75
|
+
align-items: center;
|
|
76
|
+
gap: 12px;
|
|
77
|
+
min-height: 52px;
|
|
78
|
+
padding: 8px 16px;
|
|
79
|
+
border-bottom: 1px solid var(--color-border);
|
|
80
|
+
}
|
|
81
|
+
.wui-split-head-main,
|
|
82
|
+
.wui-split-head-bulk {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex: 1 1 auto;
|
|
85
|
+
flex-wrap: wrap;
|
|
86
|
+
align-items: center;
|
|
87
|
+
gap: 8px;
|
|
88
|
+
min-width: 0;
|
|
89
|
+
}
|
|
90
|
+
.wui-split-head-bulk {
|
|
91
|
+
min-height: 36px;
|
|
92
|
+
padding: 2px 8px 2px 12px;
|
|
93
|
+
border-radius: var(--radius);
|
|
94
|
+
background: var(--color-primary-soft);
|
|
95
|
+
}
|
|
96
|
+
.wui-split-head-main[hidden],
|
|
97
|
+
.wui-split-head-bulk[hidden] {
|
|
98
|
+
display: none;
|
|
99
|
+
}
|
|
100
|
+
.wui-split-all {
|
|
101
|
+
flex: none;
|
|
102
|
+
}
|
|
103
|
+
.wui-split-count {
|
|
104
|
+
margin-right: 4px;
|
|
105
|
+
font-size: 13px;
|
|
106
|
+
font-weight: 600;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.wui-split-chips {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex: none;
|
|
112
|
+
flex-wrap: wrap;
|
|
113
|
+
align-items: center;
|
|
114
|
+
gap: 6px;
|
|
115
|
+
padding: 8px 16px;
|
|
116
|
+
border-bottom: 1px solid var(--color-border);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.wui-split-items {
|
|
120
|
+
flex: 1 1 auto;
|
|
121
|
+
min-height: 0;
|
|
122
|
+
margin: 0;
|
|
123
|
+
padding: 0;
|
|
124
|
+
list-style: none;
|
|
125
|
+
overflow-y: auto;
|
|
126
|
+
overscroll-behavior: contain;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.wui-split-item {
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: flex-start;
|
|
132
|
+
border-bottom: 1px solid var(--color-border-light);
|
|
133
|
+
}
|
|
134
|
+
.wui-split-item:hover {
|
|
135
|
+
background: var(--color-bg-muted);
|
|
136
|
+
}
|
|
137
|
+
.wui-split-item.is-selected {
|
|
138
|
+
background: var(--color-primary-soft);
|
|
139
|
+
}
|
|
140
|
+
// The open item: the same subtle primary background as the open row of a ledger table
|
|
141
|
+
// (`.wui-row-active`). Declared after is-selected so an item both open and ticked reads as open.
|
|
142
|
+
.wui-split-item.is-active,
|
|
143
|
+
.wui-split-item.is-active:hover {
|
|
144
|
+
background: var(--bs-primary-bg-subtle);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.wui-split-check {
|
|
148
|
+
flex: none;
|
|
149
|
+
margin: 15px 0 0 16px;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.wui-split-link {
|
|
153
|
+
display: flex;
|
|
154
|
+
flex: 1 1 auto;
|
|
155
|
+
align-items: flex-start;
|
|
156
|
+
gap: 12px;
|
|
157
|
+
min-width: 0;
|
|
158
|
+
padding: 12px 16px;
|
|
159
|
+
border: 0;
|
|
160
|
+
background: transparent;
|
|
161
|
+
color: inherit;
|
|
162
|
+
font: inherit;
|
|
163
|
+
text-align: start;
|
|
164
|
+
text-decoration: none;
|
|
165
|
+
cursor: pointer;
|
|
166
|
+
}
|
|
167
|
+
.wui-split-check + .wui-split-link {
|
|
168
|
+
padding-left: 10px;
|
|
169
|
+
}
|
|
170
|
+
.wui-split-link:hover {
|
|
171
|
+
color: inherit;
|
|
172
|
+
}
|
|
173
|
+
.wui-split-link:focus-visible {
|
|
174
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
175
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.wui-split-item-main {
|
|
179
|
+
display: flex;
|
|
180
|
+
flex: 1 1 auto;
|
|
181
|
+
flex-direction: column;
|
|
182
|
+
gap: 2px;
|
|
183
|
+
min-width: 0;
|
|
184
|
+
}
|
|
185
|
+
.wui-split-item-title {
|
|
186
|
+
overflow: hidden;
|
|
187
|
+
color: var(--color-text);
|
|
188
|
+
font-weight: 600;
|
|
189
|
+
text-overflow: ellipsis;
|
|
190
|
+
white-space: nowrap;
|
|
191
|
+
}
|
|
192
|
+
.wui-split-item-meta {
|
|
193
|
+
display: -webkit-box;
|
|
194
|
+
overflow: hidden;
|
|
195
|
+
color: var(--color-text-muted);
|
|
196
|
+
font-size: 13px;
|
|
197
|
+
overflow-wrap: anywhere;
|
|
198
|
+
-webkit-box-orient: vertical;
|
|
199
|
+
-webkit-line-clamp: 2;
|
|
200
|
+
}
|
|
201
|
+
.wui-split-item-end {
|
|
202
|
+
display: flex;
|
|
203
|
+
flex: none;
|
|
204
|
+
flex-direction: column;
|
|
205
|
+
align-items: flex-end;
|
|
206
|
+
gap: 6px;
|
|
207
|
+
color: var(--color-text-subtle);
|
|
208
|
+
font-size: 12px;
|
|
209
|
+
white-space: nowrap;
|
|
210
|
+
}
|
|
211
|
+
// The subtle grey clears AA on the plain surface only; on a tinted item it is the muted grey.
|
|
212
|
+
.wui-split-item:is(:hover, .is-selected, .is-active) .wui-split-item-end {
|
|
213
|
+
color: var(--color-text-muted);
|
|
214
|
+
}
|
|
215
|
+
.wui-split-badge {
|
|
216
|
+
min-width: 20px;
|
|
217
|
+
padding: 1px 7px;
|
|
218
|
+
border-radius: 999px;
|
|
219
|
+
background: var(--color-primary-soft);
|
|
220
|
+
color: var(--color-primary-ink);
|
|
221
|
+
font-size: 11px;
|
|
222
|
+
font-weight: 600;
|
|
223
|
+
line-height: 18px;
|
|
224
|
+
text-align: center;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.wui-split-empty {
|
|
228
|
+
display: grid;
|
|
229
|
+
flex: 1 1 auto;
|
|
230
|
+
place-items: center;
|
|
231
|
+
padding: 32px 16px;
|
|
232
|
+
color: var(--color-text-muted);
|
|
233
|
+
text-align: center;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.wui-split-skeleton {
|
|
237
|
+
display: flex;
|
|
238
|
+
flex-direction: column;
|
|
239
|
+
gap: 8px;
|
|
240
|
+
padding: 14px 16px;
|
|
241
|
+
border-bottom: 1px solid var(--color-border-light);
|
|
242
|
+
}
|
|
243
|
+
.wui-split-skeleton-title,
|
|
244
|
+
.wui-split-skeleton-meta {
|
|
245
|
+
display: block;
|
|
246
|
+
height: 12px;
|
|
247
|
+
border-radius: 6px;
|
|
248
|
+
}
|
|
249
|
+
.wui-split-skeleton-title {
|
|
250
|
+
width: 60%;
|
|
251
|
+
}
|
|
252
|
+
.wui-split-skeleton-meta {
|
|
253
|
+
width: 85%;
|
|
254
|
+
height: 10px;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// The hints and the shortcut legend (AppShortcutLegend) under the list. The legend's sheet opens
|
|
258
|
+
// over the list, anchored to this footer rather than to its own button.
|
|
259
|
+
.wui-split-legend {
|
|
260
|
+
position: relative;
|
|
261
|
+
display: none;
|
|
262
|
+
flex: none;
|
|
263
|
+
flex-wrap: wrap;
|
|
264
|
+
align-items: center;
|
|
265
|
+
gap: 4px 14px;
|
|
266
|
+
padding: 8px 16px;
|
|
267
|
+
border-top: 1px solid var(--color-border);
|
|
268
|
+
color: var(--color-text-muted);
|
|
269
|
+
font-size: 12px;
|
|
270
|
+
}
|
|
271
|
+
.wui-split-legend > .wui-shortcut-legend {
|
|
272
|
+
position: static;
|
|
273
|
+
margin-left: auto;
|
|
274
|
+
}
|
|
275
|
+
.wui-split-legend .wui-shortcut-sheet {
|
|
276
|
+
right: auto;
|
|
277
|
+
left: 8px;
|
|
278
|
+
width: min(320px, calc(100% - 16px));
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.wui-split-pane-head {
|
|
282
|
+
display: flex;
|
|
283
|
+
flex: none;
|
|
284
|
+
flex-wrap: wrap;
|
|
285
|
+
align-items: center;
|
|
286
|
+
gap: 8px;
|
|
287
|
+
min-height: 52px;
|
|
288
|
+
padding: 8px 20px;
|
|
289
|
+
border-bottom: 1px solid var(--color-border);
|
|
290
|
+
}
|
|
291
|
+
.wui-split-pane-head > .wui-record-pager {
|
|
292
|
+
margin-left: auto;
|
|
293
|
+
}
|
|
294
|
+
.wui-split-pane-body {
|
|
295
|
+
flex: 1 1 auto;
|
|
296
|
+
min-height: 0;
|
|
297
|
+
padding: 20px;
|
|
298
|
+
overflow-y: auto;
|
|
299
|
+
overscroll-behavior: contain;
|
|
300
|
+
}
|
|
301
|
+
.wui-split-pane-body:focus-visible {
|
|
302
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
303
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
304
|
+
}
|
|
305
|
+
// While a Razor pane fetches the next item, the old one stays in place, dimmed.
|
|
306
|
+
.wui-split-pane.is-loading .wui-split-pane-body {
|
|
307
|
+
opacity: 0.55;
|
|
308
|
+
pointer-events: none;
|
|
309
|
+
}
|
|
310
|
+
.wui-split-pane-error {
|
|
311
|
+
padding: 32px 16px;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
315
|
+
.wui-split-item,
|
|
316
|
+
.wui-split-pane-body {
|
|
317
|
+
transition:
|
|
318
|
+
background-color 0.12s ease,
|
|
319
|
+
opacity 0.12s ease;
|
|
320
|
+
}
|
|
321
|
+
}
|
package/scss/wui/_toolbar.scss
CHANGED
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
cursor: default;
|
|
49
49
|
}
|
|
50
50
|
.toolbar-item:has(.toolbar-input:focus-visible) {
|
|
51
|
-
outline:
|
|
52
|
-
outline-offset:
|
|
51
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
52
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
// Visually hidden but focusable/announceable — same trick as .segmented-input.
|
|
@@ -121,8 +121,8 @@
|
|
|
121
121
|
color: var(--color-text);
|
|
122
122
|
}
|
|
123
123
|
.toolbar-action:focus-visible {
|
|
124
|
-
outline:
|
|
125
|
-
outline-offset:
|
|
124
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
125
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
126
126
|
}
|
|
127
127
|
.toolbar-action:disabled {
|
|
128
128
|
opacity: 0.5;
|
package/scss/wui/_tour.scss
CHANGED
|
@@ -1,97 +1,18 @@
|
|
|
1
1
|
// ── Product tour ──
|
|
2
|
-
// AppTour / <app-tour> / <wui-tour
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
2
|
+
// AppTour / <app-tour> / <wui-tour>. The one entry for every tour rule: the partials under
|
|
3
|
+
// wui/tour/ hold one concern each, matching the element's modules (tourMotion.js, tourProgress.js,
|
|
4
|
+
// tourPlacement.js, tourMedia.js, tourAdvance.js, tourEnd.js). Nothing else imports them, so the
|
|
5
|
+
// tour's styles move as a whole by moving this one import.
|
|
6
|
+
//
|
|
7
|
+
// Isolated tours carry a sealed copy of every .wui-tour-* rule (packages/elements/src/tourIsolated.js),
|
|
8
|
+
// and a test pins that copy to the compiled theme.
|
|
7
9
|
//
|
|
8
10
|
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
position: fixed;
|
|
18
|
-
inset: 0;
|
|
19
|
-
z-index: var(--wui-z-tour);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// The dim is the spot's own shadow, so the hole around the target needs no clip-path.
|
|
23
|
-
.wui-tour-spot {
|
|
24
|
-
position: fixed;
|
|
25
|
-
border-radius: var(--wui-radius-sm);
|
|
26
|
-
box-shadow:
|
|
27
|
-
0 0 0 2px var(--color-primary),
|
|
28
|
-
0 0 0 100vmax var(--color-scrim-strong);
|
|
29
|
-
pointer-events: none;
|
|
30
|
-
}
|
|
31
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
32
|
-
.wui-tour-spot {
|
|
33
|
-
transition:
|
|
34
|
-
top 160ms ease,
|
|
35
|
-
left 160ms ease,
|
|
36
|
-
width 160ms ease,
|
|
37
|
-
height 160ms ease;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.wui-tour-card {
|
|
42
|
-
display: flex;
|
|
43
|
-
flex-direction: column;
|
|
44
|
-
gap: 8px;
|
|
45
|
-
width: min(360px, calc(100vw - 16px));
|
|
46
|
-
padding: 16px;
|
|
47
|
-
overflow-y: auto;
|
|
48
|
-
background: var(--color-surface);
|
|
49
|
-
color: var(--color-text);
|
|
50
|
-
border: 1px solid var(--color-border);
|
|
51
|
-
border-radius: var(--wui-radius-lg);
|
|
52
|
-
corner-shape: squircle;
|
|
53
|
-
box-shadow: var(--wui-shadow-overlay);
|
|
54
|
-
&:focus {
|
|
55
|
-
outline: none;
|
|
56
|
-
}
|
|
57
|
-
&:focus-visible {
|
|
58
|
-
outline: 2px solid var(--color-primary);
|
|
59
|
-
outline-offset: 2px;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.wui-tour-position {
|
|
64
|
-
margin: 0;
|
|
65
|
-
font-size: 12px;
|
|
66
|
-
color: var(--color-text-muted);
|
|
67
|
-
}
|
|
68
|
-
.wui-tour-title {
|
|
69
|
-
margin: 0;
|
|
70
|
-
font-size: 16px;
|
|
71
|
-
font-weight: 600;
|
|
72
|
-
}
|
|
73
|
-
.wui-tour-text {
|
|
74
|
-
margin: 0;
|
|
75
|
-
font-size: 14px;
|
|
76
|
-
color: var(--color-text-muted);
|
|
77
|
-
}
|
|
78
|
-
.wui-tour-actions {
|
|
79
|
-
display: flex;
|
|
80
|
-
align-items: center;
|
|
81
|
-
justify-content: space-between;
|
|
82
|
-
gap: 8px;
|
|
83
|
-
margin-top: 4px;
|
|
84
|
-
}
|
|
85
|
-
.wui-tour-nav {
|
|
86
|
-
display: flex;
|
|
87
|
-
gap: 8px;
|
|
88
|
-
}
|
|
89
|
-
// The buttons keep Bootstrap's look; the width stops the label change between Next and Done from
|
|
90
|
-
// moving the row, and Skip reads as the quiet action.
|
|
91
|
-
.wui-tour-skip {
|
|
92
|
-
color: var(--color-text-muted);
|
|
93
|
-
}
|
|
94
|
-
.wui-tour-back,
|
|
95
|
-
.wui-tour-next {
|
|
96
|
-
min-width: 64px;
|
|
97
|
-
}
|
|
12
|
+
@import "tour/base";
|
|
13
|
+
@import "tour/motion";
|
|
14
|
+
@import "tour/progress";
|
|
15
|
+
@import "tour/placement";
|
|
16
|
+
@import "tour/media";
|
|
17
|
+
@import "tour/advance";
|
|
18
|
+
@import "tour/end";
|
package/scss/wui/_tree.scss
CHANGED
|
@@ -50,8 +50,8 @@ wui-tree {
|
|
|
50
50
|
}
|
|
51
51
|
// The item holds the focus, but it also holds its subtree, so the ring goes on its own row.
|
|
52
52
|
.wui-tree-item:focus-visible > .wui-tree-row {
|
|
53
|
-
outline:
|
|
54
|
-
outline-offset: -
|
|
53
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
54
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
55
55
|
}
|
|
56
56
|
.wui-tree-row-error .wui-tree-label {
|
|
57
57
|
color: var(--color-danger);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// ── Truncate ──
|
|
2
|
+
// AppTruncate / <app-truncate> (a <wui-truncate> element): text cut with an ellipsis by width or by
|
|
3
|
+
// line count. The element sets data-wui-tip (drawn by the CSS tooltip in _overlays.scss) on itself,
|
|
4
|
+
// not on the clipped span, because the span's overflow:hidden would clip the bubble.
|
|
5
|
+
//
|
|
6
|
+
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
7
|
+
|
|
8
|
+
.wui-truncate {
|
|
9
|
+
display: block;
|
|
10
|
+
min-width: 0;
|
|
11
|
+
max-width: var(--wui-truncate-width, 100%);
|
|
12
|
+
}
|
|
13
|
+
.wui-truncate-text {
|
|
14
|
+
display: block;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
text-overflow: ellipsis;
|
|
17
|
+
white-space: nowrap;
|
|
18
|
+
}
|
|
19
|
+
.wui-truncate-multi .wui-truncate-text {
|
|
20
|
+
display: -webkit-box;
|
|
21
|
+
-webkit-box-orient: vertical;
|
|
22
|
+
-webkit-line-clamp: var(--wui-truncate-lines, 2);
|
|
23
|
+
line-clamp: var(--wui-truncate-lines, 2);
|
|
24
|
+
white-space: normal;
|
|
25
|
+
overflow-wrap: anywhere;
|
|
26
|
+
}
|
|
27
|
+
// Focusable only while the text is cut (the element adds tabindex then).
|
|
28
|
+
.wui-truncate[tabindex]:focus-visible {
|
|
29
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
30
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
31
|
+
border-radius: 4px;
|
|
32
|
+
}
|
|
@@ -40,6 +40,20 @@
|
|
|
40
40
|
line-height: 1.15;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/* ── Chip group: a row of chips that wraps, or (overflow="menu") moves the extras into a More menu ── */
|
|
44
|
+
.wui-chip-group {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-wrap: wrap;
|
|
47
|
+
align-items: center;
|
|
48
|
+
gap: 6px;
|
|
49
|
+
}
|
|
50
|
+
.wui-chip-group-nowrap {
|
|
51
|
+
flex-wrap: nowrap;
|
|
52
|
+
}
|
|
53
|
+
.wui-chip-group-nowrap > * {
|
|
54
|
+
flex: none;
|
|
55
|
+
}
|
|
56
|
+
|
|
43
57
|
/* ── Chip (token / tag) ── */
|
|
44
58
|
.chip {
|
|
45
59
|
display: inline-flex;
|
package/scss/wui/_utilities.scss
CHANGED
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
}
|
|
89
89
|
.infotip-btn:focus-visible {
|
|
90
90
|
color: var(--color-primary-ink);
|
|
91
|
-
outline:
|
|
92
|
-
outline-offset:
|
|
91
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
92
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
93
93
|
}
|
|
94
94
|
.infotip-pop {
|
|
95
95
|
position: absolute;
|
|
@@ -420,8 +420,8 @@
|
|
|
420
420
|
cursor: pointer;
|
|
421
421
|
}
|
|
422
422
|
.wui-dropdown-trigger:focus-visible {
|
|
423
|
-
outline:
|
|
424
|
-
outline-offset:
|
|
423
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
424
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
425
425
|
border-radius: var(--radius-sm);
|
|
426
426
|
}
|
|
427
427
|
|
|
@@ -583,8 +583,8 @@
|
|
|
583
583
|
opacity: 1;
|
|
584
584
|
}
|
|
585
585
|
.wui-banner-dismiss:focus-visible {
|
|
586
|
-
outline:
|
|
587
|
-
outline-offset:
|
|
586
|
+
outline: var(--wui-focus-ring-width) solid currentColor;
|
|
587
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
588
588
|
}
|
|
589
589
|
.wui-banner-info {
|
|
590
590
|
background: var(--color-info-soft);
|
|
@@ -1059,8 +1059,8 @@
|
|
|
1059
1059
|
box-shadow: none;
|
|
1060
1060
|
}
|
|
1061
1061
|
.alert .btn-close:focus-visible {
|
|
1062
|
-
outline:
|
|
1063
|
-
outline-offset:
|
|
1062
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
1063
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
1064
1064
|
}
|
|
1065
1065
|
|
|
1066
1066
|
// ============================================================================
|