@rcarls/rc-theme-material 0.0.0-next-20260921045401

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 (48) hide show
  1. package/CHANGELOG.md +423 -0
  2. package/README.md +164 -0
  3. package/bridge.css +678 -0
  4. package/components/accordion.css +20 -0
  5. package/components/adaptive-menu.css +162 -0
  6. package/components/app-bar.css +100 -0
  7. package/components/bottom-sheet.css +135 -0
  8. package/components/button.css +270 -0
  9. package/components/card.css +61 -0
  10. package/components/carousel.css +23 -0
  11. package/components/chip-group.css +15 -0
  12. package/components/chip.css +39 -0
  13. package/components/combobox.css +155 -0
  14. package/components/dialog.css +86 -0
  15. package/components/disclosure.css +104 -0
  16. package/components/fab-menu.css +85 -0
  17. package/components/fab.css +51 -0
  18. package/components/field.css +378 -0
  19. package/components/icons.css +52 -0
  20. package/components/list-item.css +146 -0
  21. package/components/listbox.css +47 -0
  22. package/components/markdown-editor.css +72 -0
  23. package/components/menu-button.css +126 -0
  24. package/components/menu.css +147 -0
  25. package/components/menubar.css +27 -0
  26. package/components/modes.css +50 -0
  27. package/components/navigation-bar.css +76 -0
  28. package/components/navigation-rail.css +132 -0
  29. package/components/progress.css +15 -0
  30. package/components/range-slider.css +29 -0
  31. package/components/scroller.css +7 -0
  32. package/components/search-bar.css +58 -0
  33. package/components/segmented-button.css +19 -0
  34. package/components/select.css +197 -0
  35. package/components/slider.css +19 -0
  36. package/components/snackbar.css +23 -0
  37. package/components/splitter.css +35 -0
  38. package/components/switch.css +41 -0
  39. package/components/textarea.css +31 -0
  40. package/components/toolbar.css +32 -0
  41. package/components/transfer-list.css +70 -0
  42. package/components/virtual-canvas.css +16 -0
  43. package/components.css +42 -0
  44. package/constraints/material.json +99 -0
  45. package/defaults.css +1081 -0
  46. package/package.json +53 -0
  47. package/state-layer.css +35 -0
  48. package/theme.css +3 -0
