@kushagradhawan/kookie-ui 0.1.71 → 0.1.72

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 (96) hide show
  1. package/README.md +4 -0
  2. package/components.css +63 -380
  3. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  4. package/dist/cjs/components/_internal/base-button.js +1 -1
  5. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  6. package/dist/cjs/components/button.d.ts.map +1 -1
  7. package/dist/cjs/components/button.js +1 -1
  8. package/dist/cjs/components/button.js.map +3 -3
  9. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  10. package/dist/cjs/components/chatbar.js.map +2 -2
  11. package/dist/cjs/components/icon-button.d.ts.map +1 -1
  12. package/dist/cjs/components/icon-button.js +2 -2
  13. package/dist/cjs/components/icon-button.js.map +3 -3
  14. package/dist/cjs/components/shell.d.ts.map +1 -1
  15. package/dist/cjs/components/shell.js +1 -1
  16. package/dist/cjs/components/shell.js.map +3 -3
  17. package/dist/cjs/components/toggle-button.d.ts.map +1 -1
  18. package/dist/cjs/components/toggle-button.js +1 -1
  19. package/dist/cjs/components/toggle-button.js.map +3 -3
  20. package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
  21. package/dist/cjs/components/toggle-icon-button.js +1 -1
  22. package/dist/cjs/components/toggle-icon-button.js.map +3 -3
  23. package/dist/cjs/hooks/index.d.ts +2 -0
  24. package/dist/cjs/hooks/index.d.ts.map +1 -1
  25. package/dist/cjs/hooks/index.js +1 -1
  26. package/dist/cjs/hooks/index.js.map +3 -3
  27. package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -1
  28. package/dist/cjs/hooks/use-live-announcer.js +2 -2
  29. package/dist/cjs/hooks/use-live-announcer.js.map +3 -3
  30. package/dist/cjs/hooks/use-toggle-state.d.ts +37 -0
  31. package/dist/cjs/hooks/use-toggle-state.d.ts.map +1 -0
  32. package/dist/cjs/hooks/use-toggle-state.js +2 -0
  33. package/dist/cjs/hooks/use-toggle-state.js.map +7 -0
  34. package/dist/cjs/hooks/use-tooltip-wrapper.d.ts +29 -0
  35. package/dist/cjs/hooks/use-tooltip-wrapper.d.ts.map +1 -0
  36. package/dist/cjs/hooks/use-tooltip-wrapper.js +2 -0
  37. package/dist/cjs/hooks/use-tooltip-wrapper.js.map +7 -0
  38. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  39. package/dist/esm/components/_internal/base-button.js +1 -1
  40. package/dist/esm/components/_internal/base-button.js.map +3 -3
  41. package/dist/esm/components/button.d.ts.map +1 -1
  42. package/dist/esm/components/button.js +1 -1
  43. package/dist/esm/components/button.js.map +3 -3
  44. package/dist/esm/components/chatbar.d.ts.map +1 -1
  45. package/dist/esm/components/chatbar.js.map +2 -2
  46. package/dist/esm/components/icon-button.d.ts.map +1 -1
  47. package/dist/esm/components/icon-button.js +2 -2
  48. package/dist/esm/components/icon-button.js.map +3 -3
  49. package/dist/esm/components/shell.d.ts.map +1 -1
  50. package/dist/esm/components/shell.js +1 -1
  51. package/dist/esm/components/shell.js.map +3 -3
  52. package/dist/esm/components/toggle-button.d.ts.map +1 -1
  53. package/dist/esm/components/toggle-button.js +1 -1
  54. package/dist/esm/components/toggle-button.js.map +3 -3
  55. package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
  56. package/dist/esm/components/toggle-icon-button.js +1 -1
  57. package/dist/esm/components/toggle-icon-button.js.map +3 -3
  58. package/dist/esm/hooks/index.d.ts +2 -0
  59. package/dist/esm/hooks/index.d.ts.map +1 -1
  60. package/dist/esm/hooks/index.js +1 -1
  61. package/dist/esm/hooks/index.js.map +3 -3
  62. package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -1
  63. package/dist/esm/hooks/use-live-announcer.js +2 -2
  64. package/dist/esm/hooks/use-live-announcer.js.map +3 -3
  65. package/dist/esm/hooks/use-toggle-state.d.ts +37 -0
  66. package/dist/esm/hooks/use-toggle-state.d.ts.map +1 -0
  67. package/dist/esm/hooks/use-toggle-state.js +2 -0
  68. package/dist/esm/hooks/use-toggle-state.js.map +7 -0
  69. package/dist/esm/hooks/use-tooltip-wrapper.d.ts +29 -0
  70. package/dist/esm/hooks/use-tooltip-wrapper.d.ts.map +1 -0
  71. package/dist/esm/hooks/use-tooltip-wrapper.js +2 -0
  72. package/dist/esm/hooks/use-tooltip-wrapper.js.map +7 -0
  73. package/package.json +4 -4
  74. package/schemas/base-button.json +1 -1
  75. package/schemas/button.json +1 -1
  76. package/schemas/icon-button.json +1 -1
  77. package/schemas/index.json +6 -6
  78. package/schemas/toggle-button.json +1 -1
  79. package/schemas/toggle-icon-button.json +1 -1
  80. package/src/components/_internal/base-button.css +136 -614
  81. package/src/components/_internal/base-button.tsx +15 -13
  82. package/src/components/button.tsx +13 -42
  83. package/src/components/chatbar.tsx +1 -13
  84. package/src/components/icon-button.tsx +20 -44
  85. package/src/components/image.css +10 -8
  86. package/src/components/shell.tsx +13 -9
  87. package/src/components/toggle-button.tsx +30 -59
  88. package/src/components/toggle-icon-button.tsx +29 -51
  89. package/src/hooks/index.ts +2 -0
  90. package/src/hooks/use-live-announcer.ts +34 -7
  91. package/src/hooks/use-toggle-state.ts +72 -0
  92. package/src/hooks/use-tooltip-wrapper.ts +28 -0
  93. package/src/styles/tokens/color.css +11 -1
  94. package/styles.css +70 -381
  95. package/tokens/base.css +7 -1
  96. package/tokens.css +7 -1
