@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
@@ -144,6 +144,42 @@
144
144
  filter: none;
145
145
  }
146
146
 
147
+ .btn-accent {
148
+ --btn-text-color: var(--color-accent-content);
149
+ background-color: var(--color-accent);
150
+ border-color: var(--color-accent);
151
+ }
152
+
153
+ .btn-accent:hover {
154
+ background-color: color-mix(in oklch, var(--color-accent), black 10%);
155
+ border-color: color-mix(in oklch, var(--color-accent), black 10%);
156
+ filter: none;
157
+ }
158
+
159
+ .btn-neutral {
160
+ --btn-text-color: var(--color-neutral-content);
161
+ background-color: var(--color-neutral);
162
+ border-color: var(--color-neutral);
163
+ }
164
+
165
+ .btn-neutral:hover {
166
+ background-color: color-mix(in oklch, var(--color-neutral), black 10%);
167
+ border-color: color-mix(in oklch, var(--color-neutral), black 10%);
168
+ filter: none;
169
+ }
170
+
171
+ .btn-base {
172
+ --btn-text-color: var(--color-base-content);
173
+ background-color: var(--color-base-100);
174
+ border-color: var(--color-base-100);
175
+ }
176
+
177
+ .btn-base:hover {
178
+ background-color: var(--color-base-200);
179
+ border-color: var(--color-base-200);
180
+ filter: none;
181
+ }
182
+
147
183
  /* Outline / Outlined Variant (.btn-outlined is an alias) */
148
184
  .btn-outline,
149
185
  .btn-outlined {
@@ -194,6 +230,42 @@
194
230
  background-color: var(--color-tertiary);
195
231
  }
196
232
 
233
+ .btn-outline.btn-accent,
234
+ .btn-outlined.btn-accent {
235
+ --btn-text-color: var(--color-accent);
236
+ border-color: currentColor;
237
+ }
238
+
239
+ .btn-outline.btn-accent:hover,
240
+ .btn-outlined.btn-accent:hover {
241
+ --btn-text-color: var(--color-accent-content);
242
+ background-color: var(--color-accent);
243
+ }
244
+
245
+ .btn-outline.btn-neutral,
246
+ .btn-outlined.btn-neutral {
247
+ --btn-text-color: var(--color-neutral);
248
+ border-color: currentColor;
249
+ }
250
+
251
+ .btn-outline.btn-neutral:hover,
252
+ .btn-outlined.btn-neutral:hover {
253
+ --btn-text-color: var(--color-neutral-content);
254
+ background-color: var(--color-neutral);
255
+ }
256
+
257
+ .btn-outline.btn-base,
258
+ .btn-outlined.btn-base {
259
+ --btn-text-color: var(--color-base-content);
260
+ border-color: currentColor;
261
+ }
262
+
263
+ .btn-outline.btn-base:hover,
264
+ .btn-outlined.btn-base:hover {
265
+ --btn-text-color: var(--color-base-content);
266
+ background-color: var(--color-base-100);
267
+ }
268
+
197
269
  .btn-outline.btn-info,
