@recursica/mantine-adapter 0.35.1 → 0.36.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 (57) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/mantine-adapter.cjs +2 -2
  3. package/dist/mantine-adapter.cjs.map +1 -1
  4. package/dist/mantine-adapter.css +1 -1
  5. package/dist/mantine-adapter.js +1104 -1023
  6. package/dist/mantine-adapter.js.map +1 -1
  7. package/dist/src/components/Tree/Tree.d.ts +9 -5
  8. package/package.json +1 -1
  9. package/src/components/Accordion/Accordion.module.css +123 -62
  10. package/src/components/Accordion/Accordion.stories.tsx +65 -33
  11. package/src/components/Accordion/Accordion.tsx +1 -0
  12. package/src/components/AutoComplete/AutoComplete.module.css +50 -49
  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 +22 -89
  17. package/src/components/Card/Card.module.css +3 -3
  18. package/src/components/Checkbox/Checkbox.module.css +54 -15
  19. package/src/components/Chip/Chip.module.css +27 -26
  20. package/src/components/DatePicker/DatePicker.module.css +25 -30
  21. package/src/components/Dropdown/Dropdown.module.css +47 -44
  22. package/src/components/Dropdown/Dropdown.tsx +2 -2
  23. package/src/components/FormControlWrapper/FormControlWrapper.module.css +12 -12
  24. package/src/components/HoverCard/HoverCard.module.css +1 -1
  25. package/src/components/Label/Label.module.css +7 -3
  26. package/src/components/Link/IMPLEMENTATION_NOTES.md +2 -9
  27. package/src/components/Link/Link.module.css +15 -76
  28. package/src/components/Link/USAGE.md +2 -9
  29. package/src/components/Loader/Loader.module.css +3 -3
  30. package/src/components/Menu/Menu.module.css +34 -41
  31. package/src/components/Modal/Modal.module.css +27 -11
  32. package/src/components/NumberInput/NumberInput.module.css +39 -37
  33. package/src/components/NumberInput/NumberInput.tsx +2 -2
  34. package/src/components/Pagination/Pagination.module.css +10 -43
  35. package/src/components/Panel/Panel.module.css +3 -3
  36. package/src/components/Popover/Popover.module.css +1 -1
  37. package/src/components/Radio/Radio.module.css +31 -14
  38. package/src/components/ReadOnlyField/ReadOnlyField.module.css +1 -1
  39. package/src/components/SegmentedControl/SegmentedControl.module.css +29 -29
  40. package/src/components/Slider/IMPLEMENTATION_NOTES.md +9 -0
  41. package/src/components/Slider/Slider.module.css +44 -48
  42. package/src/components/Stepper/Stepper.module.css +3 -3
  43. package/src/components/Switch/Switch.module.css +26 -10
  44. package/src/components/Table/Table.module.css +53 -21
  45. package/src/components/Tabs/Tabs.module.css +309 -170
  46. package/src/components/TextArea/TextArea.module.css +36 -21
  47. package/src/components/TextArea/TextArea.tsx +2 -2
  48. package/src/components/TextField/TextField.module.css +38 -35
  49. package/src/components/TextField/TextField.tsx +2 -2
  50. package/src/components/Timeline/Timeline.module.css +41 -34
  51. package/src/components/Toast/Toast.module.css +19 -11
  52. package/src/components/Tooltip/Tooltip.module.css +4 -2
  53. package/src/components/Tree/IMPLEMENTATION_NOTES.md +17 -0
  54. package/src/components/Tree/Tree.module.css +173 -39
  55. package/src/components/Tree/Tree.stories.tsx +81 -4
  56. package/src/components/Tree/Tree.tsx +117 -15
  57. package/src/components/Tree/USAGE.md +36 -3
@@ -145,13 +145,13 @@
145
145
  --recursica_ui-kit_components_button_variants_styles_outline_properties_elevation
146
146
  );
147
147
  background-color: var(
148
- --recursica_ui-kit_components_button_variants_styles_outline_properties_colors_background
148
+ --recursica_ui-kit_components_button_variants_styles_outline_properties_colors_background-color
149
149
  );
150
150
  border-color: var(
151
151
  --recursica_ui-kit_components_button_variants_styles_outline_properties_colors_border-color
152
152
  );
