@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.
Files changed (91) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/mantine-adapter.cjs +1 -1
  3. package/dist/mantine-adapter.cjs.map +1 -1
  4. package/dist/mantine-adapter.css +1 -1
  5. package/dist/mantine-adapter.js +2017 -1630
  6. package/dist/mantine-adapter.js.map +1 -1
  7. package/dist/src/components/AutoComplete/AutoComplete.d.ts +9 -0
  8. package/dist/src/components/Avatar/Avatar.d.ts +1 -1
  9. package/dist/src/components/Badge/Badge.d.ts +1 -1
  10. package/dist/src/components/Button/Button.d.ts +1 -1
  11. package/dist/src/components/Card/Card.d.ts +1 -1
  12. package/dist/src/components/DatePicker/DatePicker.d.ts +8 -2
  13. package/dist/src/components/Flex/Flex.d.ts +1 -1
  14. package/dist/src/components/Link/Link.d.ts +1 -1
  15. package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +6 -1
  16. package/dist/src/components/Slider/Slider.d.ts +24 -2
  17. package/dist/src/components/Text/Text.d.ts +1 -1
  18. package/dist/src/components/Toast/Toast.d.ts +1 -1
  19. package/dist/src/components/index.d.ts +1 -0
  20. package/dist/test.html +1 -0
  21. package/package.json +5 -2
  22. package/src/GlobalExemptions.modules.css +13 -0
  23. package/src/components/AutoComplete/AUTOCOMPLETE_IMPLEMENTATION_NOTES.md +21 -0
  24. package/src/components/AutoComplete/AutoComplete.module.css +311 -0
  25. package/src/components/AutoComplete/AutoComplete.stories.tsx +187 -0
  26. package/src/components/AutoComplete/AutoComplete.tsx +154 -0
  27. package/src/components/Avatar/Avatar.module.css +40 -36
  28. package/src/components/Badge/Badge.module.css +4 -1
  29. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -10
  30. package/src/components/Button/Button.module.css +215 -56
  31. package/src/components/Button/Button.stories.tsx +27 -0
  32. package/src/components/Button/Button.tsx +11 -4
  33. package/src/components/Card/Card.module.css +58 -1
  34. package/src/components/Card/Card.stories.tsx +4 -2
  35. package/src/components/Checkbox/Checkbox.module.css +74 -46
  36. package/src/components/Checkbox/Checkbox.stories.tsx +3 -0
  37. package/src/components/Checkbox/CheckboxGroup.tsx +1 -9
  38. package/src/components/Chip/Chip.module.css +19 -1
  39. package/src/components/DatePicker/DATEPICKER_IMPLEMENTATION_NOTES.md +16 -0
  40. package/src/components/DatePicker/DatePicker.module.css +286 -0
  41. package/src/components/DatePicker/DatePicker.stories.tsx +127 -4
  42. package/src/components/DatePicker/DatePicker.tsx +166 -5
  43. package/src/components/Dropdown/Dropdown.module.css +42 -15
  44. package/src/components/Dropdown/Dropdown.stories.tsx +3 -0
  45. package/src/components/Dropdown/Dropdown.tsx +5 -1
  46. package/src/components/FileInput/FileInput.module.css +50 -0
  47. package/src/components/FileUpload/FileUpload.module.css +43 -0
  48. package/src/components/FormControlLayout/FormControlLayout.module.css +12 -2
  49. package/src/components/FormControlWrapper/FormControlWrapper.module.css +67 -0
  50. package/src/components/HoverCard/HoverCard.module.css +12 -5
  51. package/src/components/Label/Label.module.css +11 -3
  52. package/src/components/Link/Link.module.css +8 -0
  53. package/src/components/Loader/LOADER_IMPLEMENTATION_NOTES.md +1 -2
  54. package/src/components/Loader/Loader.module.css +3 -9
  55. package/src/components/Menu/Menu.module.css +73 -30
  56. package/src/components/Modal/Modal.module.css +92 -47
  57. package/src/components/NumberInput/NumberInput.module.css +46 -15
  58. package/src/components/NumberInput/NumberInput.tsx +5 -1
  59. package/src/components/Pagination/Pagination.module.css +123 -41
  60. package/src/components/Panel/Panel.module.css +55 -3
  61. package/src/components/Popover/Popover.module.css +6 -4
  62. package/src/components/Radio/Radio.module.css +72 -59
  63. package/src/components/Radio/Radio.stories.tsx +3 -0
  64. package/src/components/Radio/RadioGroup.tsx +1 -8
  65. package/src/components/ReadOnlyField/ReadOnlyField.module.css +14 -0
  66. package/src/components/ReadOnlyField/ReadOnlyField.tsx +16 -1
  67. package/src/components/SegmentedControl/SegmentedControl.module.css +106 -41
  68. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +1 -4
  69. package/src/components/SegmentedControl/SegmentedControl.tsx +18 -4
  70. package/src/components/Slider/IMPLEMENTATION_NOTES.md +49 -0
  71. package/src/components/Slider/Slider.module.css +498 -0
  72. package/src/components/Slider/Slider.stories.tsx +159 -4
  73. package/src/components/Slider/Slider.tsx +283 -4
  74. package/src/components/Stepper/Stepper.module.css +53 -2
  75. package/src/components/Switch/Switch.module.css +62 -23
  76. package/src/components/Switch/Switch.stories.tsx +3 -0
  77. package/src/components/Switch/Switch.tsx +1 -0
  78. package/src/components/Switch/SwitchGroup.tsx +3 -10
  79. package/src/components/Tabs/Tabs.module.css +33 -12
  80. package/src/components/TextArea/TextArea.module.css +58 -120
  81. package/src/components/TextArea/TextArea.stories.tsx +3 -0
  82. package/src/components/TextArea/TextArea.tsx +7 -3
  83. package/src/components/TextField/TextField.module.css +46 -15
  84. package/src/components/TextField/TextField.tsx +5 -1
  85. package/src/components/TimePicker/TimePicker.module.css +44 -0
  86. package/src/components/Timeline/Timeline.module.css +6 -0
  87. package/src/components/Toast/Toast.module.css +56 -1
  88. package/src/components/Toast/Toast.tsx +1 -1
  89. package/src/components/Tooltip/Tooltip.module.css +9 -0
  90. package/src/components/TransferList/TransferList.module.css +41 -0
  91. package/src/components/index.ts +1 -0
