@duskmoon-dev/core 1.19.3 → 1.19.5
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/README.md +1 -1
- package/dist/base.css +484 -0
- package/dist/components/accordion.css +33 -9
- package/dist/components/alert.css +81 -3
- package/dist/components/autocomplete.css +67 -13
- package/dist/components/avatar.css +39 -15
- package/dist/components/badge.css +15 -3
- package/dist/components/card.css +12 -0
- package/dist/components/carousel.css +28 -0
- package/dist/components/chat.css +15 -11
- package/dist/components/checkbox.css +83 -13
- package/dist/components/collapse.css +67 -16
- package/dist/components/countdown.css +22 -0
- package/dist/components/datepicker.css +76 -0
- package/dist/components/diff.css +33 -0
- package/dist/components/file-input.css +107 -0
- package/dist/components/filter-group.css +452 -0
- package/dist/components/form-group.css +95 -204
- package/dist/components/form.css +1551 -421
- package/dist/components/index.css +6248 -5799
- package/dist/components/input.css +114 -31
- package/dist/components/kbd.css +28 -0
- package/dist/components/list.css +22 -3
- package/dist/components/loading.css +105 -0
- package/dist/components/modal.css +62 -1
- package/dist/components/otp-input.css +124 -6
- package/dist/components/progress.css +74 -0
- package/dist/components/radial-progress.css +47 -0
- package/dist/components/radio.css +70 -0
- package/dist/components/range.css +41 -0
- package/dist/components/rating.css +39 -12
- package/dist/components/select.css +74 -0
- package/dist/components/skeleton.css +13 -1
- package/dist/components/snackbar.css +48 -18
- package/dist/components/stat.css +40 -0
- package/dist/components/switch.css +70 -0
- package/dist/components/table.css +8 -0
- package/dist/components/textarea.css +74 -0
- package/dist/components/timeline.css +40 -25
- package/dist/components/toast.css +188 -34
- package/dist/components/toggle-switch.css +165 -0
- package/dist/components/toggle.css +198 -32
- package/dist/components/tooltip.css +2 -47
- package/dist/components/validator.css +66 -0
- package/dist/effects/aura.css +22 -0
- package/dist/effects/hover-3d.css +8 -0
- package/dist/effects/hover-gallery.css +14 -0
- package/dist/effects/index.css +65 -0
- package/dist/effects/text-rotate.css +16 -0
- package/dist/esm/components/accordion.js +33 -9
- package/dist/esm/components/alert.js +81 -3
- package/dist/esm/components/autocomplete.js +67 -13
- package/dist/esm/components/avatar.js +39 -15
- package/dist/esm/components/badge.js +15 -3
- package/dist/esm/components/card.js +12 -0
- package/dist/esm/components/carousel.d.ts +5 -0
- package/dist/esm/components/carousel.js +37 -0
- package/dist/esm/components/chat.js +15 -11
- package/dist/esm/components/checkbox.js +84 -14
- package/dist/esm/components/collapse.js +67 -16
- package/dist/esm/components/countdown.d.ts +5 -0
- package/dist/esm/components/countdown.js +31 -0
- package/dist/esm/components/datepicker.js +77 -1
- package/dist/esm/components/diff.d.ts +5 -0
- package/dist/esm/components/diff.js +42 -0
- package/dist/esm/components/file-input.d.ts +5 -0
- package/dist/esm/components/file-input.js +116 -0
- package/dist/esm/components/filter-group.d.ts +5 -0
- package/dist/esm/components/filter-group.js +461 -0
- package/dist/esm/components/form-group.js +96 -205
- package/dist/esm/components/form.js +1539 -409
- package/dist/esm/components/input.js +115 -32
- package/dist/esm/components/kbd.d.ts +5 -0
- package/dist/esm/components/kbd.js +37 -0
- package/dist/esm/components/list.js +22 -3
- package/dist/esm/components/loading.d.ts +5 -0
- package/dist/esm/components/loading.js +114 -0
- package/dist/esm/components/modal.js +62 -1
- package/dist/esm/components/otp-input.js +125 -7
- package/dist/esm/components/progress.js +74 -0
- package/dist/esm/components/radial-progress.d.ts +5 -0
- package/dist/esm/components/radial-progress.js +56 -0
- package/dist/esm/components/radio.js +71 -1
- package/dist/esm/components/range.d.ts +5 -0
- package/dist/esm/components/range.js +50 -0
- package/dist/esm/components/rating.js +39 -12
- package/dist/esm/components/select.js +75 -1
- package/dist/esm/components/skeleton.js +13 -1
- package/dist/esm/components/snackbar.js +48 -18
- package/dist/esm/components/stat.d.ts +5 -0
- package/dist/esm/components/stat.js +49 -0
- package/dist/esm/components/switch.js +71 -1
- package/dist/esm/components/table.js +8 -0
- package/dist/esm/components/textarea.js +75 -1
- package/dist/esm/components/timeline.js +40 -25
- package/dist/esm/components/toast.js +188 -34
- package/dist/esm/components/toggle-switch.d.ts +5 -0
- package/dist/esm/components/toggle-switch.js +174 -0
- package/dist/esm/components/toggle.js +198 -32
- package/dist/esm/components/tooltip.js +2 -47
- package/dist/esm/components/validator.d.ts +5 -0
- package/dist/esm/components/validator.js +75 -0
- package/dist/esm/effects/aura.d.ts +5 -0
- package/dist/esm/effects/aura.js +31 -0
- package/dist/esm/effects/hover-3d.d.ts +5 -0
- package/dist/esm/effects/hover-3d.js +17 -0
- package/dist/esm/effects/hover-gallery.d.ts +5 -0
- package/dist/esm/effects/hover-gallery.js +23 -0
- package/dist/esm/effects/index.d.ts +5 -0
- package/dist/esm/effects/index.js +74 -0
- package/dist/esm/effects/text-rotate.d.ts +5 -0
- package/dist/esm/effects/text-rotate.js +25 -0
- package/dist/index.css +7652 -7204
- package/dist/index.min.css +1 -1
- package/dist/standalone/duskmoonui-themes.css +1 -1
- package/dist/standalone/duskmoonui.css +7598 -7141
- package/dist/standalone/duskmoonui.js +18 -16
- package/dist/standalone/duskmoonui.mjs +18 -16
- package/dist/types/types/plugin.d.ts +1 -1
- package/dist/types/types/plugin.d.ts.map +1 -1
- package/package.json +110 -1
|
@@ -15,17 +15,36 @@
|
|
|
15
15
|
pointer-events: none;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/* Native command targets use the container as a manual popover. Reset the
|
|
19
|
+
user-agent popover box while preserving the existing positioning API. */
|
|
20
|
+
:where(.toast-container[popover]) {
|
|
21
|
+
inset: auto;
|
|
22
|
+
width: auto;
|
|
23
|
+
height: auto;
|
|
24
|
+
margin: 0;
|
|
25
|
+
overflow: visible;
|
|
26
|
+
color: inherit;
|
|
27
|
+
background: transparent;
|
|
28
|
+
border: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.toast-container[popover]:not(:popover-open) {
|
|
32
|
+
display: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
18
35
|
/* Position Variants */
|
|
19
36
|
.toast-container-top-right {
|
|
20
37
|
top: 0;
|
|
21
38
|
right: 0;
|
|
22
39
|
align-items: flex-end;
|
|
40
|
+
padding-top: max(1rem, env(safe-area-inset-top));
|
|
23
41
|
}
|
|
24
42
|
|
|
25
43
|
.toast-container-top-left {
|
|
26
44
|
top: 0;
|
|
27
45
|
left: 0;
|
|
28
46
|
align-items: flex-start;
|
|
47
|
+
padding-top: max(1rem, env(safe-area-inset-top));
|
|
29
48
|
}
|
|
30
49
|
|
|
31
50
|
.toast-container-top-center {
|
|
@@ -33,18 +52,21 @@
|
|
|
33
52
|
left: 50%;
|
|
34
53
|
transform: translateX(-50%);
|
|
35
54
|
align-items: center;
|
|
55
|
+
padding-top: max(1rem, env(safe-area-inset-top));
|
|
36
56
|
}
|
|
37
57
|
|
|
38
58
|
.toast-container-bottom-right {
|
|
39
59
|
bottom: 0;
|
|
40
60
|
right: 0;
|
|
41
61
|
align-items: flex-end;
|
|
62
|
+
padding-bottom: max(1rem, env(safe-area-inset-bottom));
|
|
42
63
|
}
|
|
43
64
|
|
|
44
65
|
.toast-container-bottom-left {
|
|
45
66
|
bottom: 0;
|
|
46
67
|
left: 0;
|
|
47
68
|
align-items: flex-start;
|
|
69
|
+
padding-bottom: max(1rem, env(safe-area-inset-bottom));
|
|
48
70
|
}
|
|
49
71
|
|
|
50
72
|
.toast-container-bottom-center {
|
|
@@ -52,10 +74,20 @@
|
|
|
52
74
|
left: 50%;
|
|
53
75
|
transform: translateX(-50%);
|
|
54
76
|
align-items: center;
|
|
77
|
+
padding-bottom: max(1rem, env(safe-area-inset-bottom));
|
|
55
78
|
}
|
|
56
79
|
|
|
80
|
+
/* Logical aliases add RTL-aware placement without changing left/right. */
|
|
81
|
+
.toast-container-top-start { top: 0; inset-inline-start: 0; align-items: flex-start; }
|
|
82
|
+
.toast-container-top-end { top: 0; inset-inline-end: 0; align-items: flex-end; }
|
|
83
|
+
.toast-container-bottom-start { bottom: 0; inset-inline-start: 0; align-items: flex-start; }
|
|
84
|
+
.toast-container-bottom-end { bottom: 0; inset-inline-end: 0; align-items: flex-end; }
|
|
85
|
+
|
|
57
86
|
/* Base Toast */
|
|
58
87
|
.toast {
|
|
88
|
+
--_toast-accent-color: var(--color-primary);
|
|
89
|
+
|
|
90
|
+
position: relative;
|
|
59
91
|
display: flex;
|
|
60
92
|
align-items: flex-start;
|
|
61
93
|
gap: 0.75rem;
|
|
@@ -86,9 +118,28 @@
|
|
|
86
118
|
/* Toast Open State */
|
|
87
119
|
.toast.toast-open,
|
|
88
120
|
.toast.show,
|
|
89
|
-
.toast-show {
|
|
121
|
+
.toast.toast-show {
|
|
122
|
+
opacity: 1;
|
|
123
|
+
transform: translateX(0) translateY(0);
|
|
124
|
+
visibility: visible;
|
|
125
|
+
pointer-events: auto;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* A closed item cannot intercept input. Consumers should also use hidden,
|
|
129
|
+
inert, or unmounting when removing it from the accessibility tree. */
|
|
130
|
+
.toast:not(.toast-open):not(.show):not(.toast-show),
|
|
131
|
+
.toast[hidden],
|
|
132
|
+
.toast[inert],
|
|
133
|
+
.toast[aria-hidden="true"] {
|
|
134
|
+
pointer-events: none;
|
|
135
|
+
visibility: hidden;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.toast-container[popover]:popover-open .toast {
|
|
90
139
|
opacity: 1;
|
|
91
140
|
transform: translateX(0) translateY(0);
|
|
141
|
+
visibility: visible;
|
|
142
|
+
pointer-events: auto;
|
|
92
143
|
}
|
|
93
144
|
|
|
94
145
|
/* Toast Icon */
|
|
@@ -139,7 +190,7 @@
|
|
|
139
190
|
cursor: pointer;
|
|
140
191
|
transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
|
|
141
192
|
flex-shrink: 0;
|
|
142
|
-
margin-
|
|
193
|
+
margin-inline-start: auto;
|
|
143
194
|
}
|
|
144
195
|
|
|
145
196
|
.toast-close:hover {
|
|
@@ -157,10 +208,46 @@
|
|
|
157
208
|
display: flex;
|
|
158
209
|
gap: 0.5rem;
|
|
159
210
|
margin-top: 0.5rem;
|
|
211
|
+
flex-wrap: wrap;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.toast-action {
|
|
215
|
+
display: inline-flex;
|
|
216
|
+
align-items: center;
|
|
217
|
+
justify-content: center;
|
|
218
|
+
width: fit-content;
|
|
219
|
+
min-height: 2rem;
|
|
220
|
+
padding: 0.375rem 0.75rem;
|
|
221
|
+
color: var(--color-primary);
|
|
222
|
+
font-size: 0.875rem;
|
|
223
|
+
font-weight: 500;
|
|
224
|
+
background-color: transparent;
|
|
225
|
+
border: 1px solid currentColor;
|
|
226
|
+
border-radius: var(--radius-sm);
|
|
227
|
+
cursor: pointer;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.toast-action:hover {
|
|
231
|
+
background-color: color-mix(in oklch, currentColor 10%, transparent);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.toast-action:focus-visible {
|
|
235
|
+
outline: none;
|
|
236
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
160
237
|
}
|
|
161
238
|
|
|
162
239
|
/* Type Variants */
|
|
240
|
+
.toast-accent {
|
|
241
|
+
--_toast-accent-color: var(--color-accent);
|
|
242
|
+
border-color: var(--color-accent);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.toast-accent .toast-icon {
|
|
246
|
+
color: var(--color-accent);
|
|
247
|
+
}
|
|
248
|
+
|
|
163
249
|
.toast-info {
|
|
250
|
+
--_toast-accent-color: var(--color-info);
|
|
164
251
|
border-color: var(--color-info);
|
|
165
252
|
}
|
|
166
253
|
|
|
@@ -169,6 +256,7 @@
|
|
|
169
256
|
}
|
|
170
257
|
|
|
171
258
|
.toast-success {
|
|
259
|
+
--_toast-accent-color: var(--color-success);
|
|
172
260
|
border-color: var(--color-success);
|
|
173
261
|
}
|
|
174
262
|
|
|
@@ -177,6 +265,7 @@
|
|
|
177
265
|
}
|
|
178
266
|
|
|
179
267
|
.toast-warning {
|
|
268
|
+
--_toast-accent-color: var(--color-warning);
|
|
180
269
|
border-color: var(--color-warning);
|
|
181
270
|
}
|
|
182
271
|
|
|
@@ -185,6 +274,7 @@
|
|
|
185
274
|
}
|
|
186
275
|
|
|
187
276
|
.toast-error {
|
|
277
|
+
--_toast-accent-color: var(--color-error);
|
|
188
278
|
border-color: var(--color-error);
|
|
189
279
|
}
|
|
190
280
|
|
|
@@ -193,6 +283,7 @@
|
|
|
193
283
|
}
|
|
194
284
|
|
|
195
285
|
.toast-primary {
|
|
286
|
+
--_toast-accent-color: var(--color-primary);
|
|
196
287
|
border-color: var(--color-primary);
|
|
197
288
|
}
|
|
198
289
|
|
|
@@ -201,6 +292,7 @@
|
|
|
201
292
|
}
|
|
202
293
|
|
|
203
294
|
.toast-secondary {
|
|
295
|
+
--_toast-accent-color: var(--color-secondary);
|
|
204
296
|
border-color: var(--color-secondary);
|
|
205
297
|
}
|
|
206
298
|
|
|
@@ -209,6 +301,7 @@
|
|
|
209
301
|
}
|
|
210
302
|
|
|
211
303
|
.toast-tertiary {
|
|
304
|
+
--_toast-accent-color: var(--color-tertiary);
|
|
212
305
|
border-color: var(--color-tertiary);
|
|
213
306
|
}
|
|
214
307
|
|
|
@@ -216,15 +309,8 @@
|
|
|
216
309
|
color: var(--color-tertiary);
|
|
217
310
|
}
|
|
218
311
|
|
|
219
|
-
.toast-accent {
|
|
220
|
-
border-color: var(--color-accent);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.toast-accent .toast-icon {
|
|
224
|
-
color: var(--color-accent);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
312
|
.toast-neutral {
|
|
313
|
+
--_toast-accent-color: var(--color-neutral);
|
|
228
314
|
border-color: var(--color-neutral);
|
|
229
315
|
}
|
|
230
316
|
|
|
@@ -233,6 +319,7 @@
|
|
|
233
319
|
}
|
|
234
320
|
|
|
235
321
|
.toast-base {
|
|
322
|
+
--_toast-accent-color: var(--color-base-content);
|
|
236
323
|
border-color: var(--color-base-content);
|
|
237
324
|
}
|
|
238
325
|
|
|
@@ -241,58 +328,58 @@
|
|
|
241
328
|
}
|
|
242
329
|
|
|
243
330
|
/* Filled Variants */
|
|
331
|
+
.toast-filled.toast-accent {
|
|
332
|
+
background-color: var(--color-accent);
|
|
333
|
+
border-color: transparent;
|
|
334
|
+
color: var(--color-accent-content);
|
|
335
|
+
}
|
|
336
|
+
|
|
244
337
|
.toast-filled.toast-info {
|
|
245
|
-
background-color: var(--color-info
|
|
338
|
+
background-color: var(--color-info);
|
|
246
339
|
border-color: transparent;
|
|
247
|
-
color: var(--color-
|
|
340
|
+
color: var(--color-info-content);
|
|
248
341
|
}
|
|
249
342
|
|
|
250
343
|
.toast-filled.toast-success {
|
|
251
|
-
background-color: var(--color-success
|
|
344
|
+
background-color: var(--color-success);
|
|
252
345
|
border-color: transparent;
|
|
253
|
-
color: var(--color-
|
|
346
|
+
color: var(--color-success-content);
|
|
254
347
|
}
|
|
255
348
|
|
|
256
349
|
.toast-filled.toast-warning {
|
|
257
|
-
background-color: var(--color-warning
|
|
350
|
+
background-color: var(--color-warning);
|
|
258
351
|
border-color: transparent;
|
|
259
|
-
color: var(--color-
|
|
352
|
+
color: var(--color-warning-content);
|
|
260
353
|
}
|
|
261
354
|
|
|
262
355
|
.toast-filled.toast-error {
|
|
263
|
-
background-color: var(--color-error
|
|
356
|
+
background-color: var(--color-error);
|
|
264
357
|
border-color: transparent;
|
|
265
|
-
color: var(--color-
|
|
358
|
+
color: var(--color-error-content);
|
|
266
359
|
}
|
|
267
360
|
|
|
268
361
|
.toast-filled.toast-primary {
|
|
269
|
-
background-color: var(--color-primary
|
|
362
|
+
background-color: var(--color-primary);
|
|
270
363
|
border-color: transparent;
|
|
271
|
-
color: var(--color-
|
|
364
|
+
color: var(--color-primary-content);
|
|
272
365
|
}
|
|
273
366
|
|
|
274
367
|
.toast-filled.toast-secondary {
|
|
275
|
-
background-color: var(--color-secondary
|
|
368
|
+
background-color: var(--color-secondary);
|
|
276
369
|
border-color: transparent;
|
|
277
|
-
color: var(--color-
|
|
370
|
+
color: var(--color-secondary-content);
|
|
278
371
|
}
|
|
279
372
|
|
|
280
373
|
.toast-filled.toast-tertiary {
|
|
281
|
-
background-color: var(--color-tertiary
|
|
374
|
+
background-color: var(--color-tertiary);
|
|
282
375
|
border-color: transparent;
|
|
283
|
-
color: var(--color-
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
.toast-filled.toast-accent {
|
|
287
|
-
background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
|
|
288
|
-
border-color: transparent;
|
|
289
|
-
color: var(--color-on-surface);
|
|
376
|
+
color: var(--color-tertiary-content);
|
|
290
377
|
}
|
|
291
378
|
|
|
292
379
|
.toast-filled.toast-neutral {
|
|
293
|
-
background-color:
|
|
380
|
+
background-color: var(--color-neutral);
|
|
294
381
|
border-color: transparent;
|
|
295
|
-
color: var(--color-
|
|
382
|
+
color: var(--color-neutral-content);
|
|
296
383
|
}
|
|
297
384
|
|
|
298
385
|
.toast-filled.toast-base {
|
|
@@ -305,8 +392,16 @@
|
|
|
305
392
|
.toast-title and .toast-message have explicit color rules that would otherwise
|
|
306
393
|
override the filled variant's inherited on-container color. */
|
|
307
394
|
.toast-filled .toast-title,
|
|
308
|
-
.toast-filled .toast-message
|
|
395
|
+
.toast-filled .toast-message,
|
|
396
|
+
.toast-filled .toast-icon,
|
|
397
|
+
.toast-filled .toast-close,
|
|
398
|
+
.toast-filled .toast-action {
|
|
399
|
+
color: inherit;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.toast-filled .toast-close:hover {
|
|
309
403
|
color: inherit;
|
|
404
|
+
background-color: color-mix(in oklch, currentColor 12%, transparent);
|
|
310
405
|
}
|
|
311
406
|
|
|
312
407
|
/* Ghost Variant */
|
|
@@ -315,6 +410,7 @@
|
|
|
315
410
|
border-color: transparent;
|
|
316
411
|
}
|
|
317
412
|
|
|
413
|
+
.toast-ghost.toast-accent { color: var(--color-accent); }
|
|
318
414
|
.toast-ghost.toast-primary { color: var(--color-primary); }
|
|
319
415
|
.toast-ghost.toast-secondary { color: var(--color-secondary); }
|
|
320
416
|
.toast-ghost.toast-tertiary { color: var(--color-tertiary); }
|
|
@@ -322,7 +418,6 @@
|
|
|
322
418
|
.toast-ghost.toast-success { color: var(--color-success); }
|
|
323
419
|
.toast-ghost.toast-warning { color: var(--color-warning); }
|
|
324
420
|
.toast-ghost.toast-error { color: var(--color-error); }
|
|
325
|
-
.toast-ghost.toast-accent { color: var(--color-accent); }
|
|
326
421
|
.toast-ghost.toast-neutral { color: var(--color-neutral); }
|
|
327
422
|
.toast-ghost.toast-base { color: var(--color-base-content); }
|
|
328
423
|
|
|
@@ -331,6 +426,49 @@
|
|
|
331
426
|
color: inherit;
|
|
332
427
|
}
|
|
333
428
|
|
|
429
|
+
/* Size and density variants retained by the public API. */
|
|
430
|
+
.toast-sm {
|
|
431
|
+
width: 18rem;
|
|
432
|
+
padding: 0.75rem;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.toast-lg {
|
|
436
|
+
width: 26rem;
|
|
437
|
+
padding: 1.25rem;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.toast-compact {
|
|
441
|
+
padding: 0.75rem;
|
|
442
|
+
gap: 0.5rem;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
.toast-compact .toast-icon {
|
|
446
|
+
width: 1.25rem;
|
|
447
|
+
height: 1.25rem;
|
|
448
|
+
font-size: 1rem;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.toast-compact .toast-title { font-size: 0.8125rem; }
|
|
452
|
+
.toast-compact .toast-message { font-size: 0.8125rem; }
|
|
453
|
+
|
|
454
|
+
/* Accent edge and stacked presentation. */
|
|
455
|
+
.toast-accent::before {
|
|
456
|
+
content: "";
|
|
457
|
+
position: absolute;
|
|
458
|
+
inset-block: 0;
|
|
459
|
+
inset-inline-start: 0;
|
|
460
|
+
width: 0.25rem;
|
|
461
|
+
background-color: var(--_toast-accent-color);
|
|
462
|
+
border-start-start-radius: var(--radius-md);
|
|
463
|
+
border-end-start-radius: var(--radius-md);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.toast-container-stacked .toast:not(:first-child) {
|
|
467
|
+
margin-top: -0.75rem;
|
|
468
|
+
transform: scale(0.97);
|
|
469
|
+
opacity: 0.9;
|
|
470
|
+
}
|
|
471
|
+
|
|
334
472
|
/* Progress Bar (for auto-dismiss) */
|
|
335
473
|
.toast-progress {
|
|
336
474
|
position: absolute;
|
|
@@ -361,5 +499,21 @@
|
|
|
361
499
|
.toast-progress {
|
|
362
500
|
animation: none;
|
|
363
501
|
}
|
|
502
|
+
|
|
503
|
+
.toast-container { scroll-behavior: auto; }
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
@media (max-width: 40rem) {
|
|
507
|
+
.toast-container[popover] {
|
|
508
|
+
inset-inline: 0;
|
|
509
|
+
width: 100%;
|
|
510
|
+
transform: none;
|
|
511
|
+
align-items: stretch;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.toast {
|
|
515
|
+
width: 100%;
|
|
516
|
+
max-width: 100%;
|
|
517
|
+
}
|
|
364
518
|
}
|
|
365
519
|
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/** Opt-in native presentation. Applications own errors, messages and announcements. */
|
|
2
|
+
@layer components {
|
|
3
|
+
/* Compatibility wrapper states are intentionally immediate. */
|
|
4
|
+
:is(.form-group-info, .form-control.info) { --dm-validation-color: var(--color-info); }
|
|
5
|
+
:is(.form-group-warning, .form-control.warning) { --dm-validation-color: var(--color-warning); }
|
|
6
|
+
:is(.form-group-success, .form-control.success) { --dm-validation-color: var(--color-success); }
|
|
7
|
+
|
|
8
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :valid, .validate:valid, .validator.validator-success:user-valid):not([aria-invalid="true"]):not(:where(.form-group-error *, .form-control.error *)):not(:disabled) {
|
|
9
|
+
--dm-validation-color: var(--color-success);
|
|
10
|
+
--dm-validation-content: var(--color-success-content);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is(.validate :invalid, .validate:invalid, .validator:user-invalid):not(:disabled) {
|
|
14
|
+
--dm-validation-color: var(--color-error);
|
|
15
|
+
--dm-validation-content: var(--color-error-content);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:is(.form-group-error, .form-control.error) {
|
|
19
|
+
--dm-validation-color: var(--color-error);
|
|
20
|
+
--dm-validation-content: var(--color-error-content);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Higher specificity than native states, including server-invalid + user-valid. */
|
|
24
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .form-group-error *, .form-control.error *):not(:disabled):is(:focus, :not(:focus)) {
|
|
25
|
+
--dm-validation-color: var(--color-error);
|
|
26
|
+
--dm-validation-content: var(--color-error-content);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* This shared selector wins over filled/ghost focus and semantic modifiers. */
|
|
30
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled) {
|
|
31
|
+
color: var(--dm-validation-color);
|
|
32
|
+
border-color: var(--dm-validation-color);
|
|
33
|
+
--checkbox-color: var(--dm-validation-color);
|
|
34
|
+
--radio-color: var(--dm-validation-color);
|
|
35
|
+
--switch-color: var(--dm-validation-color);
|
|
36
|
+
--switch-content-color: var(--dm-validation-content, var(--color-primary-content));
|
|
37
|
+
--toggle-color: var(--dm-validation-color);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
:is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):is([aria-invalid="true"], .validator:user-invalid, .validator.validator-success:user-valid, .validate :invalid, .validate :valid, .validate:invalid, .validate:valid, .form-group-error *, .form-group-success *, .form-group-warning *, .form-group-info *, .form-control.error *, .form-control.success *, .form-control.warning *, .form-control.info *):not(:disabled):focus {
|
|
41
|
+
border-color: var(--dm-validation-color);
|
|
42
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--dm-validation-color) 20%, transparent);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:is(.form-group-error, .form-control.error) :is(.form-label, .label-text) { color: var(--color-error); }
|
|
46
|
+
:is(.form-group-success, .form-control.success) :is(.form-label, .label-text) { color: var(--color-success); }
|
|
47
|
+
:is(.form-group-warning, .form-control.warning) :is(.form-label, .label-text) { color: var(--color-warning); }
|
|
48
|
+
:is(.form-group-info, .form-control.info) :is(.form-label, .label-text) { color: var(--color-info); }
|
|
49
|
+
|
|
50
|
+
.validator-hint { font-size: 0.75rem; color: var(--color-on-surface-variant); }
|
|
51
|
+
.validator-error { display: none; font-size: 0.75rem; color: var(--color-error); }
|
|
52
|
+
/* Keep OTP actions stationary when blur reveals an error during a click. */
|
|
53
|
+
.otp-code ~ .validator-error { display: block; visibility: hidden; }
|
|
54
|
+
:is(.form-group, .form-control):has(:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)) > .validator-error,
|
|
55
|
+
:is(.form-group-error, .form-control.error) > .validator-error { display: block; visibility: visible; }
|
|
56
|
+
|
|
57
|
+
@media (forced-colors: active) {
|
|
58
|
+
:is(input, select, textarea):is(.input, .select, .textarea, .checkbox, .radio, .switch, .toggle, .file-input, .otp-input-field, .otp-code, .datepicker-input):focus-visible {
|
|
59
|
+
outline: 2px solid Highlight;
|
|
60
|
+
outline-offset: 2px;
|
|
61
|
+
}
|
|
62
|
+
input:is(.checkbox, .radio, .switch, .toggle) { appearance: auto; }
|
|
63
|
+
input:is(.checkbox, .radio, .switch, .toggle)::before,
|
|
64
|
+
input:is(.checkbox, .radio, .switch, .toggle)::after { content: none; }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@layer components {
|
|
70
|
+
/* Toggle/Switch */
|
|
71
|
+
.toggle {
|
|
72
|
+
--toggle-color: var(--color-primary);
|
|
73
|
+
box-sizing: border-box;
|
|
74
|
+
color: var(--color-on-surface);
|
|
75
|
+
border: 1px solid currentColor;
|
|
76
|
+
appearance: none;
|
|
77
|
+
width: 3rem;
|
|
78
|
+
height: 1.5rem;
|
|
79
|
+
border-radius: var(--radius-lg);
|
|
80
|
+
background-color: var(--color-surface-container-highest);
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
transition: all 150ms ease-in-out;
|
|
83
|
+
position: relative;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.toggle::after {
|
|
87
|
+
content: '';
|
|
88
|
+
position: absolute;
|
|
89
|
+
inset-inline-start: 0.25rem;
|
|
90
|
+
top: 50%;
|
|
91
|
+
transform: translateY(-50%);
|
|
92
|
+
width: 1rem;
|
|
93
|
+
height: 1rem;
|
|
94
|
+
background-color: var(--color-on-surface-variant);
|
|
95
|
+
border-radius: var(--radius-full);
|
|
96
|
+
transition: all 150ms ease-in-out;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.toggle:checked {
|
|
100
|
+
background-color: var(--toggle-color);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.toggle:checked::after {
|
|
104
|
+
inset-inline-start: calc(100% - 1.25rem);
|
|
105
|
+
background-color: var(--dm-validation-content, var(--color-primary-content));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.toggle:focus-visible {
|
|
109
|
+
outline: none;
|
|
110
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.toggle:disabled {
|
|
114
|
+
cursor: not-allowed;
|
|
115
|
+
opacity: 0.5;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Toggle Sizes */
|
|
119
|
+
.toggle-xs {
|
|
120
|
+
width: 2rem;
|
|
121
|
+
height: 1rem;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.toggle-xs::after {
|
|
125
|
+
width: 0.625rem;
|
|
126
|
+
height: 0.625rem;
|
|
127
|
+
inset-inline-start: 0.1875rem;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.toggle-xs:checked::after {
|
|
131
|
+
inset-inline-start: calc(100% - 0.8125rem);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.toggle-sm {
|
|
135
|
+
width: 2.5rem;
|
|
136
|
+
height: 1.25rem;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.toggle-sm::after {
|
|
140
|
+
width: 0.75rem;
|
|
141
|
+
height: 0.75rem;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.toggle-lg {
|
|
145
|
+
width: 4rem;
|
|
146
|
+
height: 2rem;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.toggle-lg::after {
|
|
150
|
+
width: 1.5rem;
|
|
151
|
+
height: 1.5rem;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.toggle-sm:checked::after { inset-inline-start: calc(100% - 1rem); }
|
|
155
|
+
.toggle-lg:checked::after { inset-inline-start: calc(100% - 1.75rem); }
|
|
156
|
+
.toggle-primary { --toggle-color: var(--color-primary); }
|
|
157
|
+
.toggle-secondary { --toggle-color: var(--color-secondary); }
|
|
158
|
+
.toggle-tertiary { --toggle-color: var(--color-tertiary); }
|
|
159
|
+
.toggle-info { --toggle-color: var(--color-info); }
|
|
160
|
+
.toggle-success { --toggle-color: var(--color-success); }
|
|
161
|
+
.toggle-warning { --toggle-color: var(--color-warning); }
|
|
162
|
+
.toggle-error { --toggle-color: var(--color-error); }
|
|
163
|
+
.toggle-ghost { border-color: transparent; }
|
|
164
|
+
@media (prefers-reduced-motion: reduce) { .toggle, .toggle::after { transition: none; } }
|
|
165
|
+
}
|