@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,315 @@
|
|
|
1
|
+
// ── Section kit ──
|
|
2
|
+
// AppSection* / <app-section-*>: the hero, features, logos, testimonials, pricing, FAQ and call to
|
|
3
|
+
// action sections of a public page. One frame for all seven:
|
|
4
|
+
// <section class="wui-section wui-section-{kind}">
|
|
5
|
+
// <div class="wui-section-inner">
|
|
6
|
+
// <div class="wui-section-head">eyebrow, title, subtitle, actions</div>
|
|
7
|
+
// …the section's own body…
|
|
8
|
+
//
|
|
9
|
+
// Sections sit full width, straight inside <main>: the inner box carries the page container's
|
|
10
|
+
// width and side padding, so a section nested in another container is padded twice.
|
|
11
|
+
//
|
|
12
|
+
// No entrance animation and no opacity-0 start: every section paints in place. Every image the
|
|
13
|
+
// kit lays out keeps the box its width and height attributes reserve, so nothing moves on load.
|
|
14
|
+
//
|
|
15
|
+
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
16
|
+
|
|
17
|
+
// A section is a full-width band wherever it sits, a flex or grid parent included.
|
|
18
|
+
.wui-section {
|
|
19
|
+
width: 100%;
|
|
20
|
+
padding-block: clamp(3rem, 2rem + 4vw, 6rem);
|
|
21
|
+
color: var(--color-text);
|
|
22
|
+
}
|
|
23
|
+
.wui-section-muted {
|
|
24
|
+
background: var(--color-bg-muted);
|
|
25
|
+
}
|
|
26
|
+
.wui-section-inner {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
gap: clamp(2rem, 1.5rem + 2vw, 3.5rem);
|
|
30
|
+
width: 100%;
|
|
31
|
+
max-width: var(--wui-container-max);
|
|
32
|
+
margin-inline: auto;
|
|
33
|
+
padding-inline: var(--wui-container-pad);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// ── The heading block ──
|
|
37
|
+
.wui-section-head {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
align-items: flex-start;
|
|
41
|
+
gap: 0.75rem;
|
|
42
|
+
max-width: 48rem;
|
|
43
|
+
}
|
|
44
|
+
.wui-section-center .wui-section-head {
|
|
45
|
+
align-items: center;
|
|
46
|
+
margin-inline: auto;
|
|
47
|
+
text-align: center;
|
|
48
|
+
}
|
|
49
|
+
.wui-section-eyebrow {
|
|
50
|
+
margin: 0;
|
|
51
|
+
color: var(--color-primary-ink);
|
|
52
|
+
font-size: var(--wui-fs-sm);
|
|
53
|
+
font-weight: 600;
|
|
54
|
+
letter-spacing: 0.04em;
|
|
55
|
+
text-transform: uppercase;
|
|
56
|
+
}
|
|
57
|
+
.wui-section-title {
|
|
58
|
+
margin: 0;
|
|
59
|
+
color: var(--color-text);
|
|
60
|
+
font-family: var(--wui-font-display);
|
|
61
|
+
font-size: var(--wui-fs-3xl);
|
|
62
|
+
font-weight: 600;
|
|
63
|
+
line-height: 1.15;
|
|
64
|
+
letter-spacing: -0.02em;
|
|
65
|
+
overflow-wrap: break-word;
|
|
66
|
+
text-wrap: balance;
|
|
67
|
+
}
|
|
68
|
+
.wui-section-subtitle {
|
|
69
|
+
margin: 0;
|
|
70
|
+
color: var(--color-text-muted);
|
|
71
|
+
font-size: var(--wui-fs-lg);
|
|
72
|
+
line-height: 1.6;
|
|
73
|
+
text-wrap: pretty;
|
|
74
|
+
}
|
|
75
|
+
.wui-section-actions {
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-wrap: wrap;
|
|
78
|
+
gap: 0.75rem;
|
|
79
|
+
margin-top: 0.75rem;
|
|
80
|
+
}
|
|
81
|
+
.wui-section-center .wui-section-actions {
|
|
82
|
+
justify-content: center;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ── Media slot (hero, feature rows) ──
|
|
86
|
+
// The image fills its column at its own ratio: `height: auto` with the img's width and height
|
|
87
|
+
// attributes is what reserves the box before the file arrives.
|
|
88
|
+
.wui-section-media {
|
|
89
|
+
min-width: 0;
|
|
90
|
+
}
|
|
91
|
+
.wui-section-media img,
|
|
92
|
+
.wui-section-media picture,
|
|
93
|
+
.wui-section-media video {
|
|
94
|
+
display: block;
|
|
95
|
+
width: 100%;
|
|
96
|
+
height: auto;
|
|
97
|
+
border-radius: var(--radius-xl);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// ── Hero ──
|
|
101
|
+
.wui-section-hero .wui-section-title {
|
|
102
|
+
font-size: calc(var(--wui-fs-3xl) * 1.3);
|
|
103
|
+
line-height: 1.08;
|
|
104
|
+
}
|
|
105
|
+
@include media-breakpoint-up(lg) {
|
|
106
|
+
.wui-section-hero:not(.wui-section-center) .wui-section-inner:has(> .wui-section-media) {
|
|
107
|
+
display: grid;
|
|
108
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
109
|
+
align-items: center;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
.wui-section-hero.wui-section-center .wui-section-media {
|
|
113
|
+
width: 100%;
|
|
114
|
+
max-width: 64rem;
|
|
115
|
+
margin-inline: auto;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── Features ──
|
|
119
|
+
.wui-section-features-list,
|
|
120
|
+
.wui-section-logos-list,
|
|
121
|
+
.wui-section-testimonials-list {
|
|
122
|
+
margin: 0;
|
|
123
|
+
padding: 0;
|
|
124
|
+
list-style: none;
|
|
125
|
+
}
|
|
126
|
+
.wui-section-features-list {
|
|
127
|
+
display: grid;
|
|
128
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
|
|
129
|
+
gap: 2rem 1.5rem;
|
|
130
|
+
}
|
|
131
|
+
.wui-section-feature {
|
|
132
|
+
display: flex;
|
|
133
|
+
flex-direction: column;
|
|
134
|
+
gap: 1rem;
|
|
135
|
+
min-width: 0;
|
|
136
|
+
}
|
|
137
|
+
.wui-section-feature-body {
|
|
138
|
+
display: flex;
|
|
139
|
+
flex-direction: column;
|
|
140
|
+
gap: 0.5rem;
|
|
141
|
+
}
|
|
142
|
+
.wui-section-feature-icon {
|
|
143
|
+
display: inline-flex;
|
|
144
|
+
align-items: center;
|
|
145
|
+
justify-content: center;
|
|
146
|
+
width: 3rem;
|
|
147
|
+
height: 3rem;
|
|
148
|
+
margin-bottom: 0.5rem;
|
|
149
|
+
border-radius: var(--radius-lg);
|
|
150
|
+
background: var(--color-primary-soft);
|
|
151
|
+
color: var(--color-primary-ink);
|
|
152
|
+
}
|
|
153
|
+
.wui-section-feature-title {
|
|
154
|
+
margin: 0;
|
|
155
|
+
color: var(--color-text);
|
|
156
|
+
font-size: var(--wui-fs-lg);
|
|
157
|
+
font-weight: 600;
|
|
158
|
+
line-height: 1.3;
|
|
159
|
+
}
|
|
160
|
+
.wui-section-feature-text {
|
|
161
|
+
color: var(--color-text-muted);
|
|
162
|
+
font-size: var(--wui-fs-base);
|
|
163
|
+
line-height: 1.6;
|
|
164
|
+
}
|
|
165
|
+
.wui-section-feature-text > :last-child {
|
|
166
|
+
margin-bottom: 0;
|
|
167
|
+
}
|
|
168
|
+
// Rows: one point per row, its image beside it, the image side alternating from md up.
|
|
169
|
+
.wui-section-features-rows .wui-section-features-list {
|
|
170
|
+
grid-template-columns: minmax(0, 1fr);
|
|
171
|
+
gap: clamp(2.5rem, 2rem + 3vw, 5rem);
|
|
172
|
+
}
|
|
173
|
+
@include media-breakpoint-up(md) {
|
|
174
|
+
.wui-section-features-rows .wui-section-feature {
|
|
175
|
+
display: grid;
|
|
176
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
177
|
+
align-items: center;
|
|
178
|
+
gap: clamp(2rem, 1rem + 3vw, 4rem);
|
|
179
|
+
}
|
|
180
|
+
.wui-section-features-rows .wui-section-feature:nth-child(even) .wui-section-media {
|
|
181
|
+
order: 2;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// ── Logos ──
|
|
186
|
+
.wui-section-logos {
|
|
187
|
+
padding-block: clamp(2rem, 1.5rem + 2vw, 3.5rem);
|
|
188
|
+
}
|
|
189
|
+
.wui-section-logos .wui-section-title {
|
|
190
|
+
color: var(--color-text-muted);
|
|
191
|
+
font-family: inherit;
|
|
192
|
+
font-size: var(--wui-fs-base);
|
|
193
|
+
font-weight: 500;
|
|
194
|
+
letter-spacing: 0;
|
|
195
|
+
}
|
|
196
|
+
.wui-section-logos-list {
|
|
197
|
+
display: flex;
|
|
198
|
+
flex-wrap: wrap;
|
|
199
|
+
align-items: center;
|
|
200
|
+
gap: 1.5rem 3rem;
|
|
201
|
+
}
|
|
202
|
+
.wui-section-center .wui-section-logos-list {
|
|
203
|
+
justify-content: center;
|
|
204
|
+
}
|
|
205
|
+
.wui-section-logo a {
|
|
206
|
+
display: inline-flex;
|
|
207
|
+
border-radius: var(--radius-sm);
|
|
208
|
+
}
|
|
209
|
+
.wui-section-logo a:focus-visible {
|
|
210
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
211
|
+
outline-offset: 4px;
|
|
212
|
+
}
|
|
213
|
+
// One height for every logo; the width follows each file's own ratio from its attributes.
|
|
214
|
+
.wui-section-logo-img {
|
|
215
|
+
display: block;
|
|
216
|
+
width: auto;
|
|
217
|
+
max-width: 10rem;
|
|
218
|
+
height: 2.5rem;
|
|
219
|
+
object-fit: contain;
|
|
220
|
+
filter: grayscale(1);
|
|
221
|
+
opacity: 0.7;
|
|
222
|
+
transition:
|
|
223
|
+
filter 0.2s ease,
|
|
224
|
+
opacity 0.2s ease;
|
|
225
|
+
}
|
|
226
|
+
.wui-section-logo-img:hover,
|
|
227
|
+
.wui-section-logo a:focus-visible .wui-section-logo-img {
|
|
228
|
+
filter: none;
|
|
229
|
+
opacity: 1;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// ── Testimonials ──
|
|
233
|
+
.wui-section-testimonials-list {
|
|
234
|
+
display: grid;
|
|
235
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
|
|
236
|
+
gap: 1.5rem;
|
|
237
|
+
}
|
|
238
|
+
.wui-section-testimonial {
|
|
239
|
+
display: flex;
|
|
240
|
+
flex-direction: column;
|
|
241
|
+
justify-content: space-between;
|
|
242
|
+
gap: 1.5rem;
|
|
243
|
+
height: 100%;
|
|
244
|
+
margin: 0;
|
|
245
|
+
padding: 1.75rem;
|
|
246
|
+
border: 1px solid var(--color-border);
|
|
247
|
+
border-radius: var(--radius-xl);
|
|
248
|
+
background: var(--color-surface);
|
|
249
|
+
}
|
|
250
|
+
.wui-section-testimonial-quote {
|
|
251
|
+
margin: 0;
|
|
252
|
+
color: var(--color-text);
|
|
253
|
+
font-size: var(--wui-fs-lg);
|
|
254
|
+
line-height: 1.6;
|
|
255
|
+
}
|
|
256
|
+
.wui-section-testimonial-quote > :last-child {
|
|
257
|
+
margin-bottom: 0;
|
|
258
|
+
}
|
|
259
|
+
.wui-section-testimonial-author {
|
|
260
|
+
display: flex;
|
|
261
|
+
align-items: center;
|
|
262
|
+
gap: 0.75rem;
|
|
263
|
+
}
|
|
264
|
+
.wui-section-testimonial-avatar {
|
|
265
|
+
flex: none;
|
|
266
|
+
width: 3rem;
|
|
267
|
+
height: 3rem;
|
|
268
|
+
border-radius: 50%;
|
|
269
|
+
object-fit: cover;
|
|
270
|
+
}
|
|
271
|
+
.wui-section-testimonial-who {
|
|
272
|
+
display: flex;
|
|
273
|
+
flex-direction: column;
|
|
274
|
+
min-width: 0;
|
|
275
|
+
}
|
|
276
|
+
.wui-section-testimonial-name {
|
|
277
|
+
color: var(--color-text);
|
|
278
|
+
font-weight: 600;
|
|
279
|
+
}
|
|
280
|
+
.wui-section-testimonial-role {
|
|
281
|
+
color: var(--color-text-muted);
|
|
282
|
+
font-size: var(--wui-fs-sm);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// ── Pricing (the cards are AppPricingCard in its .plan-grid) ──
|
|
286
|
+
.wui-section-pricing .plan-grid {
|
|
287
|
+
width: 100%;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// ── FAQ (the questions are AppAccordion) ──
|
|
291
|
+
.wui-section-faq .wui-section-faq-body {
|
|
292
|
+
width: 100%;
|
|
293
|
+
max-width: 48rem;
|
|
294
|
+
}
|
|
295
|
+
.wui-section-center .wui-section-faq-body {
|
|
296
|
+
margin-inline: auto;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// ── Call to action: the heading block becomes a soft brand panel ──
|
|
300
|
+
.wui-section-call-to-action .wui-section-head {
|
|
301
|
+
width: 100%;
|
|
302
|
+
max-width: none;
|
|
303
|
+
padding: clamp(2rem, 1.5rem + 3vw, 4rem);
|
|
304
|
+
border-radius: var(--radius-xl);
|
|
305
|
+
background: var(--color-primary-soft);
|
|
306
|
+
}
|
|
307
|
+
.wui-section-call-to-action .wui-section-subtitle {
|
|
308
|
+
max-width: 40rem;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
@media (prefers-reduced-motion: reduce) {
|
|
312
|
+
.wui-section-logo-img {
|
|
313
|
+
transition: none;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
font-weight: 600;
|
|
70
70
|
}
|
|
71
71
|
.wui-tabbar-item:focus-visible {
|
|
72
|
-
outline:
|
|
72
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
73
73
|
outline-offset: -4px;
|
|
74
74
|
border-radius: var(--radius-lg);
|
|
75
75
|
}
|
|
@@ -162,8 +162,8 @@
|
|
|
162
162
|
background: var(--color-bg-muted);
|
|
163
163
|
}
|
|
164
164
|
.wui-usermenu-trigger:focus-visible {
|
|
165
|
-
outline:
|
|
166
|
-
outline-offset:
|
|
165
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
166
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
167
167
|
}
|
|
168
168
|
.wui-usermenu-text {
|
|
169
169
|
display: flex;
|
|
@@ -305,6 +305,11 @@ a.wui-bell-item:hover {
|
|
|
305
305
|
background: var(--color-bg-muted);
|
|
306
306
|
text-decoration: none;
|
|
307
307
|
}
|
|
308
|
+
// Inset: the list scrolls and its rows run edge to edge, so an outer ring would be clipped.
|
|
309
|
+
a.wui-bell-item:focus-visible {
|
|
310
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
311
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
312
|
+
}
|
|
308
313
|
.wui-bell-item:last-child {
|
|
309
314
|
border-bottom: 0;
|
|
310
315
|
}
|
|
@@ -436,6 +441,10 @@ a.wui-bell-item:hover {
|
|
|
436
441
|
color: var(--color-text);
|
|
437
442
|
text-decoration: none;
|
|
438
443
|
}
|
|
444
|
+
.wui-topsearch-hit:focus-visible {
|
|
445
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
446
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
447
|
+
}
|
|
439
448
|
.wui-topsearch-hit-icon {
|
|
440
449
|
flex: none;
|
|
441
450
|
display: inline-grid;
|
package/scss/wui/_shell.scss
CHANGED
|
@@ -407,8 +407,8 @@
|
|
|
407
407
|
font-weight: 600;
|
|
408
408
|
}
|
|
409
409
|
.app-nav-item:focus-visible {
|
|
410
|
-
outline:
|
|
411
|
-
outline-offset: -
|
|
410
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
411
|
+
outline-offset: var(--wui-focus-ring-inset);
|
|
412
412
|
}
|
|
413
413
|
.app-nav-icon {
|
|
414
414
|
flex: none;
|
|
@@ -659,8 +659,8 @@
|
|
|
659
659
|
background: var(--color-bg-muted);
|
|
660
660
|
}
|
|
661
661
|
.app-sidebar-toggle:focus-visible {
|
|
662
|
-
outline:
|
|
663
|
-
outline-offset:
|
|
662
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
663
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
664
664
|
}
|
|
665
665
|
.app-sidebar-toggle > * {
|
|
666
666
|
// `block` kills the inline-block baseline gap (.wui-icon is inline-block), which otherwise
|
|
@@ -729,8 +729,8 @@
|
|
|
729
729
|
cursor: pointer;
|
|
730
730
|
}
|
|
731
731
|
.app-topbar-menu:focus-visible {
|
|
732
|
-
outline:
|
|
733
|
-
outline-offset:
|
|
732
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
733
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
734
734
|
}
|
|
735
735
|
|
|
736
736
|
.app-content {
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// ── Keyboard shortcuts ──
|
|
2
|
+
// `.wui-kbd` is the key chip of a shortcut: the `shortcut` prop on AppButton, AppTooltip and
|
|
3
|
+
// AppDropdown items (and their Razor `shortcut` attribute), and every row of a legend.
|
|
4
|
+
// AppShortcutLegend / <app-shortcut-legend> (a <wui-shortcuts> element) is a "? Keyboard
|
|
5
|
+
// shortcuts" button and the sheet of every shortcut on the screen, which opens above it.
|
|
6
|
+
//
|
|
7
|
+
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
8
|
+
|
|
9
|
+
.wui-kbd {
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
min-width: 20px;
|
|
14
|
+
height: 20px;
|
|
15
|
+
padding: 0 5px;
|
|
16
|
+
border: 1px solid var(--color-border);
|
|
17
|
+
border-radius: var(--wui-radius-sm);
|
|
18
|
+
background: var(--color-bg-muted);
|
|
19
|
+
color: var(--color-text);
|
|
20
|
+
font-family: inherit;
|
|
21
|
+
font-size: 11px;
|
|
22
|
+
font-weight: 600;
|
|
23
|
+
line-height: 1;
|
|
24
|
+
white-space: nowrap;
|
|
25
|
+
vertical-align: middle;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// On a filled surface (a button, a tinted tooltip) the chip takes the surface's own text colour.
|
|
29
|
+
.btn > .wui-kbd,
|
|
30
|
+
.tooltip.wui-tooltip .wui-kbd {
|
|
31
|
+
border-color: color-mix(in srgb, currentColor 40%, transparent);
|
|
32
|
+
background: transparent;
|
|
33
|
+
color: inherit;
|
|
34
|
+
}
|
|
35
|
+
.btn > .wui-kbd {
|
|
36
|
+
margin-left: 8px;
|
|
37
|
+
}
|
|
38
|
+
.tooltip.wui-tooltip .wui-kbd {
|
|
39
|
+
margin-left: 6px;
|
|
40
|
+
}
|
|
41
|
+
.dropdown-item > .wui-kbd {
|
|
42
|
+
margin-left: auto;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// A phone has no keyboard to press them on.
|
|
46
|
+
@media (hover: none) and (pointer: coarse) {
|
|
47
|
+
.btn > .wui-kbd,
|
|
48
|
+
.dropdown-item > .wui-kbd {
|
|
49
|
+
display: none;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.wui-shortcut-legend {
|
|
54
|
+
position: relative;
|
|
55
|
+
display: inline-flex;
|
|
56
|
+
}
|
|
57
|
+
.wui-shortcut-toggle {
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
gap: 6px;
|
|
61
|
+
padding: 2px 0;
|
|
62
|
+
border: 0;
|
|
63
|
+
background: none;
|
|
64
|
+
color: var(--color-text-muted);
|
|
65
|
+
font: inherit;
|
|
66
|
+
font-size: 12px;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
}
|
|
69
|
+
.wui-shortcut-toggle:hover {
|
|
70
|
+
color: var(--color-text);
|
|
71
|
+
}
|
|
72
|
+
.wui-shortcut-toggle:focus-visible,
|
|
73
|
+
.wui-shortcut-close:focus-visible {
|
|
74
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
75
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.wui-shortcut-sheet {
|
|
79
|
+
position: absolute;
|
|
80
|
+
right: 0;
|
|
81
|
+
bottom: calc(100% + 8px);
|
|
82
|
+
z-index: var(--wui-z-dropdown, 1000);
|
|
83
|
+
width: min(320px, calc(100vw - 32px));
|
|
84
|
+
border: 1px solid var(--color-border);
|
|
85
|
+
border-radius: var(--wui-radius);
|
|
86
|
+
corner-shape: squircle;
|
|
87
|
+
background: var(--color-surface);
|
|
88
|
+
color: var(--color-text);
|
|
89
|
+
box-shadow: var(--wui-shadow-overlay);
|
|
90
|
+
font-size: 14px;
|
|
91
|
+
text-align: start;
|
|
92
|
+
}
|
|
93
|
+
.wui-shortcut-sheet[hidden] {
|
|
94
|
+
display: none;
|
|
95
|
+
}
|
|
96
|
+
.wui-shortcut-sheet-head {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: space-between;
|
|
100
|
+
gap: 8px;
|
|
101
|
+
padding: 8px 8px 8px 16px;
|
|
102
|
+
border-bottom: 1px solid var(--color-border);
|
|
103
|
+
}
|
|
104
|
+
.wui-shortcut-sheet-title {
|
|
105
|
+
font-size: 14px;
|
|
106
|
+
font-weight: 600;
|
|
107
|
+
}
|
|
108
|
+
.wui-shortcut-close {
|
|
109
|
+
display: grid;
|
|
110
|
+
place-items: center;
|
|
111
|
+
width: 32px;
|
|
112
|
+
height: 32px;
|
|
113
|
+
padding: 0;
|
|
114
|
+
border: 0;
|
|
115
|
+
border-radius: var(--wui-radius-sm);
|
|
116
|
+
background: transparent;
|
|
117
|
+
color: var(--color-text-muted);
|
|
118
|
+
}
|
|
119
|
+
.wui-shortcut-close:hover {
|
|
120
|
+
background: var(--color-bg-muted);
|
|
121
|
+
color: var(--color-text);
|
|
122
|
+
}
|
|
123
|
+
.wui-shortcut-keys {
|
|
124
|
+
display: grid;
|
|
125
|
+
gap: 6px;
|
|
126
|
+
margin: 0;
|
|
127
|
+
padding: 10px 16px 14px;
|
|
128
|
+
}
|
|
129
|
+
.wui-shortcut-keys > div {
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
justify-content: space-between;
|
|
133
|
+
gap: 12px;
|
|
134
|
+
}
|
|
135
|
+
.wui-shortcut-keys dt {
|
|
136
|
+
font-weight: 400;
|
|
137
|
+
}
|
|
138
|
+
.wui-shortcut-keys dd {
|
|
139
|
+
margin: 0;
|
|
140
|
+
color: var(--color-text-muted);
|
|
141
|
+
font-size: 13px;
|
|
142
|
+
text-align: end;
|
|
143
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// ── Show more ──
|
|
2
|
+
// AppShowMore / <app-show-more> (a <wui-show-more> element): a long text block clamped to a few
|
|
3
|
+
// lines with a Show more toggle. The clamp is visual only, so the full text stays readable by
|
|
4
|
+
// assistive technology; it applies once the element is defined, so without script the text shows
|
|
5
|
+
// in full. The element writes --wui-show-more-lines from its `lines` attribute.
|
|
6
|
+
//
|
|
7
|
+
// Part of the wui-components layer, see _wui-components.scss for load order.
|
|
8
|
+
|
|
9
|
+
.wui-show-more {
|
|
10
|
+
display: block;
|
|
11
|
+
min-width: 0;
|
|
12
|
+
}
|
|
13
|
+
.wui-show-more:defined:not([expanded]) .wui-show-more-body {
|
|
14
|
+
display: -webkit-box;
|
|
15
|
+
-webkit-box-orient: vertical;
|
|
16
|
+
-webkit-line-clamp: var(--wui-show-more-lines, 3);
|
|
17
|
+
line-clamp: var(--wui-show-more-lines, 3);
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
}
|
|
20
|
+
.wui-show-more-body {
|
|
21
|
+
overflow-wrap: anywhere;
|
|
22
|
+
}
|
|
23
|
+
.wui-show-more-toggle {
|
|
24
|
+
margin-top: 4px;
|
|
25
|
+
padding-left: 0;
|
|
26
|
+
padding-right: 0;
|
|
27
|
+
}
|
|
28
|
+
.wui-show-more-toggle[hidden] {
|
|
29
|
+
display: none;
|
|
30
|
+
}
|
package/scss/wui/_sortable.scss
CHANGED
|
@@ -64,8 +64,8 @@ wui-sortable[disabled] .wui-sortable-item,
|
|
|
64
64
|
color: var(--color-text);
|
|
65
65
|
}
|
|
66
66
|
.wui-sortable-handle:focus-visible {
|
|
67
|
-
outline:
|
|
68
|
-
outline-offset:
|
|
67
|
+
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
68
|
+
outline-offset: var(--wui-focus-ring-offset);
|
|
69
69
|
}
|
|
70
70
|
// Lifted by the keyboard.
|
|
71
71
|
.wui-sortable-handle[aria-pressed="true"] {
|