153
153
  color: var(
154
- --recursica_ui-kit_components_button_variants_styles_outline_properties_colors_text
154
+ --recursica_ui-kit_components_button_variants_styles_outline_properties_colors_text-color
155
155
  );
156
156
  }
157
157
 
@@ -160,13 +160,8 @@
160
160
  cursor: not-allowed;
161
161
  }
162
162
 
163
- .control:hover:not(:disabled) {
164
- color: var(
165
- --recursica_ui-kit_components_button_variants_styles_outline_properties_colors_text-hover
166
- );
167
- }
168
-
169
- /* Hover Overlay */
163
+ /* Hover Overlay: no per-variant hover-color/hover-opacity tokens exist anymore; use the
164
+ generic overlay tokens shared across components (same as Button). */
170
165
  .control::after {
171
166
  content: "";
172
167
  position: absolute;
@@ -176,15 +171,11 @@
176
171
  pointer-events: none;
177
172
  transition: opacity 150ms ease;
178
173
  opacity: 0;
179
- background-color: var(
180
- --recursica_ui-kit_components_button_variants_sizes_default_properties_hover-color
181
- );
174
+ background-color: var(--recursica_brand_states_hover_color);
182
175
  }
183
176
 
184
177
  .control:hover:not(:disabled)::after {
185
- opacity: var(
186
- --recursica_ui-kit_components_button_variants_sizes_default_properties_hover-opacity
187
- );
178
+ opacity: var(--recursica_brand_states_hover_opacity);
188
179
  }
189
180
 
190
181
  /* Active Style: Solid */
@@ -196,19 +187,13 @@
196
187
  --recursica_ui-kit_components_button_variants_styles_solid_properties_elevation
197
188
  );
198
189
  background-color: var(
199
- --recursica_ui-kit_components_button_variants_styles_solid_properties_colors_background
190
+ --recursica_ui-kit_components_button_variants_styles_solid_properties_colors_background-color
200
191
  );
201
192
  border-color: var(
202
193
  --recursica_ui-kit_components_button_variants_styles_solid_properties_colors_border-color
203
194
  );
204
195
  color: var(
205
- --recursica_ui-kit_components_button_variants_styles_solid_properties_colors_text
206
- );
207
- }
208
-
209
- .control[data-active]:hover:not(:disabled) {
210
- color: var(
211
- --recursica_ui-kit_components_button_variants_styles_solid_properties_colors_text-hover
196
+ --recursica_ui-kit_components_button_variants_styles_solid_properties_colors_text-color
212
197
  );
213
198
  }
214
199
 
@@ -221,13 +206,13 @@
221
206
  --recursica_ui-kit_components_button_variants_styles_text_properties_elevation
222
207
  );
223
208
  background-color: var(
224
- --recursica_ui-kit_components_button_variants_styles_text_properties_colors_background
209
+ --recursica_ui-kit_components_button_variants_styles_text_properties_colors_background-color
225
210
  );
226
211
  border-color: var(
227
212
  --recursica_ui-kit_components_button_variants_styles_text_properties_colors_border-color
228
213
  );
229
214
  color: var(
230
- --recursica_ui-kit_components_button_variants_styles_text_properties_colors_text
215
+ --recursica_ui-kit_components_button_variants_styles_text_properties_colors_text-color
231
216
  );
232
217
 
233
218
  /* Also explicitly inherit navigation sizes incase they differ from pages */
@@ -246,24 +231,6 @@
246
231
  );
247
232
  }
248
233
 
249
- .control[data-variant="text"]:hover:not(:disabled) {
250
- color: var(
251
- --recursica_ui-kit_components_button_variants_styles_text_properties_colors_text-hover
252
- );
253
- }
254
-
255
- /* Hover Overlay for Navigation */
256
- .control[data-variant="text"]::after {
257
- background-color: var(
258
- --recursica_ui-kit_components_button_variants_sizes_default_properties_hover-color
259
- );
260
- }
261
- .control[data-variant="text"]:hover:not(:disabled)::after {
262
- opacity: var(
263
- --recursica_ui-kit_components_button_variants_sizes_default_properties_hover-opacity
264
- );
265
- }
266
-
267
234
  /* Dots */