package/bridge.css ADDED
@@ -0,0 +1,678 @@
1
+ @layer rc-theme-material.defaults, rc-theme-material.bridge, rc-theme-material.components;
2
+
3
+ @layer rc-theme-material.bridge {
4
+ /*
5
+ * Material 3 token bridge for rc-webcomponents.
6
+ *
7
+ * This file intentionally does not define --md-sys-* values. It consumes an
8
+ * application's Material token environment and maps it to RC's public styling
9
+ * contract. Import defaults.css first only when a standalone baseline is
10
+ * desired.
11
+ */
12
+ .rc-theme-material,
13
+ :host(.rc-theme-material) {
14
+ --rc-surface: var(--md-sys-color-surface, Canvas);
15
+ --rc-field: var(--md-sys-color-surface-container-highest, Field);
16
+ --rc-field-text: var(--md-sys-color-on-surface, FieldText);
17
+ --rc-highlight: var(--md-sys-color-secondary-container, Highlight);
18
+ --rc-highlight-text: var(--md-sys-color-on-secondary-container, HighlightText);
19
+ --rc-text-disabled: var(--md-sys-color-on-surface-variant, GrayText);
20
+ --rc-accent: var(--md-sys-color-primary, Highlight);
21
+ --rc-border-color: var(--md-sys-color-outline, ButtonBorder);
22
+ --rc-border: 1px solid var(--rc-border-color);
23
+ --rc-shadow-level0: none;
24
+ --rc-shadow-level1: 0 var(--md-sys-elevation-level1, 1px)
25
+ calc(var(--md-sys-elevation-level1, 1px) * 2)
26
+ color-mix(in srgb, var(--md-sys-color-shadow, #000) 18%, transparent);
27
+ --rc-shadow-level2: 0 var(--md-sys-elevation-level2, 3px)
28
+ calc(var(--md-sys-elevation-level2, 3px) * 2)
29
+ color-mix(in srgb, var(--md-sys-color-shadow, #000) 18%, transparent);
30
+ --rc-shadow-level3: 0 var(--md-sys-elevation-level3, 6px)
31
+ calc(var(--md-sys-elevation-level3, 6px) * 2)
32
+ color-mix(in srgb, var(--md-sys-color-shadow, #000) 18%, transparent);
33
+ --rc-shadow-level4: 0 var(--md-sys-elevation-level4, 8px)
34
+ calc(var(--md-sys-elevation-level4, 8px) * 2)
35
+ color-mix(in srgb, var(--md-sys-color-shadow, #000) 24%, transparent);
36
+ --rc-shadow: var(--rc-shadow-level2);
37
+ --rc-font-family: var(--md-sys-typescale-body-medium-font, inherit);
38
+ --rc-font-size: var(--md-sys-typescale-body-medium-size, 0.875rem);
39
+ --rc-line-height: var(--md-sys-typescale-body-medium-line-height, 1.25rem);
40
+ --rc-icon-font-size: 1.5rem;
41
+ --rc-icon-font-line-height: var(--rc-icon-font-size);
42
+ --rc-control-block-size: 2.5rem;
43
+ --rc-control-padding-block: 0.5rem;
44
+ --rc-control-padding-inline: 1rem;
45
+ --rc-control-gap: 0.5rem;
46
+ --rc-control-radius: var(--md-sys-shape-corner-full, 1.25rem);
47
+ --rc-list-item-gap: 1rem;
48
+ --rc-list-item-min-block-size: 3rem;
49
+ --rc-list-item-padding-block: 0;
50
+ --rc-list-item-padding-inline: 1rem;
51
+ --rc-list-item-selected-bg: var(--md-sys-color-secondary-container, Highlight);
52
+ --rc-list-item-selected-color: var(--md-sys-color-on-secondary-container, HighlightText);
53
+ --rc-button-bg: var(--md-sys-color-primary, ButtonFace);
54
+ /*
55
+ * Both of these sit on --rc-button-bg, so both take the on-primary color.
56
+ * rc-select, rc-combobox, and rc-menu-button read --rc-button-text directly
57
+ * for their trigger and chip text; leaving it unset dropped them onto the
58
+ * ButtonText system color over the primary fill.
59
+ */
60
+ --rc-button-text: var(--md-sys-color-on-primary, ButtonText);
61
+ --rc-button-color: var(--rc-button-text, ButtonText);
62
+ --rc-button-block-size: var(--rc-control-block-size);
63
+ --rc-button-radius: var(--rc-control-radius);
64
+ --rc-button-border: 0;
65
+ --rc-button-padding-block: 0;
66
+ --rc-button-padding-inline: 1.5rem;
67
+ --rc-button-gap: var(--rc-control-gap);
68
+ --rc-button-font: 500 var(--md-sys-typescale-label-large-size, 0.875rem) /
69
+ var(--md-sys-typescale-label-large-line-height, 1.25rem) var(--rc-font-family);
70
+ --rc-button-hover-state-layer-opacity: 0.08;
71
+ --rc-button-focus-state-layer-opacity: 0.12;
72
+ --rc-button-pressed-state-layer-opacity: 0.12;
73
+ --rc-card-bg: var(--md-sys-color-surface-container-low, Canvas);
74
+ --rc-card-color: var(--md-sys-color-on-surface, CanvasText);
75
+ --rc-card-radius: var(--md-sys-shape-corner-medium, 0.75rem);
76
+ --rc-card-padding-block: 1rem;
77
+ --rc-card-padding-inline: 1rem;
78
+ --rc-card-actions-gap: 0.5rem;
79
+ --rc-card-hover-state-layer-opacity: 0.08;
80
+ --rc-card-pressed-state-layer-opacity: 0.12;
81
+ --rc-chip-block-size: 2rem;
82
+ --rc-chip-gap: 0px;
83
+ --rc-chip-padding-inline: 1rem;
84
+ --rc-chip-border: 1px solid var(--md-sys-color-outline, ButtonBorder);
85
+ --rc-chip-radius: var(--md-sys-shape-corner-small, 0.5rem);
86
+ --rc-chip-bg: var(--md-sys-color-surface-container-low, ButtonFace);
87
+ --rc-chip-color: var(--md-sys-color-on-surface-variant, ButtonText);
88
+ --rc-chip-font: inherit;
89
+ --rc-chip-text-decoration: none;
90
+ --rc-chip-selected-bg: var(--md-sys-color-secondary-container, Highlight);
91
+ --rc-chip-state-layer-color: var(--md-sys-color-on-surface-variant, CanvasText);
92
+ --rc-chip-selected-state-layer-color: var(--md-sys-color-on-secondary-container, CanvasText);
93
+ --rc-chip-hover-state-layer-opacity: var(--md-sys-state-hover-state-layer-opacity, 0.08);
94
+ --rc-chip-focus-state-layer-opacity: var(--md-sys-state-focus-state-layer-opacity, 0.12);
95
+ --rc-chip-pressed-state-layer-opacity: var(--md-sys-state-pressed-state-layer-opacity, 0.12);
96
+ --rc-chip-state-layer-transition-duration: var(--rc-motion-effects-duration-fast, 150ms);
97
+ --rc-chip-state-layer-transition-easing: var(--rc-motion-effects-easing-fast, ease-out);
98
+ --rc-switch-native-appearance: none;
99
+ --rc-switch-native-inline-size: 100%;
100
+ --rc-switch-native-block-size: 100%;
101
+ --rc-switch-native-margin: 0;
102
+ --rc-switch-native-opacity: 0;
103
+ --rc-switch-decoration-display: block;
104
+ --rc-switch-icon-display: grid;
105
+ --rc-switch-track-inline-size: 3.25rem;
106
+ --rc-switch-track-block-size: 2rem;
107
+ --rc-switch-selected-track-bg: var(--md-sys-color-primary, Highlight);
108
+ --rc-switch-thumb-translate: 1.125rem;
109
+ --rc-segmented-button-segment-min-block-size: 2.5rem;
110
+ --rc-segmented-button-selected-bg: var(--md-sys-color-secondary-container, Highlight);
111
+ --rc-snackbar-bg: var(--md-sys-color-inverse-surface, CanvasText);
112
+ --rc-snackbar-color: var(--md-sys-color-inverse-on-surface, Canvas);
113
+ --rc-snackbar-border: 0;
114
+ --rc-snackbar-action-color: var(--md-sys-color-inverse-primary, LinkText);
115
+ --rc-snackbar-action-border: 0;
116
+ --rc-snackbar-action-radius: 9999px;
117
+ --rc-snackbar-action-padding-block: 0.5rem;
118
+ --rc-snackbar-action-padding-inline: 0.75rem;
119
+ --rc-snackbar-action-bg: transparent;
120
+ --rc-snackbar-action-font: inherit;
121
+ --rc-toolbar-radius: var(--md-sys-shape-corner-large, 1rem);
122
+ --rc-toolbar-vertical-radius: 0;
123
+ --rc-item-padding-block: 0.75rem;
124
+ --rc-item-padding-inline: 0.75rem;
125
+ --rc-item-gap: 0.75rem;
126
+ --rc-radius-sm: var(--md-sys-shape-corner-extra-small, 0.25rem);
127
+ --rc-radius-md: var(--md-sys-shape-corner-small, 0.5rem);
128
+ --rc-focus-ring: 2px solid var(--md-sys-color-primary, Highlight);
129
+ --rc-focus-ring-offset: 2px;
130
+ --rc-disabled-opacity: var(--md-sys-state-disabled-state-layer-opacity, 0.38);
131
+ --rc-motion-effects-duration-fast: var(--md-sys-motion-duration-150, 150ms);
132
+ --rc-motion-effects-easing-fast: var(--md-sys-motion-easing-standard, ease-out);
133
+ --rc-motion-effects-duration-default: var(--md-sys-motion-duration-200, 200ms);
134
+ --rc-motion-effects-easing-default: var(--rc-motion-effects-easing-fast);
135
+ --rc-motion-effects-duration-slow: var(--md-sys-motion-duration-300, 300ms);
136
+ --rc-motion-effects-easing-slow: var(--rc-motion-effects-easing-fast);
137
+ /*
138
+ * Spec spatial durations are 350/500/700ms. This project's own motion
139
+ * guide finds anything past ~400ms reads as waiting rather than
140
+ * feedback, so the scale is compressed to 300/400/500ms — a deliberate
141
+ * departure recorded here rather than a silent guess. The curve shape
142
+ * (emphasized) is unchanged from spec.
143
+ */
144
+ --rc-motion-spatial-duration-fast: var(--md-sys-motion-duration-medium2, 300ms);
145
+ --rc-motion-spatial-easing-fast: var(--md-sys-motion-easing-emphasized, cubic-bezier(0.2, 0, 0, 1));
146
+ --rc-motion-spatial-duration-default: var(--md-sys-motion-duration-medium4, 400ms);
147
+ --rc-motion-spatial-easing-default: var(--rc-motion-spatial-easing-fast);
148
+ --rc-motion-spatial-duration-slow: var(--md-sys-motion-duration-long2, 500ms);
149
+ --rc-motion-spatial-easing-slow: var(--rc-motion-spatial-easing-fast);
150
+ /* Decelerate for arriving, accelerate for leaving; family matches above. */
151
+ --rc-motion-effects-easing-enter: var(--md-sys-motion-easing-standard-decelerate, ease-out);
152
+ --rc-motion-effects-easing-exit: var(--md-sys-motion-easing-standard-accelerate, ease-in);
153
+ --rc-motion-spatial-easing-enter: var(
154
+ --md-sys-motion-easing-emphasized-decelerate,
155
+ cubic-bezier(0, 0, 0, 1)
156
+ );
157
+ --rc-motion-spatial-easing-exit: var(
158
+ --md-sys-motion-easing-emphasized-accelerate,
159
+ cubic-bezier(0.3, 0, 1, 1)
160
+ );
161
+ --rc-motion-duration: var(--rc-motion-effects-duration-default);
162
+ --rc-dialog-scrim: color-mix(in srgb, var(--md-sys-color-scrim, #000) 32%, transparent);
163
+ }
164
+
165
+ .rc-theme-material rc-select,
166
+ :host(.rc-theme-material) rc-select {
167
+ --rc-select-control-block-size: 3.5rem;
168
+ --rc-select-padding-inline: 1rem;
169
+ --rc-select-radius: var(
170
+ --md-outlined-select-text-field-container-shape,
171
+ var(--md-sys-shape-corner-extra-small, 0.25rem)
172
+ );
173
+ --rc-select-border: 1px solid
174
+ var(--md-outlined-select-text-field-outline-color, var(--md-sys-color-outline, ButtonBorder));
175
+ --rc-select-listbox-radius: var(
176
+ --md-menu-container-shape,
177
+ var(--md-sys-shape-corner-extra-small, 0.25rem)
178
+ );
179
+ --rc-select-listbox-border: 0;
180
+ --rc-select-listbox-padding-block: 0.5rem;
181
+ --rc-select-shadow: var(--rc-shadow);
182
+ --rc-select-chip-radius: var(--md-sys-shape-corner-small, 0.5rem);
183
+ --rc-select-chip-padding-block: 0.375rem;
184
+ --rc-select-chip-padding-inline-start: 0.75rem;
185
+ --rc-field: var(
186
+ --md-outlined-select-text-field-container-color,
187
+ var(--md-sys-color-surface, Field)
188
+ );
189
+ --rc-field-text: var(
190
+ --md-outlined-select-text-field-input-text-color,
191
+ var(--md-sys-color-on-surface, FieldText)
192
+ );
193
+ --rc-font-family: var(
194
+ --md-outlined-select-text-field-input-text-font,
195
+ var(--md-sys-typescale-body-large-font, inherit)
196
+ );
197
+ }
198
+
199
+ .rc-theme-material rc-listbox,
200
+ :host(.rc-theme-material) rc-listbox {
201
+ --rc-listbox-option-gap: var(--rc-list-item-gap, 0.75rem);
202
+ --rc-listbox-option-min-block-size: var(--rc-list-item-min-block-size, 3rem);
203
+ --rc-listbox-option-padding-block: var(--rc-list-item-padding-block, 0);
204
+ --rc-listbox-option-padding-inline: var(--rc-list-item-padding-inline, 0.75rem);
205
+ --rc-listbox-option-transition: background-color 150ms ease, color 150ms ease;
206
+ --rc-listbox-hover-bg: color-mix(
207
+ in srgb,
208
+ var(--md-sys-color-on-surface, CanvasText) 8%,
209
+ transparent
210
+ );
211
+ --rc-listbox-hover-color: var(--md-sys-color-on-surface, CanvasText);
212
+ --rc-listbox-active-bg: color-mix(
213
+ in srgb,
214
+ var(--md-sys-color-on-surface, CanvasText) 12%,
215
+ transparent
216
+ );
217
+ --rc-listbox-active-color: var(--md-sys-color-on-surface, CanvasText);
218
+ --rc-listbox-selected-bg: var(--rc-list-item-selected-bg, Highlight);
219
+ --rc-listbox-selected-color: var(--rc-list-item-selected-color, HighlightText);
220
+ --rc-listbox-disabled-opacity: var(--md-sys-state-disabled-state-layer-opacity, 0.38);
221
+ }
222
+
223
+ .rc-theme-material rc-combobox,
224
+ :host(.rc-theme-material) rc-combobox {
225
+ --rc-combobox-control-block-size: 3.5rem;
226
+ --rc-combobox-padding-inline: 1rem;
227
+ --rc-combobox-radius: var(
228
+ --md-outlined-text-field-container-shape,
229
+ var(--md-sys-shape-corner-extra-small, 0.25rem)
230
+ );
231
+ --rc-combobox-border: 1px solid
232
+ var(--md-outlined-text-field-outline-color, var(--md-sys-color-outline, ButtonBorder));
233
+ --rc-combobox-listbox-radius: var(
234
+ --md-menu-container-shape,
235
+ var(--md-sys-shape-corner-extra-small, 0.25rem)
236
+ );
237
+ --rc-combobox-listbox-border: 0;
238
+ --rc-combobox-listbox-padding-block: 0.5rem;
239
+ --rc-combobox-shadow: var(--rc-shadow);
240
+ --rc-combobox-chip-radius: var(--md-sys-shape-corner-small, 0.5rem);
241
+ --rc-combobox-chip-padding-block: 0.375rem;
242
+ --rc-combobox-chip-padding-inline-start: 0.75rem;
243
+ --rc-field: var(--md-outlined-text-field-container-color, var(--md-sys-color-surface, Field));
244
+ --rc-field-text: var(
245
+ --md-outlined-text-field-input-text-color,
246
+ var(--md-sys-color-on-surface, FieldText)
247
+ );
248
+ --rc-font-family: var(
249
+ --md-outlined-text-field-input-text-font,
250
+ var(--md-sys-typescale-body-large-font, inherit)
251
+ );
252
+ }
253
+
254
+ .rc-theme-material rc-slider,
255
+ :host(.rc-theme-material) rc-slider {
256
+ --rc-slider-track-size: var(--md-slider-active-track-height, 0.25rem);
257
+ --rc-slider-track-background: var(
258
+ --md-slider-inactive-track-color,
259
+ var(--md-sys-color-surface-container-highest, CanvasText)
260
+ );
261
+ --rc-slider-track-opacity: 1;
262
+ --rc-slider-track-radius: var(
263
+ --md-slider-inactive-track-shape,
264
+ var(--md-sys-shape-corner-full, 999px)
265
+ );
266
+ --rc-slider-progress-background: var(
267
+ --md-slider-active-track-color,
268
+ var(--md-sys-color-primary, Highlight)
269
+ );
270
+ --rc-slider-value-color: var(
271
+ --md-slider-label-text-color,
272
+ var(--md-sys-color-on-surface, GrayText)
273
+ );
274
+ --rc-thumb-radius: calc(var(--md-slider-handle-width, 1.25rem) / 2);
275
+ }
276
+
277
+ .rc-theme-material rc-progress,
278
+ :host(.rc-theme-material) rc-progress {
279
+ --rc-progress-track-background: var(
280
+ --md-linear-progress-track-color,
281
+ var(--md-sys-color-surface-container-highest, CanvasText)
282
+ );
283
+ --rc-progress-track-opacity: 1;
284
+ --rc-progress-track-radius: var(
285
+ --md-linear-progress-track-shape,
286
+ var(--md-sys-shape-corner-full, 999px)
287
+ );
288
+ --rc-progress-fill-background: var(
289
+ --md-linear-progress-active-indicator-color,
290
+ var(--md-sys-color-primary, Highlight)
291
+ );
292
+ --rc-progress-value-color: var(--md-sys-color-on-surface-variant, GrayText);
293
+ }
294
+
295
+ .rc-theme-material rc-range-slider,
296
+ :host(.rc-theme-material) rc-range-slider {
297
+ --rc-range-slider-accent: var(
298
+ --md-slider-active-track-color,
299
+ var(--md-sys-color-primary, Highlight)
300
+ );
301
+ --rc-range-slider-track-background: var(
302
+ --md-slider-inactive-track-color,
303
+ var(--md-sys-color-surface-container-highest, CanvasText)
304
+ );
305
+ --rc-range-slider-track-radius: var(
306
+ --md-slider-inactive-track-shape,
307
+ var(--md-sys-shape-corner-full, 999px)
308
+ );
309
+ --rc-range-slider-thumb-background: var(
310
+ --md-slider-handle-color,
311
+ var(--md-sys-color-primary, ButtonFace)
312
+ );
313
+ --rc-range-slider-thumb-border: var(
314
+ --md-slider-handle-color,
315
+ var(--md-sys-color-primary, Highlight)
316
+ );
317
+ --rc-range-slider-thumb-hover-background: var(
318
+ --md-slider-hover-handle-color,
319
+ var(--md-slider-handle-color, var(--md-sys-color-primary, ButtonFace))
320
+ );
321
+ --rc-range-slider-thumb-hover-border: var(
322
+ --md-slider-hover-handle-color,
323
+ var(--md-slider-handle-color, var(--md-sys-color-primary, Highlight))
324
+ );
325
+ --rc-range-slider-thumb-active-background: var(
326
+ --md-slider-pressed-handle-color,
327
+ var(--md-slider-handle-color, var(--md-sys-color-primary, ButtonFace))
328
+ );
329
+ --rc-range-slider-thumb-active-border: var(
330
+ --md-slider-pressed-handle-color,
331
+ var(--md-slider-handle-color, var(--md-sys-color-primary, Highlight))
332
+ );
333
+ --rc-range-slider-focus-outline: var(
334
+ --md-slider-focus-handle-color,
335
+ var(--md-sys-color-primary, Highlight)
336
+ );
337
+ --rc-range-slider-thumb-size: var(--md-slider-handle-width, 1.25rem);
338
+ --rc-range-slider-value-color: var(
339
+ --md-slider-label-text-color,
340
+ var(--md-sys-color-on-surface, GrayText)
341
+ );
342
+ --rc-thumb-radius: calc(var(--md-slider-handle-width, 1.25rem) / 2);
343
+ }
344
+
345
+ .rc-theme-material rc-search-bar,
346
+ :host(.rc-theme-material) rc-search-bar {
347
+ --rc-search-bar-bg: var(
348
+ --md-search-bar-container-color,
349
+ var(--md-sys-color-surface-container-high, Field)
350
+ );
351
+ --rc-search-bar-color: var(
352
+ --md-search-bar-input-text-color,
353
+ var(--md-sys-color-on-surface, FieldText)
354
+ );
355
+ --rc-search-bar-icon-color: var(
356
+ --md-search-bar-leading-icon-color,
357
+ var(--md-sys-color-on-surface, GrayText)
358
+ );
359
+ --rc-search-bar-clear-color: var(
360
+ --md-search-bar-trailing-icon-color,
361
+ var(--md-sys-color-on-surface-variant, GrayText)
362
+ );
363
+ --rc-search-bar-radius: var(
364
+ --md-search-bar-container-shape,
365
+ var(--md-sys-shape-corner-full, 999px)
366
+ );
367
+ --rc-search-bar-border: none;
368
+ --rc-search-bar-shadow: var(--rc-shadow-level1);
369
+ --rc-search-bar-height: var(--md-search-bar-container-height, 3.5rem);
370
+ --rc-search-bar-padding-inline: 1rem;
371
+ --rc-search-bar-gap: 1rem;
372
+ --rc-search-bar-input-font-family: var(
373
+ --md-search-bar-input-text-font,
374
+ var(--md-sys-typescale-body-large-font, inherit)
375
+ );
376
+ --rc-search-bar-input-font-size: var(
377
+ --md-search-bar-input-text-size,
378
+ var(--md-sys-typescale-body-large-size, 1rem)
379
+ );
380
+ --rc-search-bar-view-bg: var(
381
+ --md-search-view-container-color,
382
+ var(--md-sys-color-surface-container-high, Field)
383
+ );
384
+ --rc-search-bar-view-color: var(
385
+ --md-search-view-input-text-color,
386
+ var(--md-sys-color-on-surface, FieldText)
387
+ );
388
+ --rc-search-bar-view-radius: var(
389
+ --md-search-view-container-shape,
390
+ var(--md-sys-shape-corner-extra-large, 1.75rem)
391
+ );
392
+ --rc-search-bar-view-shadow: var(--rc-shadow-level3);
393
+ --rc-search-bar-view-padding-block: 0.5rem;
394
+ --rc-search-bar-suggestion-min-block-size: 3rem;
395
+ --rc-search-bar-suggestion-padding-inline: 1rem;
396
+ --rc-search-bar-suggestion-hover-bg: color-mix(
397
+ in srgb,
398
+ var(--md-sys-color-on-surface, CanvasText) 8%,
399
+ transparent
400
+ );
401
+ }
402
+
403
+ .rc-theme-material rc-app-bar,
404
+ :host(.rc-theme-material) rc-app-bar {
405
+ --rc-app-bar-bg: var(--md-top-app-bar-container-color, var(--md-sys-color-surface, Canvas));
406
+ --rc-app-bar-color: var(
407
+ --md-top-app-bar-headline-color,
408
+ var(--md-sys-color-on-surface, CanvasText)
409
+ );
410
+ --rc-app-bar-compact-min-height: var(--md-top-app-bar-container-height, 4rem);
411
+ --rc-app-bar-expanded-padding-block: 1rem;
412
+ --rc-app-bar-padding-inline: 1rem;
413
+ --rc-app-bar-gap: 1rem;
414
+ --rc-app-bar-transition-duration: 200ms;
415
+ --rc-app-bar-scroll-divider: 1px solid var(--md-sys-color-outline-variant, ButtonBorder);
416
+ --rc-app-bar-title-font-size: var(
417
+ --md-top-app-bar-headline-size,
418
+ var(--md-sys-typescale-title-large-size, inherit)
419
+ );
420
+ --rc-app-bar-expanded-title-font-size: var(
421
+ --md-large-top-app-bar-headline-size,
422
+ var(--md-sys-typescale-headline-small-size, inherit)
423
+ );
424
+ }
425
+
426
+ .rc-theme-material rc-menu,
427
+ :host(.rc-theme-material) rc-menu {
428
+ --rc-menu-padding-block: 0.5rem;
429
+ --rc-menu-background: var(
430
+ --md-menu-container-color,
431
+ var(--md-sys-color-surface-container, Canvas)
432
+ );
433
+ --rc-menu-border: 0;
434
+ --rc-menu-radius: var(
435
+ --md-menu-container-shape,
436
+ var(--md-sys-shape-corner-extra-small, 0.25rem)
437
+ );
438
+ --rc-menu-shadow: var(--rc-shadow);
439
+ --rc-menu-color: var(
440
+ --md-menu-item-label-text-color,
441
+ var(--md-sys-color-on-surface, CanvasText)
442
+ );
443
+ --rc-menu-item-min-block-size: 3rem;
444
+ --rc-menu-item-padding-block: 0;
445
+ --rc-menu-item-padding-inline: 0.75rem;
446
+ --rc-menu-item-gap: 0.75rem;
447
+ --rc-menu-item-transition: background-color 150ms ease, color 150ms ease;
448
+ --rc-menu-hover-bg: color-mix(
449
+ in srgb,
450
+ var(--md-sys-color-on-surface, CanvasText) 8%,
451
+ transparent
452
+ );
453
+ --rc-menu-hover-color: var(--md-sys-color-on-surface, CanvasText);
454
+ --rc-menu-active-bg: color-mix(
455
+ in srgb,
456
+ var(--md-sys-color-on-surface, CanvasText) 12%,
457
+ transparent
458
+ );
459
+ --rc-menu-active-color: var(--md-sys-color-on-surface, CanvasText);
460
+ --rc-menu-check-size: 1.5rem;
461
+ --rc-menu-check-color: var(--md-sys-color-primary, Highlight);
462
+ --rc-menu-shortcut-size: var(--md-sys-typescale-label-large-size, 0.875rem);
463
+ --rc-menu-shortcut-color: var(--md-sys-color-on-surface-variant, GrayText);
464
+ --rc-menu-disabled-color: var(--md-sys-color-on-surface, GrayText);
465
+ --rc-menu-disabled-opacity: var(--md-sys-state-disabled-state-layer-opacity, 0.38);
466
+ --rc-menu-separator-border: 1px solid var(--md-sys-color-outline-variant, ButtonBorder);
467
+ --rc-menu-separator-margin-block: 0.5rem;
468
+ --rc-menu-group-label-color: var(--md-sys-color-on-surface-variant, GrayText);
469
+ }
470
+
471
+ .rc-theme-material rc-menu-button,
472
+ :host(.rc-theme-material) rc-menu-button {
473
+ font-family: var(--md-sys-typescale-label-large-font, inherit);
474
+ font-size: var(--md-sys-typescale-label-large-size, 0.875rem);
475
+ font-weight: 500;
476
+ --rc-menu-button-trigger-block-size: 2.5rem;
477
+ --rc-menu-button-trigger-padding-block: 0.625rem;
478
+ --rc-menu-button-trigger-padding-inline: 1.5rem;
479
+ --rc-menu-button-trigger-border: 0;
480
+ --rc-menu-button-trigger-radius: var(--md-sys-shape-corner-full, 999px);
481
+ --rc-menu-button-trigger-background: transparent;
482
+ --rc-menu-button-trigger-color: var(--md-sys-color-primary, ButtonText);
483
+ --rc-menu-button-trigger-transition: background-color 150ms ease, color 150ms ease;
484
+ --rc-menu-button-trigger-hover-background: color-mix(
485
+ in srgb,
486
+ var(--md-sys-color-primary, Highlight) 8%,
487
+ transparent
488
+ );
489
+ --rc-menu-button-trigger-hover-color: var(--md-sys-color-primary, ButtonText);
490
+ --rc-menu-button-trigger-open-background: var(--md-sys-color-secondary-container, ButtonFace);
491
+ --rc-menu-button-trigger-open-color: var(--md-sys-color-on-secondary-container, ButtonText);
492
+ --rc-menu-button-indicator-size: 1.5rem;
493
+ --rc-menu-button-indicator-color: var(--md-sys-color-on-surface-variant, CanvasText);
494
+ }
495
+
496
+ .rc-theme-material rc-menubar,
497
+ :host(.rc-theme-material) rc-menubar {
498
+ --rc-menubar-gap: 0.25rem;
499
+ --rc-menubar-padding-inline: 0.25rem;
500
+ --rc-menubar-padding-block: 0.25rem;
501
+ --rc-menubar-border: 0;
502
+ --rc-menubar-radius: var(--md-sys-shape-corner-large, 1rem);
503
+ --rc-menubar-background: var(--md-sys-color-surface-container, Canvas);
504
+ --rc-menubar-color: var(--md-sys-color-on-surface, CanvasText);
505
+ --rc-menubar-item-block-size: 2.5rem;
506
+ --rc-menubar-item-padding-block: 0.5rem;
507
+ --rc-menubar-item-padding-inline: 1rem;
508
+ --rc-menubar-item-border: 0;
509
+ --rc-menubar-item-radius: var(--md-sys-shape-corner-full, 999px);
510
+ --rc-menubar-item-background: transparent;
511
+ --rc-menubar-item-color: var(--md-sys-color-primary, CanvasText);
512
+ --rc-menubar-item-transition: background-color 150ms ease, color 150ms ease;
513
+ --rc-menubar-item-hover-background: color-mix(
514
+ in srgb,
515
+ var(--md-sys-color-primary, Highlight) 8%,
516
+ transparent
517
+ );
518
+ --rc-menubar-item-hover-color: var(--md-sys-color-primary, CanvasText);
519
+ --rc-menubar-item-open-background: var(--md-sys-color-secondary-container, ButtonFace);
520
+ --rc-menubar-item-open-color: var(--md-sys-color-on-secondary-container, ButtonText);
521
+ }
522
+
523
+ .rc-theme-material rc-toolbar,
524
+ :host(.rc-theme-material) rc-toolbar {
525
+ --rc-toolbar-gap-inline: 0.25rem;
526
+ --rc-toolbar-padding-inline: 0.25rem;
527
+ --rc-toolbar-padding-block: 0.25rem;
528
+ --rc-toolbar-radius: var(--md-sys-shape-corner-large, 1rem);
529
+ --rc-toolbar-vertical-radius: 0;
530
+ }
531
+
532
+ .rc-theme-material rc-textarea,
533
+ :host(.rc-theme-material) rc-textarea {
534
+ --rc-textarea-border: 1px solid var(--md-sys-color-outline, ButtonBorder);
535
+ --rc-textarea-border-radius: var(--md-sys-shape-corner-extra-small, 0.25rem);
536
+ --rc-textarea-background: var(--md-sys-color-surface, Field);
537
+ --rc-textarea-color: var(--md-sys-color-on-surface, FieldText);
538
+ --rc-textarea-focus-outline: 2px solid var(--md-sys-color-primary, Highlight);
539
+ --rc-textarea-caret-color: var(--md-sys-color-primary, FieldText);
540
+ --rc-textarea-gutter-bg: var(--md-sys-color-surface-container, Canvas);
541
+ --rc-textarea-gutter-color: var(--md-sys-color-on-surface-variant, GrayText);
542
+ --rc-textarea-gutter-border: 1px solid var(--md-sys-color-outline-variant, ButtonBorder);
543
+ }
544
+
545
+ .rc-theme-material rc-markdown-editor,
546
+ :host(.rc-theme-material) rc-markdown-editor {
547
+ --rc-markdown-editor-background: var(--md-sys-color-surface, Canvas);
548
+ --rc-markdown-editor-color: var(--md-sys-color-on-surface, CanvasText);
549
+ --rc-markdown-editor-border: 1px solid var(--md-sys-color-outline, ButtonBorder);
550
+ --rc-markdown-editor-focus-outline: 2px solid var(--md-sys-color-primary, Highlight);
551
+ }
552
+
553
+ .rc-theme-material rc-transfer-list,
554
+ :host(.rc-theme-material) rc-transfer-list {
555
+ --rc-transfer-list-gap: 1rem;
556
+ --rc-transfer-list-panel-gap: 0.5rem;
557
+ --rc-transfer-list-listbox-border: 1px solid var(--md-sys-color-outline-variant, ButtonBorder);
558
+ }
559
+
560
+ .rc-theme-material rc-navigation-bar,
561
+ :host(.rc-theme-material) rc-navigation-bar {
562
+ --rc-navigation-bar-bg: var(--md-sys-color-surface-container, Canvas);
563
+ --rc-navigation-bar-color: var(--md-sys-color-on-surface-variant, CanvasText);
564
+ --rc-navigation-bar-item-text-decoration: none;
565
+ --rc-navigation-bar-indicator-bg: var(--md-sys-color-secondary-container, Highlight);
566
+ --rc-navigation-bar-indicator-border: 0;
567
+ }
568
+
569
+ .rc-theme-material rc-navigation-rail,
570
+ :host(.rc-theme-material) rc-navigation-rail {
571
+ --rc-navigation-rail-bg: var(--md-sys-color-surface, Canvas);
572
+ --rc-navigation-rail-color: var(--md-sys-color-on-surface-variant, CanvasText);
573
+ --rc-navigation-rail-item-text-decoration: none;
574
+ --rc-navigation-rail-indicator-bg: var(--md-sys-color-secondary-container, Highlight);
575
+ --rc-navigation-rail-indicator-border: 0;
576
+ }
577
+ .rc-theme-material rc-navigation-rail > rc-fab[slot='header'],
578
+ :host(.rc-theme-material) rc-navigation-rail > rc-fab[slot='header'] {
579
+ --rc-fab-shadow: none;
580
+ --rc-fab-shadow-hover: none;
581
+ --rc-fab-shadow-active: none;
582
+ }
583
+
584
+ .rc-theme-material rc-fab,
585
+ .rc-theme-material rc-fab-menu,
586
+ :host(.rc-theme-material) rc-fab,
587
+ :host(.rc-theme-material) rc-fab-menu {
588
+ --rc-fab-bg: var(--md-fab-container-color, var(--md-sys-color-primary-container, ButtonFace));
589
+ --rc-fab-color: var(--md-fab-icon-color, var(--md-sys-color-on-primary-container, ButtonText));
590
+ --rc-fab-shadow: var(--rc-shadow-level3);
591
+ --rc-fab-shadow-hover: var(--rc-shadow-level4);
592
+ --rc-fab-shadow-active: var(--rc-shadow-level3);
593
+ --rc-fab-radius: var(--md-fab-container-shape, var(--md-sys-shape-corner-large, 1rem));
594
+ --rc-fab-font-family: var(
595
+ --md-fab-label-text-font,
596
+ var(--md-sys-typescale-label-large-font, inherit)
597
+ );
598
+ --rc-fab-font-size: var(
599
+ --md-fab-label-text-size,
600
+ var(--md-sys-typescale-label-large-size, 0.875rem)
601
+ );
602
+ --rc-fab-font-weight: var(
603
+ --md-fab-label-text-weight,
604
+ var(--md-sys-typescale-label-large-weight, 500)
605
+ );
606
+ --rc-fab-letter-spacing: var(
607
+ --md-fab-label-text-tracking,
608
+ var(--md-sys-typescale-label-large-tracking, 0.00625em)
609
+ );
610
+ --rc-fab-focus-ring: var(--rc-focus-ring);
611
+ --rc-fab-focus-ring-offset: var(--rc-focus-ring-offset);
612
+ }
613
+
614
+ .rc-theme-material rc-splitter,
615
+ :host(.rc-theme-material) rc-splitter {
616
+ --rc-splitter-separator-color: var(--md-sys-color-surface-container, Canvas);
617
+ --rc-splitter-keyline: 1px solid var(--md-sys-color-outline-variant, ButtonBorder);
618
+ --rc-splitter-handle-color: var(--md-sys-color-on-surface-variant, ButtonBorder);
619
+ }
620
+
621
+ .rc-theme-material rc-bottom-sheet,
622
+ :host(.rc-theme-material) rc-bottom-sheet {
623
+ --rc-bottom-sheet-bg: var(--md-sys-color-surface, Canvas);
624
+ --rc-bottom-sheet-color: var(--md-sys-color-on-surface, CanvasText);
625
+ --rc-bottom-sheet-radius: var(--md-sys-shape-corner-extra-large, 1.75rem)
626
+ var(--md-sys-shape-corner-extra-large, 1.75rem) 0 0;
627
+ --rc-bottom-sheet-shadow: var(--rc-shadow-level1);
628
+ --rc-bottom-sheet-max-inline-size: 40rem;
629
+ --rc-bottom-sheet-max-block-size: 70dvh;
630
+ --rc-bottom-sheet-scrim: color-mix(in srgb, var(--md-sys-color-scrim, #000) 32%, transparent);
631
+ --rc-bottom-sheet-handle-color: color-mix(
632
+ in srgb,
633
+ var(--md-sys-color-on-surface-variant, GrayText) 40%,
634
+ transparent
635
+ );
636
+ --rc-bottom-sheet-handle-radius: var(--md-sys-shape-corner-full, 999px);
637
+ }
638
+ .rc-theme-material rc-virtual-canvas,
639
+ :host(.rc-theme-material) rc-virtual-canvas {
640
+ --rc-virtual-canvas-scrollbar-thumb-background: var(--md-sys-color-outline, ButtonFace);
641
+ --rc-virtual-canvas-scrollbar-track-background: var(--md-sys-color-surface-container, Canvas);
642
+ --rc-virtual-canvas-scrollbar-button-background: var(
643
+ --md-sys-color-surface-container-high,
644
+ ButtonFace
645
+ );
646
+ }
647
+
648
+ @media (forced-colors: active) {
649
+ .rc-theme-material,
650
+ :host(.rc-theme-material) {
651
+ --rc-shadow-level0: none;
652
+ --rc-shadow-level1: none;
653
+ --rc-shadow-level2: none;
654
+ --rc-shadow-level3: none;
655
+ --rc-shadow: none;
656
+ --rc-disabled-opacity: 1;
657
+ }
658
+
659
+ .rc-theme-material rc-select,
660
+ :host(.rc-theme-material) rc-select,
661
+ .rc-theme-material rc-combobox,
662
+ :host(.rc-theme-material) rc-combobox,
663
+ .rc-theme-material rc-menu,
664
+ :host(.rc-theme-material) rc-menu,
665
+ .rc-theme-material rc-menu-button,
666
+ :host(.rc-theme-material) rc-menu-button {
667
+ --rc-border-color: ButtonBorder;
668
+ --rc-shadow: none;
669
+ }
670
+
671
+ .rc-theme-material rc-fab,
672
+ :host(.rc-theme-material) rc-fab {
673
+ --rc-fab-shadow: none;
674
+ --rc-fab-shadow-hover: none;
675
+ --rc-fab-shadow-active: none;
676
+ }
677
+ }
678
+ }
@@ -0,0 +1,20 @@
1
+ @layer rc-theme-material.components {
2
+ /*
3
+ * Only the group box. Panels inside an accordion take the same
4
+ * `--rc-disclosure-*` mapping as a standalone disclosure, which disclosure.css
5
+ * sets for `rc-accordion` as well, so the panel recipe is not repeated here.
6
+ */
7
+ :where(.rc-theme-material, :host(.rc-theme-material)) rc-accordion {
8
+ --rc-accordion-gap: 0.5rem;
9
+
10
+ /* Laid out before the element upgrades; see disclosure.css. */
11
+ display: grid;
12
+ gap: var(--rc-accordion-gap, 0.5rem);
13
+ border: 0;
14
+ background: transparent;
15
+ }
16
+
17
+ :where(.rc-theme-material, :host(.rc-theme-material)) rc-accordion > rc-disclosure {
18
+ display: block;
19
+ }
20
+ }