@duskmoon-dev/core 0.1.0 → 1.0.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.
Files changed (51) hide show
  1. package/README.md +366 -78
  2. package/dist/components/accordion.css +244 -0
  3. package/dist/components/alert.css +199 -0
  4. package/dist/components/appbar.css +308 -0
  5. package/dist/components/autocomplete.css +269 -0
  6. package/dist/components/avatar.css +167 -0
  7. package/dist/components/badge.css +178 -0
  8. package/dist/components/bottom-navigation.css +263 -0
  9. package/dist/components/bottomsheet.css +334 -0
  10. package/dist/components/button.css +474 -0
  11. package/dist/components/card.css +220 -0
  12. package/dist/components/chip.css +211 -0
  13. package/dist/components/collapse.css +254 -0
  14. package/dist/components/datepicker.css +347 -0
  15. package/dist/components/dialog.css +173 -0
  16. package/dist/components/divider.css +284 -0
  17. package/dist/components/drawer.css +371 -0
  18. package/dist/components/file-upload.css +321 -0
  19. package/dist/components/form.css +441 -0
  20. package/dist/components/index.css +9994 -0
  21. package/dist/components/input.css +240 -0
  22. package/dist/components/list.css +188 -0
  23. package/dist/components/markdown-body.css +405 -0
  24. package/dist/components/modal.css +291 -0
  25. package/dist/components/navigation.css +392 -0
  26. package/dist/components/popover.css +326 -0
  27. package/dist/components/progress.css +238 -0
  28. package/dist/components/rating.css +230 -0
  29. package/dist/components/skeleton.css +216 -0
  30. package/dist/components/slider.css +327 -0
  31. package/dist/components/snackbar.css +311 -0
  32. package/dist/components/stepper.css +313 -0
  33. package/dist/components/switch.css +277 -0
  34. package/dist/components/table.css +199 -0
  35. package/dist/components/timeline.css +353 -0
  36. package/dist/components/toast.css +251 -0
  37. package/dist/components/tooltip.css +284 -0
  38. package/dist/index.css +10699 -0
  39. package/dist/themes/moonlight.css +168 -0
  40. package/dist/themes/sunshine.css +166 -0
  41. package/dist/types/index.d.ts +14 -0
  42. package/dist/types/index.d.ts.map +1 -0
  43. package/dist/types/plugin.d.ts +69 -0
  44. package/dist/types/plugin.d.ts.map +1 -0
  45. package/dist/types/theme.d.ts +202 -0
  46. package/dist/types/theme.d.ts.map +1 -0
  47. package/package.json +137 -18
  48. package/dist/index.cjs +0 -243
  49. package/dist/index.cjs.map +0 -15
  50. package/dist/index.js +0 -211
  51. package/dist/index.js.map +0 -15
