@recursica/mantine-adapter 0.21.0 → 0.23.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 +18 -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 +2017 -1630
- 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 +1 -1
- package/dist/src/components/Card/Card.d.ts +1 -1
- package/dist/src/components/DatePicker/DatePicker.d.ts +8 -2
- 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/Slider/Slider.d.ts +24 -2
- 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/dist/test.html +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 +215 -56
- package/src/components/Button/Button.stories.tsx +27 -0
- package/src/components/Button/Button.tsx +11 -4
- 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_IMPLEMENTATION_NOTES.md +16 -0
- package/src/components/DatePicker/DatePicker.module.css +286 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +127 -4
- package/src/components/DatePicker/DatePicker.tsx +166 -5
- 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 +67 -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/Loader/LOADER_IMPLEMENTATION_NOTES.md +1 -2
- package/src/components/Loader/Loader.module.css +3 -9
- 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/IMPLEMENTATION_NOTES.md +49 -0
- package/src/components/Slider/Slider.module.css +498 -0
- package/src/components/Slider/Slider.stories.tsx +159 -4
- package/src/components/Slider/Slider.tsx +283 -4
- 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 +56 -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
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
0
|
|
17
17
|
);
|
|
18
18
|
margin: 0; /* HARDCODE: structural reset; consider token if layout needs change */
|
|
19
|
-
display: flex
|
|
19
|
+
display: flex;
|
|
20
20
|
flex-direction: column;
|
|
21
21
|
gap: var(
|
|
22
22
|
--recursica_ui-kit_components_checkbox-group_properties_item-gap,
|
|
@@ -68,53 +68,52 @@
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.inner {
|
|
71
|
-
display: flex
|
|
72
|
-
align-items: center
|
|
73
|
-
justify-content: center
|
|
74
|
-
margin: 0
|
|
75
|
-
width: var(--recursica_ui-kit_components_checkbox_properties_size)
|
|
76
|
-
height: var(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
margin: 0; /* HARDCODE: structural reset */
|
|
75
|
+
width: var(--recursica_ui-kit_components_checkbox_properties_size);
|
|
76
|
+
height: var(--recursica_ui-kit_components_checkbox_properties_size);
|
|
77
|
+
/* Apply font-size to this element so that an 'em' based line-height token evaluates to the correct exact pixel value. */
|
|
78
|
+
font-size: var(
|
|
79
|
+
--recursica_ui-kit_components_checkbox-item_properties_text_font-size
|
|
80
|
+
);
|
|
81
|
+
/* Mathematically syncs the physical input checkbox bounding block visually with the center of the text's first line.
|
|
82
|
+
NOTE: Since the Figma line-height token resolves to an 'em' length (e.g. 1.05em), we CANNOT multiply it by font-size in CSS.
|
|
83
|
+
Instead, it naturally evaluates to the correct height because we applied the font-size above. */
|
|
80
84
|
margin-top: calc(
|
|
81
85
|
(
|
|
82
86
|
var(
|
|
83
87
|
--recursica_ui-kit_components_checkbox-item_properties_text_line-height
|
|
84
|
-
) *
|
|
85
|
-
var(
|
|
86
|
-
--recursica_ui-kit_components_checkbox-item_properties_text_font-size
|
|
87
88
|
) -
|
|
88
89
|
var(--recursica_ui-kit_components_checkbox_properties_size)
|
|
89
90
|
) /
|
|
90
91
|
2
|
|
91
|
-
)
|
|
92
|
+
);
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
/* Base explicit reset masking underlying framework defaults */
|
|
95
96
|
.input {
|
|
96
97
|
cursor: pointer; /* HARDCODE: core interaction behavior */
|
|
97
98
|
appearance: none; /* HARDCODE: reset native widget */
|
|
98
|
-
box-sizing: border-box
|
|
99
|
-
width: var(--recursica_ui-kit_components_checkbox_properties_size)
|
|
100
|
-
height: var(
|
|
101
|
-
--recursica_ui-kit_components_checkbox_properties_size
|
|
102
|
-
) !important;
|
|
99
|
+
box-sizing: border-box; /* HARDCODE: ensures size includes borders */
|
|
100
|
+
width: var(--recursica_ui-kit_components_checkbox_properties_size);
|
|
101
|
+
height: var(--recursica_ui-kit_components_checkbox_properties_size);
|
|
103
102
|
border-radius: var(
|
|
104
103
|
--recursica_ui-kit_components_checkbox_properties_border-radius
|
|
105
|
-
)
|
|
104
|
+
);
|
|
106
105
|
border-width: var(
|
|
107
106
|
--recursica_ui-kit_components_checkbox_properties_border-size
|
|
108
|
-
)
|
|
107
|
+
);
|
|
109
108
|
border-style: solid; /* HARDCODE: normalize primitive border-style */
|
|
110
109
|
|
|
111
110
|
/* Standard unchecked state */
|
|
112
111
|
background-color: var(
|
|
113
112
|
--recursica_ui-kit_components_checkbox_properties_colors_background-unchecked
|
|
114
|
-
)
|
|
113
|
+
);
|
|
115
114
|
border-color: var(
|
|
116
115
|
--recursica_ui-kit_components_checkbox_properties_colors_border-unchecked
|
|
117
|
-
)
|
|
116
|
+
);
|
|
118
117
|
transition: all 0.2s ease; /* HARDCODE: consider global transition token */
|
|
119
118
|
}
|
|
120
119
|
|
|
@@ -122,18 +121,18 @@
|
|
|
122
121
|
.input:checked {
|
|
123
122
|
background-color: var(
|
|
124
123
|
--recursica_ui-kit_components_checkbox_properties_colors_background-checked
|
|
125
|
-
)
|
|
124
|
+
);
|
|
126
125
|
border-color: var(
|
|
127
126
|
--recursica_ui-kit_components_checkbox_properties_colors_border-checked
|
|
128
|
-
)
|
|
127
|
+
);
|
|
129
128
|
}
|
|
130
129
|
.input[data-indeterminate] {
|
|
131
130
|
background-color: var(
|
|
132
131
|
--recursica_ui-kit_components_checkbox_properties_colors_background-indeterminate
|
|
133
|
-
)
|
|
132
|
+
);
|
|
134
133
|
border-color: var(
|
|
135
134
|
--recursica_ui-kit_components_checkbox_properties_colors_border-indeterminate
|
|
136
|
-
)
|
|
135
|
+
);
|
|
137
136
|
}
|
|
138
137
|
|
|
139
138
|
/* Disabled State */
|
|
@@ -141,48 +140,44 @@
|
|
|
141
140
|
cursor: not-allowed; /* HARDCODE: disabled state default */
|
|
142
141
|
opacity: var(
|
|
143
142
|
--recursica_ui-kit_components_checkbox_properties_disabled-opacity
|
|
144
|
-
)
|
|
143
|
+
);
|
|
145
144
|
background-color: var(
|
|
146
145
|
--recursica_ui-kit_components_checkbox_properties_colors_disabled-background
|
|
147
|
-
)
|
|
146
|
+
);
|
|
148
147
|
border-color: var(
|
|
149
148
|
--recursica_ui-kit_components_checkbox_properties_colors_disabled-border
|
|
150
|
-
)
|
|
149
|
+
);
|
|
151
150
|
}
|
|
152
151
|
|
|
153
152
|
.icon {
|
|
154
|
-
width: var(
|
|
155
|
-
|
|
156
|
-
) !important;
|
|
157
|
-
height: var(
|
|
158
|
-
--recursica_ui-kit_components_checkbox_properties_icon-size
|
|
159
|
-
) !important;
|
|
153
|
+
width: var(--recursica_ui-kit_components_checkbox_properties_icon-size);
|
|
154
|
+
height: var(--recursica_ui-kit_components_checkbox_properties_icon-size);
|
|
160
155
|
color: var(
|
|
161
156
|
--recursica_ui-kit_components_checkbox_properties_colors_icon-color
|
|
162
|
-
)
|
|
157
|
+
);
|
|
163
158
|
}
|
|
164
159
|
.input:disabled + .icon {
|
|
165
160
|
color: var(
|
|
166
161
|
--recursica_ui-kit_components_checkbox_properties_colors_disabled-icon
|
|
167
|
-
)
|
|
162
|
+
);
|
|
168
163
|
}
|
|
169
164
|
|
|
170
165
|
.labelWrapper {
|
|
171
|
-
padding: 0
|
|
172
|
-
margin: 0
|
|
166
|
+
padding: 0; /* HARDCODE: structural layout reset */
|
|
167
|
+
margin: 0; /* HARDCODE: structural layout reset */
|
|
173
168
|
flex: 1;
|
|
174
169
|
min-width: 0; /* HARDCODE: forces text wrap boundary in flex child */
|
|
175
170
|
}
|
|
176
171
|
|
|
177
172
|
.label {
|
|
178
173
|
cursor: pointer; /* HARDCODE: interactive affordance */
|
|
179
|
-
padding: 0
|
|
180
|
-
margin: 0
|
|
174
|
+
padding: 0; /* HARDCODE: reset layout */
|
|
175
|
+
margin: 0; /* HARDCODE: reset layout */
|
|
181
176
|
word-wrap: break-word;
|
|
182
177
|
white-space: normal;
|
|
183
178
|
color: var(
|
|
184
|
-
--recursica_ui-kit_components_checkbox-
|
|
185
|
-
)
|
|
179
|
+
--recursica_ui-kit_components_checkbox-item_properties_colors_text
|
|
180
|
+
);
|
|
186
181
|
font-family: var(
|
|
187
182
|
--recursica_ui-kit_components_checkbox-item_properties_text_font-family
|
|
188
183
|
);
|
|
@@ -195,10 +190,43 @@
|
|
|
195
190
|
line-height: var(
|
|
196
191
|
--recursica_ui-kit_components_checkbox-item_properties_text_line-height
|
|
197
192
|
);
|
|
193
|
+
font-style: var(
|
|
194
|
+
--recursica_ui-kit_components_checkbox-item_properties_text_font-style
|
|
195
|
+
);
|
|
196
|
+
letter-spacing: var(
|
|
197
|
+
--recursica_ui-kit_components_checkbox-item_properties_text_letter-spacing
|
|
198
|
+
);
|
|
199
|
+
text-decoration: var(
|
|
200
|
+
--recursica_ui-kit_components_checkbox-item_properties_text_text-decoration
|
|
201
|
+
);
|
|
202
|
+
text-transform: var(
|
|
203
|
+
--recursica_ui-kit_components_checkbox-item_properties_text_text-transform
|
|
204
|
+
);
|
|
198
205
|
}
|
|
199
|
-
.root
|
|
206
|
+
.root:has(input:disabled) .label {
|
|
200
207
|
cursor: not-allowed; /* HARDCODE: disabled interaction */
|
|
201
208
|
opacity: var(
|
|
202
|
-
--recursica_ui-
|
|
209
|
+
--recursica_ui-kit_components_checkbox-item_properties_disabled-opacity
|
|
210
|
+
);
|
|
211
|
+
color: var(
|
|
212
|
+
--recursica_ui-kit_components_checkbox-item_properties_colors_disabled-text
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* CheckboxGroup Layouts */
|
|
217
|
+
.groupRoot {
|
|
218
|
+
display: flex;
|
|
219
|
+
}
|
|
220
|
+
.groupRoot[data-layout="stacked"] {
|
|
221
|
+
flex-direction: column;
|
|
222
|
+
gap: var(
|
|
223
|
+
--recursica_ui-kit_components_checkbox-group_variants_layouts_stacked_properties_label-field-gap
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
.groupRoot[data-layout="side-by-side"] {
|
|
227
|
+
flex-direction: row;
|
|
228
|
+
flex-wrap: wrap;
|
|
229
|
+
gap: var(
|
|
230
|
+
--recursica_ui-kit_components_checkbox-group_variants_layouts_side-by-side_properties_gutter
|
|
203
231
|
);
|
|
204
232
|
}
|
|
@@ -100,15 +100,7 @@ export const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(
|
|
|
100
100
|
defaultValue={defaultValue}
|
|
101
101
|
>
|
|
102
102
|
<div className={styles.groupRoot} data-layout={formLayout}>
|
|
103
|
-
{
|
|
104
|
-
{React.Children.map(children, (child) => {
|
|
105
|
-
if (React.isValidElement(child)) {
|
|
106
|
-
return React.cloneElement(child as React.ReactElement<any>, {
|
|
107
|
-
disabled: readOnly || (child.props as any).disabled,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
return child;
|
|
111
|
-
})}
|
|
103
|
+
{children}
|
|
112
104
|
</div>
|
|
113
105
|
</MantineCheckbox.Group>
|
|
114
106
|
}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- close-icon-color, leading-icon-color, and select-specific state icon variables are ignored because
|
|
3
|
+
Chip uses explicit state color definitions (e.g. unselected, selected, error, error-selected variant colors)
|
|
4
|
+
to drive pixel-perfect hover and click transitions, rather than generic single-color overrides.
|
|
5
|
+
- text-size is ignored since actual chip sizing is dynamically driven by precise vertical padding and line-heights. */
|
|
6
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_properties_close-icon-color */
|
|
7
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_properties_leading-icon-color */
|
|
8
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_properties_text-size */
|
|
9
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_variants_styles_error_properties_colors_leading-icon-color */
|
|
10
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_variants_styles_error_properties_colors_selected-icon-color */
|
|
11
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_variants_styles_error-selected_properties_colors_icon */
|
|
12
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_variants_styles_error-selected_properties_colors_leading-icon-color */
|
|
13
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_variants_styles_selected_properties_colors_leading-icon-color */
|
|
14
|
+
/* recursica-ignore: --recursica_ui-kit_components_chip_variants_styles_unselected_properties_colors_selected-icon-color */
|
|
15
|
+
|
|
1
16
|
/* HARDCODED VALUES
|
|
2
17
|
border-style: solid; (Baseline reset)
|
|
3
18
|
box-sizing: border-box; (Baseline reset)
|
|
@@ -6,7 +21,7 @@
|
|
|
6
21
|
outline: none; (Accessible fallback)
|
|
7
22
|
padding: 0; (Override mantine default)
|
|
8
23
|
background: transparent; (Override mantine default)
|
|
9
|
-
*/
|
|
24
|
+
*/
|
|
10
25
|
|
|
11
26
|
.root {
|
|
12
27
|
/* Set preset layout variables to override mantine defaults safely */
|
|
@@ -58,6 +73,9 @@
|
|
|
58
73
|
font-weight: var(
|
|
59
74
|
--recursica_ui-kit_components_chip_properties_text_font-weight
|
|
60
75
|
);
|
|
76
|
+
font-style: var(
|
|
77
|
+
--recursica_ui-kit_components_chip_properties_text_font-style
|
|
78
|
+
);
|
|
61
79
|
letter-spacing: var(
|
|
62
80
|
--recursica_ui-kit_components_chip_properties_text_letter-spacing
|
|
63
81
|
);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# DatePicker Implementation Notes
|
|
2
|
+
|
|
3
|
+
## Architecture Overview
|
|
4
|
+
|
|
5
|
+
The `DatePicker` component is a wrapper around the `@mantine/dates` `DatePickerInput` component, implementing the `FormControlWrapper` macro structure for Recursica. This ensures that the component visually and structurally aligns with standard Recursica input primitives.
|
|
6
|
+
|
|
7
|
+
## Structural Constraints
|
|
8
|
+
|
|
9
|
+
1. **Naked Input Usage**: We intentionally pass `label={undefined}`, `description={undefined}`, and `error={undefined}` to the Mantine `DatePickerInput` component. This suppresses Mantine's internal macro form wrapping and ensures that only our `WithReadOnlyWrapper` > `FormControlWrapper` orchestrates labels, description text, and ARIA state error boundaries.
|
|
10
|
+
2. **Read-Only Implementation**: Since the value type for `DatePickerInput` can be a date object, string, or array, the `WithReadOnlyWrapper` attempts to safely cast the output value using standard `String(value)`. For production apps utilizing heavy date formatting logic, developers can pass a custom `readOnlyComponent` explicitly to bypass this default cast.
|
|
11
|
+
3. **Calendar Portal/Dropdown (Figma Token Issue)**: The Recursica UI Kit's `date-picker` component in Figma fails to export any explicit structural or color properties for the calendar popover itself (e.g. elevation, surface background, selected day colors). To solve this organically within the framework without breaking strict token adherence, we manually override the Mantine `.dropdown` and `.day[data-selected]` classes using `--recursica_ui-kit_components_hover-card-popover` tokens for elevation/padding/surfaces, and `--recursica_ui-kit_components_button_variants_styles_solid` tokens for the selected primary blue day. This guarantees strict visual adherence to the system until explicitly mapped tokens are provided in the UI Kit.
|
|
12
|
+
|
|
13
|
+
## Styling Quirks
|
|
14
|
+
|
|
15
|
+
- The `DatePickerInput` mimics Mantine's `Input` structure natively (`.input`, `.wrapper`, `.section`). We attach our `styles.input` and `styles.root` classes exactly like `TextField`.
|
|
16
|
+
- The global layout margin override (`.layoutOverride`) utilizes `--form-control-margin-bottom` driven by specific stacked/side-by-side design tokens.
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- state-specific border-size variables are ignored because a uniform 1px border is applied globally to prevent
|
|
3
|
+
unexpected layout shift or flickering during focus, disabled, or error state transitions. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_date-picker_variants_states_default_properties_border-size */
|
|
5
|
+
/* recursica-ignore: --recursica_ui-kit_components_date-picker_variants_states_disabled_properties_border-size */
|
|
6
|
+
/* recursica-ignore: --recursica_ui-kit_components_date-picker_variants_states_error_properties_border-size */
|
|
7
|
+
/* recursica-ignore: --recursica_ui-kit_components_date-picker_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_date-picker_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_date-picker_variants_layouts_side-by-side_properties_top-bottom-margin
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* HARDCODED VALUES:
|
|
24
|
+
- border-width: 1px. Native geometric boundary for the input box.
|
|
25
|
+
- border-style: solid. Native structural rendering rule.
|
|
26
|
+
- outline: none. Bypassing browser focus rings to rely strictly on Recursica focus states natively.
|
|
27
|
+
- flex/layout: display: flex on the root wrapper safely encapsulating internal section rendering.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
.root {
|
|
31
|
+
display: flex;
|
|
32
|
+
position: relative;
|
|
33
|
+
width: var(--recursica_ui-kit_components_date-picker_properties_width, 100%);
|
|
34
|
+
min-height: var(
|
|
35
|
+
--recursica_ui-kit_components_date-picker_properties_min-height
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
/* Override Mantine native Input variables governing section spacing padding mathematics safely */
|
|
39
|
+
--input-left-section-size: calc(
|
|
40
|
+
var(
|
|
41
|
+
--recursica_ui-kit_components_date-picker_properties_horizontal-padding
|
|
42
|
+
) +
|
|
43
|
+
var(--recursica_ui-kit_components_date-picker_properties_icon-size) +
|
|
44
|
+
var(--recursica_ui-kit_components_date-picker_properties_icon-text-gap)
|
|
45
|
+
);
|
|
46
|
+
--input-right-section-size: calc(
|
|
47
|
+
var(
|
|
48
|
+
--recursica_ui-kit_components_date-picker_properties_horizontal-padding
|
|
49
|
+
) +
|
|
50
|
+
var(--recursica_ui-kit_components_date-picker_properties_icon-size) +
|
|
51
|
+
var(--recursica_ui-kit_components_date-picker_properties_icon-text-gap)
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.input {
|
|
56
|
+
/* Structural Overrides */
|
|
57
|
+
width: 100%;
|
|
58
|
+
box-sizing: border-box;
|
|
59
|
+
margin: 0;
|
|
60
|
+
|
|
61
|
+
/* Box Geometry */
|
|
62
|
+
min-height: var(
|
|
63
|
+
--recursica_ui-kit_components_date-picker_properties_min-height
|
|
64
|
+
);
|
|
65
|
+
padding-top: var(
|
|
66
|
+
--recursica_ui-kit_components_date-picker_properties_vertical-padding
|
|
67
|
+
);
|
|
68
|
+
padding-bottom: var(
|
|
69
|
+
--recursica_ui-kit_components_date-picker_properties_vertical-padding
|
|
70
|
+
);
|
|
71
|
+
padding-left: var(
|
|
72
|
+
--recursica_ui-kit_components_date-picker_properties_horizontal-padding
|
|
73
|
+
);
|
|
74
|
+
padding-right: var(
|
|
75
|
+
--recursica_ui-kit_components_date-picker_properties_horizontal-padding
|
|
76
|
+
);
|
|
77
|
+
border-radius: var(
|
|
78
|
+
--recursica_ui-kit_components_date-picker_properties_border-radius
|
|
79
|
+
);
|
|
80
|
+
border-width: 1px;
|
|
81
|
+
border-style: solid;
|
|
82
|
+
|
|
83
|
+
/* Strict Typography Unification */
|
|
84
|
+
font-family: var(
|
|
85
|
+
--recursica_ui-kit_components_date-picker_properties_text_font-family
|
|
86
|
+
);
|
|
87
|
+
font-size: var(
|
|
88
|
+
--recursica_ui-kit_components_date-picker_properties_text_font-size
|
|
89
|
+
);
|
|
90
|
+
font-style: var(
|
|
91
|
+
--recursica_ui-kit_components_date-picker_properties_text_font-style
|
|
92
|
+
);
|
|
93
|
+
font-weight: var(
|
|
94
|
+
--recursica_ui-kit_components_date-picker_properties_text_font-weight
|
|
95
|
+
);
|
|
96
|
+
letter-spacing: var(
|
|
97
|
+
--recursica_ui-kit_components_date-picker_properties_text_letter-spacing
|
|
98
|
+
);
|
|
99
|
+
line-height: var(
|
|
100
|
+
--recursica_ui-kit_components_date-picker_properties_text_line-height
|
|
101
|
+
);
|
|
102
|
+
text-decoration: var(
|
|
103
|
+
--recursica_ui-kit_components_date-picker_properties_text_text-decoration
|
|
104
|
+
);
|
|
105
|
+
text-transform: var(
|
|
106
|
+
--recursica_ui-kit_components_date-picker_properties_text_text-transform
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
/* Base State Default Execution */
|
|
110
|
+
background-color: var(
|
|
111
|
+
--recursica_ui-kit_components_date-picker_variants_states_default_properties_colors_background
|
|
112
|
+
);
|
|
113
|
+
border-color: var(
|
|
114
|
+
--recursica_ui-kit_components_date-picker_variants_states_default_properties_colors_border-color
|
|
115
|
+
);
|
|
116
|
+
color: var(
|
|
117
|
+
--recursica_ui-kit_components_date-picker_variants_states_default_properties_colors_text
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
outline: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.input::placeholder {
|
|
124
|
+
opacity: var(
|
|
125
|
+
--recursica_ui-kit_components_date-picker_properties_placeholder-opacity
|
|
126
|
+
);
|
|
127
|
+
color: inherit;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Dynamic Padding Overrides */
|
|
131
|
+
.root[data-with-left-section] .input {
|
|
132
|
+
padding-left: var(--input-left-section-size);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.root[data-with-right-section] .input {
|
|
136
|
+
padding-right: var(--input-right-section-size);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* Flexible End-Caps (Icons, actions) */
|
|
140
|
+
.section {
|
|
141
|
+
display: flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
height: 100%;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.section[data-position="left"] {
|
|
147
|
+
justify-content: flex-start;
|
|
148
|
+
padding-left: var(
|
|
149
|
+
--recursica_ui-kit_components_date-picker_properties_horizontal-padding
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.section[data-position="right"] {
|
|
154
|
+
justify-content: flex-end;
|
|
155
|
+
padding-right: var(
|
|
156
|
+
--recursica_ui-kit_components_date-picker_properties_horizontal-padding
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.section :global(svg) {
|
|
161
|
+
width: var(--recursica_ui-kit_components_date-picker_properties_icon-size);
|
|
162
|
+
height: var(--recursica_ui-kit_components_date-picker_properties_icon-size);
|
|
163
|
+
color: var(
|
|
164
|
+
--recursica_ui-kit_components_date-picker_variants_states_default_properties_colors_leading-icon
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* -------------------------------------
|
|
169
|
+
STATE CASCADE ARCHITECTURE
|
|
170
|
+
-------------------------------------- */
|
|
171
|
+
|
|
172
|
+
/* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
|
|
173
|
+
.input:focus-within,
|
|
174
|
+
.input:focus {
|
|
175
|
+
border-color: var(
|
|
176
|
+
--recursica_ui-kit_components_date-picker_variants_states_focus_properties_colors_border-color
|
|
177
|
+
);
|
|
178
|
+
background-color: var(
|
|
179
|
+
--recursica_ui-kit_components_date-picker_variants_states_focus_properties_colors_background
|
|
180
|
+
);
|
|
181
|
+
color: var(
|
|
182
|
+
--recursica_ui-kit_components_date-picker_variants_states_focus_properties_colors_text
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.root:focus-within .section[data-position="left"] :global(svg) {
|
|
187
|
+
color: var(
|
|
188
|
+
--recursica_ui-kit_components_date-picker_variants_states_focus_properties_colors_leading-icon
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
193
|
+
.root[data-error] .input {
|
|
194
|
+
border-color: var(
|
|
195
|
+
--recursica_ui-kit_components_date-picker_variants_states_error_properties_colors_border-color
|
|
196
|
+
) !important;
|
|
197
|
+
background-color: var(
|
|
198
|
+
--recursica_ui-kit_components_date-picker_variants_states_error_properties_colors_background
|
|
199
|
+
) !important;
|
|
200
|
+
color: var(
|
|
201
|
+
--recursica_ui-kit_components_date-picker_variants_states_error_properties_colors_text
|
|
202
|
+
) !important;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.root[data-error] .section[data-position="left"] :global(svg) {
|
|
206
|
+
color: var(
|
|
207
|
+
--recursica_ui-kit_components_date-picker_variants_states_error_properties_colors_leading-icon
|
|
208
|
+
) !important;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
212
|
+
.root[data-disabled] .input {
|
|
213
|
+
border-color: var(
|
|
214
|
+
--recursica_ui-kit_components_date-picker_variants_states_disabled_properties_colors_border-color
|
|
215
|
+
) !important;
|
|
216
|
+
background-color: var(
|
|
217
|
+
--recursica_ui-kit_components_date-picker_variants_states_disabled_properties_colors_background
|
|
218
|
+
) !important;
|
|
219
|
+
color: var(
|
|
220
|
+
--recursica_ui-kit_components_date-picker_variants_states_disabled_properties_colors_text
|
|
221
|
+
) !important;
|
|
222
|
+
cursor: not-allowed;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.root[data-disabled] .section[data-position="left"] :global(svg) {
|
|
226
|
+
color: var(
|
|
227
|
+
--recursica_ui-kit_components_date-picker_variants_states_disabled_properties_colors_leading-icon
|
|
228
|
+
) !important;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* =========================================
|
|
232
|
+
CALENDAR POPOVER OVERRIDES
|
|
233
|
+
Maps generic popover & solid button tokens
|
|
234
|
+
to enforce Recursica's global styling.
|
|
235
|
+
========================================= */
|
|
236
|
+
|
|
237
|
+
.dropdown {
|
|
238
|
+
background-color: var(
|
|
239
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_background
|
|
240
|
+
);
|
|
241
|
+
border: var(
|
|
242
|
+
--recursica_ui-kit_components_hover-card-popover_properties_border-size
|
|
243
|
+
)
|
|
244
|
+
solid
|
|
245
|
+
var(
|
|
246
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_border-color
|
|
247
|
+
);
|
|
248
|
+
border-radius: var(
|
|
249
|
+
--recursica_ui-kit_components_hover-card-popover_properties_border-radius
|
|
250
|
+
);
|
|
251
|
+
box-shadow: var(
|
|
252
|
+
--recursica_ui-kit_components_hover-card-popover_properties_elevation
|
|
253
|
+
);
|
|
254
|
+
padding: var(
|
|
255
|
+
--recursica_ui-kit_components_hover-card-popover_properties_vertical-padding
|
|
256
|
+
)
|
|
257
|
+
var(
|
|
258
|
+
--recursica_ui-kit_components_hover-card-popover_properties_horizontal-padding
|
|
259
|
+
);
|
|
260
|
+
font-family: var(
|
|
261
|
+
--recursica_ui-kit_components_hover-card-popover_properties_content-text_font-family
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.calendarHeader {
|
|
266
|
+
color: var(
|
|
267
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_content
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.day {
|
|
272
|
+
color: var(
|
|
273
|
+
--recursica_ui-kit_components_hover-card-popover_properties_colors_content
|
|
274
|
+
);
|
|
275
|
+
border-radius: var(--recursica_brand_dimensions_border-radii_default, 4px);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.day[data-selected],
|
|
279
|
+
.day[data-selected]:hover {
|
|
280
|
+
background-color: var(
|
|
281
|
+
--recursica_ui-kit_components_button_variants_styles_solid_properties_colors_background
|
|
282
|
+
);
|
|
283
|
+
color: var(
|
|
284
|
+
--recursica_ui-kit_components_button_variants_styles_solid_properties_colors_text
|
|
285
|
+
);
|
|
286
|
+
}
|