268
235
  .dots {
269
236
  display: inline-flex;
@@ -12,7 +12,7 @@
12
12
 
13
13
  .content {
14
14
  background-color: var(
15
- --recursica_ui-kit_components_panel_properties_colors_background
15
+ --recursica_ui-kit_components_panel_properties_colors_background-color
16
16
  );
17
17
  border-style: solid;
18
18
  border-width: var(--recursica_ui-kit_components_panel_properties_border-size);
@@ -43,7 +43,7 @@
43
43
 
44
44
  .header {
45
45
  background-color: var(
46
- --recursica_ui-kit_components_panel_properties_colors_header-footer-background
46
+ --recursica_ui-kit_components_panel_properties_colors_header-background-color
47
47
  );
48
48
  padding: var(
49
49
  --recursica_ui-kit_components_panel_properties_header-footer-vertical-padding
@@ -154,7 +154,7 @@
154
154
 
155
155
  .footer {
156
156
  background-color: var(
157
- --recursica_ui-kit_components_panel_properties_colors_header-footer-background
157
+ --recursica_ui-kit_components_panel_properties_colors_footer-background-color
158
158
  );
159
159
  padding: var(
160
160
  --recursica_ui-kit_components_panel_properties_header-footer-vertical-padding
@@ -14,7 +14,7 @@
14
14
 
15
15
  .dropdown {
16
16
  background-color: var(
17
- --recursica_ui-kit_components_hover-card-popover_properties_colors_background
17
+ --recursica_ui-kit_components_hover-card-popover_properties_colors_background-color
18
18
  );
19
19
  border-style: solid; /* HARDCODE: Mantine Paper does not set border-style natively */
20
20
  border-width: var(
@@ -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,6 +226,6 @@
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
  }
@@ -46,7 +46,7 @@
46
46
  --recursica_ui-kit_components_read-only-field_properties_text_text-transform
47
47
  );
48
48
  color: var(
49
- --recursica_ui-kit_components_read-only-field_properties_colors_text
49
+ --recursica_ui-kit_components_read-only-field_properties_colors_text-color
50
50
  );
51
51
  min-height: var(
52
52
  --recursica_ui-kit_components_read-only-field_properties_min-height
@@ -7,7 +7,7 @@
7
7
 
8
8
  .root {
9
9
  background-color: var(
10
- --recursica_ui-kit_components_segmented-control_properties_colors_background
10
+ --recursica_ui-kit_components_segmented-control_properties_colors_background-color
11
11
  );
12
12
  border: var(
13
13
  --recursica_ui-kit_components_segmented-control_properties_border-size
@@ -42,50 +42,50 @@
42
42
  --recursica_ui-kit_components_segmented-control-item_properties_item_height
43
43
  );
44
44
  border-radius: var(
45
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_border-radius
45
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_border-radius
46
46
  );
47
47
 
48
48
  border: var(
49
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_border-size
49
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_border-size
50
50
  )
51
51
  solid
52
52
  var(
53
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_colors_border-color
53
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_colors_border-color
54
54
  );
55
55
  background-color: var(
56
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_colors_background
56
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_colors_background-color
57
57
  );
58
58
  box-shadow: var(
59
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_elevation
59
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_elevation
60
60
  );
61
61
 
62
62
  font-family: var(
63
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-family
63
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-family
64
64
  );
65
65
  font-size: var(
66
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-size
66
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-size
67
67
  );
68
68
  font-style: var(
69
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-style
69
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-style
70
70
  );
71
71
  font-weight: var(
72
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_font-weight
72
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_font-weight
73
73
  );
74
74
  letter-spacing: var(
75
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_letter-spacing
75
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_letter-spacing
76
76
  );
77
77
  line-height: var(
78
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_line-height
78
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_line-height
79
79
  );
80
80
  text-decoration: var(
81
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_text-decoration
81
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_text-decoration
82
82
  );
83
83
  text-transform: var(
84
- --recursica_ui-kit_components_segmented-control-item_properties_unselected-text_text-transform
84
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_text_text-transform
85
85
  );
86
86
 
87
87
  color: var(
88
- --recursica_ui-kit_components_segmented-control-item_properties_unselected_colors_text-color
88
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_unselected_properties_colors_text-color
89
89
  );
90
90
 
91
91
  display: flex;
@@ -131,50 +131,50 @@
131
131
  /* Indicator (the moving selected block) */
132
132
  .root .indicator {
133
133
  background-color: var(
134
- --recursica_ui-kit_components_segmented-control-item_properties_selected_colors_background
134
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_colors_background-color
135
135
  );
136
136
  border: var(
137
- --recursica_ui-kit_components_segmented-control-item_properties_selected_border-size
137
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_border-size
138
138
  )
139
139
  solid
140
140
  var(
141
- --recursica_ui-kit_components_segmented-control-item_properties_selected_colors_border-color
141
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_colors_border-color
142
142
  );
143
143
  box-shadow: var(
144
- --recursica_ui-kit_components_segmented-control-item_properties_selected_elevation
144
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_elevation
145
145
  );
146
146
  border-radius: var(
147
- --recursica_ui-kit_components_segmented-control-item_properties_selected_border-radius
147
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_border-radius
148
148
  );
149
149
  }
150
150
 
151
151
  /* Selected label text color override */
152
152
  .root .control[data-active] .label {
153
153
  color: var(
154
- --recursica_ui-kit_components_segmented-control-item_properties_selected_colors_text-color
154
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_colors_text-color
155
155
  );
156
156
  font-family: var(
157
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-family
157
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-family
158
158
  );
159
159
  font-size: var(
160
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-size
160
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-size
161
161
  );
162
162
  font-style: var(
163
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-style
163
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-style
164
164
  );
165
165
  font-weight: var(
166
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_font-weight
166
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_font-weight
167
167
  );
168
168
  letter-spacing: var(
169
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_letter-spacing
169
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_letter-spacing
170
170
  );
171
171
  line-height: var(
172
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_line-height
172
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_line-height
173
173
  );
174
174
  text-decoration: var(
175
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_text-decoration
175
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_text-decoration
176
176
  );
177
177
  text-transform: var(
178
- --recursica_ui-kit_components_segmented-control-item_properties_selected-text_text-transform
178
+ --recursica_ui-kit_components_segmented-control-item_variants_selection-states_selected_properties_text_text-transform
179
179
  );
180
180
  }
@@ -47,3 +47,12 @@ This document contains specific design decisions, architectural constraints, and
47
47
  - If `showInput` is enabled, the floating `.currentValue` is hidden since the active value is already displayed and editable within the adjacent numeric text input, avoiding visual redundancy.
48
48
  - In `side-by-side` form layouts, the `.currentValue` is positioned inline (static positioning) to the right of the max label rather than floating above it, centered vertically with the max label and aligned right to the container. This uses CSS flexbox ordering (`order: 2` for `.currentValue` and `order: 1` for `.minMaxGuide`) to visually swap their positions while preserving clean, semantic DOM ordering.
49
49
  - To ensure perfect, pixel-perfect vertical track alignment between sliders that show numeric text inputs (`showInput={true}`) and sliders that display the active inline value (`showInput={false}`), the `.currentValue` element is globally given a width equal to the input width (`var(--recursica_ui-kit_components_slider_properties_input-width)`) and right-aligned (`text-align: right`). In `side-by-side` layouts, `.rightGuideContainer`'s flex gap is also matched to the horizontal input-to-track gap (`var(--recursica_ui-kit_components_slider_properties_input-gap)`), making the horizontal space occupied by the rightmost elements exactly identical in both component modes.
50
+
51
+ ## 6. Focus Treatment (Generic State Tokens)
52
+
53
+ **Decision:** The token schema dropped the component-level `focus` state entirely. Only a narrower `active` state remains, covering `colors_track`/`colors_step-indicator-color` for the track/mark while any part of the slider has focus-within.
54
+ **Implementation:**
55
+
56
+ - Thumb, icon, and numeric input no longer have per-component focus colors. Instead they get a focus _ring_ built from the generic `--recursica_brand_states_focus_{border-size,color,margin,blur}` tokens, applied as a `box-shadow` (crisp inner ring at `border-size` plus a soft outer glow using `blur`/`margin`) rather than a color swap.
57
+ - The thumb's focus box-shadow layers the ring on top of its existing `thumb-elevation` shadow rather than replacing it.
58
+ - `.sliderMark[data-filled]` has no default-state "-active" step-indicator token anymore (only `disabled`/`error` define one); it reuses `colors_track-active` so filled marks stay visually tied to the filled portion of the track. Worth a design review if a distinct filled-mark color is expected.
@@ -4,8 +4,11 @@
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/icon/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
- /* recursica-ignore: --recursica_ui-kit_components_slider_properties_input-border-size */
9
12
 
10
13
  /* ==========================================
11
14
  1. Baseline, Reset & Layout Overrides
@@ -48,9 +51,7 @@
48
51
  flex-shrink: 0;
49
52
  width: var(--recursica_ui-kit_components_slider_properties_icon-size);
50
53
  height: var(--recursica_ui-kit_components_slider_properties_icon-size);
51
- color: var(
52
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_icon-color
53
- );
54
+ color: var(--recursica_ui-kit_components_slider_properties_colors_icon-color);
54
55
  }
55
56
 
56
57
  /* ==========================================
@@ -68,13 +69,13 @@
68
69
  --recursica_ui-kit_components_slider_properties_track-border-radius
69
70
  );
70
71
  background-color: var(
71
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_track
72
+ --recursica_ui-kit_components_slider_properties_colors_track
72
73
  );
73
74
  }
74
75
 
75
76
  .sliderBar {
76
77
  background-color: var(
77
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_track-active
78
+ --recursica_ui-kit_components_slider_properties_colors_track-active
78
79
  );
79
80
  }
80
81
 
@@ -89,7 +90,7 @@
89
90
  --recursica_ui-kit_components_slider_properties_thumb-elevation
90
91
  );
91
92
  background-color: var(
92
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_thumb
93
+ --recursica_ui-kit_components_slider_properties_colors_thumb
93
94
  );
94
95
  border: none;
95
96
  cursor: pointer;
@@ -99,13 +100,13 @@
99
100
  .sliderThumb:focus,
100
101
  .sliderThumb:focus-visible {
101
102
  outline: none;
102
- background-color: var(
103
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_thumb
104
- );
105
- box-shadow: 0 0 0 2px
106
- var(
107
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_track-active
108
- );
103
+ box-shadow:
104
+ var(--recursica_ui-kit_components_slider_properties_thumb-elevation),
105
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
106
+ var(--recursica_brand_states_focus_color),
107
+ 0 0 var(--recursica_brand_states_focus_blur)
108
+ var(--recursica_brand_states_focus_margin)
109
+ var(--recursica_brand_states_focus_color);
109
110
  }
110
111
 
111
112
  .sliderMark {
@@ -120,15 +121,17 @@
120
121
  --recursica_ui-kit_components_slider_properties_step-indicator-border-radius
121
122
  );
122
123
  background-color: var(
123
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_step-indicator-color
124
+ --recursica_ui-kit_components_slider_properties_colors_step-indicator-color
124
125
  );
125
126
  transform: translateX(-50%);
126
127
  border: none;
127
128
  }
128
129
 
129
130
  .sliderMark[data-filled] {
131
+ /* No default-state "-active" step-indicator token exists anymore (only disabled/error define
132
+ one); reusing the active-track color keeps filled marks visually tied to the filled track. */
130
133
  background-color: var(
131
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_step-indicator-color-active
134
+ --recursica_ui-kit_components_slider_properties_colors_track-active
132
135
  );
133
136
  }
134
137
 
@@ -239,17 +242,15 @@
239
242
  );
240
243
  border-style: solid;
241
244
  border-width: var(
242
- --recursica_ui-kit_components_slider_variants_states_default_properties_input-border-size
245
+ --recursica_ui-kit_components_slider_properties_input-border-size
243
246
  );
244
247
  border-color: var(
245
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_input-border-color
248
+ --recursica_ui-kit_components_slider_properties_colors_input-border-color
246
249
  );
247
250
  background-color: var(
248
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_input-background
249
- );
250
- color: var(
251
- --recursica_ui-kit_components_slider_variants_states_default_properties_colors_input-text
251
+ --recursica_ui-kit_components_slider_properties_colors_input-background-color
252
252
  );
253
+ color: var(--recursica_ui-kit_components_slider_properties_colors_input-text);
253
254
 
254
255
  font-family: var(
255
256
  --recursica_ui-kit_components_slider_properties_input-text_font-family
@@ -296,18 +297,12 @@
296
297
 
297
298
  .inputField:focus {
298
299
  outline: none;
299
- background-color: var(
300
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_input-background
301
- );
302
- border-color: var(
303
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_input-border-color
304
- );
305
- color: var(
306
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_input-text
307
- );
308
- border-width: var(
309
- --recursica_ui-kit_components_slider_variants_states_focus_properties_input-border-size
310
- );
300
+ box-shadow:
301
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
302
+ var(--recursica_brand_states_focus_color),
303
+ 0 0 var(--recursica_brand_states_focus_blur)
304
+ var(--recursica_brand_states_focus_margin)
305
+ var(--recursica_brand_states_focus_color);
311
306
  }
312
307
 
313
308
  /* Chrome, Safari, Edge, Opera: Hide number spin buttons */
@@ -358,31 +353,29 @@
358
353
  ========================================== */
359
354
 
360
355
  /* Focus states */
356
+ /* The token schema's `active` state (not a separate `focus` state) now covers track/step-indicator
357
+ color while focus is within the slider; there is no `active` override for the filled mark. */
361
358
  .sliderRoot:has(.sliderThumb:focus) .sliderTrack,
362
359
  .sliderRoot:focus-within .sliderTrack {
363
360
  background-color: var(
364
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_track
361
+ --recursica_ui-kit_components_slider_variants_states_active_properties_colors_track
365
362
  );
366
363
  }
367
364
 
368
365
  .sliderRoot:has(.sliderThumb:focus) .sliderMark,
369
366
  .sliderRoot:focus-within .sliderMark {
370
367
  background-color: var(
371
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_step-indicator-color
372
- );
373
- }
374
-
375
- .sliderRoot:has(.sliderThumb:focus) .sliderMark[data-filled],
376
- .sliderRoot:focus-within .sliderMark[data-filled] {
377
- background-color: var(
378
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_step-indicator-color-active
368
+ --recursica_ui-kit_components_slider_variants_states_active_properties_colors_step-indicator-color
379
369
  );
380
370
  }
381
371
 
382
372
  .sliderContainer:focus-within .iconWrapper {
383
- color: var(
384
- --recursica_ui-kit_components_slider_variants_states_focus_properties_colors_icon-color
385
- );
373
+ box-shadow:
374
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
375
+ var(--recursica_brand_states_focus_color),
376
+ 0 0 var(--recursica_brand_states_focus_blur)
377
+ var(--recursica_brand_states_focus_margin)
378
+ var(--recursica_brand_states_focus_color);
386
379
  }
387
380
 
388
381
  /* Disabled state */
@@ -426,12 +419,15 @@
426
419
 
427
420
  .sliderContainer[data-disabled="true"] {
428
421
  color: var(--form-field-disabled-text);
422
+ opacity: var(
423
+ --recursica_ui-kit_components_slider_variants_states_disabled_properties_opacity
424
+ );
429
425
  }
430
426
 
431
427
  .inputField:disabled {
432
428
  cursor: not-allowed;
433
429
  background-color: var(
434
- --recursica_ui-kit_components_slider_variants_states_disabled_properties_colors_input-background
430
+ --recursica_ui-kit_components_slider_variants_states_disabled_properties_colors_input-background-color
435
431
  );
436
432
  border-color: var(
437
433
  --recursica_ui-kit_components_slider_variants_states_disabled_properties_colors_input-border-color
@@ -483,7 +479,7 @@
483
479
 
484
480
  .inputField[data-error="true"] {
485
481
  background-color: var(
486
- --recursica_ui-kit_components_slider_variants_states_error_properties_colors_input-background
482
+ --recursica_ui-kit_components_slider_variants_states_error_properties_colors_input-background-color
487
483
  );
488
484
  border-color: var(
489
485
  --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
@@ -280,7 +280,7 @@
280
280
  /* Completed State */
281
281
  .root .stepIcon[data-completed] {
282
282
  background-color: var(
283
- --recursica_ui-kit_components_stepper_properties_colors_completed-indicator-background
283
+ --recursica_ui-kit_components_stepper_properties_colors_completed-indicator-background-color
284
284
  );
285
285
  border-color: var(
286
286
  --recursica_ui-kit_components_stepper_properties_colors_completed-indicator-border-color
@@ -313,7 +313,7 @@
313
313
  /* Current State (Progressing) */
314
314
  .root .stepIcon[data-progress] {
315
315
  background-color: var(
316
- --recursica_ui-kit_components_stepper_properties_colors_current-indicator-background
316
+ --recursica_ui-kit_components_stepper_properties_colors_current-indicator-background-color
317
317
  );
318
318
  border-color: var(
319
319
  --recursica_ui-kit_components_stepper_properties_colors_current-indicator-border-color