@@ -24,6 +24,22 @@
24
24
  * These styles establish the core button behavior and appearance
25
25
  */
26
26
  .rt-BaseButton {
27
+ /*
28
+ * Component-level material override
29
+ * When button has explicit material prop, override the inherited theme values.
30
+ * The base --material-blend and --material-alpha are defined in tokens/color.css
31
+ * and cascade from the Theme component.
32
+ */
33
+ &:where([data-material='solid'], [data-panel-background='solid']) {
34
+ --material-blend: 100%;
35
+ --material-alpha: 0;
36
+ }
37
+
38
+ &:where([data-material='translucent'], [data-panel-background='translucent']) {
39
+ --material-blend: 60%;
40
+ --material-alpha: 1;
41
+ }
42
+
27
43
  /* Reset all inherited styles to ensure consistent base */
28
44
  all: unset;
29
45
  box-sizing: border-box;
@@ -185,45 +201,19 @@
185
201
  /* classic */
186
202
 
187
203
  .rt-BaseButton:where(.rt-variant-classic) {
204
+ /*
205
+ * Classic variant uses the --color-surface token which automatically
206
+ * switches between solid and translucent based on theme material setting.
207
+ * Interactive states use the material system for gray backgrounds.
208
+ */
188
209
  position: relative;
189
210
  color: var(--accent-a11);
190
- background-color: var(--color-surface-solid);
211
+ background-color: var(--color-surface);
191
212
  box-shadow: var(--shadow-2);
192
213
  transition: var(--transition-text-field);
193
214
 
194
- /* Theme-level translucent override */
195
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
196
- background-color: var(--color-surface-translucent);
197
- }
198
-
199
- /* Component-level overrides (higher specificity) */
200
- &:where([data-panel-background='solid'], [data-material='solid']) {
201
- background-color: var(--color-surface-solid);
202
- }
203
-
204
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
205
- background-color: var(--color-surface-translucent);
206
- }
207
-
208
- /* Dark mode uses same styling as light mode for simplicity */
209
-
210
215
  &:where(.rt-high-contrast) {
211
216
  color: var(--gray-12);
212
- background-color: var(--color-surface-solid);
213
-
214
- /* Theme-level translucent override for high contrast */
215
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
216
- background-color: var(--color-surface-translucent);
217
- }
218
-
219
- /* Component-level overrides for high contrast */
220
- &:where([data-panel-background='solid'], [data-material='solid']) {
221
- background-color: var(--color-surface-solid);
222
- }
223
-
224
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
225
- background-color: var(--color-surface-translucent);
226
- }
227
217
  }
228
218
 
229
219
  &:where(:focus-visible) {
@@ -233,68 +223,19 @@
233
223
 
234
224
  @media (hover: hover) {
235
225
  &:where(:hover) {
236
- background-color: var(--gray-2);
226
+ background-color: color-mix(in srgb, var(--gray-a2) calc(var(--material-alpha) * 100%), var(--gray-2) var(--material-blend));
237
227
  box-shadow: var(--shadow-2);
238
-
239
- /* Theme-level translucent override for hover */
240
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
241
- background-color: color-mix(in srgb, var(--gray-a2), var(--gray-2) 60%);
242
- }
243
-
244
- /* Component-level overrides for hover */
245
- &:where([data-panel-background='solid'], [data-material='solid']) {
246
- background-color: var(--gray-2);
247
- }
248
-
249
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
250
- background-color: color-mix(in srgb, var(--gray-a2), var(--gray-2) 60%);
251
- }
252
-
253
- /* Dark mode uses same styling as light mode for simplicity */
254
228
  }
255
229
  }
256
230
 
257
231
  &:where([data-state='open']) {
258
- background-color: var(--gray-3);
232
+ background-color: color-mix(in srgb, var(--gray-a3) calc(var(--material-alpha) * 100%), var(--gray-3) var(--material-blend));
259
233
  box-shadow: var(--shadow-1);
260
-
261
- /* Theme-level translucent override for open */
262
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
263
- background-color: color-mix(in srgb, var(--gray-a3), var(--gray-3) 60%);
264
- }
265
-
266
- /* Component-level overrides for open */
267
- &:where([data-panel-background='solid'], [data-material='solid']) {
268
- background-color: var(--gray-3);
269
- }
270
-
271
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
272
- background-color: color-mix(in srgb, var(--gray-a3), var(--gray-3) 60%);
273
- }
274
-
275
- /* Dark mode uses same styling as light mode for simplicity */
276
234
  }
277
235
 
278
- &:where(
279
- :active:not([data-state='open'], [data-disabled]),
280
- [data-state='on']:not([data-disabled])
281
- ) {
282
- background-color: var(--gray-3);
236
+ &:where(:active:not([data-state='open'], [data-disabled]), [data-state='on']:not([data-disabled])) {
237
+ background-color: color-mix(in srgb, var(--gray-a3) calc(var(--material-alpha) * 100%), var(--gray-3) var(--material-blend));
283
238
  box-shadow: var(--shadow-1);
284
-
285
- /* Theme-level translucent override for active */
286
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
287
- background-color: color-mix(in srgb, var(--gray-a3), var(--gray-3) 60%);
288
- }
289
-
290
- /* Component-level overrides for active */
291
- &:where([data-panel-background='solid'], [data-material='solid']) {
292
- background-color: var(--gray-3);
293
- }
294
-
295
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
296
- background-color: color-mix(in srgb, var(--gray-a3), var(--gray-3) 60%);
297
- }
298
239
  }
299
240
 