198
270
  .btn-outlined.btn-info {
199
271
  --btn-text-color: var(--color-info);
@@ -285,6 +357,24 @@
285
357
  .btn-ghost.btn-success { --btn-text-color: var(--color-success); }
286
358
  .btn-ghost.btn-warning { --btn-text-color: var(--color-warning); }
287
359
  .btn-ghost.btn-error { --btn-text-color: var(--color-error); }
360
+ .btn-ghost.btn-accent { --btn-text-color: var(--color-accent); }
361
+ .btn-ghost.btn-neutral { --btn-text-color: var(--color-neutral); }
362
+ .btn-ghost.btn-base { --btn-text-color: var(--color-base-content); }
363
+
364
+ .btn-ghost.btn-accent:hover {
365
+ --btn-text-color: var(--color-accent);
366
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
367
+ }
368
+
369
+ .btn-ghost.btn-neutral:hover {
370
+ --btn-text-color: var(--color-neutral);
371
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
372
+ }
373
+
374
+ .btn-ghost.btn-base:hover {
375
+ --btn-text-color: var(--color-base-content);
376
+ background-color: var(--color-base-200);
377
+ }
288
378
 
289
379
  .btn-ghost.btn-info:hover {
290
380
  --btn-text-color: var(--color-on-info-container);
@@ -349,6 +439,24 @@
349
439
  .btn-text.btn-success { --btn-text-color: var(--color-success); }
350
440
  .btn-text.btn-warning { --btn-text-color: var(--color-warning); }
351
441
  .btn-text.btn-error { --btn-text-color: var(--color-error); }
442
+ .btn-text.btn-accent { --btn-text-color: var(--color-accent); }
443
+ .btn-text.btn-neutral { --btn-text-color: var(--color-neutral); }
444
+ .btn-text.btn-base { --btn-text-color: var(--color-base-content); }
445
+
446
+ .btn-text.btn-accent:hover {
447
+ --btn-text-color: var(--color-accent);
448
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
449
+ }
450
+
451
+ .btn-text.btn-neutral:hover {
452
+ --btn-text-color: var(--color-neutral);
453
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
454
+ }
455
+
456
+ .btn-text.btn-base:hover {
457
+ --btn-text-color: var(--color-base-content);
458
+ background-color: var(--color-base-200);
459
+ }
352
460
 
353
461
  .btn-text.btn-info:hover {
354
462
  --btn-text-color: var(--color-on-info-container);
@@ -396,6 +504,21 @@
396
504
  background-color: var(--color-tertiary-container);
397
505
  }
398
506
 
507
+ .btn-tonal.btn-accent {
508
+ --btn-text-color: var(--color-on-surface);
509
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
510
+ }
511
+
512
+ .btn-tonal.btn-neutral {
513
+ --btn-text-color: var(--color-on-surface);
514
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
515
+ }
516
+
517
+ .btn-tonal.btn-base {
518
+ --btn-text-color: var(--color-base-content);
519
+ background-color: var(--color-base-200);
520
+ }
521
+
399
522
  .btn-tonal.btn-info {
400
523
  --btn-text-color: var(--color-on-info-container);
401
524
  background-color: var(--color-info-container);
@@ -779,6 +902,33 @@
779
902
  color: var(--color-on-error-container);
780
903
  }
781
904
 
905
+ .card-accent {
906
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
907
+ color: var(--color-on-surface);
908
+ }
909
+
910
+ .card-accent .card-title {
911
+ color: var(--color-on-surface);
912
+ }
913
+
914
+ .card-neutral {
915
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
916
+ color: var(--color-on-surface);
917
+ }
918
+
919
+ .card-neutral .card-title {
920
+ color: var(--color-on-surface);
921
+ }
922
+
923
+ .card-base {
924
+ background-color: var(--color-base-200);
925
+ color: var(--color-base-content);
926
+ }
927
+
928
+ .card-base .card-title {
929
+ color: var(--color-base-content);
930
+ }
931
+
782
932
  /* Glass Effect */
783
933
  .card-glass {
784
934
  background-color: rgb(255 255 255 / 0.1);
@@ -906,6 +1056,9 @@
906
1056
  .input-success { color: var(--color-success); }
907
1057
  .input-warning { color: var(--color-warning); }
908
1058
  .input-error { color: var(--color-error); }
1059
+ .input-accent { color: var(--color-accent); }
1060
+ .input-neutral { color: var(--color-neutral); }
1061
+ .input-base { color: var(--color-base-content); }
909
1062
 
910
1063
  /* Size Variants */
911
1064
  .input-xs {
@@ -964,6 +1117,9 @@
964
1117
  .input-filled.input-success:focus-visible { border-bottom-color: var(--color-success); }
965
1118
  .input-filled.input-warning:focus-visible { border-bottom-color: var(--color-warning); }
966
1119
  .input-filled.input-error:focus-visible { border-bottom-color: var(--color-error); }
1120
+ .input-filled.input-accent:focus-visible { border-bottom-color: var(--color-accent); }
1121
+ .input-filled.input-neutral:focus-visible { border-bottom-color: var(--color-neutral); }
1122
+ .input-filled.input-base:focus-visible { border-bottom-color: var(--color-base-content); }
967
1123
 
968
1124
  /* Input with Icon */
969
1125
  .input-group {
@@ -1167,6 +1323,33 @@
1167
1323
  border-color: var(--color-error);
1168
1324
  }
1169
1325
 
1326
+ .checkbox-accent:checked {
1327
+ background-color: var(--color-accent);
1328
+ border-color: var(--color-accent);
1329
+ }
1330
+
1331
+ .checkbox-accent:checked::after {
1332
+ border-color: var(--color-accent-content);
1333
+ }
1334
+
1335
+ .checkbox-neutral:checked {
1336
+ background-color: var(--color-neutral);
1337
+ border-color: var(--color-neutral);
1338
+ }
1339
+
1340
+ .checkbox-neutral:checked::after {
1341
+ border-color: var(--color-neutral-content);
1342
+ }
1343
+
1344
+ .checkbox-base:checked {
1345
+ background-color: var(--color-base-100);
1346
+ border-color: var(--color-base-100);
1347
+ }
1348
+
1349
+ .checkbox-base:checked::after {
1350
+ border-color: var(--color-base-content);
1351
+ }
1352
+
1170
1353
  /* Checkbox Sizes */
1171
1354
  .checkbox-xs {
1172
1355
  width: 0.875rem;
@@ -1283,6 +1466,30 @@
1283
1466
  background-color: var(--color-error);
1284
1467
  }
1285
1468
 
1469
+ .radio-accent:checked {
1470
+ border-color: var(--color-accent);
1471
+ }
1472
+
1473
+ .radio-accent:checked::after {
1474
+ background-color: var(--color-accent);
1475
+ }
1476
+
1477
+ .radio-neutral:checked {
1478
+ border-color: var(--color-neutral);
1479
+ }
1480
+
1481
+ .radio-neutral:checked::after {
1482
+ background-color: var(--color-neutral);
1483
+ }
1484
+
1485
+ .radio-base:checked {
1486
+ border-color: var(--color-base-content);
1487
+ }
1488
+
1489
+ .radio-base:checked::after {
1490
+ background-color: var(--color-base-content);
1491
+ }
1492
+
1286
1493
  /* Toggle/Switch */
1287
1494
  .toggle {
1288
1495
  appearance: none;
@@ -1410,6 +1617,38 @@
1410
1617
  border-color: var(--color-secondary);
1411
1618
  }
1412
1619
 
1620
+ .select-tertiary:focus-visible {
1621
+ border-color: var(--color-tertiary);
1622
+ }
1623
+
1624
+ .select-info:focus-visible {
1625
+ border-color: var(--color-info);
1626
+ }
1627
+
1628
+ .select-success:focus-visible {
1629
+ border-color: var(--color-success);
1630
+ }
1631
+
1632
+ .select-warning:focus-visible {
1633
+ border-color: var(--color-warning);
1634
+ }
1635
+
1636
+ .select-error:focus-visible {
1637
+ border-color: var(--color-error);
1638
+ }
1639
+
1640
+ .select-accent:focus-visible {
1641
+ border-color: var(--color-accent);
1642
+ }
1643
+
1644
+ .select-neutral:focus-visible {
1645
+ border-color: var(--color-neutral);
1646
+ }
1647
+
1648
+ .select-base:focus-visible {
1649
+ border-color: var(--color-base-content);
1650
+ }
1651
+
1413
1652
  /* Select Sizes */
1414
1653
  .select-xs {
1415
1654
  padding: 0.375rem 2rem 0.375rem 0.625rem;
@@ -1650,6 +1889,56 @@
1650
1889
  color: var(--color-on-surface);
1651
1890
  }
1652
1891
 
1892
+ .navbar-primary {
1893
+ background-color: var(--color-primary);
1894
+ color: var(--color-primary-content);
1895
+ }
1896
+
1897
+ .navbar-secondary {
1898
+ background-color: var(--color-secondary);
1899
+ color: var(--color-secondary-content);
1900
+ }
1901
+
1902
+ .navbar-tertiary {
1903
+ background-color: var(--color-tertiary);
1904
+ color: var(--color-tertiary-content);
1905
+ }
1906
+
1907
+ .navbar-accent {
1908
+ background-color: var(--color-accent);
1909
+ color: var(--color-accent-content);
1910
+ }
1911
+
1912
+ .navbar-neutral {
1913
+ background-color: var(--color-neutral);
1914
+ color: var(--color-neutral-content);
1915
+ }
1916
+
1917
+ .navbar-base {
1918
+ background-color: var(--color-base-100);
1919
+ color: var(--color-base-content);
1920
+ }
1921
+
1922
+ .navbar-info {
1923
+ background-color: var(--color-info);
1924
+ color: var(--color-info-content);
1925
+ }
1926
+
1927
+ .navbar-success {
1928
+ background-color: var(--color-success);
1929
+ color: var(--color-success-content);
1930
+ }
1931
+
1932
+ .navbar-warning {
1933
+ background-color: var(--color-warning);
1934
+ color: var(--color-warning-content);
1935
+ }
1936
+
1937
+ .navbar-error {
1938
+ background-color: var(--color-error);
1939
+ color: var(--color-error-content);
1940
+ }
1941
+
1653
1942
  .navbar-start {
1654
1943
  display: flex;
1655
1944
  align-items: center;
@@ -2784,6 +3073,21 @@
2784
3073
  color: var(--color-error-content);
2785
3074
  }
2786
3075
 
3076
+ .avatar-accent {
3077
+ background-color: var(--color-accent);
3078
+ color: var(--color-accent-content);
3079
+ }
3080
+
3081
+ .avatar-neutral {
3082
+ background-color: var(--color-neutral);
3083
+ color: var(--color-neutral-content);
3084
+ }
3085
+
3086
+ .avatar-base {
3087
+ background-color: var(--color-base-100);
3088
+ color: var(--color-base-content);
3089
+ }
3090
+
2787
3091
  /* Ring */
2788
3092
  .avatar-ring {
2789
3093
  outline: none;
@@ -2894,6 +3198,21 @@
2894
3198
  color: var(--color-tertiary-content);
2895
3199
  }
2896
3200
 
3201
+ .badge-accent {
3202
+ background-color: var(--color-accent);
3203
+ color: var(--color-accent-content);
3204
+ }
3205
+
3206
+ .badge-neutral {
3207
+ background-color: var(--color-neutral);
3208
+ color: var(--color-neutral-content);
3209
+ }
3210
+
3211
+ .badge-base {
3212
+ background-color: var(--color-base-100);
3213
+ color: var(--color-base-content);
3214
+ }
3215
+
2897
3216
  .badge-info {
2898
3217
  background-color: var(--color-info);
2899
3218
  color: var(--color-info-content);
@@ -2920,119 +3239,586 @@
2920
3239
  border: 1px solid currentColor;
2921
3240
  }
2922
3241
 
2923
- .badge-outline.badge-primary {
2924
- color: var(--color-primary);
2925
- border-color: var(--color-primary);
3242
+ .badge-outline.badge-primary {
3243
+ color: var(--color-primary);
3244
+ border-color: var(--color-primary);
3245
+ }
3246
+
3247
+ .badge-outline.badge-secondary {
3248
+ color: var(--color-secondary);
3249
+ border-color: var(--color-secondary);
3250
+ }
3251
+
3252
+ .badge-outline.badge-tertiary {
3253
+ color: var(--color-tertiary);
3254
+ border-color: var(--color-tertiary);
3255
+ }
3256
+
3257
+ .badge-outline.badge-accent {
3258
+ color: var(--color-accent);
3259
+ border-color: var(--color-accent);
3260
+ }
3261
+
3262
+ .badge-outline.badge-neutral {
3263
+ color: var(--color-neutral);
3264
+ border-color: var(--color-neutral);
3265
+ }
3266
+
3267
+ .badge-outline.badge-base {
3268
+ color: var(--color-base-content);
3269
+ border-color: var(--color-base-content);
3270
+ }
3271
+
3272
+ .badge-outline.badge-info {
3273
+ color: var(--color-info);
3274
+ border-color: var(--color-info);
3275
+ }
3276
+
3277
+ .badge-outline.badge-success {
3278
+ color: var(--color-success);
3279
+ border-color: var(--color-success);
3280
+ }
3281
+
3282
+ .badge-outline.badge-warning {
3283
+ color: var(--color-warning);
3284
+ border-color: var(--color-warning);
3285
+ }
3286
+
3287
+ .badge-outline.badge-error {
3288
+ color: var(--color-error);
3289
+ border-color: var(--color-error);
3290
+ }
3291
+
3292
+ /* Soft/Tonal Variants */
3293
+ .badge-soft {
3294
+ background-color: var(--color-primary-container);
3295
+ color: var(--color-on-primary-container);
3296
+ }
3297
+
3298
+ .badge-soft.badge-primary {
3299
+ background-color: var(--color-primary-container);
3300
+ color: var(--color-on-primary-container);
3301
+ }
3302
+
3303
+ .badge-soft.badge-secondary {
3304
+ background-color: var(--color-secondary-container);
3305
+ color: var(--color-on-secondary-container);
3306
+ }
3307
+
3308
+ .badge-soft.badge-tertiary {
3309
+ background-color: var(--color-tertiary-container);
3310
+ color: var(--color-on-tertiary-container);
3311
+ }
3312
+
3313
+ .badge-soft.badge-accent {
3314
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
3315
+ color: var(--color-on-surface);
3316
+ }
3317
+
3318
+ .badge-soft.badge-neutral {
3319
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
3320
+ color: var(--color-on-surface);
3321
+ }
3322
+
3323
+ .badge-soft.badge-base {
3324
+ background-color: var(--color-base-200);
3325
+ color: var(--color-base-content);
3326
+ }
3327
+
3328
+ .badge-soft.badge-info {
3329
+ background-color: var(--color-info-container);
3330
+ color: var(--color-on-info-container);
3331
+ }
3332
+
3333
+ .badge-soft.badge-success {
3334
+ background-color: var(--color-success-container);
3335
+ color: var(--color-on-success-container);
3336
+ }
3337
+
3338
+ .badge-soft.badge-warning {
3339
+ background-color: var(--color-warning-container);
3340
+ color: var(--color-on-warning-container);
3341
+ }
3342
+
3343
+ .badge-soft.badge-error {
3344
+ background-color: var(--color-error-container);
3345
+ color: var(--color-on-error-container);
3346
+ }
3347
+
3348
+ /* Size Variants */
3349
+ .badge-sm {
3350
+ padding: 0 0.375rem;
3351
+ font-size: 0.625rem;
3352
+ line-height: 0.875rem;
3353
+ }
3354
+
3355
+ .badge-lg {
3356
+ padding: 0.25rem 0.75rem;
3357
+ font-size: 0.875rem;
3358
+ line-height: 1.25rem;
3359
+ }
3360
+
3361
+ /* Badge with Indicator Dot */
3362
+ .badge-indicator {
3363
+ position: relative;
3364
+ padding-left: 1rem;
3365
+ }
3366
+
3367
+ .badge-indicator::before {
3368
+ content: '';
3369
+ position: absolute;
3370
+ left: 0.375rem;
3371
+ top: 50%;
3372
+ transform: translateY(-50%);
3373
+ width: 0.375rem;
3374
+ height: 0.375rem;
3375
+ border-radius: var(--radius-full);
3376
+ background-color: currentColor;
3377
+ }
3378
+
3379
+ /* Empty Badge (just a dot) */
3380
+ .badge-dot {
3381
+ width: 0.5rem;
3382
+ height: 0.5rem;
3383
+ padding: 0;
3384
+ border-radius: var(--radius-full);
3385
+ }
3386
+ }
3387
+
3388
+ /**
3389
+ * Chat Component Styles
3390
+ * DuskMoonUI - LLM-oriented chat primitives
3391
+ */
3392
+
3393
+ @layer components {
3394
+ .chat {
3395
+ display: grid;
3396
+ grid-template-columns: auto minmax(0, 1fr);
3397
+ column-gap: 0.75rem;
3398
+ align-items: end;
3399
+ padding: 0.25rem 0;
3400
+ }
3401
+
3402
+ .chat-start {
3403
+ grid-template-columns: auto minmax(0, 1fr);
3404
+ }
3405
+
3406
+ .chat-end {
3407
+ grid-template-columns: minmax(0, 1fr) auto;
3408
+ }
3409
+
3410
+ .chat-avatar {
3411
+ grid-row: 1 / span 999;
3412
+ grid-column: 1;
3413
+ align-self: start;
3414
+ justify-self: start;
3415
+ }
3416
+
3417
+ .chat-end .chat-avatar {
3418
+ grid-column: 2;
3419
+ justify-self: end;
3420
+ }
3421
+
3422
+ .chat > :not(.chat-avatar) {
3423
+ grid-column: 2;
3424
+ justify-self: start;
3425
+ max-width: 100%;
3426
+ margin-bottom: 0.25rem;
3427
+ }
3428
+
3429
+ .chat-end > :not(.chat-avatar) {
3430
+ grid-column: 1;
3431
+ justify-self: end;
3432
+ }
3433
+
3434
+ .chat-header,
3435
+ .chat-footer {
3436
+ color: var(--color-on-surface-variant);
3437
+ font-size: 0.75rem;
3438
+ line-height: 1rem;
3439
+ }
3440
+
3441
+ .chat-header {
3442
+ margin-bottom: 0.125rem;
3443
+ }
3444
+
3445
+ .chat-footer {
3446
+ margin-top: 0.125rem;
3447
+ margin-bottom: 0;
3448
+ }
3449
+
3450
+ .chat-bubble {
3451
+ --chat-bubble-bg: var(--color-surface-container-highest);
3452
+ --chat-bubble-fg: var(--color-on-surface);
3453
+
3454
+ position: relative;
3455
+ max-width: min(80ch, 100%);
3456
+ padding: 0.625rem 0.875rem;
3457
+ border-radius: 1rem;
3458
+ background-color: var(--chat-bubble-bg);
3459
+ color: var(--chat-bubble-fg);
3460
+ box-shadow: inset 0 0 0 1px var(--color-outline-variant);
3461
+ font-size: 0.875rem;
3462
+ line-height: 1.45;
3463
+ overflow-wrap: anywhere;
3464
+ word-break: break-word;
3465
+ }
3466
+
3467
+ .chat-start .chat-bubble::before,
3468
+ .chat-end .chat-bubble::before,
3469
+ .chat-start .chat-bubble::after,
3470
+ .chat-end .chat-bubble::after {
3471
+ content: "";
3472
+ position: absolute;
3473
+ top: 0;
3474
+ clip-path: polygon(0 0, 100% 0, 100% 100%);
3475
+ }
3476
+
3477
+ .chat-start .chat-bubble::before {
3478
+ left: -0.625rem;
3479
+ width: 1rem;
3480
+ height: 1rem;
3481
+ background-color: var(--color-outline-variant);
3482
+ }
3483
+
3484
+ .chat-start .chat-bubble::after {
3485
+ left: -0.5rem;
3486
+ width: calc(1rem - 2px);
3487
+ height: calc(1rem - 2px);
3488
+ top: 1px;
3489
+ background-color: var(--chat-bubble-bg);
3490
+ }
3491
+
3492
+ .chat-start .chat-bubble {
3493
+ border-top-left-radius: 0;
3494
+ }
3495
+
3496
+ .chat-end .chat-bubble::before {
3497
+ right: -0.625rem;
3498
+ width: 1rem;
3499
+ height: 1rem;
3500
+ background-color: var(--color-outline-variant);
3501
+ transform: scaleX(-1);
3502
+ }
3503
+
3504
+ .chat-end .chat-bubble::after {
3505
+ right: -0.5rem;
3506
+ width: calc(1rem - 2px);
3507
+ height: calc(1rem - 2px);
3508
+ top: 1px;
3509
+ background-color: var(--chat-bubble-bg);
3510
+ transform: scaleX(-1);
3511
+ }
3512
+
3513
+ .chat-end .chat-bubble {
3514
+ border-top-right-radius: 0;
3515
+ }
3516
+
3517
+ .chat-bubble-primary {
3518
+ --chat-bubble-bg: var(--color-primary-container);
3519
+ --chat-bubble-fg: var(--color-on-primary-container);
3520
+ }
3521
+
3522
+ .chat-bubble-secondary {
3523
+ --chat-bubble-bg: var(--color-secondary-container);
3524
+ --chat-bubble-fg: var(--color-on-secondary-container);
3525
+ }
3526
+
3527
+ .chat-bubble-tertiary {
3528
+ --chat-bubble-bg: var(--color-tertiary-container);
3529
+ --chat-bubble-fg: var(--color-on-tertiary-container);
3530
+ }
3531
+
3532
+ .chat-bubble-info {
3533
+ --chat-bubble-bg: var(--color-info-container);
3534
+ --chat-bubble-fg: var(--color-on-info-container);
3535
+ }
3536
+
3537
+ .chat-bubble-success {
3538
+ --chat-bubble-bg: var(--color-success-container);
3539
+ --chat-bubble-fg: var(--color-on-success-container);
3540
+ }
3541
+
3542
+ .chat-bubble-warning {
3543
+ --chat-bubble-bg: var(--color-warning-container);
3544
+ --chat-bubble-fg: var(--color-on-warning-container);
3545
+ }
3546
+
3547
+ .chat-bubble-error {
3548
+ --chat-bubble-bg: var(--color-error-container);
3549
+ --chat-bubble-fg: var(--color-on-error-container);
3550
+ }
3551
+
3552
+ .chat-bubble-accent {
3553
+ --chat-bubble-bg: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
3554
+ --chat-bubble-fg: var(--color-on-surface);
3555
+ }
3556
+
3557
+ .chat-bubble-neutral {
3558
+ --chat-bubble-bg: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
3559
+ --chat-bubble-fg: var(--color-on-surface);
3560
+ }
3561
+
3562
+ .chat-bubble-base {
3563
+ --chat-bubble-bg: var(--color-base-200);
3564
+ --chat-bubble-fg: var(--color-base-content);
3565
+ }
3566
+
3567
+ .chat-bubble-filled.chat-bubble-primary {
3568
+ --chat-bubble-bg: var(--color-primary);
3569
+ --chat-bubble-fg: var(--color-primary-content);
3570
+ }
3571
+
3572
+ .chat-bubble-filled.chat-bubble-secondary {
3573
+ --chat-bubble-bg: var(--color-secondary);
3574
+ --chat-bubble-fg: var(--color-secondary-content);
3575
+ }
3576
+
3577
+ .chat-bubble-filled.chat-bubble-tertiary {
3578
+ --chat-bubble-bg: var(--color-tertiary);
3579
+ --chat-bubble-fg: var(--color-tertiary-content);
3580
+ }
3581
+
3582
+ .chat-bubble-filled.chat-bubble-info {
3583
+ --chat-bubble-bg: var(--color-info);
3584
+ --chat-bubble-fg: var(--color-info-content);
3585
+ }
3586
+
3587
+ .chat-bubble-filled.chat-bubble-success {
3588
+ --chat-bubble-bg: var(--color-success);
3589
+ --chat-bubble-fg: var(--color-success-content);
3590
+ }
3591
+
3592
+ .chat-bubble-filled.chat-bubble-warning {
3593
+ --chat-bubble-bg: var(--color-warning);
3594
+ --chat-bubble-fg: var(--color-warning-content);
3595
+ }
3596
+
3597
+ .chat-bubble-filled.chat-bubble-error {
3598
+ --chat-bubble-bg: var(--color-error);
3599
+ --chat-bubble-fg: var(--color-error-content);
3600
+ }
3601
+
3602
+ .chat-bubble-filled.chat-bubble-accent {
3603
+ --chat-bubble-bg: var(--color-accent);
3604
+ --chat-bubble-fg: var(--color-accent-content);
3605
+ }
3606
+
3607
+ .chat-bubble-filled.chat-bubble-neutral {
3608
+ --chat-bubble-bg: var(--color-neutral);
3609
+ --chat-bubble-fg: var(--color-neutral-content);
3610
+ }
3611
+
3612
+ .chat-bubble-filled.chat-bubble-base {
3613
+ --chat-bubble-bg: var(--color-base-100);
3614
+ --chat-bubble-fg: var(--color-base-content);
3615
+ }
3616
+
3617
+ .chat-bubble-xs {
3618
+ padding: 0.375rem 0.625rem;
3619
+ font-size: 0.75rem;
3620
+ }
3621
+
3622
+ .chat-bubble-sm {
3623
+ padding: 0.5rem 0.75rem;
3624
+ font-size: 0.8125rem;
3625
+ }
3626
+
3627
+ .chat-bubble-md {
3628
+ padding: 0.625rem 0.875rem;
3629
+ font-size: 0.875rem;
2926
3630
  }
2927
3631
 
2928
- .badge-outline.badge-secondary {
2929
- color: var(--color-secondary);
2930
- border-color: var(--color-secondary);
3632
+ .chat-bubble-lg {
3633
+ padding: 0.875rem 1.125rem;
3634
+ font-size: 1rem;
2931
3635
  }
2932
3636
 
2933
- .badge-outline.badge-tertiary {
2934
- color: var(--color-tertiary);
2935
- border-color: var(--color-tertiary);
3637
+ .chat-reasoning,
3638
+ .chat-tool {
3639
+ width: min(80ch, 100%);
3640
+ border: 1px solid var(--color-outline);
3641
+ border-radius: var(--radius-sm);
3642
+ background-color: var(--color-surface-container-low);
3643
+ color: var(--color-on-surface);
3644
+ font-size: 0.8125rem;
3645
+ line-height: 1.45;
3646
+ overflow: hidden;
2936
3647
  }
2937
3648
 
2938
- .badge-outline.badge-info {
2939
- color: var(--color-info);
2940
- border-color: var(--color-info);
3649
+ .chat-reasoning > summary,
3650
+ .chat-tool > summary {
3651
+ cursor: pointer;
3652
+ list-style-position: inside;
2941
3653
  }
2942
3654
 
2943
- .badge-outline.badge-success {
2944
- color: var(--color-success);
2945
- border-color: var(--color-success);
3655
+ .chat-reasoning > summary {
3656
+ padding: 0.5rem 0.75rem;
3657
+ color: var(--color-on-surface-variant);
3658
+ font-weight: 500;
2946
3659
  }
2947
3660
 
2948
- .badge-outline.badge-warning {
2949
- color: var(--color-warning);
2950
- border-color: var(--color-warning);
3661
+ .chat-reasoning > :not(summary) {
3662
+ padding: 0 0.75rem 0.75rem;
3663
+ color: var(--color-on-surface-variant);
3664
+ font-style: italic;
2951
3665
  }
2952
3666
 
2953
- .badge-outline.badge-error {
2954
- color: var(--color-error);
2955
- border-color: var(--color-error);
3667
+ .chat-tool-header {
3668
+ display: flex;
3669
+ align-items: center;
3670
+ gap: 0.5rem;
3671
+ padding: 0.5rem 0.75rem;
3672
+ color: var(--color-on-surface);
3673
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
3674
+ font-size: 0.75rem;
3675
+ font-weight: 600;
2956
3676
  }
2957
3677
 
2958
- /* Soft/Tonal Variants */
2959
- .badge-soft {
2960
- background-color: var(--color-primary-container);
2961
- color: var(--color-on-primary-container);
3678
+ .chat-tool-status {
3679
+ display: inline-flex;
3680
+ align-items: center;
3681
+ min-height: 1.25rem;
3682
+ padding: 0.125rem 0.5rem;
3683
+ border-radius: 999px;
3684
+ margin-left: auto;
3685
+ font-family: inherit;
3686
+ font-size: 0.6875rem;
3687
+ font-weight: 600;
3688
+ line-height: 1;
2962
3689
  }
2963
3690
 
2964
- .badge-soft.badge-primary {
2965
- background-color: var(--color-primary-container);
2966
- color: var(--color-on-primary-container);
3691
+ .chat-tool-call,
3692
+ .chat-tool-result {
3693
+ padding: 0.75rem;
3694
+ border-top: 1px solid var(--color-outline);
3695
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
3696
+ font-size: 0.75rem;
3697
+ overflow-x: auto;
2967
3698
  }
2968
3699
 
2969
- .badge-soft.badge-secondary {
2970
- background-color: var(--color-secondary-container);
2971
- color: var(--color-on-secondary-container);
3700
+ .chat-tool-result {
3701
+ background-color: color-mix(in oklch, var(--color-surface-container) 65%, transparent);
2972
3702
  }
2973
3703
 
2974
- .badge-soft.badge-tertiary {
2975
- background-color: var(--color-tertiary-container);
2976
- color: var(--color-on-tertiary-container);
3704
+ .chat-tool-pending .chat-tool-status {
3705
+ border: 1px solid var(--color-outline);
3706
+ color: var(--color-on-surface-variant);
2977
3707
  }
2978
3708
 
2979
- .badge-soft.badge-info {
3709
+ .chat-tool-running .chat-tool-status {
2980
3710
  background-color: var(--color-info-container);
2981
3711
  color: var(--color-on-info-container);
2982
3712
  }
2983
3713
 
2984
- .badge-soft.badge-success {
2985
- background-color: var(--color-success-container);
2986
- color: var(--color-on-success-container);
3714
+ .chat-tool-running .chat-tool-header::before {
3715
+ content: "";
3716
+ width: 0.875rem;
3717
+ height: 0.875rem;
3718
+ border: 2px solid currentColor;
3719
+ border-top-color: transparent;
3720
+ border-radius: 999px;
3721
+ animation: chat-tool-spin 800ms linear infinite;
2987
3722
  }
2988
3723
 
2989
- .badge-soft.badge-warning {
2990
- background-color: var(--color-warning-container);
2991
- color: var(--color-on-warning-container);
3724
+ .chat-tool-success .chat-tool-status {
3725
+ background-color: var(--color-success-container);
3726
+ color: var(--color-on-success-container);
2992
3727
  }
2993
3728
 
2994
- .badge-soft.badge-error {
3729
+ .chat-tool-error .chat-tool-status {
2995
3730
  background-color: var(--color-error-container);
2996
3731
  color: var(--color-on-error-container);
2997
3732
  }
2998
3733
 
2999
- /* Size Variants */
3000
- .badge-sm {
3001
- padding: 0 0.375rem;
3002
- font-size: 0.625rem;
3003
- line-height: 0.875rem;
3734
+ .chat-typing {
3735
+ display: inline-flex;
3736
+ align-items: center;
3737
+ gap: 0.25rem;
3738
+ min-width: 2.25rem;
3004
3739
  }
3005
3740
 
3006
- .badge-lg {
3007
- padding: 0.25rem 0.75rem;
3008
- font-size: 0.875rem;
3009
- line-height: 1.25rem;
3741
+ .chat-typing::before,
3742
+ .chat-typing::after,
3743
+ .chat-typing span {
3744
+ content: "";
3745
+ width: 0.375rem;
3746
+ height: 0.375rem;
3747
+ border-radius: 999px;
3748
+ background-color: currentColor;
3749
+ opacity: 0.55;
3750
+ animation: chat-typing-dot 1.4s ease-in-out infinite;
3010
3751
  }
3011
3752
 
3012
- /* Badge with Indicator Dot */
3013
- .badge-indicator {
3014
- position: relative;
3015
- padding-left: 1rem;
3753
+ .chat-typing span {
3754
+ animation-delay: 150ms;
3016
3755
  }
3017
3756
 
3018
- .badge-indicator::before {
3019
- content: '';
3020
- position: absolute;
3021
- left: 0.375rem;
3022
- top: 50%;
3023
- transform: translateY(-50%);
3024
- width: 0.375rem;
3025
- height: 0.375rem;
3026
- border-radius: var(--radius-full);
3757
+ .chat-typing::after {
3758
+ animation-delay: 300ms;
3759
+ }
3760
+
3761
+ .chat-bubble-streaming::after {
3762
+ content: "";
3763
+ display: inline-block;
3764
+ width: 1px;
3765
+ height: 1em;
3766
+ margin-left: 0.25rem;
3027
3767
  background-color: currentColor;
3768
+ vertical-align: -0.125em;
3769
+ animation: chat-stream-caret 1s step-end infinite;
3028
3770
  }
3029
3771
 
3030
- /* Empty Badge (just a dot) */
3031
- .badge-dot {
3032
- width: 0.5rem;
3033
- height: 0.5rem;
3034
- padding: 0;
3035
- border-radius: var(--radius-full);
3772
+ .chat-reasoning > summary:focus-visible,
3773
+ .chat-tool > summary:focus-visible {
3774
+ outline: none;
3775
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
3776
+ }
3777
+
3778
+ @keyframes chat-typing-dot {
3779
+ 0%,
3780
+ 80%,
3781
+ 100% {
3782
+ opacity: 0.45;
3783
+ transform: translateY(0);
3784
+ }
3785
+
3786
+ 40% {
3787
+ opacity: 1;
3788
+ transform: translateY(-0.1875rem);
3789
+ }
3790
+ }
3791
+
3792
+ @keyframes chat-stream-caret {
3793
+ 0%,
3794
+ 49% {
3795
+ opacity: 1;
3796
+ }
3797
+
3798
+ 50%,
3799
+ 100% {
3800
+ opacity: 0;
3801
+ }
3802
+ }
3803
+
3804
+ @keyframes chat-tool-spin {
3805
+ to {
3806
+ transform: rotate(360deg);
3807
+ }
3808
+ }
3809
+
3810
+ @media (prefers-reduced-motion: reduce) {
3811
+ .chat-typing::before,
3812
+ .chat-typing::after,
3813
+ .chat-typing span,
3814
+ .chat-bubble-streaming::after,
3815
+ .chat-tool-running .chat-tool-header::before {
3816
+ animation: none;
3817
+ }
3818
+
3819
+ .chat-bubble-streaming::after {
3820
+ opacity: 1;
3821
+ }
3036
3822
  }
3037
3823
  }
3038
3824
 
@@ -3108,6 +3894,36 @@
3108
3894
  background-color: color-mix(in oklch, var(--color-tertiary), black 10%);
3109
3895
  }
3110
3896
 
3897
+ .chip-accent {
3898
+ background-color: var(--color-accent);
3899
+ color: var(--color-accent-content);
3900
+ border-color: var(--color-accent);
3901
+ }
3902
+
3903
+ .chip-accent:hover {
3904
+ background-color: color-mix(in oklch, var(--color-accent), black 10%);
3905
+ }
3906
+
3907
+ .chip-neutral {
3908
+ background-color: var(--color-neutral);
3909
+ color: var(--color-neutral-content);
3910
+ border-color: var(--color-neutral);
3911
+ }
3912
+
3913
+ .chip-neutral:hover {
3914
+ background-color: color-mix(in oklch, var(--color-neutral), black 10%);
3915
+ }
3916
+
3917
+ .chip-base {
3918
+ background-color: var(--color-base-100);
3919
+ color: var(--color-base-content);
3920
+ border-color: var(--color-base-100);
3921
+ }
3922
+
3923
+ .chip-base:hover {
3924
+ background-color: var(--color-base-200);
3925
+ }
3926
+
3111
3927
  .chip-info {
3112
3928
  background-color: var(--color-info);
3113
3929
  color: var(--color-info-content);
@@ -3182,6 +3998,30 @@
3182
3998
  background-color: var(--color-tertiary-container);
3183
3999
  }
3184
4000
 
4001
+ .chip-outlined.chip-accent {
4002
+ color: var(--color-accent);
4003
+ }
4004
+
4005
+ .chip-outlined.chip-accent:hover {
4006
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
4007
+ }
4008
+
4009
+ .chip-outlined.chip-neutral {
4010
+ color: var(--color-neutral);
4011
+ }
4012
+
4013
+ .chip-outlined.chip-neutral:hover {
4014
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
4015
+ }
4016
+
4017
+ .chip-outlined.chip-base {
4018
+ color: var(--color-base-content);
4019
+ }
4020
+
4021
+ .chip-outlined.chip-base:hover {
4022
+ background-color: var(--color-base-200);
4023
+ }
4024
+
3185
4025
  .chip-outlined.chip-info {
3186
4026
  color: var(--color-info);
3187
4027
  }
@@ -3235,6 +4075,21 @@
3235
4075
  color: var(--color-on-tertiary-container);
3236
4076
  }
3237
4077
 
4078
+ .chip-tonal.chip-accent {
4079
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
4080
+ color: var(--color-on-surface);
4081
+ }
4082
+
4083
+ .chip-tonal.chip-neutral {
4084
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
4085
+ color: var(--color-on-surface);
4086
+ }
4087
+
4088
+ .chip-tonal.chip-base {
4089
+ background-color: var(--color-base-200);
4090
+ color: var(--color-base-content);
4091
+ }
4092
+
3238
4093
  .chip-tonal.chip-info {
3239
4094
  background-color: var(--color-info-container);
3240
4095
  color: var(--color-on-info-container);
@@ -3274,6 +4129,9 @@
3274
4129
  .chip-ghost.chip-success { background-color: transparent; color: var(--color-success); }
3275
4130
  .chip-ghost.chip-warning { background-color: transparent; color: var(--color-warning); }
3276
4131
  .chip-ghost.chip-error { background-color: transparent; color: var(--color-error); }
4132
+ .chip-ghost.chip-accent { background-color: transparent; color: var(--color-accent); }
4133
+ .chip-ghost.chip-neutral { background-color: transparent; color: var(--color-neutral); }
4134
+ .chip-ghost.chip-base { background-color: transparent; color: var(--color-base-content); }
3277
4135
 
3278
4136
  .chip-ghost.chip-primary:hover { background-color: var(--color-primary-container); }
3279
4137
  .chip-ghost.chip-secondary:hover { background-color: var(--color-secondary-container); }
@@ -3282,6 +4140,9 @@
3282
4140
  .chip-ghost.chip-success:hover { background-color: var(--color-success-container); }
3283
4141
  .chip-ghost.chip-warning:hover { background-color: var(--color-warning-container); }
3284
4142
  .chip-ghost.chip-error:hover { background-color: var(--color-error-container); }
4143
+ .chip-ghost.chip-accent:hover { background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface)); }
4144
+ .chip-ghost.chip-neutral:hover { background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface)); }
4145
+ .chip-ghost.chip-base:hover { background-color: var(--color-base-200); }
3285
4146
 
3286
4147
  /* Size Variants */
3287
4148
  .chip-sm {
@@ -4064,6 +4925,27 @@
4064
4925
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
4065
4926
  }
4066
4927
 
4928
+ .autocomplete-accent .autocomplete-input {
4929
+ color: var(--color-accent);
4930
+ }
4931
+ .autocomplete-accent .autocomplete-input:focus {
4932
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
4933
+ }
4934
+
4935
+ .autocomplete-neutral .autocomplete-input {
4936
+ color: var(--color-neutral);
4937
+ }
4938
+ .autocomplete-neutral .autocomplete-input:focus {
4939
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
4940
+ }
4941
+
4942
+ .autocomplete-base .autocomplete-input {
4943
+ color: var(--color-base-content);
4944
+ }
4945
+ .autocomplete-base .autocomplete-input:focus {
4946
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
4947
+ }
4948
+
4067
4949
  /* Ghost Variant */
4068
4950
  .autocomplete-ghost .autocomplete-input {
4069
4951
  background-color: transparent;
@@ -4512,6 +5394,27 @@
4512
5394
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
4513
5395
  }
4514
5396
 
5397
+ .cascader-accent .cascader-trigger {
5398
+ color: var(--color-accent);
5399
+ }
5400
+ .cascader-accent .cascader-trigger:focus {
5401
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
5402
+ }
5403
+
5404
+ .cascader-neutral .cascader-trigger {
5405
+ color: var(--color-neutral);
5406
+ }
5407
+ .cascader-neutral .cascader-trigger:focus {
5408
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
5409
+ }
5410
+
5411
+ .cascader-base .cascader-trigger {
5412
+ color: var(--color-base-content);
5413
+ }
5414
+ .cascader-base .cascader-trigger:focus {
5415
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
5416
+ }
5417
+
4515
5418
  /* Ghost Variant */
4516
5419
  .cascader-ghost .cascader-trigger {
4517
5420
  background-color: transparent;
@@ -4743,6 +5646,33 @@
4743
5646
  border-color: var(--color-info-content);
4744
5647
  }
4745
5648
 
5649
+ .checkbox-accent {
5650
+ --checkbox-color: var(--color-accent);
5651
+ }
5652
+
5653
+ .checkbox-accent:checked::before,
5654
+ .checkbox-accent:indeterminate::before {
5655
+ border-color: var(--color-accent-content);
5656
+ }
5657
+
5658
+ .checkbox-neutral {
5659
+ --checkbox-color: var(--color-neutral);
5660
+ }
5661
+
5662
+ .checkbox-neutral:checked::before,
5663
+ .checkbox-neutral:indeterminate::before {
5664
+ border-color: var(--color-neutral-content);
5665
+ }
5666
+
5667
+ .checkbox-base {
5668
+ --checkbox-color: var(--color-base-100);
5669
+ }
5670
+
5671
+ .checkbox-base:checked::before,
5672
+ .checkbox-base:indeterminate::before {
5673
+ border-color: var(--color-base-content);
5674
+ }
5675
+
4746
5676
  /* Ghost Variant — borderless unchecked state */
4747
5677
  .checkbox-ghost {
4748
5678
  --checkbox-border-color: transparent;
@@ -5563,6 +6493,48 @@
5563
6493
  color: var(--color-warning-content);
5564
6494
  }
5565
6495
 
6496
+ .datepicker-accent .datepicker-input {
6497
+ color: var(--color-accent);
6498
+ }
6499
+ .datepicker-accent .datepicker-input:focus {
6500
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
6501
+ }
6502
+
6503
+ .datepicker-accent .datepicker-day-selected,
6504
+ .datepicker-accent .datepicker-day-range-start,
6505
+ .datepicker-accent .datepicker-day-range-end {
6506
+ background-color: var(--color-accent);
6507
+ color: var(--color-accent-content);
6508
+ }
6509
+
6510
+ .datepicker-neutral .datepicker-input {
6511
+ color: var(--color-neutral);
6512
+ }
6513
+ .datepicker-neutral .datepicker-input:focus {
6514
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
6515
+ }
6516
+
6517
+ .datepicker-neutral .datepicker-day-selected,
6518
+ .datepicker-neutral .datepicker-day-range-start,
6519
+ .datepicker-neutral .datepicker-day-range-end {
6520
+ background-color: var(--color-neutral);
6521
+ color: var(--color-neutral-content);
6522
+ }
6523
+
6524
+ .datepicker-base .datepicker-input {
6525
+ color: var(--color-base-content);
6526
+ }
6527
+ .datepicker-base .datepicker-input:focus {
6528
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
6529
+ }
6530
+
6531
+ .datepicker-base .datepicker-day-selected,
6532
+ .datepicker-base .datepicker-day-range-start,
6533
+ .datepicker-base .datepicker-day-range-end {
6534
+ background-color: var(--color-base-100);
6535
+ color: var(--color-base-content);
6536
+ }
6537
+
5566
6538
  /* Day Selected Color Variants */
5567
6539
  .datepicker-primary .datepicker-day-selected,
5568
6540
  .datepicker-primary .datepicker-day-range-start,
@@ -5971,6 +6943,27 @@
5971
6943
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
5972
6944
  }
5973
6945
 
6946
+ .file-upload-accent .file-upload-dropzone {
6947
+ color: var(--color-accent);
6948
+ }
6949
+ .file-upload-accent .file-upload-dropzone:focus-within {
6950
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
6951
+ }
6952
+
6953
+ .file-upload-neutral .file-upload-dropzone {
6954
+ color: var(--color-neutral);
6955
+ }
6956
+ .file-upload-neutral .file-upload-dropzone:focus-within {
6957
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
6958
+ }
6959
+
6960
+ .file-upload-base .file-upload-dropzone {
6961
+ color: var(--color-base-content);
6962
+ }
6963
+ .file-upload-base .file-upload-dropzone:focus-within {
6964
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
6965
+ }
6966
+
5974
6967
  /* Ghost Variant */
5975
6968
  .file-upload-ghost .file-upload-dropzone {
5976
6969
  background-color: transparent;
@@ -6984,11 +7977,32 @@
6984
7977
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
6985
7978
  }
6986
7979
 
6987
- .multi-select-error .multi-select-trigger {
6988
- color: var(--color-error);
7980
+ .multi-select-error .multi-select-trigger {
7981
+ color: var(--color-error);
7982
+ }
7983
+ .multi-select-error .multi-select-trigger:focus-within {
7984
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
7985
+ }
7986
+
7987
+ .multi-select-accent .multi-select-trigger {
7988
+ color: var(--color-accent);
7989
+ }
7990
+ .multi-select-accent .multi-select-trigger:focus-within {
7991
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
7992
+ }
7993
+
7994
+ .multi-select-neutral .multi-select-trigger {
7995
+ color: var(--color-neutral);
7996
+ }
7997
+ .multi-select-neutral .multi-select-trigger:focus-within {
7998
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
7999
+ }
8000
+
8001
+ .multi-select-base .multi-select-trigger {
8002
+ color: var(--color-base-content);
6989
8003
  }
6990
- .multi-select-error .multi-select-trigger:focus-within {
6991
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
8004
+ .multi-select-base .multi-select-trigger:focus-within {
8005
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
6992
8006
  }
6993
8007
 
6994
8008
  /* Ghost Variant */
@@ -7226,6 +8240,30 @@
7226
8240
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
7227
8241
  }
7228
8242
 
8243
+ .otp-input-accent .otp-input-field {
8244
+ color: var(--color-accent);
8245
+ }
8246
+
8247
+ .otp-input-accent .otp-input-field:focus {
8248
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
8249
+ }
8250
+
8251
+ .otp-input-neutral .otp-input-field {
8252
+ color: var(--color-neutral);
8253
+ }
8254
+
8255
+ .otp-input-neutral .otp-input-field:focus {
8256
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
8257
+ }
8258
+
8259
+ .otp-input-base .otp-input-field {
8260
+ color: var(--color-base-content);
8261
+ }
8262
+
8263
+ .otp-input-base .otp-input-field:focus {
8264
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
8265
+ }
8266
+
7229
8267
  /* Ghost Variant */
7230
8268
  .otp-input-ghost .otp-input-field {
7231
8269
  background-color: transparent;
@@ -7444,6 +8482,30 @@
7444
8482
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
7445
8483
  }
7446
8484
 
8485
+ .pin-input-accent .pin-input-field {
8486
+ color: var(--color-accent);
8487
+ }
8488
+
8489
+ .pin-input-accent .pin-input-field:focus {
8490
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
8491
+ }
8492
+
8493
+ .pin-input-neutral .pin-input-field {
8494
+ color: var(--color-neutral);
8495
+ }
8496
+
8497
+ .pin-input-neutral .pin-input-field:focus {
8498
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
8499
+ }
8500
+
8501
+ .pin-input-base .pin-input-field {
8502
+ color: var(--color-base-content);
8503
+ }
8504
+
8505
+ .pin-input-base .pin-input-field:focus {
8506
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
8507
+ }
8508
+
7447
8509
  @keyframes pin-shake {
7448
8510
  0%, 100% { transform: translateX(0); }
7449
8511
  20%, 60% { transform: translateX(-4px); }
@@ -7628,6 +8690,18 @@
7628
8690
  --radio-color: var(--color-info);
7629
8691
  }
7630
8692
 
8693
+ .radio-accent {
8694
+ --radio-color: var(--color-accent);
8695
+ }
8696
+
8697
+ .radio-neutral {
8698
+ --radio-color: var(--color-neutral);
8699
+ }
8700
+
8701
+ .radio-base {
8702
+ --radio-color: var(--color-base-content);
8703
+ }
8704
+
7631
8705
  /* Ghost Variant — borderless unchecked state */
7632
8706
  .radio-ghost {
7633
8707
  --radio-border-color: transparent;
@@ -7821,6 +8895,18 @@
7821
8895
  color: var(--color-warning);
7822
8896
  }
7823
8897
 
8898
+ .rating-accent .rating-item.filled {
8899
+ color: var(--color-accent);
8900
+ }
8901
+
8902
+ .rating-neutral .rating-item.filled {
8903
+ color: var(--color-neutral);
8904
+ }
8905
+
8906
+ .rating-base .rating-item.filled {
8907
+ color: var(--color-base-content);
8908
+ }
8909
+
7824
8910
  /* Read Only */
7825
8911
  .rating-readonly .rating-item {
7826
8912
  cursor: default;
@@ -7870,6 +8956,9 @@
7870
8956
  .rating-info:not(.rating-readonly):hover .rating-item { color: var(--color-info); }
7871
8957
  .rating-success:not(.rating-readonly):hover .rating-item { color: var(--color-success); }
7872
8958
  .rating-error:not(.rating-readonly):hover .rating-item { color: var(--color-error); }
8959
+ .rating-accent:not(.rating-readonly):hover .rating-item { color: var(--color-accent); }
8960
+ .rating-neutral:not(.rating-readonly):hover .rating-item { color: var(--color-neutral); }
8961
+ .rating-base:not(.rating-readonly):hover .rating-item { color: var(--color-base-content); }
7873
8962
 
7874
8963
  /* Focus Visible — use warning (the default fill color) for the base ring;
7875
8964
  per-variant overrides below match the active fill color for each variant. */
@@ -7886,6 +8975,9 @@
7886
8975
  .rating-success .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 20%, transparent); }
7887
8976
  .rating-error .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent); }
7888
8977
  .rating-warning .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent); }
8978
+ .rating-accent .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 20%, transparent); }
8979
+ .rating-neutral .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 20%, transparent); }
8980
+ .rating-base .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 20%, transparent); }
7889
8981
 
7890
8982
  /* Rating Display (static) */
7891
8983
  .rating-display {
@@ -8089,6 +9181,21 @@
8089
9181
  color: var(--color-on-error-container);
8090
9182
  }
8091
9183
 
9184
+ .segment-control-accent .segment-item-active {
9185
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
9186
+ color: var(--color-on-surface);
9187
+ }
9188
+
9189
+ .segment-control-neutral .segment-item-active {
9190
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
9191
+ color: var(--color-on-surface);
9192
+ }
9193
+
9194
+ .segment-control-base .segment-item-active {
9195
+ background-color: var(--color-base-200);
9196
+ color: var(--color-base-content);
9197
+ }
9198
+
8092
9199
  /* Full Width */
8093
9200
  .segment-control-full {
8094
9201
  display: flex;
@@ -8232,6 +9339,9 @@
8232
9339
  .select-filled.select-success:focus-visible { border-bottom-color: var(--color-success); }
8233
9340
  .select-filled.select-warning:focus-visible { border-bottom-color: var(--color-warning); }
8234
9341
  .select-filled.select-error:focus-visible { border-bottom-color: var(--color-error); }
9342
+ .select-filled.select-accent:focus-visible { border-bottom-color: var(--color-accent); }
9343
+ .select-filled.select-neutral:focus-visible { border-bottom-color: var(--color-neutral); }
9344
+ .select-filled.select-base:focus-visible { border-bottom-color: var(--color-base-content); }
8235
9345
 
8236
9346
  /* Outlined Variant (default is outlined) */
8237
9347
  .select-outlined {
@@ -8251,6 +9361,9 @@
8251
9361
  .select-success { color: var(--color-success); }
8252
9362
  .select-warning { color: var(--color-warning); }
8253
9363
  .select-error { color: var(--color-error); }
9364
+ .select-accent { color: var(--color-accent); }
9365
+ .select-neutral { color: var(--color-neutral); }
9366
+ .select-base { color: var(--color-base-content); }
8254
9367
 
8255
9368
  /* Size Variants */
8256
9369
  .select-xs {
@@ -8684,6 +9797,69 @@
8684
9797
  border-top-color: var(--color-error);
8685
9798
  }
8686
9799
 
9800
+ .slider-accent .slider-track-filled,
9801
+ .slider-accent .slider-thumb {
9802
+ background-color: var(--color-accent);
9803
+ }
9804
+
9805
+ .slider-accent .slider-thumb:hover,
9806
+ .slider-accent .slider-thumb:focus-visible {
9807
+ 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);
9808
+ }
9809
+
9810
+ .slider-accent .slider-mark-active { background-color: var(--color-accent-content); }
9811
+
9812
+ .slider-accent .slider-thumb-label {
9813
+ background-color: var(--color-accent);
9814
+ color: var(--color-accent-content);
9815
+ }
9816
+
9817
+ .slider-accent .slider-thumb-label::after {
9818
+ border-top-color: var(--color-accent);
9819
+ }
9820
+
9821
+ .slider-neutral .slider-track-filled,
9822
+ .slider-neutral .slider-thumb {
9823
+ background-color: var(--color-neutral);
9824
+ }
9825
+
9826
+ .slider-neutral .slider-thumb:hover,
9827
+ .slider-neutral .slider-thumb:focus-visible {
9828
+ 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);
9829
+ }
9830
+
9831
+ .slider-neutral .slider-mark-active { background-color: var(--color-neutral-content); }
9832
+
9833
+ .slider-neutral .slider-thumb-label {
9834
+ background-color: var(--color-neutral);
9835
+ color: var(--color-neutral-content);
9836
+ }
9837
+
9838
+ .slider-neutral .slider-thumb-label::after {
9839
+ border-top-color: var(--color-neutral);
9840
+ }
9841
+
9842
+ .slider-base .slider-track-filled,
9843
+ .slider-base .slider-thumb {
9844
+ background-color: var(--color-base-100);
9845
+ }
9846
+
9847
+ .slider-base .slider-thumb:hover,
9848
+ .slider-base .slider-thumb:focus-visible {
9849
+ box-shadow: 0 0 0 8px var(--color-base-200), 0 2px 4px color-mix(in srgb, var(--color-shadow) 20%, transparent);
9850
+ }
9851
+
9852
+ .slider-base .slider-mark-active { background-color: var(--color-base-content); }
9853
+
9854
+ .slider-base .slider-thumb-label {
9855
+ background-color: var(--color-base-100);
9856
+ color: var(--color-base-content);
9857
+ }
9858
+
9859
+ .slider-base .slider-thumb-label::after {
9860
+ border-top-color: var(--color-base-100);
9861
+ }
9862
+
8687
9863
  /* Disabled State */
8688
9864
  .slider-disabled {
8689
9865
  opacity: 0.6;
@@ -8751,6 +9927,9 @@
8751
9927
  .slider-success.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-success); }
8752
9928
  .slider-warning.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-warning); }
8753
9929
  .slider-error.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-error); }
9930
+ .slider-accent.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-accent); }
9931
+ .slider-neutral.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-neutral); }
9932
+ .slider-base.slider-vertical .slider-thumb-label::after { border-right-color: var(--color-base-100); }
8754
9933
 
