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