@recursica/mui-adapter 0.18.1 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +3 -3
- package/dist/mui-adapter.cjs +172 -23
- package/dist/mui-adapter.cjs.map +1 -1
- package/dist/mui-adapter.css +1 -1
- package/dist/mui-adapter.js +12963 -4695
- package/dist/mui-adapter.js.map +1 -1
- package/dist/src/components/Tree/Tree.d.ts +9 -5
- package/docs/PHILOSOPHY.md +39 -0
- package/package.json +8 -2
- package/src/components/Accordion/Accordion.module.css +98 -62
- package/src/components/Autocomplete/Autocomplete.module.css +50 -47
- package/src/components/Autocomplete/Autocomplete.tsx +2 -2
- package/src/components/Avatar/Avatar.module.css +7 -7
- package/src/components/Badge/Badge.module.css +8 -8
- package/src/components/Button/Button.module.css +25 -43
- package/src/components/Card/Card.module.css +3 -3
- package/src/components/Checkbox/Checkbox.module.css +57 -16
- package/src/components/Chip/Chip.module.css +32 -20
- package/src/components/Dropdown/Dropdown.module.css +47 -44
- package/src/components/Dropdown/Dropdown.tsx +2 -2
- package/src/components/FormControlWrapper/FormControlWrapper.module.css +12 -12
- package/src/components/HoverCard/HoverCard.module.css +1 -1
- package/src/components/Label/Label.module.css +20 -3
- package/src/components/Link/Link.module.css +18 -71
- package/src/components/Loader/Loader.module.css +3 -3
- package/src/components/Menu/Menu.module.css +33 -41
- package/src/components/Modal/Modal.module.css +27 -11
- package/src/components/NumberInput/NumberInput.module.css +39 -37
- package/src/components/NumberInput/NumberInput.tsx +2 -2
- package/src/components/Pagination/Pagination.module.css +10 -43
- package/src/components/Panel/Panel.module.css +3 -3
- package/src/components/Radio/Radio.module.css +32 -15
- package/src/components/ReadOnlyField/ReadOnlyField.module.css +1 -1
- package/src/components/SegmentedControl/SegmentedControl.module.css +37 -29
- package/src/components/Slider/Slider.module.css +51 -35
- package/src/components/Stepper/Stepper.module.css +3 -3
- package/src/components/Switch/Switch.module.css +27 -11
- package/src/components/Tabs/Tabs.module.css +309 -166
- package/src/components/TextArea/TextArea.module.css +36 -21
- package/src/components/TextArea/TextArea.tsx +2 -2
- package/src/components/TextField/TextField.module.css +38 -33
- package/src/components/TextField/TextField.tsx +2 -2
- package/src/components/Timeline/IMPLEMENTATION_NOTES.md +5 -0
- package/src/components/Timeline/Timeline.module.css +35 -34
- package/src/components/Toast/Toast.module.css +24 -11
- package/src/components/Tooltip/Tooltip.module.css +4 -2
- package/src/components/Tree/IMPLEMENTATION_NOTES.md +21 -0
- package/src/components/Tree/Tree.module.css +204 -39
- package/src/components/Tree/Tree.stories.tsx +81 -4
- package/src/components/Tree/Tree.tsx +214 -13
- package/src/components/Tree/USAGE.md +40 -3
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
/* EXEMPTIONS:
|
|
2
|
-
- state-specific border-size variables are ignored because a uniform 1px border is applied globally to prevent
|
|
2
|
+
- state-specific border-size variables are ignored because a uniform 1px border is applied globally to prevent
|
|
3
3
|
unexpected layout shift or flickering during focus, disabled, or error state transitions. */
|
|
4
|
-
/* recursica-ignore: --recursica_ui-
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_dropdown_properties_border-size */
|
|
5
5
|
/* recursica-ignore: --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_border-size */
|
|
6
6
|
/* recursica-ignore: --recursica_ui-kit_components_dropdown_variants_states_error_properties_border-size */
|
|
7
|
-
/* recursica-ignore: --recursica_ui-kit_components_dropdown_variants_states_focus_properties_border-size */
|
|
8
7
|
|
|
9
8
|
/* LAYOUT SPACING OVERRIDES:
|
|
10
|
-
- Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens.
|
|
9
|
+
- Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens.
|
|
10
|
+
- Also sets the --dropdown-control-{max,min}-width hooks consumed inline in Dropdown.tsx, since
|
|
11
|
+
the token schema no longer provides a single layout-agnostic min/max width. */
|
|
11
12
|
.layoutOverride {
|
|
12
13
|
--form-control-margin-bottom: var(
|
|
13
14
|
--recursica_ui-kit_components_dropdown_variants_layouts_stacked_properties_top-bottom-margin
|
|
14
15
|
);
|
|
16
|
+
--dropdown-control-max-width: var(
|
|
17
|
+
--recursica_ui-kit_components_dropdown_variants_layouts_stacked_properties_max-width
|
|
18
|
+
);
|
|
19
|
+
--dropdown-control-min-width: var(
|
|
20
|
+
--recursica_ui-kit_components_dropdown_variants_layouts_stacked_properties_min-width
|
|
21
|
+
);
|
|
15
22
|
}
|
|
16
23
|
|
|
17
24
|
.layoutOverride[data-form-layout="side-by-side"] {
|
|
18
25
|
--form-control-margin-bottom: var(
|
|
19
26
|
--recursica_ui-kit_components_dropdown_variants_layouts_side-by-side_properties_top-bottom-margin
|
|
20
27
|
);
|
|
28
|
+
--dropdown-control-max-width: var(
|
|
29
|
+
--recursica_ui-kit_components_dropdown_variants_layouts_side-by-side_properties_max-width
|
|
30
|
+
);
|
|
31
|
+
--dropdown-control-min-width: var(
|
|
32
|
+
--recursica_ui-kit_components_dropdown_variants_layouts_side-by-side_properties_min-width
|
|
33
|
+
);
|
|
21
34
|
}
|
|
22
35
|
|
|
23
36
|
/* HARDCODED VALUES:
|
|
@@ -101,13 +114,13 @@
|
|
|
101
114
|
|
|
102
115
|
/* Base State Default Execution */
|
|
103
116
|
background-color: var(
|
|
104
|
-
--recursica_ui-
|
|
117
|
+
--recursica_ui-kit_components_dropdown_properties_colors_background-color
|
|
105
118
|
);
|
|
106
119
|
border-color: var(
|
|
107
|
-
--recursica_ui-
|
|
120
|
+
--recursica_ui-kit_components_dropdown_properties_colors_border-color
|
|
108
121
|
);
|
|
109
122
|
color: var(
|
|
110
|
-
--recursica_ui-
|
|
123
|
+
--recursica_ui-kit_components_dropdown_properties_colors_text-color
|
|
111
124
|
);
|
|
112
125
|
|
|
113
126
|
outline: none;
|
|
@@ -153,13 +166,13 @@
|
|
|
153
166
|
width: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
|
|
154
167
|
height: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
|
|
155
168
|
color: var(
|
|
156
|
-
--recursica_ui-
|
|
169
|
+
--recursica_ui-kit_components_dropdown_properties_colors_leading-icon
|
|
157
170
|
);
|
|
158
171
|
}
|
|
159
172
|
|
|
160
173
|
.section[data-position="right"] :global(svg) {
|
|
161
174
|
color: var(
|
|
162
|
-
--recursica_ui-
|
|
175
|
+
--recursica_ui-kit_components_dropdown_properties_colors_trailing-icon
|
|
163
176
|
);
|
|
164
177
|
}
|
|
165
178
|
|
|
@@ -168,29 +181,16 @@
|
|
|
168
181
|
-------------------------------------- */
|
|
169
182
|
|
|
170
183
|
/* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
|
|
184
|
+
/* The token schema no longer provides per-component focus colors; apply the generic focus ring
|
|
185
|
+
tokens as a box-shadow ring instead of a color swap. */
|
|
171
186
|
.input:focus-within,
|
|
172
187
|
.input:focus {
|
|
173
|
-
|
|
174
|
-
--
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
color: var(
|
|
180
|
-
--recursica_ui-kit_components_dropdown_variants_states_focus_properties_colors_text
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
.root:focus-within .section[data-position="left"] :global(svg) {
|
|
185
|
-
color: var(
|
|
186
|
-
--recursica_ui-kit_components_dropdown_variants_states_focus_properties_colors_leading-icon
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
.root:focus-within .section[data-position="right"] :global(svg) {
|
|
191
|
-
color: var(
|
|
192
|
-
--recursica_ui-kit_components_dropdown_variants_states_focus_properties_colors_trailing-icon
|
|
193
|
-
);
|
|
188
|
+
box-shadow:
|
|
189
|
+
0 0 0 var(--recursica_brand_states_focus_border-size)
|
|
190
|
+
var(--recursica_brand_states_focus_color),
|
|
191
|
+
0 0 var(--recursica_brand_states_focus_blur)
|
|
192
|
+
var(--recursica_brand_states_focus_margin)
|
|
193
|
+
var(--recursica_brand_states_focus_color);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
/* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
@@ -199,10 +199,10 @@
|
|
|
199
199
|
--recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_border-color
|
|
200
200
|
) !important;
|
|
201
201
|
background-color: var(
|
|
202
|
-
--recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_background
|
|
202
|
+
--recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_background-color
|
|
203
203
|
) !important;
|
|
204
204
|
color: var(
|
|
205
|
-
--recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_text
|
|
205
|
+
--recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_text-color
|
|
206
206
|
) !important;
|
|
207
207
|
}
|
|
208
208
|
|
|
@@ -224,10 +224,13 @@
|
|
|
224
224
|
--recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_border-color
|
|
225
225
|
) !important;
|
|
226
226
|
background-color: var(
|
|
227
|
-
--recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_background
|
|
227
|
+
--recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_background-color
|
|
228
228
|
) !important;
|
|
229
229
|
color: var(
|
|
230
|
-
--recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_text
|
|
230
|
+
--recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_text-color
|
|
231
|
+
) !important;
|
|
232
|
+
opacity: var(
|
|
233
|
+
--recursica_ui-kit_components_dropdown_variants_states_disabled_properties_opacity
|
|
231
234
|
) !important;
|
|
232
235
|
cursor: not-allowed;
|
|
233
236
|
}
|
|
@@ -250,12 +253,10 @@
|
|
|
250
253
|
|
|
251
254
|
.dropdown {
|
|
252
255
|
background-color: var(
|
|
253
|
-
--recursica_ui-
|
|
256
|
+
--recursica_ui-kit_components_dropdown_properties_colors_background-color
|
|
254
257
|
);
|
|
255
258
|
border: 1px solid
|
|
256
|
-
var(
|
|
257
|
-
--recursica_ui-kit_components_dropdown_variants_states_default_properties_colors_border-color
|
|
258
|
-
);
|
|
259
|
+
var(--recursica_ui-kit_components_dropdown_properties_colors_border-color);
|
|
259
260
|
border-radius: var(
|
|
260
261
|
--recursica_ui-kit_components_dropdown_properties_border-radius
|
|
261
262
|
);
|
|
@@ -273,7 +274,7 @@
|
|
|
273
274
|
--recursica_ui-kit_components_dropdown_properties_text_font-weight
|
|
274
275
|
);
|
|
275
276
|
color: var(
|
|
276
|
-
--recursica_ui-
|
|
277
|
+
--recursica_ui-kit_components_dropdown_properties_colors_text-color
|
|
277
278
|
);
|
|
278
279
|
padding: calc(
|
|
279
280
|
var(--recursica_ui-kit_components_dropdown_properties_vertical-padding) *
|
|
@@ -283,14 +284,16 @@
|
|
|
283
284
|
cursor: pointer;
|
|
284
285
|
}
|
|
285
286
|
|
|
287
|
+
/* No per-option selected/hovered tokens exist in the schema; use the generic overlay tint
|
|
288
|
+
(same technique as the Mantine reference implementation) to highlight the active option. */
|
|
286
289
|
.option[data-selected="true"],
|
|
287
290
|
.option[data-combobox-selected="true"],
|
|
288
291
|
.option[data-hovered="true"],
|
|
289
292
|
.option:hover {
|
|
290
|
-
background-color:
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
293
|
+
background-color: color-mix(
|
|
294
|
+
in srgb,
|
|
295
|
+
var(--recursica_brand_states_hover_color)
|
|
296
|
+
calc(var(--recursica_brand_states_hover_opacity) * 100%),
|
|
297
|
+
transparent
|
|
295
298
|
);
|
|
296
299
|
}
|
|
@@ -120,8 +120,8 @@ export const Dropdown = forwardRef<HTMLInputElement, DropdownProps>(
|
|
|
120
120
|
<WithReadOnlyWrapper
|
|
121
121
|
className={wrapperClass}
|
|
122
122
|
style={injectedStyles}
|
|
123
|
-
controlMaxWidth="var(--
|
|
124
|
-
controlMinWidth="var(--
|
|
123
|
+
controlMaxWidth="var(--dropdown-control-max-width)"
|
|
124
|
+
controlMinWidth="var(--dropdown-control-min-width)"
|
|
125
125
|
overStyled={overStyled as true}
|
|
126
126
|
formLayout={formLayout}
|
|
127
127
|
labelSize={labelSize}
|
|
@@ -10,28 +10,29 @@
|
|
|
10
10
|
|
|
11
11
|
/* Global Form Field Colors */
|
|
12
12
|
--form-field-background: var(
|
|
13
|
-
--recursica_ui-kit_globals_form_field_colors_background
|
|
13
|
+
--recursica_ui-kit_globals_form_field_colors_background-color
|
|
14
14
|
);
|
|
15
15
|
--form-field-background-read-only: var(
|
|
16
|
-
--recursica_ui-kit_globals_form_field_colors_background-read-only
|
|
16
|
+
--recursica_ui-kit_globals_form_field_colors_background-color-read-only
|
|
17
17
|
);
|
|
18
|
-
--form-field-border: var(
|
|
19
|
-
|
|
20
|
-
--recursica_ui-kit_globals_form_field_colors_border-error
|
|
18
|
+
--form-field-border: var(
|
|
19
|
+
--recursica_ui-kit_globals_form_field_colors_border-color
|
|
21
20
|
);
|
|
22
|
-
--form-field-border-
|
|
23
|
-
--recursica_ui-
|
|
21
|
+
--form-field-border-error: var(
|
|
22
|
+
--recursica_ui-kit_globals_form_field_colors_error-border-color
|
|
24
23
|
);
|
|
25
24
|
--form-field-border-selected: var(
|
|
26
25
|
--recursica_ui-kit_globals_form_field_colors_border-selected
|
|
27
26
|
);
|
|
28
27
|
--form-field-disabled-background: var(
|
|
29
|
-
--recursica_ui-kit_globals_form_field_colors_disabled-background
|
|
28
|
+
--recursica_ui-kit_globals_form_field_colors_disabled-background-color
|
|
30
29
|
);
|
|
31
30
|
--form-field-disabled-text: var(
|
|
32
31
|
--recursica_ui-kit_globals_form_field_colors_disabled-text
|
|
33
32
|
);
|
|
34
|
-
--form-field-icon: var(
|
|
33
|
+
--form-field-icon: var(
|
|
34
|
+
--recursica_ui-kit_globals_form_field_colors_icon-color
|
|
35
|
+
);
|
|
35
36
|
--form-field-placeholder-text-opacity: var(
|
|
36
37
|
--recursica_ui-kit_globals_form_field_colors_placeholder-text-opacity
|
|
37
38
|
);
|
|
@@ -40,15 +41,14 @@
|
|
|
40
41
|
);
|
|
41
42
|
|
|
42
43
|
/* Global Form Field Geometric Sizes */
|
|
44
|
+
/* No focus-specific border-color/border-size tokens exist anymore; components use the generic
|
|
45
|
+
--recursica_brand_states_focus_* ring tokens directly instead (see e.g. TextField.module.css). */
|
|
43
46
|
--form-field-border-radius: var(
|
|
44
47
|
--recursica_ui-kit_globals_form_field_size_border-radius
|
|
45
48
|
);
|
|
46
49
|
--form-field-border-size-default: var(
|
|
47
50
|
--recursica_ui-kit_globals_form_field_size_border-size-default
|
|
48
51
|
);
|
|
49
|
-
--form-field-border-size-focus: var(
|
|
50
|
-
--recursica_ui-kit_globals_form_field_size_border-size-focus
|
|
51
|
-
);
|
|
52
52
|
--form-field-horizontal-padding: var(
|
|
53
53
|
--recursica_ui-kit_globals_form_field_size_horizontal-padding
|
|
54
54
|
);
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
.dropdown {
|
|
21
21
|
background-color: var(
|
|
22
|
-
--recursica_ui-kit_components_hover-card-popover_properties_colors_background
|
|
22
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_background-color
|
|
23
23
|
);
|
|
24
24
|
border-style: solid; /* HARDCODE: Mantine Paper does not set border-style natively */
|
|
25
25
|
border-width: var(
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- layouts_stacked sizes width variables are ignored because stacked labels naturally occupy 100% width block-level
|
|
3
|
+
real estate in HTML rendering, making explicit width properties redundant. Mirrors the mantine-adapter reference. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_label_variants_layouts_stacked_variants_sizes_default_properties_width */
|
|
5
|
+
/* recursica-ignore: --recursica_ui-kit_components_label_variants_layouts_stacked_variants_sizes_small_properties_width */
|
|
6
|
+
|
|
1
7
|
.root {
|
|
2
8
|
/* Prevent default MUI absolute positioning logic */
|
|
3
9
|
position: relative;
|
|
@@ -37,7 +43,7 @@
|
|
|
37
43
|
--recursica_ui-kit_components_label_properties_label-text_text-transform
|
|
38
44
|
);
|
|
39
45
|
|
|
40
|
-
color: var(--recursica_ui-kit_components_label_properties_colors_text);
|
|
46
|
+
color: var(--recursica_ui-kit_components_label_properties_colors_text-color);
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
.innerLayout {
|
|
@@ -56,7 +62,9 @@
|
|
|
56
62
|
|
|
57
63
|
.required {
|
|
58
64
|
/* Override the `.MuiInputLabel-asterisk` natively */
|
|
59
|
-
color: var(
|
|
65
|
+
color: var(
|
|
66
|
+
--recursica_ui-kit_components_label_properties_colors_asterisk-color
|
|
67
|
+
);
|
|
60
68
|
margin-left: var(
|
|
61
69
|
--recursica_ui-kit_components_label_properties_required-indicator-gap
|
|
62
70
|
);
|
|
@@ -70,7 +78,7 @@
|
|
|
70
78
|
We explicitly override this bleed to prevent the main label text from turning red,
|
|
71
79
|
while allowing the asterisk to take the error color! */
|
|
72
80
|
.root:global(.Mui-error) {
|
|
73
|
-
color: var(--recursica_ui-kit_components_label_properties_colors_text);
|
|
81
|
+
color: var(--recursica_ui-kit_components_label_properties_colors_text-color);
|
|
74
82
|
}
|
|
75
83
|
.root:global(.Mui-error) .required {
|
|
76
84
|
color: var(
|
|
@@ -112,11 +120,17 @@
|
|
|
112
120
|
text-transform: var(
|
|
113
121
|
--recursica_ui-kit_components_label_properties_optional-text_text-transform
|
|
114
122
|
);
|
|
123
|
+
opacity: var(
|
|
124
|
+
--recursica_ui-kit_components_label_properties_optional-text-opacity
|
|
125
|
+
);
|
|
115
126
|
}
|
|
116
127
|
|
|
117
128
|
.actionArea {
|
|
118
129
|
display: flex;
|
|
119
130
|
align-items: center;
|
|
131
|
+
margin-left: var(
|
|
132
|
+
--recursica_ui-kit_components_label_properties_edit-icon-gap
|
|
133
|
+
);
|
|
120
134
|
}
|
|
121
135
|
|
|
122
136
|
.editIcon {
|
|
@@ -127,6 +141,9 @@
|
|
|
127
141
|
background: none;
|
|
128
142
|
border: none;
|
|
129
143
|
padding: 0;
|
|
144
|
+
margin-left: var(
|
|
145
|
+
--recursica_ui-kit_components_label_properties_edit-icon-gap
|
|
146
|
+
);
|
|
130
147
|
|
|
131
148
|
width: 16px;
|
|
132
149
|
height: 16px;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- text_text-transform is ignored because links naturally inherit casing directly from text
|
|
3
|
+
children rather than requiring custom CSS transforms. Mirrors the mantine-adapter reference. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_link_properties_text_text-transform */
|
|
5
|
+
|
|
6
|
+
/*
|
|
2
7
|
HARDCODED VALUES:
|
|
3
8
|
- display: inline-flex; (Base layout to align icon and text correctly)
|
|
4
9
|
- align-items: center;
|
|
@@ -16,31 +21,27 @@ HARDCODED VALUES:
|
|
|
16
21
|
text-decoration: none;
|
|
17
22
|
color: inherit;
|
|
18
23
|
|
|
19
|
-
/* Typography
|
|
24
|
+
/* Typography Tokens */
|
|
20
25
|
font-family: var(
|
|
21
26
|
--recursica_ui-kit_components_link_properties_text_font-family
|
|
22
27
|
);
|
|
23
28
|
font-size: var(--recursica_ui-kit_components_link_properties_text_font-size);
|
|
29
|
+
font-style: var(
|
|
30
|
+
--recursica_ui-kit_components_link_properties_text_font-style
|
|
31
|
+
);
|
|
32
|
+
font-weight: var(
|
|
33
|
+
--recursica_ui-kit_components_link_properties_text_font-weight
|
|
34
|
+
);
|
|
24
35
|
letter-spacing: var(
|
|
25
36
|
--recursica_ui-kit_components_link_properties_text_letter-spacing
|
|
26
37
|
);
|
|
27
38
|
line-height: var(
|
|
28
39
|
--recursica_ui-kit_components_link_properties_text_line-height
|
|
29
40
|
);
|
|
30
|
-
|
|
31
|
-
/* Default State Tokens */
|
|
32
|
-
font-style: var(
|
|
33
|
-
--recursica_ui-kit_components_link_variants_states_default_properties_text_font-style
|
|
34
|
-
);
|
|
35
|
-
font-weight: var(
|
|
36
|
-
--recursica_ui-kit_components_link_variants_states_default_properties_text_font-weight
|
|
37
|
-
);
|
|
38
41
|
text-decoration: var(
|
|
39
|
-
--recursica_ui-
|
|
40
|
-
);
|
|
41
|
-
color: var(
|
|
42
|
-
--recursica_ui-kit_components_link_variants_states_default_properties_colors_text
|
|
42
|
+
--recursica_ui-kit_components_link_properties_text_text-decoration
|
|
43
43
|
);
|
|
44
|
+
color: var(--recursica_ui-kit_components_link_properties_colors_text-color);
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
.root[data-has-icon] {
|
|
@@ -49,49 +50,9 @@ HARDCODED VALUES:
|
|
|
49
50
|
gap: var(--recursica_ui-kit_components_link_properties_icon-text-gap);
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
.root:hover {
|
|
53
|
-
/* Reset Mantine's potential hover override */
|
|
54
|
-
text-decoration: var(
|
|
55
|
-
--recursica_ui-kit_components_link_variants_states_hover_properties_text_text-decoration
|
|
56
|
-
);
|
|
57
|
-
font-style: var(
|
|
58
|
-
--recursica_ui-kit_components_link_variants_states_hover_properties_text_font-style
|
|
59
|
-
);
|
|
60
|
-
font-weight: var(
|
|
61
|
-
--recursica_ui-kit_components_link_variants_states_hover_properties_text_font-weight
|
|
62
|
-
);
|
|
63
|
-
color: var(
|
|
64
|
-
--recursica_ui-kit_components_link_variants_states_hover_properties_colors_text
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
53
|
.root:visited {
|
|
69
|
-
text-decoration: var(
|
|
70
|
-
--recursica_ui-kit_components_link_variants_states_visited_properties_text_text-decoration
|
|
71
|
-
);
|
|
72
|
-
font-style: var(
|
|
73
|
-
--recursica_ui-kit_components_link_variants_states_visited_properties_text_font-style
|
|
74
|
-
);
|
|
75
|
-
font-weight: var(
|
|
76
|
-
--recursica_ui-kit_components_link_variants_states_visited_properties_text_font-weight
|
|
77
|
-
);
|
|
78
|
-
color: var(
|
|
79
|
-
--recursica_ui-kit_components_link_variants_states_visited_properties_colors_text
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.root:visited:hover {
|
|
84
|
-
text-decoration: var(
|
|
85
|
-
--recursica_ui-kit_components_link_variants_states_visited-hover_properties_text_text-decoration
|
|
86
|
-
);
|
|
87
|
-
font-style: var(
|
|
88
|
-
--recursica_ui-kit_components_link_variants_states_visited-hover_properties_text_font-style
|
|
89
|
-
);
|
|
90
|
-
font-weight: var(
|
|
91
|
-
--recursica_ui-kit_components_link_variants_states_visited-hover_properties_text_font-weight
|
|
92
|
-
);
|
|
93
54
|
color: var(
|
|
94
|
-
--recursica_ui-
|
|
55
|
+
--recursica_ui-kit_components_link_variants_states_visited_properties_colors_text-color
|
|
95
56
|
);
|
|
96
57
|
}
|
|
97
58
|
|
|
@@ -104,26 +65,12 @@ HARDCODED VALUES:
|
|
|
104
65
|
|
|
105
66
|
width: var(--recursica_ui-kit_components_link_properties_icon-size);
|
|
106
67
|
height: var(--recursica_ui-kit_components_link_properties_icon-size);
|
|
107
|
-
color: var(
|
|
108
|
-
--recursica_ui-kit_components_link_variants_states_default_properties_colors_icon
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.root:hover .iconWrapper {
|
|
113
|
-
color: var(
|
|
114
|
-
--recursica_ui-kit_components_link_variants_states_hover_properties_colors_icon
|
|
115
|
-
);
|
|
68
|
+
color: var(--recursica_ui-kit_components_link_properties_colors_icon-color);
|
|
116
69
|
}
|
|
117
70
|
|
|
118
71
|
.root:visited .iconWrapper {
|
|
119
72
|
color: var(
|
|
120
|
-
--recursica_ui-kit_components_link_variants_states_visited_properties_colors_icon
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
.root:visited:hover .iconWrapper {
|
|
125
|
-
color: var(
|
|
126
|
-
--recursica_ui-kit_components_link_variants_states_visited-hover_properties_colors_icon
|
|
73
|
+
--recursica_ui-kit_components_link_variants_states_visited_properties_colors_icon-color
|
|
127
74
|
);
|
|
128
75
|
}
|
|
129
76
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
}
|
|
20
20
|
.root[data-size="small"][data-variant="oval"] {
|
|
21
21
|
--loader-thickness: var(
|
|
22
|
-
--recursica_ui-kit_components_loader_variants_sizes_small_properties_thickness
|
|
22
|
+
--recursica_ui-kit_components_loader_variants_sizes_small_properties_thickness-size
|
|
23
23
|
);
|
|
24
24
|
}
|
|
25
25
|
.root[data-size="small"]:not([data-variant="oval"]) span {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
}
|
|
37
37
|
.root[data-size="default"][data-variant="oval"] {
|
|
38
38
|
--loader-thickness: var(
|
|
39
|
-
--recursica_ui-kit_components_loader_variants_sizes_default_properties_thickness
|
|
39
|
+
--recursica_ui-kit_components_loader_variants_sizes_default_properties_thickness-size
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
.root[data-size="default"]:not([data-variant="oval"]) span {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
}
|
|
54
54
|
.root[data-size="large"][data-variant="oval"] {
|
|
55
55
|
--loader-thickness: var(
|
|
56
|
-
--recursica_ui-kit_components_loader_variants_sizes_large_properties_thickness
|
|
56
|
+
--recursica_ui-kit_components_loader_variants_sizes_large_properties_thickness-size
|
|
57
57
|
);
|
|
58
58
|
}
|
|
59
59
|
.root[data-size="large"]:not([data-variant="oval"]) span {
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/* EXEMPTIONS:
|
|
2
|
-
-
|
|
3
|
-
supporting secondary text, making selected
|
|
4
|
-
/* recursica-ignore: --recursica_ui-kit_components_menu-
|
|
2
|
+
- colors_supporting-text-color (selected variant) is ignored because selected menu items do not render
|
|
3
|
+
supporting secondary text, making the selected-state override for supporting text colors obsolete. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_supporting-text-color */
|
|
5
5
|
|
|
6
6
|
/* HARDCODED VALUES:
|
|
7
7
|
- border-style: solid. Structural rendering rule for the dropdown border (Mantine uses Paper which may not set border natively).
|
|
8
|
-
- opacity: 0.5 on disabled items. Recursica has no dedicated disabled-opacity token for menu items.
|
|
9
8
|
- NOTE: overflow is intentionally NOT set on .dropdown. Mantine renders sub-menu dropdowns
|
|
10
9
|
inside the parent dropdown DOM tree using Floating UI absolute positioning. Setting
|
|
11
10
|
overflow: hidden clips sub-menus; overflow-y: auto causes unwanted scrollbars.
|
|
12
11
|
- All structural layout (flex, cursor, pointer-events on disabled) is deferred to Mantine's
|
|
13
12
|
native behavior. We only override visual design tokens (colors, typography, spacing, borders).
|
|
13
|
+
- Hover overlay: the schema no longer provides per-item hover-color/hover-opacity tokens; the
|
|
14
|
+
overlay now uses the generic --recursica_brand_states_hover_* tokens shared across components.
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
17
|
/* ======================================
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
|
|
20
21
|
.dropdown {
|
|
21
22
|
background-color: var(
|
|
22
|
-
--recursica_ui-kit_components_menu_properties_colors_background
|
|
23
|
+
--recursica_ui-kit_components_menu_properties_colors_background-color
|
|
23
24
|
);
|
|
24
25
|
border-style: solid; /* HARDCODE: Mantine Paper does not set border-style natively */
|
|
25
26
|
border-width: var(--recursica_ui-kit_components_menu_properties_border-size);
|
|
@@ -34,10 +35,7 @@
|
|
|
34
35
|
min-width: var(--recursica_ui-kit_components_menu_properties_min-width);
|
|
35
36
|
max-height: var(--recursica_ui-kit_components_menu_properties_max-height);
|
|
36
37
|
max-width: var(--recursica_ui-kit_components_menu_properties_max-width);
|
|
37
|
-
|
|
38
|
-
/* HARDCODE: Figma UI Kit does not export padding tokens for the Menu container itself.
|
|
39
|
-
If added in the future, it would be mapped here. */
|
|
40
|
-
padding: 8px;
|
|
38
|
+
padding: var(--recursica_ui-kit_components_menu_properties_padding);
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
/* ======================================
|
|
@@ -55,6 +53,7 @@
|
|
|
55
53
|
border-radius: var(
|
|
56
54
|
--recursica_ui-kit_components_menu-item_properties_border-radius
|
|
57
55
|
);
|
|
56
|
+
margin-bottom: var(--recursica_ui-kit_components_menu_properties_item-gap);
|
|
58
57
|
|
|
59
58
|
/* Typography */
|
|
60
59
|
font-family: var(
|
|
@@ -84,22 +83,27 @@
|
|
|
84
83
|
|
|
85
84
|
/* Default State: Unselected */
|
|
86
85
|
background-color: var(
|
|
87
|
-
--recursica_ui-kit_components_menu-
|
|
86
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_background-color
|
|
88
87
|
);
|
|
89
88
|
color: var(
|
|
90
|
-
--recursica_ui-kit_components_menu-
|
|
89
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_text-color
|
|
91
90
|
);
|
|
92
91
|
opacity: 1;
|
|
93
92
|
}
|
|
93
|
+
.item:last-of-type {
|
|
94
|
+
margin-bottom: 0;
|
|
95
|
+
}
|
|
94
96
|
|
|
95
97
|
/* Override Mantine's native hover background to use our overlay technique */
|
|
96
98
|
.item:hover {
|
|
97
99
|
background-color: var(
|
|
98
|
-
--recursica_ui-kit_components_menu-
|
|
100
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_background-color
|
|
99
101
|
);
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
/* Hover overlay using ::after pseudo-element (same technique as Accordion)
|
|
104
|
+
/* Hover overlay using ::after pseudo-element (same technique as Accordion); no per-item
|
|
105
|
+
hover-color/hover-opacity tokens exist anymore, so this uses the generic overlay tokens
|
|
106
|
+
uniformly regardless of selection state. */
|
|
103
107
|
.item::after {
|
|
104
108
|
content: "";
|
|
105
109
|
position: absolute;
|
|
@@ -107,58 +111,46 @@
|
|
|
107
111
|
border-radius: inherit;
|
|
108
112
|
z-index: 0;
|
|
109
113
|
pointer-events: none;
|
|
110
|
-
background-color: var(
|
|
111
|
-
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_hover-color
|
|
112
|
-
);
|
|
114
|
+
background-color: var(--recursica_brand_states_hover_color);
|
|
113
115
|
opacity: 0;
|
|
114
116
|
transition: opacity 150ms ease;
|
|
115
117
|
}
|
|
116
118
|
|
|
117
119
|
.item:hover:not([data-disabled])::after {
|
|
118
|
-
opacity: var(
|
|
119
|
-
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_hover-opacity
|
|
120
|
-
);
|
|
120
|
+
opacity: var(--recursica_brand_states_hover_opacity);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/* Selected item state */
|
|
124
124
|
.item[data-selected] {
|
|
125
125
|
background-color: var(
|
|
126
|
-
--recursica_ui-kit_components_menu-
|
|
126
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_background-color
|
|
127
127
|
);
|
|
128
128
|
color: var(
|
|
129
|
-
--recursica_ui-kit_components_menu-
|
|
129
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_text-color
|
|
130
130
|
);
|
|
131
131
|
opacity: 1;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
.item[data-selected]::after {
|
|
135
|
-
background-color: var(
|
|
136
|
-
--recursica_ui-kit_components_menu-item_properties_colors_selected-item_hover-color
|
|
137
|
-
);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
134
|
/* Hovered item state (keyboard navigation) */
|
|
141
135
|
.item[data-hovered] {
|
|
142
136
|
background-color: var(
|
|
143
|
-
--recursica_ui-kit_components_menu-
|
|
137
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_background-color
|
|
144
138
|
);
|
|
145
139
|
}
|
|
146
140
|
.item[data-hovered]::after {
|
|
147
|
-
opacity: var(
|
|
148
|
-
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_hover-opacity
|
|
149
|
-
);
|
|
141
|
+
opacity: var(--recursica_brand_states_hover_opacity);
|
|
150
142
|
}
|
|
151
143
|
|
|
152
|
-
|
|
144
|
+
/* Disabled item (opacity differs depending on selection state) */
|
|
145
|
+
.item[data-disabled]:not([data-selected]) {
|
|
153
146
|
opacity: var(
|
|
154
|
-
--recursica_ui-kit_components_menu-
|
|
147
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_variants_states_disabled_properties_opacity
|
|
155
148
|
);
|
|
156
149
|
}
|
|
157
150
|
|
|
158
|
-
|
|
159
|
-
.item[data-disabled] {
|
|
151
|
+
.item[data-disabled][data-selected] {
|
|
160
152
|
opacity: var(
|
|
161
|
-
--recursica_ui-kit_components_menu-
|
|
153
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_variants_states_disabled_properties_opacity
|
|
162
154
|
);
|
|
163
155
|
}
|
|
164
156
|
|
|
@@ -192,7 +184,7 @@
|
|
|
192
184
|
--recursica_ui-kit_components_menu-item_properties_icon-text-gap
|
|
193
185
|
);
|
|
194
186
|
color: var(
|
|
195
|
-
--recursica_ui-kit_components_menu-
|
|
187
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_leading-icon-color
|
|
196
188
|
);
|
|
197
189
|
}
|
|
198
190
|
|
|
@@ -205,19 +197,19 @@
|
|
|
205
197
|
);
|
|
206
198
|
margin-left: var(--recursica_ui-kit_components_menu-item_properties_text-gap);
|
|
207
199
|
color: var(
|
|
208
|
-
--recursica_ui-kit_components_menu-
|
|
200
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_trailing-icon-color
|
|
209
201
|
);
|
|
210
202
|
}
|
|
211
203
|
|
|
212
204
|
.item[data-selected] .itemSection[data-position="left"] {
|
|
213
205
|
color: var(
|
|
214
|
-
--recursica_ui-kit_components_menu-
|
|
206
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_leading-icon-color
|
|
215
207
|
);
|
|
216
208
|
}
|
|
217
209
|
|
|
218
210
|
.item[data-selected] .itemSection[data-position="right"] {
|
|
219
211
|
color: var(
|
|
220
|
-
--recursica_ui-kit_components_menu-
|
|
212
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_trailing-icon-color
|
|
221
213
|
);
|
|
222
214
|
}
|
|
223
215
|
|
|
@@ -271,7 +263,7 @@
|
|
|
271
263
|
);
|
|
272
264
|
|
|
273
265
|
color: var(
|
|
274
|
-
--recursica_ui-kit_components_menu-
|
|
266
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_supporting-text-color
|
|
275
267
|
);
|
|
276
268
|
opacity: 0.7;
|
|
277
269
|
}
|