@duskmoon-dev/core 1.14.2 → 1.16.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/cjs/tailwind-plugin.cjs +38 -79
- package/dist/components/accordion.css +7 -7
- package/dist/components/alert.css +2 -2
- package/dist/components/appbar.css +5 -5
- package/dist/components/autocomplete.css +7 -7
- package/dist/components/avatar.css +5 -5
- package/dist/components/badge.css +3 -3
- package/dist/components/bottom-navigation.css +7 -7
- package/dist/components/bottomsheet.css +12 -12
- package/dist/components/button.css +19 -19
- package/dist/components/card.css +9 -2
- package/dist/components/cascader.css +9 -9
- package/dist/components/checkbox.css +1 -1
- package/dist/components/chip.css +12 -10
- package/dist/components/circle-menu.css +324 -0
- package/dist/components/code-block.css +133 -0
- package/dist/components/collapse.css +9 -9
- package/dist/components/datepicker.css +22 -22
- package/dist/components/dialog.css +5 -5
- package/dist/components/drawer.css +13 -13
- package/dist/components/file-upload.css +12 -12
- package/dist/components/form-group.css +162 -1
- package/dist/components/form.css +159 -22
- package/dist/components/index.css +1026 -385
- package/dist/components/input.css +23 -14
- package/dist/components/list.css +3 -3
- package/dist/components/markdown-body.css +6 -6
- package/dist/components/modal.css +7 -7
- package/dist/components/multi-select.css +16 -16
- package/dist/components/navigation.css +20 -20
- package/dist/components/nested-menu.css +5 -5
- package/dist/components/otp-input.css +5 -5
- package/dist/components/pin-input.css +5 -5
- package/dist/components/popover.css +15 -15
- package/dist/components/progress.css +2 -2
- package/dist/components/radio.css +2 -2
- package/dist/components/rating.css +1 -1
- package/dist/components/segment-control.css +6 -6
- package/dist/components/select.css +7 -7
- package/dist/components/skeleton.css +11 -11
- package/dist/components/slider.css +16 -16
- package/dist/components/snackbar.css +5 -5
- package/dist/components/stepper.css +9 -9
- package/dist/components/switch.css +1 -1
- package/dist/components/table.css +3 -3
- package/dist/components/textarea.css +5 -5
- package/dist/components/theme-controller.css +4 -4
- package/dist/components/time-input.css +10 -10
- package/dist/components/timeline.css +6 -6
- package/dist/components/toast.css +3 -3
- package/dist/components/toggle.css +8 -8
- package/dist/components/tooltip.css +1 -1
- package/dist/components/tree-select.css +14 -14
- package/dist/esm/components/accordion.js +7 -7
- package/dist/esm/components/alert.js +2 -2
- package/dist/esm/components/appbar.js +5 -5
- package/dist/esm/components/autocomplete.js +7 -7
- package/dist/esm/components/avatar.js +5 -5
- package/dist/esm/components/badge.js +3 -3
- package/dist/esm/components/bottom-navigation.js +7 -7
- package/dist/esm/components/bottomsheet.js +12 -12
- package/dist/esm/components/button.js +19 -19
- package/dist/esm/components/card.js +9 -2
- package/dist/esm/components/cascader.js +9 -9
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/chip.js +12 -10
- package/dist/esm/components/circle-menu.js +331 -0
- package/dist/esm/components/code-block.js +140 -0
- package/dist/esm/components/collapse.js +9 -9
- package/dist/esm/components/datepicker.js +22 -22
- package/dist/esm/components/dialog.js +5 -5
- package/dist/esm/components/drawer.js +13 -13
- package/dist/esm/components/file-upload.js +12 -12
- package/dist/esm/components/form-group.js +162 -1
- package/dist/esm/components/form.js +159 -22
- package/dist/esm/components/input.js +23 -14
- package/dist/esm/components/list.js +3 -3
- package/dist/esm/components/markdown-body.js +6 -6
- package/dist/esm/components/modal.js +7 -7
- package/dist/esm/components/multi-select.js +16 -16
- package/dist/esm/components/navigation.js +20 -20
- package/dist/esm/components/nested-menu.js +5 -5
- package/dist/esm/components/otp-input.js +5 -5
- package/dist/esm/components/pin-input.js +5 -5
- package/dist/esm/components/popover.js +15 -15
- package/dist/esm/components/progress.js +2 -2
- package/dist/esm/components/radio.js +2 -2
- package/dist/esm/components/rating.js +1 -1
- package/dist/esm/components/segment-control.js +6 -6
- package/dist/esm/components/select.js +7 -7
- package/dist/esm/components/skeleton.js +11 -11
- package/dist/esm/components/slider.js +16 -16
- package/dist/esm/components/snackbar.js +5 -5
- package/dist/esm/components/stepper.js +9 -9
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/table.js +3 -3
- package/dist/esm/components/textarea.js +5 -5
- package/dist/esm/components/theme-controller.js +4 -4
- package/dist/esm/components/time-input.js +10 -10
- package/dist/esm/components/timeline.js +6 -6
- package/dist/esm/components/toast.js +3 -3
- package/dist/esm/components/toggle.js +8 -8
- package/dist/esm/components/tooltip.js +1 -1
- package/dist/esm/components/tree-select.js +14 -14
- package/dist/esm/tailwind-plugin.js +38 -79
- package/dist/index.css +1435 -1137
- package/dist/index.min.css +1 -1
- package/dist/themes/{forest.css → generated/forest.css} +26 -94
- package/dist/themes/generated/moonlight.css +77 -0
- package/dist/themes/{ocean.css → generated/ocean.css} +26 -103
- package/dist/themes/generated/spacing.css +36 -0
- package/dist/themes/{sunset.css → generated/sunset.css} +26 -95
- package/dist/themes/generated/sunshine.css +77 -0
- package/dist/types/tailwind-plugin.d.ts +1 -0
- package/dist/types/tailwind-plugin.d.ts.map +1 -1
- package/dist/types/themes/generated/ts/types.d.ts +76 -0
- package/dist/types/themes/generated/ts/types.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/plugin.d.ts +1 -1
- package/dist/types/types/plugin.d.ts.map +1 -1
- package/dist/types/types/theme.d.ts +5 -152
- package/dist/types/types/theme.d.ts.map +1 -1
- package/package.json +11 -6
- package/dist/themes/moonlight.css +0 -271
- package/dist/themes/sunshine.css +0 -252
|
@@ -17,14 +17,14 @@ export const css = `/**
|
|
|
17
17
|
max-height: calc(100vh - 4rem);
|
|
18
18
|
background-color: var(--color-surface);
|
|
19
19
|
color: var(--color-on-surface);
|
|
20
|
-
border-radius:
|
|
20
|
+
border-radius: var(--radius-2xl);
|
|
21
21
|
box-shadow: var(--shadow-2xl);
|
|
22
22
|
overflow: hidden;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/* Dialog Backdrop (native ::backdrop) */
|
|
26
26
|
dialog.dialog::backdrop {
|
|
27
|
-
background-color:
|
|
27
|
+
background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/* Dialog Box - inner container for flex layout */
|
|
@@ -63,7 +63,7 @@ export const css = `/**
|
|
|
63
63
|
color: var(--color-on-surface-variant);
|
|
64
64
|
background-color: transparent;
|
|
65
65
|
border: none;
|
|
66
|
-
border-radius:
|
|
66
|
+
border-radius: var(--radius-full);
|
|
67
67
|
cursor: pointer;
|
|
68
68
|
transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
|
|
69
69
|
flex-shrink: 0;
|
|
@@ -75,8 +75,8 @@ export const css = `/**
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.dialog-close:focus-visible {
|
|
78
|
-
outline:
|
|
79
|
-
|
|
78
|
+
outline: none;
|
|
79
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
/* Dialog Body */
|
|
@@ -10,7 +10,7 @@ export const css = `/**
|
|
|
10
10
|
position: fixed;
|
|
11
11
|
inset: 0;
|
|
12
12
|
z-index: 1100;
|
|
13
|
-
background-color:
|
|
13
|
+
background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
|
|
14
14
|
opacity: 0;
|
|
15
15
|
visibility: hidden;
|
|
16
16
|
transition: opacity 300ms ease-out, visibility 300ms ease-out;
|
|
@@ -57,7 +57,7 @@ export const css = `/**
|
|
|
57
57
|
width: 20rem;
|
|
58
58
|
max-width: calc(100vw - 3.5rem);
|
|
59
59
|
transform: translateX(-100%);
|
|
60
|
-
border-radius: 0
|
|
60
|
+
border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
.drawer-left.drawer-open {
|
|
@@ -71,7 +71,7 @@ export const css = `/**
|
|
|
71
71
|
width: 20rem;
|
|
72
72
|
max-width: calc(100vw - 3.5rem);
|
|
73
73
|
transform: translateX(100%);
|
|
74
|
-
border-radius:
|
|
74
|
+
border-radius: var(--radius-lg) 0 0 var(--radius-lg);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.drawer-right.drawer-open {
|
|
@@ -85,7 +85,7 @@ export const css = `/**
|
|
|
85
85
|
height: auto;
|
|
86
86
|
max-height: 80vh;
|
|
87
87
|
transform: translateY(-100%);
|
|
88
|
-
border-radius: 0 0
|
|
88
|
+
border-radius: 0 0 var(--radius-lg) var(--radius-lg);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
.drawer-top.drawer-open {
|
|
@@ -99,7 +99,7 @@ export const css = `/**
|
|
|
99
99
|
height: auto;
|
|
100
100
|
max-height: 80vh;
|
|
101
101
|
transform: translateY(100%);
|
|
102
|
-
border-radius:
|
|
102
|
+
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.drawer-bottom.drawer-open {
|
|
@@ -132,7 +132,7 @@ export const css = `/**
|
|
|
132
132
|
color: var(--color-on-surface-variant);
|
|
133
133
|
background-color: transparent;
|
|
134
134
|
border: none;
|
|
135
|
-
border-radius:
|
|
135
|
+
border-radius: var(--radius-full);
|
|
136
136
|
cursor: pointer;
|
|
137
137
|
transition: background-color 150ms ease-in-out;
|
|
138
138
|
}
|
|
@@ -142,8 +142,8 @@ export const css = `/**
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
.drawer-close:focus-visible {
|
|
145
|
-
outline:
|
|
146
|
-
|
|
145
|
+
outline: none;
|
|
146
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
/* Drawer Body (main content area) */
|
|
@@ -174,7 +174,7 @@ export const css = `/**
|
|
|
174
174
|
color: var(--color-on-surface-variant);
|
|
175
175
|
background-color: transparent;
|
|
176
176
|
border: none;
|
|
177
|
-
border-radius:
|
|
177
|
+
border-radius: var(--radius-2xl);
|
|
178
178
|
cursor: pointer;
|
|
179
179
|
text-decoration: none;
|
|
180
180
|
transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
|
|
@@ -187,8 +187,8 @@ export const css = `/**
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
.drawer-item:focus-visible {
|
|
190
|
-
outline:
|
|
191
|
-
|
|
190
|
+
outline: none;
|
|
191
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
/* Active Item States */
|
|
@@ -226,7 +226,7 @@ export const css = `/**
|
|
|
226
226
|
font-weight: 500;
|
|
227
227
|
background-color: var(--color-error-container);
|
|
228
228
|
color: var(--color-on-error-container);
|
|
229
|
-
border-radius:
|
|
229
|
+
border-radius: var(--radius-full);
|
|
230
230
|
margin-left: auto;
|
|
231
231
|
}
|
|
232
232
|
|
|
@@ -268,7 +268,7 @@ export const css = `/**
|
|
|
268
268
|
.drawer-profile-avatar {
|
|
269
269
|
width: 2.5rem;
|
|
270
270
|
height: 2.5rem;
|
|
271
|
-
border-radius:
|
|
271
|
+
border-radius: var(--radius-full);
|
|
272
272
|
background-color: var(--color-primary-container);
|
|
273
273
|
display: flex;
|
|
274
274
|
align-items: center;
|
|
@@ -24,7 +24,7 @@ export const css = `/**
|
|
|
24
24
|
padding: 2rem;
|
|
25
25
|
background-color: var(--color-surface);
|
|
26
26
|
border: 2px dashed currentColor;
|
|
27
|
-
border-radius:
|
|
27
|
+
border-radius: var(--radius-md);
|
|
28
28
|
cursor: pointer;
|
|
29
29
|
transition: border-color 150ms ease-in-out, background-color 150ms ease-in-out;
|
|
30
30
|
}
|
|
@@ -107,7 +107,7 @@ export const css = `/**
|
|
|
107
107
|
gap: 0.75rem;
|
|
108
108
|
padding: 0.75rem;
|
|
109
109
|
background-color: var(--color-surface-container);
|
|
110
|
-
border-radius:
|
|
110
|
+
border-radius: var(--radius-sm);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
.file-upload-item-icon {
|
|
@@ -118,7 +118,7 @@ export const css = `/**
|
|
|
118
118
|
height: 2.5rem;
|
|
119
119
|
background-color: var(--color-primary-container);
|
|
120
120
|
color: var(--color-on-primary-container);
|
|
121
|
-
border-radius:
|
|
121
|
+
border-radius: var(--radius-sm);
|
|
122
122
|
font-size: 1.25rem;
|
|
123
123
|
flex-shrink: 0;
|
|
124
124
|
}
|
|
@@ -151,7 +151,7 @@ export const css = `/**
|
|
|
151
151
|
color: var(--color-on-surface-variant);
|
|
152
152
|
background-color: transparent;
|
|
153
153
|
border: none;
|
|
154
|
-
border-radius:
|
|
154
|
+
border-radius: var(--radius-full);
|
|
155
155
|
cursor: pointer;
|
|
156
156
|
transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
|
|
157
157
|
flex-shrink: 0;
|
|
@@ -168,7 +168,7 @@ export const css = `/**
|
|
|
168
168
|
height: 0.25rem;
|
|
169
169
|
margin-top: 0.5rem;
|
|
170
170
|
background-color: var(--color-surface-container-highest);
|
|
171
|
-
border-radius:
|
|
171
|
+
border-radius: var(--radius-full);
|
|
172
172
|
overflow: hidden;
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -178,7 +178,7 @@ export const css = `/**
|
|
|
178
178
|
left: 0;
|
|
179
179
|
height: 100%;
|
|
180
180
|
background-color: var(--color-primary);
|
|
181
|
-
border-radius:
|
|
181
|
+
border-radius: var(--radius-full);
|
|
182
182
|
transition: width 150ms ease-in-out;
|
|
183
183
|
}
|
|
184
184
|
|
|
@@ -218,7 +218,7 @@ export const css = `/**
|
|
|
218
218
|
.file-upload-preview-item {
|
|
219
219
|
position: relative;
|
|
220
220
|
aspect-ratio: 1;
|
|
221
|
-
border-radius:
|
|
221
|
+
border-radius: var(--radius-sm);
|
|
222
222
|
overflow: hidden;
|
|
223
223
|
background-color: var(--color-surface-container);
|
|
224
224
|
}
|
|
@@ -241,7 +241,7 @@ export const css = `/**
|
|
|
241
241
|
background-color: var(--color-on-surface);
|
|
242
242
|
color: var(--color-surface);
|
|
243
243
|
border: none;
|
|
244
|
-
border-radius:
|
|
244
|
+
border-radius: var(--radius-full);
|
|
245
245
|
cursor: pointer;
|
|
246
246
|
opacity: 0;
|
|
247
247
|
transition: opacity 150ms ease-in-out;
|
|
@@ -277,10 +277,10 @@ export const css = `/**
|
|
|
277
277
|
padding: 0.75rem 1.5rem;
|
|
278
278
|
font-size: 0.875rem;
|
|
279
279
|
font-weight: 500;
|
|
280
|
-
color: var(--color-
|
|
280
|
+
color: var(--color-primary-content);
|
|
281
281
|
background-color: var(--color-primary);
|
|
282
282
|
border: none;
|
|
283
|
-
border-radius:
|
|
283
|
+
border-radius: var(--radius-sm);
|
|
284
284
|
cursor: pointer;
|
|
285
285
|
transition: background-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
|
|
286
286
|
}
|
|
@@ -290,8 +290,8 @@ export const css = `/**
|
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
.file-upload-button:focus-visible {
|
|
293
|
-
outline:
|
|
294
|
-
|
|
293
|
+
outline: none;
|
|
294
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
.file-upload-button:disabled {
|
|
@@ -121,7 +121,7 @@ export const css = `/**
|
|
|
121
121
|
padding: 1rem;
|
|
122
122
|
margin: 0;
|
|
123
123
|
border: 1px solid var(--color-outline-variant);
|
|
124
|
-
border-radius:
|
|
124
|
+
border-radius: var(--radius-sm);
|
|
125
125
|
background-color: transparent;
|
|
126
126
|
}
|
|
127
127
|
|
|
@@ -333,11 +333,172 @@ export const css = `/**
|
|
|
333
333
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
/* Info State on Form Group */
|
|
337
|
+
.form-group-info .form-label {
|
|
338
|
+
color: var(--color-info);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.form-group-info .input,
|
|
342
|
+
.form-group-info .select,
|
|
343
|
+
.form-group-info .textarea {
|
|
344
|
+
border-color: var(--color-info);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.form-group-info .input:focus-visible,
|
|
348
|
+
.form-group-info .select:focus-visible,
|
|
349
|
+
.form-group-info .textarea:focus-visible {
|
|
350
|
+
border-color: var(--color-info);
|
|
351
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
|
|
352
|
+
}
|
|
353
|
+
|
|
336
354
|
/* Disabled Form Group */
|
|
337
355
|
.form-group-disabled {
|
|
338
356
|
opacity: 0.5;
|
|
339
357
|
pointer-events: none;
|
|
340
358
|
}
|
|
359
|
+
|
|
360
|
+
/* ARIA-based validation states — mirrors class-based states for native form validation */
|
|
361
|
+
.input[aria-invalid="true"],
|
|
362
|
+
.select[aria-invalid="true"],
|
|
363
|
+
.textarea[aria-invalid="true"] {
|
|
364
|
+
border-color: var(--color-error);
|
|
365
|
+
color: var(--color-error);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.input[aria-invalid="true"]:focus-visible,
|
|
369
|
+
.select[aria-invalid="true"]:focus-visible,
|
|
370
|
+
.textarea[aria-invalid="true"]:focus-visible {
|
|
371
|
+
border-color: var(--color-error);
|
|
372
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/* ARIA-based validation for checkbox, radio, switch, file-input
|
|
376
|
+
(frameworks like React Hook Form / Angular set aria-invalid programmatically) */
|
|
377
|
+
.checkbox[aria-invalid="true"],
|
|
378
|
+
.radio[aria-invalid="true"],
|
|
379
|
+
.file-input[aria-invalid="true"] {
|
|
380
|
+
border-color: var(--color-error);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.checkbox[aria-invalid="true"]:focus-visible,
|
|
384
|
+
.radio[aria-invalid="true"]:focus-visible,
|
|
385
|
+
.file-input[aria-invalid="true"]:focus-visible {
|
|
386
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.switch[aria-invalid="true"] {
|
|
390
|
+
border-color: var(--color-error);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.switch[aria-invalid="true"]:focus-visible {
|
|
394
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/* ARIA required indicator for labels */
|
|
398
|
+
.form-label[aria-required="true"]::after,
|
|
399
|
+
label[aria-required="true"]::after {
|
|
400
|
+
content: ' *';
|
|
401
|
+
color: var(--color-error);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/* Native :invalid pseudo-class (opt-in with .validate class to avoid red on page load) */
|
|
405
|
+
.validate .input:invalid,
|
|
406
|
+
.validate .select:invalid,
|
|
407
|
+
.validate .textarea:invalid {
|
|
408
|
+
border-color: var(--color-error);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.validate .input:valid,
|
|
412
|
+
.validate .select:valid,
|
|
413
|
+
.validate .textarea:valid {
|
|
414
|
+
border-color: var(--color-success);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/* :user-invalid — fires only after user interaction (no .validate wrapper needed) */
|
|
418
|
+
.input:user-invalid,
|
|
419
|
+
.select:user-invalid,
|
|
420
|
+
.textarea:user-invalid {
|
|
421
|
+
border-color: var(--color-error);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.input:user-invalid:focus-visible,
|
|
425
|
+
.select:user-invalid:focus-visible,
|
|
426
|
+
.textarea:user-invalid:focus-visible {
|
|
427
|
+
border-color: var(--color-error);
|
|
428
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.input:user-valid,
|
|
432
|
+
.select:user-valid,
|
|
433
|
+
.textarea:user-valid {
|
|
434
|
+
border-color: var(--color-success);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
.input:user-valid:focus-visible,
|
|
438
|
+
.select:user-valid:focus-visible,
|
|
439
|
+
.textarea:user-valid:focus-visible {
|
|
440
|
+
border-color: var(--color-success);
|
|
441
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/* Checkbox & Radio — validation pseudo-classes */
|
|
445
|
+
.checkbox:user-invalid,
|
|
446
|
+
.radio:user-invalid {
|
|
447
|
+
border-color: var(--color-error);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.checkbox:user-invalid:focus-visible,
|
|
451
|
+
.radio:user-invalid:focus-visible {
|
|
452
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.checkbox:user-valid:checked,
|
|
456
|
+
.radio:user-valid:checked {
|
|
457
|
+
border-color: var(--color-success);
|
|
458
|
+
background-color: var(--color-success);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/* Switch — validation pseudo-classes (required but unchecked) */
|
|
462
|
+
.switch:user-invalid {
|
|
463
|
+
border-color: var(--color-error);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.switch:user-invalid:focus-visible {
|
|
467
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
.switch:user-valid:checked {
|
|
471
|
+
background-color: var(--color-success);
|
|
472
|
+
border-color: var(--color-success);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/* File Input — validation pseudo-classes */
|
|
476
|
+
.file-input:user-invalid {
|
|
477
|
+
border-color: var(--color-error);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.file-input:user-invalid:focus-visible {
|
|
481
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/* Filled Input — validation with bottom border */
|
|
485
|
+
.input-filled:user-invalid {
|
|
486
|
+
border-bottom-color: var(--color-error);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.input-filled:user-invalid:focus-visible {
|
|
490
|
+
border-bottom-color: var(--color-error);
|
|
491
|
+
box-shadow: none;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.input-filled:user-valid {
|
|
495
|
+
border-bottom-color: var(--color-success);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.input-filled:user-valid:focus-visible {
|
|
499
|
+
border-bottom-color: var(--color-success);
|
|
500
|
+
box-shadow: none;
|
|
501
|
+
}
|
|
341
502
|
}
|
|
342
503
|
`;
|
|
343
504
|
|