@ecopages/radiant-themes 0.2.0 → 0.2.2

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 (42) hide show
  1. package/README.md +37 -17
  2. package/dist/compiled/themes/cloudflare/compact.css +56 -14
  3. package/dist/compiled/themes/cloudflare.css +56 -14
  4. package/dist/compiled/themes/github/compact.css +310 -65
  5. package/dist/compiled/themes/github.css +310 -65
  6. package/dist/compiled/themes/high-contrast/compact.css +108 -11
  7. package/dist/compiled/themes/high-contrast.css +108 -11
  8. package/dist/compiled/themes/macos/compact.css +698 -272
  9. package/dist/compiled/themes/macos-classic/compact.css +455 -16
  10. package/dist/compiled/themes/macos-classic.css +455 -16
  11. package/dist/compiled/themes/macos.css +698 -272
  12. package/dist/compiled/themes/material/compact.css +461 -136
  13. package/dist/compiled/themes/material.css +461 -136
  14. package/dist/compiled/themes/vercel/compact.css +118 -66
  15. package/dist/compiled/themes/vercel.css +118 -66
  16. package/dist/compiled/themes/vscode/compact.css +310 -40
  17. package/dist/compiled/themes/vscode.css +310 -40
  18. package/dist/compiled/themes/windows95/compact.css +408 -22
  19. package/dist/compiled/themes/windows95.css +408 -22
  20. package/dist/foundation.css +13 -0
  21. package/dist/tokens/colors/cloudflare.css +1 -1
  22. package/dist/tokens/colors/github.css +32 -0
  23. package/dist/tokens/colors/macos.css +65 -25
  24. package/dist/tokens/colors/material.css +61 -20
  25. package/dist/tokens/colors/vercel.css +43 -39
  26. package/dist/tokens/colors/vscode.css +48 -4
  27. package/dist/tokens/colors/windows95.css +10 -5
  28. package/dist/tokens/components/cloudflare.css +63 -7
  29. package/dist/tokens/components/github.css +287 -39
  30. package/dist/tokens/components/high-contrast.css +106 -11
  31. package/dist/tokens/components/macos-classic.css +549 -15
  32. package/dist/tokens/components/macos.css +555 -96
  33. package/dist/tokens/components/material.css +360 -29
  34. package/dist/tokens/components/vercel.css +83 -19
  35. package/dist/tokens/components/vscode.css +280 -27
  36. package/dist/tokens/components/windows95.css +470 -18
  37. package/dist/tokens/roles/cloudflare.css +1 -1
  38. package/dist/tokens/roles/github.css +12 -12
  39. package/dist/tokens/roles/macos.css +97 -93
  40. package/dist/tokens/roles/material.css +65 -65
  41. package/dist/tokens/roles/vercel.css +3 -3
  42. package/package.json +3 -3
@@ -1,6 +1,11 @@
1
1
  @reference 'tailwindcss';
2
2
 