300
241
  @media (pointer: coarse) {
@@ -329,14 +270,8 @@
329
270
  @media (hover: hover) {
330
271
  &:where(:hover) {
331
272
  color: var(--button-override-hover-color, var(--button-override-color, inherit));
332
- background: var(
333
- --button-override-hover-background,
334
- var(--button-override-background, transparent)
335
- );
336
- background-color: var(
337
- --button-override-hover-background-color,
338
- var(--button-override-background-color, initial)
339
- );
273
+ background: var(--button-override-hover-background, var(--button-override-background, transparent));
274
+ background-color: var(--button-override-hover-background-color, var(--button-override-background-color, initial));
340
275
  box-shadow: var(--button-override-hover-box-shadow, var(--button-override-box-shadow, none));
341
276
  filter: var(--button-override-hover-filter, var(--button-override-filter, none));
342
277
  outline: var(--button-override-hover-outline, var(--button-override-outline, none));
@@ -345,14 +280,8 @@
345
280
 
346
281
  &:where([data-state='open']) {
347
282
  color: var(--button-override-open-color, var(--button-override-color, inherit));
348
- background: var(
349
- --button-override-open-background,
350
- var(--button-override-background, transparent)
351
- );
352
- background-color: var(
353
- --button-override-open-background-color,
354
- var(--button-override-background-color, initial)
355
- );
283
+ background: var(--button-override-open-background, var(--button-override-background, transparent));
284
+ background-color: var(--button-override-open-background-color, var(--button-override-background-color, initial));
356
285
  box-shadow: var(--button-override-open-box-shadow, var(--button-override-box-shadow, none));
357
286
  filter: var(--button-override-open-filter, var(--button-override-filter, none));
358
287
  outline: var(--button-override-open-outline, var(--button-override-outline, none));
@@ -360,14 +289,8 @@
360
289
 
361
290
  &:where(:active:not([data-state='open'])) {
362
291
  color: var(--button-override-active-color, var(--button-override-color, inherit));
363
- background: var(
364
- --button-override-active-background,
365
- var(--button-override-background, transparent)
366
- );
367
- background-color: var(
368
- --button-override-active-background-color,
369
- var(--button-override-background-color, initial)
370
- );
292
+ background: var(--button-override-active-background, var(--button-override-background, transparent));
293
+ background-color: var(--button-override-active-background-color, var(--button-override-background-color, initial));
371
294
  box-shadow: var(--button-override-active-box-shadow, var(--button-override-box-shadow, none));
372
295
  filter: var(--button-override-active-filter, var(--button-override-filter, none));
373
296
  outline: var(--button-override-active-outline, var(--button-override-outline, none));
@@ -380,33 +303,12 @@
380
303
 
381
304
  /* Toggle pressed */
382
305
  &:where([data-state='on']) {
383
- color: var(
384
- --button-override-pressed-color,
385
- var(--button-override-active-color, var(--button-override-color, inherit))
386
- );
387
- background: var(
388
- --button-override-pressed-background,
389
- var(--button-override-active-background, var(--button-override-background, transparent))
390
- );
391
- background-color: var(
392
- --button-override-pressed-background-color,
393
- var(
394
- --button-override-active-background-color,
395
- var(--button-override-background-color, initial)
396
- )
397
- );
398
- box-shadow: var(
399
- --button-override-pressed-box-shadow,
400
- var(--button-override-active-box-shadow, var(--button-override-box-shadow, none))
401
- );
402
- filter: var(
403
- --button-override-pressed-filter,
404
- var(--button-override-active-filter, var(--button-override-filter, none))
405
- );
406
- outline: var(
407
- --button-override-pressed-outline,
408
- var(--button-override-active-outline, var(--button-override-outline, none))
409
- );
306
+ color: var(--button-override-pressed-color, var(--button-override-active-color, var(--button-override-color, inherit)));
307
+ background: var(--button-override-pressed-background, var(--button-override-active-background, var(--button-override-background, transparent)));
308
+ background-color: var(--button-override-pressed-background-color, var(--button-override-active-background-color, var(--button-override-background-color, initial)));
309
+ box-shadow: var(--button-override-pressed-box-shadow, var(--button-override-active-box-shadow, var(--button-override-box-shadow, none)));
310
+ filter: var(--button-override-pressed-filter, var(--button-override-active-filter, var(--button-override-filter, none)));
311
+ outline: var(--button-override-pressed-outline, var(--button-override-active-outline, var(--button-override-outline, none)));
410
312
  }
411
313
 
412
314
  &:where([data-disabled]) {
@@ -440,141 +342,69 @@
440
342
  }
441
343
 
442
344
  .rt-BaseButton:where(.rt-variant-solid) {
443
- /* Base state: solid color for solid panels */
444
- background-color: var(--accent-9);
445
- color: var(--accent-contrast);
446
-
447
- /* Theme-level translucent override */
448
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
449
- background-color: color-mix(in srgb, var(--accent-a9), var(--accent-9) 10%);
450
- }
451
-
452
- /* Component-level overrides (higher specificity) */
453
- &:where([data-panel-background='solid'], [data-material='solid']) {
454
- background-color: var(--accent-9);
455
- }
345
+ /*
346
+ * Solid variant uses a 10% blend for translucent (more opaque than other variants).
347
+ * We use a local --solid-blend variable to handle this difference.
348
+ */
349
+ --solid-blend: calc(100% - (var(--material-alpha) * 90%)); /* 100% for solid, 10% for translucent */
456
350
 
457
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
458
- background-color: color-mix(in srgb, var(--accent-a9), var(--accent-9) 10%);
459
- }
351
+ background-color: color-mix(in srgb, var(--accent-a9) calc(var(--material-alpha) * 100%), var(--accent-9) var(--solid-blend));
352
+ color: var(--accent-contrast);
460
353
 
461
354
  @media (hover: hover) {
462
355
  &:where(:hover) {
463
- background-color: var(--accent-10);
356
+ background-color: color-mix(in srgb, var(--accent-a10) calc(var(--material-alpha) * 100%), var(--accent-10) var(--solid-blend));
464
357
  box-shadow: var(--shadow-2);
465
-
466
- /* Theme-level translucent override for hover */
467
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
468
- background-color: color-mix(in srgb, var(--accent-a10), var(--accent-10) 10%);
469
- }
470
-
471
- /* Component-level overrides for hover */
472
- &:where([data-panel-background='solid'], [data-material='solid']) {
473
- background-color: var(--accent-10);
474
- }
475
-
476
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
477
- background-color: color-mix(in srgb, var(--accent-a10), var(--accent-10) 10%);
478
- }
479
358
  }
480
359
  }
360
+
481
361
  &:where([data-state='open']) {
482
- background-color: var(--accent-10);
362
+ background-color: color-mix(in srgb, var(--accent-a10) calc(var(--material-alpha) * 100%), var(--accent-10) var(--solid-blend));
483
363
  filter: var(--base-button-solid-open-filter);
484
364
  box-shadow: var(--shadow-1);
485
-
486
- /* Theme-level translucent override for open */
487
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
488
- background-color: color-mix(in srgb, var(--accent-a10), var(--accent-10) 10%);
489
- }
490
-
491
- /* Component-level overrides for open */
492
- &:where([data-panel-background='solid'], [data-material='solid']) {
493
- background-color: var(--accent-10);
494
- }
495
-
496
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
497
- background-color: color-mix(in srgb, var(--accent-a10), var(--accent-10) 10%);
498
- }
499
365
  }