8755
9934
  .slider-vertical .slider-marks {
8756
9935
  flex-direction: column;
@@ -9009,6 +10188,24 @@
9009
10188
  --switch-container-color: var(--color-info-container);
9010
10189
  }
9011
10190
 
10191
+ .switch-accent {
10192
+ --switch-color: var(--color-accent);
10193
+ --switch-content-color: var(--color-accent-content);
10194
+ --switch-container-color: color-mix(in oklch, var(--color-accent) 20%, var(--color-surface));
10195
+ }
10196
+
10197
+ .switch-neutral {
10198
+ --switch-color: var(--color-neutral);
10199
+ --switch-content-color: var(--color-neutral-content);
10200
+ --switch-container-color: color-mix(in oklch, var(--color-neutral) 20%, var(--color-surface));
10201
+ }
10202
+
10203
+ .switch-base {
10204
+ --switch-color: var(--color-base-100);
10205
+ --switch-content-color: var(--color-base-content);
10206
+ --switch-container-color: color-mix(in oklch, var(--color-base-100) 20%, var(--color-surface));
10207
+ }
10208
+
9012
10209
  /* Ghost Variant — borderless track */
9013
10210
  .switch-ghost {
9014
10211
  --switch-border-color: transparent;
@@ -9226,6 +10423,9 @@
9226
10423
  .textarea-filled.textarea-success:focus-visible { border-bottom-color: var(--color-success); }
9227
10424
  .textarea-filled.textarea-warning:focus-visible { border-bottom-color: var(--color-warning); }
9228
10425
  .textarea-filled.textarea-error:focus-visible { border-bottom-color: var(--color-error); }
10426
+ .textarea-filled.textarea-accent:focus-visible { border-bottom-color: var(--color-accent); }
10427
+ .textarea-filled.textarea-neutral:focus-visible { border-bottom-color: var(--color-neutral); }
10428
+ .textarea-filled.textarea-base:focus-visible { border-bottom-color: var(--color-base-content); }
9229
10429
 
9230
10430
  /* Outlined Variant (default) */
9231
10431
  .textarea-outlined {
@@ -9269,6 +10469,9 @@
9269
10469
  .textarea-success { color: var(--color-success); }
9270
10470
  .textarea-warning { color: var(--color-warning); }
9271
10471
  .textarea-error { color: var(--color-error); }
10472
+ .textarea-accent { color: var(--color-accent); }
10473
+ .textarea-neutral { color: var(--color-neutral); }
10474
+ .textarea-base { color: var(--color-base-content); }
9272
10475
 
9273
10476
  /* ============================================
9274
10477
  * SIZE VARIANTS
@@ -9768,6 +10971,30 @@
9768
10971
  border-color: var(--color-error);
9769
10972
  }
9770
10973
 
10974
+ /* Accent variant */
10975
+ .toggle-btn-accent.toggle-btn-active,
10976
+ .toggle-btn-accent.active {
10977
+ color: var(--color-on-surface);
10978
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
10979
+ border-color: var(--color-accent);
10980
+ }
10981
+
10982
+ /* Neutral variant */
10983
+ .toggle-btn-neutral.toggle-btn-active,
10984
+ .toggle-btn-neutral.active {
10985
+ color: var(--color-on-surface);
10986
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
10987
+ border-color: var(--color-neutral);
10988
+ }
10989
+
10990
+ /* Base variant */
10991
+ .toggle-btn-base.toggle-btn-active,
10992
+ .toggle-btn-base.active {
10993
+ color: var(--color-base-content);
10994
+ background-color: var(--color-base-200);
10995
+ border-color: var(--color-base-content);
10996
+ }
10997
+
9771
10998
  /* Ghost Variant */
9772
10999
  .toggle-btn-ghost {
9773
11000
  background-color: transparent;
@@ -9785,6 +11012,9 @@
9785
11012
  .toggle-btn-ghost.toggle-btn-success { color: var(--color-success); }
9786
11013
  .toggle-btn-ghost.toggle-btn-warning { color: var(--color-warning); }
9787
11014
  .toggle-btn-ghost.toggle-btn-error { color: var(--color-error); }
11015
+ .toggle-btn-ghost.toggle-btn-accent { color: var(--color-accent); }
11016
+ .toggle-btn-ghost.toggle-btn-neutral { color: var(--color-neutral); }
11017
+ .toggle-btn-ghost.toggle-btn-base { color: var(--color-base-content); }
9788
11018
 
9789
11019
  /* Focus state */
9790
11020
  .toggle-btn:focus-visible {
@@ -10223,6 +11453,33 @@
10223
11453
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
10224
11454
  }
10225
11455
 
11456
+ .time-input-accent .time-input-field,
11457
+ .time-input-accent .time-input-segments {
11458
+ color: var(--color-accent);
11459
+ }
11460
+
11461
+ .time-input-accent .time-input-field:focus {
11462
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
11463
+ }
11464
+
11465
+ .time-input-neutral .time-input-field,
11466
+ .time-input-neutral .time-input-segments {
11467
+ color: var(--color-neutral);
11468
+ }
11469
+
11470
+ .time-input-neutral .time-input-field:focus {
11471
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
11472
+ }
11473
+
11474
+ .time-input-base .time-input-field,
11475
+ .time-input-base .time-input-segments {
11476
+ color: var(--color-base-content);
11477
+ }
11478
+
11479
+ .time-input-base .time-input-field:focus {
11480
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
11481
+ }
11482
+
10226
11483
  /* Ghost Variant */
10227
11484
  .time-input-ghost .time-input-field,
10228
11485
  .time-input-ghost .time-input-segments {
@@ -10733,6 +11990,27 @@
10733
11990
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
10734
11991
  }
10735
11992
 
11993
+ .tree-select-accent .tree-select-trigger {
11994
+ color: var(--color-accent);
11995
+ }
11996
+ .tree-select-accent .tree-select-trigger:focus {
11997
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
11998
+ }
11999
+
12000
+ .tree-select-neutral .tree-select-trigger {
12001
+ color: var(--color-neutral);
12002
+ }
12003
+ .tree-select-neutral .tree-select-trigger:focus {
12004
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
12005
+ }
12006
+
12007
+ .tree-select-base .tree-select-trigger {
12008
+ color: var(--color-base-content);
12009
+ }
12010
+ .tree-select-base .tree-select-trigger:focus {
12011
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
12012
+ }
12013
+
10736
12014
  /* Ghost Variant */
10737
12015
  .tree-select-ghost .tree-select-trigger {
10738
12016
  background-color: transparent;
@@ -10950,6 +12228,24 @@
10950
12228
  border-color: transparent;
10951
12229
  }
10952
12230
 
12231
+ .alert-accent {
12232
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
12233
+ color: var(--color-on-surface);
12234
+ border-color: transparent;
12235
+ }
12236
+
12237
+ .alert-neutral {
12238
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
12239
+ color: var(--color-on-surface);
12240
+ border-color: transparent;
12241
+ }
12242
+
12243
+ .alert-base {
12244
+ background-color: var(--color-base-200);
12245
+ color: var(--color-base-content);
12246
+ border-color: transparent;
12247
+ }
12248
+
10953
12249
  /* Filled Variants */
10954
12250
  .alert-filled.alert-info {
10955
12251
  background-color: var(--color-info);
@@ -10986,6 +12282,21 @@
10986
12282
  color: var(--color-tertiary-content);
10987
12283
  }
10988
12284
 
12285
+ .alert-filled.alert-accent {
12286
+ background-color: var(--color-accent);
12287
+ color: var(--color-accent-content);
12288
+ }
12289
+
12290
+ .alert-filled.alert-neutral {
12291
+ background-color: var(--color-neutral);
12292
+ color: var(--color-neutral-content);
12293
+ }
12294
+
12295
+ .alert-filled.alert-base {
12296
+ background-color: var(--color-base-100);
12297
+ color: var(--color-base-content);
12298
+ }
12299
+
10989
12300
  /* Outlined Variants */
10990
12301
  .alert-outlined {
10991
12302
  background-color: transparent;
@@ -11026,6 +12337,21 @@
11026
12337
  color: var(--color-tertiary);
11027
12338
  }
11028
12339
 
12340
+ .alert-outlined.alert-accent {
12341
+ border-color: var(--color-accent);
12342
+ color: var(--color-accent);
12343
+ }
12344
+
12345
+ .alert-outlined.alert-neutral {
12346
+ border-color: var(--color-neutral);
12347
+ color: var(--color-neutral);
12348
+ }
12349
+
12350
+ .alert-outlined.alert-base {
12351
+ border-color: var(--color-base-content);
12352
+ color: var(--color-base-content);
12353
+ }
12354
+
11029
12355
  /* Ghost Variant */
11030
12356
  .alert-ghost {
11031
12357
  background-color: transparent;
@@ -11039,6 +12365,9 @@
11039
12365
  .alert-ghost.alert-success { color: var(--color-success); }
11040
12366
  .alert-ghost.alert-warning { color: var(--color-warning); }
11041
12367
  .alert-ghost.alert-error { color: var(--color-error); }
12368
+ .alert-ghost.alert-accent { color: var(--color-accent); }
12369
+ .alert-ghost.alert-neutral { color: var(--color-neutral); }
12370
+ .alert-ghost.alert-base { color: var(--color-base-content); }
11042
12371
 
11043
12372
  /* Dismissible */
11044
12373
  .alert-dismissible {
@@ -11321,6 +12650,18 @@
11321
12650
  background-color: var(--color-error);
11322
12651
  }
11323
12652
 
12653
+ .progress-accent .progress-bar {
12654
+ background-color: var(--color-accent);
12655
+ }
12656
+
12657
+ .progress-neutral .progress-bar {
12658
+ background-color: var(--color-neutral);
12659
+ }
12660
+
12661
+ .progress-base .progress-bar {
12662
+ background-color: var(--color-base-content);
12663
+ }
12664
+
11324
12665
  /* Size Variants */
11325
12666
  .progress-xs {
11326
12667
  height: 0.25rem;
@@ -11968,6 +13309,21 @@
11968
13309
  color: var(--color-on-tertiary-container);
11969
13310
  }
11970
13311
 
13312
+ .snackbar-accent {
13313
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
13314
+ color: var(--color-on-surface);
13315
+ }
13316
+
13317
+ .snackbar-neutral {
13318
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
13319
+ color: var(--color-on-surface);
13320
+ }
13321
+
13322
+ .snackbar-base {
13323
+ background-color: var(--color-base-200);
13324
+ color: var(--color-base-content);
13325
+ }
13326
+
11971
13327
  /* Dark Snackbar (default MD3 style) */
11972
13328
  .snackbar-dark {
11973
13329
  background-color: var(--color-on-surface);
@@ -12251,6 +13607,30 @@
12251
13607
  color: var(--color-tertiary);
12252
13608
  }
12253
13609
 
13610
+ .toast-accent {
13611
+ border-color: var(--color-accent);
13612
+ }
13613
+
13614
+ .toast-accent .toast-icon {
13615
+ color: var(--color-accent);
13616
+ }
13617
+
13618
+ .toast-neutral {
13619
+ border-color: var(--color-neutral);
13620
+ }
13621
+
13622
+ .toast-neutral .toast-icon {
13623
+ color: var(--color-neutral);
13624
+ }
13625
+
13626
+ .toast-base {
13627
+ border-color: var(--color-base-content);
13628
+ }
13629
+
13630
+ .toast-base .toast-icon {
13631
+ color: var(--color-base-content);
13632
+ }
13633
+
12254
13634
  /* Filled Variants */
12255
13635
  .toast-filled.toast-info {
12256
13636
  background-color: var(--color-info-container);
@@ -12294,6 +13674,24 @@
12294
13674
  color: var(--color-on-tertiary-container);
12295
13675
  }
12296
13676
 
13677
+ .toast-filled.toast-accent {
13678
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
13679
+ border-color: transparent;
13680
+ color: var(--color-on-surface);
13681
+ }
13682
+
13683
+ .toast-filled.toast-neutral {
13684
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
13685
+ border-color: transparent;
13686
+ color: var(--color-on-surface);
13687
+ }
13688
+
13689
+ .toast-filled.toast-base {
13690
+ background-color: var(--color-base-200);
13691
+ border-color: transparent;
13692
+ color: var(--color-base-content);
13693
+ }
13694
+
12297
13695
  /* Filled variant sub-element color inheritance fix.
12298
13696
  .toast-title and .toast-message have explicit color rules that would otherwise
12299
13697
  override the filled variant's inherited on-container color. */
@@ -12315,6 +13713,9 @@
12315
13713
  .toast-ghost.toast-success { color: var(--color-success); }
12316
13714
  .toast-ghost.toast-warning { color: var(--color-warning); }
12317
13715
  .toast-ghost.toast-error { color: var(--color-error); }
13716
+ .toast-ghost.toast-accent { color: var(--color-accent); }
13717
+ .toast-ghost.toast-neutral { color: var(--color-neutral); }
13718
+ .toast-ghost.toast-base { color: var(--color-base-content); }
12318
13719
 
12319
13720
  .toast-ghost .toast-title,
12320
13721
  .toast-ghost .toast-message {
@@ -12674,6 +14075,69 @@
12674
14075
  border-right-color: var(--color-warning);
12675
14076
  }
12676
14077
 
14078
+ .tooltip.tooltip-accent .tooltip-content {
14079
+ background-color: var(--color-accent);
14080
+ color: var(--color-accent-content);
14081
+ }
14082
+
14083
+ .tooltip.tooltip-accent .tooltip-content::before {
14084
+ border-top-color: var(--color-accent);
14085
+ }
14086
+
14087
+ .tooltip.tooltip-accent.tooltip-bottom .tooltip-content::before {
14088
+ border-bottom-color: var(--color-accent);
14089
+ }
14090
+
14091
+ .tooltip.tooltip-accent.tooltip-left .tooltip-content::before {
14092
+ border-left-color: var(--color-accent);
14093
+ }
14094
+
14095
+ .tooltip.tooltip-accent.tooltip-right .tooltip-content::before {
14096
+ border-right-color: var(--color-accent);
14097
+ }
14098
+
14099
+ .tooltip.tooltip-neutral .tooltip-content {
14100
+ background-color: var(--color-neutral);
14101
+ color: var(--color-neutral-content);
14102
+ }
14103
+
14104
+ .tooltip.tooltip-neutral .tooltip-content::before {
14105
+ border-top-color: var(--color-neutral);
14106
+ }
14107
+
14108
+ .tooltip.tooltip-neutral.tooltip-bottom .tooltip-content::before {
14109
+ border-bottom-color: var(--color-neutral);
14110
+ }
14111
+
14112
+ .tooltip.tooltip-neutral.tooltip-left .tooltip-content::before {
14113
+ border-left-color: var(--color-neutral);
14114
+ }
14115
+
14116
+ .tooltip.tooltip-neutral.tooltip-right .tooltip-content::before {
14117
+ border-right-color: var(--color-neutral);
14118
+ }
14119
+
14120
+ .tooltip.tooltip-base .tooltip-content {
14121
+ background-color: var(--color-base-100);
14122
+ color: var(--color-base-content);
14123
+ }
14124
+
14125
+ .tooltip.tooltip-base .tooltip-content::before {
14126
+ border-top-color: var(--color-base-100);
14127
+ }
14128
+
14129
+ .tooltip.tooltip-base.tooltip-bottom .tooltip-content::before {
14130
+ border-bottom-color: var(--color-base-100);
14131
+ }
14132
+
14133
+ .tooltip.tooltip-base.tooltip-left .tooltip-content::before {
14134
+ border-left-color: var(--color-base-100);
14135
+ }
14136
+
14137
+ .tooltip.tooltip-base.tooltip-right .tooltip-content::before {
14138
+ border-right-color: var(--color-base-100);
14139
+ }
14140
+
12677
14141
  /* Multi-line Tooltip */
12678
14142
  .tooltip-multiline .tooltip-content {
12679
14143
  white-space: normal;
@@ -13110,6 +14574,75 @@
13110
14574
  opacity: 0.8;
13111
14575
  }
13112
14576
 
14577
+ .appbar-accent {
14578
+ background-color: var(--color-accent);
14579
+ color: var(--color-accent-content);
14580
+ }
14581
+
14582
+ .appbar-accent .appbar-nav,
14583
+ .appbar-accent .appbar-action,
14584
+ .appbar-accent .appbar-back {
14585
+ color: var(--color-accent-content);
14586
+ }
14587
+
14588
+ .appbar-accent .appbar-nav:hover,
14589
+ .appbar-accent .appbar-action:hover,
14590
+ .appbar-accent .appbar-back:hover {
14591
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
14592
+ color: var(--color-accent);
14593
+ }
14594
+
14595
+ .appbar-accent .appbar-subtitle {
14596
+ color: var(--color-accent-content);
14597
+ opacity: 0.8;
14598
+ }
14599
+
14600
+ .appbar-neutral {
14601
+ background-color: var(--color-neutral);
14602
+ color: var(--color-neutral-content);
14603
+ }
14604
+
14605
+ .appbar-neutral .appbar-nav,
14606
+ .appbar-neutral .appbar-action,
14607
+ .appbar-neutral .appbar-back {
14608
+ color: var(--color-neutral-content);
14609
+ }
14610
+
14611
+ .appbar-neutral .appbar-nav:hover,
14612
+ .appbar-neutral .appbar-action:hover,
14613
+ .appbar-neutral .appbar-back:hover {
14614
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
14615
+ color: var(--color-neutral);
14616
+ }
14617
+
14618
+ .appbar-neutral .appbar-subtitle {
14619
+ color: var(--color-neutral-content);
14620
+ opacity: 0.8;
14621
+ }
14622
+
14623
+ .appbar-base {
14624
+ background-color: var(--color-base-100);
14625
+ color: var(--color-base-content);
14626
+ }
14627
+
14628
+ .appbar-base .appbar-nav,
14629
+ .appbar-base .appbar-action,
14630
+ .appbar-base .appbar-back {
14631
+ color: var(--color-base-content);
14632
+ }
14633
+
14634
+ .appbar-base .appbar-nav:hover,
14635
+ .appbar-base .appbar-action:hover,
14636
+ .appbar-base .appbar-back:hover {
14637
+ background-color: var(--color-base-200);
14638
+ color: var(--color-base-content);
14639
+ }
14640
+
14641
+ .appbar-base .appbar-subtitle {
14642
+ color: var(--color-base-content);
14643
+ opacity: 0.8;
14644
+ }
14645
+
13113
14646
  .appbar-info {
13114
14647
  background-color: var(--color-info);
13115
14648
  color: var(--color-info-content);
@@ -13506,6 +15039,21 @@
13506
15039
  background-color: var(--color-error);
13507
15040
  }
13508
15041
 
15042
+ .divider-accent::before,
15043
+ .divider-accent::after {
15044
+ background-color: var(--color-accent);
15045
+ }
15046
+
15047
+ .divider-neutral::before,
15048
+ .divider-neutral::after {
15049
+ background-color: var(--color-neutral);
15050
+ }
15051
+
15052
+ .divider-base::before,
15053
+ .divider-base::after {
15054
+ background-color: var(--color-base-content);
15055
+ }
15056
+
13509
15057
  /* ── Gradient Lines ─────────────────────────────────────────────── */
13510
15058
  .divider-gradient::before,
13511
15059
  .divider-gradient::after {
@@ -14253,6 +15801,30 @@
14253
15801
  --circle-menu-item-ring: color-mix(in oklch, var(--color-error) 40%, transparent);
14254
15802
  }
14255
15803
 
15804
+ .circle-menu-accent {
15805
+ --circle-menu-btn-bg: var(--color-accent);
15806
+ --circle-menu-bar-color: var(--color-accent-content);
15807
+ --circle-menu-item-bg: var(--color-accent);
15808
+ --circle-menu-item-color: var(--color-accent-content);
15809
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-accent) 40%, transparent);
15810
+ }
15811
+
15812
+ .circle-menu-neutral {
15813
+ --circle-menu-btn-bg: var(--color-neutral);
15814
+ --circle-menu-bar-color: var(--color-neutral-content);
15815
+ --circle-menu-item-bg: var(--color-neutral);
15816
+ --circle-menu-item-color: var(--color-neutral-content);
15817
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-neutral) 40%, transparent);
15818
+ }
15819
+
15820
+ .circle-menu-base {
15821
+ --circle-menu-btn-bg: var(--color-base-100);
15822
+ --circle-menu-bar-color: var(--color-base-content);
15823
+ --circle-menu-item-bg: var(--color-base-100);
15824
+ --circle-menu-item-color: var(--color-base-content);
15825
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-base-content) 40%, transparent);
15826
+ }
15827
+
14256
15828
  /* === Reduced motion === */
