@duskmoon-dev/core 1.16.1 → 1.17.1

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 (77) hide show
  1. package/dist/components/alert.css +51 -0
  2. package/dist/components/appbar.css +69 -0
  3. package/dist/components/autocomplete.css +21 -0
  4. package/dist/components/avatar.css +15 -0
  5. package/dist/components/badge.css +45 -0
  6. package/dist/components/button.css +123 -0
  7. package/dist/components/card.css +27 -0
  8. package/dist/components/cascader.css +21 -0
  9. package/dist/components/chat.css +436 -0
  10. package/dist/components/checkbox.css +27 -0
  11. package/dist/components/chip.css +75 -0
  12. package/dist/components/circle-menu.css +24 -0
  13. package/dist/components/collapse.css +31 -1
  14. package/dist/components/datepicker.css +42 -0
  15. package/dist/components/divider.css +15 -0
  16. package/dist/components/file-upload.css +21 -0
  17. package/dist/components/form.css +83 -0
  18. package/dist/components/index.css +1677 -75
  19. package/dist/components/input.css +6 -0
  20. package/dist/components/multi-select.css +21 -0
  21. package/dist/components/navigation.css +50 -0
  22. package/dist/components/otp-input.css +24 -0
  23. package/dist/components/pin-input.css +24 -0
  24. package/dist/components/progress.css +12 -0
  25. package/dist/components/radio.css +12 -0
  26. package/dist/components/rating.css +18 -0
  27. package/dist/components/segment-control.css +15 -0
  28. package/dist/components/select.css +6 -0
  29. package/dist/components/slider.css +66 -0
  30. package/dist/components/snackbar.css +15 -0
  31. package/dist/components/switch.css +18 -0
  32. package/dist/components/textarea.css +6 -0
  33. package/dist/components/time-input.css +27 -0
  34. package/dist/components/toast.css +45 -0
  35. package/dist/components/toggle.css +27 -0
  36. package/dist/components/tooltip.css +63 -0
  37. package/dist/components/tree-select.css +21 -0
  38. package/dist/esm/components/alert.js +51 -0
  39. package/dist/esm/components/appbar.js +69 -0
  40. package/dist/esm/components/autocomplete.js +21 -0
  41. package/dist/esm/components/avatar.js +15 -0
  42. package/dist/esm/components/badge.js +45 -0
  43. package/dist/esm/components/button.js +123 -0
  44. package/dist/esm/components/card.js +27 -0
  45. package/dist/esm/components/cascader.js +21 -0
  46. package/dist/esm/components/chat.js +443 -0
  47. package/dist/esm/components/checkbox.js +27 -0
  48. package/dist/esm/components/chip.js +75 -0
  49. package/dist/esm/components/circle-menu.js +24 -0
  50. package/dist/esm/components/collapse.js +31 -1
  51. package/dist/esm/components/datepicker.js +42 -0
  52. package/dist/esm/components/divider.js +15 -0
  53. package/dist/esm/components/file-upload.js +21 -0
  54. package/dist/esm/components/form.js +83 -0
  55. package/dist/esm/components/input.js +6 -0
  56. package/dist/esm/components/multi-select.js +21 -0
  57. package/dist/esm/components/navigation.js +50 -0
  58. package/dist/esm/components/otp-input.js +24 -0
  59. package/dist/esm/components/pin-input.js +24 -0
  60. package/dist/esm/components/progress.js +12 -0
  61. package/dist/esm/components/radio.js +12 -0
  62. package/dist/esm/components/rating.js +18 -0
  63. package/dist/esm/components/segment-control.js +15 -0
  64. package/dist/esm/components/select.js +6 -0
  65. package/dist/esm/components/slider.js +66 -0
  66. package/dist/esm/components/snackbar.js +15 -0
  67. package/dist/esm/components/switch.js +18 -0
  68. package/dist/esm/components/textarea.js +6 -0
  69. package/dist/esm/components/time-input.js +27 -0
  70. package/dist/esm/components/toast.js +45 -0
  71. package/dist/esm/components/toggle.js +27 -0
  72. package/dist/esm/components/tooltip.js +63 -0
  73. package/dist/esm/components/tree-select.js +21 -0
  74. package/dist/index.css +1679 -77
  75. package/dist/index.min.css +1 -1
  76. package/dist/themes/generated/sunshine.css +1 -1
  77. package/package.json +6 -1