366
+
500
367
  &:where(:active:not([data-state='open'])) {
501
368
  filter: var(--base-button-solid-active-filter);
502
369
  box-shadow: var(--shadow-1);
503
370
  }
504
- /* Better -webkit-tap-highlight-color */
371
+
505
372
  @media (pointer: coarse) {
506
373
  &:where(:active:not([data-state='open'])) {
507
374
  outline: var(--classic-shadow-blur-large) solid var(--accent-a4);
508
375
  outline-offset: 0;
509
376
  }
510
377
  }
378
+
511
379
  &:where(:focus-visible) {
512
380
  outline: 2px solid var(--focus-8);
513
381
  outline-offset: 2px;
514
382
  }
383
+
515
384
  &:where(.rt-high-contrast) {
516
- background-color: var(--accent-12);
385
+ background-color: color-mix(in srgb, var(--accent-a12) calc(var(--material-alpha) * 100%), var(--accent-12) var(--solid-blend));
517
386
  color: var(--gray-1);
518
387
 
519
- /* Theme-level translucent override for high contrast */
520
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
521
- background-color: color-mix(in srgb, var(--accent-a12), var(--accent-12) 10%);
522
- }
523
-
524
- /* Component-level overrides for high contrast */
525
- &:where([data-panel-background='solid'], [data-material='solid']) {
526
- background-color: var(--accent-12);
527
- }
528
-
529
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
530
- background-color: color-mix(in srgb, var(--accent-a12), var(--accent-12) 10%);
531
- }
532
-
533
388
  @media (hover: hover) {
534
389
  &:where(:hover) {
535
- background-color: var(--accent-12);
390
+ background-color: color-mix(in srgb, var(--accent-a12) calc(var(--material-alpha) * 100%), var(--accent-12) var(--solid-blend));
536
391
  filter: var(--base-button-solid-high-contrast-hover-filter);
537
392
  box-shadow: var(--shadow-2);
538
-
539
- /* Theme-level translucent override for high contrast hover */
540
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
541
- background-color: color-mix(in srgb, var(--accent-a12), var(--accent-12) 10%);
542
- }
543
-
544
- /* Component-level overrides for high contrast hover */
545
- &:where([data-panel-background='solid'], [data-material='solid']) {
546
- background-color: var(--accent-12);
547
- }
548
-
549
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
550
- background-color: color-mix(in srgb, var(--accent-a12), var(--accent-12) 10%);
551
- }
552
393
  }
553
394
  }
395
+
554
396
  &:where([data-state='open']) {
555
- background-color: var(--accent-12);
397
+ background-color: color-mix(in srgb, var(--accent-a12) calc(var(--material-alpha) * 100%), var(--accent-12) var(--solid-blend));
556
398
  filter: var(--base-button-solid-high-contrast-open-filter);
557
399
  box-shadow: var(--shadow-1);
558
-
559
- /* Theme-level translucent override for high contrast open */
560
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
561
- background-color: color-mix(in srgb, var(--accent-a12), var(--accent-12) 10%);
562
- }
563
-
564
- /* Component-level overrides for high contrast open */
565
- &:where([data-panel-background='solid'], [data-material='solid']) {
566
- background-color: var(--accent-12);
567
- }
568
-
569
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
570
- background-color: color-mix(in srgb, var(--accent-a12), var(--accent-12) 10%);
571
- }
572
400
  }
401
+
573
402
  &:where(:active:not([data-state='open'])) {
574
403
  filter: var(--base-button-solid-high-contrast-active-filter);
575
404
  box-shadow: var(--shadow-1);
576
405
  }
577
406
  }
407
+
578
408
  &:where([data-disabled]) {
579
409
  color: var(--gray-a8);
580
410
  background-color: var(--gray-a3);
@@ -602,83 +432,35 @@
602
432
  }
603
433
 
604
434
  .rt-BaseButton:where(.rt-variant-soft) {
605
- /* Base state: solid color for solid panels */
606
- background-color: var(--accent-3);
607
-
608
- /* Theme-level translucent override */
609
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
610
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
611
- }
612
-
613
- /* Component-level overrides (higher specificity) */
614
- &:where([data-panel-background='solid'], [data-material='solid']) {
615
- background-color: var(--accent-3);
616
- }
617
-
618
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
619
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
620
- }
435
+ /*
436
+ * Soft variant uses the material system for background colors.
437
+ * color-mix blends alpha and solid colors based on --material-blend.
438
+ * This automatically handles both solid and translucent modes.
439
+ */
440
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
621
441
 
