@duskmoon-dev/core 1.19.3 → 1.19.4
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/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 +5991 -6060
- package/dist/components/input.css +114 -31
- package/dist/components/kbd.css +28 -0
- package/dist/components/list.css +22 -3
- package/dist/components/otp-input.css +124 -6
- 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/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/toggle-switch.css +165 -0
- package/dist/components/toggle.css +198 -32
- 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/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/otp-input.js +125 -7
- 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/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/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/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 +5977 -6047
- package/dist/index.min.css +1 -1
- package/dist/standalone/duskmoonui-themes.css +1 -1
- package/dist/standalone/duskmoonui.css +6967 -7028
- package/dist/standalone/duskmoonui.js +11 -12
- package/dist/standalone/duskmoonui.mjs +11 -12
- package/dist/types/types/plugin.d.ts +1 -1
- package/dist/types/types/plugin.d.ts.map +1 -1
- package/package.json +98 -1
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
// Auto-generated from checkbox.css
|
|
2
|
-
export const 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
|
+
/**
|
|
3
71
|
* Checkbox Component Styles
|
|
4
72
|
* DuskMoonUI - Material Design 3 inspired checkbox
|
|
5
73
|
*
|
|
@@ -8,6 +76,8 @@ export const css = `/**
|
|
|
8
76
|
*/
|
|
9
77
|
|
|
10
78
|
@layer components {
|
|
79
|
+
:where(.checkbox) { box-sizing: border-box; }
|
|
80
|
+
|
|
11
81
|
/* Base Checkbox - applied directly to input[type="checkbox"] */
|
|
12
82
|
.checkbox {
|
|
13
83
|
--checkbox-size: 1.25rem;
|
|
@@ -36,8 +106,8 @@ export const css = `/**
|
|
|
36
106
|
height: 0.35em;
|
|
37
107
|
transform: scale(0) rotate(-45deg);
|
|
38
108
|
transform-origin: center;
|
|
39
|
-
border-bottom: 2px solid var(--color-primary-content);
|
|
40
|
-
border-left: 2px solid var(--color-primary-content);
|
|
109
|
+
border-bottom: 2px solid var(--dm-validation-content, var(--color-primary-content));
|
|
110
|
+
border-left: 2px solid var(--dm-validation-content, var(--color-primary-content));
|
|
41
111
|
transition: transform 150ms ease-in-out;
|
|
42
112
|
}
|
|
43
113
|
|
|
@@ -60,7 +130,7 @@ export const css = `/**
|
|
|
60
130
|
.checkbox:indeterminate::before {
|
|
61
131
|
width: 0.5em;
|
|
62
132
|
height: 0;
|
|
63
|
-
border-bottom: 2px solid var(--color-primary-content);
|
|
133
|
+
border-bottom: 2px solid var(--dm-validation-content, var(--color-primary-content));
|
|
64
134
|
border-left: 0;
|
|
65
135
|
transform: scale(1) rotate(0deg);
|
|
66
136
|
}
|
|
@@ -122,7 +192,7 @@ export const css = `/**
|
|
|
122
192
|
|
|
123
193
|
.checkbox-primary:checked::before,
|
|
124
194
|
.checkbox-primary:indeterminate::before {
|
|
125
|
-
border-color: var(--color-primary-content);
|
|
195
|
+
border-color: var(--dm-validation-content, var(--color-primary-content));
|
|
126
196
|
}
|
|
127
197
|
|
|
128
198
|
.checkbox-secondary {
|
|
@@ -131,7 +201,7 @@ export const css = `/**
|
|
|
131
201
|
|
|
132
202
|
.checkbox-secondary:checked::before,
|
|
133
203
|
.checkbox-secondary:indeterminate::before {
|
|
134
|
-
border-color: var(--color-secondary-content);
|
|
204
|
+
border-color: var(--dm-validation-content, var(--color-secondary-content));
|
|
135
205
|
}
|
|
136
206
|
|
|
137
207
|
.checkbox-tertiary {
|
|
@@ -140,7 +210,7 @@ export const css = `/**
|
|
|
140
210
|
|
|
141
211
|
.checkbox-tertiary:checked::before,
|
|
142
212
|
.checkbox-tertiary:indeterminate::before {
|
|
143
|
-
border-color: var(--color-tertiary-content);
|
|
213
|
+
border-color: var(--dm-validation-content, var(--color-tertiary-content));
|
|
144
214
|
}
|
|
145
215
|
|
|
146
216
|
.checkbox-success {
|
|
@@ -149,7 +219,7 @@ export const css = `/**
|
|
|
149
219
|
|
|
150
220
|
.checkbox-success:checked::before,
|
|
151
221
|
.checkbox-success:indeterminate::before {
|
|
152
|
-
border-color: var(--color-success-content);
|
|
222
|
+
border-color: var(--dm-validation-content, var(--color-success-content));
|
|
153
223
|
}
|
|
154
224
|
|
|
155
225
|
.checkbox-warning {
|
|
@@ -158,7 +228,7 @@ export const css = `/**
|
|
|
158
228
|
|
|
159
229
|
.checkbox-warning:checked::before,
|
|
160
230
|
.checkbox-warning:indeterminate::before {
|
|
161
|
-
border-color: var(--color-warning-content);
|
|
231
|
+
border-color: var(--dm-validation-content, var(--color-warning-content));
|
|
162
232
|
}
|
|
163
233
|
|
|
164
234
|
.checkbox-error {
|
|
@@ -167,7 +237,7 @@ export const css = `/**
|
|
|
167
237
|
|
|
168
238
|
.checkbox-error:checked::before,
|
|
169
239
|
.checkbox-error:indeterminate::before {
|
|
170
|
-
border-color: var(--color-error-content);
|
|
240
|
+
border-color: var(--dm-validation-content, var(--color-error-content));
|
|
171
241
|
}
|
|
172
242
|
|
|
173
243
|
.checkbox-info {
|
|
@@ -176,7 +246,7 @@ export const css = `/**
|
|
|
176
246
|
|
|
177
247
|
.checkbox-info:checked::before,
|
|
178
248
|
.checkbox-info:indeterminate::before {
|
|
179
|
-
border-color: var(--color-info-content);
|
|
249
|
+
border-color: var(--dm-validation-content, var(--color-info-content));
|
|
180
250
|
}
|
|
181
251
|
|
|
182
252
|
.checkbox-accent {
|
|
@@ -185,7 +255,7 @@ export const css = `/**
|
|
|
185
255
|
|
|
186
256
|
.checkbox-accent:checked::before,
|
|
187
257
|
.checkbox-accent:indeterminate::before {
|
|
188
|
-
border-color: var(--color-accent-content);
|
|
258
|
+
border-color: var(--dm-validation-content, var(--color-accent-content));
|
|
189
259
|
}
|
|
190
260
|
|
|
191
261
|
.checkbox-neutral {
|
|
@@ -194,7 +264,7 @@ export const css = `/**
|
|
|
194
264
|
|
|
195
265
|
.checkbox-neutral:checked::before,
|
|
196
266
|
.checkbox-neutral:indeterminate::before {
|
|
197
|
-
border-color: var(--color-neutral-content);
|
|
267
|
+
border-color: var(--dm-validation-content, var(--color-neutral-content));
|
|
198
268
|
}
|
|
199
269
|
|
|
200
270
|
.checkbox-base {
|
|
@@ -203,7 +273,7 @@ export const css = `/**
|
|
|
203
273
|
|
|
204
274
|
.checkbox-base:checked::before,
|
|
205
275
|
.checkbox-base:indeterminate::before {
|
|
206
|
-
border-color: var(--color-base-content);
|
|
276
|
+
border-color: var(--dm-validation-content, var(--color-base-content));
|
|
207
277
|
}
|
|
208
278
|
|
|
209
279
|
/* Ghost Variant — borderless unchecked state */
|
|
@@ -29,7 +29,7 @@ export const css = `/**
|
|
|
29
29
|
border: none;
|
|
30
30
|
cursor: pointer;
|
|
31
31
|
transition: background-color 150ms ease-in-out;
|
|
32
|
-
text-align:
|
|
32
|
+
text-align: start;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.collapse-trigger:hover {
|
|
@@ -66,33 +66,36 @@ export const css = `/**
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/* Open State */
|
|
69
|
-
.collapse-open .collapse-content
|
|
69
|
+
.collapse:not(details):not(.collapse-closed).collapse-open > .collapse-content,
|
|
70
|
+
details.collapse[open] > .collapse-content {
|
|
70
71
|
grid-template-rows: 1fr;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
.collapse-open .collapse-content >
|
|
74
|
+
.collapse:not(details):not(.collapse-closed).collapse-open > .collapse-content > *,
|
|
75
|
+
details.collapse[open] > .collapse-content > * {
|
|
74
76
|
padding: 0 1rem 1rem;
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
.collapse-open .collapse-icon
|
|
79
|
+
.collapse:not(details):not(.collapse-closed).collapse-open > .collapse-trigger > .collapse-icon,
|
|
80
|
+
details.collapse[open] > .collapse-trigger > .collapse-icon {
|
|
78
81
|
transform: rotate(180deg);
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
/* Closed State (explicit) */
|
|
82
|
-
.collapse-closed .collapse-content {
|
|
85
|
+
.collapse:not(details).collapse-closed > .collapse-content {
|
|
83
86
|
grid-template-rows: 0fr;
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
/* Legacy show class for backwards compatibility */
|
|
87
|
-
.collapse.show .collapse-content {
|
|
90
|
+
.collapse:not(details):not(.collapse-closed).show > .collapse-content {
|
|
88
91
|
grid-template-rows: 1fr;
|
|
89
92
|
}
|
|
90
93
|
|
|
91
|
-
.collapse.show .collapse-content > * {
|
|
94
|
+
.collapse:not(details):not(.collapse-closed).show > .collapse-content > * {
|
|
92
95
|
padding: 0 1rem 1rem;
|
|
93
96
|
}
|
|
94
97
|
|
|
95
|
-
.collapse.show .collapse-icon {
|
|
98
|
+
.collapse:not(details):not(.collapse-closed).show > .collapse-trigger > .collapse-icon {
|
|
96
99
|
transform: rotate(180deg);
|
|
97
100
|
}
|
|
98
101
|
|
|
@@ -179,10 +182,8 @@ export const css = `/**
|
|
|
179
182
|
color: var(--color-on-surface-variant);
|
|
180
183
|
}
|
|
181
184
|
|
|
182
|
-
.collapse-card.collapse-open .collapse-
|
|
183
|
-
.collapse-card
|
|
184
|
-
.collapse-card.show .collapse-inner,
|
|
185
|
-
.collapse-card.show .collapse-content > * {
|
|
185
|
+
.collapse-card:not(details):not(.collapse-closed):is(.collapse-open, .show) > .collapse-content > *,
|
|
186
|
+
details.collapse-card[open] > .collapse-content > * {
|
|
186
187
|
padding: 0 1rem 1rem;
|
|
187
188
|
}
|
|
188
189
|
|
|
@@ -292,7 +293,8 @@ export const css = `/**
|
|
|
292
293
|
padding: 0 0.75rem;
|
|
293
294
|
}
|
|
294
295
|
|
|
295
|
-
.collapse-sm.collapse-open .collapse-content >
|
|
296
|
+
.collapse-sm:not(details):not(.collapse-closed):is(.collapse-open, .show) > .collapse-content > *,
|
|
297
|
+
details.collapse-sm[open] > .collapse-content > * {
|
|
296
298
|
padding: 0 0.75rem 0.75rem;
|
|
297
299
|
}
|
|
298
300
|
|
|
@@ -305,7 +307,8 @@ export const css = `/**
|
|
|
305
307
|
padding: 0 1.25rem;
|
|
306
308
|
}
|
|
307
309
|
|
|
308
|
-
.collapse-lg.collapse-open .collapse-content >
|
|
310
|
+
.collapse-lg:not(details):not(.collapse-closed):is(.collapse-open, .show) > .collapse-content > *,
|
|
311
|
+
details.collapse-lg[open] > .collapse-content > * {
|
|
309
312
|
padding: 0 1.25rem 1.25rem;
|
|
310
313
|
}
|
|
311
314
|
|
|
@@ -346,13 +349,13 @@ export const css = `/**
|
|
|
346
349
|
}
|
|
347
350
|
|
|
348
351
|
/* Slide Animation */
|
|
349
|
-
.collapse-slide .collapse-content > * {
|
|
352
|
+
.collapse-slide > .collapse-content > * {
|
|
350
353
|
transform: translateY(-0.5rem);
|
|
351
354
|
opacity: 0;
|
|
352
355
|
transition: transform 300ms ease-in-out, opacity 200ms ease-in-out;
|
|
353
356
|
}
|
|
354
357
|
|
|
355
|
-
.collapse-slide.collapse-open .collapse-content > * {
|
|
358
|
+
.collapse-slide:not(details):not(.collapse-closed):is(.collapse-open, .show) > .collapse-content > * {
|
|
356
359
|
transform: translateY(0);
|
|
357
360
|
opacity: 1;
|
|
358
361
|
}
|
|
@@ -496,6 +499,54 @@ export const css = `/**
|
|
|
496
499
|
transition: height 300ms ease-in-out;
|
|
497
500
|
}
|
|
498
501
|
|
|
502
|
+
/* Native state is authoritative; controlled aliases never select native items. */
|
|
503
|
+
details.collapse { display: block; }
|
|
504
|
+
details.collapse > summary { list-style: none; }
|
|
505
|
+
details.collapse > summary::-webkit-details-marker { display: none; }
|
|
506
|
+
.collapse:not(details):not(.collapse-open):not(.show) > .collapse-content,
|
|
507
|
+
.collapse:not(details).collapse-closed > .collapse-content,
|
|
508
|
+
.collapse-content[hidden] { display: none; }
|
|
509
|
+
.collapse-content > * { min-block-size: 0; min-inline-size: 0; overflow-wrap: anywhere; }
|
|
510
|
+
.collapse.collapse-fade { opacity: 1; }
|
|
511
|
+
.collapse.collapse-fade > .collapse-content { opacity: 0; }
|
|
512
|
+
.collapse.collapse-fade:not(details):not(.collapse-closed):is(.show, .collapse-open) > .collapse-content,
|
|
513
|
+
details.collapse.collapse-fade[open] > .collapse-content { opacity: 1; }
|
|
514
|
+
.collapse.collapse-slide:not(details):not(.collapse-closed):is(.show, .collapse-open) > .collapse-content > *,
|
|
515
|
+
details.collapse.collapse-slide[open] > .collapse-content > * { transform: none; opacity: 1; }
|
|
516
|
+
.collapse.collapse-horizontal { display: block; }
|
|
517
|
+
.collapse.collapse-horizontal > .collapse-content { grid-template-rows: 1fr; grid-template-columns: 0fr; white-space: normal; }
|
|
518
|
+
.collapse.collapse-horizontal:not(details):not(.collapse-closed):is(.show, .collapse-open) > .collapse-content,
|
|
519
|
+
details.collapse.collapse-horizontal[open] > .collapse-content { grid-template-columns: 1fr; }
|
|
520
|
+
.collapse.collapse-horizontal-fixed { width: auto; }
|
|
521
|
+
.collapse.collapse-horizontal-fixed > .collapse-content { inline-size: 0; }
|
|
522
|
+
.collapse.collapse-horizontal-fixed:not(details):not(.collapse-closed):is(.show, .collapse-open) > .collapse-content,
|
|
523
|
+
details.collapse.collapse-horizontal-fixed[open] > .collapse-content { inline-size: min(100%, var(--collapse-width, 20rem)); }
|
|
524
|
+
details.collapse.collapse-maxheight { max-height: none; }
|
|
525
|
+
.collapse.collapse-maxheight:not(details):not(.collapse-closed):is(.show, .collapse-open) { max-height: var(--collapse-max-height, 100rem); }
|
|
526
|
+
.collapse.collapse-maxheight:not(details).collapse-closed { max-height: 0; }
|
|
527
|
+
|
|
528
|
+
/* Native disclosure animation; older browsers retain immediate native behavior. */
|
|
529
|
+
@supports (interpolate-size: allow-keywords) {
|
|
530
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
531
|
+
details.collapse::details-content {
|
|
532
|
+
interpolate-size: allow-keywords;
|
|
533
|
+
block-size: 0;
|
|
534
|
+
overflow: clip;
|
|
535
|
+
transition: block-size 300ms ease-in-out, content-visibility 300ms allow-discrete;
|
|
536
|
+
}
|
|
537
|
+
details.collapse[open]::details-content { block-size: auto; }
|
|
538
|
+
.collapse:not(details) > .collapse-content {
|
|
539
|
+
interpolate-size: allow-keywords;
|
|
540
|
+
block-size: 0;
|
|
541
|
+
transition: block-size 300ms ease-in-out, display 300ms allow-discrete;
|
|
542
|
+
}
|
|
543
|
+
.collapse:not(details):not(.collapse-closed):is(.show, .collapse-open) > .collapse-content:not([hidden]) { block-size: auto; }
|
|
544
|
+
@starting-style {
|
|
545
|
+
.collapse:not(details):not(.collapse-closed):is(.show, .collapse-open) > .collapse-content:not([hidden]) { block-size: 0; }
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
|
|
499
550
|
/* Reduce Motion */
|
|
500
551
|
@media (prefers-reduced-motion: reduce) {
|
|
501
552
|
.collapse,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Auto-generated from countdown.css
|
|
2
|
+
export const css = `@layer components {
|
|
3
|
+
.countdown { display: inline-flex; flex-wrap: wrap; gap: 0.5rem; align-items: baseline; color: var(--color-on-surface); font-variant-numeric: tabular-nums; }
|
|
4
|
+
.countdown-value { display: inline-block; min-inline-size: 2ch; text-align: center; font-size: 2rem; line-height: 1.2; overflow-wrap: anywhere; }
|
|
5
|
+
.countdown-sm .countdown-value { font-size: 1rem; }
|
|
6
|
+
.countdown-lg .countdown-value { font-size: 3rem; }
|
|
7
|
+
@media (prefers-reduced-motion: no-preference) { .countdown-transition .countdown-value { transition: color 150ms ease; } }
|
|
8
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
9
|
+
.countdown-animated .countdown-value.countdown-tick { animation: countdown-tick 240ms ease-out; }
|
|
10
|
+
}
|
|
11
|
+
@keyframes countdown-tick {
|
|
12
|
+
from { transform: translateY(-0.2em); opacity: 0.35; }
|
|
13
|
+
to { transform: translateY(0); opacity: 1; }
|
|
14
|
+
}
|
|
15
|
+
@media print { .countdown-value.countdown-tick { animation: none; } }
|
|
16
|
+
.countdown-primary { color: var(--color-primary); }
|
|
17
|
+
.countdown-secondary { color: var(--color-secondary); }
|
|
18
|
+
.countdown-tertiary { color: var(--color-tertiary); }
|
|
19
|
+
.countdown-info { color: var(--color-info); }
|
|
20
|
+
.countdown-success { color: var(--color-success); }
|
|
21
|
+
.countdown-warning { color: var(--color-warning); }
|
|
22
|
+
.countdown-error { color: var(--color-error); }
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
|
|
27
|
+
if (sheet) {
|
|
28
|
+
sheet.replaceSync(css);
|
|
29
|
+
}
|
|
30
|
+
export const styles = sheet;
|
|
31
|
+
export default sheet;
|
|
@@ -1,10 +1,80 @@
|
|
|
1
1
|
// Auto-generated from datepicker.css
|
|
2
|
-
export const 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
|
+
/**
|
|
3
71
|
* Datepicker Component Styles
|
|
4
72
|
* DuskMoonUI - Material Design 3 inspired datepicker system
|
|
5
73
|
*/
|
|
6
74
|
|
|
7
75
|
@layer components {
|
|
76
|
+
:where(.datepicker, .datepicker-input) { box-sizing: border-box; }
|
|
77
|
+
|
|
8
78
|
/* Datepicker Container */
|
|
9
79
|
.datepicker {
|
|
10
80
|
position: relative;
|
|
@@ -197,6 +267,9 @@ export const css = `/**
|
|
|
197
267
|
padding: 0.5rem;
|
|
198
268
|
}
|
|
199
269
|
|
|
270
|
+
.datepicker-calendar > :is(.datepicker-weekdays, .datepicker-days) { grid-column: 1 / -1; }
|
|
271
|
+
.datepicker-trigger:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
|
|
272
|
+
|
|
200
273
|
/* Weekday Headers */
|
|
201
274
|
.datepicker-weekdays {
|
|
202
275
|
display: grid;
|
|
@@ -679,6 +752,7 @@ export const css = `/**
|
|
|
679
752
|
/* Inline Datepicker (always visible) */
|
|
680
753
|
.datepicker-inline {
|
|
681
754
|
position: static;
|
|
755
|
+
max-inline-size: 22rem;
|
|
682
756
|
}
|
|
683
757
|
|
|
684
758
|
.datepicker-inline .datepicker-dropdown,
|
|
@@ -690,6 +764,8 @@ export const css = `/**
|
|
|
690
764
|
transform: none;
|
|
691
765
|
margin-top: 0;
|
|
692
766
|
box-shadow: none;
|
|
767
|
+
min-inline-size: 0;
|
|
768
|
+
max-inline-size: 100%;
|
|
693
769
|
}
|
|
694
770
|
|
|
695
771
|
/* Input Color Variants */
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Auto-generated from diff.css
|
|
2
|
+
export const css = `@layer components {
|
|
3
|
+
.diff {
|
|
4
|
+
--diff-position: 50%;
|
|
5
|
+
display: grid;
|
|
6
|
+
position: relative;
|
|
7
|
+
isolation: isolate;
|
|
8
|
+
aspect-ratio: var(--diff-ratio, 16 / 9);
|
|
9
|
+
max-inline-size: 100%;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
color: var(--color-on-surface);
|
|
12
|
+
background: var(--color-surface-container);
|
|
13
|
+
border-radius: var(--radius-md);
|
|
14
|
+
}
|
|
15
|
+
.diff-before, .diff-after { grid-area: 1 / 1; min-inline-size: 0; min-block-size: 0; overflow: hidden; }
|
|
16
|
+
.diff-before { z-index: 1; clip-path: inset(0 calc(100% - clamp(0%, var(--diff-position), 100%)) 0 0); }
|
|
17
|
+
.diff:dir(rtl) > .diff-before { clip-path: inset(0 0 0 calc(100% - clamp(0%, var(--diff-position), 100%))); }
|
|
18
|
+
.diff img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; }
|
|
19
|
+
.diff-label { position: absolute; inset-block-start: 0.5rem; inset-inline-start: 0.5rem; padding: 0.25rem 0.5rem; background: var(--color-surface); color: var(--color-on-surface); border-radius: var(--radius-sm); }
|
|
20
|
+
.diff-after .diff-label { inset-inline-start: auto; inset-inline-end: 0.5rem; }
|
|
21
|
+
.diff-static { aspect-ratio: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
22
|
+
.diff.diff-static > .diff-before, .diff-static > .diff-after { grid-area: auto; clip-path: none; position: relative; }
|
|
23
|
+
@media print {
|
|
24
|
+
.diff { aspect-ratio: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; }
|
|
25
|
+
.diff > .diff-before, .diff:dir(rtl) > .diff-before, .diff > .diff-after { grid-area: auto; clip-path: none; position: relative; }
|
|
26
|
+
}
|
|
27
|
+
.diff-primary { color: var(--color-primary); }
|
|
28
|
+
.diff-secondary { color: var(--color-secondary); }
|
|
29
|
+
.diff-tertiary { color: var(--color-tertiary); }
|
|
30
|
+
.diff-info { color: var(--color-info); }
|
|
31
|
+
.diff-success { color: var(--color-success); }
|
|
32
|
+
.diff-warning { color: var(--color-warning); }
|
|
33
|
+
.diff-error { color: var(--color-error); }
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
|
|
37
|
+
const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
|
|
38
|
+
if (sheet) {
|
|
39
|
+
sheet.replaceSync(css);
|
|
40
|
+
}
|
|
41
|
+
export const styles = sheet;
|
|
42
|
+
export default sheet;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// Auto-generated from file-input.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
|
+
.file-input {
|
|
72
|
+
display: block;
|
|
73
|
+
box-sizing: border-box;
|
|
74
|
+
width: 100%;
|
|
75
|
+
min-width: 0;
|
|
76
|
+
padding: 0;
|
|
77
|
+
font: inherit;
|
|
78
|
+
color: var(--color-on-surface);
|
|
79
|
+
background-color: var(--color-surface);
|
|
80
|
+
border: 1px solid currentColor;
|
|
81
|
+
border-radius: var(--radius-sm);
|
|
82
|
+
cursor: pointer;
|
|
83
|
+
}
|
|
84
|
+
.file-input::file-selector-button {
|
|
85
|
+
padding: 0.75rem 1rem;
|
|
86
|
+
margin-inline-end: 0.75rem;
|
|
87
|
+
font: inherit;
|
|
88
|
+
color: inherit;
|
|
89
|
+
background-color: var(--color-surface-container);
|
|
90
|
+
border: none;
|
|
91
|
+
border-inline-end: 1px solid currentColor;
|
|
92
|
+
cursor: inherit;
|
|
93
|
+
}
|
|
94
|
+
.file-input:hover:not(:disabled)::file-selector-button { background-color: var(--color-surface-container-high); }
|
|
95
|
+
.file-input:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent); }
|
|
96
|
+
.file-input:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
97
|
+
.file-input-xs::file-selector-button { padding: 0.375rem 0.625rem; }
|
|
98
|
+
.file-input-sm::file-selector-button { padding: 0.5rem 0.75rem; }
|
|
99
|
+
.file-input-lg::file-selector-button { padding: 1rem 1.25rem; }
|
|
100
|
+
.file-input-primary { color: var(--color-primary); }
|
|
101
|
+
.file-input-secondary { color: var(--color-secondary); }
|
|
102
|
+
.file-input-tertiary { color: var(--color-tertiary); }
|
|
103
|
+
.file-input-info { color: var(--color-info); }
|
|
104
|
+
.file-input-success { color: var(--color-success); }
|
|
105
|
+
.file-input-warning { color: var(--color-warning); }
|
|
106
|
+
.file-input-error { color: var(--color-error); }
|
|
107
|
+
.file-input-ghost { border-color: transparent; }
|
|
108
|
+
}
|
|
109
|
+
`;
|
|
110
|
+
|
|
111
|
+
const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
|
|
112
|
+
if (sheet) {
|
|
113
|
+
sheet.replaceSync(css);
|
|
114
|
+
}
|
|
115
|
+
export const styles = sheet;
|
|
116
|
+
export default sheet;
|