@recursica/mui-adapter 0.18.0 → 0.19.0

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 (54) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/SETUP.md +1 -1
  3. package/dist/mui-adapter.cjs +172 -23
  4. package/dist/mui-adapter.cjs.map +1 -1
  5. package/dist/mui-adapter.css +1 -1
  6. package/dist/mui-adapter.js +12963 -4694
  7. package/dist/mui-adapter.js.map +1 -1
  8. package/dist/src/components/Tree/Tree.d.ts +9 -5
  9. package/llms.txt +2 -0
  10. package/package.json +6 -1
  11. package/src/components/Accordion/Accordion.module.css +98 -62
  12. package/src/components/Autocomplete/Autocomplete.module.css +50 -47
  13. package/src/components/Autocomplete/Autocomplete.tsx +2 -2
  14. package/src/components/Avatar/Avatar.module.css +7 -7
  15. package/src/components/Badge/Badge.module.css +8 -8
  16. package/src/components/Button/Button.module.css +25 -43
  17. package/src/components/Card/Card.module.css +3 -3
  18. package/src/components/Checkbox/Checkbox.module.css +57 -16
  19. package/src/components/Chip/Chip.module.css +32 -20
  20. package/src/components/Dropdown/Dropdown.module.css +47 -44
  21. package/src/components/Dropdown/Dropdown.tsx +2 -2
  22. package/src/components/FormControlWrapper/FormControlWrapper.module.css +12 -12
  23. package/src/components/HoverCard/HoverCard.module.css +1 -1
  24. package/src/components/Label/Label.module.css +20 -3
  25. package/src/components/Layer/USAGE.md +50 -0
  26. package/src/components/Link/Link.module.css +18 -71
  27. package/src/components/Loader/Loader.module.css +3 -3
  28. package/src/components/Menu/Menu.module.css +33 -41
  29. package/src/components/Modal/Modal.module.css +27 -11
  30. package/src/components/NumberInput/NumberInput.module.css +39 -37
  31. package/src/components/NumberInput/NumberInput.tsx +2 -2
  32. package/src/components/Pagination/Pagination.module.css +10 -43
  33. package/src/components/Panel/Panel.module.css +3 -3
  34. package/src/components/Radio/Radio.module.css +32 -15
  35. package/src/components/ReadOnlyField/ReadOnlyField.module.css +1 -1
  36. package/src/components/RecursicaThemeProvider/USAGE.md +60 -0
  37. package/src/components/SegmentedControl/SegmentedControl.module.css +37 -29
  38. package/src/components/Slider/Slider.module.css +51 -35
  39. package/src/components/Stepper/Stepper.module.css +3 -3
  40. package/src/components/Switch/Switch.module.css +27 -11
  41. package/src/components/Tabs/Tabs.module.css +309 -166
  42. package/src/components/TextArea/TextArea.module.css +36 -21
  43. package/src/components/TextArea/TextArea.tsx +2 -2
  44. package/src/components/TextField/TextField.module.css +38 -33
  45. package/src/components/TextField/TextField.tsx +2 -2
  46. package/src/components/Timeline/IMPLEMENTATION_NOTES.md +5 -0
  47. package/src/components/Timeline/Timeline.module.css +35 -34
  48. package/src/components/Toast/Toast.module.css +24 -11
  49. package/src/components/Tooltip/Tooltip.module.css +4 -2
  50. package/src/components/Tree/IMPLEMENTATION_NOTES.md +21 -0
  51. package/src/components/Tree/Tree.module.css +204 -39
  52. package/src/components/Tree/Tree.stories.tsx +81 -4
  53. package/src/components/Tree/Tree.tsx +214 -13
  54. package/src/components/Tree/USAGE.md +40 -3
@@ -112,10 +112,10 @@
112
112
 
113
113
  /* Standard unchecked state */
114
114
  background-color: var(
115
- --recursica_ui-kit_components_radio-button_properties_colors_background-unselected
115
+ --recursica_ui-kit_components_radio-button_variants_selection-states_unselected_properties_colors_background-color
116
116
  );
