@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
@@ -148,8 +148,8 @@
148
148
  }
149
149
 
150
150
  .toast-close:focus-visible {
151
- outline: 2px solid var(--color-primary);
152
- outline-offset: 2px;
151
+ outline: none;
152
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
153
153
  }
154
154
 
155
155
  /* Toast Actions */
@@ -192,6 +192,30 @@
192
192
  color: var(--color-error);
193
193
  }
194
194
 
195
+ .toast-primary {
196
+ border-color: var(--color-primary);
197
+ }
198
+
199
+ .toast-primary .toast-icon {
200
+ color: var(--color-primary);
201
+ }
202
+
203
+ .toast-secondary {
204
+ border-color: var(--color-secondary);
205
+ }
206
+
207
+ .toast-secondary .toast-icon {
208
+ color: var(--color-secondary);
209
+ }
210
+
211
+ .toast-tertiary {
212
+ border-color: var(--color-tertiary);
213
+ }
214
+
215
+ .toast-tertiary .toast-icon {
216
+ color: var(--color-tertiary);
217
+ }
218
+
195
219
  /* Filled Variants */
196
220
  .toast-filled.toast-info {
197
221
  background-color: var(--color-info-container);
@@ -217,13 +241,58 @@
217
241
  color: var(--color-on-error-container);
218
242
  }
219
243
 
244
+ .toast-filled.toast-primary {
245
+ background-color: var(--color-primary-container);
246
+ border-color: transparent;
247
+ color: var(--color-on-primary-container);
248
+ }
249
+
250
+ .toast-filled.toast-secondary {
251
+ background-color: var(--color-secondary-container);
252
+ border-color: transparent;
253
+ color: var(--color-on-secondary-container);
254
+ }
255
+
256
+ .toast-filled.toast-tertiary {
257
+ background-color: var(--color-tertiary-container);
258
+ border-color: transparent;
259
+ color: var(--color-on-tertiary-container);
260
+ }
261
+
262
+ /* Filled variant sub-element color inheritance fix.
263
+ .toast-title and .toast-message have explicit color rules that would otherwise
264
+ override the filled variant's inherited on-container color. */
265
+ .toast-filled .toast-title,
266
+ .toast-filled .toast-message {
267
+ color: inherit;
268
+ }
269
+
270
+ /* Ghost Variant */
271
+ .toast-ghost {
272
+ background-color: transparent;
273
+ border-color: transparent;
274
+ }
275
+
276
+ .toast-ghost.toast-primary { color: var(--color-primary); }
277
+ .toast-ghost.toast-secondary { color: var(--color-secondary); }
278
+ .toast-ghost.toast-tertiary { color: var(--color-tertiary); }
279
+ .toast-ghost.toast-info { color: var(--color-info); }
280
+ .toast-ghost.toast-success { color: var(--color-success); }
281
+ .toast-ghost.toast-warning { color: var(--color-warning); }
282
+ .toast-ghost.toast-error { color: var(--color-error); }
283
+
284
+ .toast-ghost .toast-title,
285
+ .toast-ghost .toast-message {
286
+ color: inherit;
287
+ }
288
+
220
289
  /* Progress Bar (for auto-dismiss) */
221
290
  .toast-progress {
222
291
  position: absolute;
223
292
  bottom: 0;
224
293
  left: 0;
225
294
  height: 3px;
226
- background-color: var(--color-primary);
295
+ background-color: currentColor;
227
296
  border-radius: 0 0 0.75rem 0.75rem;
228
297
  animation: toast-progress linear forwards;
229
298
  }
@@ -15,9 +15,9 @@
15
15
  font-size: 0.875rem;
16
16
  font-weight: 500;
17
17
  line-height: 1.25rem;
18
- color: var(--color-on-surface-variant);
18
+ color: var(--color-on-surface);
19
19
  background-color: transparent;
20
- border: 1px solid var(--color-outline);
20
+ border: 1px solid currentColor;
21
21
  border-radius: 0.5rem;
22
22
  cursor: pointer;
23
23
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
@@ -27,7 +27,6 @@
27
27
  /* Hover state */
28
28
  .toggle-btn:hover:not(:disabled) {
29
29
  background-color: color-mix(in oklch, var(--color-surface-variant) 50%, transparent);
30
- border-color: var(--color-outline-variant);
31
30
  }
32
31
 
33
32
  /* Active/Selected state */
@@ -43,6 +42,14 @@
43
42
  background-color: color-mix(in oklch, var(--color-primary-container) 90%, transparent);
44
43
  }
45
44
 
