@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.
- package/CHANGELOG.md +25 -0
- package/SETUP.md +1 -1
- 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 -4694
- package/dist/mui-adapter.js.map +1 -1
- package/dist/src/components/Tree/Tree.d.ts +9 -5
- package/llms.txt +2 -0
- package/package.json +6 -1
- 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/Layer/USAGE.md +50 -0
- 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/RecursicaThemeProvider/USAGE.md +60 -0
- 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;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Layer - Usage Guide
|
|
2
|
+
|
|
3
|
+
This document describes how to integrate and use the `Layer` component in your projects using `@recursica/mui-adapter`.
|
|
4
|
+
|
|
5
|
+
> [!NOTE] > `Layer` 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 { Layer } from "@recursica/mui-adapter";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. Basic Example
|
|
18
|
+
|
|
19
|
+
`Layer` sets `data-recursica-layer` on its root element, which is what makes the theme+layer scoped CSS variables (surface color, border, elevation, padding) in `recursica_variables_scoped.css` actually apply. [`RecursicaThemeProvider`](../RecursicaThemeProvider/USAGE.md) automatically wraps your app in a `layer={0}` `Layer` by default (via its `initLayer0` prop), so you don't need to add one yourself for the base page. You still add `Layer`s manually for anything visually elevated above the page background:
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { RecursicaThemeProvider, Layer, Card } from "@recursica/mui-adapter";
|
|
23
|
+
|
|
24
|
+
function App() {
|
|
25
|
+
return (
|
|
26
|
+
<RecursicaThemeProvider theme="light">
|
|
27
|
+
{/* Page background/surface already uses layer 0, applied automatically */}
|
|
28
|
+
<Layer layer={1}>
|
|
29
|
+
<Card>Elevated content sits on layer 1</Card>
|
|
30
|
+
</Layer>
|
|
31
|
+
</RecursicaThemeProvider>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. Design System Integration
|
|
39
|
+
|
|
40
|
+
> [!IMPORTANT]
|
|
41
|
+
>
|
|
42
|
+
> - **Layer 0 is automatic**: `RecursicaThemeProvider` applies it for you by default. Only opt out (`initLayer0={false}`) if you need to control exactly where layer 0 starts in the tree, or need `contentsOnly` on the base layer — see [RecursicaThemeProvider usage](../RecursicaThemeProvider/USAGE.md).
|
|
43
|
+
> - **Layers 1–3 are manual**: Wrap any content that's visually elevated above the page background (a Card, Modal, Popover, etc.) in its own `<Layer layer={1|2|3}>`. Nesting `Layer`s is how Recursica communicates elevation to descendant components — do **not** pass a `layer` prop directly to other components; wrap them in a `Layer` instead (every other component's `USAGE.md` repeats this rule).
|
|
44
|
+
> - **`contentsOnly`**: When `true`, `Layer` renders with `display: contents` and omits `data-recursica-layer` entirely — use this when you need a layer boundary in your component tree without adding an extra DOM box or applying layer styling (e.g. a purely structural wrapper).
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 4. Key Integration Features & Constraints
|
|
49
|
+
|
|
50
|
+
`Layer` has no visual variants of its own — its entire purpose is to bind a subtree to a numbered layer's design tokens. It does not accept `overStyled`; instead, if you find yourself needing to override a layer's surface styling, that's a signal you may want a different layer number rather than an escape hatch.
|
|
@@ -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 {
|