622
442
  &:where(:focus-visible) {
623
443
  outline: 2px solid var(--accent-8);
624
444
  outline-offset: -1px;
625
445
  }
446
+
626
447
  @media (hover: hover) {
627
448
  &:where(:hover) {
628
- background-color: var(--accent-4);
449
+ background-color: color-mix(in srgb, var(--accent-a4) calc(var(--material-alpha) * 100%), var(--accent-4) var(--material-blend));
629
450
  box-shadow: var(--shadow-2);
630
-
631
- /* Theme-level translucent override for hover */
632
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
633
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
634
- }
635
-
636
- /* Component-level overrides for hover */
637
- &:where([data-panel-background='solid'], [data-material='solid']) {
638
- background-color: var(--accent-4);
639
- }
640
-
641
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
642
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
643
- }
644
451
  }
645
452
  }
453
+
646
454
  &:where([data-state='open']) {
647
- background-color: var(--accent-4);
455
+ background-color: color-mix(in srgb, var(--accent-a4) calc(var(--material-alpha) * 100%), var(--accent-4) var(--material-blend));
648
456
  box-shadow: var(--shadow-1);
649
-
650
- /* Theme-level translucent override for open */
651
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
652
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
653
- }
654
-
655
- /* Component-level overrides for open */
656
- &:where([data-panel-background='solid'], [data-material='solid']) {
657
- background-color: var(--accent-4);
658
- }
659
-
660
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
661
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
662
- }
663
457
  }
458
+
664
459
  &:where(:active:not([data-state='open'])) {
665
- background-color: var(--accent-5);
460
+ background-color: color-mix(in srgb, var(--accent-a5) calc(var(--material-alpha) * 100%), var(--accent-5) var(--material-blend));
666
461
  box-shadow: var(--shadow-1);
667
-
668
- /* Theme-level translucent override for active */
669
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
670
- background-color: color-mix(in srgb, var(--accent-a5), var(--accent-5) 60%);
671
- }
672
-
673
- /* Component-level overrides for active */
674
- &:where([data-panel-background='solid'], [data-material='solid']) {
675
- background-color: var(--accent-5);
676
- }
677
-
678
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
679
- background-color: color-mix(in srgb, var(--accent-a5), var(--accent-5) 60%);
680
- }
681
462
  }
463
+
682
464
  &:where([data-disabled]) {
683
465
  color: var(--gray-a8);
684
466
  background-color: var(--gray-a3);
@@ -688,19 +470,19 @@
688
470
  }
689
471
 
690
472
  .rt-BaseButton:where(.rt-variant-ghost) {
473
+ /*
474
+ * Ghost variant is transparent by default and only shows background on interaction.
475
+ * Uses the material system for hover/active/open states.
476
+ */
691
477
  &:where([data-flush='true']) {
692
- /* We reset the defined margin variables to avoid inheriting them from a higher component */
693
- /* If a margin IS defined on the component itself, the utility class will win and reset it */
694
478
  --margin-top: 0px;
695
479
  --margin-right: 0px;
696
480
  --margin-bottom: 0px;
697
481
  --margin-left: 0px;
698
482
 
699
- /* Calculate padding values for different button sizes */
700
483
  --button-padding-x: calc(var(--base-button-height) * var(--padding-ratio-horizontal) / 4);
701
484
  --button-padding-y: calc(var(--base-button-height) / 8);
702
485
 
703
- /* Define the overrides to incorporate the negative margins */
704
486
  --margin-top-override: calc(var(--margin-top) - var(--button-padding-y));
705
487
  --margin-right-override: calc(var(--margin-right) - var(--button-padding-x));
706
488
  --margin-bottom-override: calc(var(--margin-bottom) - var(--button-padding-y));
@@ -711,7 +493,6 @@
711
493
  margin-bottom: var(--margin-bottom-override);
712
494
  margin-left: var(--margin-left-override);
713
495
 
714
- /* Reset the overrides on direct children */
715
496
  :where(&) > * {
716
497
  --margin-top-override: initial;
717
498
  --margin-right-override: initial;
@@ -722,82 +503,25 @@
722
503
 
723
504
  @media (hover: hover) {
724
505
  &:where(:hover) {
725
- /* Base state: solid accent for solid panels */
726
- background-color: var(--accent-3);
727
-
728
- /* Theme-level translucent override for hover */
729
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
730
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
731
- }
732
-
733
- /* Component-level overrides for hover */
734
- &:where([data-panel-background='solid'], [data-material='solid']) {
735
- background-color: var(--accent-3);
736
- }
737
-
738
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
739
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
740
- }
741
-
742
- /* Disable backdrop-filter when inside elements that already have backdrop-filter */
743
- /* :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
744
- backdrop-filter: none !important;
745
- } */
506
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
746
507
  }
747
508
  }
509
+
748
510
  &:where(:focus-visible) {
749
511
  outline: 2px solid var(--focus-8);
750
512
  outline-offset: -1px;
751
513
  }
514
+
752
515
  &:where([data-state='open']) {
753
- /* Base state: solid accent for solid panels */
754
- background-color: var(--accent-3);
516
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
755
517
  box-shadow: var(--shadow-1);
756
-
757
- /* Theme-level translucent override for open */
758
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
759
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
760
- backdrop-filter: var(--backdrop-filter-components);
761
- }
762
-
763
- /* Component-level overrides for open */
764
- &:where([data-panel-background='solid'], [data-material='solid']) {
765
- background-color: var(--accent-3);
766
- }
767
-
768
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
769
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
770
- }
771
-
772
- /* Disable backdrop-filter when inside elements that already have backdrop-filter */
773
- /* :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
774
- backdrop-filter: none !important;
775
- } */
776
518
  }