45
+ /* Primary variant */
46
+ .toggle-btn-primary.toggle-btn-active,
47
+ .toggle-btn-primary.active {
48
+ color: var(--color-on-primary-container);
49
+ background-color: var(--color-primary-container);
50
+ border-color: var(--color-primary);
51
+ }
52
+
46
53
  /* Secondary variant */
47
54
  .toggle-btn-secondary.toggle-btn-active,
48
55
  .toggle-btn-secondary.active {
@@ -59,10 +66,60 @@
59
66
  border-color: var(--color-tertiary);
60
67
  }
61
68
 
69
+ /* Info variant */
70
+ .toggle-btn-info.toggle-btn-active,
71
+ .toggle-btn-info.active {
72
+ color: var(--color-on-info-container);
73
+ background-color: var(--color-info-container);
74
+ border-color: var(--color-info);
75
+ }
76
+
77
+ /* Success variant */
78
+ .toggle-btn-success.toggle-btn-active,
79
+ .toggle-btn-success.active {
80
+ color: var(--color-on-success-container);
81
+ background-color: var(--color-success-container);
82
+ border-color: var(--color-success);
83
+ }
84
+
85
+ /* Warning variant */
86
+ .toggle-btn-warning.toggle-btn-active,
87
+ .toggle-btn-warning.active {
88
+ color: var(--color-on-warning-container);
89
+ background-color: var(--color-warning-container);
90
+ border-color: var(--color-warning);
91
+ }
92
+
93
+ /* Error variant */
94
+ .toggle-btn-error.toggle-btn-active,
95
+ .toggle-btn-error.active {
96
+ color: var(--color-on-error-container);
97
+ background-color: var(--color-error-container);
98
+ border-color: var(--color-error);
99
+ }
100
+
101
+ /* Ghost Variant */
102
+ .toggle-btn-ghost {
103
+ background-color: transparent;
104
+ border-color: transparent;
105
+ }
106
+ .toggle-btn-ghost:hover:not(:disabled) {
107
+ background-color: var(--color-surface-container);
108
+ border-color: transparent;
109
+ }
110
+
111
+ .toggle-btn-ghost.toggle-btn-primary { color: var(--color-primary); }
112
+ .toggle-btn-ghost.toggle-btn-secondary { color: var(--color-secondary); }
113
+ .toggle-btn-ghost.toggle-btn-tertiary { color: var(--color-tertiary); }
114
+ .toggle-btn-ghost.toggle-btn-info { color: var(--color-info); }
115
+ .toggle-btn-ghost.toggle-btn-success { color: var(--color-success); }
116
+ .toggle-btn-ghost.toggle-btn-warning { color: var(--color-warning); }
117
+ .toggle-btn-ghost.toggle-btn-error { color: var(--color-error); }
118
+
62
119
  /* Focus state */
63
120
  .toggle-btn:focus-visible {
64
- outline: 2px solid var(--color-primary);
65
- outline-offset: 2px;
121
+ outline: none;
122
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
66
123
  }
67
124
 
68
125
  /* Disabled state */
@@ -199,7 +256,7 @@
199
256
  .toggle-filled.toggle-btn-active,
200
257
  .toggle-filled.active {
201
258
  background-color: var(--color-primary);
202
- color: var(--color-on-primary);
259
+ color: var(--color-primary-content);
203
260
  }
204
261
 
205
262
  /* With badge/indicator */
@@ -234,6 +234,90 @@
234
234
  border-right-color: var(--color-error);
235
235
  }
236
236
 