@@ -35,6 +35,9 @@
35
35
  --tabs-vertical-padding: var(
36
36
  --recursica_ui-kit_components_tabs_variants_orientation_horizontal_properties_vertical-padding
37
37
  );
38
+ --tabs-content-alignment: var(
39
+ --recursica_ui-kit_components_tabs_variants_orientation_horizontal_properties_tab-content-alignment
40
+ );
38
41
  }
39
42
 
40
43
  .root[data-orientation="horizontal"] .list {
@@ -59,6 +62,9 @@
59
62
  --tabs-vertical-padding: var(
60
63
  --recursica_ui-kit_components_tabs_variants_orientation_vertical_properties_vertical-padding
61
64
  );
65
+ --tabs-content-alignment: var(
66
+ --recursica_ui-kit_components_tabs_variants_orientation_vertical_properties_tab-content-alignment
67
+ );
62
68
  }
63
69
 
64
70
  .root[data-orientation="vertical"] .list {
@@ -85,17 +91,23 @@
85
91
  --tabs-color: var(
86
92
  --recursica_ui-kit_components_tabs_variants_styles_default_properties_active_colors_border-color
87
93
  ) !important;
94
+ --tabs-hover-color: var(
95
+ --recursica_ui-kit_components_tabs_variants_styles_default_properties_hover-color
96
+ );
97
+ --tabs-hover-opacity: var(
98
+ --recursica_ui-kit_components_tabs_variants_styles_default_properties_hover-opacity
99
+ );
88
100
  }
89
101
 
90
102
  .root[data-variant="default"][data-orientation="horizontal"] .list {
91
103
  margin-bottom: var(
92
- --recursica_ui-kit_components_tabs_variants_styles_default_orientation_horizontal_properties_tabs-content-gap
104
+ --recursica_ui-kit_components_tabs_variants_styles_default_variants_orientation_horizontal_properties_tabs-content-gap
93
105
  );
94
106
  }
95
107
 
