@duskmoon-dev/core 1.12.4 → 1.14.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 (66) hide show
  1. package/dist/components/alert.css +64 -2
  2. package/dist/components/appbar.css +119 -21
  3. package/dist/components/autocomplete.css +63 -3
  4. package/dist/components/avatar.css +22 -2
  5. package/dist/components/button.css +101 -49
  6. package/dist/components/card.css +38 -2
  7. package/dist/components/cascader.css +59 -9
  8. package/dist/components/checkbox.css +15 -5
  9. package/dist/components/chip.css +122 -2
  10. package/dist/components/collapse.css +32 -0
  11. package/dist/components/datepicker.css +79 -6
  12. package/dist/components/divider.css +196 -121
  13. package/dist/components/file-upload.css +68 -8
  14. package/dist/components/form.css +2 -1
  15. package/dist/components/index.css +1835 -586
  16. package/dist/components/input.css +21 -67
  17. package/dist/components/multi-select.css +59 -9
  18. package/dist/components/navigation.css +1 -1
  19. package/dist/components/otp-input.css +48 -16
  20. package/dist/components/pin-input.css +50 -13
  21. package/dist/components/radio.css +12 -2
  22. package/dist/components/rating.css +35 -3
  23. package/dist/components/segment-control.css +23 -2
  24. package/dist/components/select.css +21 -37
  25. package/dist/components/slider.css +130 -6
  26. package/dist/components/switch.css +27 -4
  27. package/dist/components/textarea.css +21 -96
  28. package/dist/components/time-input.css +61 -12
  29. package/dist/components/toast.css +72 -3
  30. package/dist/components/toggle.css +63 -6
  31. package/dist/components/tooltip.css +84 -0
  32. package/dist/components/tree-select.css +60 -11
  33. package/dist/esm/components/alert.js +64 -2
  34. package/dist/esm/components/appbar.js +119 -21
  35. package/dist/esm/components/autocomplete.js +63 -3
  36. package/dist/esm/components/avatar.js +22 -2
  37. package/dist/esm/components/button.js +101 -49
  38. package/dist/esm/components/card.js +38 -2
  39. package/dist/esm/components/cascader.js +59 -9
  40. package/dist/esm/components/checkbox.js +15 -5
  41. package/dist/esm/components/chip.js +122 -2
  42. package/dist/esm/components/collapse.js +32 -0
  43. package/dist/esm/components/datepicker.js +79 -6
  44. package/dist/esm/components/divider.js +196 -121
  45. package/dist/esm/components/file-upload.js +68 -8
  46. package/dist/esm/components/form.js +2 -1
  47. package/dist/esm/components/input.js +21 -67
  48. package/dist/esm/components/multi-select.js +59 -9
  49. package/dist/esm/components/navigation.js +1 -1
  50. package/dist/esm/components/otp-input.js +48 -16
  51. package/dist/esm/components/pin-input.js +50 -13
  52. package/dist/esm/components/radio.js +12 -2
  53. package/dist/esm/components/rating.js +35 -3
  54. package/dist/esm/components/segment-control.js +23 -2
  55. package/dist/esm/components/select.js +21 -37
  56. package/dist/esm/components/slider.js +130 -6
  57. package/dist/esm/components/switch.js +27 -4
  58. package/dist/esm/components/textarea.js +21 -96
  59. package/dist/esm/components/time-input.js +61 -12
  60. package/dist/esm/components/toast.js +72 -3
  61. package/dist/esm/components/toggle.js +63 -6
  62. package/dist/esm/components/tooltip.js +84 -0
  63. package/dist/esm/components/tree-select.js +60 -11
  64. package/dist/index.css +1835 -586
  65. package/dist/index.min.css +1 -1
  66. package/package.json +1 -1