519
+
777
520
  &:where(:active:not([data-state='open'])) {
778
- /* Base state: solid accent for solid panels */
779
- background-color: var(--accent-4);
521
+ background-color: color-mix(in srgb, var(--accent-a4) calc(var(--material-alpha) * 100%), var(--accent-4) var(--material-blend));
780
522
  box-shadow: var(--shadow-1);
781
-
782
- /* Theme-level translucent override for active */
783
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
784
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
785
- }
786
-
787
- /* Component-level overrides for active */
788
- &:where([data-panel-background='solid'], [data-material='solid']) {
789
- background-color: var(--accent-4);
790
- }
791
-
792
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
793
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
794
- }
795
-
796
- /* Disable backdrop-filter when inside elements that already have backdrop-filter */
797
- /* :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
798
- backdrop-filter: none !important;
799
- } */
800
523
  }
524
+
801
525
  &:where([data-disabled]) {
802
526
  color: var(--gray-a8);
803
527
  background-color: transparent;
@@ -809,104 +533,48 @@
809
533
  /* outline */
810
534
 
811
535
  .rt-BaseButton:where(.rt-variant-outline) {
812
- /* Base state: solid colors for solid panels */
813
- box-shadow: inset 0 0 0 1px var(--accent-6);
536
+ /*
537
+ * Outline variant uses the material system for backgrounds and borders.
538
+ * Border colors use alpha variants in translucent mode.
539
+ */
540
+ --outline-border-6: color-mix(in srgb, var(--accent-a6) calc(var(--material-alpha) * 100%), var(--accent-6) var(--material-blend));
541
+ --outline-border-7: color-mix(in srgb, var(--accent-a7) calc(var(--material-alpha) * 100%), var(--accent-7) var(--material-blend));
542
+ --outline-border-8: color-mix(in srgb, var(--accent-a8) calc(var(--material-alpha) * 100%), var(--accent-8) var(--material-blend));
543
+
544
+ box-shadow: inset 0 0 0 1px var(--outline-border-6);
814
545
  color: var(--accent-11);
815
546
  transition: var(--transition-background-blur);
816
547
 
817
- /* Theme-level translucent override */
818
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
819
- box-shadow: inset 0 0 0 1px var(--accent-a6);
820
- color: var(--accent-a11);
821
- }
822
-
823
- /* Component-level overrides (higher specificity) */
824
- &:where([data-panel-background='solid'], [data-material='solid']) {
825
- box-shadow: inset 0 0 0 1px var(--accent-6);
826
- color: var(--accent-11);
827
- }
828
-
829
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
830
- box-shadow: inset 0 0 0 1px var(--accent-a6);
831
- color: var(--accent-a11);
832
- }
833
-
834
548
  @media (hover: hover) {
835
549
  &:where(:hover) {
836
- background-color: var(--accent-2);
837
- box-shadow: inset 0 0 0 1px var(--accent-7);
838
-
839
- /* Theme-level translucent override for hover */
840
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
841
- background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
842
- box-shadow: inset 0 0 0 1px var(--accent-a7);
843
- }
844
-
845
- /* Component-level overrides for hover */
846
- &:where([data-panel-background='solid'], [data-material='solid']) {
847
- background-color: var(--accent-2);
848
- box-shadow: inset 0 0 0 1px var(--accent-7);
849
- }
850
-
851
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
852
- background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
853
- box-shadow: inset 0 0 0 1px var(--accent-a7);
854
- }
550
+ background-color: color-mix(in srgb, var(--accent-a2) calc(var(--material-alpha) * 100%), var(--accent-2) var(--material-blend));
551
+ box-shadow: inset 0 0 0 1px var(--outline-border-7);
855
552
  }
856
553
  }
554
+
857
555
  &:where([data-state='open']) {
858
- background-color: var(--accent-2);
556
+ background-color: color-mix(in srgb, var(--accent-a2) calc(var(--material-alpha) * 100%), var(--accent-2) var(--material-blend));
859
557
  box-shadow:
860
- inset 0 0 0 1px var(--accent-7),
558
+ inset 0 0 0 1px var(--outline-border-7),
861
559
  var(--shadow-1);
862
-
863
- /* Theme-level translucent override for open */
864
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
865
- background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
866
- box-shadow: inset 0 0 0 1px var(--accent-a7);
867
- }
868
-
869
- /* Component-level overrides for open */
870
- &:where([data-panel-background='solid'], [data-material='solid']) {
871
- background-color: var(--accent-2);
872
- box-shadow: inset 0 0 0 1px var(--accent-7);
873
- }
874
-
875
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
876
- background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
877
- box-shadow: inset 0 0 0 1px var(--accent-a7);
878
- }
879
560
  }
561
+
880
562
  &:where(:active:not([data-state='open'])) {
881
- background-color: var(--accent-3);
563
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
882
564
  box-shadow:
883
- inset 0 0 0 1px var(--accent-8),
565
+ inset 0 0 0 1px var(--outline-border-8),
884
566
  var(--shadow-1);
885
-
886
- /* Theme-level translucent override for active */
887
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
888
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
889
- box-shadow: inset 0 0 0 1px var(--accent-a8);
890
- }
891
-
892
- /* Component-level overrides for active */
893
- &:where([data-panel-background='solid'], [data-material='solid']) {
894
- background-color: var(--accent-3);
895
- box-shadow: inset 0 0 0 1px var(--accent-8);
896
- }
897
-
898
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
899
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
900
- box-shadow: inset 0 0 0 1px var(--accent-a8);
901
- }
902
567
  }
568
+
903
569
  &:where(:focus-visible) {
904
570
  outline: 2px solid var(--focus-8);
905
571
  outline-offset: -1px;
906
572
  }
573
+
907
574
  &:where(.rt-high-contrast) {
908
575
  color: var(--accent-12);
909
576
  }