@@ -0,0 +1,443 @@
1
+ // Auto-generated from chat.css
2
+ export const css = `/**
3
+ * Chat Component Styles
4
+ * DuskMoonUI - LLM-oriented chat primitives
5
+ */
6
+
7
+ @layer components {
8
+ .chat {
9
+ display: grid;
10
+ grid-template-columns: auto minmax(0, 1fr);
11
+ column-gap: 0.75rem;
12
+ align-items: end;
13
+ padding: 0.25rem 0;
14
+ }
15
+
16
+ .chat-start {
17
+ grid-template-columns: auto minmax(0, 1fr);
18
+ }
19
+
20
+ .chat-end {
21
+ grid-template-columns: minmax(0, 1fr) auto;
22
+ }
23
+
24
+ .chat-avatar {
25
+ grid-row: 1 / span 999;
26
+ grid-column: 1;
27
+ align-self: start;
28
+ justify-self: start;
29
+ }
30
+
31
+ .chat-end .chat-avatar {
32
+ grid-column: 2;
33
+ justify-self: end;
34
+ }
35
+
36
+ .chat > :not(.chat-avatar) {
37
+ grid-column: 2;
38
+ justify-self: start;
39
+ max-width: 100%;
40
+ margin-bottom: 0.25rem;
41
+ }
42
+
43
+ .chat-end > :not(.chat-avatar) {
44
+ grid-column: 1;
45
+ justify-self: end;
46
+ }
47
+
48
+ .chat-header,
49
+ .chat-footer {
50
+ color: var(--color-on-surface-variant);
51
+ font-size: 0.75rem;
52
+ line-height: 1rem;
53
+ }
54
+
55
+ .chat-header {
56
+ margin-bottom: 0.125rem;
57
+ }
58
+
59
+ .chat-footer {
60
+ margin-top: 0.125rem;
61
+ margin-bottom: 0;
62
+ }
63
+
64
+ .chat-bubble {
65
+ --chat-bubble-bg: var(--color-surface-container-highest);
66
+ --chat-bubble-fg: var(--color-on-surface);
67
+
68
+ position: relative;
69
+ max-width: min(80ch, 100%);
70
+ padding: 0.625rem 0.875rem;
71
+ border-radius: 1rem;
72
+ background-color: var(--chat-bubble-bg);
73
+ color: var(--chat-bubble-fg);
74
+ box-shadow: inset 0 0 0 1px var(--color-outline-variant);
75
+ font-size: 0.875rem;
76
+ line-height: 1.45;
77
+ overflow-wrap: anywhere;
78
+ word-break: break-word;
79
+ }
80
+
81
+ .chat-start .chat-bubble::before,
82
+ .chat-end .chat-bubble::before,
83
+ .chat-start .chat-bubble::after,
84
+ .chat-end .chat-bubble::after {
85
+ content: "";
86
+ position: absolute;
87
+ top: 0;
88
+ clip-path: polygon(0 0, 100% 0, 100% 100%);
89
+ }
90
+
91
+ .chat-start .chat-bubble::before {
92
+ left: -0.625rem;
93
+ width: 1rem;
94
+ height: 1rem;
95
+ background-color: var(--color-outline-variant);
96
+ }
97
+
98
+ .chat-start .chat-bubble::after {
99
+ left: -0.5rem;
100
+ width: calc(1rem - 2px);
101
+ height: calc(1rem - 2px);
102
+ top: 1px;
103
+ background-color: var(--chat-bubble-bg);
104
+ }
105
+
106
+ .chat-start .chat-bubble {
107
+ border-top-left-radius: 0;
108
+ }
109
+
110
+ .chat-end .chat-bubble::before {
111
+ right: -0.625rem;
112
+ width: 1rem;
113
+ height: 1rem;
114
+ background-color: var(--color-outline-variant);
115
+ transform: scaleX(-1);
116
+ }
117
+
118
+ .chat-end .chat-bubble::after {
119
+ right: -0.5rem;
120
+ width: calc(1rem - 2px);
121
+ height: calc(1rem - 2px);
122
+ top: 1px;
123
+ background-color: var(--chat-bubble-bg);
124
+ transform: scaleX(-1);
125
+ }
126
+
127
+ .chat-end .chat-bubble {
128
+ border-top-right-radius: 0;
129
+ }
130
+
131
+ .chat-bubble-primary {
132
+ --chat-bubble-bg: var(--color-primary-container);
133
+ --chat-bubble-fg: var(--color-on-primary-container);
134
+ }
135
+
136
+ .chat-bubble-secondary {
137
+ --chat-bubble-bg: var(--color-secondary-container);
138
+ --chat-bubble-fg: var(--color-on-secondary-container);
139
+ }
140
+
141
+ .chat-bubble-tertiary {
142
+ --chat-bubble-bg: var(--color-tertiary-container);
143
+ --chat-bubble-fg: var(--color-on-tertiary-container);
144
+ }
145
+
146
+ .chat-bubble-info {
147
+ --chat-bubble-bg: var(--color-info-container);
148
+ --chat-bubble-fg: var(--color-on-info-container);
149
+ }
150
+
151
+ .chat-bubble-success {
152
+ --chat-bubble-bg: var(--color-success-container);
153
+ --chat-bubble-fg: var(--color-on-success-container);
154
+ }
155
+
156
+ .chat-bubble-warning {
157
+ --chat-bubble-bg: var(--color-warning-container);
158
+ --chat-bubble-fg: var(--color-on-warning-container);
159
+ }
160
+
161
+ .chat-bubble-error {
162
+ --chat-bubble-bg: var(--color-error-container);
163
+ --chat-bubble-fg: var(--color-on-error-container);
164
+ }
165
+
166
+ .chat-bubble-accent {
167
+ --chat-bubble-bg: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
168
+ --chat-bubble-fg: var(--color-on-surface);
169
+ }
170
+
171
+ .chat-bubble-neutral {
172
+ --chat-bubble-bg: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
173
+ --chat-bubble-fg: var(--color-on-surface);
174
+ }
175
+
176
+ .chat-bubble-base {
177
+ --chat-bubble-bg: var(--color-base-200);
178
+ --chat-bubble-fg: var(--color-base-content);
179
+ }
180
+
181
+ .chat-bubble-filled.chat-bubble-primary {
182
+ --chat-bubble-bg: var(--color-primary);
183
+ --chat-bubble-fg: var(--color-primary-content);
184
+ }
185
+
186
+ .chat-bubble-filled.chat-bubble-secondary {
187
+ --chat-bubble-bg: var(--color-secondary);
188
+ --chat-bubble-fg: var(--color-secondary-content);
189
+ }
190
+
191
+ .chat-bubble-filled.chat-bubble-tertiary {
192
+ --chat-bubble-bg: var(--color-tertiary);
193
+ --chat-bubble-fg: var(--color-tertiary-content);
194
+ }
195
+
196
+ .chat-bubble-filled.chat-bubble-info {
197
+ --chat-bubble-bg: var(--color-info);
198
+ --chat-bubble-fg: var(--color-info-content);
199
+ }
200
+
201
+ .chat-bubble-filled.chat-bubble-success {
202
+ --chat-bubble-bg: var(--color-success);
203
+ --chat-bubble-fg: var(--color-success-content);
204
+ }
205
+
206
+ .chat-bubble-filled.chat-bubble-warning {
207
+ --chat-bubble-bg: var(--color-warning);
208
+ --chat-bubble-fg: var(--color-warning-content);
209
+ }
210
+
211
+ .chat-bubble-filled.chat-bubble-error {
212
+ --chat-bubble-bg: var(--color-error);
213
+ --chat-bubble-fg: var(--color-error-content);
214
+ }
215
+
216
+ .chat-bubble-filled.chat-bubble-accent {
217
+ --chat-bubble-bg: var(--color-accent);
218
+ --chat-bubble-fg: var(--color-accent-content);
219
+ }
220
+
221
+ .chat-bubble-filled.chat-bubble-neutral {
222
+ --chat-bubble-bg: var(--color-neutral);
223
+ --chat-bubble-fg: var(--color-neutral-content);
224
+ }
225
+
226
+ .chat-bubble-filled.chat-bubble-base {
227
+ --chat-bubble-bg: var(--color-base-100);
228
+ --chat-bubble-fg: var(--color-base-content);
229
+ }
230
+
231
+ .chat-bubble-xs {
232
+ padding: 0.375rem 0.625rem;
233
+ font-size: 0.75rem;
234
+ }
235
+
236
+ .chat-bubble-sm {
237
+ padding: 0.5rem 0.75rem;
238
+ font-size: 0.8125rem;
239
+ }
240
+
241
+ .chat-bubble-md {
242
+ padding: 0.625rem 0.875rem;
243
+ font-size: 0.875rem;
244
+ }
245
+
246
+ .chat-bubble-lg {
247
+ padding: 0.875rem 1.125rem;
248
+ font-size: 1rem;
249
+ }
250
+
251
+ .chat-reasoning,
252
+ .chat-tool {
253
+ width: min(80ch, 100%);
254
+ border: 1px solid var(--color-outline);
255
+ border-radius: var(--radius-sm);
256
+ background-color: var(--color-surface-container-low);
257
+ color: var(--color-on-surface);
258
+ font-size: 0.8125rem;
259
+ line-height: 1.45;
260
+ overflow: hidden;
261
+ }
262
+
263
+ .chat-reasoning > summary,
264
+ .chat-tool > summary {
265
+ cursor: pointer;
266
+ list-style-position: inside;
267
+ }
268
+
269
+ .chat-reasoning > summary {
270
+ padding: 0.5rem 0.75rem;
271
+ color: var(--color-on-surface-variant);
272
+ font-weight: 500;
273
+ }
274
+
275
+ .chat-reasoning > :not(summary) {
276
+ padding: 0 0.75rem 0.75rem;
277
+ color: var(--color-on-surface-variant);
278
+ font-style: italic;
279
+ }
280
+
281
+ .chat-tool-header {
282
+ display: flex;
283
+ align-items: center;
284
+ gap: 0.5rem;
285
+ padding: 0.5rem 0.75rem;
286
+ color: var(--color-on-surface);
287
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
288
+ font-size: 0.75rem;
289
+ font-weight: 600;
290
+ }
291
+
292
+ .chat-tool-status {
293
+ display: inline-flex;
294
+ align-items: center;
295
+ min-height: 1.25rem;
296
+ padding: 0.125rem 0.5rem;
297
+ border-radius: 999px;
298
+ margin-left: auto;
299
+ font-family: inherit;
300
+ font-size: 0.6875rem;
301
+ font-weight: 600;
302
+ line-height: 1;
303
+ }
304
+
305
+ .chat-tool-call,
306
+ .chat-tool-result {
307
+ padding: 0.75rem;
308
+ border-top: 1px solid var(--color-outline);
309
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
310
+ font-size: 0.75rem;
311
+ overflow-x: auto;
312
+ }
313
+
314
+ .chat-tool-result {
315
+ background-color: color-mix(in oklch, var(--color-surface-container) 65%, transparent);
316
+ }
317
+
318
+ .chat-tool-pending .chat-tool-status {
319
+ border: 1px solid var(--color-outline);
320
+ color: var(--color-on-surface-variant);
321
+ }
322
+
323
+ .chat-tool-running .chat-tool-status {
324
+ background-color: var(--color-info-container);
325
+ color: var(--color-on-info-container);
326
+ }
327
+
328
+ .chat-tool-running .chat-tool-header::before {
329
+ content: "";
330
+ width: 0.875rem;
331
+ height: 0.875rem;
332
+ border: 2px solid currentColor;
333
+ border-top-color: transparent;
334
+ border-radius: 999px;
335
+ animation: chat-tool-spin 800ms linear infinite;
336
+ }
337
+
338
+ .chat-tool-success .chat-tool-status {
339
+ background-color: var(--color-success-container);
340
+ color: var(--color-on-success-container);
341
+ }
342
+
343
+ .chat-tool-error .chat-tool-status {
344
+ background-color: var(--color-error-container);
345
+ color: var(--color-on-error-container);
346
+ }
347
+
348
+ .chat-typing {
349
+ display: inline-flex;
350
+ align-items: center;
351
+ gap: 0.25rem;
352
+ min-width: 2.25rem;
353
+ }
354
+
355
+ .chat-typing::before,
356
+ .chat-typing::after,
357
+ .chat-typing span {
358
+ content: "";
359
+ width: 0.375rem;
360
+ height: 0.375rem;
361
+ border-radius: 999px;
362
+ background-color: currentColor;
363
+ opacity: 0.55;
364
+ animation: chat-typing-dot 1.4s ease-in-out infinite;
365
+ }
366
+
367
+ .chat-typing span {
368
+ animation-delay: 150ms;
369
+ }
370
+
371
+ .chat-typing::after {
372
+ animation-delay: 300ms;
373
+ }
374
+
375
+ .chat-bubble-streaming::after {
376
+ content: "";
377
+ display: inline-block;
378
+ width: 1px;
379
+ height: 1em;
380
+ margin-left: 0.25rem;
381
+ background-color: currentColor;
382
+ vertical-align: -0.125em;
383
+ animation: chat-stream-caret 1s step-end infinite;
384
+ }
385
+
386
+ .chat-reasoning > summary:focus-visible,
387
+ .chat-tool > summary:focus-visible {
388
+ outline: none;
389
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
390
+ }
391
+
392
+ @keyframes chat-typing-dot {
393
+ 0%,
394
+ 80%,
395
+ 100% {
396
+ opacity: 0.45;
397
+ transform: translateY(0);
398
+ }
399
+
400
+ 40% {
401
+ opacity: 1;
402
+ transform: translateY(-0.1875rem);
403
+ }
404
+ }
405
+
406
+ @keyframes chat-stream-caret {
407
+ 0%,
408
+ 49% {
409
+ opacity: 1;
410
+ }
411
+
412
+ 50%,
413
+ 100% {
414
+ opacity: 0;
415
+ }
416
+ }
417
+
418
+ @keyframes chat-tool-spin {
419
+ to {
420
+ transform: rotate(360deg);
421
+ }
422
+ }
423
+
424
+ @media (prefers-reduced-motion: reduce) {
425
+ .chat-typing::before,
426
+ .chat-typing::after,
427
+ .chat-typing span,
428
+ .chat-bubble-streaming::after,
429
+ .chat-tool-running .chat-tool-header::before {
430
+ animation: none;
431
+ }
432
+
433
+ .chat-bubble-streaming::after {
434
+ opacity: 1;
435
+ }
436
+ }
437
+ }
438
+ `;
439
+
440
+ const sheet = new CSSStyleSheet();
441
+ sheet.replaceSync(css);
442
+ export const styles = sheet;
443
+ export default sheet;
@@ -179,6 +179,33 @@ export const css = `/**
179
179
  border-color: var(--color-info-content);
180
180
  }
181
181
 
182
+ .checkbox-accent {
183
+ --checkbox-color: var(--color-accent);
184
+ }
185
+
186
+ .checkbox-accent:checked::before,
187
+ .checkbox-accent:indeterminate::before {
188
+ border-color: var(--color-accent-content);
189
+ }
190
+
191
+ .checkbox-neutral {
192
+ --checkbox-color: var(--color-neutral);
193
+ }
194
+
195
+ .checkbox-neutral:checked::before,
196
+ .checkbox-neutral:indeterminate::before {
197
+ border-color: var(--color-neutral-content);
198
+ }
199
+
200
+ .checkbox-base {
201
+ --checkbox-color: var(--color-base-100);
202
+ }
203
+
204
+ .checkbox-base:checked::before,
205
+ .checkbox-base:indeterminate::before {
206
+ border-color: var(--color-base-content);
207
+ }
208
+
182
209
  /* Ghost Variant — borderless unchecked state */
183
210
  .checkbox-ghost {
184
211
  --checkbox-border-color: transparent;
@@ -71,6 +71,36 @@ export const css = `/**
71
71
  background-color: color-mix(in oklch, var(--color-tertiary), black 10%);
72
72
  }
73
73
 
74
+ .chip-accent {
75
+ background-color: var(--color-accent);
76
+ color: var(--color-accent-content);
77
+ border-color: var(--color-accent);
78
+ }
79
+
80
+ .chip-accent:hover {
81
+ background-color: color-mix(in oklch, var(--color-accent), black 10%);
82
+ }
83
+
84
+ .chip-neutral {
85
+ background-color: var(--color-neutral);
86
+ color: var(--color-neutral-content);
87
+ border-color: var(--color-neutral);
88
+ }
89
+
90
+ .chip-neutral:hover {
91
+ background-color: color-mix(in oklch, var(--color-neutral), black 10%);
92
+ }
93
+
94
+ .chip-base {
95
+ background-color: var(--color-base-100);
96
+ color: var(--color-base-content);
97
+ border-color: var(--color-base-100);
98
+ }
99
+
100
+ .chip-base:hover {
101
+ background-color: var(--color-base-200);
102
+ }
103
+
74
104
  .chip-info {
75
105
  background-color: var(--color-info);
76
106
  color: var(--color-info-content);
@@ -145,6 +175,30 @@ export const css = `/**
145
175
  background-color: var(--color-tertiary-container);
146
176
  }
147
177
 
178
+ .chip-outlined.chip-accent {
179
+ color: var(--color-accent);
180
+ }
181
+
182
+ .chip-outlined.chip-accent:hover {
183
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
184
+ }
185
+
186
+ .chip-outlined.chip-neutral {
187
+ color: var(--color-neutral);
188
+ }
189
+
190
+ .chip-outlined.chip-neutral:hover {
191
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
192
+ }
193
+
194
+ .chip-outlined.chip-base {
195
+ color: var(--color-base-content);
196
+ }
197
+
198
+ .chip-outlined.chip-base:hover {
199
+ background-color: var(--color-base-200);
200
+ }
201
+
148
202
  .chip-outlined.chip-info {
149
203
  color: var(--color-info);
150
204
  }
@@ -198,6 +252,21 @@ export const css = `/**
198
252
  color: var(--color-on-tertiary-container);
199
253
  }
200
254
 
255
+ .chip-tonal.chip-accent {
256
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
257
+ color: var(--color-on-surface);
258
+ }
259
+
260
+ .chip-tonal.chip-neutral {
261
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
262
+ color: var(--color-on-surface);
263
+ }
264
+
265
+ .chip-tonal.chip-base {
266
+ background-color: var(--color-base-200);
267
+ color: var(--color-base-content);
268
+ }
269
+
201
270
  .chip-tonal.chip-info {
202
271
  background-color: var(--color-info-container);
203
272
  color: var(--color-on-info-container);
@@ -237,6 +306,9 @@ export const css = `/**
237
306
  .chip-ghost.chip-success { background-color: transparent; color: var(--color-success); }
238
307
  .chip-ghost.chip-warning { background-color: transparent; color: var(--color-warning); }
239
308
  .chip-ghost.chip-error { background-color: transparent; color: var(--color-error); }
309
+ .chip-ghost.chip-accent { background-color: transparent; color: var(--color-accent); }
310
+ .chip-ghost.chip-neutral { background-color: transparent; color: var(--color-neutral); }
311
+ .chip-ghost.chip-base { background-color: transparent; color: var(--color-base-content); }
240
312
 
241
313
  .chip-ghost.chip-primary:hover { background-color: var(--color-primary-container); }
242
314
  .chip-ghost.chip-secondary:hover { background-color: var(--color-secondary-container); }
@@ -245,6 +317,9 @@ export const css = `/**
245
317
  .chip-ghost.chip-success:hover { background-color: var(--color-success-container); }
246
318
  .chip-ghost.chip-warning:hover { background-color: var(--color-warning-container); }
247
319
  .chip-ghost.chip-error:hover { background-color: var(--color-error-container); }
320
+ .chip-ghost.chip-accent:hover { background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface)); }
321
+ .chip-ghost.chip-neutral:hover { background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface)); }
322
+ .chip-ghost.chip-base:hover { background-color: var(--color-base-200); }
248
323
 
249
324
  /* Size Variants */