14257
15829
  @media (prefers-reduced-motion: reduce) {
14258
15830
  .circle-menu-label {
@@ -15985,10 +17557,16 @@
15985
17557
 
15986
17558
  .collapse-card .collapse-inner,
15987
17559
  .collapse-card .collapse-content > * {
15988
- padding: 0 1rem 1rem;
15989
17560
  color: var(--color-on-surface-variant);
15990
17561
  }
15991
17562
 
17563
+ .collapse-card.collapse-open .collapse-inner,
17564
+ .collapse-card.collapse-open .collapse-content > *,
17565
+ .collapse-card.show .collapse-inner,
17566
+ .collapse-card.show .collapse-content > * {
17567
+ padding: 0 1rem 1rem;
17568
+ }
17569
+
15992
17570
  /* Bordered Variant */
15993
17571
  .collapse-bordered {
15994
17572
  border: 1px solid var(--color-outline-variant);
@@ -16061,6 +17639,30 @@
16061
17639
  background-color: var(--color-error-container);
16062
17640
  }
16063
17641
 
17642
+ .collapse-accent .collapse-trigger {
17643
+ color: var(--color-accent);
17644
+ }
17645
+
17646
+ .collapse-accent .collapse-trigger:hover {
17647
+ background-color: color-mix(in oklch, var(--color-accent) 15%, var(--color-surface));
17648
+ }
17649
+
17650
+ .collapse-neutral .collapse-trigger {
17651
+ color: var(--color-neutral);
17652
+ }
17653
+
17654
+ .collapse-neutral .collapse-trigger:hover {
17655
+ background-color: color-mix(in oklch, var(--color-neutral) 15%, var(--color-surface));
17656
+ }
17657
+
17658
+ .collapse-base .collapse-trigger {
17659
+ color: var(--color-base-content);
17660
+ }
17661
+
17662
+ .collapse-base .collapse-trigger:hover {
17663
+ background-color: var(--color-base-200);
17664
+ }
17665
+
16064
17666
  /* Size Variants */
16065
17667
  .collapse-sm .collapse-trigger {
16066
17668
  padding: 0.5rem 0.75rem;