@duskmoon-dev/core 1.17.0 → 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 +30 -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 +1200 -5
  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 +30 -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 +1202 -7
  75. package/dist/index.min.css +1 -1
  76. package/dist/themes/generated/sunshine.css +1 -1
  77. package/package.json +1 -1
@@ -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,
@@ -184,6 +184,21 @@ export const css = `/**
184
184
  background-color: var(--color-error);
185
185
  }
186
186
 
187
+ .divider-accent::before,
188
+ .divider-accent::after {
189
+ background-color: var(--color-accent);
190
+ }
191
+
192
+ .divider-neutral::before,
193
+ .divider-neutral::after {
194
+ background-color: var(--color-neutral);
195
+ }
196
+
197
+ .divider-base::before,
198
+ .divider-base::after {
199
+ background-color: var(--color-base-content);
200
+ }
201
+
187
202
  /* ── Gradient Lines ─────────────────────────────────────────────── */
188
203
  .divider-gradient::before,
189
204
  .divider-gradient::after {
@@ -349,6 +349,27 @@ export const css = `/**
349
349
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
350
350
  }
351
351
 
352
+ .file-upload-accent .file-upload-dropzone {
353
+ color: var(--color-accent);
354
+ }
355
+ .file-upload-accent .file-upload-dropzone:focus-within {
356
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
357
+ }
358
+
359
+ .file-upload-neutral .file-upload-dropzone {
360
+ color: var(--color-neutral);
361
+ }
362
+ .file-upload-neutral .file-upload-dropzone:focus-within {
363
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
364
+ }
365
+
366
+ .file-upload-base .file-upload-dropzone {
367
+ color: var(--color-base-content);
368
+ }
369
+ .file-upload-base .file-upload-dropzone:focus-within {
370
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
371
+ }
372
+
352
373
  /* Ghost Variant */