96
108
  .root[data-variant="default"][data-orientation="vertical"] .list {
97
109
  margin-right: var(
98
- --recursica_ui-kit_components_tabs_variants_styles_default_orientation_vertical_properties_tabs-content-gap
110
+ --recursica_ui-kit_components_tabs_variants_styles_default_variants_orientation_vertical_properties_tabs-content-gap
99
111
  );
100
112
  }
101
113
 
@@ -116,17 +128,23 @@
116
128
  --tabs-color: var(
117
129
  --recursica_ui-kit_components_tabs_variants_styles_outline_properties_active_colors_border-color
118
130
  ) !important;
131
+ --tabs-hover-color: var(
132
+ --recursica_ui-kit_components_tabs_variants_styles_outline_properties_hover-color
133
+ );
134
+ --tabs-hover-opacity: var(
135
+ --recursica_ui-kit_components_tabs_variants_styles_outline_properties_hover-opacity
136
+ );
119
137
  }
120
138
 
121
139
  .root[data-variant="outline"][data-orientation="horizontal"] .list {
122
140
  margin-bottom: var(
123
- --recursica_ui-kit_components_tabs_variants_styles_outline_orientation_horizontal_properties_tabs-content-gap
141
+ --recursica_ui-kit_components_tabs_variants_styles_outline_variants_orientation_horizontal_properties_tabs-content-gap
124
142
  );
125
143
  }
126
144
 
127
145
  .root[data-variant="outline"][data-orientation="vertical"] .list {
128
146
  margin-right: var(
129
- --recursica_ui-kit_components_tabs_variants_styles_outline_orientation_vertical_properties_tabs-content-gap
147
+ --recursica_ui-kit_components_tabs_variants_styles_outline_variants_orientation_vertical_properties_tabs-content-gap
130
148
  );
131
149
  }
132
150
 
@@ -141,17 +159,23 @@
141
159
  --tabs-border-radius: var(
142
160
  --recursica_ui-kit_components_tabs_variants_styles_pills_properties_border-radius
143
161
  );
162
+ --tabs-hover-color: var(
163
+ --recursica_ui-kit_components_tabs_variants_styles_pills_properties_hover-color
164
+ );
165
+ --tabs-hover-opacity: var(
166
+ --recursica_ui-kit_components_tabs_variants_styles_pills_properties_hover-opacity
167
+ );
144
168
  }
145
169
 
146
170
  .root[data-variant="pills"][data-orientation="horizontal"] .list {
147
171
  margin-bottom: var(
148
- --recursica_ui-kit_components_tabs_variants_styles_pills_orientation_horizontal_properties_tabs-content-gap
172
+ --recursica_ui-kit_components_tabs_variants_styles_pills_variants_orientation_horizontal_properties_tabs-content-gap
149
173
  );
150
174
  }
151
175
 
152
176
  .root[data-variant="pills"][data-orientation="vertical"] .list {
153
177
  margin-right: var(
154
- --recursica_ui-kit_components_tabs_variants_styles_pills_orientation_vertical_properties_tabs-content-gap
178
+ --recursica_ui-kit_components_tabs_variants_styles_pills_variants_orientation_vertical_properties_tabs-content-gap
155
179
  );
156
180
  }
157
181
 
@@ -165,8 +189,7 @@
165
189
  gap: var(--tabs-element-gap);
166
190
  display: flex;
167
191
  align-items: center;
168
- /* Alignment can be mapped if defined */
169
- justify-content: flex-start;
192
+ justify-content: var(--tabs-content-alignment);
170
193
  cursor: pointer;
171
194
  position: relative;
172
195
 
@@ -386,10 +409,8 @@
386
409
  position: absolute;
387
410
  inset: 0;
388
411
  border-radius: inherit;
389
- background-color: var(
390
- --recursica_ui-kit_components_tabs_properties_hover-color
391
- );
392
- opacity: var(--recursica_ui-kit_components_tabs_properties_hover-opacity);
412
+ background-color: var(--tabs-hover-color);
413
+ opacity: var(--tabs-hover-opacity);
393
414
  pointer-events: none;
394
415
  z-index: 0;
395
416
  }