250
325
  .chip-sm {
@@ -302,6 +302,30 @@ export const css = `/**
302
302
  --circle-menu-item-ring: color-mix(in oklch, var(--color-error) 40%, transparent);
303
303
  }
304
304
 
305
+ .circle-menu-accent {
306
+ --circle-menu-btn-bg: var(--color-accent);
307
+ --circle-menu-bar-color: var(--color-accent-content);
308
+ --circle-menu-item-bg: var(--color-accent);
309
+ --circle-menu-item-color: var(--color-accent-content);
310
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-accent) 40%, transparent);
311
+ }
312
+
313
+ .circle-menu-neutral {
314
+ --circle-menu-btn-bg: var(--color-neutral);
315
+ --circle-menu-bar-color: var(--color-neutral-content);
316
+ --circle-menu-item-bg: var(--color-neutral);
317
+ --circle-menu-item-color: var(--color-neutral-content);
318
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-neutral) 40%, transparent);
319
+ }
320
+
321
+ .circle-menu-base {
322
+ --circle-menu-btn-bg: var(--color-base-100);
323
+ --circle-menu-bar-color: var(--color-base-content);
324
+ --circle-menu-item-bg: var(--color-base-100);
325
+ --circle-menu-item-color: var(--color-base-content);
326
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-base-content) 40%, transparent);
327
+ }
328
+
305
329
  /* === Reduced motion === */
306
330
  @media (prefers-reduced-motion: reduce) {
307
331
  .circle-menu-label {
@@ -176,10 +176,16 @@ export const css = `/**
176
176
 
177
177
  .collapse-card .collapse-inner,
178
178
  .collapse-card .collapse-content > * {
179
- padding: 0 1rem 1rem;
180
179
  color: var(--color-on-surface-variant);
181
180
  }
182
181
 
182
+ .collapse-card.collapse-open .collapse-inner,
183
+ .collapse-card.collapse-open .collapse-content > *,
184
+ .collapse-card.show .collapse-inner,
185
+ .collapse-card.show .collapse-content > * {
186
+ padding: 0 1rem 1rem;
187
+ }
188
+
183
189
  /* Bordered Variant */
184
190
  .collapse-bordered {
185
191
  border: 1px solid var(--color-outline-variant);
@@ -252,6 +258,30 @@ export const css = `/**
252
258
  background-color: var(--color-error-container);
253
259
  }
254
260
 
261
+ .collapse-accent .collapse-trigger {
262
+ color: var(--color-accent);
263
+ }
264
+
265
+ .collapse-accent .collapse-trigger:hover {
266
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
267
+ }
268
+
269
+ .collapse-neutral .collapse-trigger {
270
+ color: var(--color-neutral);
271
+ }
272
+
273
+ .collapse-neutral .collapse-trigger:hover {
274
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
275
+ }
276
+
277
+ .collapse-base .collapse-trigger {
278
+ color: var(--color-base-content);
279
+ }
280
+
281
+ .collapse-base .collapse-trigger:hover {
282
+ background-color: var(--color-base-200);
283
+ }
284
+
255
285
  /* Size Variants */
256
286
  .collapse-sm .collapse-trigger {
257
287
  padding: 0.5rem 0.75rem;
@@ -756,6 +756,48 @@ export const css = `/**
756
756
  color: var(--color-warning-content);
757
757
  }
758
758
 
759
+ .datepicker-accent .datepicker-input {
760
+ color: var(--color-accent);
761
+ }
762
+ .datepicker-accent .datepicker-input:focus {
763
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
764
+ }
765
+
766
+ .datepicker-accent .datepicker-day-selected,
767
+ .datepicker-accent .datepicker-day-range-start,
768
+ .datepicker-accent .datepicker-day-range-end {
769
+ background-color: var(--color-accent);
770
+ color: var(--color-accent-content);
771
+ }
772
+
773
+ .datepicker-neutral .datepicker-input {
774
+ color: var(--color-neutral);
775
+ }
776
+ .datepicker-neutral .datepicker-input:focus {
777
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
778
+ }
779
+
780
+ .datepicker-neutral .datepicker-day-selected,
781
+ .datepicker-neutral .datepicker-day-range-start,
782
+ .datepicker-neutral .datepicker-day-range-end {
783
+ background-color: var(--color-neutral);
784
+ color: var(--color-neutral-content);
785
+ }
786
+
787
+ .datepicker-base .datepicker-input {
788
+ color: var(--color-base-content);
789
+ }
790
+ .datepicker-base .datepicker-input:focus {
791
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
792
+ }
793
+
794
+ .datepicker-base .datepicker-day-selected,
795
+ .datepicker-base .datepicker-day-range-start,
796
+ .datepicker-base .datepicker-day-range-end {
797
+ background-color: var(--color-base-100);
798
+ color: var(--color-base-content);
799
+ }
800
+
759
801
  /* Day Selected Color Variants */
760
802
  .datepicker-primary .datepicker-day-selected,
761
803
  .datepicker-primary .datepicker-day-range-start,