117
117
  border-color: var(
118
- --recursica_ui-kit_components_radio-button_properties_colors_border-unselected
118
+ --recursica_ui-kit_components_radio-button_variants_selection-states_unselected_properties_colors_border-color
119
119
  );
120
120
  transition: all 0.2s ease; /* HARDCODE: consider global transition token */
121
121
  }
@@ -123,24 +123,37 @@
123
123
  /* Checked State */
124
124
  .root .radio:checked {
125
125
  background-color: var(
126
- --recursica_ui-kit_components_radio-button_properties_colors_background-selected
126
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_properties_colors_background-color
127
127
  );
128
128
  border-color: var(
129
- --recursica_ui-kit_components_radio-button_properties_colors_border-selected
129
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_properties_colors_border-color
130
130
  );
131
131
  }
132
132
 
133
- /* Disabled State */
133
+ /* Disabled State (colors now differ per selection state, so each combination is mapped explicitly) */
134
134
  .root .radio:disabled {
135
135
  cursor: not-allowed; /* HARDCODE: disabled state default */
136
+ }
137
+ .root .radio:disabled:not(:checked) {
136
138
  opacity: var(
137
- --recursica_ui-kit_components_radio-button_properties_disabled-opacity
139
+ --recursica_ui-kit_components_radio-button_variants_selection-states_unselected_variants_states_disabled_properties_opacity
138
140
  );
139
141
  background-color: var(
140
- --recursica_ui-kit_components_radio-button_properties_colors_disabled-background
142
+ --recursica_ui-kit_components_radio-button_variants_selection-states_unselected_variants_states_disabled_properties_colors_background-color
141
143
  );
142
144
  border-color: var(
143
- --recursica_ui-kit_components_radio-button_properties_colors_disabled-border
145
+ --recursica_ui-kit_components_radio-button_variants_selection-states_unselected_variants_states_disabled_properties_colors_border-color
146
+ );
147
+ }
148
+ .root .radio:checked:disabled {
149
+ opacity: var(
150
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_variants_states_disabled_properties_opacity
151
+ );
152
+ background-color: var(
153
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_variants_states_disabled_properties_colors_background-color
154
+ );
155
+ border-color: var(
156
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_variants_states_disabled_properties_colors_border-color
144
157
  );
145
158
  }
146
159
 
@@ -151,14 +164,18 @@
151
164
  pointer-events: none;
152
165
  width: var(--recursica_ui-kit_components_radio-button_properties_icon-size);
153
166
  height: var(--recursica_ui-kit_components_radio-button_properties_icon-size);
167
+ }
168
+ /* No icon-color token exists for the unselected state (no icon is visible then) */
169
+ .root .radio:checked + .iconWrapper .icon,
170
+ .root .radio:checked + .icon {
154
171
  color: var(
155
- --recursica_ui-kit_components_radio-button_properties_colors_icon-color
172
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_properties_colors_icon-color
156
173
  );
157
174
  }
158
- .root .radio:disabled + .iconWrapper .icon,
159
- .root .radio:disabled + .icon {
175
+ .root .radio:checked:disabled + .iconWrapper .icon,
176
+ .root .radio:checked:disabled + .icon {
160
177
  color: var(
161
- --recursica_ui-kit_components_radio-button_properties_colors_disabled-icon
178
+ --recursica_ui-kit_components_radio-button_variants_selection-states_selected_variants_states_disabled_properties_colors_icon-color
162
179
  );
163
180
  }
164
181
 
@@ -176,7 +193,7 @@
176
193
  word-wrap: break-word;
177
194
  white-space: normal;
178
195
  color: var(
179
- --recursica_ui-kit_components_radio-button-item_properties_colors_text
196
+ --recursica_ui-kit_components_radio-button-item_properties_colors_text-color
180
197
  );
181
198
  font-family: var(
182
199
  --recursica_ui-kit_components_radio-button-item_properties_text_font-family
@@ -209,7 +226,7 @@
209
226
  --recursica_ui-kit_components_radio-button-item_properties_colors_disabled-text
210
227
  );
211
228
  opacity: var(
212
- --recursica_ui-kit_components_radio-button-item_properties_disabled-opacity
229
+ --recursica_ui-kit_components_radio-button-item_variants_states_disabled_properties_opacity
213
230
  );
214
231
  }
