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