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