@recursica/mantine-adapter 0.20.0 → 0.22.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 +13 -0
- package/dist/mantine-adapter.cjs +1 -1
- package/dist/mantine-adapter.cjs.map +1 -1
- package/dist/mantine-adapter.css +1 -1
- package/dist/mantine-adapter.js +1624 -1498
- package/dist/mantine-adapter.js.map +1 -1
- package/dist/src/components/AutoComplete/AutoComplete.d.ts +9 -0
- package/dist/src/components/Avatar/Avatar.d.ts +1 -1
- package/dist/src/components/Badge/Badge.d.ts +1 -1
- package/dist/src/components/Button/Button.d.ts +11 -1
- package/dist/src/components/Card/Card.d.ts +1 -1
- package/dist/src/components/Flex/Flex.d.ts +1 -1
- package/dist/src/components/Link/Link.d.ts +1 -1
- package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +6 -1
- package/dist/src/components/Text/Text.d.ts +1 -1
- package/dist/src/components/Toast/Toast.d.ts +1 -1
- package/dist/src/components/index.d.ts +1 -0
- package/package.json +5 -2
- package/src/GlobalExemptions.modules.css +13 -0
- package/src/components/AutoComplete/AUTOCOMPLETE_IMPLEMENTATION_NOTES.md +21 -0
- package/src/components/AutoComplete/AutoComplete.module.css +311 -0
- package/src/components/AutoComplete/AutoComplete.stories.tsx +187 -0
- package/src/components/AutoComplete/AutoComplete.tsx +154 -0
- package/src/components/Avatar/Avatar.module.css +40 -36
- package/src/components/Badge/Badge.module.css +4 -1
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -10
- package/src/components/Button/Button.module.css +220 -57
- package/src/components/Button/Button.stories.tsx +68 -0
- package/src/components/Button/Button.tsx +42 -3
- package/src/components/Button/IMPLEMENTATION_NOTES.md +16 -0
- package/src/components/Card/Card.module.css +58 -1
- package/src/components/Card/Card.stories.tsx +4 -2
- package/src/components/Checkbox/Checkbox.module.css +74 -46
- package/src/components/Checkbox/Checkbox.stories.tsx +3 -0
- package/src/components/Checkbox/CheckboxGroup.tsx +1 -9
- package/src/components/Chip/Chip.module.css +19 -1
- package/src/components/DatePicker/DatePicker.module.css +45 -0
- package/src/components/Dropdown/Dropdown.module.css +42 -15
- package/src/components/Dropdown/Dropdown.stories.tsx +3 -0
- package/src/components/Dropdown/Dropdown.tsx +5 -1
- package/src/components/FileInput/FileInput.module.css +50 -0
- package/src/components/FileUpload/FileUpload.module.css +43 -0
- package/src/components/FormControlLayout/FormControlLayout.module.css +12 -2
- package/src/components/FormControlWrapper/FormControlWrapper.module.css +66 -0
- package/src/components/HoverCard/HoverCard.module.css +12 -5
- package/src/components/Label/Label.module.css +11 -3
- package/src/components/Link/Link.module.css +8 -0
- package/src/components/Menu/Menu.module.css +73 -30
- package/src/components/Modal/Modal.module.css +92 -47
- package/src/components/NumberInput/NumberInput.module.css +46 -15
- package/src/components/NumberInput/NumberInput.tsx +5 -1
- package/src/components/Pagination/Pagination.module.css +123 -41
- package/src/components/Panel/Panel.module.css +55 -3
- package/src/components/Popover/Popover.module.css +6 -4
- package/src/components/Radio/Radio.module.css +72 -59
- package/src/components/Radio/Radio.stories.tsx +3 -0
- package/src/components/Radio/RadioGroup.tsx +1 -8
- package/src/components/ReadOnlyField/ReadOnlyField.module.css +14 -0
- package/src/components/ReadOnlyField/ReadOnlyField.tsx +16 -1
- package/src/components/SegmentedControl/SegmentedControl.module.css +106 -41
- package/src/components/SegmentedControl/SegmentedControl.stories.tsx +1 -4
- package/src/components/SegmentedControl/SegmentedControl.tsx +18 -4
- package/src/components/Slider/Slider.module.css +89 -0
- package/src/components/Stepper/Stepper.module.css +53 -2
- package/src/components/Switch/Switch.module.css +62 -23
- package/src/components/Switch/Switch.stories.tsx +3 -0
- package/src/components/Switch/Switch.tsx +1 -0
- package/src/components/Switch/SwitchGroup.tsx +3 -10
- package/src/components/Tabs/Tabs.module.css +33 -12
- package/src/components/TextArea/TextArea.module.css +58 -120
- package/src/components/TextArea/TextArea.stories.tsx +3 -0
- package/src/components/TextArea/TextArea.tsx +7 -3
- package/src/components/TextField/TextField.module.css +46 -15
- package/src/components/TextField/TextField.tsx +5 -1
- package/src/components/TimePicker/TimePicker.module.css +44 -0
- package/src/components/Timeline/Timeline.module.css +6 -0
- package/src/components/Toast/Toast.module.css +62 -1
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/components/Tooltip/Tooltip.module.css +9 -0
- package/src/components/TransferList/TransferList.module.css +41 -0
- package/src/components/index.ts +1 -0
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
the Recursica beak-size token (16px). See COMPONENT_ISSUES.md for details.
|
|
7
7
|
- All structural layout (display, position, overflow) is deferred to Mantine's native
|
|
8
8
|
behavior. We only override visual design tokens (colors, typography, spacing, borders).
|
|
9
|
-
|
|
9
|
+
/* EXEMPTIONS:
|
|
10
|
+
- beak-size is ignored here because Mantine's popover arrows compute their sizing and positional offsets
|
|
11
|
+
dynamically within the React rendering engine (requires inline pixel number rather than standard CSS variables).
|
|
12
|
+
The beak size is checked in JS against a fixed value of 16px. If this variable changes, the TSX components
|
|
13
|
+
need to be reviewed/re-compiled. */
|
|
14
|
+
/* recursica-ignore: --recursica_ui-kit_components_hover-card-popover_properties_beak-size = 16px */
|
|
10
15
|
|
|
11
16
|
/* ======================================
|
|
12
17
|
DROPDOWN CONTAINER
|
|
@@ -14,14 +19,14 @@
|
|
|
14
19
|
|
|
15
20
|
.dropdown {
|
|
16
21
|
background-color: var(
|
|
17
|
-
--recursica_ui-kit_components_hover-card-
|
|
22
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_background
|
|
18
23
|
);
|
|
19
24
|
border-style: solid; /* HARDCODE: Mantine Paper does not set border-style natively */
|
|
20
25
|
border-width: var(
|
|
21
26
|
--recursica_ui-kit_components_hover-card-popover_properties_border-size
|
|
22
27
|
);
|
|
23
28
|
border-color: var(
|
|
24
|
-
--recursica_ui-kit_components_hover-card-
|
|
29
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_border-color
|
|
25
30
|
);
|
|
26
31
|
border-radius: var(
|
|
27
32
|
--recursica_ui-kit_components_hover-card-popover_properties_border-radius
|
|
@@ -70,7 +75,9 @@
|
|
|
70
75
|
--recursica_ui-kit_components_hover-card-popover_properties_content-text_text-transform
|
|
71
76
|
);
|
|
72
77
|
|
|
73
|
-
color: var(
|
|
78
|
+
color: var(
|
|
79
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_content
|
|
80
|
+
);
|
|
74
81
|
}
|
|
75
82
|
|
|
76
83
|
/* ======================================
|
|
@@ -79,6 +86,6 @@
|
|
|
79
86
|
|
|
80
87
|
.arrow {
|
|
81
88
|
border-color: var(
|
|
82
|
-
--recursica_ui-kit_components_hover-card-
|
|
89
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_border-color
|
|
83
90
|
);
|
|
84
91
|
}
|
|
@@ -1,8 +1,14 @@
|
|
|
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. */
|
|
4
|
+
|
|
1
5
|
/* HARDCODED VALUES:
|
|
2
6
|
- display: flex helps us leverage flex 'order' to perfectly position Mantine's injected asterisk.
|
|
3
7
|
- align-items: baseline ensures text logic lines up nicely if font sizes differ slightly.
|
|
4
8
|
- margin/padding resets.
|
|
5
|
-
*/
|
|
9
|
+
*/
|
|
10
|
+
/* recursica-ignore: --recursica_ui-kit_components_label_variants_layouts_stacked_variants_sizes_default_properties_width */
|
|
11
|
+
/* recursica-ignore: --recursica_ui-kit_components_label_variants_layouts_stacked_variants_sizes_small_properties_width */
|
|
6
12
|
|
|
7
13
|
.root {
|
|
8
14
|
display: flex;
|
|
@@ -95,7 +101,9 @@
|
|
|
95
101
|
line-height: var(
|
|
96
102
|
--recursica_ui-kit_components_label_properties_optional-text_line-height
|
|
97
103
|
);
|
|
98
|
-
font-style:
|
|
104
|
+
font-style: var(
|
|
105
|
+
--recursica_ui-kit_components_label_properties_optional-text_font-style
|
|
106
|
+
);
|
|
99
107
|
text-decoration: var(
|
|
100
108
|
--recursica_ui-kit_components_label_properties_optional-text_text-decoration,
|
|
101
109
|
none
|
|
@@ -106,7 +114,7 @@
|
|
|
106
114
|
);
|
|
107
115
|
color: inherit;
|
|
108
116
|
opacity: var(
|
|
109
|
-
--recursica_ui-
|
|
117
|
+
--recursica_ui-kit_components_label_properties_optional-text-opacity
|
|
110
118
|
);
|
|
111
119
|
}
|
|
112
120
|
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- text_text-transform across multiple link states (default, hover, visited, visited-hover) is ignored
|
|
3
|
+
because links naturally inherit casing directly from text children rather than requiring custom CSS transforms. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_link_variants_states_default_properties_text_text-transform */
|
|
5
|
+
/* recursica-ignore: --recursica_ui-kit_components_link_variants_states_hover_properties_text_text-transform */
|
|
6
|
+
/* recursica-ignore: --recursica_ui-kit_components_link_variants_states_visited_properties_text_text-transform */
|
|
7
|
+
/* recursica-ignore: --recursica_ui-kit_components_link_variants_states_visited-hover_properties_text_text-transform */
|
|
8
|
+
|
|
1
9
|
/*
|
|
2
10
|
HARDCODED VALUES:
|
|
3
11
|
- display: inline-flex; (Base layout to align icon and text correctly)
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- colors_selected-item_supporting-text-color is ignored because selected menu items do not render
|
|
3
|
+
supporting secondary text, making selected state overrides for supporting text colors obsolete. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_menu-item_properties_colors_selected-item_supporting-text-color */
|
|
5
|
+
|
|
1
6
|
/* HARDCODED VALUES:
|
|
2
7
|
- border-style: solid. Structural rendering rule for the dropdown border (Mantine uses Paper which may not set border natively).
|
|
3
8
|
- opacity: 0.5 on disabled items. Recursica has no dedicated disabled-opacity token for menu items.
|
|
@@ -27,11 +32,12 @@
|
|
|
27
32
|
box-shadow: var(--recursica_ui-kit_components_menu_properties_elevation);
|
|
28
33
|
|
|
29
34
|
min-width: var(--recursica_ui-kit_components_menu_properties_min-width);
|
|
35
|
+
max-height: var(--recursica_ui-kit_components_menu_properties_max-height);
|
|
30
36
|
max-width: var(--recursica_ui-kit_components_menu_properties_max-width);
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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;
|
|
35
41
|
}
|
|
36
42
|
|
|
37
43
|
/* ======================================
|
|
@@ -83,9 +89,7 @@
|
|
|
83
89
|
color: var(
|
|
84
90
|
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_text
|
|
85
91
|
);
|
|
86
|
-
opacity:
|
|
87
|
-
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_opacity
|
|
88
|
-
);
|
|
92
|
+
opacity: 1;
|
|
89
93
|
}
|
|
90
94
|
|
|
91
95
|
/* Override Mantine's native hover background to use our overlay technique */
|
|
@@ -104,7 +108,7 @@
|
|
|
104
108
|
z-index: 0;
|
|
105
109
|
pointer-events: none;
|
|
106
110
|
background-color: var(
|
|
107
|
-
--recursica_ui-kit_components_menu-
|
|
111
|
+
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_hover-color
|
|
108
112
|
);
|
|
109
113
|
opacity: 0;
|
|
110
114
|
transition: opacity 150ms ease;
|
|
@@ -112,8 +116,7 @@
|
|
|
112
116
|
|
|
113
117
|
.item:hover:not([data-disabled])::after {
|
|
114
118
|
opacity: var(
|
|
115
|
-
--recursica_ui-kit_components_menu-
|
|
116
|
-
0.1
|
|
119
|
+
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_hover-opacity
|
|
117
120
|
);
|
|
118
121
|
}
|
|
119
122
|
|
|
@@ -125,8 +128,12 @@
|
|
|
125
128
|
color: var(
|
|
126
129
|
--recursica_ui-kit_components_menu-item_properties_colors_selected-item_text
|
|
127
130
|
);
|
|
128
|
-
opacity:
|
|
129
|
-
|
|
131
|
+
opacity: 1;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.item[data-selected]::after {
|
|
135
|
+
background-color: var(
|
|
136
|
+
--recursica_ui-kit_components_menu-item_properties_colors_selected-item_hover-color
|
|
130
137
|
);
|
|
131
138
|
}
|
|
132
139
|
|
|
@@ -138,15 +145,21 @@
|
|
|
138
145
|
}
|
|
139
146
|
.item[data-hovered]::after {
|
|
140
147
|
opacity: var(
|
|
141
|
-
--recursica_ui-kit_components_menu-
|
|
142
|
-
|
|
148
|
+
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_hover-opacity
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.item[data-hovered][data-selected]::after {
|
|
153
|
+
opacity: var(
|
|
154
|
+
--recursica_ui-kit_components_menu-item_properties_colors_selected-item_hover-opacity
|
|
143
155
|
);
|
|
144
156
|
}
|
|
145
157
|
|
|
146
158
|
/* Disabled item */
|
|
147
159
|
.item[data-disabled] {
|
|
148
|
-
|
|
149
|
-
|
|
160
|
+
opacity: var(
|
|
161
|
+
--recursica_ui-kit_components_menu-item_properties_disabled-opacity
|
|
162
|
+
);
|
|
150
163
|
}
|
|
151
164
|
|
|
152
165
|
/* ======================================
|
|
@@ -166,7 +179,46 @@
|
|
|
166
179
|
.itemSection {
|
|
167
180
|
position: relative;
|
|
168
181
|
z-index: 1;
|
|
169
|
-
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.itemSection[data-position="left"] {
|
|
185
|
+
width: var(
|
|
186
|
+
--recursica_ui-kit_components_menu-item_properties_icon-leading-size
|
|
187
|
+
);
|
|
188
|
+
height: var(
|
|
189
|
+
--recursica_ui-kit_components_menu-item_properties_icon-leading-size
|
|
190
|
+
);
|
|
191
|
+
margin-right: var(
|
|
192
|
+
--recursica_ui-kit_components_menu-item_properties_icon-text-gap
|
|
193
|
+
);
|
|
194
|
+
color: var(
|
|
195
|
+
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_leading-icon-color
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.itemSection[data-position="right"] {
|
|
200
|
+
width: var(
|
|
201
|
+
--recursica_ui-kit_components_menu-item_properties_icon-trailing-size
|
|
202
|
+
);
|
|
203
|
+
height: var(
|
|
204
|
+
--recursica_ui-kit_components_menu-item_properties_icon-trailing-size
|
|
205
|
+
);
|
|
206
|
+
margin-left: var(--recursica_ui-kit_components_menu-item_properties_text-gap);
|
|
207
|
+
color: var(
|
|
208
|
+
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_trailing-icon-color
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.item[data-selected] .itemSection[data-position="left"] {
|
|
213
|
+
color: var(
|
|
214
|
+
--recursica_ui-kit_components_menu-item_properties_colors_selected-item_leading-icon-color
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.item[data-selected] .itemSection[data-position="right"] {
|
|
219
|
+
color: var(
|
|
220
|
+
--recursica_ui-kit_components_menu-item_properties_colors_selected-item_trailing-icon-color
|
|
221
|
+
);
|
|
170
222
|
}
|
|
171
223
|
|
|
172
224
|
/* ======================================
|
|
@@ -174,19 +226,12 @@
|
|
|
174
226
|
====================================== */
|
|
175
227
|
|
|
176
228
|
.divider {
|
|
177
|
-
height: var(
|
|
178
|
-
--recursica_ui-kit_components_menu-item_properties_divider-height
|
|
179
|
-
);
|
|
229
|
+
height: var(--recursica_ui-kit_components_menu_properties_divider-height);
|
|
180
230
|
background-color: var(
|
|
181
|
-
--recursica_ui-
|
|
231
|
+
--recursica_ui-kit_components_menu_properties_colors_divider-color
|
|
182
232
|
);
|
|
183
|
-
opacity: var(
|
|
184
|
-
|
|
185
|
-
);
|
|
186
|
-
margin: var(
|
|
187
|
-
--recursica_ui-kit_components_menu-item_properties_divider-item-gap
|
|
188
|
-
)
|
|
189
|
-
0;
|
|
233
|
+
opacity: var(--recursica_ui-kit_components_menu_properties_divider-opacity);
|
|
234
|
+
margin: 8px 0;
|
|
190
235
|
}
|
|
191
236
|
|
|
192
237
|
/* ======================================
|
|
@@ -228,9 +273,7 @@
|
|
|
228
273
|
color: var(
|
|
229
274
|
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_supporting-text-color
|
|
230
275
|
);
|
|
231
|
-
opacity:
|
|
232
|
-
--recursica_ui-kit_components_menu-item_properties_colors_unselected-item_supporting-text-opacity
|
|
233
|
-
);
|
|
276
|
+
opacity: 0.7;
|
|
234
277
|
}
|
|
235
278
|
|
|
236
279
|
/* ======================================
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- content-style and header-style parent variables represent raw JSON styling objects rather than
|
|
3
|
+
direct CSS variables and cannot be applied directly in standard CSS files.
|
|
4
|
+
Sub-properties are fully and individually mapped to elements natively. */
|
|
5
|
+
/* recursica-ignore: --recursica_ui-kit_components_modal_properties_content-style */
|
|
6
|
+
/* recursica-ignore: --recursica_ui-kit_components_modal_properties_header-style */
|
|
7
|
+
|
|
1
8
|
.root {
|
|
2
9
|
}
|
|
3
10
|
|
|
@@ -7,82 +14,120 @@
|
|
|
7
14
|
|
|
8
15
|
.content {
|
|
9
16
|
/* Geometric Bounds */
|
|
10
|
-
min-width: var(
|
|
11
|
-
|
|
12
|
-
)
|
|
13
|
-
max-width: var(
|
|
14
|
-
--recursica_ui-kit_components_modal_properties_max-width
|
|
15
|
-
) !important;
|
|
16
|
-
min-height: var(
|
|
17
|
-
--recursica_ui-kit_components_modal_properties_min-height
|
|
18
|
-
) !important;
|
|
17
|
+
min-width: var(--recursica_ui-kit_components_modal_properties_min-width);
|
|
18
|
+
max-width: var(--recursica_ui-kit_components_modal_properties_max-width);
|
|
19
|
+
min-height: var(--recursica_ui-kit_components_modal_properties_min-height);
|
|
19
20
|
|
|
20
21
|
/* Restrict max-height to either the UI Kit max or the viewport bounds to force internal scrolling */
|
|
21
22
|
max-height: min(
|
|
22
23
|
var(--recursica_ui-kit_components_modal_properties_max-height),
|
|
23
24
|
calc(100vh - 4rem)
|
|
24
|
-
)
|
|
25
|
-
overflow: hidden
|
|
25
|
+
);
|
|
26
|
+
overflow: hidden;
|
|
26
27
|
|
|
27
28
|
/* Box model */
|
|
28
29
|
border-radius: var(
|
|
29
30
|
--recursica_ui-kit_components_modal_properties_border-radius
|
|
30
|
-
)
|
|
31
|
-
border-width: var(
|
|
32
|
-
--recursica_ui-kit_components_modal_properties_border-size
|
|
33
|
-
) !important;
|
|
31
|
+
);
|
|
32
|
+
border-width: var(--recursica_ui-kit_components_modal_properties_border-size);
|
|
34
33
|
border-color: var(
|
|
35
|
-
--recursica_ui-
|
|
36
|
-
)
|
|
37
|
-
border-style: solid
|
|
34
|
+
--recursica_ui-kit_components_modal_properties_colors_border-color
|
|
35
|
+
);
|
|
36
|
+
border-style: solid;
|
|
38
37
|
|
|
39
38
|
/* Appearance */
|
|
40
39
|
background-color: var(
|
|
41
|
-
--recursica_ui-
|
|
42
|
-
)
|
|
43
|
-
box-shadow: var(
|
|
44
|
-
--recursica_ui-kit_components_modal_properties_elevation
|
|
45
|
-
) !important;
|
|
40
|
+
--recursica_ui-kit_components_modal_properties_colors_background
|
|
41
|
+
);
|
|
42
|
+
box-shadow: var(--recursica_ui-kit_components_modal_properties_elevation);
|
|
46
43
|
|
|
47
44
|
/* Internal Flex container to trap header and let body scroll */
|
|
48
|
-
display: flex
|
|
49
|
-
flex-direction: column
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-direction: column;
|
|
50
47
|
}
|
|
51
48
|
|
|
52
49
|
.header {
|
|
53
50
|
padding: var(--recursica_ui-kit_components_modal_properties_vertical-padding)
|
|
54
|
-
var(--recursica_ui-kit_components_modal_properties_horizontal-padding)
|
|
55
|
-
background-color: transparent
|
|
51
|
+
var(--recursica_ui-kit_components_modal_properties_horizontal-padding);
|
|
52
|
+
background-color: transparent; /* Inherit from content */
|
|
56
53
|
}
|
|
57
54
|
|
|
58
55
|
.title {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
color: var(--recursica_ui-kit_components_modal_properties_colors_title);
|
|
57
|
+
|
|
58
|
+
/* Direct Figma Typography Mapping */
|
|
59
|
+
font-family: var(
|
|
60
|
+
--recursica_ui-kit_components_modal_properties_header-style_fontFamily
|
|
61
|
+
);
|
|
62
|
+
font-size: var(
|
|
63
|
+
--recursica_ui-kit_components_modal_properties_header-style_fontSize
|
|
64
|
+
);
|
|
65
|
+
font-style: var(
|
|
66
|
+
--recursica_ui-kit_components_modal_properties_header-style_fontStyle
|
|
67
|
+
);
|
|
68
|
+
font-weight: var(
|
|
69
|
+
--recursica_ui-kit_components_modal_properties_header-style_fontWeight
|
|
70
|
+
);
|
|
71
|
+
letter-spacing: var(
|
|
72
|
+
--recursica_ui-kit_components_modal_properties_header-style_letterSpacing
|
|
73
|
+
);
|
|
74
|
+
line-height: var(
|
|
75
|
+
--recursica_ui-kit_components_modal_properties_header-style_lineHeight
|
|
76
|
+
);
|
|
77
|
+
text-transform: var(
|
|
78
|
+
--recursica_ui-kit_components_modal_properties_header-style_textCase
|
|
79
|
+
);
|
|
80
|
+
text-decoration: var(
|
|
81
|
+
--recursica_ui-kit_components_modal_properties_header-style_textDecoration
|
|
82
|
+
);
|
|
62
83
|
}
|
|
63
84
|
|
|
64
85
|
.bodyWrapper {
|
|
65
86
|
/* This is the container that overrides Mantine's native Body. It strips padding and acts as a flex column. */
|
|
66
|
-
padding: 0
|
|
87
|
+
padding: 0;
|
|
67
88
|
display: flex;
|
|
68
89
|
flex-direction: column;
|
|
69
90
|
flex: 1 1 auto;
|
|
70
|
-
overflow: hidden
|
|
71
|
-
min-height: 0
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
min-height: 0; /* Critical for flex child scrolling constraint */
|
|
72
93
|
}
|
|
73
94
|
|
|
74
95
|
.scrollArea {
|
|
75
96
|
padding: var(--recursica_ui-kit_components_modal_properties_vertical-padding)
|
|
76
|
-
var(--recursica_ui-kit_components_modal_properties_horizontal-padding)
|
|
97
|
+
var(--recursica_ui-kit_components_modal_properties_horizontal-padding);
|
|
77
98
|
|
|
78
99
|
/* Internal scrolling */
|
|
79
100
|
flex: 1 1 auto;
|
|
80
|
-
overflow-y: auto
|
|
81
|
-
min-height: 0
|
|
101
|
+
overflow-y: auto;
|
|
102
|
+
min-height: 0; /* Critical for flex child scrolling constraint */
|
|
82
103
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
104
|
+
color: var(--recursica_ui-kit_components_modal_properties_colors_content);
|
|
105
|
+
|
|
106
|
+
/* Direct Figma Typography Mapping */
|
|
107
|
+
font-family: var(
|
|
108
|
+
--recursica_ui-kit_components_modal_properties_content-style_fontFamily
|
|
109
|
+
);
|
|
110
|
+
font-size: var(
|
|
111
|
+
--recursica_ui-kit_components_modal_properties_content-style_fontSize
|
|
112
|
+
);
|
|
113
|
+
font-style: var(
|
|
114
|
+
--recursica_ui-kit_components_modal_properties_content-style_fontStyle
|
|
115
|
+
);
|
|
116
|
+
font-weight: var(
|
|
117
|
+
--recursica_ui-kit_components_modal_properties_content-style_fontWeight
|
|
118
|
+
);
|
|
119
|
+
letter-spacing: var(
|
|
120
|
+
--recursica_ui-kit_components_modal_properties_content-style_letterSpacing
|
|
121
|
+
);
|
|
122
|
+
line-height: var(
|
|
123
|
+
--recursica_ui-kit_components_modal_properties_content-style_lineHeight
|
|
124
|
+
);
|
|
125
|
+
text-transform: var(
|
|
126
|
+
--recursica_ui-kit_components_modal_properties_content-style_textCase
|
|
127
|
+
);
|
|
128
|
+
text-decoration: var(
|
|
129
|
+
--recursica_ui-kit_components_modal_properties_content-style_textDecoration
|
|
130
|
+
);
|
|
86
131
|
|
|
87
132
|
/* Ensure button gap token is easily usable if developers use standard spacing */
|
|
88
133
|
--modal-button-gap: var(
|
|
@@ -94,29 +139,29 @@
|
|
|
94
139
|
border-top: var(
|
|
95
140
|
--recursica_ui-kit_components_modal_properties_scroll-divider-thickness
|
|
96
141
|
)
|
|
97
|
-
solid transparent
|
|
142
|
+
solid transparent;
|
|
98
143
|
border-bottom: var(
|
|
99
144
|
--recursica_ui-kit_components_modal_properties_scroll-divider-thickness
|
|
100
145
|
)
|
|
101
|
-
solid transparent
|
|
146
|
+
solid transparent;
|
|
102
147
|
}
|
|
103
148
|
|
|
104
149
|
.scrollArea[data-scrolled-top] {
|
|
105
150
|
border-top-color: var(
|
|
106
|
-
--recursica_ui-
|
|
107
|
-
)
|
|
151
|
+
--recursica_ui-kit_components_modal_properties_colors_scroll-divider
|
|
152
|
+
);
|
|
108
153
|
}
|
|
109
154
|
|
|
110
155
|
.scrollArea[data-scrolled-bottom] {
|
|
111
156
|
border-bottom-color: var(
|
|
112
|
-
--recursica_ui-
|
|
113
|
-
)
|
|
157
|
+
--recursica_ui-kit_components_modal_properties_colors_scroll-divider
|
|
158
|
+
);
|
|
114
159
|
}
|
|
115
160
|
|
|
116
161
|
.footer {
|
|
117
162
|
padding: var(--recursica_ui-kit_components_modal_properties_vertical-padding)
|
|
118
|
-
var(--recursica_ui-kit_components_modal_properties_horizontal-padding)
|
|
119
|
-
background-color: transparent
|
|
163
|
+
var(--recursica_ui-kit_components_modal_properties_horizontal-padding);
|
|
164
|
+
background-color: transparent;
|
|
120
165
|
display: flex;
|
|
121
166
|
justify-content: flex-end;
|
|
122
167
|
gap: var(--recursica_ui-kit_components_modal_properties_button-gap);
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- state-specific border-size variables are ignored because the input box uses a uniform static boundary to prevent
|
|
3
|
+
unexpected layout shifts or flickering when switching between active, focused, or error states. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_number-input_variants_states_default_properties_border-size */
|
|
5
|
+
/* recursica-ignore: --recursica_ui-kit_components_number-input_variants_states_disabled_properties_border-size */
|
|
6
|
+
/* recursica-ignore: --recursica_ui-kit_components_number-input_variants_states_error_properties_border-size */
|
|
7
|
+
/* recursica-ignore: --recursica_ui-kit_components_number-input_variants_states_focus_properties_border-size */
|
|
8
|
+
|
|
9
|
+
/* LAYOUT SPACING OVERRIDES:
|
|
10
|
+
- Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens. */
|
|
11
|
+
.layoutOverride {
|
|
12
|
+
--form-control-margin-bottom: var(
|
|
13
|
+
--recursica_ui-kit_components_number-input_variants_layouts_stacked_properties_top-bottom-margin
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.layoutOverride[data-form-layout="side-by-side"] {
|
|
18
|
+
--form-control-margin-bottom: var(
|
|
19
|
+
--recursica_ui-kit_components_number-input_variants_layouts_side-by-side_properties_top-bottom-margin
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
1
23
|
/* HARDCODED VALUES:
|
|
2
24
|
- border-width: 1px. Native geometric boundary for the input box.
|
|
3
25
|
- border-style: solid. Native structural rendering rule.
|
|
@@ -16,22 +38,18 @@
|
|
|
16
38
|
|
|
17
39
|
/* Override Mantine native Input variables governing section spacing padding mathematics safely */
|
|
18
40
|
--input-left-section-size: calc(
|
|
19
|
-
var(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
2
|
|
25
|
-
)
|
|
41
|
+
var(
|
|
42
|
+
--recursica_ui-kit_components_number-input_properties_horizontal-padding
|
|
43
|
+
) +
|
|
44
|
+
var(--recursica_ui-kit_components_number-input_properties_icon-size) +
|
|
45
|
+
var(--recursica_ui-kit_components_number-input_properties_icon-text-gap)
|
|
26
46
|
);
|
|
27
47
|
--input-right-section-size: calc(
|
|
28
|
-
var(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
2
|
|
34
|
-
)
|
|
48
|
+
var(
|
|
49
|
+
--recursica_ui-kit_components_number-input_properties_horizontal-padding
|
|
50
|
+
) +
|
|
51
|
+
var(--recursica_ui-kit_components_number-input_properties_icon-size) +
|
|
52
|
+
var(--recursica_ui-kit_components_number-input_properties_icon-text-gap)
|
|
35
53
|
);
|
|
36
54
|
}
|
|
37
55
|
|
|
@@ -123,10 +141,23 @@
|
|
|
123
141
|
.section {
|
|
124
142
|
display: flex;
|
|
125
143
|
align-items: center;
|
|
126
|
-
justify-content: center;
|
|
127
144
|
height: 100%;
|
|
128
145
|
}
|
|
129
146
|
|
|
147
|
+
.section[data-position="left"] {
|
|
148
|
+
justify-content: flex-start;
|
|
149
|
+
padding-left: var(
|
|
150
|
+
--recursica_ui-kit_components_number-input_properties_horizontal-padding
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.section[data-position="right"] {
|
|
155
|
+
justify-content: flex-end;
|
|
156
|
+
padding-right: var(
|
|
157
|
+
--recursica_ui-kit_components_number-input_properties_horizontal-padding
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
130
161
|
.section :global(svg) {
|
|
131
162
|
width: var(--recursica_ui-kit_components_number-input_properties_icon-size);
|
|
132
163
|
height: var(--recursica_ui-kit_components_number-input_properties_icon-size);
|
|
@@ -84,9 +84,13 @@ export const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(
|
|
|
84
84
|
control: styles.control,
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
+
const wrapperClass = className
|
|
88
|
+
? `${styles.layoutOverride} ${className}`
|
|
89
|
+
: styles.layoutOverride;
|
|
90
|
+
|
|
87
91
|
return (
|
|
88
92
|
<WithReadOnlyWrapper
|
|
89
|
-
className={
|
|
93
|
+
className={wrapperClass}
|
|
90
94
|
style={style as React.CSSProperties}
|
|
91
95
|
controlMaxWidth="var(--recursica_ui-kit_components_number-input_properties_max-width)"
|
|
92
96
|
controlMinWidth="var(--recursica_ui-kit_components_number-input_properties_min-width)"
|