@@ -1,3 +1,25 @@
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_textarea_variants_states_default_properties_border-size */
5
+ /* recursica-ignore: --recursica_ui-kit_components_textarea_variants_states_disabled_properties_border-size */
6
+ /* recursica-ignore: --recursica_ui-kit_components_textarea_variants_states_error_properties_border-size */
7
+ /* recursica-ignore: --recursica_ui-kit_components_textarea_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_textarea_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_textarea_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.
@@ -9,29 +31,6 @@
9
31
  display: flex;
10
32
  position: relative;
11
33
  width: 100%;
12
- min-height: var(
13
- --recursica_ui-kit_components_text-field_properties_min-height
14
- );
15
-
16
- /* Override Mantine native Input variables governing section spacing padding mathematics safely */
17
- --input-left-section-size: calc(
18
- var(--recursica_ui-kit_components_text-field_properties_icon-size) +
19
- (
20
- var(
21
- --recursica_ui-kit_components_text-field_properties_horizontal-padding
22
- ) *
23
- 2
24
- )
25
- );
26
- --input-right-section-size: calc(
27
- var(--recursica_ui-kit_components_text-field_properties_icon-size) +
28
- (
29
- var(
30
- --recursica_ui-kit_components_text-field_properties_horizontal-padding
31
- ) *
32
- 2
33
- )
34
- );
35
34
  }
36
35
 