3
- :root, :root[data-rui-theme='material'] {
3
+ /**
4
+ * Material 3 shapes and elevation: full-radius buttons, 4px fields and menus, 8px chips, 12px cards, 28px dialogs,
5
+ * tonal surfaces instead of borders on overlays, and a 3px secondary focus indicator.
6
+ */
7
+ :root,
8
+ :root[data-rui-theme='material'] {
4
9
  --font-sans: Roboto, 'Noto Sans', ui-sans-serif, system-ui, sans-serif;
5
10
  --font-heading: Roboto, 'Noto Sans', ui-sans-serif, system-ui, sans-serif;
6
11
  --font-mono: 'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
@@ -12,71 +17,397 @@
12
17
  --border-radius-xl: 1.75rem;
13
18
  --border-radius-2xl: 2rem;
14
19
  --border-radius-3xl: 2.5rem;
15
- --radius-control: var(--border-radius-xl);
16
- --radius-container: var(--border-radius-lg);
20
+ --radius-control: var(--border-radius-xs);
21
+ --radius-container: var(--border-radius-md);
22
+ --focus-ring-width: 3px;
23
+ --focus-ring-offset: 2px;
24
+ --shadow-control: none;
25
+ --shadow-overlay: 0 1px 2px rgb(0 0 0 / 0.3), 0 2px 6px 2px rgb(0 0 0 / 0.15);
26
+ --shadow-modal: 0 1px 3px rgb(0 0 0 / 0.3), 0 4px 8px 3px rgb(0 0 0 / 0.15);
27
+ --sheen-image: none;
28
+ --material-state-hover: 8%;
29
+ --material-state-press: 10%;
30
+ }
31
+
32
+ /**
33
+ * @remarks Component knobs are declared unlayered on the host elements, so these overrides stay unlayered too.
34
+ */
35
+ :root rui-switch {
36
+ --rui-switch-width: 3.25rem;
37
+ --rui-switch-height: 2rem;
38
+ --rui-switch-thumb-size: 1rem;
39
+ --rui-switch-track: var(--surface-container-highest);
40
+ --rui-switch-track-hover: var(--surface-container-highest);
41
+ --rui-switch-track-on: var(--primary);
42
+ --rui-switch-track-on-hover: var(--primary);
43
+ --rui-switch-thumb: var(--material-outline);
44
+ --rui-switch-thumb-on: var(--on-primary);
45
+ }
46
+
47
+ :root rui-dialog {
48
+ --rui-dialog-radius: var(--border-radius-xl);
49
+ --rui-dialog-surface: var(--surface-container-high);
50
+ --rui-dialog-padding: 1.5rem;
51
+ }
52
+
53
+ :root rui-tooltip {
54
+ --rui-tooltip-radius: var(--border-radius-xs);
55
+ --rui-tooltip-surface: var(--material-inverse-surface);
56
+ --rui-tooltip-color: var(--material-inverse-on-surface);
57
+ --rui-tooltip-shadow: none;
58
+ }
59
+
60
+ :root rui-tabs {
61
+ --rui-tabs-indicator-width: 3px;
62
+ }
63
+
64
+ :root rui-meter {
65
+ --rui-meter-height: 0.25rem;
66
+ --rui-meter-radius: var(--border-radius-full, 9999px);
67
+ --rui-meter-track-color: var(--secondary-container);
68
+ }
69
+
70
+ :root rui-slider {
71
+ --rui-slider-track-size: 0.25rem;
72
+ --rui-slider-track-color: var(--secondary-container);
73
+ --rui-slider-thumb-background: var(--primary);
74
+ --rui-slider-thumb-border-color: var(--primary);
75
+ --rui-slider-thumb-radius: 9999px;
76
+ --rui-slider-thumb-shadow: var(--shadow-control);
17
77
  }
18
78
 
19
79
  @layer components {
80
+ /**
81
+ * @remarks The M3 handle grows from 16px off to 24px on (28px while pressed); the off track draws a 2px outline.
82
+ */
83
+ :root .rui-switch__track {
84
+ border: 2px solid var(--rui-control-border-color);
85
+ }
86
+
87
+ :root .rui-switch__input:checked + .rui-switch__track {
88
+ border-color: var(--primary);
89
+ }
90
+
91
+ :root .rui-switch__thumb {
92
+ left: 0.375rem;
93
+ transition-property: left, right, width, height, background-color;
94
+ }
95
+
96
+ :root .rui-switch__input:checked + .rui-switch__track .rui-switch__thumb {
97
+ right: 0.125rem;
98
+ width: 1.5rem;
99
+ height: 1.5rem;
100
+ }
101
+
102
+ :root .rui-switch__track:active .rui-switch__thumb {
103
+ width: 1.75rem;
104
+ height: 1.75rem;
105
+ }
106
+
20
107
  :root .rui-button {
21
- @apply rounded-control border border-transparent font-medium shadow-sm;
108
+ @apply rounded-pill border border-transparent font-medium;
109
+ letter-spacing: 0.00625rem;
110
+ }
111
+
112
+ :root .rui-button--sm {
113
+ padding-inline: 1rem;
114
+ }
115
+
116
+ :root .rui-button--md {
117
+ padding-inline: 1.5rem;
118
+ }
119
+
120
+ :root .rui-button--lg {
121
+ padding-inline: 2rem;
122
+ }
123
+
124
+ :root .rui-button--square,
125
+ :root .rui-button--link,
126
+ :root .rui-button--none {
127
+ padding-inline: 0;
128
+ }
129
+
130
+ :root .rui-button--filled:hover:not(:disabled) {
131
+ background-color: color-mix(in srgb, var(--on-primary) var(--material-state-hover), var(--primary));
132
+ box-shadow: var(--shadow-overlay);
133
+ }
134
+
135
+ :root .rui-button--filled:active:not(:disabled) {
136
+ background-color: color-mix(in srgb, var(--on-primary) var(--material-state-press), var(--primary));
137
+ box-shadow: none;
22
138
  }
23
139
 
24
- :root .rui-button--filled,
25
- :root .rui-button--destructive {
26
- @apply shadow-md;
140
+ :root .rui-button--destructive:hover:not(:disabled) {
141
+ background-color: color-mix(in srgb, var(--on-error) var(--material-state-hover), var(--error));
142
+ box-shadow: var(--shadow-overlay);
143
+ }
144
+
145
+ :root .rui-button--destructive:active:not(:disabled) {
146
+ background-color: color-mix(in srgb, var(--on-error) var(--material-state-press), var(--error));
147
+ box-shadow: none;
27
148
  }
28
149
 
29
150
  :root .rui-button--outline {
30
- @apply border-border bg-surface text-on-surface shadow-none;
151
+ @apply bg-transparent shadow-none;
31
152
  border-color: var(--rui-control-border-color);
153
+ color: var(--primary);
154
+ }
155
+
156
+ :root .rui-button--ghost {
157
+ color: var(--primary);
32
158
  }
33
159
 
34
- :root .rui-button--ghost:hover:not(:disabled),
35
- :root .rui-button--outline:hover:not(:disabled) {
36
- @apply bg-surface-container-low;
160
+ :root .rui-button--outline:hover:not(:disabled),
161
+ :root .rui-button--ghost:hover:not(:disabled) {
162
+ background-color: color-mix(in srgb, var(--primary) var(--material-state-hover), transparent);
37
163
  }
38
164
 
165
+ :root .rui-button--outline:active:not(:disabled),
166
+ :root .rui-button--ghost:active:not(:disabled) {
167
+ background-color: color-mix(in srgb, var(--primary) var(--material-state-press), transparent);
168
+ }
169
+
170
+ :root .rui-button--outline[aria-pressed='true'],
171
+ :root .rui-button--ghost[aria-pressed='true'] {
172
+ @apply shadow-none ring-0;
173
+ background-color: var(--secondary-container);
174
+ color: var(--on-secondary-container);
175
+ }
176
+
177
+ :root .rui-button:disabled {
178
+ opacity: 1;
179
+ background-color: color-mix(in srgb, var(--on-surface) 12%, transparent);
180
+ color: color-mix(in srgb, var(--on-surface) 38%, transparent);
181
+ box-shadow: none;
182
+ }
183
+
184
+ :root .rui-button--outline:disabled {
185
+ background-color: transparent;
186
+ border-color: color-mix(in srgb, var(--on-surface) 12%, transparent);
187
+ }
188
+
189
+ :root .rui-button--ghost:disabled,
190
+ :root .rui-button--link:disabled,
191
+ :root .rui-button--none:disabled {
192
+ background-color: transparent;
193
+ }
194
+
195
+ /**
196
+ * @remarks Outlined text fields: a 1px outline that becomes a 2px primary outline while focused, drawn with an inset
197
+ * shadow so the field keeps its size.
198
+ */
39
199
  :root .rui-input,
40
200
  :root .rui-textarea,
41
201
  :root .rui-autocomplete__input,
42
- :root .rui-combobox__input,
43
- :root .rui-date-field__input,
44
- :root .rui-date-input__segment,
45
- :root .rui-number-field__input,
202
+ :root .rui-combobox__control,
203
+ :root .rui-date-field__group,
204
+ :root .rui-date-range-picker__group,
205
+ :root .rui-input-group,
206
+ :root .rui-number-field__group,
207
+ :root rui-date-input:where(:not([data-date-field-input], [data-range-start], [data-range-end])),
46
208
  :root .rui-select__control {
47
- @apply rounded-control border-border bg-surface text-on-surface shadow-none;
209
+ @apply rounded-control bg-surface shadow-none;
48
210
  border-color: var(--rui-control-border-color);
211
+ color: var(--on-surface);
49
212
  }
50
213
 
51
- :root .rui-checkbox__control,
52
- :root .rui-radio__control {
53
- @apply border-border bg-surface;
54
- border-color: var(--rui-control-border-color);
214
+ :root .rui-input:hover:not(:disabled),
215
+ :root .rui-textarea:hover:not(:disabled),
216
+ :root .rui-select__control:hover {
217
+ border-color: var(--on-surface);
218
+ }
219
+
220
+ :root .rui-input:focus-visible,
221
+ :root .rui-textarea:focus-visible,
222
+ :root .rui-autocomplete__input:focus-visible,
223
+ :root .rui-combobox__control:focus-within,
224
+ :root .rui-date-field__group:focus-within,
225
+ :root .rui-date-range-picker__group:focus-within,
226
+ :root .rui-input-group:focus-within,
227
+ :root .rui-number-field__group:focus-within {
228
+ @apply ring-0 outline-none;
229
+ border-color: var(--primary);
230
+ box-shadow: inset 0 0 0 1px var(--primary);
231
+ }
232
+
233
+ :root .rui-input::placeholder,
234
+ :root .rui-textarea::placeholder {
235
+ color: var(--material-on-surface-variant);
55
236
  }
56
237
 
238
+ /**
239
+ * @remarks M3 check boxes are 18px with a 2px radius and a 2px on-surface-variant outline.
240
+ */
57
241
  :root .rui-checkbox__control {
58
- @apply rounded-xs;
242
+ @apply rounded-[2px];
243
+ width: 1.125rem;
244
+ height: 1.125rem;
245
+ border-width: 2px;
246
+ border-color: var(--material-on-surface-variant);
247
+ background-color: transparent;
248
+ }
249
+
250
+ :root .rui-radio__control {
251
+ width: 1.25rem;
252
+ height: 1.25rem;
253
+ border-width: 2px;
254
+ border-color: var(--material-on-surface-variant);
255
+ background-color: transparent;
256
+ }
257
+
258
+ :root .rui-radio__input:checked + .rui-radio__control::after {
259
+ width: 0.625rem;
260
+ height: 0.625rem;
261
+ }
262
+
263
+ :root .rui-checkbox__input:checked:not(:indeterminate):not([aria-checked='mixed']) + .rui-checkbox__control::after {
264
+ width: 0.75rem;
265
+ height: 0.75rem;
266
+ }
267
+
268
+ :root .rui-checkbox__input:indeterminate + .rui-checkbox__control,
269
+ :root .rui-checkbox__input[aria-checked='mixed'] + .rui-checkbox__control {
270
+ background-color: var(--primary);
271
+ }
272
+
273
+ :root .rui-checkbox__input:indeterminate + .rui-checkbox__control::after,
274
+ :root .rui-checkbox__input[aria-checked='mixed'] + .rui-checkbox__control::after {
275
+ @apply rounded-none;
276
+ background-color: var(--on-primary);
277
+ }
278
+
279
+ :root .rui-dialog__surface {
280
+ @apply border-0;
281
+ background-color: var(--surface-container-high);
282
+ box-shadow: var(--shadow-modal);
283
+ }
284
+
285
+ :root .rui-dialog__title {
286
+ @apply font-normal;
287
+ font-size: 1.5rem;
288
+ line-height: 2rem;
289
+ }
290
+
291
+ :root .rui-popover {
292
+ --rui-popover-radius: var(--border-radius-xs);
293
+ --rui-popover-surface: var(--surface-container);
294
+ --rui-popover-border-color: transparent;
295
+ color: var(--on-surface);
296
+ }
297
+
298
+ :root .rui-popover .rui-listbox {
299
+ background-color: transparent;
59
300
  }
60
301
 
61
- :root .rui-dialog__surface,
62
- :root .rui-popover-host,
63
302
  :root .rui-hover-card__content,
303
+ :root .rui-menu-button__menu,
304
+ :root .rui-menubar__menu,
64
305
  :root .rui-select__listbox,
65
- :root .rui-combobox__listbox,
306
+ :root .rui-combobox__listbox {
307
+ @apply rounded-control border-0;
308
+ background-color: var(--surface-container);
309
+ color: var(--on-surface);
310
+ box-shadow: var(--shadow-overlay);
311
+ }
312
+
66
313
  :root .rui-calendar {
67
- @apply rounded-container border border-border bg-surface shadow-lg;
314
+ @apply rounded-[1rem] border-0;
315
+ background-color: var(--surface-container-high);
316
+ box-shadow: var(--shadow-overlay);
317
+ }
318
+
319
+ :root .rui-calendar__day[aria-selected='true']:not([data-range-middle='true']) {
320
+ @apply rounded-pill;
321
+ }
322
+
323
+ /**
324
+ * @remarks Toasts follow the M3 snackbar: inverse surface, 4px corners, and inverse-primary actions; the status
325
+ * color moves to the icon so text keeps inverse contrast.
326
+ */
327
+ :root .rui-toast {
328
+ @apply rounded-control border-0;
329
+ background-color: var(--material-inverse-surface);
330
+ color: var(--material-inverse-on-surface);
331
+ box-shadow: var(--shadow-modal);
332
+ }
333
+
334
+ :root .rui-toast__action .rui-button {
335
+ color: var(--material-inverse-primary);
68
336
  }
69
337
 
70
- :root .rui-listbox__option[aria-selected='true'],
338
+ :root .rui-listbox__option[aria-selected='true']:not([aria-disabled='true']),
71
339
  :root .rui-menu-button__item[aria-checked='true'],
72
- :root .rui-calendar__day[aria-selected='true'],
340
+ :root .rui-menubar__menu-item[aria-checked='true'],
341
+ :root .rui-tree__node[aria-selected='true'] {
342
+ @apply rounded-control;
343
+ background-color: var(--secondary-container);
344
+ background-image: none;
345
+ color: var(--on-secondary-container);
346
+ }
347
+
348
+ :root .rui-listbox__option[aria-selected='true'] .rui-listbox__option-indicator {
349
+ color: inherit;
350
+ }
351
+
352
+ /**
353
+ * @remarks Navigation drawer items use the full-radius secondary-container active indicator.
354
+ */
355
+ :root .rui-sidebar__menu-button {
356
+ @apply rounded-pill;
357
+ }
358
+
359
+ :root .rui-sidebar__menu-button[aria-current='page'],
73
360
  :root .rui-sidebar__menu-button--active {
74
- @apply rounded-control bg-primary-container text-on-primary-container;
361
+ background-color: var(--secondary-container);
362
+ color: var(--on-secondary-container);
363
+ }
364
+
365
+ :root .rui-tabs__tab {
366
+ @apply font-medium;
367
+ color: var(--material-on-surface-variant);
368
+ }
369
+
370
+ :root .rui-tabs__tab[aria-selected='true'],
371
+ :root rui-tabs[variant='boxed'] .rui-tabs__tab[aria-selected='true'] {
372
+ color: var(--primary);
373
+ }
374
+
375
+ :root rui-tabs[variant='boxed'] .rui-tabs__tab:not([aria-selected='true']) {
376
+ opacity: 1;
377
+ color: var(--material-on-surface-variant);
378
+ }
379
+
380
+ :root .rui-tabs__tab:hover {
381
+ background-color: color-mix(in srgb, var(--on-surface) var(--material-state-hover), transparent);
75
382
  }
76
383
 
77
- :root .rui-badge,
78
384
  :root .rui-chip,
385
+ :root .rui-tag {
386
+ @apply rounded-[0.5rem];
387
+ }
388
+
389
+ :root .rui-chip--default,
390
+ :root .rui-tag {
391
+ border-color: var(--material-outline-variant);
392
+ background-color: transparent;
393
+ color: var(--material-on-surface-variant);
394
+ }
395
+
396
+ :root .rui-tag[aria-selected='true'] {
397
+ border-color: transparent;
398
+ background-color: var(--secondary-container);
399
+ background-image: none;
400
+ color: var(--on-secondary-container);
401
+ }
402
+
403
+ :root .rui-badge,
79
404
  :root .rui-pagination__link {
80
405
  @apply rounded-pill;
81
406
  }
407
+
408
+ :root .rui-feed__article {
409
+ border-color: var(--material-outline-variant);
410
+ background-color: var(--surface);
411
+ }
412
+
82
413
  }
@@ -1,7 +1,9 @@
1
+ @reference 'tailwindcss';
2
+
1
3
  :where(:root), :root[data-rui-theme='vercel'] {
2
- --font-sans: 'Geist Sans', ui-sans-serif, system-ui, sans-serif;
3
- --font-heading: 'Geist Sans', ui-sans-serif, system-ui, sans-serif;
4
- --font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
4
+ --font-sans: Geist, 'Geist Sans', ui-sans-serif, system-ui, sans-serif;
5
+ --font-heading: Geist, 'Geist Sans', ui-sans-serif, system-ui, sans-serif;
6
+ --font-mono: 'Geist Mono', 'GeistMono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
5
7
  --rui-border-alpha: 100%;
6
8
  --border-radius-xs: 0.125rem;
7
9
  --border-radius-sm: 0.25rem;
@@ -34,6 +36,7 @@
34
36
 
35
37
  :root .rui-button {
36
38
  @apply rounded-control border border-transparent font-medium shadow-none;
39
+ background-image: none;
37
40
  }
38
41
 
39
42
  :root .rui-button--filled {
@@ -51,16 +54,23 @@
51
54
 
52
55
  :root .rui-button--outline:hover:not(:disabled),
53
56
  :root .rui-button--ghost:hover:not(:disabled) {
54
- @apply bg-surface-container-low;
57
+ background-color: var(--color-vercel-component-2);
58
+ }
59
+
60
+ :root .rui-button--outline:active:not(:disabled),
61
+ :root .rui-button--ghost:active:not(:disabled) {
62
+ background-color: var(--color-vercel-component-3);
55
63
  }
56
64
 
57
65
  :root .rui-input,
58
66
  :root .rui-textarea,
59
67
  :root .rui-autocomplete__input,
60
- :root .rui-combobox__input,
61
- :root .rui-date-field__input,
62
- :root .rui-date-input__segment,
63
- :root .rui-number-field__input,
68
+ :root .rui-combobox__control,
69
+ :root .rui-date-field__group,
70
+ :root .rui-date-range-picker__group,
71
+ :root .rui-input-group,
72
+ :root .rui-number-field__group,
73
+ :root rui-date-input:where(:not([data-date-field-input], [data-range-start], [data-range-end])),
64
74
  :root .rui-select__control {
65
75
  @apply rounded-control border bg-surface text-on-surface shadow-none;
66
76
  border-color: var(--rui-control-border-color);
@@ -93,17 +103,50 @@
93
103
  }
94
104
 
95
105
  :root .rui-dialog__surface,
96
- :root .rui-popover-host,
97
106
  :root .rui-hover-card__content,
98
- :root .rui-menu-button__menu,
99
- :root .rui-menubar__menu,
100
- :root .rui-select__listbox,
101
- :root .rui-combobox__listbox,
102
107
  :root .rui-calendar,
103
108
  :root rui-tabs[variant='boxed'] {
104
109
  @apply rounded-container border border-border bg-surface shadow-sm;
105
110
  }
106
111
 
112
+ :root .rui-popover {
113
+ --rui-popover-radius: var(--radius-container);
114
+ --rui-popover-surface: var(--color-vercel-background-1);
115
+ --rui-popover-border-color: var(--color-vercel-border-4);
116
+ --rui-popover-shadow: 0 4px 8px -4px rgb(0 0 0 / 0.04), 0 16px 24px -8px rgb(0 0 0 / 0.06);
117
+ }
118
+
119
+ :root .rui-tooltip__content {
120
+ --rui-tooltip-radius: var(--radius-control);
121
+ --rui-tooltip-padding-x: 0.75rem;
122
+ --rui-tooltip-padding-y: 0.375rem;
123
+ }
124
+
125
+ /**
126
+ * Geist menus: a 12px floating panel with 8px padding and 6px rounded rows.
127
+ */
128
+ :root .rui-menu-button__menu,
129
+ :root .rui-menubar__menu,
130
+ :root .rui-select__listbox,
131
+ :root .rui-combobox__listbox {
132
+ @apply rounded-container border border-border p-2;
133
+ background-color: var(--color-vercel-background-1);
134
+ box-shadow:
135
+ 0 4px 8px -4px rgb(0 0 0 / 0.04),
136
+ 0 16px 24px -8px rgb(0 0 0 / 0.06);
137
+ }
138
+
139
+ :root .rui-select__listbox .rui-listbox,
140
+ :root .rui-combobox__listbox .rui-listbox {
141
+ @apply bg-transparent p-0;
142
+ }
143
+
144
+ :root .rui-listbox__option,
145
+ :root .rui-menu-button__item,
146
+ :root .rui-menubar__menu-item {
147
+ @apply rounded-control;
148
+ }
149
+
107
150
  :root rui-tabs[variant='boxed'] .rui-tabs__list {
108
151
  @apply border-b border-border bg-transparent px-2 pt-2;
109
152
  gap: 0;
@@ -115,7 +158,7 @@
115
158
  }
116
159
 
117
160
  :root rui-tabs[variant='boxed'] .rui-tabs__tab[aria-selected='true'] {
118
- @apply bg-transparent text-on-surface font-semibold;
161
+ @apply bg-transparent text-on-surface font-medium;
119
162
  border-bottom-color: var(--primary);
120
163
  }
121
164
 
@@ -124,13 +167,33 @@
124
167
  padding: var(--rui-tabs-panel-padding);
125
168
  }
126
169
 
127
- :root .rui-listbox__option:hover:not([aria-selected='true']):not([aria-disabled='true']):not([data-active]),
170
+ :root .rui-listbox__option:hover:not([aria-disabled='true']),
171
+ :root .rui-listbox__option[data-active]:not([aria-disabled='true']),
128
172
  :root .rui-menu-button__item:hover:not([aria-checked='true']):not([aria-disabled='true']),
129
173
  :root .rui-menubar__menu-item:hover:not([aria-expanded='true']):not([aria-disabled='true']) {
174
+ background-color: var(--color-vercel-component-1);
175
+ }
176
+
177
+ /**
178
+ * @remarks Geist marks the selected menu row with a check on a hover-strength fill, not an inverted fill, so the
179
+ * indicator uses the text color instead of `on-primary`.
180
+ */
181
+ :root .rui-listbox__option[aria-selected='true']:not([aria-disabled='true']),
182
+ :root .rui-listbox__option[aria-selected='true']:focus-visible {
130
183
  background-color: var(--color-vercel-component-2);
184
+ background-image: none;
185
+ color: var(--color-vercel-text-primary);
186
+ }
187
+
188
+ :root .rui-listbox__option[aria-selected='true'] .rui-listbox__option-indicator {
189
+ color: var(--color-vercel-text-primary);
131
190
  }
132
191
 
133
- :root .rui-table__header,
192
+ :root .rui-listbox__option[aria-selected='true'][data-active]:not([aria-disabled='true']) {
193
+ --tw-ring-color: transparent;
194
+ }
195
+
196
+ :root .rui-table__column,
134
197
  :root .rui-treegrid__row--header {
135
198
  @apply bg-surface-container-low text-on-surface font-medium;
136
199
  }
@@ -139,12 +202,13 @@
139
202
  @apply rounded-control shadow-none;
140
203
  }
141
204
 
142
- :root .rui-toast__content {
143
- @apply rounded-control border border-border bg-surface text-on-surface shadow-none;
205
+ :root .rui-toast {
206
+ @apply rounded-control shadow-none;
207
+ background-image: none;
144
208
  }
145
209
 
146
210
  :root .rui-separator,
147
211
  :root .rui-sidebar__separator {
148
212
  @apply bg-border;
149
213
  }
150
- }
214
+ }