@@ -24,20 +24,19 @@ export const css = `/**
24
24
  line-height: 1.5rem;
25
25
  color: var(--color-on-surface);
26
26
  background-color: var(--color-surface);
27
- border: 1px solid var(--color-outline);
27
+ border: 1px solid currentColor;
28
28
  border-radius: 0.5rem;
29
29
  cursor: pointer;
30
30
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
31
31
  }
32
32
 
33
33
  .cascader-trigger:hover:not(:disabled) {
34
- border-color: var(--color-on-surface-variant);
34
+ background-color: var(--color-surface-container);
35
35
  }
36
36
 
37
37
  .cascader-trigger:focus {
38
38
  outline: none;
39
- border-color: var(--color-primary);
40
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
39
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
41
40
  }
42
41
 
43
42
  .cascader-trigger:disabled {
@@ -364,20 +363,71 @@ export const css = `/**
364
363
  }
365
364
 
366
365
  .cascader-filled .cascader-trigger:focus {
367
- border-bottom-color: var(--color-primary);
366
+ border-bottom-color: currentColor;
368
367
  box-shadow: none;
369
368
  }
370
369
 
371
- /* Error State */
372
- .cascader-error .cascader-trigger {
373
- border-color: var(--color-error);
370
+ /* Color Variants */
371
+ .cascader-primary .cascader-trigger {
372
+ color: var(--color-primary);
373
+ }
374
+ .cascader-primary .cascader-trigger:focus {
375
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
376
+ }
377
+
378
+ .cascader-secondary .cascader-trigger {
379
+ color: var(--color-secondary);
380
+ }
381
+ .cascader-secondary .cascader-trigger:focus {
382
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
383
+ }
384
+
385
+ .cascader-tertiary .cascader-trigger {
386
+ color: var(--color-tertiary);
387
+ }
388
+ .cascader-tertiary .cascader-trigger:focus {
389
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
390
+ }
391
+
392
+ .cascader-info .cascader-trigger {
393
+ color: var(--color-info);
394
+ }
395
+ .cascader-info .cascader-trigger:focus {
396
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
397
+ }
398
+
399
+ .cascader-success .cascader-trigger {
400
+ color: var(--color-success);
401
+ }
402
+ .cascader-success .cascader-trigger:focus {
403
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
404
+ }
405
+
406
+ .cascader-warning .cascader-trigger {
407
+ color: var(--color-warning);
408
+ }
409
+ .cascader-warning .cascader-trigger:focus {
410
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
374
411
  }
375
412
 
413
+ .cascader-error .cascader-trigger {
414
+ color: var(--color-error);
415
+ }
376
416
  .cascader-error .cascader-trigger:focus {
377
- border-color: var(--color-error);
378
417
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
379
418
  }
380
419
 
420
+ /* Ghost Variant */
421
+ .cascader-ghost .cascader-trigger {
422
+ background-color: transparent;
423
+ border-color: transparent;
424
+ }
425
+ .cascader-ghost .cascader-trigger:focus {
426
+ background-color: var(--color-surface-container);
427
+ border-color: transparent;
428
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
429
+ }
430
+
381
431
  /* Disabled State */
382
432
  .cascader-disabled .cascader-trigger {
383
433
  cursor: not-allowed;
@@ -13,6 +13,7 @@ export const css = `/**
13
13
  --checkbox-size: 1.25rem;
14
14
  --checkbox-color: var(--color-primary);
15
15
  --checkbox-border-color: var(--color-on-surface-variant);
16
+ color: var(--color-on-surface);
16
17
 
17
18
  position: relative;
18
19
  display: inline-grid;
@@ -35,8 +36,8 @@ export const css = `/**
35
36
  height: 0.35em;
36
37
  transform: scale(0) rotate(-45deg);
37
38
  transform-origin: center;
38
- border-bottom: 2px solid var(--color-on-primary);
39
- border-left: 2px solid var(--color-on-primary);
39
+ border-bottom: 2px solid var(--color-primary-content);
40
+ border-left: 2px solid var(--color-primary-content);
40
41
  transition: transform 150ms ease-in-out;
41
42
  }
42
43
 
@@ -59,7 +60,7 @@ export const css = `/**
59
60
  .checkbox:indeterminate::before {
60
61
  width: 0.5em;
61
62
  height: 0;
62
- border-bottom: 2px solid var(--color-on-primary);
63
+ border-bottom: 2px solid var(--color-primary-content);
63
64
  border-left: 0;
64
65
  transform: scale(1) rotate(0deg);
65
66
  }
@@ -77,8 +78,8 @@ export const css = `/**
77
78
 
78
79
  /* Focus State */
79
80
  .checkbox:focus-visible {
80
- outline: 2px solid var(--checkbox-color);
81
- outline-offset: 2px;
81
+ outline: none;
82
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--checkbox-color) 20%, transparent);
82
83
  }