215
232
 
@@ -230,6 +247,6 @@
230
247
  .root .description[data-disabled="true"],
231
248
  .root .error[data-disabled="true"] {
232
249
  opacity: var(
233
- --recursica_ui-kit_components_radio-button-item_properties_disabled-opacity
250
+ --recursica_ui-kit_components_radio-button-item_variants_states_disabled_properties_opacity
234
251
  );
235
252
  }
@@ -45,7 +45,7 @@
45
45
  --recursica_ui-kit_components_read-only-field_properties_text_text-transform
46
46
  );
47
47
  color: var(
48
- --recursica_ui-kit_components_read-only-field_properties_colors_text
48
+ --recursica_ui-kit_components_read-only-field_properties_colors_text-color
49
49
  );
50
50
 
51
51
  min-height: var(
@@ -0,0 +1,60 @@
1
+ # RecursicaThemeProvider - Usage Guide
2
+
3
+ This document describes how to integrate and use `RecursicaThemeProvider` in your projects using `@recursica/mui-adapter`.
4
+
5
+ > [!NOTE] > `RecursicaThemeProvider` is defined once in `@recursica/adapter-common` and re-exported here so it shares the exact same behavior across every Recursica adapter.
6
+
7
+ ---
8
+
9
+ ## 1. Import Reference
10
+
11
+ ```tsx
12
+ import { RecursicaThemeProvider } from "@recursica/mui-adapter";
13
+ ```
14
+
15
+ ---
16
+
17
+ ## 2. Basic Example
18
+
19
+ ```tsx
20
+ import { StyledEngineProvider } from "@mui/material/styles";
21
+ import { RecursicaThemeProvider } from "@recursica/mui-adapter";
22
+
23
+ function App() {
24
+ return (
25
+ <StyledEngineProvider injectFirst>
26
+ <RecursicaThemeProvider theme="light">
27
+ {/* Your App Components */}
28
+ </RecursicaThemeProvider>
29
+ </StyledEngineProvider>
30
+ );
31
+ }
32
+ ```
33
+
34
+ By default, `RecursicaThemeProvider` also wraps `children` in a base [`Layer`](../Layer/USAGE.md) (`layer={0}`), so surface/border/elevation variables resolve immediately — no separate `Layer` needed for the page background.
35
+
36
+ If you want to place the base layer yourself (e.g. to use `contentsOnly`, or to control exactly where layer 0 starts in the tree), opt out with `initLayer0={false}`:
37
+
38
+ ```tsx
39
+ import { RecursicaThemeProvider, Layer } from "@recursica/mui-adapter";
40
+
41
+ <RecursicaThemeProvider theme="light" initLayer0={false}>
42
+ <Layer layer={0}>{/* Your App Components */}</Layer>
43
+ </RecursicaThemeProvider>;
44
+ ```
45
+
46
+ ---
47
+
48
+ ## 3. Design System Integration
49
+
50
+ > [!IMPORTANT]
51
+ >
52
+ > - **Required for setup**: `RecursicaThemeProvider` must wrap your entire application, once, near the root, inside `<StyledEngineProvider injectFirst>`. See [SETUP.md](../../../SETUP.md) for the full setup sequence.
53
+ > - **`initLayer0` (default `true`)**: Automatically wraps `children` in a layer-0 [`Layer`](../Layer/USAGE.md). `RecursicaThemeProvider` itself only sets `data-recursica-theme` (`"light"` or `"dark"`, defaults to `"light"`) on `document.documentElement` — without a `Layer` in the tree (either the automatic one or one you add yourself with `initLayer0={false}`), none of Recursica's surface CSS variables resolve.
54
+ > - **Runtime theme switching**: Changing the `theme` prop re-runs the effect and updates `data-recursica-theme` immediately, so you can drive light/dark switching from application state.
55
+
56
+ ---
57
+
58
+ ## 4. Key Integration Features & Constraints
59
+
60
+ `RecursicaThemeProvider` also wires up the `overStyled` development-mode visual auditing helper (see [OVERSTYLING.md](../../../OVERSTYLING.md)) — `recursica.toggleOverStyled()` in the browser console only works once this provider has mounted.
@@ -4,9 +4,17 @@
4
4
  - Scope prefix .root to enforce Figma tokens over Mantine's inline calculation without using !important
5
5
  */
6
6
 
7
+ /* EXEMPTIONS:
8
+ - segmented-control-item_properties_item_border-radius is ignored because the item border-radius
9
+ is fully governed by the per-selection-state tokens (unselected/selected `properties_border-radius`,
10
+ already applied to `.label` and `.control.Mui-selected` below); this generic, state-agnostic radius
11
+ token has no distinct consumption site without conflicting with those state-specific overrides.
12
+ The Mantine reference adapter exempts this same variable for the same reason. */
13
+ /* recursica-ignore: --recursica_ui-kit_components_segmented-control-item_properties_item_border-radius */
14
+
7
15
  .root {
8
16
  background-color: var(
9
- --recursica_ui-kit_components_segmented-control_properties_colors_background
17
+ --recursica_ui-kit_components_segmented-control_properties_colors_background-color
10
18
  );
11
19
  border: var(
12
20
  --recursica_ui-kit_components_segmented-control_properties_border-size
@@ -41,50 +49,50 @@
41
49
  --recursica_ui-kit_components_segmented-control-item_properties_item_height
42
50
  );
43
51
  border-radius: var(
44
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_border-radius
52
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_border-radius
45
53
  );
46
54
 
47
55
  border: var(
48
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_border-size
56
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_border-size
49
57
  )
50
58
  solid
51
59
  var(
52
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_colors_border-color
60
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_colors_border-color
53
61
  );
54
62
  background-color: var(
55
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_colors_background
63
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_colors_background-color
56
64
  );
57
65
  box-shadow: var(
58
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_elevation
66
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_elevation
59
67
  );
60
68
 
61
69
  font-family: var(
62
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-family
70
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-family
63
71
  );
64
72
  font-size: var(
65
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-size
73
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-size
66
74
  );
67
75
  font-style: var(
68
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-style
76
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-style
69
77
  );
70
78
  font-weight: var(
71
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-weight
79
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-weight
72
80
  );
73
81
  letter-spacing: var(
74
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_letter-spacing
82
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_letter-spacing
75
83
  );
76
84
  line-height: var(
77
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_line-height
85
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_line-height
78
86
  );
79
87
  text-decoration: var(
80
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_text-decoration
88
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_text-decoration
81
89
  );
82
90
  text-transform: var(
83
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_text-transform
91
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_text-transform
84
92
  );
85
93
 
86
94
  color: var(
87
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_colors_text-color
95
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_colors_text-color
88
96
  );
89
97
 
90
98
  display: flex;
@@ -130,50 +138,50 @@
130
138
  /* Indicator mapping (MUI ToggleButton applies .Mui-selected to the button instead of rendering a sliding indicator) */
131
139
  .root .control.Mui-selected {
132
140
  background-color: var(
133
- --recursica_ui-kit_components_segmented-control-item_properties_selected_colors_background
141
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_colors_background-color
134
142
  );
135
143
  border: var(
136
- --recursica_ui-kit_components_segmented-control-item_properties_selected_border-size
144
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_border-size
137
145
  )
138
146
  solid
139
147
  var(
140
- --recursica_ui-kit_components_segmented-control-item_properties_selected_colors_border-color
148
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_colors_border-color
141
149
  );
142
150
  box-shadow: var(
143
- --recursica_ui-kit_components_segmented-control-item_properties_selected_elevation
151
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_elevation
144
152
  );
145
153
  border-radius: var(
146
- --recursica_ui-kit_components_segmented-control-item_properties_selected_border-radius
154
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_border-radius
147
155
  );
148
156
  }
149
157
 
150
158
  /* Selected label text color override */
151
159
  .root .control.Mui-selected .label {
152
160
  color: var(
153
- --recursica_ui-kit_components_segmented-control-item_properties_selected_colors_text-color
161
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_colors_text-color
154
162
  );
155
163
  font-family: var(
156
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-family
164
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-family
157
165
  );
158
166
  font-size: var(
159
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-size
167
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-size
160
168
  );
161
169
  font-style: var(
162
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-style
170
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-style
163
171
  );
164
172
  font-weight: var(
165
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-weight
173
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-weight
166
174
  );
167
175
  letter-spacing: var(
168
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_letter-spacing
176
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_letter-spacing
169
177
  );
170
178
  line-height: var(
171
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_line-height
179
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_line-height
172
180
  );
173
181
  text-decoration: var(
174
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_text-decoration
182
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_text-decoration
175
183
  );
176
184
  text-transform: var(
177
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_text-transform
185
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_text-transform
178
186
  );
179
187
  }
@@ -4,6 +4,10 @@
4
4
  * - flex-grow: 1; flex-shrink: 0; (Layout control structures)
5
5
  * - transform: translateX(-50%); (Mantine's standard step marks positioning alignment offset)
6
6
  * - outline: none; border-style: solid; (Standard focus reset and border outlines)
7
+ * - Focus ring on thumb/input: the token schema no longer provides per-component focus
8
+ * colors for these (only `active` covers track/step-indicator-color). We apply the generic
9
+ * --recursica_brand_states_focus_* ring tokens (border-size/color/margin/blur) as a box-shadow
10
+ * ring instead of a color swap.
7
11
  */
8
12
 
9
13
  /* ==========================================
@@ -47,9 +51,7 @@
47
51
  flex-shrink: 0;
48
52
  width: var(--recursica_ui-kit_components_slider_properties_icon-size);
49
53
  height: var(--recursica_ui-kit_components_slider_properties_icon-size);
50
- color: var(
51
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_icon-color
52
- );
54
+ color: var(--recursica_ui-kit_components_slider_properties_colors_icon-color);
53
55
  }
54
56
 
55
57
  /* ==========================================
@@ -72,7 +74,7 @@
72
74
  --recursica_ui-kit_components_slider_properties_track-border-radius
73
75
  );
74
76
  background-color: var(
75
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_track
77
+ --recursica_ui-kit_components_slider_properties_colors_track
76
78
  );
77
79
  }
78
80
 
@@ -84,7 +86,7 @@
84
86
  --recursica_ui-kit_components_slider_properties_track-border-radius
85
87
  ) !important;
86
88
  background-color: var(
87
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_track-active
89
+ --recursica_ui-kit_components_slider_properties_colors_track-active
88
90
  ) !important;
89
91
  border: none !important;
90
92
  }
@@ -100,7 +102,7 @@
100
102
  --recursica_ui-kit_components_slider_properties_thumb-elevation
101
103
  );
102
104
  background-color: var(
103
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_thumb
105
+ --recursica_ui-kit_components_slider_properties_colors_thumb
104
106
  );
105
107
  border: none;
106
108
  cursor: pointer;
@@ -117,13 +119,13 @@
117
119
  .sliderThumb:focus,
118
120
  .sliderThumb:focus-visible {
119
121
  outline: none;
120
- background-color: var(
121
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_thumb
122
- );
123
- box-shadow: 0 0 0 2px
124
- var(
125
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_track-active
126
- );
122
+ box-shadow:
123
+ var(--recursica_ui-kit_components_slider_properties_thumb-elevation),
124
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
125
+ var(--recursica_brand_states_focus_color),
126
+ 0 0 var(--recursica_brand_states_focus_blur)
127
+ var(--recursica_brand_states_focus_margin)
128
+ var(--recursica_brand_states_focus_color);
127
129
  }
128
130
 
129
131
  .sliderMark {
@@ -138,15 +140,17 @@
138
140
  --recursica_ui-kit_components_slider_properties_step-indicator-border-radius
139
141
  );
140
142
  background-color: var(
141
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_step-indicator-color
143
+ --recursica_ui-kit_components_slider_properties_colors_step-indicator-color
142
144
  );
143
145
  transform: translateX(-50%);
144
146
  border: none;
145
147
  }
146
148
 
147
149
  .sliderMark[data-filled] {
150
+ /* No default-state "-active" step-indicator token exists anymore (only disabled/error define
151
+ one); reusing the active-track color keeps filled marks visually tied to the filled track. */
148
152
  background-color: var(
149
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_step-indicator-color-active
153
+ --recursica_ui-kit_components_slider_properties_colors_track-active
150
154
  );
151
155
  }
152
156
 
@@ -282,17 +286,15 @@
282
286
  );
283
287
  border-style: solid;
284
288
  border-width: var(
285
- --recursica_ui-kit_components_slider_variants_states_default_properties_input-border-size
289
+ --recursica_ui-kit_components_slider_properties_input-border-size
286
290
  );
287
291
  border-color: var(
288
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_input-border-color
292
+ --recursica_ui-kit_components_slider_properties_colors_input-border-color
289
293
  );
290
294
  background-color: var(
291
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_input-background
292
- );
293
- color: var(
294
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_input-text
295
+ --recursica_ui-kit_components_slider_properties_colors_input-background-color
295
296
  );
297
+ color: var(--recursica_ui-kit_components_slider_properties_colors_input-text);
296
298
 
297
299
  font-family: var(
298
300
  --recursica_ui-kit_components_slider_properties_input-text_font-family
@@ -339,18 +341,12 @@
339
341
 
340
342
  .inputField:focus {
341
343
  outline: none;
342
- background-color: var(
343
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_input-background
344
- );
345
- border-color: var(
346
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_input-border-color
347
- );
348
- color: var(
349
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_input-text
350
- );
351
- border-width: var(
352
- --recursica_ui-kit_components_slider_variants_states_focus_properties_input-border-size
353
- );
344
+ box-shadow:
345
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
346
+ var(--recursica_brand_states_focus_color),
347
+ 0 0 var(--recursica_brand_states_focus_blur)
348
+ var(--recursica_brand_states_focus_margin)
349
+ var(--recursica_brand_states_focus_color);
354
350
  }
355
351
 
356
352
  /* Chrome, Safari, Edge, Opera: Hide number spin buttons */
@@ -400,6 +396,23 @@
400
396
  6. State-Specific Overrides (Disabled, Error)
401
397
  ========================================== */
402
398
 
399
+ /* Focus states */
400
+ /* The token schema's `active` state (not a separate `focus` state) now covers track/step-indicator
401
+ color while focus is within the slider; there is no `active` override for the filled mark. */
402
+ .sliderRoot:has(.sliderThumb:focus) .sliderTrack,
403
+ .sliderRoot:focus-within .sliderTrack {
404
+ background-color: var(
405
+ --recursica_ui-kit_components_slider_variants_states_active_properties_colors_track
406
+ );
407
+ }
408
+
409
+ .sliderRoot:has(.sliderThumb:focus) .sliderMark,
410
+ .sliderRoot:focus-within .sliderMark {
411
+ background-color: var(
412
+ --recursica_ui-kit_components_slider_variants_states_active_properties_colors_step-indicator-color
413
+ );
414
+ }
415
+
403
416
  /* Disabled state */
404
417
  .sliderContainer[data-disabled="true"] .iconWrapper {
405
418
  color: var(
@@ -441,12 +454,15 @@
441
454
 
442
455
  .sliderContainer[data-disabled="true"] {
443
456
  color: var(--form-field-disabled-text);
457
+ opacity: var(
458
+ --recursica_ui-kit_components_slider_variants_states_disabled_properties_opacity
459
+ );
444
460
  }
445
461
 
446
462
  .inputField:disabled {
447
463
  cursor: not-allowed;
448
464
  background-color: var(
449
- --recursica_ui-kit_components_slider_variants_states_disabled_properties_colors_input-background
465
+ --recursica_ui-kit_components_slider_variants_states_disabled_properties_colors_input-background-color
450
466
  );
451
467
  border-color: var(
452
468
  --recursica_ui-kit_components_slider_variants_states_disabled_properties_colors_input-border-color
@@ -498,7 +514,7 @@
498
514
 
499
515
  .inputField[data-error="true"] {
500
516
  background-color: var(
501
- --recursica_ui-kit_components_slider_variants_states_error_properties_colors_input-background
517
+ --recursica_ui-kit_components_slider_variants_states_error_properties_colors_input-background-color
502
518
  );
503
519
  border-color: var(
504
520
  --recursica_ui-kit_components_slider_variants_states_error_properties_colors_input-border-color
@@ -267,7 +267,7 @@
267
267
  /* Font details are implicitly mapped by sizes, but colors map to states */
268
268
  /* Upcoming State (Pending) - Default */
269
269
  background-color: var(
270
- --recursica_ui-kit_components_stepper_properties_colors_upcoming-indicator-background
270
+ --recursica_ui-kit_components_stepper_properties_colors_upcoming-indicator-background-color
271
271
  );
272
272
  border-color: var(
273
273
  --recursica_ui-kit_components_stepper_properties_colors_upcoming-indicator-border-color
@@ -281,7 +281,7 @@
281
281
  .root .stepIcon.Mui-completed,
282
282
  .root .stepIcon:has(.Mui-completed) {
283
283
  background-color: var(
284
- --recursica_ui-kit_components_stepper_properties_colors_completed-indicator-background
284
+ --recursica_ui-kit_components_stepper_properties_colors_completed-indicator-background-color
285
285
  );
286
286
  border-color: var(
287
287
  --recursica_ui-kit_components_stepper_properties_colors_completed-indicator-border-color
@@ -316,7 +316,7 @@
316
316
  .root .stepIcon.Mui-active,
317
317
  .root .stepIcon:has(.Mui-active) {
318
318
  background-color: var(
319
- --recursica_ui-kit_components_stepper_properties_colors_current-indicator-background
319
+ --recursica_ui-kit_components_stepper_properties_colors_current-indicator-background-color
320
320
  );
321
321
  border-color: var(
322
322
  --recursica_ui-kit_components_stepper_properties_colors_current-indicator-border-color
@@ -25,8 +25,17 @@
25
25
 
26
26
  .root:has(input:disabled) {
27
27
  cursor: not-allowed;
28
+ }
29
+
30
+ /* Track/thumb dim per selection state; label dims via its own (single, state-agnostic) token */
31
+ .root:has(input:checked:disabled) .track {
32
+ opacity: var(
33
+ --recursica_ui-kit_components_switch_variants_selection-states_selected_variants_states_disabled_properties_opacity
34
+ );
35
+ }
36
+ .root:has(input:disabled):not(:has(input:checked)) .track {
28
37
  opacity: var(
29
- --recursica_ui-kit_components_switch-item_properties_disabled-opacity
38
+ --recursica_ui-kit_components_switch_variants_selection-states_unselected_variants_states_disabled_properties_opacity
30
39
  );
31
40
  }
32
41
 
@@ -39,12 +48,12 @@
39
48
  /* HARDCODE: disable native hover color transitions applied by Mantine */
40
49
  .track:hover {
41
50
  background-color: var(
42
- --recursica_ui-kit_components_switch_properties_colors_track-unselected
51
+ --recursica_ui-kit_components_switch_variants_selection-states_unselected_properties_colors_track-color
43
52
  );
44
53
  }
45
54
  .root input:checked + .track:hover {
46
55
  background-color: var(
47
- --recursica_ui-kit_components_switch_properties_colors_track-selected
56
+ --recursica_ui-kit_components_switch_variants_selection-states_selected_properties_colors_track-color
48
57
  );
49
58
  }
50
59
 
@@ -55,7 +64,7 @@
55
64
  --recursica_ui-kit_components_switch_properties_track-border-radius
56
65
  );
57
66
  background-color: var(
58
- --recursica_ui-kit_components_switch_properties_colors_track-unselected
67
+ --recursica_ui-kit_components_switch_variants_selection-states_unselected_properties_colors_track-color
59
68
  );
60
69
  box-shadow: var(
61
70
  --recursica_ui-kit_components_switch_properties_track-elevation
@@ -79,7 +88,7 @@
79
88
 
80
89
  .root input:checked + .track {
81
90
  background-color: var(
82
- --recursica_ui-kit_components_switch_properties_colors_track-selected
91
+ --recursica_ui-kit_components_switch_variants_selection-states_selected_properties_colors_track-color
83
92
  );
84
93
  border-color: transparent;
85
94
  }
@@ -91,7 +100,7 @@
91
100
  --recursica_ui-kit_components_switch_properties_thumb-border-radius
92
101
  );
93
102
  background-color: var(
94
- --recursica_ui-kit_components_switch_properties_colors_thumb-unselected
103
+ --recursica_ui-kit_components_switch_variants_selection-states_unselected_properties_colors_thumb-color
95
104
  );
96
105
  box-shadow: var(
97
106
  --recursica_ui-kit_components_switch_properties_thumb-elevation
@@ -103,7 +112,7 @@
103
112
 
104
113
  .root input:checked + .track .thumb {
105
114
  background-color: var(
106
- --recursica_ui-kit_components_switch_properties_colors_thumb-selected
115
+ --recursica_ui-kit_components_switch_variants_selection-states_selected_properties_colors_thumb-color
107
116
  );
108
117
  }
109
118
 
@@ -114,6 +123,11 @@
114
123
  --recursica_ui-kit_components_switch-item_properties_label-max-width
115
124
  );
116
125
  }
126
+ .root:has(input:disabled) .labelWrapper {
127
+ opacity: var(
128
+ --recursica_ui-kit_components_switch-item_variants_states_disabled_properties_opacity
129
+ );
130
+ }
117
131
 
118
132
  .label {
119
133
  font-family: var(
@@ -140,7 +154,9 @@
140
154
  text-decoration: var(
141
155
  --recursica_ui-kit_components_switch-item_properties_text_text-decoration
142
156
  );
143
- color: var(--recursica_ui-kit_components_switch-item_properties_colors_text);
157
+ color: var(
158
+ --recursica_ui-kit_components_switch-item_properties_colors_text-color
159
+ );
144
160
  cursor: inherit;
145
161
  }
146
162
 
@@ -167,7 +183,7 @@
167
183
  .description[data-disabled="true"],
168
184
  .error[data-disabled="true"] {
169
185
  opacity: var(
170
- --recursica_ui-kit_components_switch-item_properties_disabled-opacity
186
+ --recursica_ui-kit_components_switch-item_variants_states_disabled_properties_opacity
171
187
  );
172
188
  }
173
189
 
@@ -195,7 +211,7 @@
195
211
  opacity: 0;
196
212
  transform: scale(0.5);
197
213
  color: var(
198
- --recursica_ui-kit_components_switch_properties_colors_icon-selected
214
+ --recursica_ui-kit_components_switch_variants_selection-states_selected_properties_colors_icon-color
199
215
  );
200
216
  }
201
217
 
@@ -203,7 +219,7 @@
203
219
  opacity: 1;
204
220
  transform: scale(1);
205
221
  color: var(
206
- --recursica_ui-kit_components_switch_properties_colors_icon-unselected
222
+ --recursica_ui-kit_components_switch_variants_selection-states_unselected_properties_colors_icon-color
207
223
  );
208
224
  }
209
225