237
+ .tooltip.tooltip-tertiary .tooltip-content {
238
+ background-color: var(--color-tertiary);
239
+ color: var(--color-tertiary-content);
240
+ }
241
+
242
+ .tooltip.tooltip-tertiary .tooltip-content::before {
243
+ border-top-color: var(--color-tertiary);
244
+ }
245
+
246
+ .tooltip.tooltip-tertiary.tooltip-bottom .tooltip-content::before {
247
+ border-bottom-color: var(--color-tertiary);
248
+ }
249
+
250
+ .tooltip.tooltip-tertiary.tooltip-left .tooltip-content::before {
251
+ border-left-color: var(--color-tertiary);
252
+ }
253
+
254
+ .tooltip.tooltip-tertiary.tooltip-right .tooltip-content::before {
255
+ border-right-color: var(--color-tertiary);
256
+ }
257
+
258
+ .tooltip.tooltip-info .tooltip-content {
259
+ background-color: var(--color-info);
260
+ color: var(--color-info-content);
261
+ }
262
+
263
+ .tooltip.tooltip-info .tooltip-content::before {
264
+ border-top-color: var(--color-info);
265
+ }
266
+
267
+ .tooltip.tooltip-info.tooltip-bottom .tooltip-content::before {
268
+ border-bottom-color: var(--color-info);
269
+ }
270
+
271
+ .tooltip.tooltip-info.tooltip-left .tooltip-content::before {
272
+ border-left-color: var(--color-info);
273
+ }
274
+
275
+ .tooltip.tooltip-info.tooltip-right .tooltip-content::before {
276
+ border-right-color: var(--color-info);
277
+ }
278
+
279
+ .tooltip.tooltip-success .tooltip-content {
280
+ background-color: var(--color-success);
281
+ color: var(--color-success-content);
282
+ }
283
+
284
+ .tooltip.tooltip-success .tooltip-content::before {
285
+ border-top-color: var(--color-success);
286
+ }
287
+
288
+ .tooltip.tooltip-success.tooltip-bottom .tooltip-content::before {
289
+ border-bottom-color: var(--color-success);
290
+ }
291
+
292
+ .tooltip.tooltip-success.tooltip-left .tooltip-content::before {
293
+ border-left-color: var(--color-success);
294
+ }
295
+
296
+ .tooltip.tooltip-success.tooltip-right .tooltip-content::before {
297
+ border-right-color: var(--color-success);
298
+ }
299
+
300
+ .tooltip.tooltip-warning .tooltip-content {
301
+ background-color: var(--color-warning);
302
+ color: var(--color-warning-content);
303
+ }
304
+
305
+ .tooltip.tooltip-warning .tooltip-content::before {
306
+ border-top-color: var(--color-warning);
307
+ }
308
+
309
+ .tooltip.tooltip-warning.tooltip-bottom .tooltip-content::before {
310
+ border-bottom-color: var(--color-warning);
311
+ }
312
+
313
+ .tooltip.tooltip-warning.tooltip-left .tooltip-content::before {
314
+ border-left-color: var(--color-warning);
315
+ }
316
+
317
+ .tooltip.tooltip-warning.tooltip-right .tooltip-content::before {
318
+ border-right-color: var(--color-warning);
319
+ }
320
+
237
321
  /* Multi-line Tooltip */
238
322
  .tooltip-multiline .tooltip-content {
239
323
  white-space: normal;
@@ -23,20 +23,19 @@
23
23
  line-height: 1.5rem;
24
24
  color: var(--color-on-surface);
25
25
  background-color: var(--color-surface);
26
- border: 1px solid var(--color-outline);
26
+ border: 1px solid currentColor;
27
27
  border-radius: 0.5rem;
28
28
  cursor: pointer;
29
29
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
30
30
  }
31
31
 
32
32
  .tree-select-trigger:hover:not(:disabled) {
33
- border-color: var(--color-on-surface-variant);
33
+ background-color: var(--color-surface-container);
34
34
  }
35
35
 
36
36
  .tree-select-trigger:focus {
37
37
  outline: none;
38
- border-color: var(--color-primary);
39
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
38
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
40
39
  }
41
40
 
42
41
  .tree-select-trigger:disabled,
@@ -53,8 +52,7 @@
53
52
 
54
53
  div.tree-select-trigger:focus-visible {
55
54
  outline: none;
56
- border-color: var(--color-primary);
57
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
55
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
58
56
  }
59
57
 
60
58
  /* Value Display */
@@ -371,7 +369,7 @@
371
369
  }
372
370
 
373
371
  .tree-select-filled .tree-select-trigger:focus {
374
- border-bottom-color: var(--color-primary);
372
+ border-bottom-color: currentColor;
375
373
  box-shadow: none;
376
374
  }
377
375
 
@@ -381,16 +379,67 @@
381
379
  gap: 0.25rem;
382
380
  }
383
381
 