577
+
910
578
  &:where([data-disabled]) {
911
579
  color: var(--gray-a8);
912
580
  box-shadow: inset 0 0 0 1px var(--gray-a7);
@@ -919,105 +587,48 @@
919
587
  /* surface */
920
588
 
921
589
  .rt-BaseButton:where(.rt-variant-surface) {
922
- /* Base state: solid accent for solid panels */
923
- background-color: var(--accent-2);
924
- box-shadow: inset 0 0 0 1px var(--accent-6);
925
- color: var(--accent-a11);
926
-
927
- /* Theme-level translucent override */
928
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
929
- background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
930
- box-shadow: inset 0 0 0 1px var(--accent-a6);
931
- backdrop-filter: var(--backdrop-filter-components);
932
- }
933
-
934
- /* Component-level overrides (higher specificity) */
935
- &:where([data-panel-background='solid'], [data-material='solid']) {
936
- background-color: var(--accent-2);
937
- box-shadow: inset 0 0 0 1px var(--accent-6);
938
- }
590
+ /*
591
+ * Surface variant uses the material system for backgrounds and borders.
592
+ * Has a visible background in default state unlike outline.
593
+ */
594
+ --surface-border-6: color-mix(in srgb, var(--accent-a6) calc(var(--material-alpha) * 100%), var(--accent-6) var(--material-blend));
595
+ --surface-border-7: color-mix(in srgb, var(--accent-a7) calc(var(--material-alpha) * 100%), var(--accent-7) var(--material-blend));
596
+ --surface-border-8: color-mix(in srgb, var(--accent-a8) calc(var(--material-alpha) * 100%), var(--accent-8) var(--material-blend));
939
597
 
940
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
941
- background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
942
- box-shadow: inset 0 0 0 1px var(--accent-a6);
943
- }
598
+ background-color: color-mix(in srgb, var(--accent-a2) calc(var(--material-alpha) * 100%), var(--accent-2) var(--material-blend));
599
+ box-shadow: inset 0 0 0 1px var(--surface-border-6);
600
+ color: var(--accent-a11);
944
601
 
945
602
  @media (hover: hover) {
946
603
  &:where(:hover) {
947
- background-color: var(--accent-3);
948
- box-shadow: inset 0 0 0 1px var(--accent-7);
949
-
950
- /* Theme-level translucent override for hover */
951
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
952
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
953
- box-shadow: inset 0 0 0 1px var(--accent-a7);
954
- }
955
-
956
- /* Component-level overrides for hover */
957
- &:where([data-panel-background='solid'], [data-material='solid']) {
958
- background-color: var(--accent-3);
959
- box-shadow: inset 0 0 0 1px var(--accent-7);
960
- }
961
-
962
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
963
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
964
- box-shadow: inset 0 0 0 1px var(--accent-a7);
965
- }
604
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
605
+ box-shadow: inset 0 0 0 1px var(--surface-border-7);
966
606
  }
967
607
  }
608
+
968
609
  &:where([data-state='open']) {
969
- background-color: var(--accent-3);
610
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
970
611
  box-shadow:
971
- inset 0 0 0 1px var(--accent-8),
612
+ inset 0 0 0 1px var(--surface-border-8),
972
613
  var(--shadow-1);
973
-
974
- /* Theme-level translucent override for open */
975
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
976
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
977
- box-shadow: inset 0 0 0 1px var(--accent-a8);
978
- }
979
-
980
- /* Component-level overrides for open */
981
- &:where([data-panel-background='solid'], [data-material='solid']) {
982
- background-color: var(--accent-3);
983
- box-shadow: inset 0 0 0 1px var(--accent-8);
984
- }
985
-
986
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
987
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
988
- box-shadow: inset 0 0 0 1px var(--accent-a8);
989
- }
990
614
  }
615
+
991
616
  &:where(:active:not([data-state='open'])) {
992
- background-color: var(--accent-4);
617
+ background-color: color-mix(in srgb, var(--accent-a4) calc(var(--material-alpha) * 100%), var(--accent-4) var(--material-blend));
993
618
  box-shadow:
994
- inset 0 0 0 1px var(--accent-8),
619
+ inset 0 0 0 1px var(--surface-border-8),
995
620
  var(--shadow-1);
996
-
997
- /* Theme-level translucent override for active */
998
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
999
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
1000
- box-shadow: inset 0 0 0 1px var(--accent-a8);
1001
- }
1002
-
1003
- /* Component-level overrides for active */
1004
- &:where([data-panel-background='solid'], [data-material='solid']) {
1005
- background-color: var(--accent-4);
1006
- box-shadow: inset 0 0 0 1px var(--accent-8);
1007
- }
1008
-
1009
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1010
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
1011
- box-shadow: inset 0 0 0 1px var(--accent-a8);
1012
- }
1013
621
  }
622
+
1014
623
  &:where(:focus-visible) {
1015
624
  outline: 2px solid var(--focus-8);
1016
625
  outline-offset: -1px;
1017
626
  }
627
+
1018
628
  &:where(.rt-high-contrast) {
1019
629
  color: var(--accent-12);
1020
630
  }
631
+
1021
632
  &:where([data-disabled]) {
1022
633
  color: var(--gray-a8);
1023
634
  box-shadow: inset 0 0 0 1px var(--gray-a6);
@@ -1033,50 +644,21 @@
1033
644
  * *
1034
645
  ***************************************************************************************************/
1035
646
 
1036
- /* Toggle button pressed states for all variants */
647
+ /* Toggle button pressed states for all variants - using material system */
1037
648
  .rt-BaseButton:where([data-state='on']) {
1038
- /* No scale transform for toggle buttons - removed for better UX */
1039
-
1040
649
  /* Classic variant pressed */
1041
650
  &:where(.rt-variant-classic) {
1042
- background-color: var(--gray-3);
651
+ background-color: color-mix(in srgb, var(--gray-a3) calc(var(--material-alpha) * 100%), var(--gray-3) var(--material-blend));
1043
652
  box-shadow: var(--shadow-1);
1044
-
1045
- /* Theme-level translucent override for pressed */
1046
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
1047
- background-color: color-mix(in srgb, var(--gray-a3), var(--gray-3) 60%);
1048
- }
1049
-
1050
- /* Component-level overrides for pressed */
1051
- &:where([data-panel-background='solid'], [data-material='solid']) {
1052
- background-color: var(--gray-3);
1053
- }
1054
-
1055
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1056
- background-color: color-mix(in srgb, var(--gray-a3), var(--gray-3) 60%);
1057
- }
1058
653
  }