353
374
  .file-upload-ghost .file-upload-dropzone {
354
375
  background-color: transparent;
@@ -115,6 +115,33 @@ export const css = `/**
115
115
  border-color: var(--color-error);
116
116
  }
117
117
 
118
+ .checkbox-accent:checked {
119
+ background-color: var(--color-accent);
120
+ border-color: var(--color-accent);
121
+ }
122
+
123
+ .checkbox-accent:checked::after {
124
+ border-color: var(--color-accent-content);
125
+ }
126
+
127
+ .checkbox-neutral:checked {
128
+ background-color: var(--color-neutral);
129
+ border-color: var(--color-neutral);
130
+ }
131
+
132
+ .checkbox-neutral:checked::after {
133
+ border-color: var(--color-neutral-content);
134
+ }
135
+
136
+ .checkbox-base:checked {
137
+ background-color: var(--color-base-100);
138
+ border-color: var(--color-base-100);
139
+ }
140
+
141
+ .checkbox-base:checked::after {
142
+ border-color: var(--color-base-content);
143
+ }
144
+
118
145
  /* Checkbox Sizes */
119
146
  .checkbox-xs {
120
147
  width: 0.875rem;
@@ -231,6 +258,30 @@ export const css = `/**
231
258
  background-color: var(--color-error);
232
259
  }
233
260
 
261
+ .radio-accent:checked {
262
+ border-color: var(--color-accent);
263
+ }
264
+
265
+ .radio-accent:checked::after {
266
+ background-color: var(--color-accent);
267
+ }
268
+
269
+ .radio-neutral:checked {
270
+ border-color: var(--color-neutral);
271
+ }
272
+
273
+ .radio-neutral:checked::after {
274
+ background-color: var(--color-neutral);
275
+ }
276
+
277
+ .radio-base:checked {
278
+ border-color: var(--color-base-content);
279
+ }
280
+
281
+ .radio-base:checked::after {
282
+ background-color: var(--color-base-content);
283
+ }
284
+
234
285
  /* Toggle/Switch */
235
286
  .toggle {
236
287
  appearance: none;
@@ -358,6 +409,38 @@ export const css = `/**
358
409
  border-color: var(--color-secondary);
359
410
  }
360
411
 
412
+ .select-tertiary:focus-visible {
413
+ border-color: var(--color-tertiary);
414
+ }
415
+
416
+ .select-info:focus-visible {
417
+ border-color: var(--color-info);
418
+ }
419
+
420
+ .select-success:focus-visible {
421
+ border-color: var(--color-success);
422
+ }
423
+
424
+ .select-warning:focus-visible {
425
+ border-color: var(--color-warning);
426
+ }
427
+
428
+ .select-error:focus-visible {
429
+ border-color: var(--color-error);
430
+ }
431
+
432
+ .select-accent:focus-visible {
433
+ border-color: var(--color-accent);
434
+ }
435
+
436
+ .select-neutral:focus-visible {
437
+ border-color: var(--color-neutral);
438
+ }
439
+
440
+ .select-base:focus-visible {
441
+ border-color: var(--color-base-content);
442
+ }
443
+
361
444
  /* Select Sizes */
362
445
  .select-xs {
363
446
  padding: 0.375rem 2rem 0.375rem 0.625rem;
@@ -60,6 +60,9 @@ export const css = `/**
60
60
  .input-success { color: var(--color-success); }
61
61
  .input-warning { color: var(--color-warning); }
62
62
  .input-error { color: var(--color-error); }
63
+ .input-accent { color: var(--color-accent); }
64
+ .input-neutral { color: var(--color-neutral); }
65
+ .input-base { color: var(--color-base-content); }
63
66
 
64
67
  /* Size Variants */
65
68
  .input-xs {
@@ -118,6 +121,9 @@ export const css = `/**
118
121
  .input-filled.input-success:focus-visible { border-bottom-color: var(--color-success); }
119
122
  .input-filled.input-warning:focus-visible { border-bottom-color: var(--color-warning); }
120
123
  .input-filled.input-error:focus-visible { border-bottom-color: var(--color-error); }
124
+ .input-filled.input-accent:focus-visible { border-bottom-color: var(--color-accent); }
125
+ .input-filled.input-neutral:focus-visible { border-bottom-color: var(--color-neutral); }
126
+ .input-filled.input-base:focus-visible { border-bottom-color: var(--color-base-content); }
121
127
 
122
128
  /* Input with Icon */
123
129
  .input-group {
@@ -485,6 +485,27 @@ export const css = `/**
485
485
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
486
486
  }
487
487
 
488
+ .multi-select-accent .multi-select-trigger {
489
+ color: var(--color-accent);
490
+ }
491
+ .multi-select-accent .multi-select-trigger:focus-within {
492
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
493
+ }
494
+
495
+ .multi-select-neutral .multi-select-trigger {
496
+ color: var(--color-neutral);
497
+ }
498
+ .multi-select-neutral .multi-select-trigger:focus-within {
499
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
500
+ }
501
+
502
+ .multi-select-base .multi-select-trigger {
503
+ color: var(--color-base-content);
504
+ }
505
+ .multi-select-base .multi-select-trigger:focus-within {
506
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
507
+ }
508
+
488
509
  /* Ghost Variant */
489
510
  .multi-select-ghost .multi-select-trigger {
490
511
  background-color: transparent;
@@ -16,6 +16,56 @@ export const css = `/**
16
16
  color: var(--color-on-surface);
17
17
  }
18
18
 
19
+ .navbar-primary {
20
+ background-color: var(--color-primary);
21
+ color: var(--color-primary-content);
22
+ }
23
+
24
+ .navbar-secondary {
25
+ background-color: var(--color-secondary);
26
+ color: var(--color-secondary-content);
27
+ }
28
+
29
+ .navbar-tertiary {
30
+ background-color: var(--color-tertiary);
31
+ color: var(--color-tertiary-content);
32
+ }
33
+
34
+ .navbar-accent {
35
+ background-color: var(--color-accent);
36
+ color: var(--color-accent-content);
37
+ }
38
+
39
+ .navbar-neutral {
40
+ background-color: var(--color-neutral);
41
+ color: var(--color-neutral-content);
42
+ }
43
+
44
+ .navbar-base {
45
+ background-color: var(--color-base-100);
46
+ color: var(--color-base-content);
47
+ }
48
+
49
+ .navbar-info {
50
+ background-color: var(--color-info);
51
+ color: var(--color-info-content);
52
+ }
53
+
54
+ .navbar-success {
55
+ background-color: var(--color-success);
56
+ color: var(--color-success-content);
57
+ }
58
+
59
+ .navbar-warning {
60
+ background-color: var(--color-warning);
61
+ color: var(--color-warning-content);
62
+ }
63
+
64
+ .navbar-error {
65
+ background-color: var(--color-error);
66
+ color: var(--color-error-content);
67
+ }
68
+
19
69
  .navbar-start {
20
70
  display: flex;
21
71
  align-items: center;
@@ -178,6 +178,30 @@ export const css = `/**
178
178
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
179
179
  }
180
180
 
181
+ .otp-input-accent .otp-input-field {
182
+ color: var(--color-accent);
183
+ }
184
+
185
+ .otp-input-accent .otp-input-field:focus {
186
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
187
+ }
188
+
189
+ .otp-input-neutral .otp-input-field {
190
+ color: var(--color-neutral);
191
+ }
192
+
193
+ .otp-input-neutral .otp-input-field:focus {
194
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
195
+ }
196
+
197
+ .otp-input-base .otp-input-field {
198
+ color: var(--color-base-content);
199
+ }
200
+
201
+ .otp-input-base .otp-input-field:focus {
202
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
203
+ }
204
+
181
205
  /* Ghost Variant */
182
206
  .otp-input-ghost .otp-input-field {
183
207
  background-color: transparent;
@@ -168,6 +168,30 @@ export const css = `/**
168
168
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
169
169
  }
170
170
 
171
+ .pin-input-accent .pin-input-field {
172
+ color: var(--color-accent);
173
+ }
174
+
175
+ .pin-input-accent .pin-input-field:focus {
176
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
177
+ }
178
+
179
+ .pin-input-neutral .pin-input-field {
180
+ color: var(--color-neutral);
181
+ }
182
+
183
+ .pin-input-neutral .pin-input-field:focus {
184
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
185
+ }
186
+
187
+ .pin-input-base .pin-input-field {
188
+ color: var(--color-base-content);
189
+ }
190
+
191
+ .pin-input-base .pin-input-field:focus {
192
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
193
+ }
194
+
171
195
  @keyframes pin-shake {
172
196
  0%, 100% { transform: translateX(0); }
173
197
  20%, 60% { transform: translateX(-4px); }
@@ -55,6 +55,18 @@ export const css = `/**
55
55
  background-color: var(--color-error);
56
56
  }
57
57
 
58
+ .progress-accent .progress-bar {
59
+ background-color: var(--color-accent);
60
+ }
61
+
62
+ .progress-neutral .progress-bar {
63
+ background-color: var(--color-neutral);
64
+ }
65
+
66
+ .progress-base .progress-bar {
67
+ background-color: var(--color-base-content);
68
+ }
69
+
58
70
  /* Size Variants */
59
71
  .progress-xs {
60
72
  height: 0.25rem;
@@ -130,6 +130,18 @@ export const css = `/**
130
130
  --radio-color: var(--color-info);
131
131
  }
132
132
 
133
+ .radio-accent {
134
+ --radio-color: var(--color-accent);
135
+ }
136
+
137
+ .radio-neutral {
138
+ --radio-color: var(--color-neutral);
139
+ }
140
+
141
+ .radio-base {
142
+ --radio-color: var(--color-base-content);
143
+ }
144
+
133
145
  /* Ghost Variant — borderless unchecked state */
134
146
  .radio-ghost {
135
147
  --radio-border-color: transparent;
@@ -129,6 +129,18 @@ export const css = `/**
129
129
  color: var(--color-warning);
130
130
  }
131
131
 
132
+ .rating-accent .rating-item.filled {
133
+ color: var(--color-accent);
134
+ }
135
+
136
+ .rating-neutral .rating-item.filled {
137
+ color: var(--color-neutral);
138
+ }
139
+
140
+ .rating-base .rating-item.filled {
141
+ color: var(--color-base-content);
142
+ }
143
+
132
144
  /* Read Only */
133
145
  .rating-readonly .rating-item {
134
146
  cursor: default;
@@ -178,6 +190,9 @@ export const css = `/**
178
190
  .rating-info:not(.rating-readonly):hover .rating-item { color: var(--color-info); }
179
191
  .rating-success:not(.rating-readonly):hover .rating-item { color: var(--color-success); }
180
192
  .rating-error:not(.rating-readonly):hover .rating-item { color: var(--color-error); }
193
+ .rating-accent:not(.rating-readonly):hover .rating-item { color: var(--color-accent); }
194
+ .rating-neutral:not(.rating-readonly):hover .rating-item { color: var(--color-neutral); }
195
+ .rating-base:not(.rating-readonly):hover .rating-item { color: var(--color-base-content); }
181
196
 
182
197
  /* Focus Visible — use warning (the default fill color) for the base ring;
183
198
  per-variant overrides below match the active fill color for each variant. */
@@ -194,6 +209,9 @@ export const css = `/**
194
209
  .rating-success .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 20%, transparent); }
195
210
  .rating-error .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent); }
196
211
  .rating-warning .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent); }
212
+ .rating-accent .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 20%, transparent); }
213
+ .rating-neutral .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 20%, transparent); }
214
+ .rating-base .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 20%, transparent); }
197
215
 
198
216
  /* Rating Display (static) */
199
217
  .rating-display {
@@ -134,6 +134,21 @@ export const css = `/**
134
134
  color: var(--color-on-error-container);
135
135
  }
136
136
 
137
+ .segment-control-accent .segment-item-active {
138
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
139
+ color: var(--color-on-surface);
140
+ }
141
+
142
+ .segment-control-neutral .segment-item-active {
143
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
144
+ color: var(--color-on-surface);
145
+ }
146
+
147
+ .segment-control-base .segment-item-active {
148
+ background-color: var(--color-base-200);
149
+ color: var(--color-base-content);
150
+ }
151
+
137
152
  /* Full Width */
138
153
  .segment-control-full {
139
154
  display: flex;
@@ -69,6 +69,9 @@ export const css = `/**
69
69
  .select-filled.select-success:focus-visible { border-bottom-color: var(--color-success); }
70
70
  .select-filled.select-warning:focus-visible { border-bottom-color: var(--color-warning); }
71
71
  .select-filled.select-error:focus-visible { border-bottom-color: var(--color-error); }
72
+ .select-filled.select-accent:focus-visible { border-bottom-color: var(--color-accent); }
73
+ .select-filled.select-neutral:focus-visible { border-bottom-color: var(--color-neutral); }
74
+ .select-filled.select-base:focus-visible { border-bottom-color: var(--color-base-content); }
72
75
 
73
76
  /* Outlined Variant (default is outlined) */
74
77
  .select-outlined {
@@ -88,6 +91,9 @@ export const css = `/**
88
91
  .select-success { color: var(--color-success); }
89
92
  .select-warning { color: var(--color-warning); }
90
93
  .select-error { color: var(--color-error); }
94
+ .select-accent { color: var(--color-accent); }
95
+ .select-neutral { color: var(--color-neutral); }
96
+ .select-base { color: var(--color-base-content); }
91
97
 
92
98
  /* Size Variants */
93
99
  .select-xs {
@@ -331,6 +331,69 @@ export const css = `/**
331
331
  border-top-color: var(--color-error);
332
332
  }
333
333
 
334
+ .slider-accent .slider-track-filled,
335
+ .slider-accent .slider-thumb {
336
+ background-color: var(--color-accent);
337
+ }
338
+
339
+ .slider-accent .slider-thumb:hover,
340
+ .slider-accent .slider-thumb:focus-visible {
341
+ box-shadow: 0 0 0 8px color-mix(in oklch, var(--color-accent) 15%, var(--color-surface)), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
342
+ }
343
+
344
+ .slider-accent .slider-mark-active { background-color: var(--color-accent-content); }
345
+
346
+ .slider-accent .slider-thumb-label {
347
+ background-color: var(--color-accent);
348
+ color: var(--color-accent-content);
349
+ }
350
+
351
+ .slider-accent .slider-thumb-label::after {
352
+ border-top-color: var(--color-accent);
353
+ }
354
+
355
+ .slider-neutral .slider-track-filled,
356
+ .slider-neutral .slider-thumb {
357
+ background-color: var(--color-neutral);
358
+ }
359
+
360
+ .slider-neutral .slider-thumb:hover,
361
+ .slider-neutral .slider-thumb:focus-visible {
362
+ box-shadow: 0 0 0 8px color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface)), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
363
+ }
364
+
365
+ .slider-neutral .slider-mark-active { background-color: var(--color-neutral-content); }
366
+
367
+ .slider-neutral .slider-thumb-label {
368
+ background-color: var(--color-neutral);
369
+ color: var(--color-neutral-content);
370
+ }
371
+
372
+ .slider-neutral .slider-thumb-label::after {
373
+ border-top-color: var(--color-neutral);
374
+ }
375
+
376
+ .slider-base .slider-track-filled,
377
+ .slider-base .slider-thumb {
378
+ background-color: var(--color-base-100);
379
+ }
380
+
381
+ .slider-base .slider-thumb:hover,
382
+ .slider-base .slider-thumb:focus-visible {
383
+ box-shadow: 0 0 0 8px var(--color-base-200), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
384
+ }
385
+
386
+ .slider-base .slider-mark-active { background-color: var(--color-base-content); }
387
+
388
+ .slider-base .slider-thumb-label {
389
+ background-color: var(--color-base-100);
390
+ color: var(--color-base-content);
391
+ }
392
+
393
+ .slider-base .slider-thumb-label::after {
394
+ border-top-color: var(--color-base-100);
395
+ }
396
+
334
397
  /* Disabled State */
335
398
  .slider-disabled {
336
399
  opacity: 0.6;
@@ -398,6 +461,9 @@ export const css = `/**
398
461
  .slider-success.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-success); }
399
462
  .slider-warning.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-warning); }
400
463
  .slider-error.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-error); }
464
+ .slider-accent.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-accent); }
465
+ .slider-neutral.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-neutral); }
466
+ .slider-base.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-base-100); }
401
467
 
402
468
  .slider-vertical .slider-marks {
403
469
  flex-direction: column;
@@ -246,6 +246,21 @@ export const css = `/**
246
246
  color: var(--color-on-tertiary-container);
247
247
  }
248
248
 
249
+ .snackbar-accent {
250
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
251
+ color: var(--color-on-surface);
252
+ }
253
+
254
+ .snackbar-neutral {
255
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
256
+ color: var(--color-on-surface);
257
+ }
258
+
259
+ .snackbar-base {
260
+ background-color: var(--color-base-200);
261
+ color: var(--color-base-content);
262
+ }
263
+
249
264
  /* Dark Snackbar (default MD3 style) */
250
265
  .snackbar-dark {
251
266
  background-color: var(--color-on-surface);