83
84
 
84
85
  /* Disabled State */
@@ -178,6 +179,15 @@ export const css = `/**
178
179
  border-color: var(--color-info-content);
179
180
  }
180
181
 
182
+ /* Ghost Variant — borderless unchecked state */
183
+ .checkbox-ghost {
184
+ --checkbox-border-color: transparent;
185
+ }
186
+
187
+ .checkbox-ghost:hover:not(:disabled):not(:checked) {
188
+ border-color: transparent;
189
+ }
190
+
181
191
  /* ========================================
182
192
  * Checkbox with Label (wrapper pattern)
183
193
  * ======================================== */
@@ -36,8 +36,8 @@ export const css = `/**
36
36
  }
37
37
 
38
38
  .chip:focus-visible {
39
- outline: 2px solid var(--color-primary);
40
- outline-offset: 2px;
39
+ outline: none;
40
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
41
41
  }
42
42
 
43
43
  /* Color Variants - Filled */
@@ -68,6 +68,42 @@ export const css = `/**
68
68
  background-color: color-mix(in oklch, var(--color-tertiary), black 10%);
69
69
  }
70
70
 
71
+ .chip-info {
72
+ background-color: var(--color-info);
73
+ color: var(--color-info-content);
74
+ }
75
+
76
+ .chip-info:hover {
77
+ background-color: color-mix(in oklch, var(--color-info), black 10%);
78
+ }
79
+
80
+ .chip-success {
81
+ background-color: var(--color-success);
82
+ color: var(--color-success-content);
83
+ }
84
+
85
+ .chip-success:hover {
86
+ background-color: color-mix(in oklch, var(--color-success), black 10%);
87
+ }
88
+
89
+ .chip-warning {
90
+ background-color: var(--color-warning);
91
+ color: var(--color-warning-content);
92
+ }
93
+
94
+ .chip-warning:hover {
95
+ background-color: color-mix(in oklch, var(--color-warning), black 10%);
96
+ }
97
+
98
+ .chip-error {
99
+ background-color: var(--color-error);
100
+ color: var(--color-error-content);
101
+ }
102
+
103
+ .chip-error:hover {
104
+ background-color: color-mix(in oklch, var(--color-error), black 10%);
105
+ }
106
+
71
107
  /* Outlined Variant */
72
108
  .chip-outlined {
73
109
  background-color: transparent;
@@ -105,6 +141,42 @@ export const css = `/**
105
141
  background-color: var(--color-tertiary-container);
106
142
  }
107
143
 
144
+ .chip-outlined.chip-info {
145
+ border-color: var(--color-info);
146
+ color: var(--color-info);
147
+ }
148
+
149
+ .chip-outlined.chip-info:hover {
150
+ background-color: var(--color-info-container);
151
+ }
152
+
153
+ .chip-outlined.chip-success {
154
+ border-color: var(--color-success);
155
+ color: var(--color-success);
156
+ }
157
+
158
+ .chip-outlined.chip-success:hover {
159
+ background-color: var(--color-success-container);
160
+ }
161
+
162
+ .chip-outlined.chip-warning {
163
+ border-color: var(--color-warning);
164
+ color: var(--color-warning);
165
+ }
166
+
167
+ .chip-outlined.chip-warning:hover {
168
+ background-color: var(--color-warning-container);
169
+ }
170
+
171
+ .chip-outlined.chip-error {
172
+ border-color: var(--color-error);
173
+ color: var(--color-error);
174
+ }
175
+
176
+ .chip-outlined.chip-error:hover {
177
+ background-color: var(--color-error-container);
178
+ }
179
+
108
180
  /* Tonal/Soft Variant */
