@duskmoon-dev/core 1.1.0 → 1.2.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/components/button.css +47 -46
- package/dist/components/checkbox.css +231 -0
- package/dist/components/datepicker.css +404 -10
- package/dist/components/form-group.css +308 -0
- package/dist/components/index.css +4077 -687
- package/dist/components/multi-select.css +491 -0
- package/dist/components/navigation.css +153 -2
- package/dist/components/otp-input.css +195 -0
- package/dist/components/pin-input.css +184 -0
- package/dist/components/radio.css +183 -0
- package/dist/components/segment-control.css +186 -0
- package/dist/components/select.css +205 -0
- package/dist/components/switch.css +150 -193
- package/dist/components/textarea.css +202 -0
- package/dist/components/time-input.css +252 -0
- package/dist/components/tree-select.css +439 -0
- package/dist/esm/components/button.js +47 -46
- package/dist/esm/components/checkbox.js +238 -0
- package/dist/esm/components/datepicker.js +404 -10
- package/dist/esm/components/form-group.js +315 -0
- package/dist/esm/components/multi-select.js +498 -0
- package/dist/esm/components/navigation.js +153 -2
- package/dist/esm/components/otp-input.js +202 -0
- package/dist/esm/components/pin-input.js +191 -0
- package/dist/esm/components/radio.js +190 -0
- package/dist/esm/components/segment-control.js +193 -0
- package/dist/esm/components/select.js +212 -0
- package/dist/esm/components/switch.js +150 -193
- package/dist/esm/components/textarea.js +209 -0
- package/dist/esm/components/time-input.js +259 -0
- package/dist/esm/components/tree-select.js +446 -0
- package/dist/index.css +4073 -683
- package/package.json +56 -1
|
@@ -9,6 +9,7 @@ export const css = `/**
|
|
|
9
9
|
.btn {
|
|
10
10
|
--btn-p: 1.25rem;
|
|
11
11
|
--btn-py: 0.625rem;
|
|
12
|
+
--btn-text-color: var(--color-on-surface);
|
|
12
13
|
display: inline-flex;
|
|
13
14
|
align-items: center;
|
|
14
15
|
justify-content: center;
|
|
@@ -28,7 +29,7 @@ export const css = `/**
|
|
|
28
29
|
border-radius: 0.5rem;
|
|
29
30
|
transition: all 150ms ease-in-out;
|
|
30
31
|
background-color: var(--color-surface-container);
|
|
31
|
-
color: var(--
|
|
32
|
+
color: var(--btn-text-color);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
.btn:hover {
|
|
@@ -56,8 +57,8 @@ export const css = `/**
|
|
|
56
57
|
|
|
57
58
|
/* Primary Button */
|
|
58
59
|
.btn-primary {
|
|
60
|
+
--btn-text-color: var(--color-primary-content);
|
|
59
61
|
background-color: var(--color-primary);
|
|
60
|
-
color: var(--color-primary-content);
|
|
61
62
|
border-color: var(--color-primary);
|
|
62
63
|
}
|
|
63
64
|
|
|
@@ -73,8 +74,8 @@ export const css = `/**
|
|
|
73
74
|
|
|
74
75
|
/* Secondary Button */
|
|
75
76
|
.btn-secondary {
|
|
77
|
+
--btn-text-color: var(--color-secondary-content);
|
|
76
78
|
background-color: var(--color-secondary);
|
|
77
|
-
color: var(--color-secondary-content);
|
|
78
79
|
border-color: var(--color-secondary);
|
|
79
80
|
}
|
|
80
81
|
|
|
@@ -90,8 +91,8 @@ export const css = `/**
|
|
|
90
91
|
|
|
91
92
|
/* Tertiary Button */
|
|
92
93
|
.btn-tertiary {
|
|
94
|
+
--btn-text-color: var(--color-tertiary-content);
|
|
93
95
|
background-color: var(--color-tertiary);
|
|
94
|
-
color: var(--color-tertiary-content);
|
|
95
96
|
border-color: var(--color-tertiary);
|
|
96
97
|
}
|
|
97
98
|
|
|
@@ -107,9 +108,9 @@ export const css = `/**
|
|
|
107
108
|
|
|
108
109
|
/* Outline Variant */
|
|
109
110
|
.btn-outline {
|
|
111
|
+
--btn-text-color: var(--color-on-surface);
|
|
110
112
|
background-color: transparent;
|
|
111
113
|
border: 1px solid var(--color-outline);
|
|
112
|
-
color: var(--color-on-surface);
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
.btn-outline:hover {
|
|
@@ -118,40 +119,40 @@ export const css = `/**
|
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
.btn-outline.btn-primary {
|
|
122
|
+
--btn-text-color: var(--color-primary);
|
|
121
123
|
border-color: var(--color-primary);
|
|
122
|
-
color: var(--color-primary);
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
.btn-outline.btn-primary:hover {
|
|
127
|
+
--btn-text-color: var(--color-primary-content);
|
|
126
128
|
background-color: var(--color-primary);
|
|
127
|
-
color: var(--color-primary-content);
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
.btn-outline.btn-secondary {
|
|
132
|
+
--btn-text-color: var(--color-secondary);
|
|
131
133
|
border-color: var(--color-secondary);
|
|
132
|
-
color: var(--color-secondary);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
.btn-outline.btn-secondary:hover {
|
|
137
|
+
--btn-text-color: var(--color-secondary-content);
|
|
136
138
|
background-color: var(--color-secondary);
|
|
137
|
-
color: var(--color-secondary-content);
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
.btn-outline.btn-tertiary {
|
|
142
|
+
--btn-text-color: var(--color-tertiary);
|
|
141
143
|
border-color: var(--color-tertiary);
|
|
142
|
-
color: var(--color-tertiary);
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
.btn-outline.btn-tertiary:hover {
|
|
147
|
+
--btn-text-color: var(--color-tertiary-content);
|
|
146
148
|
background-color: var(--color-tertiary);
|
|
147
|
-
color: var(--color-tertiary-content);
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
/* Outlined Variant (alias for .btn-outline - documentation aligned) */
|
|
151
152
|
.btn-outlined {
|
|
153
|
+
--btn-text-color: var(--color-on-surface);
|
|
152
154
|
background-color: transparent;
|
|
153
155
|
border: 1px solid var(--color-outline);
|
|
154
|
-
color: var(--color-on-surface);
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
.btn-outlined:hover {
|
|
@@ -160,40 +161,40 @@ export const css = `/**
|
|
|
160
161
|
}
|
|
161
162
|
|
|
162
163
|
.btn-outlined.btn-primary {
|
|
164
|
+
--btn-text-color: var(--color-primary);
|
|
163
165
|
border-color: var(--color-primary);
|
|
164
|
-
color: var(--color-primary);
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
.btn-outlined.btn-primary:hover {
|
|
169
|
+
--btn-text-color: var(--color-primary-content);
|
|
168
170
|
background-color: var(--color-primary);
|
|
169
|
-
color: var(--color-primary-content);
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
.btn-outlined.btn-secondary {
|
|
174
|
+
--btn-text-color: var(--color-secondary);
|
|
173
175
|
border-color: var(--color-secondary);
|
|
174
|
-
color: var(--color-secondary);
|
|
175
176
|
}
|
|
176
177
|
|
|
177
178
|
.btn-outlined.btn-secondary:hover {
|
|
179
|
+
--btn-text-color: var(--color-secondary-content);
|
|
178
180
|
background-color: var(--color-secondary);
|
|
179
|
-
color: var(--color-secondary-content);
|
|
180
181
|
}
|
|
181
182
|
|
|
182
183
|
.btn-outlined.btn-tertiary {
|
|
184
|
+
--btn-text-color: var(--color-tertiary);
|
|
183
185
|
border-color: var(--color-tertiary);
|
|
184
|
-
color: var(--color-tertiary);
|
|
185
186
|
}
|
|
186
187
|
|
|
187
188
|
.btn-outlined.btn-tertiary:hover {
|
|
189
|
+
--btn-text-color: var(--color-tertiary-content);
|
|
188
190
|
background-color: var(--color-tertiary);
|
|
189
|
-
color: var(--color-tertiary-content);
|
|
190
191
|
}
|
|
191
192
|
|
|
192
193
|
/* Ghost Variant */
|
|
193
194
|
.btn-ghost {
|
|
195
|
+
--btn-text-color: var(--color-on-surface);
|
|
194
196
|
background-color: transparent;
|
|
195
197
|
border-color: transparent;
|
|
196
|
-
color: var(--color-on-surface);
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
.btn-ghost:hover {
|
|
@@ -202,37 +203,37 @@ export const css = `/**
|
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
.btn-ghost.btn-primary {
|
|
205
|
-
color: var(--color-primary);
|
|
206
|
+
--btn-text-color: var(--color-primary);
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
.btn-ghost.btn-primary:hover {
|
|
210
|
+
--btn-text-color: var(--color-on-primary-container);
|
|
209
211
|
background-color: var(--color-primary-container);
|
|
210
|
-
color: var(--color-on-primary-container);
|
|
211
212
|
}
|
|
212
213
|
|
|
213
214
|
.btn-ghost.btn-secondary {
|
|
214
|
-
color: var(--color-secondary);
|
|
215
|
+
--btn-text-color: var(--color-secondary);
|
|
215
216
|
}
|
|
216
217
|
|
|
217
218
|
.btn-ghost.btn-secondary:hover {
|
|
219
|
+
--btn-text-color: var(--color-on-secondary-container);
|
|
218
220
|
background-color: var(--color-secondary-container);
|
|
219
|
-
color: var(--color-on-secondary-container);
|
|
220
221
|
}
|
|
221
222
|
|
|
222
223
|
.btn-ghost.btn-tertiary {
|
|
223
|
-
color: var(--color-tertiary);
|
|
224
|
+
--btn-text-color: var(--color-tertiary);
|
|
224
225
|
}
|
|
225
226
|
|
|
226
227
|
.btn-ghost.btn-tertiary:hover {
|
|
228
|
+
--btn-text-color: var(--color-on-tertiary-container);
|
|
227
229
|
background-color: var(--color-tertiary-container);
|
|
228
|
-
color: var(--color-on-tertiary-container);
|
|
229
230
|
}
|
|
230
231
|
|
|
231
232
|
/* Text Variant (alias for .btn-ghost - documentation aligned) */
|
|
232
233
|
.btn-text {
|
|
234
|
+
--btn-text-color: var(--color-on-surface);
|
|
233
235
|
background-color: transparent;
|
|
234
236
|
border-color: transparent;
|
|
235
|
-
color: var(--color-on-surface);
|
|
236
237
|
}
|
|
237
238
|
|
|
238
239
|
.btn-text:hover {
|
|
@@ -241,36 +242,36 @@ export const css = `/**
|
|
|
241
242
|
}
|
|
242
243
|
|
|
243
244
|
.btn-text.btn-primary {
|
|
244
|
-
color: var(--color-primary);
|
|
245
|
+
--btn-text-color: var(--color-primary);
|
|
245
246
|
}
|
|
246
247
|
|
|
247
248
|
.btn-text.btn-primary:hover {
|
|
249
|
+
--btn-text-color: var(--color-on-primary-container);
|
|
248
250
|
background-color: var(--color-primary-container);
|
|
249
|
-
color: var(--color-on-primary-container);
|
|
250
251
|
}
|
|
251
252
|
|
|
252
253
|
.btn-text.btn-secondary {
|
|
253
|
-
color: var(--color-secondary);
|
|
254
|
+
--btn-text-color: var(--color-secondary);
|
|
254
255
|
}
|
|
255
256
|
|
|
256
257
|
.btn-text.btn-secondary:hover {
|
|
258
|
+
--btn-text-color: var(--color-on-secondary-container);
|
|
257
259
|
background-color: var(--color-secondary-container);
|
|
258
|
-
color: var(--color-on-secondary-container);
|
|
259
260
|
}
|
|
260
261
|
|
|
261
262
|
.btn-text.btn-tertiary {
|
|
262
|
-
color: var(--color-tertiary);
|
|
263
|
+
--btn-text-color: var(--color-tertiary);
|
|
263
264
|
}
|
|
264
265
|
|
|
265
266
|
.btn-text.btn-tertiary:hover {
|
|
267
|
+
--btn-text-color: var(--color-on-tertiary-container);
|
|
266
268
|
background-color: var(--color-tertiary-container);
|
|
267
|
-
color: var(--color-on-tertiary-container);
|
|
268
269
|
}
|
|
269
270
|
|
|
270
271
|
/* Tonal Variant - uses container colors for subtle appearance */
|
|
271
272
|
.btn-tonal {
|
|
273
|
+
--btn-text-color: var(--color-on-primary-container);
|
|
272
274
|
background-color: var(--color-primary-container);
|
|
273
|
-
color: var(--color-on-primary-container);
|
|
274
275
|
border-color: transparent;
|
|
275
276
|
}
|
|
276
277
|
|
|
@@ -279,44 +280,44 @@ export const css = `/**
|
|
|
279
280
|
}
|
|
280
281
|
|
|
281
282
|
.btn-tonal.btn-primary {
|
|
283
|
+
--btn-text-color: var(--color-on-primary-container);
|
|
282
284
|
background-color: var(--color-primary-container);
|
|
283
|
-
color: var(--color-on-primary-container);
|
|
284
285
|
}
|
|
285
286
|
|
|
286
287
|
.btn-tonal.btn-secondary {
|
|
288
|
+
--btn-text-color: var(--color-on-secondary-container);
|
|
287
289
|
background-color: var(--color-secondary-container);
|
|
288
|
-
color: var(--color-on-secondary-container);
|
|
289
290
|
}
|
|
290
291
|
|
|
291
292
|
.btn-tonal.btn-tertiary {
|
|
293
|
+
--btn-text-color: var(--color-on-tertiary-container);
|
|
292
294
|
background-color: var(--color-tertiary-container);
|
|
293
|
-
color: var(--color-on-tertiary-container);
|
|
294
295
|
}
|
|
295
296
|
|
|
296
297
|
.btn-tonal.btn-info {
|
|
298
|
+
--btn-text-color: var(--color-on-info-container);
|
|
297
299
|
background-color: var(--color-info-container);
|
|
298
|
-
color: var(--color-on-info-container);
|
|
299
300
|
}
|
|
300
301
|
|
|
301
302
|
.btn-tonal.btn-success {
|
|
303
|
+
--btn-text-color: var(--color-on-success-container);
|
|
302
304
|
background-color: var(--color-success-container);
|
|
303
|
-
color: var(--color-on-success-container);
|
|
304
305
|
}
|
|
305
306
|
|
|
306
307
|
.btn-tonal.btn-warning {
|
|
308
|
+
--btn-text-color: var(--color-on-warning-container);
|
|
307
309
|
background-color: var(--color-warning-container);
|
|
308
|
-
color: var(--color-on-warning-container);
|
|
309
310
|
}
|
|
310
311
|
|
|
311
312
|
.btn-tonal.btn-error {
|
|
313
|
+
--btn-text-color: var(--color-on-error-container);
|
|
312
314
|
background-color: var(--color-error-container);
|
|
313
|
-
color: var(--color-on-error-container);
|
|
314
315
|
}
|
|
315
316
|
|
|
316
317
|
/* Semantic Colors */
|
|
317
318
|
.btn-info {
|
|
319
|
+
--btn-text-color: var(--color-info-content);
|
|
318
320
|
background-color: var(--color-info);
|
|
319
|
-
color: var(--color-info-content);
|
|
320
321
|
border-color: var(--color-info);
|
|
321
322
|
}
|
|
322
323
|
|
|
@@ -327,8 +328,8 @@ export const css = `/**
|
|
|
327
328
|
}
|
|
328
329
|
|
|
329
330
|
.btn-success {
|
|
331
|
+
--btn-text-color: var(--color-success-content);
|
|
330
332
|
background-color: var(--color-success);
|
|
331
|
-
color: var(--color-success-content);
|
|
332
333
|
border-color: var(--color-success);
|
|
333
334
|
}
|
|
334
335
|
|
|
@@ -339,8 +340,8 @@ export const css = `/**
|
|
|
339
340
|
}
|
|
340
341
|
|
|
341
342
|
.btn-warning {
|
|
343
|
+
--btn-text-color: var(--color-warning-content);
|
|
342
344
|
background-color: var(--color-warning);
|
|
343
|
-
color: var(--color-warning-content);
|
|
344
345
|
border-color: var(--color-warning);
|
|
345
346
|
}
|
|
346
347
|
|
|
@@ -351,8 +352,8 @@ export const css = `/**
|
|
|
351
352
|
}
|
|
352
353
|
|
|
353
354
|
.btn-error {
|
|
355
|
+
--btn-text-color: var(--color-error-content);
|
|
354
356
|
background-color: var(--color-error);
|
|
355
|
-
color: var(--color-error-content);
|
|
356
357
|
border-color: var(--color-error);
|
|
357
358
|
}
|
|
358
359
|
|
|
@@ -428,7 +429,7 @@ export const css = `/**
|
|
|
428
429
|
.btn-loading {
|
|
429
430
|
pointer-events: none;
|
|
430
431
|
position: relative;
|
|
431
|
-
color: transparent;
|
|
432
|
+
color: transparent !important;
|
|
432
433
|
}
|
|
433
434
|
|
|
434
435
|
.btn-loading::after {
|
|
@@ -436,7 +437,7 @@ export const css = `/**
|
|
|
436
437
|
position: absolute;
|
|
437
438
|
width: 1rem;
|
|
438
439
|
height: 1rem;
|
|
439
|
-
border: 2px solid
|
|
440
|
+
border: 2px solid var(--btn-text-color);
|
|
440
441
|
border-right-color: transparent;
|
|
441
442
|
border-radius: 50%;
|
|
442
443
|
animation: btn-spin 0.6s linear infinite;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// Auto-generated from checkbox.css
|
|
2
|
+
export const css = `/**
|
|
3
|
+
* Checkbox Component Styles
|
|
4
|
+
* DuskMoonUI - Material Design 3 inspired checkbox
|
|
5
|
+
*
|
|
6
|
+
* Usage: <input type="checkbox" class="checkbox" />
|
|
7
|
+
* With label: <label class="label cursor-pointer gap-2"><input type="checkbox" class="checkbox" /><span>Label</span></label>
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
@layer components {
|
|
11
|
+
/* Base Checkbox - applied directly to input[type="checkbox"] */
|
|
12
|
+
.checkbox {
|
|
13
|
+
--checkbox-size: 1.25rem;
|
|
14
|
+
--checkbox-color: var(--color-primary);
|
|
15
|
+
--checkbox-border-color: var(--color-on-surface-variant);
|
|
16
|
+
|
|
17
|
+
position: relative;
|
|
18
|
+
display: inline-grid;
|
|
19
|
+
place-content: center;
|
|
20
|
+
width: var(--checkbox-size);
|
|
21
|
+
height: var(--checkbox-size);
|
|
22
|
+
margin: 0;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
appearance: none;
|
|
25
|
+
background-color: transparent;
|
|
26
|
+
border: 2px solid var(--checkbox-border-color);
|
|
27
|
+
border-radius: 0.125rem;
|
|
28
|
+
transition: background-color 150ms ease-in-out, border-color 150ms ease-in-out;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Checkmark using ::before pseudo-element */
|
|
32
|
+
.checkbox::before {
|
|
33
|
+
content: "";
|
|
34
|
+
width: 0.65em;
|
|
35
|
+
height: 0.35em;
|
|
36
|
+
transform: scale(0) rotate(-45deg);
|
|
37
|
+
transform-origin: center;
|
|
38
|
+
border-bottom: 2px solid var(--color-on-primary);
|
|
39
|
+
border-left: 2px solid var(--color-on-primary);
|
|
40
|
+
transition: transform 150ms ease-in-out;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Checked State */
|
|
44
|
+
.checkbox:checked {
|
|
45
|
+
background-color: var(--checkbox-color);
|
|
46
|
+
border-color: var(--checkbox-color);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.checkbox:checked::before {
|
|
50
|
+
transform: scale(1) rotate(-45deg);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Indeterminate State */
|
|
54
|
+
.checkbox:indeterminate {
|
|
55
|
+
background-color: var(--checkbox-color);
|
|
56
|
+
border-color: var(--checkbox-color);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.checkbox:indeterminate::before {
|
|
60
|
+
width: 0.5em;
|
|
61
|
+
height: 0;
|
|
62
|
+
border-bottom: 2px solid var(--color-on-primary);
|
|
63
|
+
border-left: 0;
|
|
64
|
+
transform: scale(1) rotate(0deg);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Hover State */
|
|
68
|
+
.checkbox:hover:not(:disabled):not(:checked) {
|
|
69
|
+
border-color: var(--color-on-surface);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.checkbox:checked:hover:not(:disabled) {
|
|
73
|
+
background-color: color-mix(in oklch, var(--checkbox-color), black 10%);
|
|
74
|
+
border-color: color-mix(in oklch, var(--checkbox-color), black 10%);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Focus State */
|
|
78
|
+
.checkbox:focus-visible {
|
|
79
|
+
outline: 2px solid var(--checkbox-color);
|
|
80
|
+
outline-offset: 2px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Disabled State */
|
|
84
|
+
.checkbox:disabled {
|
|
85
|
+
cursor: not-allowed;
|
|
86
|
+
opacity: 0.38;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* ========================================
|
|
90
|
+
* Size Variants
|
|
91
|
+
* ======================================== */
|
|
92
|
+
|
|
93
|
+
.checkbox-xs {
|
|
94
|
+
--checkbox-size: 0.875rem;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.checkbox-sm {
|
|
98
|
+
--checkbox-size: 1rem;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.checkbox-md {
|
|
102
|
+
--checkbox-size: 1.25rem;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.checkbox-lg {
|
|
106
|
+
--checkbox-size: 1.5rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.checkbox-xl {
|
|
110
|
+
--checkbox-size: 1.75rem;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* ========================================
|
|
114
|
+
* Color Variants
|
|
115
|
+
* ======================================== */
|
|
116
|
+
|
|
117
|
+
.checkbox-primary {
|
|
118
|
+
--checkbox-color: var(--color-primary);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.checkbox-primary:checked::before,
|
|
122
|
+
.checkbox-primary:indeterminate::before {
|
|
123
|
+
border-color: var(--color-primary-content);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.checkbox-secondary {
|
|
127
|
+
--checkbox-color: var(--color-secondary);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.checkbox-secondary:checked::before,
|
|
131
|
+
.checkbox-secondary:indeterminate::before {
|
|
132
|
+
border-color: var(--color-secondary-content);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.checkbox-tertiary {
|
|
136
|
+
--checkbox-color: var(--color-tertiary);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.checkbox-tertiary:checked::before,
|
|
140
|
+
.checkbox-tertiary:indeterminate::before {
|
|
141
|
+
border-color: var(--color-tertiary-content);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.checkbox-success {
|
|
145
|
+
--checkbox-color: var(--color-success);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.checkbox-success:checked::before,
|
|
149
|
+
.checkbox-success:indeterminate::before {
|
|
150
|
+
border-color: var(--color-success-content);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.checkbox-warning {
|
|
154
|
+
--checkbox-color: var(--color-warning);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.checkbox-warning:checked::before,
|
|
158
|
+
.checkbox-warning:indeterminate::before {
|
|
159
|
+
border-color: var(--color-warning-content);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.checkbox-error {
|
|
163
|
+
--checkbox-color: var(--color-error);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.checkbox-error:checked::before,
|
|
167
|
+
.checkbox-error:indeterminate::before {
|
|
168
|
+
border-color: var(--color-error-content);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.checkbox-info {
|
|
172
|
+
--checkbox-color: var(--color-info);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.checkbox-info:checked::before,
|
|
176
|
+
.checkbox-info:indeterminate::before {
|
|
177
|
+
border-color: var(--color-info-content);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* ========================================
|
|
181
|
+
* Checkbox with Label (wrapper pattern)
|
|
182
|
+
* ======================================== */
|
|
183
|
+
|
|
184
|
+
.checkbox-label {
|
|
185
|
+
display: inline-flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
gap: 0.5rem;
|
|
188
|
+
cursor: pointer;
|
|
189
|
+
user-select: none;
|
|
190
|
+
font-size: 0.875rem;
|
|
191
|
+
color: var(--color-on-surface);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.checkbox-label:has(.checkbox:disabled) {
|
|
195
|
+
cursor: not-allowed;
|
|
196
|
+
opacity: 0.38;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* ========================================
|
|
200
|
+
* Checkbox Group
|
|
201
|
+
* ======================================== */
|
|
202
|
+
|
|
203
|
+
.checkbox-group {
|
|
204
|
+
display: flex;
|
|
205
|
+
flex-direction: column;
|
|
206
|
+
gap: 0.75rem;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.checkbox-group-horizontal {
|
|
210
|
+
flex-direction: row;
|
|
211
|
+
flex-wrap: wrap;
|
|
212
|
+
gap: 1.5rem;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.checkbox-group-label {
|
|
216
|
+
font-size: 0.875rem;
|
|
217
|
+
font-weight: 500;
|
|
218
|
+
color: var(--color-on-surface);
|
|
219
|
+
margin-bottom: 0.5rem;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* ========================================
|
|
223
|
+
* Reduce Motion
|
|
224
|
+
* ======================================== */
|
|
225
|
+
|
|
226
|
+
@media (prefers-reduced-motion: reduce) {
|
|
227
|
+
.checkbox,
|
|
228
|
+
.checkbox::before {
|
|
229
|
+
transition: none;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
`;
|
|
234
|
+
|
|
235
|
+
const sheet = new CSSStyleSheet();
|
|
236
|
+
sheet.replaceSync(css);
|
|
237
|
+
export const styles = sheet;
|
|
238
|
+
export default sheet;
|