1059
654
 
1060
- /* Solid variant pressed */
655
+ /* Solid variant pressed - uses solid-blend from variant definition */
1061
656
  &:where(.rt-variant-solid) {
1062
- background-color: var(--accent-10);
657
+ --solid-blend: calc(100% - (var(--material-alpha) * 90%));
658
+ background-color: color-mix(in srgb, var(--accent-a10) calc(var(--material-alpha) * 100%), var(--accent-10) var(--solid-blend));
1063
659
  opacity: 0.9;
1064
660
  box-shadow: var(--shadow-1);
1065
661
 
1066
- /* Theme-level translucent override for pressed */
1067
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
1068
- background-color: color-mix(in srgb, var(--accent-a10), var(--accent-10) 10%);
1069
- }
1070
-
1071
- /* Component-level overrides for pressed */
1072
- &:where([data-panel-background='solid'], [data-material='solid']) {
1073
- background-color: var(--accent-10);
1074
- }
1075
-
1076
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1077
- background-color: color-mix(in srgb, var(--accent-a10), var(--accent-10) 10%);
1078
- }
1079
-
1080
662
  &:where(.rt-high-contrast) {
1081
663
  background-color: var(--accent-12);
1082
664
  opacity: 0.85;
@@ -1085,92 +667,32 @@
1085
667
 
1086
668
  /* Soft variant pressed */
1087
669
  &:where(.rt-variant-soft) {
1088
- background-color: var(--accent-5);
670
+ background-color: color-mix(in srgb, var(--accent-a5) calc(var(--material-alpha) * 100%), var(--accent-5) var(--material-blend));
1089
671
  box-shadow: var(--shadow-1);
1090
-
1091
- /* Theme-level translucent override for pressed */
1092
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
1093
- background-color: color-mix(in srgb, var(--accent-a5), var(--accent-5) 60%);
1094
- }
1095
-
1096
- /* Component-level overrides for pressed */
1097
- &:where([data-panel-background='solid'], [data-material='solid']) {
1098
- background-color: var(--accent-5);
1099
- }
1100
-
1101
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1102
- background-color: color-mix(in srgb, var(--accent-a5), var(--accent-5) 60%);
1103
- }
1104
672
  }
1105
673
 
1106
674
  /* Ghost variant pressed */
1107
675
  &:where(.rt-variant-ghost) {
1108
- background-color: var(--accent-4);
676
+ background-color: color-mix(in srgb, var(--accent-a4) calc(var(--material-alpha) * 100%), var(--accent-4) var(--material-blend));
1109
677
  box-shadow: var(--shadow-1);
1110
-
1111
- /* Theme-level translucent override for pressed */
1112
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
1113
- background-color: var(--accent-a4);
1114
- }
1115
-
1116
- /* Component-level overrides for pressed */
1117
- &:where([data-panel-background='solid'], [data-material='solid']) {
1118
- background-color: var(--accent-4);
1119
- }
1120
-
1121
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1122
- background-color: var(--accent-a4);
1123
- }
1124
678
  }
1125
679
 
1126
680
  /* Outline variant pressed */
1127
681
  &:where(.rt-variant-outline) {
1128
- background-color: var(--accent-3);
682
+ --outline-border-8: color-mix(in srgb, var(--accent-a8) calc(var(--material-alpha) * 100%), var(--accent-8) var(--material-blend));
683
+ background-color: color-mix(in srgb, var(--accent-a3) calc(var(--material-alpha) * 100%), var(--accent-3) var(--material-blend));
1129
684
  box-shadow:
1130
- inset 0 0 0 1px var(--accent-8),
685
+ inset 0 0 0 1px var(--outline-border-8),
1131
686
  var(--shadow-1);
1132
-
1133
- /* Theme-level translucent override for pressed */
1134
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
1135
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
1136
- box-shadow: inset 0 0 0 1px var(--accent-a8);
1137
- }
1138
-
1139
- /* Component-level overrides for pressed */
1140
- &:where([data-panel-background='solid'], [data-material='solid']) {
1141
- background-color: var(--accent-3);
1142
- box-shadow: inset 0 0 0 1px var(--accent-8);
1143
- }
1144
-
1145
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1146
- background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
1147
- box-shadow: inset 0 0 0 1px var(--accent-a8);
1148
- }
1149
687
  }
1150
688
 
1151
689
  /* Surface variant pressed */
1152
690
  &:where(.rt-variant-surface) {
1153
- background-color: var(--accent-4);
691
+ --surface-border-8: color-mix(in srgb, var(--accent-a8) calc(var(--material-alpha) * 100%), var(--accent-8) var(--material-blend));
692
+ background-color: color-mix(in srgb, var(--accent-a4) calc(var(--material-alpha) * 100%), var(--accent-4) var(--material-blend));
1154
693
  box-shadow:
1155
- inset 0 0 0 1px var(--accent-8),
694
+ inset 0 0 0 1px var(--surface-border-8),
1156
695
  var(--shadow-1);
1157
-
1158
- /* Theme-level translucent override for pressed */
1159
- :where([data-panel-background='translucent'], [data-material='translucent']) & {
1160
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
1161
- box-shadow: inset 0 0 0 1px var(--accent-a8);
1162
- }
1163
-
1164
- /* Component-level overrides for pressed */
1165
- &:where([data-panel-background='solid'], [data-material='solid']) {
1166
- background-color: var(--accent-4);
1167
- box-shadow: inset 0 0 0 1px var(--accent-8);
1168
- }
1169
-
1170
- &:where([data-panel-background='translucent'], [data-material='translucent']) {
1171
- background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
1172
- box-shadow: inset 0 0 0 1px var(--accent-a8);
1173
- }
1174
696
  }
1175
697
  }
1176
698