109
181
  .chip-tonal {
110
182
  background-color: var(--color-surface-container-high);
@@ -125,6 +197,54 @@ export const css = `/**
125
197
  color: var(--color-on-tertiary-container);
126
198
  }
127
199
 
200
+ .chip-tonal.chip-info {
201
+ background-color: var(--color-info-container);
202
+ color: var(--color-on-info-container);
203
+ }
204
+
205
+ .chip-tonal.chip-success {
206
+ background-color: var(--color-success-container);
207
+ color: var(--color-on-success-container);
208
+ }
209
+
210
+ .chip-tonal.chip-warning {
211
+ background-color: var(--color-warning-container);
212
+ color: var(--color-on-warning-container);
213
+ }
214
+
215
+ .chip-tonal.chip-error {
216
+ background-color: var(--color-error-container);
217
+ color: var(--color-on-error-container);
218
+ }
219
+
220
+ /* Ghost Variant */
221
+ .chip-ghost {
222
+ background-color: transparent;
223
+ border-color: transparent;
224
+ }
225
+
226
+ .chip-ghost:hover {
227
+ background-color: var(--color-surface-container);
228
+ }
229
+
230
+ /* Ghost + color sub-variants: transparent bg/border, colored text.
231
+ Hover uses container color (matches .chip-outlined.chip-*:hover pattern). */
232
+ .chip-ghost.chip-primary { background-color: transparent; color: var(--color-primary); }
233
+ .chip-ghost.chip-secondary { background-color: transparent; color: var(--color-secondary); }
234
+ .chip-ghost.chip-tertiary { background-color: transparent; color: var(--color-tertiary); }
235
+ .chip-ghost.chip-info { background-color: transparent; color: var(--color-info); }
236
+ .chip-ghost.chip-success { background-color: transparent; color: var(--color-success); }
237
+ .chip-ghost.chip-warning { background-color: transparent; color: var(--color-warning); }
238
+ .chip-ghost.chip-error { background-color: transparent; color: var(--color-error); }
239
+
240
+ .chip-ghost.chip-primary:hover { background-color: var(--color-primary-container); }
241
+ .chip-ghost.chip-secondary:hover { background-color: var(--color-secondary-container); }
242
+ .chip-ghost.chip-tertiary:hover { background-color: var(--color-tertiary-container); }
243
+ .chip-ghost.chip-info:hover { background-color: var(--color-info-container); }
244
+ .chip-ghost.chip-success:hover { background-color: var(--color-success-container); }
245
+ .chip-ghost.chip-warning:hover { background-color: var(--color-warning-container); }
246
+ .chip-ghost.chip-error:hover { background-color: var(--color-error-container); }
247
+
128
248
  /* Size Variants */
129
249
  .chip-sm {
130
250
  padding: 0.25rem 0.5rem;
@@ -220,6 +220,38 @@ export const css = `/**
220
220
  background-color: var(--color-tertiary-container);
221
221
  }
222
222
 
223
+ .collapse-info .collapse-trigger {
224
+ color: var(--color-info);
225
+ }
226
+
227
+ .collapse-info .collapse-trigger:hover {
228
+ background-color: var(--color-info-container);
229
+ }
230
+
231
+ .collapse-success .collapse-trigger {
232
+ color: var(--color-success);
233
+ }
234
+
235
+ .collapse-success .collapse-trigger:hover {
236
+ background-color: var(--color-success-container);
237
+ }
238
+
239
+ .collapse-warning .collapse-trigger {
240
+ color: var(--color-warning);
241
+ }
242
+
243
+ .collapse-warning .collapse-trigger:hover {
244
+ background-color: var(--color-warning-container);
245
+ }
246
+
247
+ .collapse-error .collapse-trigger {
248
+ color: var(--color-error);
249
+ }
250
+
251
+ .collapse-error .collapse-trigger:hover {
252
+ background-color: var(--color-error-container);
253
+ }
254
+
223
255
  /* Size Variants */
224
256
  .collapse-sm .collapse-trigger {
225
257
  padding: 0.5rem 0.75rem;
@@ -20,7 +20,7 @@ export const css = `/**
20
20
  line-height: 1.5;
21
21
  color: var(--color-on-surface);
22
22
  background-color: var(--color-surface);
23
- border: 1px solid var(--color-outline);
23
+ border: 1px solid currentColor;
24
24
  border-radius: 0.5rem;
25
25
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
26
26
  }
@@ -39,8 +39,7 @@ export const css = `/**
39
39
 
40
40
  .datepicker-input:focus {
41
41
  outline: none;
42
- border-color: var(--color-primary);
43
- box-shadow: 0 0 0 3px var(--color-primary-container);
42
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
44
43
  }
45
44
 
46
45
  .datepicker-input:disabled {
@@ -693,7 +692,71 @@ export const css = `/**
693
692
  box-shadow: none;
694
693
  }
695
694
 
696
- /* Color Variants */
695
+ /* Input Color Variants */
696
+ .datepicker-primary .datepicker-input {
697
+ color: var(--color-primary);
698
+ }
699
+ .datepicker-primary .datepicker-input:focus {
700
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
701
+ }
702
+
703
+ .datepicker-secondary .datepicker-input {
704
+ color: var(--color-secondary);
705
+ }
706
+ .datepicker-secondary .datepicker-input:focus {
707
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
708
+ }
709
+
710
+ .datepicker-tertiary .datepicker-input {
711
+ color: var(--color-tertiary);
712
+ }
713
+ .datepicker-tertiary .datepicker-input:focus {
714
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
715
+ }
716
+
717
+ .datepicker-info .datepicker-input {
718
+ color: var(--color-info);
719
+ }
720
+ .datepicker-info .datepicker-input:focus {
721
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
722
+ }
723
+
724
+ .datepicker-info .datepicker-day-selected,
725
+ .datepicker-info .datepicker-day-range-start,
726
+ .datepicker-info .datepicker-day-range-end {
727
+ background-color: var(--color-info);
728
+ color: var(--color-info-content);
729
+ }
730
+
731
+ .datepicker-success .datepicker-input {
732
+ color: var(--color-success);
733
+ }
734
+ .datepicker-success .datepicker-input:focus {
735
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
736
+ }
737
+
738
+ .datepicker-success .datepicker-day-selected,
739
+ .datepicker-success .datepicker-day-range-start,
740
+ .datepicker-success .datepicker-day-range-end {
741
+ background-color: var(--color-success);
742
+ color: var(--color-success-content);
743
+ }
744
+
745
+ .datepicker-warning .datepicker-input {
746
+ color: var(--color-warning);
747
+ }
748
+ .datepicker-warning .datepicker-input:focus {
749
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
750
+ }
751
+
752
+ .datepicker-warning .datepicker-day-selected,
753
+ .datepicker-warning .datepicker-day-range-start,
754
+ .datepicker-warning .datepicker-day-range-end {
755
+ background-color: var(--color-warning);
756
+ color: var(--color-warning-content);
757
+ }
758
+
759
+ /* Day Selected Color Variants */
697
760
  .datepicker-primary .datepicker-day-selected,
698
761
  .datepicker-primary .datepicker-day-range-start,
699
762
  .datepicker-primary .datepicker-day-range-end {
@@ -718,15 +781,25 @@ export const css = `/**
718
781
  /* Error State */
719
782
  .datepicker-error .datepicker-input,
720
783
  .datetime-picker-error .datetime-picker-input {
721
- border-color: var(--color-error);
784
+ color: var(--color-error);
722
785
  }
723
786
 
724
787
  .datepicker-error .datepicker-input:focus,
725
788
  .datetime-picker-error .datetime-picker-input:focus {
726
- border-color: var(--color-error);
727
789
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
728
790
  }
729
791
 
792
+ /* Ghost Variant */
793
+ .datepicker-ghost .datepicker-input {
794
+ background-color: transparent;
795
+ border-color: transparent;
796
+ }
797
+ .datepicker-ghost .datepicker-input:focus {
798
+ background-color: var(--color-surface-container);
799
+ border-color: transparent;
800
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
801
+ }
802
+
730
803
  /* Reduce Motion */
731
804
  @media (prefers-reduced-motion: reduce) {
732
805
  .datepicker-dropdown,