@@ -0,0 +1,441 @@
1
+ /**
2
+ * Form Component Styles
3
+ * DuskMoonUI - Material Design 3 inspired form system
4
+ */
5
+
6
+ @layer components {
7
+ /* Form Control */
8
+ .form-control {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 0.25rem;
12
+ width: 100%;
13
+ margin-bottom: 1rem;
14
+ }
15
+
16
+ /* Label */
17
+ .label {
18
+ display: flex;
19
+ justify-content: space-between;
20
+ align-items: center;
21
+ padding: 0.25rem 0;
22
+ }
23
+
24
+ .label-text {
25
+ font-size: 0.875rem;
26
+ font-weight: 500;
27
+ color: var(--color-base-content);
28
+ padding-bottom: 0.25rem;
29
+ }
30
+
31
+ .label-text-alt {
32
+ font-size: 0.75rem;
33
+ color: var(--color-on-surface-variant);
34
+ }
35
+
36
+ /* Checkbox */
37
+ .checkbox {
38
+ appearance: none;
39
+ width: 1.25rem;
40
+ height: 1.25rem;
41
+ border: 2px solid var(--color-outline);
42
+ border-radius: 0.25rem;
43
+ background-color: transparent;
44
+ cursor: pointer;
45
+ transition: all 150ms ease-in-out;
46
+ position: relative;
47
+ }
48
+
49
+ .checkbox:hover {
50
+ border-color: var(--color-primary);
51
+ }
52
+
53
+ .checkbox:checked {
54
+ background-color: var(--color-primary);
55
+ border-color: var(--color-primary);
56
+ }
57
+
58
+ .checkbox:checked::after {
59
+ content: '';
60
+ position: absolute;
61
+ left: 0.25rem;
62
+ top: 0.0625rem;
63
+ width: 0.375rem;
64
+ height: 0.625rem;
65
+ border: solid var(--color-primary-content);
66
+ border-width: 0 2px 2px 0;
67
+ transform: rotate(45deg);
68
+ }
69
+
70
+ .checkbox:focus-visible {
71
+ outline: 2px solid var(--color-primary);
72
+ outline-offset: 2px;
73
+ }
74
+
75
+ .checkbox:disabled {
76
+ cursor: not-allowed;
77
+ opacity: 0.5;
78
+ }
79
+
80
+ /* Checkbox Color Variants */
81
+ .checkbox-primary:checked {
82
+ background-color: var(--color-primary);
83
+ border-color: var(--color-primary);
84
+ }
85
+
86
+ .checkbox-secondary:checked {
87
+ background-color: var(--color-secondary);
88
+ border-color: var(--color-secondary);
89
+ }
90
+
91
+ .checkbox-success:checked {
92
+ background-color: var(--color-success);
93
+ border-color: var(--color-success);
94
+ }
95
+
96
+ .checkbox-error:checked {
97
+ background-color: var(--color-error);
98
+ border-color: var(--color-error);
99
+ }
100
+
101
+ /* Checkbox Sizes */
102
+ .checkbox-xs {
103
+ width: 0.875rem;
104
+ height: 0.875rem;
105
+ }
106
+
107
+ .checkbox-sm {
108
+ width: 1rem;
109
+ height: 1rem;
110
+ }
111
+
112
+ .checkbox-lg {
113
+ width: 1.5rem;
114
+ height: 1.5rem;
115
+ }
116
+
117
+ /* Radio */
118
+ .radio {
119
+ appearance: none;
120
+ width: 1.25rem;
121
+ height: 1.25rem;
122
+ border: 2px solid var(--color-outline);
123
+ border-radius: 50%;
124
+ background-color: transparent;
125
+ cursor: pointer;
126
+ transition: all 150ms ease-in-out;
127
+ position: relative;
128
+ }
129
+
130
+ .radio:hover {
131
+ border-color: var(--color-primary);
132
+ }
133
+
134
+ .radio:checked {
135
+ border-color: var(--color-primary);
136
+ }
137
+
138
+ .radio:checked::after {
139
+ content: '';
140
+ position: absolute;
141
+ left: 50%;
142
+ top: 50%;
143
+ width: 0.5rem;
144
+ height: 0.5rem;
145
+ background-color: var(--color-primary);
146
+ border-radius: 50%;
147
+ transform: translate(-50%, -50%);
148
+ }
149
+
150
+ .radio:focus-visible {
151
+ outline: 2px solid var(--color-primary);
152
+ outline-offset: 2px;
153
+ }
154
+
155
+ .radio:disabled {
156
+ cursor: not-allowed;
157
+ opacity: 0.5;
158
+ }
159
+
160
+ /* Radio Color Variants */
161
+ .radio-primary:checked {
162
+ border-color: var(--color-primary);
163
+ }
164
+
165
+ .radio-primary:checked::after {
166
+ background-color: var(--color-primary);
167
+ }
168
+
169
+ .radio-secondary:checked {
170
+ border-color: var(--color-secondary);
171
+ }
172
+
173
+ .radio-secondary:checked::after {
174
+ background-color: var(--color-secondary);
175
+ }
176
+
177
+ /* Toggle/Switch */
178
+ .toggle {
179
+ appearance: none;
180
+ width: 3rem;
181
+ height: 1.5rem;
182
+ border-radius: 1rem;
183
+ background-color: var(--color-surface-container-highest);
184
+ cursor: pointer;
185
+ transition: all 150ms ease-in-out;
186
+ position: relative;
187
+ }
188
+
189
+ .toggle::after {
190
+ content: '';
191
+ position: absolute;
192
+ left: 0.25rem;
193
+ top: 50%;
194
+ transform: translateY(-50%);
195
+ width: 1rem;
196
+ height: 1rem;
197
+ background-color: var(--color-on-surface-variant);
198
+ border-radius: 50%;
199
+ transition: all 150ms ease-in-out;
200
+ }
201
+
202
+ .toggle:checked {
203
+ background-color: var(--color-primary);
204
+ }
205
+
206
+ .toggle:checked::after {
207
+ left: calc(100% - 1.25rem);
208
+ background-color: var(--color-primary-content);
209
+ }
210
+
211
+ .toggle:focus-visible {
212
+ outline: 2px solid var(--color-primary);
213
+ outline-offset: 2px;
214
+ }
215
+
216
+ .toggle:disabled {
217
+ cursor: not-allowed;
218
+ opacity: 0.5;
219
+ }
220
+
221
+ /* Toggle Sizes */
222
+ .toggle-xs {
223
+ width: 2rem;
224
+ height: 1rem;
225
+ }
226
+
227
+ .toggle-xs::after {
228
+ width: 0.625rem;
229
+ height: 0.625rem;
230
+ left: 0.1875rem;
231
+ }
232
+
233
+ .toggle-xs:checked::after {
234
+ left: calc(100% - 0.8125rem);
235
+ }
236
+
237
+ .toggle-sm {
238
+ width: 2.5rem;
239
+ height: 1.25rem;
240
+ }
241
+
242
+ .toggle-sm::after {
243
+ width: 0.75rem;
244
+ height: 0.75rem;
245
+ }
246
+
247
+ .toggle-lg {
248
+ width: 4rem;
249
+ height: 2rem;
250
+ }
251
+
252
+ .toggle-lg::after {
253
+ width: 1.5rem;
254
+ height: 1.5rem;
255
+ }
256
+
257
+ /* Select */
258
+ .select {
259
+ appearance: none;
260
+ width: 100%;
261
+ padding: 0.75rem 2.5rem 0.75rem 1rem;
262
+ font-size: 1rem;
263
+ line-height: 1.5rem;
264
+ background-color: var(--color-surface);
265
+ color: var(--color-on-surface);
266
+ border: 1px solid var(--color-outline);
267
+ border-radius: 0.5rem;
268
+ cursor: pointer;
269
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
270
+ background-position: right 0.75rem center;
271
+ background-repeat: no-repeat;
272
+ background-size: 1.25rem;
273
+ transition: border-color 150ms ease-in-out;
274
+ }
275
+
276
+ .select:focus {
277
+ outline: none;
278
+ }
279
+
280
+ .select:focus-visible {
281
+ border-color: var(--color-primary);
282
+ outline: none;
283
+ }
284
+
285
+ .select:disabled {
286
+ cursor: not-allowed;
287
+ opacity: 0.5;
288
+ }
289
+
290
+ /* Select Bordered */
291
+ .select-bordered {
292
+ border-color: var(--color-outline);
293
+ }
294
+
295
+ /* Select Color Variants */
296
+ .select-primary:focus-visible {
297
+ border-color: var(--color-primary);
298
+ }
299
+
300
+ .select-secondary:focus-visible {
301
+ border-color: var(--color-secondary);
302
+ }
303
+
304
+ /* Select Sizes */
305
+ .select-xs {
306
+ padding: 0.375rem 2rem 0.375rem 0.625rem;
307
+ font-size: 0.75rem;
308
+ line-height: 1rem;
309
+ }
310
+
311
+ .select-sm {
312
+ padding: 0.5rem 2.25rem 0.5rem 0.75rem;
313
+ font-size: 0.875rem;
314
+ line-height: 1.25rem;
315
+ }
316
+
317
+ .select-lg {
318
+ padding: 1rem 3rem 1rem 1.25rem;
319
+ font-size: 1.125rem;
320
+ line-height: 1.75rem;
321
+ }
322
+
323
+ /* Textarea */
324
+ .textarea {
325
+ width: 100%;
326
+ min-height: 6rem;
327
+ padding: 0.75rem 1rem;
328
+ font-size: 1rem;
329
+ line-height: 1.5rem;
330
+ background-color: var(--color-surface);
331
+ color: var(--color-on-surface);
332
+ border: 1px solid var(--color-outline);
333
+ border-radius: 0.5rem;
334
+ resize: vertical;
335
+ transition: border-color 150ms ease-in-out;
336
+ }
337
+
338
+ .textarea::placeholder {
339
+ color: var(--color-on-surface-variant);
340
+ opacity: 0.7;
341
+ }
342
+
343
+ .textarea:focus {
344
+ outline: none;
345
+ }
346
+
347
+ .textarea:focus-visible {
348
+ border-color: var(--color-primary);
349
+ }
350
+
351
+ .textarea:disabled {
352
+ cursor: not-allowed;
353
+ opacity: 0.5;
354
+ resize: none;
355
+ }
356
+
357
+ .textarea-bordered {
358
+ border-color: var(--color-outline);
359
+ }
360
+
361
+ /* Validation States */
362
+ .form-control.error .input,
363
+ .form-control.error .select,
364
+ .form-control.error .textarea,
365
+ .input-error {
366
+ border-color: var(--color-error);
367
+ }
368
+
369
+ .form-control.error .label-text {
370
+ color: var(--color-error);
371
+ }
372
+
373
+ .form-control.success .input,
374
+ .form-control.success .select,
375
+ .form-control.success .textarea {
376
+ border-color: var(--color-success);
377
+ }
378
+
379
+ .form-control.success .label-text {
380
+ color: var(--color-success);
381
+ }
382
+
383
+ /* Helper Text */
384
+ .helper-text {
385
+ font-size: 0.75rem;
386
+ color: var(--color-on-surface-variant);
387
+ margin-top: 0.25rem;
388
+ }
389
+
390
+ .helper-text.error {
391
+ color: var(--color-error);
392
+ }
393
+
394
+ .helper-text.success {
395
+ color: var(--color-success);
396
+ }
397
+
398
+ /* Required Field Indicator */
399
+ .label-text.required::after {
400
+ content: ' *';
401
+ color: var(--color-error);
402
+ }
403
+
404
+ /* Range Input */
405
+ .range {
406
+ appearance: none;
407
+ width: 100%;
408
+ height: 0.5rem;
409
+ background-color: var(--color-surface-container-highest);
410
+ border-radius: 0.25rem;
411
+ cursor: pointer;
412
+ }
413
+
414
+ .range::-webkit-slider-thumb {
415
+ appearance: none;
416
+ width: 1.25rem;
417
+ height: 1.25rem;
418
+ background-color: var(--color-primary);
419
+ border-radius: 50%;
420
+ cursor: pointer;
421
+ transition: transform 150ms ease-in-out;
422
+ }
423
+
424
+ .range::-webkit-slider-thumb:hover {
425
+ transform: scale(1.1);
426
+ }
427
+
428
+ .range::-moz-range-thumb {
429
+ width: 1.25rem;
430
+ height: 1.25rem;
431
+ background-color: var(--color-primary);
432
+ border: none;
433
+ border-radius: 50%;
434
+ cursor: pointer;
435
+ }
436
+
437
+ .range:focus-visible {
438
+ outline: 2px solid var(--color-primary);
439
+ outline-offset: 2px;
440
+ }
441
+ }