@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.
- package/README.md +4 -0
- package/components.css +63 -380
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +3 -3
- package/dist/cjs/components/button.d.ts.map +1 -1
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +3 -3
- package/dist/cjs/components/chatbar.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js.map +2 -2
- package/dist/cjs/components/icon-button.d.ts.map +1 -1
- package/dist/cjs/components/icon-button.js +2 -2
- package/dist/cjs/components/icon-button.js.map +3 -3
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +3 -3
- package/dist/cjs/components/toggle-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-button.js +1 -1
- package/dist/cjs/components/toggle-button.js.map +3 -3
- package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-icon-button.js +1 -1
- package/dist/cjs/components/toggle-icon-button.js.map +3 -3
- package/dist/cjs/hooks/index.d.ts +2 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +1 -1
- package/dist/cjs/hooks/index.js.map +3 -3
- package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-live-announcer.js +2 -2
- package/dist/cjs/hooks/use-live-announcer.js.map +3 -3
- package/dist/cjs/hooks/use-toggle-state.d.ts +37 -0
- package/dist/cjs/hooks/use-toggle-state.d.ts.map +1 -0
- package/dist/cjs/hooks/use-toggle-state.js +2 -0
- package/dist/cjs/hooks/use-toggle-state.js.map +7 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.d.ts +29 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.d.ts.map +1 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.js +2 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.js.map +7 -0
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-button.js.map +3 -3
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/button.js.map +3 -3
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js.map +2 -2
- package/dist/esm/components/icon-button.d.ts.map +1 -1
- package/dist/esm/components/icon-button.js +2 -2
- package/dist/esm/components/icon-button.js.map +3 -3
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.js.map +3 -3
- package/dist/esm/components/toggle-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-button.js.map +3 -3
- package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-icon-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.js.map +3 -3
- package/dist/esm/hooks/index.d.ts +2 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/index.js.map +3 -3
- package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -1
- package/dist/esm/hooks/use-live-announcer.js +2 -2
- package/dist/esm/hooks/use-live-announcer.js.map +3 -3
- package/dist/esm/hooks/use-toggle-state.d.ts +37 -0
- package/dist/esm/hooks/use-toggle-state.d.ts.map +1 -0
- package/dist/esm/hooks/use-toggle-state.js +2 -0
- package/dist/esm/hooks/use-toggle-state.js.map +7 -0
- package/dist/esm/hooks/use-tooltip-wrapper.d.ts +29 -0
- package/dist/esm/hooks/use-tooltip-wrapper.d.ts.map +1 -0
- package/dist/esm/hooks/use-tooltip-wrapper.js +2 -0
- package/dist/esm/hooks/use-tooltip-wrapper.js.map +7 -0
- package/package.json +4 -4
- package/schemas/base-button.json +1 -1
- package/schemas/button.json +1 -1
- package/schemas/icon-button.json +1 -1
- package/schemas/index.json +6 -6
- package/schemas/toggle-button.json +1 -1
- package/schemas/toggle-icon-button.json +1 -1
- package/src/components/_internal/base-button.css +136 -614
- package/src/components/_internal/base-button.tsx +15 -13
- package/src/components/button.tsx +13 -42
- package/src/components/chatbar.tsx +1 -13
- package/src/components/icon-button.tsx +20 -44
- package/src/components/image.css +10 -8
- package/src/components/shell.tsx +13 -9
- package/src/components/toggle-button.tsx +30 -59
- package/src/components/toggle-icon-button.tsx +29 -51
- package/src/hooks/index.ts +2 -0
- package/src/hooks/use-live-announcer.ts +34 -7
- package/src/hooks/use-toggle-state.ts +72 -0
- package/src/hooks/use-tooltip-wrapper.ts +28 -0
- package/src/styles/tokens/color.css +11 -1
- package/styles.css +70 -381
- package/tokens/base.css +7 -1
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
385
|
-
|
|
386
|
-
);
|
|
387
|
-
|
|
388
|
-
|
|
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
|
-
/*
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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
|
-
|
|
458
|
-
|
|
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
|
-
|
|
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
|
-
/*
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
/*
|
|
813
|
-
|
|
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(--
|
|
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(--
|
|
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(--
|
|
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
|
-
/*
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
:
|
|
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
|
-
|
|
941
|
-
|
|
942
|
-
|
|
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(--
|
|
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(--
|
|
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(--
|
|
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
|
-
|
|
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
|
-
|
|
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(--
|
|
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
|
-
|
|
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(--
|
|
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
|
|