384
- /* Error State */
385
- .tree-select-error .tree-select-trigger {
386
- border-color: var(--color-error);
382
+ /* Color Variants */
383
+ .tree-select-primary .tree-select-trigger {
384
+ color: var(--color-primary);
385
+ }
386
+ .tree-select-primary .tree-select-trigger:focus {
387
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
388
+ }
389
+
390
+ .tree-select-secondary .tree-select-trigger {
391
+ color: var(--color-secondary);
392
+ }
393
+ .tree-select-secondary .tree-select-trigger:focus {
394
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
387
395
  }
388
396
 
397
+ .tree-select-tertiary .tree-select-trigger {
398
+ color: var(--color-tertiary);
399
+ }
400
+ .tree-select-tertiary .tree-select-trigger:focus {
401
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
402
+ }
403
+
404
+ .tree-select-info .tree-select-trigger {
405
+ color: var(--color-info);
406
+ }
407
+ .tree-select-info .tree-select-trigger:focus {
408
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
409
+ }
410
+
411
+ .tree-select-success .tree-select-trigger {
412
+ color: var(--color-success);
413
+ }
414
+ .tree-select-success .tree-select-trigger:focus {
415
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
416
+ }
417
+
418
+ .tree-select-warning .tree-select-trigger {
419
+ color: var(--color-warning);
420
+ }
421
+ .tree-select-warning .tree-select-trigger:focus {
422
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
423
+ }
424
+
425
+ .tree-select-error .tree-select-trigger {
426
+ color: var(--color-error);
427
+ }
389
428
  .tree-select-error .tree-select-trigger:focus {
390
- border-color: var(--color-error);
391
429
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
392
430
  }
393
431
 
432
+ /* Ghost Variant */
433
+ .tree-select-ghost .tree-select-trigger {
434
+ background-color: transparent;
435
+ border-color: transparent;
436
+ }
437
+ .tree-select-ghost .tree-select-trigger:focus {
438
+ background-color: var(--color-surface-container);
439
+ border-color: transparent;
440
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
441
+ }
442
+
394
443
  /* Disabled State */
395
444
  .tree-select-disabled .tree-select-trigger {
396
445
  cursor: not-allowed;
@@ -73,8 +73,8 @@ export const css = `/**
73
73
  }
74
74
 
75
75
  .alert-close:focus-visible {
76
- outline: 2px solid currentColor;
77
- outline-offset: 2px;
76
+ outline: none;
77
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
78
78
  }
79
79
 
80
80
  /* Type Variants */
@@ -102,6 +102,24 @@ export const css = `/**
102
102
  border-color: transparent;
103
103
  }
104
104
 
105
+ .alert-primary {
106
+ background-color: var(--color-primary-container);
107
+ color: var(--color-on-primary-container);
108
+ border-color: transparent;
109
+ }
110
+
111
+ .alert-secondary {
112
+ background-color: var(--color-secondary-container);
113
+ color: var(--color-on-secondary-container);
114
+ border-color: transparent;
115
+ }
116
+
117
+ .alert-tertiary {
118
+ background-color: var(--color-tertiary-container);
119
+ color: var(--color-on-tertiary-container);
120
+ border-color: transparent;
121
+ }
122
+
105
123
  /* Filled Variants */
106
124
  .alert-filled.alert-info {
107
125
  background-color: var(--color-info);
@@ -123,6 +141,21 @@ export const css = `/**
123
141
  color: var(--color-error-content);
124
142
  }
125
143
 
144
+ .alert-filled.alert-primary {
145
+ background-color: var(--color-primary);
146
+ color: var(--color-primary-content);
147
+ }
148
+
149
+ .alert-filled.alert-secondary {
150
+ background-color: var(--color-secondary);
151
+ color: var(--color-secondary-content);
152
+ }
153
+
154
+ .alert-filled.alert-tertiary {
155
+ background-color: var(--color-tertiary);
156
+ color: var(--color-tertiary-content);
157
+ }
158
+
126
159
  /* Outlined Variants */
127
160
  .alert-outlined {
128
161
  background-color: transparent;
@@ -148,6 +181,35 @@ export const css = `/**
148
181
  color: var(--color-error);
149
182
  }
150
183
 
184
+ .alert-outlined.alert-primary {
185
+ border-color: var(--color-primary);
186
+ color: var(--color-primary);
187
+ }
188
+
189
+ .alert-outlined.alert-secondary {
190
+ border-color: var(--color-secondary);
191
+ color: var(--color-secondary);
192
+ }
193
+
194
+ .alert-outlined.alert-tertiary {
195
+ border-color: var(--color-tertiary);
196
+ color: var(--color-tertiary);
197
+ }
198
+
199
+ /* Ghost Variant */
200
+ .alert-ghost {
201
+ background-color: transparent;
202
+ border-color: transparent;
203
+ }
204
+
205
+ .alert-ghost.alert-primary { color: var(--color-primary); }
206
+ .alert-ghost.alert-secondary { color: var(--color-secondary); }
207
+ .alert-ghost.alert-tertiary { color: var(--color-tertiary); }
208
+ .alert-ghost.alert-info { color: var(--color-info); }
209
+ .alert-ghost.alert-success { color: var(--color-success); }
210
+ .alert-ghost.alert-warning { color: var(--color-warning); }
211
+ .alert-ghost.alert-error { color: var(--color-error); }
212
+
151
213
  /* Dismissible */
152
214
  .alert-dismissible {
153
215
  padding-right: 2.5rem;