37
36
  .input {
@@ -40,63 +39,69 @@
40
39
  box-sizing: border-box;
41
40
  margin: 0;
42
41
 
43
- /* Box Geometry */
44
- min-height: var(
45
- --recursica_ui-kit_components_text-field_properties_min-height
42
+ /* Sizing driven by rows token */
43
+ min-height: calc(
44
+ var(--recursica_ui-kit_components_textarea_properties_rows) *
45
+ var(--recursica_ui-kit_components_textarea_properties_text_line-height) +
46
+ 2 *
47
+ var(--recursica_ui-kit_components_textarea_properties_vertical-padding) +
48
+ 2px
46
49
  );
50
+
51
+ /* Box Geometry */
47
52
  padding-top: var(
48
- --recursica_ui-kit_components_text-field_properties_vertical-padding
53
+ --recursica_ui-kit_components_textarea_properties_vertical-padding
49
54
  );
50
55
  padding-bottom: var(
51
- --recursica_ui-kit_components_text-field_properties_vertical-padding
56
+ --recursica_ui-kit_components_textarea_properties_vertical-padding
52
57
  );
53
58
  padding-left: var(
54
- --recursica_ui-kit_components_text-field_properties_horizontal-padding
59
+ --recursica_ui-kit_components_textarea_properties_horizontal-padding
55
60
  );
56
61
  padding-right: var(
57
- --recursica_ui-kit_components_text-field_properties_horizontal-padding
62
+ --recursica_ui-kit_components_textarea_properties_horizontal-padding
58
63
  );
59
64
  border-radius: var(
60
- --recursica_ui-kit_components_text-field_properties_border-radius
65
+ --recursica_ui-kit_components_textarea_properties_border-radius
61
66
  );
62
67
  border-width: 1px;
63
68
  border-style: solid;
64
69
 
65
70
  /* Strict Typography Unification */
66
71
  font-family: var(
67
- --recursica_ui-kit_components_text-field_properties_text_font-family
72
+ --recursica_ui-kit_components_textarea_properties_text_font-family
68
73
  );
69
74
  font-size: var(
70
- --recursica_ui-kit_components_text-field_properties_text_font-size
75
+ --recursica_ui-kit_components_textarea_properties_text_font-size
71
76
  );
72
77
  font-style: var(
73
- --recursica_ui-kit_components_text-field_properties_text_font-style
78
+ --recursica_ui-kit_components_textarea_properties_text_font-style
74
79
  );
75
80
  font-weight: var(
76
- --recursica_ui-kit_components_text-field_properties_text_font-weight
81
+ --recursica_ui-kit_components_textarea_properties_text_font-weight
77
82
  );
78
83
  letter-spacing: var(
79
- --recursica_ui-kit_components_text-field_properties_text_letter-spacing
84
+ --recursica_ui-kit_components_textarea_properties_text_letter-spacing
80
85
  );
81
86
  line-height: var(
82
- --recursica_ui-kit_components_text-field_properties_text_line-height
87
+ --recursica_ui-kit_components_textarea_properties_text_line-height
83
88
  );
84
89
  text-decoration: var(
85
- --recursica_ui-kit_components_text-field_properties_text_text-decoration
90
+ --recursica_ui-kit_components_textarea_properties_text_text-decoration
86
91
  );
87
92
  text-transform: var(
88
- --recursica_ui-kit_components_text-field_properties_text_text-transform
93
+ --recursica_ui-kit_components_textarea_properties_text_text-transform
89
94
  );
90
95
 
91
96
  /* Base State Default Execution */
92
97
  background-color: var(
93
- --recursica_ui-kit_components_text-field_variants_states_default_properties_colors_background
98
+ --recursica_ui-kit_components_textarea_variants_states_default_properties_colors_background
94
99
  );
95
100
  border-color: var(
96
- --recursica_ui-kit_components_text-field_variants_states_default_properties_colors_border-color
101
+ --recursica_ui-kit_components_textarea_variants_states_default_properties_colors_border-color
97
102
  );
98
103
  color: var(
99
- --recursica_ui-kit_components_text-field_variants_states_default_properties_colors_text
104
+ --recursica_ui-kit_components_textarea_variants_states_default_properties_colors_text
100
105
  );
101
106
 
102
107
  outline: none;
@@ -104,119 +109,52 @@
104
109
 
105
110
  .input::placeholder {
106
111
  opacity: var(
107
- --recursica_ui-kit_components_text-field_properties_placeholder-opacity
112
+ --recursica_ui-kit_components_textarea_properties_placeholder-opacity
108
113
  );
109
114
  color: inherit;
110
115
  }
111
116
 
112
- /* Dynamic Padding Overrides */
113
- .root[data-with-left-section] .input {
114
- padding-left: var(--input-left-section-size);
115
- }
116
-
117
- .root[data-with-right-section] .input {
118
- padding-right: var(--input-right-section-size);
119
- }
120
-
121
- /* Flexible End-Caps (Icons, actions) */
122
- .section {
123
- display: flex;
124
- align-items: center;
125
- justify-content: center;
126
- height: 100%;
127
- }
128
-
129
- .section :global(svg) {
130
- width: var(--recursica_ui-kit_components_text-field_properties_icon-size);
131
- height: var(--recursica_ui-kit_components_text-field_properties_icon-size);
132
- color: var(
133
- --recursica_ui-kit_components_text-field_variants_states_default_properties_colors_leading-icon
134
- );
135
- }
136
-
137
- .section[data-position="right"] :global(svg) {
138
- color: var(
139
- --recursica_ui-kit_components_text-field_variants_states_default_properties_colors_trailing-icon
140
- );
141
- }
142
-
143
117
  /* -------------------------------------
144
118
  STATE CASCADE ARCHITECTURE
145
119
  -------------------------------------- */
146
120
 
147
- /* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
121
+ /* Focus State Mapping (Triggered internally via browser focus rules) */
148
122
  .input:focus-within,
149
123
  .input:focus {
150
124
  border-color: var(
151
- --recursica_ui-kit_components_text-field_variants_states_focus_properties_colors_border-color
125
+ --recursica_ui-kit_components_textarea_variants_states_focus_properties_colors_border-color
152
126
  );
153
127
  background-color: var(
154
- --recursica_ui-kit_components_text-field_variants_states_focus_properties_colors_background
128
+ --recursica_ui-kit_components_textarea_variants_states_focus_properties_colors_background
155
129
  );
156
130
  color: var(
157
- --recursica_ui-kit_components_text-field_variants_states_focus_properties_colors_text
158
- );
159
- }
160
-
161
- .root:focus-within .section[data-position="left"] :global(svg) {
162
- color: var(
163
- --recursica_ui-kit_components_text-field_variants_states_focus_properties_colors_leading-icon
164
- );
165
- }
166
-
167
- .root:focus-within .section[data-position="right"] :global(svg) {
168
- color: var(
169
- --recursica_ui-kit_components_text-field_variants_states_focus_properties_colors_trailing-icon
131
+ --recursica_ui-kit_components_textarea_variants_states_focus_properties_colors_text
170
132
  );
171
133
  }
172
134
 
173
135
  /* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
174
136
  .root[data-error] .input {
175
137
  border-color: var(
176
- --recursica_ui-kit_components_text-field_variants_states_error_properties_colors_border-color
138
+ --recursica_ui-kit_components_textarea_variants_states_error_properties_colors_border-color
177
139
  ) !important;
178
140
  background-color: var(
179
- --recursica_ui-kit_components_text-field_variants_states_error_properties_colors_background
180
- ) !important;
181
- color: var(
182
- --recursica_ui-kit_components_text-field_variants_states_error_properties_colors_text
183
- ) !important;
184
- }
185
-
186
- .root[data-error] .section[data-position="left"] :global(svg) {
187
- color: var(
188
- --recursica_ui-kit_components_text-field_variants_states_error_properties_colors_leading-icon
141
+ --recursica_ui-kit_components_textarea_variants_states_error_properties_colors_background
189
142
  ) !important;
190
- }
191
-
192
- .root[data-error] .section[data-position="right"] :global(svg) {
193
143
  color: var(
194
- --recursica_ui-kit_components_text-field_variants_states_error_properties_colors_trailing-icon
144
+ --recursica_ui-kit_components_textarea_variants_states_error_properties_colors_text
195
145
  ) !important;
196
146
  }
197
147
 
198
148
  /* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
199
149
  .root[data-disabled] .input {
200
150
  border-color: var(
201
- --recursica_ui-kit_components_text-field_variants_states_disabled_properties_colors_border-color
151
+ --recursica_ui-kit_components_textarea_variants_states_disabled_properties_colors_border-color
202
152
  ) !important;
203
153
  background-color: var(
204
- --recursica_ui-kit_components_text-field_variants_states_disabled_properties_colors_background
154
+ --recursica_ui-kit_components_textarea_variants_states_disabled_properties_colors_background
205
155
  ) !important;
206
156
  color: var(
207
- --recursica_ui-kit_components_text-field_variants_states_disabled_properties_colors_text
157
+ --recursica_ui-kit_components_textarea_variants_states_disabled_properties_colors_text
208
158
  ) !important;
209
159
  cursor: not-allowed;
210
160
  }
211
-
212
- .root[data-disabled] .section[data-position="left"] :global(svg) {
213
- color: var(
214
- --recursica_ui-kit_components_text-field_variants_states_disabled_properties_colors_leading-icon
215
- ) !important;
216
- }
217
-
218
- .root[data-disabled] .section[data-position="right"] :global(svg) {
219
- color: var(
220
- --recursica_ui-kit_components_text-field_variants_states_disabled_properties_colors_trailing-icon
221
- ) !important;
222
- }
@@ -26,6 +26,9 @@ const meta: Meta<TextAreaStoryProps> = {
26
26
  autosize: false,
27
27
  },
28
28
  argTypes: {
29
+ disabled: {
30
+ control: "boolean",
31
+ },
29
32
  ...formControlArgTypes,
30
33
  readOnly: {
31
34
  control: "boolean",
@@ -98,12 +98,16 @@ export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
98
98
  : styles.input;
99
99
  }
100
100
 
101
+ const wrapperClass = className
102
+ ? `${styles.layoutOverride} ${className}`
103
+ : styles.layoutOverride;
104
+
101
105
  return (
102
106
  <WithReadOnlyWrapper
103
- className={className}
107
+ className={wrapperClass}
104
108
  style={style as React.CSSProperties}
105
- controlMaxWidth="var(--recursica_ui-kit_components_text-field_properties_max-width)"
106
- controlMinWidth="var(--recursica_ui-kit_components_text-field_properties_min-width)"
109
+ controlMaxWidth="var(--recursica_ui-kit_components_textarea_properties_max-width)"
110
+ controlMinWidth="var(--recursica_ui-kit_components_textarea_properties_min-width)"
107
111
  overStyled={overStyled as true}
108
112
  formLayout={formLayout}
109
113
  labelSize={labelSize}
@@ -1,3 +1,25 @@
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_text-field_variants_states_default_properties_border-size */
5
+ /* recursica-ignore: --recursica_ui-kit_components_text-field_variants_states_disabled_properties_border-size */
6
+ /* recursica-ignore: --recursica_ui-kit_components_text-field_variants_states_error_properties_border-size */
7
+ /* recursica-ignore: --recursica_ui-kit_components_text-field_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_text-field_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_text-field_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.
@@ -15,22 +37,18 @@
15
37
 
16
38
  /* Override Mantine native Input variables governing section spacing padding mathematics safely */
17
39
  --input-left-section-size: calc(
18
- var(--recursica_ui-kit_components_text-field_properties_icon-size) +
19
- (
20
- var(
21
- --recursica_ui-kit_components_text-field_properties_horizontal-padding
22
- ) *
23
- 2
24
- )
40
+ var(
41
+ --recursica_ui-kit_components_text-field_properties_horizontal-padding
42
+ ) +
43
+ var(--recursica_ui-kit_components_text-field_properties_icon-size) +
44
+ var(--recursica_ui-kit_components_text-field_properties_icon-text-gap)
25
45
  );
26
46
  --input-right-section-size: calc(
27
- var(--recursica_ui-kit_components_text-field_properties_icon-size) +
28
- (
29
- var(
30
- --recursica_ui-kit_components_text-field_properties_horizontal-padding
31
- ) *
32
- 2
33
- )
47
+ var(
48
+ --recursica_ui-kit_components_text-field_properties_horizontal-padding
49
+ ) +
50
+ var(--recursica_ui-kit_components_text-field_properties_icon-size) +
51
+ var(--recursica_ui-kit_components_text-field_properties_icon-text-gap)
34
52
  );
35
53
  }
36
54
 
@@ -122,10 +140,23 @@
122
140
  .section {
123
141
  display: flex;
124
142
  align-items: center;
125
- justify-content: center;
126
143
  height: 100%;
127
144
  }
128
145
 
146
+ .section[data-position="left"] {
147
+ justify-content: flex-start;
148
+ padding-left: var(
149
+ --recursica_ui-kit_components_text-field_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_text-field_properties_horizontal-padding
157
+ );
158
+ }
159
+
129
160
  .section :global(svg) {
130
161
  width: var(--recursica_ui-kit_components_text-field_properties_icon-size);
131
162
  height: var(--recursica_ui-kit_components_text-field_properties_icon-size);
@@ -90,9 +90,13 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
90
90
  : styles.section;
91
91
  }
92
92
 
93
+ const wrapperClass = className
94
+ ? `${styles.layoutOverride} ${className}`
95
+ : styles.layoutOverride;
96
+
93
97
  return (
94
98
  <WithReadOnlyWrapper
95
- className={className}
99
+ className={wrapperClass}
96
100
  style={style as React.CSSProperties}
97
101
  controlMaxWidth="var(--recursica_ui-kit_components_text-field_properties_max-width)"
98
102
  controlMinWidth="var(--recursica_ui-kit_components_text-field_properties_min-width)"
@@ -0,0 +1,44 @@
1
+ /*
2
+ * EXEMPTIONS:
3
+ * - TimePicker is a "Coming Soon" stub component.
4
+ * - It renders a placeholder and has no active implementation or CSS stylesheet yet.
5
+ * - The following tokens generated by Figma are ignored until the component is fully built.
6
+ */
7
+
8
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_border-radius */
9
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_horizontal-padding */
10
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_icon-size */
11
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_icon-text-gap */
12
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_placeholder-opacity */
13
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_font-family */
14
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_font-size */
15
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_font-style */
16
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_font-weight */
17
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_letter-spacing */
18
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_line-height */
19
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_text-decoration */
20
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_text_text-transform */
21
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_vertical-padding */
22
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_properties_width */
23
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_layouts_side-by-side_properties_top-bottom-margin */
24
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_layouts_stacked_properties_top-bottom-margin */
25
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_default_properties_border-size */
26
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_disabled_properties_border-size */
27
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_error_properties_border-size */
28
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_focus_properties_border-size */
29
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_default_properties_colors_background */
30
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_default_properties_colors_border-color */
31
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_default_properties_colors_icon */
32
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_default_properties_colors_text */
33
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_disabled_properties_colors_background */
34
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_disabled_properties_colors_border-color */
35
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_disabled_properties_colors_icon */
36
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_disabled_properties_colors_text */
37
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_error_properties_colors_background */
38
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_error_properties_colors_border-color */
39
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_error_properties_colors_icon */
40
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_error_properties_colors_text */
41
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_focus_properties_colors_background */
42
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_focus_properties_colors_border-color */
43
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_focus_properties_colors_icon */
44
+ /* recursica-ignore: --recursica_ui-kit_components_time-picker_variants_states_focus_properties_colors_text */
@@ -1,3 +1,9 @@
1
+ /* EXEMPTIONS:
2
+ - timeline-bullet_variants_types_avatar_properties_avatar-size is ignored because under the avatar timeline variant,
3
+ the bullet container size uses fallback bullet-size configurations to maintain vertical alignment with the
4
+ inactive/active connector line, while the nested Avatar subcomponent handles its own sizing natively. */
5
+ /* recursica-ignore: --recursica_ui-kit_components_timeline-bullet_variants_types_avatar_properties_avatar-size */
6
+
1
7
  .root {
2
8
  display: flex;
3
9
  flex-direction: column;
@@ -1,6 +1,13 @@
1
+ /* EXEMPTIONS:
2
+ - elevation levels layer-1, layer-2, and layer-3 are ignored because all toasts explicitly use the standard
3
+ layer-0 elevation shadow for styling consistency. */
4
+ /* recursica-ignore: --recursica_ui-kit_components_toast_properties_elevation_layer-1 */
5
+ /* recursica-ignore: --recursica_ui-kit_components_toast_properties_elevation_layer-2 */
6
+ /* recursica-ignore: --recursica_ui-kit_components_toast_properties_elevation_layer-3 */
7
+
1
8
  /* HARDCODED VALUES:
2
9
  - border-style: none. To ensure the notification doesn't render unwanted borders unless specified.
3
- */
10
+ */
4
11
 
5
12
  /* ======================================
6
13
  TOAST / NOTIFICATION ROOT
@@ -54,6 +61,54 @@
54
61
  --recursica_ui-kit_components_toast_variants_styles_default_properties_colors_button
55
62
  );
56
63
  }
64
+
65
+ /* Error Variant styling */
66
+ &[data-variant="error"] {
67
+ background-color: var(
68
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_background
69
+ );
70
+
71
+ & .icon {
72
+ color: var(
73
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_text
74
+ ) !important;
75
+ }
76
+ & .title,
77
+ & .description {
78
+ color: var(
79
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_text
80
+ );
81
+ }
82
+ & .closeButton {
83
+ color: var(
84
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_button
85
+ );
86
+ }
87
+ }
88
+
89
+ /* Success Variant styling */
90
+ &[data-variant="success"] {
91
+ background-color: var(
92
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_background
93
+ );
94
+
95
+ & .icon {
96
+ color: var(
97
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_text
98
+ ) !important;
99
+ }
100
+ & .title,
101
+ & .description {
102
+ color: var(
103
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_text
104
+ );
105
+ }
106
+ & .closeButton {
107
+ color: var(
108
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_button
109
+ );
110
+ }
111
+ }
57
112
  }
58
113
 
59
114
  /* ======================================
@@ -14,7 +14,7 @@ export interface RecursicaToastProps {
14
14
  * The visual variant of the toast.
15
15
  * @default "default"
16
16
  */
17
- variant?: "default";
17
+ variant?: "default" | "error" | "success";
18
18
 
19
19
  /**
20
20
  * Loading state is natively unsupported by Recursica UI Kit.
@@ -1,3 +1,12 @@
1
+ /* EXEMPTIONS:
2
+ - beak-inset is ignored because Tooltip positioning calculations are handled dynamically by Mantine/Floating UI at the React runtime.
3
+ - beak-size is ignored because Mantine's tooltip arrows compute their sizing and positional offsets
4
+ dynamically within the React rendering engine (requires inline pixel number rather than standard CSS variables).
5
+ The beak size is checked in JS against a fixed value of 16px. If this variable changes, the TSX components
6
+ need to be reviewed/re-compiled. */
7
+ /* recursica-ignore: --recursica_ui-kit_components_tooltip_properties_beak-inset = 8px */
8
+ /* recursica-ignore: --recursica_ui-kit_components_tooltip_properties_beak-size = 16px */
9
+
1
10
  /* HARDCODED VALUES:
2
11
  - border-style: solid. Structural rendering rule for the tooltip border (Mantine uses Box
3
12
  which may not set border-style natively). Same pattern as Menu / HoverCard.