@recursica/adapter-mantine-v8 1.0.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 (362) hide show
  1. package/.storybook/commonArgTypes.ts +148 -0
  2. package/ARCHITECTURE.md +18 -0
  3. package/CHANGELOG.md +688 -0
  4. package/LICENSE +21 -0
  5. package/OVERSTYLING.md +56 -0
  6. package/README.md +70 -0
  7. package/SETUP.md +93 -0
  8. package/USAGE.md +57 -0
  9. package/dist/adapter-mantine-v8.cjs +12 -0
  10. package/dist/adapter-mantine-v8.cjs.map +1 -0
  11. package/dist/adapter-mantine-v8.css +1 -0
  12. package/dist/adapter-mantine-v8.js +5759 -0
  13. package/dist/adapter-mantine-v8.js.map +1 -0
  14. package/dist/index.d.ts +2095 -0
  15. package/dist/test.html +1 -0
  16. package/dist/vite.svg +1 -0
  17. package/docs/PHILOSOPHY.md +39 -0
  18. package/llms.txt +74 -0
  19. package/package.json +131 -0
  20. package/recursica_brand.json +2677 -0
  21. package/recursica_tokens.json +799 -0
  22. package/recursica_ui-kit.json +14981 -0
  23. package/recursica_variables_scoped.css +30489 -0
  24. package/src/GlobalExemptions.modules.css +7 -0
  25. package/src/Introduction.stories.tsx +154 -0
  26. package/src/OverStyling.tsx +79 -0
  27. package/src/Version.tsx +44 -0
  28. package/src/components/Accordion/ACCORDION_IMPLEMENTATION_NOTES.md +72 -0
  29. package/src/components/Accordion/Accordion.module.css +367 -0
  30. package/src/components/Accordion/Accordion.stories.tsx +189 -0
  31. package/src/components/Accordion/Accordion.test.tsx +1 -0
  32. package/src/components/Accordion/Accordion.tsx +220 -0
  33. package/src/components/Accordion/USAGE.md +51 -0
  34. package/src/components/Accordion/index.ts +1 -0
  35. package/src/components/AssistiveElement/ASSISTIVEELEMENT_IMPLEMENTATION_NOTES.md +45 -0
  36. package/src/components/AssistiveElement/AssistiveElement.module.css +111 -0
  37. package/src/components/AssistiveElement/AssistiveElement.stories.tsx +68 -0
  38. package/src/components/AssistiveElement/AssistiveElement.test.tsx +1 -0
  39. package/src/components/AssistiveElement/AssistiveElement.tsx +93 -0
  40. package/src/components/AssistiveElement/USAGE.md +36 -0
  41. package/src/components/AutoComplete/AUTOCOMPLETE_IMPLEMENTATION_NOTES.md +42 -0
  42. package/src/components/AutoComplete/AutoComplete.module.css +430 -0
  43. package/src/components/AutoComplete/AutoComplete.stories.tsx +336 -0
  44. package/src/components/AutoComplete/AutoComplete.test.tsx +1 -0
  45. package/src/components/AutoComplete/AutoComplete.tsx +179 -0
  46. package/src/components/AutoComplete/USAGE.md +80 -0
  47. package/src/components/Avatar/AVATAR_IMPLEMENTATION_NOTES.md +34 -0
  48. package/src/components/Avatar/Avatar.module.css +336 -0
  49. package/src/components/Avatar/Avatar.stories.tsx +92 -0
  50. package/src/components/Avatar/Avatar.test.tsx +1 -0
  51. package/src/components/Avatar/Avatar.tsx +108 -0
  52. package/src/components/Avatar/USAGE.md +38 -0
  53. package/src/components/Avatar/index.ts +1 -0
  54. package/src/components/Badge/BADGE_IMPLEMENTATION_NOTES.md +18 -0
  55. package/src/components/Badge/Badge.module.css +127 -0
  56. package/src/components/Badge/Badge.stories.tsx +78 -0
  57. package/src/components/Badge/Badge.test.tsx +1 -0
  58. package/src/components/Badge/Badge.tsx +64 -0
  59. package/src/components/Badge/USAGE.md +56 -0
  60. package/src/components/Breadcrumb/BREADCRUMB_IMPLEMENTATION_NOTES.md +47 -0
  61. package/src/components/Breadcrumb/Breadcrumb.module.css +48 -0
  62. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
  63. package/src/components/Breadcrumb/Breadcrumb.test.tsx +1 -0
  64. package/src/components/Breadcrumb/Breadcrumb.tsx +85 -0
  65. package/src/components/Breadcrumb/USAGE.md +55 -0
  66. package/src/components/Breadcrumb/markCurrentPageItem.test.ts +49 -0
  67. package/src/components/Button/Button.module.css +446 -0
  68. package/src/components/Button/Button.stories.tsx +196 -0
  69. package/src/components/Button/Button.styleIsolation.dom.test.tsx +98 -0
  70. package/src/components/Button/Button.tsx +184 -0
  71. package/src/components/Button/IMPLEMENTATION_NOTES.md +109 -0
  72. package/src/components/Button/USAGE.md +80 -0
  73. package/src/components/Button/index.ts +1 -0
  74. package/src/components/Card/CARD_IMPLEMENTATION_NOTES.md +17 -0
  75. package/src/components/Card/Card.module.css +119 -0
  76. package/src/components/Card/Card.stories.tsx +131 -0
  77. package/src/components/Card/Card.test.tsx +1 -0
  78. package/src/components/Card/Card.tsx +248 -0
  79. package/src/components/Card/USAGE.md +63 -0
  80. package/src/components/Checkbox/CHECKBOX_IMPLEMENTATION_NOTES.md +25 -0
  81. package/src/components/Checkbox/Checkbox.module.css +267 -0
  82. package/src/components/Checkbox/Checkbox.stories.tsx +97 -0
  83. package/src/components/Checkbox/Checkbox.test.tsx +1 -0
  84. package/src/components/Checkbox/Checkbox.tsx +151 -0
  85. package/src/components/Checkbox/CheckboxGroup.stories.tsx +139 -0
  86. package/src/components/Checkbox/CheckboxGroup.tsx +147 -0
  87. package/src/components/Checkbox/USAGE.md +48 -0
  88. package/src/components/Chip/CHIP_IMPLEMENTATION_NOTES.md +110 -0
  89. package/src/components/Chip/Chip.module.css +288 -0
  90. package/src/components/Chip/Chip.stories.tsx +128 -0
  91. package/src/components/Chip/Chip.test.tsx +1 -0
  92. package/src/components/Chip/Chip.tsx +157 -0
  93. package/src/components/Chip/USAGE.md +55 -0
  94. package/src/components/Container/CONTAINER_IMPLEMENTATION_NOTES.md +4 -0
  95. package/src/components/Container/Container.module.css +7 -0
  96. package/src/components/Container/Container.stories.tsx +118 -0
  97. package/src/components/Container/Container.test.tsx +1 -0
  98. package/src/components/Container/Container.tsx +69 -0
  99. package/src/components/Container/USAGE.md +47 -0
  100. package/src/components/DatePicker/DATEPICKER_IMPLEMENTATION_NOTES.md +31 -0
  101. package/src/components/DatePicker/DatePicker.icons.tsx +27 -0
  102. package/src/components/DatePicker/DatePicker.module.css +566 -0
  103. package/src/components/DatePicker/DatePicker.stories.tsx +158 -0
  104. package/src/components/DatePicker/DatePicker.test.tsx +1 -0
  105. package/src/components/DatePicker/DatePicker.tsx +218 -0
  106. package/src/components/DatePicker/USAGE.md +49 -0
  107. package/src/components/Dropdown/BareDropdown.tsx +97 -0
  108. package/src/components/Dropdown/DROPDOWN_IMPLEMENTATION_NOTES.md +12 -0
  109. package/src/components/Dropdown/Dropdown.module.css +477 -0
  110. package/src/components/Dropdown/Dropdown.stories.tsx +252 -0
  111. package/src/components/Dropdown/Dropdown.test.tsx +1 -0
  112. package/src/components/Dropdown/Dropdown.tsx +213 -0
  113. package/src/components/Dropdown/USAGE.md +69 -0
  114. package/src/components/FileInput/FILEINPUT_IMPLEMENTATION_NOTES.md +153 -0
  115. package/src/components/FileInput/FileInput.module.css +280 -0
  116. package/src/components/FileInput/FileInput.stories.tsx +313 -0
  117. package/src/components/FileInput/FileInput.test.tsx +1 -0
  118. package/src/components/FileInput/FileInput.tsx +417 -0
  119. package/src/components/FileInput/USAGE.md +145 -0
  120. package/src/components/FileUpload/FILEUPLOAD_IMPLEMENTATION_NOTES.md +244 -0
  121. package/src/components/FileUpload/FileUpload.module.css +205 -0
  122. package/src/components/FileUpload/FileUpload.stories.tsx +362 -0
  123. package/src/components/FileUpload/FileUpload.test.tsx +1 -0
  124. package/src/components/FileUpload/FileUpload.tsx +354 -0
  125. package/src/components/FileUpload/USAGE.md +199 -0
  126. package/src/components/Flex/FLEX_IMPLEMENTATION_NOTES.md +4 -0
  127. package/src/components/Flex/Flex.module.css +7 -0
  128. package/src/components/Flex/Flex.stories.tsx +128 -0
  129. package/src/components/Flex/Flex.test.tsx +1 -0
  130. package/src/components/Flex/Flex.tsx +75 -0
  131. package/src/components/Flex/USAGE.md +48 -0
  132. package/src/components/FormControlLayout/FormControlLayout.module.css +90 -0
  133. package/src/components/FormControlLayout/FormControlLayout.stories.tsx +118 -0
  134. package/src/components/FormControlLayout/FormControlLayout.test.tsx +1 -0
  135. package/src/components/FormControlLayout/FormControlLayout.tsx +74 -0
  136. package/src/components/FormControlLayout/USAGE.md +40 -0
  137. package/src/components/FormControlWrapper/FORMCONTROLWRAPPER_IMPLEMENTATION_NOTES.md +32 -0
  138. package/src/components/FormControlWrapper/FormControlWrapper.module.css +75 -0
  139. package/src/components/FormControlWrapper/FormControlWrapper.stories.tsx +129 -0
  140. package/src/components/FormControlWrapper/FormControlWrapper.test.tsx +1 -0
  141. package/src/components/FormControlWrapper/FormControlWrapper.tsx +151 -0
  142. package/src/components/FormControlWrapper/USAGE.md +47 -0
  143. package/src/components/Grid/GRID_IMPLEMENTATION_NOTES.md +18 -0
  144. package/src/components/Grid/Grid.module.css +11 -0
  145. package/src/components/Grid/Grid.stories.tsx +206 -0
  146. package/src/components/Grid/Grid.test.tsx +1 -0
  147. package/src/components/Grid/Grid.tsx +140 -0
  148. package/src/components/Grid/USAGE.md +47 -0
  149. package/src/components/Group/GROUP_IMPLEMENTATION_NOTES.md +4 -0
  150. package/src/components/Group/Group.module.css +7 -0
  151. package/src/components/Group/Group.stories.tsx +120 -0
  152. package/src/components/Group/Group.test.tsx +1 -0
  153. package/src/components/Group/Group.tsx +60 -0
  154. package/src/components/Group/USAGE.md +48 -0
  155. package/src/components/Heading/HEADING_IMPLEMENTATION_NOTES.md +18 -0
  156. package/src/components/Heading/Heading.module.css +13 -0
  157. package/src/components/Heading/Heading.stories.tsx +50 -0
  158. package/src/components/Heading/Heading.test.tsx +1 -0
  159. package/src/components/Heading/Heading.tsx +52 -0
  160. package/src/components/Heading/USAGE.md +36 -0
  161. package/src/components/HoverCard/HOVERCARD_IMPLEMENTATION_NOTES.md +77 -0
  162. package/src/components/HoverCard/HoverCard.module.css +90 -0
  163. package/src/components/HoverCard/HoverCard.stories.tsx +172 -0
  164. package/src/components/HoverCard/HoverCard.test.tsx +1 -0
  165. package/src/components/HoverCard/HoverCard.tsx +133 -0
  166. package/src/components/HoverCard/USAGE.md +52 -0
  167. package/src/components/Label/LABEL_IMPLEMENTATION_NOTES.md +48 -0
  168. package/src/components/Label/Label.module.css +141 -0
  169. package/src/components/Label/Label.stories.tsx +131 -0
  170. package/src/components/Label/Label.test.tsx +1 -0
  171. package/src/components/Label/Label.tsx +113 -0
  172. package/src/components/Label/USAGE.md +47 -0
  173. package/src/components/Label/index.ts +1 -0
  174. package/src/components/Layer/USAGE.md +54 -0
  175. package/src/components/Link/IMPLEMENTATION_NOTES.md +19 -0
  176. package/src/components/Link/Link.module.css +110 -0
  177. package/src/components/Link/Link.stories.tsx +58 -0
  178. package/src/components/Link/Link.test.tsx +1 -0
  179. package/src/components/Link/Link.tsx +67 -0
  180. package/src/components/Link/USAGE.md +56 -0
  181. package/src/components/Link/index.ts +1 -0
  182. package/src/components/Loader/LOADER_IMPLEMENTATION_NOTES.md +24 -0
  183. package/src/components/Loader/Loader.animate.dom.test.tsx +82 -0
  184. package/src/components/Loader/Loader.module.css +63 -0
  185. package/src/components/Loader/Loader.stories.tsx +123 -0
  186. package/src/components/Loader/Loader.test.tsx +1 -0
  187. package/src/components/Loader/Loader.tsx +69 -0
  188. package/src/components/Loader/USAGE.md +44 -0
  189. package/src/components/Menu/MENU_IMPLEMENTATION_NOTES.md +88 -0
  190. package/src/components/Menu/Menu.module.css +280 -0
  191. package/src/components/Menu/Menu.stories.tsx +371 -0
  192. package/src/components/Menu/Menu.test.tsx +1 -0
  193. package/src/components/Menu/Menu.tsx +373 -0
  194. package/src/components/Menu/USAGE.md +55 -0
  195. package/src/components/Modal/MODAL_IMPLEMENTATION_NOTES.md +32 -0
  196. package/src/components/Modal/Modal.module.css +302 -0
  197. package/src/components/Modal/Modal.stories.tsx +105 -0
  198. package/src/components/Modal/Modal.test.tsx +1 -0
  199. package/src/components/Modal/Modal.tsx +368 -0
  200. package/src/components/Modal/USAGE.md +58 -0
  201. package/src/components/Modal/index.ts +1 -0
  202. package/src/components/NumberInput/NUMBER_INPUT_IMPLEMENTATION_NOTES.md +24 -0
  203. package/src/components/NumberInput/NumberInput.module.css +302 -0
  204. package/src/components/NumberInput/NumberInput.stories.tsx +96 -0
  205. package/src/components/NumberInput/NumberInput.test.tsx +1 -0
  206. package/src/components/NumberInput/NumberInput.tsx +157 -0
  207. package/src/components/NumberInput/USAGE.md +52 -0
  208. package/src/components/Pagination/IMPLEMENTATION_NOTES.md +16 -0
  209. package/src/components/Pagination/Pagination.icons.tsx +66 -0
  210. package/src/components/Pagination/Pagination.module.css +188 -0
  211. package/src/components/Pagination/Pagination.stories.tsx +48 -0
  212. package/src/components/Pagination/Pagination.test.tsx +1 -0
  213. package/src/components/Pagination/Pagination.tsx +265 -0
  214. package/src/components/Pagination/USAGE.md +36 -0
  215. package/src/components/Pagination/index.ts +5 -0
  216. package/src/components/Panel/PANEL_IMPLEMENTATION_NOTES.md +116 -0
  217. package/src/components/Panel/Panel.module.css +209 -0
  218. package/src/components/Panel/Panel.stories.tsx +227 -0
  219. package/src/components/Panel/Panel.test.tsx +1 -0
  220. package/src/components/Panel/Panel.tsx +269 -0
  221. package/src/components/Panel/USAGE.md +56 -0
  222. package/src/components/Popover/IMPLEMENTATION_NOTES.md +77 -0
  223. package/src/components/Popover/Popover.module.css +86 -0
  224. package/src/components/Popover/Popover.stories.tsx +133 -0
  225. package/src/components/Popover/Popover.test.tsx +1 -0
  226. package/src/components/Popover/Popover.tsx +142 -0
  227. package/src/components/Popover/USAGE.md +61 -0
  228. package/src/components/Popover/index.ts +1 -0
  229. package/src/components/Radio/Radio.module.css +231 -0
  230. package/src/components/Radio/Radio.stories.tsx +93 -0
  231. package/src/components/Radio/Radio.test.tsx +1 -0
  232. package/src/components/Radio/Radio.tsx +168 -0
  233. package/src/components/Radio/RadioGroup.stories.tsx +117 -0
  234. package/src/components/Radio/RadioGroup.tsx +124 -0
  235. package/src/components/Radio/USAGE.md +36 -0
  236. package/src/components/ReadOnlyField/READ_ONLY_FIELD_IMPLEMENTATION_NOTES.md +15 -0
  237. package/src/components/ReadOnlyField/ReadOnlyBooleanField.tsx +21 -0
  238. package/src/components/ReadOnlyField/ReadOnlyField.module.css +54 -0
  239. package/src/components/ReadOnlyField/ReadOnlyField.stories.tsx +163 -0
  240. package/src/components/ReadOnlyField/ReadOnlyField.test.tsx +1 -0
  241. package/src/components/ReadOnlyField/ReadOnlyField.tsx +114 -0
  242. package/src/components/ReadOnlyField/ReadOnlySwitchField.tsx +21 -0
  243. package/src/components/ReadOnlyField/ReadOnlyTextField.tsx +48 -0
  244. package/src/components/ReadOnlyField/USAGE.md +44 -0
  245. package/src/components/ReadOnlyField/WithReadOnlyWrapper.tsx +93 -0
  246. package/src/components/ReadOnlyField/index.ts +5 -0
  247. package/src/components/RecursicaThemeProvider/USAGE.md +60 -0
  248. package/src/components/SegmentedControl/IMPLEMENTATION_NOTES.md +25 -0
  249. package/src/components/SegmentedControl/SegmentedControl.module.css +185 -0
  250. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +106 -0
  251. package/src/components/SegmentedControl/SegmentedControl.test.tsx +1 -0
  252. package/src/components/SegmentedControl/SegmentedControl.tsx +110 -0
  253. package/src/components/SegmentedControl/USAGE.md +55 -0
  254. package/src/components/Slider/IMPLEMENTATION_NOTES.md +92 -0
  255. package/src/components/Slider/Slider.module.css +588 -0
  256. package/src/components/Slider/Slider.stories.tsx +282 -0
  257. package/src/components/Slider/Slider.test.tsx +1 -0
  258. package/src/components/Slider/Slider.tsx +391 -0
  259. package/src/components/Slider/USAGE.md +56 -0
  260. package/src/components/Stack/STACK_IMPLEMENTATION_NOTES.md +4 -0
  261. package/src/components/Stack/Stack.module.css +7 -0
  262. package/src/components/Stack/Stack.stories.tsx +108 -0
  263. package/src/components/Stack/Stack.test.tsx +1 -0
  264. package/src/components/Stack/Stack.tsx +62 -0
  265. package/src/components/Stack/USAGE.md +48 -0
  266. package/src/components/Stepper/IMPLEMENTATION_NOTES.md +28 -0
  267. package/src/components/Stepper/Stepper.module.css +404 -0
  268. package/src/components/Stepper/Stepper.stories.tsx +148 -0
  269. package/src/components/Stepper/Stepper.test.tsx +1 -0
  270. package/src/components/Stepper/Stepper.tsx +93 -0
  271. package/src/components/Stepper/USAGE.md +41 -0
  272. package/src/components/Switch/SWITCH_IMPLEMENTATION_NOTES.md +64 -0
  273. package/src/components/Switch/Switch.module.css +279 -0
  274. package/src/components/Switch/Switch.stories.tsx +114 -0
  275. package/src/components/Switch/Switch.test.tsx +1 -0
  276. package/src/components/Switch/Switch.tsx +177 -0
  277. package/src/components/Switch/SwitchGroup.stories.tsx +132 -0
  278. package/src/components/Switch/SwitchGroup.tsx +127 -0
  279. package/src/components/Switch/USAGE.md +42 -0
  280. package/src/components/Table/TABLE_IMPLEMENTATION_NOTES.md +78 -0
  281. package/src/components/Table/Table.icons.tsx +40 -0
  282. package/src/components/Table/Table.module.css +444 -0
  283. package/src/components/Table/Table.stories.tsx +140 -0
  284. package/src/components/Table/Table.test.tsx +1 -0
  285. package/src/components/Table/Table.tsx +243 -0
  286. package/src/components/Table/USAGE.md +78 -0
  287. package/src/components/Tabs/IMPLEMENTATION_NOTES.md +27 -0
  288. package/src/components/Tabs/Tabs.module.css +591 -0
  289. package/src/components/Tabs/Tabs.stories.tsx +154 -0
  290. package/src/components/Tabs/Tabs.test.tsx +1 -0
  291. package/src/components/Tabs/Tabs.tsx +114 -0
  292. package/src/components/Tabs/USAGE.md +45 -0
  293. package/src/components/Text/TEXT_IMPLEMENTATION_NOTES.md +12 -0
  294. package/src/components/Text/Text.module.css +13 -0
  295. package/src/components/Text/Text.stories.tsx +75 -0
  296. package/src/components/Text/Text.test.tsx +1 -0
  297. package/src/components/Text/Text.tsx +53 -0
  298. package/src/components/Text/USAGE.md +40 -0
  299. package/src/components/TextArea/TEXTAREA_IMPLEMENTATION_NOTES.md +7 -0
  300. package/src/components/TextArea/TextArea.module.css +183 -0
  301. package/src/components/TextArea/TextArea.stories.tsx +94 -0
  302. package/src/components/TextArea/TextArea.test.tsx +1 -0
  303. package/src/components/TextArea/TextArea.tsx +137 -0
  304. package/src/components/TextArea/USAGE.md +48 -0
  305. package/src/components/TextField/TEXTFIELD_IMPLEMENTATION_NOTES.md +19 -0
  306. package/src/components/TextField/TextField.module.css +264 -0
  307. package/src/components/TextField/TextField.stories.tsx +162 -0
  308. package/src/components/TextField/TextField.test.tsx +1 -0
  309. package/src/components/TextField/TextField.tsx +139 -0
  310. package/src/components/TextField/USAGE.md +44 -0
  311. package/src/components/TimePicker/TIMEPICKER_IMPLEMENTATION_NOTES.md +119 -0
  312. package/src/components/TimePicker/TimePicker.module.css +291 -0
  313. package/src/components/TimePicker/TimePicker.stories.tsx +141 -0
  314. package/src/components/TimePicker/TimePicker.test.tsx +1 -0
  315. package/src/components/TimePicker/TimePicker.tsx +304 -0
  316. package/src/components/TimePicker/USAGE.md +57 -0
  317. package/src/components/Timeline/TIMELINE_IMPLEMENTATION_NOTES.md +13 -0
  318. package/src/components/Timeline/Timeline.module.css +373 -0
  319. package/src/components/Timeline/Timeline.stories.tsx +128 -0
  320. package/src/components/Timeline/Timeline.test.tsx +1 -0
  321. package/src/components/Timeline/Timeline.tsx +73 -0
  322. package/src/components/Timeline/TimelineItem.tsx +79 -0
  323. package/src/components/Timeline/USAGE.md +49 -0
  324. package/src/components/Toast/TOAST_IMPLEMENTATION_NOTES.md +39 -0
  325. package/src/components/Toast/Toast.module.css +184 -0
  326. package/src/components/Toast/Toast.stories.tsx +67 -0
  327. package/src/components/Toast/Toast.test.tsx +1 -0
  328. package/src/components/Toast/Toast.tsx +82 -0
  329. package/src/components/Toast/USAGE.md +50 -0
  330. package/src/components/Toast/index.ts +1 -0
  331. package/src/components/Tooltip/TOOLTIP_IMPLEMENTATION_NOTES.md +85 -0
  332. package/src/components/Tooltip/Tooltip.module.css +91 -0
  333. package/src/components/Tooltip/Tooltip.stories.tsx +165 -0
  334. package/src/components/Tooltip/Tooltip.test.tsx +1 -0
  335. package/src/components/Tooltip/Tooltip.tsx +117 -0
  336. package/src/components/Tooltip/USAGE.md +80 -0
  337. package/src/components/TransferList/TRANSFERLIST_IMPLEMENTATION_NOTES.md +111 -0
  338. package/src/components/TransferList/TransferList.module.css +182 -0
  339. package/src/components/TransferList/TransferList.stories.tsx +121 -0
  340. package/src/components/TransferList/TransferList.test.tsx +1 -0
  341. package/src/components/TransferList/TransferList.tsx +419 -0
  342. package/src/components/TransferList/USAGE.md +77 -0
  343. package/src/components/Tree/IMPLEMENTATION_NOTES.md +48 -0
  344. package/src/components/Tree/Tree.module.css +232 -0
  345. package/src/components/Tree/Tree.stories.tsx +104 -0
  346. package/src/components/Tree/Tree.test.tsx +1 -0
  347. package/src/components/Tree/Tree.tsx +220 -0
  348. package/src/components/Tree/USAGE.md +96 -0
  349. package/src/components/Tree/index.ts +1 -0
  350. package/src/components/index.ts +52 -0
  351. package/src/env.d.ts +7 -0
  352. package/src/index.ts +179 -0
  353. package/src/types/index.ts +9 -0
  354. package/src/types/mantine.d.ts +7 -0
  355. package/src/types/scss-modules.d.ts +9 -0
  356. package/src/utils/ColorSchemeWrapper.tsx +27 -0
  357. package/src/utils/RequireAccessibleLabel.ts +1 -0
  358. package/src/utils/copyToClipboard.ts +36 -0
  359. package/src/utils/filterStylingProps.test.ts +85 -0
  360. package/src/utils/filterStylingProps.ts +150 -0
  361. package/src/utils/index.ts +1 -0
  362. package/src/utils/renderRichOption.tsx +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-mantine-v8.js","sources":["../node_modules/@recursica/adapter-common/dist/adapter-common.js","../src/utils/filterStylingProps.ts","../src/components/Accordion/Accordion.tsx","../src/components/AssistiveElement/AssistiveElement.tsx","../src/components/Label/Label.tsx","../src/components/FormControlLayout/FormControlLayout.tsx","../src/components/FormControlWrapper/FormControlWrapper.tsx","../src/components/ReadOnlyField/ReadOnlyTextField.tsx","../src/components/ReadOnlyField/ReadOnlyField.tsx","../src/components/ReadOnlyField/WithReadOnlyWrapper.tsx","../src/utils/renderRichOption.tsx","../src/components/AutoComplete/AutoComplete.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Loader/Loader.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Container/Container.tsx","../src/components/DatePicker/DatePicker.icons.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/FileInput/FileInput.tsx","../src/components/FileUpload/FileUpload.tsx","../src/components/Flex/Flex.tsx","../src/components/Grid/Grid.tsx","../src/components/Group/Group.tsx","../src/components/Heading/Heading.tsx","../src/components/HoverCard/HoverCard.tsx","../src/components/Link/Link.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/NumberInput/NumberInput.tsx","../src/components/Pagination/Pagination.icons.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Panel/Panel.tsx","../src/components/Popover/Popover.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/Radio/Radio.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Slider/Slider.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/SwitchGroup.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.icons.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Text/Text.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/Dropdown/BareDropdown.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/TransferList/TransferList.tsx","../src/components/Tree/Tree.tsx","../src/index.ts"],"sourcesContent":["import { jsx as l, Fragment as R } from \"react/jsx-runtime\";\nimport p, { forwardRef as b, useState as T, useEffect as y, Children as A, isValidElement as I, cloneElement as O } from \"react\";\nconst k = \"_root_1qhn7_3\", P = \"_contents_1qhn7_18\", d = {\n root: k,\n contents: P\n}, w = b(function({ layer: t, contentsOnly: n, children: o, className: s, style: r, ...c }, u) {\n const f = n ? s ? `${d.root} ${d.contents} ${s}` : `${d.root} ${d.contents}` : s ? `${d.root} ${s}` : d.root;\n return /* @__PURE__ */ l(\n \"div\",\n {\n ref: u,\n className: f,\n style: r,\n ...n ? {} : { \"data-recursica-layer\": String(t) },\n ...c,\n children: o\n }\n );\n});\nw.displayName = \"Layer\";\nconst E = ({ emptyText: e = \"N/A\" }) => /* @__PURE__ */ l(p.Fragment, { children: e });\nE.displayName = \"EmptyValueRenderer\";\nE.check = (e) => e == null || e === \"\" || Array.isArray(e) && e.length === 0;\nconst x = { BASE_URL: \"/\", DEV: !1, MODE: \"library\", PROD: !0, SSR: !1, VITE_PLUGIN_MODE: \"production\", VITE_PLUGIN_PHRASE: \"recursica_plugin_@K9mX7pQw2VbN8fRt3LzY6HjE4CuA5DsG1WvM9nP0XcB7\", VITE_PLUGIN_PHRASE_TEST: \"recursica_plugin_@19866374\", VITE_RECURSICA_API_TEST: \"https://dev-api.recursica.com\", VITE_RECURSICA_API_URL: \"https://api.recursica.com\", VITE_RECURSICA_UI_URL: \"https://api.recursica.com\" }, i = (() => {\n try {\n if (typeof process < \"u\" && process.env && process.env.NODE_ENV)\n return process.env.NODE_ENV !== \"production\";\n } catch {\n }\n try {\n if (import.meta && x)\n return !0;\n } catch {\n }\n if (typeof window < \"u\") {\n const e = window.location.hostname;\n return e === \"localhost\" || e === \"127.0.0.1\" || e.endsWith(\".local\");\n }\n return !1;\n})(), m = /* @__PURE__ */ new Set();\nlet a = !1;\nfunction L(e) {\n if (!i)\n return console.warn(\n \"[Recursica] overStyled highlight is disabled in production builds.\"\n ), !1;\n if (a = e !== void 0 ? e : !a, typeof document < \"u\") {\n const t = document.documentElement, n = a ? \"0 0 0 2px cyan\" : \"none\";\n t.style.setProperty(\"--recursica-over-styled-shadow\", n), console.log(\n `[Recursica] Highlight outlines toggled: ${a ? \"ACTIVE (0 0 0 2px cyan)\" : \"INACTIVE\"}`\n );\n } else\n console.warn(\"[Recursica] document is undefined. Cannot set CSS property.\");\n return m.forEach((t) => t()), a;\n}\nfunction B() {\n return i && a;\n}\nfunction N() {\n const [e, t] = T(a);\n return y(() => {\n if (!i) return;\n g(), _();\n const n = () => t(a);\n return m.add(n), () => {\n m.delete(n);\n };\n }, []), i && e;\n}\nfunction g() {\n if (!i) return;\n if (typeof document > \"u\") {\n console.warn(\n \"[Recursica] document is undefined. Cannot inject overStyled styles.\"\n );\n return;\n }\n const e = \"recursica-over-styled-styles\";\n let t = document.getElementById(e);\n t || (t = document.createElement(\"style\"), t.id = e, t.textContent = `\n :root {\n --recursica-over-styled-shadow: none;\n }\n .recursica-over-styled {\n display: contents !important;\n }\n .recursica-over-styled > * {\n box-shadow: var(--recursica-over-styled-shadow) !important;\n }\n `, document.head.appendChild(t));\n}\nfunction _() {\n if (!i) return;\n if (typeof window > \"u\") {\n console.warn(\n \"[Recursica] window is undefined. Cannot register console command.\"\n );\n return;\n }\n const e = (t) => {\n try {\n t.recursica = t.recursica || {}, t.recursica.toggleOverStyled = () => `[Recursica] Overstyled outline highlight is now: ${L() ? \"ON (cyan 2px box shadow)\" : \"OFF\"}`;\n } catch {\n }\n };\n e(window), window.parent && window.parent !== window && e(window.parent);\n}\nfunction G(e) {\n const t = A.toArray(e), n = t.length - 1;\n return t.map((o, s) => {\n if (s !== n || !I(o))\n return o;\n const r = o.props, c = r.href !== void 0 || r.onClick !== void 0;\n return i && c && console.warn(\n `[Breadcrumb] The last item represents the current page and should be plain, non-interactive text (e.g. a <span>), not a link. Breadcrumb stripped its href/onClick and added aria-current=\"page\", but this can't stop a custom Link component (e.g. a router Link) that navigates from its own internal handler rather than these props.`\n ), O(o, {\n \"aria-current\": \"page\",\n ...c ? { href: void 0, onClick: void 0, tabIndex: -1 } : {}\n });\n });\n}\nconst v = \"data-recursica-theme\";\nfunction M({\n children: e,\n theme: t = \"light\",\n initLayer0: n = !0\n}) {\n return y(() => {\n const o = document.documentElement;\n return o.setAttribute(v, t), () => {\n o.removeAttribute(v);\n };\n }, [t]), y(() => {\n g(), _();\n }, []), n ? /* @__PURE__ */ l(w, { layer: 0, children: e }) : /* @__PURE__ */ l(R, { children: e });\n}\nconst W = [\n \"Accordion\",\n \"AssistiveElement\",\n \"Autocomplete\",\n \"Avatar\",\n \"Badge\",\n \"Box\",\n \"Breadcrumb\",\n \"Button\",\n \"Card\",\n \"Checkbox\",\n \"CheckboxGroup\",\n \"Chip\",\n \"Container\",\n \"DatePicker\",\n \"Dropdown\",\n \"EmptyValueRenderer\",\n \"FileInput\",\n \"FileUpload\",\n \"Flex\",\n \"FormControlLayout\",\n \"FormControlWrapper\",\n \"Grid\",\n \"Group\",\n \"Heading\",\n \"HoverCard\",\n \"Label\",\n \"Layer\",\n \"Link\",\n \"Loader\",\n \"Menu\",\n \"Modal\",\n \"NumberInput\",\n \"Pagination\",\n \"Panel\",\n \"Popover\",\n \"Radio\",\n \"ReadOnlyField\",\n \"SegmentedControl\",\n \"Slider\",\n \"Stack\",\n \"Stepper\",\n \"Switch\",\n \"Table\",\n \"Tabs\",\n \"Text\",\n \"TextArea\",\n \"TextField\",\n \"TimePicker\",\n \"Timeline\",\n \"Toast\",\n \"Tooltip\",\n \"TransferList\",\n \"Tree\",\n \"Typography\"\n], j = (e, t) => {\n const n = document.activeElement;\n return new Promise((o, s) => {\n if (t && t.current) {\n const r = document.createElement(\"textarea\");\n r.readOnly = !0, r.defaultValue = e, t.current.appendChild(r), r.select();\n const c = document.execCommand(\"copy\");\n t.current.removeChild(r), n && n.focus(), c ? o() : s(new Error(\"Failed to copy\"));\n } else\n s(new Error(\"Copy area reference is not defined\"));\n });\n};\nfunction H(e, t) {\n const n = (t ?? \"\").split(\",\").map((r) => r.trim().toLowerCase()).filter(Boolean);\n if (n.length === 0) return !0;\n const o = e.name.toLowerCase(), s = e.type.toLowerCase();\n return n.some((r) => r.startsWith(\".\") ? o.endsWith(r) : r.endsWith(\"/*\") ? s.startsWith(r.slice(0, -1)) : s === r);\n}\nfunction z(e, t) {\n if (!t) return e;\n const n = { ...e }, o = /* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(t)]);\n for (const s of o) {\n const r = e[s], c = t[s];\n n[s] = [r, c].filter(Boolean).join(\" \") || void 0;\n }\n return n;\n}\nfunction Y(e, t) {\n if (!t) return e;\n const n = { ...e }, o = /* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(t)]);\n for (const s of o) {\n const r = e[s], c = t[s];\n n[s] = r || c ? { ...r, ...c } : void 0;\n }\n return n;\n}\nfunction q(e) {\n return e == null ? void 0 : e.map(\n (t) => typeof t == \"string\" ? t : { ...t, label: t.label ?? t.value }\n );\n}\nfunction X(e, t) {\n const n = { ...e };\n for (const o of t)\n o in n && delete n[o];\n return n;\n}\nfunction K(e, t) {\n return t !== void 0 ? t : e;\n}\nconst $ = Symbol.for(\"react.forward_ref\"), F = Symbol.for(\"react.memo\");\nfunction S(e) {\n return e ? e.prototype && e.prototype.isReactComponent || e.$$typeof === $ ? !0 : e.$$typeof === F ? S(e.type) : !1 : !1;\n}\nfunction U(e) {\n if (!i || typeof e != \"function\" && !(e && e.$$typeof))\n return e;\n const t = S(e), n = e.displayName || e.name || \"Component\", o = p.forwardRef((r, c) => {\n const { overStyled: u } = r, f = N();\n i && c && !t && console.warn(\n `[wrapComponent] \"${n}\" does not support refs (not a class component or forwardRef) — the ref passed to it was dropped instead of forcing React's \"function components cannot be given refs\" warning.`\n );\n const C = t ? { ...r, ref: c } : r, h = p.createElement(e, C);\n return u && f ? /* @__PURE__ */ l(\"div\", { className: \"recursica-over-styled\", children: h }) : h;\n });\n o.displayName = e.displayName || e.name || \"Component\";\n const s = Object.keys(e);\n for (const r of s) {\n if (r === \"render\" || r === \"$$typeof\")\n continue;\n const c = e[r];\n (typeof c == \"function\" || c && c.$$typeof) && r[0] === r[0].toUpperCase() ? o[r] = U(c) : o[r] = c;\n }\n return o;\n}\nexport {\n E as EmptyValueRenderer,\n i as IS_DEV,\n w as Layer,\n W as RECURSICA_COMPONENTS,\n M as RecursicaThemeProvider,\n j as copyToClipboard,\n H as fileMatchesAccept,\n g as injectOverStyledStyles,\n B as isGlobalOverStyledActive,\n G as markCurrentPageItem,\n z as mergeClassNames,\n Y as mergeStyles,\n q as normalizeComboboxData,\n X as omitUnsupportedProps,\n _ as registerOverStyledConsoleCommand,\n L as toggleGlobalOverStyled,\n N as useGlobalOverStyled,\n K as withCallerOverride,\n U as wrapComponent\n};\n//# sourceMappingURL=adapter-common.js.map\n","/**\n * filterStylingProps\n *\n * This utility acts as the central gatekeeper for strict design-system adherence across\n * all Recursica components mapped over Mantine.\n *\n * PHILOSOPHY:\n * Recursica components are designed to be explicitly sandboxed tokens. Allowing external\n * `className` or Mantine style system props (`bg`, `p`, etc.) breaks the design system by\n * allowing developers to leak arbitrary designs into components.\n *\n * By default (`overStyled=false`), this utility actively prevents developers from overriding\n * internal component styles (such as background, colors, typography, or internal classNames).\n * It safely *permits* external layout overrides (like `margin` / `m`) so that components can\n * easily be spaced alongside other DOM elements.\n *\n * If a developer passes `overStyled={true}`, this filter allows all styling properties to\n * flow through to the underlying Mantine component natively, at the developer's own risk.\n *\n * @param props - The raw component props passed down to the wrapper\n * @param overStyled - Boolean toggle to allow raw external styling. Defaults to false.\n * @returns Sanitized component props safe for internal styling merging\n */\n\nexport const BLOCKED_STYLING_KEYS = [\n \"className\",\n \"classNames\",\n \"style\",\n \"styles\",\n \"vars\", // Internal structure hooks\n \"p\",\n \"px\",\n \"py\",\n \"pt\",\n \"pb\",\n \"pl\",\n \"pr\", // Padding\n \"bg\",\n \"c\",\n \"opacity\", // Color\n \"ff\",\n \"fz\",\n \"fw\",\n \"lts\",\n \"ta\",\n \"lh\",\n \"fs\",\n \"tt\",\n \"td\", // Typography\n \"bd\",\n \"bdw\",\n \"bds\",\n \"bdc\",\n \"bdr\", // Borders\n \"shadow\", // Effects\n \"w\",\n \"miw\",\n \"maw\",\n \"h\",\n \"mih\",\n \"mah\", // Dimensions\n] as const;\nexport {\n type RecursicaSpacing,\n type RecursicaSize,\n type RecursicaOverStyled,\n type BlockedStylingKeys,\n type ForbiddenStyles,\n type WithRecursicaSpacing,\n omitUnsupportedProps,\n withCallerOverride,\n mergeClassNames,\n mergeStyles,\n} from \"@recursica/adapter-common\";\n\nconst LAYOUT_PROPS = new Set([\n \"m\",\n \"my\",\n \"mx\",\n \"mt\",\n \"mb\",\n \"ml\",\n \"mr\",\n \"gap\",\n \"rowGap\",\n \"columnGap\",\n \"gutter\",\n \"top\",\n \"left\",\n \"bottom\",\n \"right\",\n]);\n\nexport const SPACING_MAP: Record<string, string> = {\n \"rec-none\": \"var(--recursica_brand_dimensions_general_none)\",\n \"rec-sm\": \"var(--recursica_brand_dimensions_general_sm)\",\n \"rec-default\": \"var(--recursica_brand_dimensions_general_default)\",\n \"rec-md\": \"var(--recursica_brand_dimensions_general_md)\",\n \"rec-lg\": \"var(--recursica_brand_dimensions_general_lg)\",\n \"rec-xl\": \"var(--recursica_brand_dimensions_general_xl)\",\n \"rec-2xl\": \"var(--recursica_brand_dimensions_general_2xl)\",\n};\n\nexport function mapLayoutProps<T extends Record<string, unknown>>(props: T): T {\n const mapped = { ...props };\n for (const [key, value] of Object.entries(mapped)) {\n if (\n typeof value === \"string\" &&\n value.startsWith(\"rec-\") &&\n LAYOUT_PROPS.has(key)\n ) {\n if (value in SPACING_MAP) {\n (mapped as Record<string, unknown>)[key] = SPACING_MAP[value];\n }\n }\n }\n return mapped;\n}\n\nexport function filterStylingProps<T extends Record<string, unknown>>(\n props: T,\n overStyled?: boolean,\n): Partial<T> {\n if (overStyled) {\n return props;\n }\n\n const sanitized = { ...props };\n\n for (const prop of BLOCKED_STYLING_KEYS) {\n if (prop in sanitized) {\n delete sanitized[prop];\n }\n }\n\n // Intercept Recursica spacing tokens for valid layout properties\n for (const [key, value] of Object.entries(sanitized)) {\n if (\n typeof value === \"string\" &&\n value.startsWith(\"rec-\") &&\n LAYOUT_PROPS.has(key)\n ) {\n if (value in SPACING_MAP) {\n (sanitized as Record<string, unknown>)[key] = SPACING_MAP[value];\n }\n }\n }\n\n return sanitized;\n}\n","import { forwardRef } from \"react\";\nimport {\n Accordion as MantineAccordion,\n type AccordionProps as MantineAccordionProps,\n type AccordionItemProps,\n type AccordionControlProps,\n type AccordionPanelProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Accordion.module.css\";\n\nimport {\n type RecursicaAccordionProps,\n type RecursicaAccordionItemProps,\n type RecursicaAccordionControlProps,\n type RecursicaAccordionPanelProps,\n} from \"@recursica/adapter-common\";\n\n// ==== ACCORDION CONTAINER ====\nexport type AccordionProps = RecursicaOverStyled<\n Omit<\n MantineAccordionProps,\n \"value\" | \"defaultValue\" | \"multiple\" | \"variant\"\n > &\n RecursicaAccordionProps\n>;\n\n// Maps Recursica's public variant vocabulary to Mantine's own. `unstyled` is a Mantine\n// sentinel with no meaning to Recursica consumers — it exists only to suppress Mantine's\n// built-in variant CSS so our module CSS is the sole source of styling. Anything outside\n// this map (a caller-supplied custom variant string) passes straight through to Mantine.\nconst mapVariant: Record<string, string> = {\n default: \"unstyled\",\n};\n\nconst AccordionBase = function Accordion({\n variant = \"default\",\n overStyled = false,\n ...rest\n}: AccordionProps) {\n const resolvedVariant =\n typeof variant === \"string\" && mapVariant[variant]\n ? mapVariant[variant]\n : variant;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Bind all deep CSS module references natively into the global class mapping schema\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n item: styles.item,\n control: styles.control,\n label: styles.label,\n chevron: styles.chevron,\n icon: styles.icon,\n panel: styles.panel,\n content: styles.content,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineAccordion\n {...(sanitizedProps as unknown as MantineAccordionProps)}\n variant={resolvedVariant as MantineAccordionProps[\"variant\"]}\n className={classNameProp}\n classNames={mergedClassNames}\n />\n );\n};\nAccordionBase.displayName = \"Accordion\";\n\n// We need to omit and re-merge native props like in Badge\nexport type AccordionItemWrapperProps = RecursicaOverStyled<\n AccordionItemProps & RecursicaAccordionItemProps\n>;\n\nexport const AccordionItem = forwardRef<\n HTMLDivElement,\n AccordionItemWrapperProps\n>(function AccordionItem(\n {\n title,\n leftIcon,\n divider = true,\n children,\n disabled = false,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const finalClass =\n [divider ? undefined : styles.noDivider, classNameProp]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // If the user utilizes the explicit 'title' prop from Recursica, we securely auto-construct the Mantine sub-hierarchy natively!\n // If not, we defer to raw composable children (meaning the integrator maps `<Accordion.Control>` manually).\n // `disabled` has no native concept at the Item level — only Control has a real `disabled`\n // prop (it renders a `<button>`, so the native HTML `disabled` attribute alone blocks click,\n // focus, and keyboard activation with no extra guards needed). We forward it there in the\n // auto-composed path; a manually-composed `<Accordion.Control>` needs it passed explicitly.\n return (\n <MantineAccordion.Item\n ref={ref}\n {...(sanitizedProps as unknown as AccordionItemProps)}\n className={finalClass}\n data-disabled={disabled || undefined}\n >\n {title ? (\n <>\n <AccordionControl leftIcon={leftIcon} disabled={disabled}>\n {title}\n </AccordionControl>\n <AccordionPanel>{children}</AccordionPanel>\n </>\n ) : (\n children\n )}\n </MantineAccordion.Item>\n );\n});\nAccordionItem.displayName = \"AccordionItem\";\n\n// ==== ACCORDION CONTROL ====\nexport type AccordionControlWrapperProps = RecursicaOverStyled<\n // Mantine's native `icon` slot is resolved internally from `leftIcon` — omitted so a\n // caller can't silently override it by passing `icon` directly. Mantine's per-control\n // `chevron` override is left as-is; nothing here computes it, so it passes through safely.\n Omit<AccordionControlProps, \"icon\"> & RecursicaAccordionControlProps\n>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"icon\", // Mantine's native icon slot is fully computed here from `leftIcon`; the `Omit<>` on\n // AccordionControlWrapperProps only stops a well-typed caller, this is the runtime backstop.\n] as const satisfies readonly (keyof AccordionControlProps)[];\n\nexport const AccordionControl = forwardRef<\n HTMLButtonElement,\n AccordionControlWrapperProps\n>(function AccordionControl(\n { leftIcon, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n UNSUPPORTED_PROPS,\n );\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion.Control\n ref={ref}\n {...(sanitizedProps as unknown as AccordionControlProps)}\n className={classNameProp}\n icon={\n leftIcon ? (\n <span className={styles.iconLeftWrapper} aria-hidden>\n {leftIcon}\n </span>\n ) : undefined\n }\n >\n {children}\n </MantineAccordion.Control>\n );\n});\nAccordionControl.displayName = \"AccordionControl\";\n\n// ==== ACCORDION PANEL ====\nexport type AccordionPanelWrapperProps = RecursicaOverStyled<\n AccordionPanelProps & RecursicaAccordionPanelProps\n>;\n\nexport const AccordionPanel = forwardRef<\n HTMLDivElement,\n AccordionPanelWrapperProps\n>(function AccordionPanel({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion.Panel\n ref={ref}\n {...(sanitizedProps as unknown as AccordionPanelProps)}\n className={classNameProp}\n />\n );\n});\nAccordionPanel.displayName = \"AccordionPanel\";\n\n// ==== DOT NOTATION EXPORT ====\ntype AccordionComponent = typeof AccordionBase & {\n Item: typeof AccordionItem;\n Control: typeof AccordionControl;\n Panel: typeof AccordionPanel;\n};\n\nexport const Accordion = AccordionBase as AccordionComponent;\nAccordion.Item = AccordionItem;\nAccordion.Control = AccordionControl;\nAccordion.Panel = AccordionPanel;\n","import React, { forwardRef } from \"react\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./AssistiveElement.module.css\";\n\nimport { type RecursicaAssistiveElementProps } from \"@recursica/adapter-common\";\n\nexport type AssistiveElementProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement> & RecursicaAssistiveElementProps\n>;\n\nconst InfoIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n);\n\nconst AlertIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n);\n\nexport const AssistiveElement = forwardRef<\n HTMLDivElement,\n AssistiveElementProps\n>(function AssistiveElement(\n {\n assistiveVariant = \"help\",\n assistiveWithIcon = true,\n children,\n className,\n role,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const rootClass = styles.root;\n const finalClass = className ? `${rootClass} ${className}` : rootClass;\n\n const IconComponent = assistiveVariant === \"error\" ? AlertIcon : InfoIcon;\n\n // Announce error text as it appears/changes; a caller-supplied `role` always wins. No\n // default for `help` — static descriptive text doesn't need a live region.\n const resolvedRole =\n role ?? (assistiveVariant === \"error\" ? \"alert\" : undefined);\n\n return (\n <div\n ref={ref}\n {...restRecord} // Spread standard HTML attributes (like id, aria-*) natively.\n className={finalClass}\n data-variant={assistiveVariant}\n role={resolvedRole}\n style={restRecord.style as React.CSSProperties}\n >\n {assistiveWithIcon && (\n <span className={styles.iconWrapper}>\n <IconComponent />\n </span>\n )}\n <span className={styles.textWrapper}>{children}</span>\n </div>\n );\n});\n\nAssistiveElement.displayName = \"AssistiveElement\";\n","import React, { forwardRef } from \"react\";\nimport { Input, type InputLabelProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Label.module.css\";\n\nimport { type RecursicaLabelProps } from \"@recursica/adapter-common\";\n\nexport type LabelProps = RecursicaOverStyled<\n Omit<InputLabelProps, \"size\"> & RecursicaLabelProps\n>;\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n {\n labelSize = \"default\",\n labelAlignment,\n required = false,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n children,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const resolvedAlignment = labelAlignment || \"left\";\n\n let resolvedOptionalText: React.ReactNode | undefined;\n if (!required) {\n if (labelOptionalText === true) resolvedOptionalText = \"optional\";\n else if (labelOptionalText) resolvedOptionalText = labelOptionalText;\n }\n\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls label sizing via `labelSize` + design tokens, not Mantine's native `size`.\n ] as const satisfies readonly (keyof InputLabelProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n label: styles.root,\n required: styles.required,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <Input.Label\n ref={ref}\n {...sanitizedProps}\n className={finalClass}\n classNames={mergedClassNames}\n data-size={labelSize}\n data-alignment={resolvedAlignment}\n required={required && !labelWithEditIcon}\n >\n <span className={styles.labelText}>{children}</span>\n {resolvedOptionalText && (\n <span className={styles.optionalText}>\n {typeof resolvedOptionalText === \"string\"\n ? `(${resolvedOptionalText})`\n : resolvedOptionalText}\n </span>\n )}\n {labelActionArea ? (\n <span className={styles.actionAreaWrapper}>{labelActionArea}</span>\n ) : labelWithEditIcon ? (\n <button\n type=\"button\"\n className={styles.editIconWrapper}\n data-replaces-asterisk={required ? \"true\" : undefined}\n onClick={onLabelEditClick}\n aria-label=\"Edit\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.5303 2.46967C11.8232 2.17678 12.2981 2.17678 12.591 2.46967L13.5303 3.40898C13.8232 3.70188 13.8232 4.17675 13.5303 4.46964L5.61288 12.3871C5.45268 12.5473 5.24434 12.6483 5.01809 12.6766L2.39534 13.0044C2.10091 13.0412 1.83856 12.7789 1.87538 12.4845L2.2032 9.86175C2.23147 9.63551 2.3325 9.42716 2.4927 9.26696L11.5303 2.46967Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </Input.Label>\n );\n});\n\nLabel.displayName = \"Label\";\n","import React, { forwardRef } from \"react\";\nimport styles from \"./FormControlLayout.module.css\";\n\nimport { type RecursicaFormControlLayoutProps } from \"@recursica/adapter-common\";\n\nexport interface FormControlLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n RecursicaFormControlLayoutProps {}\n\n/**\n * A layout component used to correctly position form inputs alongside their labels.\n *\n * **When to use this:**\n * Typically, you should use `FormControlWrapper` instead, which uses this component\n * under the hood to handle layout automatically.\n *\n * However, this component is useful when you need to align standalone inputs\n * (like a `Switch` or `Checkbox` without a label) so they perfectly match the spacing\n * and alignment of your other form fields in a `side-by-side` layout.\n */\nexport const FormControlLayout = forwardRef<\n HTMLDivElement,\n FormControlLayoutProps\n>(function FormControlLayout(\n {\n formLayout = \"stacked\",\n labelSize = \"default\",\n controlMaxWidth,\n controlMinWidth,\n leftSection,\n children,\n className,\n style,\n ...rest\n },\n ref,\n) {\n const rootClass = className ? `${styles.root} ${className}` : styles.root;\n\n // We explicitly render leftSection even if null in side-by-side to preserve the empty grid column bounding constraints.\n // In stacked layouts, if there is no label, we omit the wrapper to avoid unnecessary padding.\n const hasLeftContent = leftSection !== undefined && leftSection !== null;\n const shouldRenderLeft = hasLeftContent || formLayout === \"side-by-side\";\n\n return (\n <div\n ref={ref}\n className={rootClass}\n data-form-layout={formLayout}\n style={\n {\n ...style,\n ...(controlMaxWidth\n ? { \"--form-control-max-width\": controlMaxWidth }\n : {}),\n ...(controlMinWidth\n ? { \"--form-control-min-width\": controlMinWidth }\n : {}),\n } as React.CSSProperties\n }\n {...rest}\n >\n {shouldRenderLeft && (\n <div className={styles.leftSection} data-size={labelSize}>\n {leftSection}\n </div>\n )}\n\n <div className={styles.rightSection}>{children}</div>\n </div>\n );\n});\n\nFormControlLayout.displayName = \"FormControlLayout\";\n","import React, { forwardRef, useId } from \"react\";\nimport { type InputWrapperProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { Label } from \"../Label/Label\";\nimport { FormControlLayout } from \"../FormControlLayout/FormControlLayout\";\nimport { AssistiveElement } from \"../AssistiveElement/AssistiveElement\";\nimport styles from \"./FormControlWrapper.module.css\";\n\nimport { type RecursicaFormControlWrapperProps } from \"@recursica/adapter-common\";\nexport type { RecursicaFormControlWrapperProps };\n\nexport type FormControlWrapperProps = RecursicaOverStyled<\n Omit<InputWrapperProps, \"labelProps\" | \"inputWrapperOrder\"> &\n RecursicaFormControlWrapperProps\n>;\n\nexport const FormControlWrapper = forwardRef<\n HTMLDivElement,\n FormControlWrapperProps\n>(function FormControlWrapper(\n {\n formLayout,\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n description,\n assistiveText,\n assistiveWithIcon = true,\n controlMaxWidth,\n controlMinWidth,\n error,\n required,\n withAsterisk,\n id: userProvidedId,\n children,\n className,\n overStyled = false,\n labelElement, // Extracted safely preventing bleeding into HTML domains\n ...rest\n },\n ref,\n) {\n // Generate a reliable ID to map the Label's HTML context down to the component array natively.\n const generatedId = useId();\n const id = userProvidedId || `recursica-fc-${generatedId}`;\n const labelId = `${id}-label`;\n\n // Evaluate explicit assistive fallbacks ensuring assistiveText correctly prioritizes natively over underlying Mantine configurations!\n const resolvedAssistive = assistiveText || description;\n const assistiveId = resolvedAssistive ? `${id}-assistive` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const classNameProp =\n className || (restRecord.className as string | undefined);\n const rootClass = styles.root;\n const finalClass = classNameProp\n ? `${rootClass} ${classNameProp}`\n : rootClass;\n\n // Clone ARIA identifiers directly back down into the nested children wrapper so screen-readers natively hook the external strings.\n // `id` is cloned down here too — the label's `htmlFor` below only resolves to the field's\n // native `label.control` when the field itself actually carries this id.\n const content = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<Record<string, unknown>>,\n {\n ...(!(children.props as Record<string, unknown>)[\"id\"] ? { id } : {}),\n \"aria-labelledby\": labelId,\n ...(resolvedAssistive &&\n !(children.props as Record<string, unknown>)[\"aria-describedby\"]\n ? { \"aria-describedby\": assistiveId }\n : {}),\n ...(error &&\n !(children.props as Record<string, unknown>)[\"aria-errormessage\"]\n ? { \"aria-errormessage\": errorId }\n : {}),\n },\n )\n : children;\n\n const labelNode = label ? (\n <Label\n id={labelId}\n htmlFor={id} // Native label/control association — must not also be set on the label's own id\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n required={withAsterisk ?? required}\n // Manually propagate relevant structural logic if underlying groups dictate Label to act as generic wrapper\n {...(labelElement === \"div\" ? { as: \"div\" } : {})}\n >\n {label}\n </Label>\n ) : undefined;\n\n return (\n <FormControlLayout\n ref={ref}\n className={finalClass}\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n leftSection={labelNode}\n {...restRecord}\n >\n {/*\n The Core Input Wrapper & Controls\n Nakedly inject the actual field elements alongside natively bridged Assistive components mapped dynamically.\n */}\n <div className={styles.inputSection}>\n {content}\n\n {error && (\n <AssistiveElement\n id={errorId}\n assistiveVariant=\"error\"\n assistiveWithIcon={assistiveWithIcon}\n >\n {error}\n </AssistiveElement>\n )}\n\n {!error && resolvedAssistive && (\n <AssistiveElement\n id={assistiveId}\n assistiveVariant=\"help\"\n assistiveWithIcon={assistiveWithIcon}\n >\n {resolvedAssistive}\n </AssistiveElement>\n )}\n </div>\n </FormControlLayout>\n );\n});\n\nFormControlWrapper.displayName = \"FormControlWrapper\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport interface RecursicaReadOnlyTextFieldProps {\n /** The value strictly rendered as text output */\n value?: any;\n}\n\nexport type ReadOnlyTextFieldProps =\n RecursicaOverStyled<RecursicaReadOnlyTextFieldProps>;\n\nexport const ReadOnlyTextField: React.FC<ReadOnlyTextFieldProps> = ({\n value,\n overStyled = false,\n ...rest\n}) => {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <Box\n component=\"p\"\n {...sanitizedProps}\n className={\n classNameProp\n ? `${styles.textField} ${classNameProp}`\n : styles.textField\n }\n >\n {value != null\n ? React.isValidElement(value)\n ? value\n : Array.isArray(value)\n ? value.join(\", \")\n : String(value)\n : \"\"}\n </Box>\n );\n};\n\nReadOnlyTextField.displayName = \"ReadOnlyTextField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n EmptyValueRenderer,\n type ReadOnlyControlProps,\n} from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type FormControlWrapperProps,\n FormControlWrapper,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport { ReadOnlyTextField } from \"./ReadOnlyTextField\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nimport { type RecursicaReadOnlyFieldProps as BaseRecursicaReadOnlyFieldProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaReadOnlyFieldProps\n extends Omit<\n FormControlWrapperProps,\n \"children\" | \"overStyled\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n Pick<ReadOnlyControlProps, \"emptyValueComponent\">,\n BaseRecursicaReadOnlyFieldProps {}\n\nexport type ReadOnlyFieldProps =\n RecursicaOverStyled<RecursicaReadOnlyFieldProps>;\n\n/**\n * A native generic form control wrapper exclusively responsible for displaying fixed data.\n * Internally maps to structural ReadOnly primitive blocks bridging standard `FormControlWrapper` layouts natively.\n */\nexport const ReadOnlyField = forwardRef<HTMLDivElement, ReadOnlyFieldProps>(\n function ReadOnlyField(\n {\n value,\n type = \"text\",\n emptyValueComponent,\n overStyled = false,\n className,\n style,\n ...rest\n },\n ref,\n ) {\n let content: React.ReactNode = null;\n\n // We still pass sanitized properties (like className/style/etc) strictly down.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const Renderer = emptyValueComponent || EmptyValueRenderer;\n const isValueEmpty = (Renderer as any).check\n ? (Renderer as any).check(value)\n : EmptyValueRenderer.check(value);\n\n const displayValue = isValueEmpty ? (\n <Renderer value={value as any} />\n ) : (\n value\n );\n\n switch (type) {\n case \"boolean\":\n content = (\n <ReadOnlyTextField\n value={\n value === true ? \"True\" : value === false ? \"False\" : displayValue\n }\n overStyled={overStyled as true}\n />\n );\n break;\n case \"switch\":\n content = (\n <ReadOnlyTextField\n value={\n value === true ? \"On\" : value === false ? \"Off\" : displayValue\n }\n overStyled={overStyled as true}\n />\n );\n break;\n case \"text\":\n default:\n content = (\n <ReadOnlyTextField\n value={displayValue}\n overStyled={overStyled as true}\n />\n );\n break;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <FormControlWrapper\n ref={ref}\n {...(sanitizedProps as any)}\n overStyled={overStyled as true}\n className={wrapperClass}\n style={style}\n >\n {content}\n </FormControlWrapper>\n );\n },\n);\n\nReadOnlyField.displayName = \"ReadOnlyField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport { type ReadOnlyFieldType } from \"@recursica/adapter-common\";\nimport {\n FormControlWrapper,\n type FormControlWrapperProps,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport { ReadOnlyField } from \"./ReadOnlyField\";\n\nexport interface WithReadOnlyWrapperProps\n extends Omit<FormControlWrapperProps, \"children\" | \"overStyled\"> {\n /** Injects whether the field defaults to reading mode natively */\n readOnly?: boolean;\n /** Explicit React component directly overtaking the baseline text renderer when read-only mode is active */\n readOnlyComponent?: React.ElementType<any>;\n /** Custom renderer explicitly responsible for formatting missing/empty value mappings (overriding default 'N/A') */\n emptyValueComponent?: React.ElementType<{ value?: any }>;\n /** The full native props dictionary securely forwarded into the custom readOnlyComponent if active */\n readOnlyNativeProps?: any;\n /** Instructs the underlying generic ReadOnlyField which raw visual structure to bridge automatically */\n readOnlyType?: ReadOnlyFieldType;\n /** The isolated raw data value intercepted explicitly into the ReadOnly formatters */\n readOnlyValue?: any;\n /** Safely enables deep Mantine overrides transparently bypassing block filters */\n overStyled?: boolean;\n /** The nested active node dynamically exposed exclusively when read-only bounds are disabled */\n activeComponent: React.ReactNode;\n}\n\n/**\n * Universal execution barrier trapping readOnly states globally.\n * Natively delegates active logic down avoiding duplicative internal component bindings dynamically.\n */\nexport const WithReadOnlyWrapper = forwardRef<\n HTMLDivElement,\n WithReadOnlyWrapperProps\n>(function WithReadOnlyWrapper(\n {\n readOnly,\n readOnlyComponent,\n readOnlyType = \"text\",\n readOnlyValue,\n readOnlyNativeProps,\n emptyValueComponent,\n activeComponent,\n overStyled,\n onLabelEditClick,\n ...wrapperProps\n },\n ref,\n) {\n if (readOnly) {\n if (readOnlyComponent) {\n const ReadOnlyComponent = readOnlyComponent;\n return (\n <FormControlWrapper\n ref={ref}\n {...wrapperProps}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n >\n <ReadOnlyComponent {...readOnlyNativeProps} />\n </FormControlWrapper>\n );\n }\n\n return (\n <ReadOnlyField\n ref={ref}\n {...wrapperProps}\n type={readOnlyType}\n value={readOnlyValue}\n emptyValueComponent={emptyValueComponent}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n />\n );\n }\n\n // Active Standard Execution natively forwarding bound children implicitly\n return (\n <FormControlWrapper\n ref={ref}\n {...wrapperProps}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n >\n {activeComponent}\n </FormControlWrapper>\n );\n});\n\nWithReadOnlyWrapper.displayName = \"WithReadOnlyWrapper\";\n","import React from \"react\";\nimport {\n type ComboboxStringItem,\n type ComboboxLikeRenderOptionInput,\n} from \"@mantine/core\";\n\n// `ComboboxStringItem`/`ComboboxItem` only type `value`/`label`/`disabled` —\n// `leadingIcon`/`supportingText` are extra fields Mantine's own `getParsedComboboxData` passes\n// through untouched whenever an item already has both `value` and `label` (see\n// get-parsed-combobox-data.mjs), so they reach `option` here at runtime even though the upstream\n// type doesn't know about them. Generic over both Autocomplete's `ComboboxStringItem` (optional\n// `label`) and Dropdown's `ComboboxItem` (required `label`) — the same renderer serves both.\ntype RichComboboxItem = ComboboxStringItem & {\n label?: string;\n leadingIcon?: React.ReactNode;\n supportingText?: string;\n};\n\nexport interface RichOptionClassNames {\n optionContent: string;\n optionIcon: string;\n optionText: string;\n /** Combined with `optionText` when `wrapItemText` is true — see `renderRichOption` below. */\n optionTextWrap: string;\n optionSupportingText: string;\n}\n\n/**\n * `renderOption` for Autocomplete/Dropdown that renders an item's `leadingIcon`/`supportingText`\n * (see MANTINE_ADAPTER_RICH_OPTION_DATA.md) inside the option row. Falls back to plain\n * `option.label` — the same rendering Mantine uses when no `renderOption` is supplied at all — so\n * items without the new fields are unaffected.\n *\n * `wrapItemText` (default `false`) controls whether `label`/`supportingText` wrap onto additional\n * lines or truncate to a single line with an ellipsis.\n */\nexport function renderRichOption<T extends ComboboxStringItem>(\n { option }: ComboboxLikeRenderOptionInput<T>,\n classNames: RichOptionClassNames,\n wrapItemText = false,\n): React.ReactNode {\n const { label, leadingIcon, supportingText } = option as RichComboboxItem;\n const displayLabel = label ?? option.value;\n if (!leadingIcon && !supportingText) {\n return displayLabel;\n }\n const optionTextClassName = wrapItemText\n ? `${classNames.optionText} ${classNames.optionTextWrap}`\n : classNames.optionText;\n return (\n <span className={classNames.optionContent}>\n {leadingIcon && (\n <span className={classNames.optionIcon}>{leadingIcon}</span>\n )}\n <span className={optionTextClassName}>\n <span>{displayLabel}</span>\n {supportingText && (\n <span className={classNames.optionSupportingText}>\n {supportingText}\n </span>\n )}\n </span>\n </span>\n );\n}\n","import React, { forwardRef } from \"react\";\nimport {\n Autocomplete as MantineAutocomplete,\n type AutocompleteProps as MantineAutocompleteProps,\n type InputWrapperProps,\n} from \"@mantine/core\";\nimport {\n type ReadOnlyControlProps,\n normalizeComboboxData,\n} from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport { renderRichOption } from \"../../utils/renderRichOption\";\nimport styles from \"./AutoComplete.module.css\";\n\nimport { type RecursicaAutocompleteProps as BaseRecursicaAutocompleteProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaAutoCompleteProps\n extends Omit<\n MantineAutocompleteProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"data\"\n | \"defaultValue\"\n | \"value\"\n >,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaAutocompleteProps {\n /** Current input value */\n value?: string;\n}\n\nexport type AutoCompleteProps = RecursicaOverStyled<RecursicaAutoCompleteProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n] as const satisfies readonly (keyof MantineAutocompleteProps)[];\n\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(\n function AutoComplete(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n data,\n renderOption,\n wrapItemText = false,\n ...rest\n } = props;\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Mantine's own data parser only preserves extra fields (`leadingIcon`/`supportingText`) when\n // an item already has both `value` and `label` — an item with `value` only is rebuilt into a\n // bare `{value, label: value, disabled}` object, silently dropping them (see\n // get-parsed-combobox-data.mjs). `normalizeComboboxData` backfills `label` so the rich fields\n // always survive regardless of whether the caller set it.\n const normalizedData = normalizeComboboxData(data);\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames = mergeClassNames(\n {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const optionClassNames = {\n optionContent: styles.optionContent,\n optionIcon: styles.optionIcon,\n optionText: styles.optionText,\n optionTextWrap: styles.optionTextWrap,\n optionSupportingText: styles.optionSupportingText,\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--autocomplete-control-max-width)\"\n controlMinWidth=\"var(--autocomplete-control-min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineAutocomplete\n ref={ref}\n {...(sanitizedProps as unknown as MantineAutocompleteProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value as string | undefined}\n defaultValue={defaultValue as string | undefined}\n error={!!error}\n data={normalizedData as unknown as MantineAutocompleteProps[\"data\"]}\n renderOption={\n renderOption ??\n ((input) =>\n renderRichOption(input, optionClassNames, wrapItemText))\n }\n />\n }\n />\n );\n },\n);\n\nAutoComplete.displayName = \"AutoComplete\";\n","import { forwardRef } from \"react\";\nimport {\n Avatar as MantineAvatar,\n type AvatarProps as MantineAvatarProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Avatar.module.css\";\n\nimport { type RecursicaAvatarProps } from \"@recursica/adapter-common\";\n\nexport type AvatarProps = RecursicaOverStyled<\n Omit<MantineAvatarProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaAvatarProps\n>;\n\nconst _Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n size = \"default\",\n variant = \"solid\",\n icon,\n children,\n src,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const mapVariant = {\n solid: \"filled\",\n outline: \"outline\",\n ghost: \"transparent\",\n } as const;\n\n const mapSize = {\n default: \"md\",\n small: \"sm\",\n large: \"lg\",\n } as const;\n\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"color\", // Colors are token-driven via `data-variant`; Mantine's native palette isn't exposed.\n \"radius\", // Avatar corner radius is controlled by design tokens, not a raw radius prop.\n ] as const satisfies readonly (keyof MantineAvatarProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Determine semantic style based on provided props\n let computedStyle = \"text\";\n if (src) {\n computedStyle = \"image\";\n } else if (icon) {\n computedStyle = \"icon\";\n }\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n image: styles.image,\n placeholder: styles.placeholder,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineAvatar\n ref={ref}\n {...sanitizedProps}\n className={classNameProp}\n classNames={mergedClassNames}\n variant={mapVariant[variant]}\n size={mapSize[size]}\n src={src}\n data-variant={variant}\n data-size={size}\n data-style={computedStyle}\n >\n {icon != null ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : children != null ? (\n <span className={styles.textWrapper}>{children}</span>\n ) : undefined}\n </MantineAvatar>\n );\n});\n_Avatar.displayName = \"Avatar\";\n\n/**\n * Recursica Avatar component wrapping Mantine's Avatar.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n */\nexport const Avatar = createPolymorphicComponent<\"div\", AvatarProps>(_Avatar);\n","import { forwardRef } from \"react\";\nimport {\n Badge as MantineBadge,\n type BadgeProps as MantineBadgeProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Badge.module.css\";\n\nimport { type RecursicaBadgeProps } from \"@recursica/adapter-common\";\n\nexport type BadgeProps = RecursicaOverStyled<\n Omit<MantineBadgeProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaBadgeProps\n>;\n\nconst _Badge = forwardRef<HTMLDivElement, BadgeProps>(function Badge(\n { variant = \"primary-color\", overStyled = false, ...rest },\n ref,\n) {\n // Strip all visual override injections unless developer has specifically opted into overStyling.\n // External layout props like margins are safely preserved.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n section: styles.section,\n label: styles.label,\n },\n (sanitizedProps as Record<string, unknown>).classNames as\n | Partial<Record<string, string>>\n | undefined,\n );\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineBadge\n ref={ref}\n {...sanitizedProps}\n variant=\"filled\" // We manage visual style purely through our CSS variables mapping\n data-variant={variant}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n});\n_Badge.displayName = \"Badge\";\n\n/**\n * Recursica Badge component wrapping Mantine's Badge.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n */\nexport const Badge = createPolymorphicComponent<\"div\", BadgeProps>(_Badge);\n","import { forwardRef } from \"react\";\nimport {\n Breadcrumbs as MantineBreadcrumbs,\n type BreadcrumbsProps as MantineBreadcrumbsProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Breadcrumb.module.css\";\n\n// Currently there are no Recursica prop additions specific to Breadcrumbs (like size or variant)\n// according to recursica_ui-kit.json\nimport {\n markCurrentPageItem,\n type RecursicaBreadcrumbProps,\n} from \"@recursica/adapter-common\";\n\nexport type BreadcrumbProps = RecursicaOverStyled<\n Omit<MantineBreadcrumbsProps, \"variant\" | \"size\"> & RecursicaBreadcrumbProps\n>;\n\n/**\n * The last child should always be plain, non-interactive text (e.g. a `<span>`) — it represents\n * the current page and shouldn't be a link. Breadcrumb tries to correct for a Link/anchor passed\n * there anyway via `markCurrentPageItem` (aria-current, stripped href/onClick, CSS reset in\n * Breadcrumb.module.css), but that's a best-effort safety net, not a guarantee — it can't stop a\n * custom Link component (e.g. a router Link) that navigates from its own internal handler. See\n * BREADCRUMB_IMPLEMENTATION_NOTES.md.\n */\nexport const Breadcrumb = forwardRef<HTMLDivElement, BreadcrumbProps>(\n function Breadcrumb(\n { overStyled = false, separator = \">\", children, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(\n { separator, children: markCurrentPageItem(children), ...rest },\n overStyled,\n );\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n separator: styles.separator,\n },\n (sanitizedProps as Record<string, unknown>).classNames as\n | Partial<Record<string, string>>\n | undefined,\n );\n\n // Mantine's Breadcrumbs, unlike MUI's, doesn't hide the separator from screen\n // readers by default — it's a plain text node. Match MUI's built-in aria-hidden,\n // letting a caller override it via attributes.separator[\"aria-hidden\"] if needed.\n const callerAttributes = (sanitizedProps as Record<string, unknown>)\n .attributes as\n | Partial<Record<string, Record<string, unknown>>>\n | undefined;\n const mergedAttributes = {\n ...callerAttributes,\n separator: {\n \"aria-hidden\": true,\n ...callerAttributes?.separator,\n },\n };\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineBreadcrumbs\n ref={ref}\n {...(sanitizedProps as unknown as MantineBreadcrumbsProps)}\n className={finalClass}\n classNames={mergedClassNames}\n attributes={mergedAttributes}\n />\n );\n },\n);\n\nBreadcrumb.displayName = \"Breadcrumb\";\n","import { forwardRef } from \"react\";\nimport {\n Loader as MantineLoader,\n type LoaderProps as MantineLoaderProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Loader.module.css\";\n\nimport { type RecursicaLoaderProps } from \"@recursica/adapter-common\";\n\nexport type LoaderProps = RecursicaOverStyled<\n Omit<MantineLoaderProps, \"variant\" | \"size\" | \"type\"> & RecursicaLoaderProps\n>;\n\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n {\n variant = \"oval\",\n size = \"default\",\n animate = true,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const mapSize = {\n sm: \"small\",\n md: \"default\",\n lg: \"large\",\n small: \"small\",\n default: \"default\",\n large: \"large\",\n } as const;\n\n const resolvedSize = mapSize[size] || \"default\";\n\n // Strip all visual override injections unless developer has specifically opted into overStyling.\n // External layout props like margins are safely preserved.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n { root: styles.root },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineLoader\n ref={ref}\n {...sanitizedProps}\n type={variant}\n data-variant={variant}\n data-size={resolvedSize}\n data-animate={animate}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n});\n\nLoader.displayName = \"Loader\";\n","import React, { forwardRef } from \"react\";\nimport { Loader } from \"../Loader/Loader\";\nimport {\n Button as MantineButton,\n type ButtonProps as MantineButtonProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n withCallerOverride,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Button.module.css\";\n\nimport { type RecursicaButtonProps } from \"@recursica/adapter-common\";\n\nexport type ButtonProps = RecursicaOverStyled<\n Omit<MantineButtonProps, \"variant\" | \"size\" | \"leftSection\" | \"fullWidth\"> &\n RecursicaButtonProps\n>;\n\nfunction hasVisibleChildren(children: React.ReactNode): boolean {\n if (children == null || children === \"\") return false;\n if (typeof children === \"string\") return children.trim() !== \"\";\n return true;\n}\n\nconst _Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"default\",\n icon,\n children,\n overStyled = false,\n loaderVariant = \"oval\",\n loaderSize,\n useRecursicaLoader = true,\n ...rest\n },\n ref,\n) {\n const mapVariant = {\n solid: \"filled\",\n outline: \"outline\",\n text: \"subtle\",\n } as const;\n\n const mapSize = {\n default: \"md\",\n small: \"sm\",\n } as const;\n\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"fullWidth\", // Recursica Button width comes from layout/token constraints, not Mantine's boolean fullWidth toggle.\n ] as const satisfies readonly (keyof MantineButtonProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const hasLeftSection = !!icon || !!restRecord[\"leftSection\"];\n const hasRightSection = !!restRecord[\"rightSection\"];\n const hasVisibleText = hasVisibleChildren(children);\n const isIconOnly = (hasLeftSection || hasRightSection) && !hasVisibleText;\n\n let contentType = \"label\";\n if (isIconOnly) {\n contentType = \"icon-only\";\n } else if (hasLeftSection || hasRightSection) {\n contentType = \"icon-label\";\n }\n\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\" &&\n isIconOnly &&\n !restRecord[\"aria-label\"]\n ) {\n console.warn(\n '[Recursica Button] Icon-only buttons must provide an accessible name. Pass aria-label (e.g. aria-label=\"Submit\").',\n );\n }\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n section: styles.section,\n label: styles.label,\n loader: styles.loader,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n // Note: `finalClass` is safe from being clobbered by `{...sanitizedProps}` below purely\n // because of spread order — `className` (like `classNames`, `variant`, `size`, `leftSection`,\n // and the `data-*` attributes) is spread first, then re-asserted after, so our computed value\n // always wins. See the canonical guide's §3.3 for why ordering (not deletion) is the fix here.\n\n const userLoaderProps = restRecord.loaderProps as\n | Record<string, unknown>\n | undefined;\n\n const resolvedLoaderSize = withCallerOverride(\n size === \"small\" ? \"small\" : \"default\",\n loaderSize,\n );\n\n let mergedLoaderProps = userLoaderProps;\n if (useRecursicaLoader) {\n // color=\"var(--button-color)\" makes the loader ring match this button's own text color\n // (Mantine's Button sets --button-color per variant/state) instead of Loader's own\n // standalone indicator-color token, which Loader.module.css's `.root` would otherwise\n // apply unconditionally, ignoring this nesting context. overStyled is required to pass\n // `color` at all (blocked by default) — fully internal composition, no prop threading to\n // callers, so it doesn't widen Loader's public API. See Button's IMPLEMENTATION_NOTES.md.\n mergedLoaderProps = {\n children: (\n <Loader\n variant={loaderVariant}\n size={resolvedLoaderSize}\n overStyled\n color=\"var(--button-color)\"\n />\n ),\n ...userLoaderProps,\n };\n }\n\n return (\n <MantineButton\n ref={ref}\n {...sanitizedProps}\n className={finalClass}\n classNames={mergedClassNames}\n variant={mapVariant[variant]}\n size={mapSize[size]}\n loaderProps={mergedLoaderProps}\n leftSection={\n icon != null ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : undefined\n }\n data-variant={variant}\n data-size={size}\n data-content={contentType}\n disabled={!!restRecord.disabled || !!restRecord.loading}\n >\n <span className={styles.labelText}>{children}</span>\n </MantineButton>\n );\n});\n_Button.displayName = \"Button\";\n\n/**\n * Recursica Button component wrapping Mantine's Button.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * This is particularly useful when you need a button that behaves as a hyperlink (rendering an `<a>` tag)\n * or integrates with a routing library (e.g., `react-router-dom` or Next.js), while preserving full visual styling.\n *\n * @example\n * ```tsx\n * // Renders as an <a> tag natively\n * <Button component=\"a\" href=\"/dashboard\" target=\"_blank\">Navigate</Button>\n *\n * // Renders using a custom router link\n * <Button renderRoot={(props) => <Link to=\"/home\" {...props} />}>Home</Button>\n * ```\n */\nexport const Button = createPolymorphicComponent<\"button\", ButtonProps>(\n _Button,\n);\n","import { forwardRef } from \"react\";\nimport {\n Card as MantineCard,\n type CardProps as MantineCardProps,\n type CardSectionProps as MantineCardSectionProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Card.module.css\";\n\nimport {\n type RecursicaCardProps,\n type RecursicaCardSectionProps,\n} from \"@recursica/adapter-common\";\n\n// ==== CARD CONTAINER ====\nexport type CardProps = RecursicaOverStyled<\n MantineCardProps & RecursicaCardProps\n> & {\n flex?: string | number;\n flexGrow?: string | number;\n flexShrink?: string | number;\n flexBasis?: string | number;\n grow?: string | number;\n h?: string | number;\n height?: string | number;\n};\n\n/**\n * The root Card elevation box. It establishes the global background color, border radius, nested component gap, and outer shadow governed by the current `Layer` context.\n */\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript. `Card.module.css` unconditionally\n// drives these from Recursica UI Kit tokens on `.root`; the native prop is never consulted.\nconst UNSUPPORTED_PROPS = [\n \"radius\", // Border radius is token-driven (`--recursica_..._borders_border-radius`), not caller-set.\n \"withBorder\", // Border is always applied via tokens on `.root`; not an optional caller toggle.\n \"padding\", // Padding is token-driven (`--card-padding`), not Mantine's spacing-scale prop.\n] as const satisfies readonly (keyof MantineCardProps)[];\n\nconst CardBase = forwardRef<HTMLDivElement, CardProps>(function Card(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n UNSUPPORTED_PROPS,\n );\n\n // Expose outer layout/flexbox properties on Card to allow structuring alongside siblings\n const safeCardLayoutKeys = [\n \"flex\",\n \"flexGrow\",\n \"flexShrink\",\n \"flexBasis\",\n \"grow\",\n \"h\",\n \"height\",\n ] as const;\n safeCardLayoutKeys.forEach((key) => {\n if (key in rest && !(key in sanitizedProps)) {\n (sanitizedProps as Record<string, unknown>)[key] = (\n rest as Record<string, unknown>\n )[key];\n }\n });\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n },\n (sanitizedProps as Record<string, unknown>).classNames as\n | Partial<Record<string, string>>\n | undefined,\n );\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard\n ref={ref}\n {...(sanitizedProps as unknown as MantineCardProps)}\n className={classNameProp}\n classNames={mergedClassNames}\n />\n );\n});\nCardBase.displayName = \"Card\";\n\nexport type CardSectionProps = RecursicaOverStyled<\n MantineCardSectionProps & RecursicaCardSectionProps\n>;\n\n/**\n * A generalized edge-to-edge structural wrapper native to Mantine. Strips typical boundary padding via negative margins to allow content (like maps or header images) to touch the border seamlessly.\n */\nexport const CardSection = forwardRef<HTMLDivElement, CardSectionProps>(\n function CardSection({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n className={\n classNameProp ? `${styles.section} ${classNameProp}` : styles.section\n }\n />\n );\n },\n);\nCardSection.displayName = \"CardSection\";\n\n// ==== EXPLICIT CARD.HEADER ====\nexport type CardHeaderProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * Replaces standard generic Mantine `<Card.Section>` wrappers by directly injecting the strict Recursica design tokens for header sizing, background drops, and intrinsic padding limits.\n */\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript. `CardHeaderProps` already omits all\n// native Mantine section props from the public type, but that alone doesn't stop a forced-typed\n// caller from smuggling one through `...rest`; `.header` in Card.module.css unconditionally\n// drives background/padding/border from Recursica tokens, so these native toggles are meaningless.\nconst HEADER_FOOTER_UNSUPPORTED_PROPS = [\n \"withBorder\", // The divider border is always applied via tokens on `.header`/`.footer`.\n \"inheritPadding\", // Padding is fixed by the `.header`/`.footer` token-driven padding, not Mantine's default.\n] as const satisfies readonly (keyof MantineCardSectionProps)[];\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n function CardHeader({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n HEADER_FOOTER_UNSUPPORTED_PROPS,\n );\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n className={\n classNameProp ? `${styles.header} ${classNameProp}` : styles.header\n }\n />\n );\n },\n);\nCardHeader.displayName = \"CardHeader\";\n\n// ==== EXPLICIT CARD.FOOTER ====\nexport type CardFooterProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * Counterpart to `Card.Header`, applying specific footer elevation margins, sizes, and padding natively.\n */\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n function CardFooter({ overStyled = false, ...rest }, ref) {\n // Reuses HEADER_FOOTER_UNSUPPORTED_PROPS (declared above with CardHeader) — same rationale\n // applies: `.footer` in Card.module.css unconditionally drives padding/border from tokens.\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n HEADER_FOOTER_UNSUPPORTED_PROPS,\n );\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n className={\n classNameProp ? `${styles.footer} ${classNameProp}` : styles.footer\n }\n />\n );\n },\n);\nCardFooter.displayName = \"CardFooter\";\n\n// ==== EXPLICIT CARD.CONTENT ====\nexport type CardContentProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Internal container that safely binds typography and structural flex gaps driven by the active UI kit tokens natively, preserving correct padding blocks compared to rigid `Card.Section` edges.\n */\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(\n function CardContent({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <div\n ref={ref}\n {...sanitizedProps}\n className={\n classNameProp ? `${styles.content} ${classNameProp}` : styles.content\n }\n />\n );\n },\n);\nCardContent.displayName = \"CardContent\";\n\n// ==== DOT NOTATION EXPORT ====\n\n/**\n * Recursica Card component wrapping Mantine's Card (Paper).\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * Use dot-notation sub-components for structured card layouts.\n */\nconst PolymorphicCard = createPolymorphicComponent<\n \"div\",\n CardProps,\n {\n Section: typeof CardSection;\n Header: typeof CardHeader;\n Footer: typeof CardFooter;\n Content: typeof CardContent;\n }\n>(CardBase);\n\n// Attach static components for dot-notation access\nconst _card = PolymorphicCard as unknown as Record<string, unknown>;\n_card.Section = CardSection;\n_card.Header = CardHeader;\n_card.Footer = CardFooter;\n_card.Content = CardContent;\n\nexport const Card = PolymorphicCard as typeof PolymorphicCard & {\n Section: typeof CardSection;\n Header: typeof CardHeader;\n Footer: typeof CardFooter;\n Content: typeof CardContent;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Checkbox as MantineCheckbox,\n type CheckboxGroupProps as MantineCheckboxGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Checkbox.module.css\";\n\nimport { type RecursicaCheckboxGroupProps as BaseRecursicaCheckboxGroupProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaCheckboxGroupProps\n extends Omit<\n MantineCheckboxGroupProps,\n \"size\" | \"labelProps\" | \"defaultValue\" | \"value\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaCheckboxGroupProps {}\n\nexport type CheckboxGroupProps =\n RecursicaOverStyled<RecursicaCheckboxGroupProps>;\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n function CheckboxGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Checkbox.module.css variables, not Mantine's native size scale.\n ] as const satisfies readonly (keyof MantineCheckboxGroupProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Mantine's own `Checkbox.Group` always establishes a context whose `value` defaults to\n // `[]` (see @mantine/core's `useUncontrolled({ finalValue: [] })`), and its `Checkbox` spreads\n // that context-derived `checked` *after* the individually-passed `checked` prop — so any\n // `Checkbox` nested in a real `Checkbox.Group`, even one given neither `value` nor\n // `defaultValue`, has its own `checked` prop silently forced to `false`. Callers who only want\n // this component for its layout (item-gap spacing), not array-tracked selection — e.g.\n // `TransferList`'s ungrouped rows, which pass each `Checkbox` its own controlled `checked` —\n // must skip Mantine's real group primitive entirely rather than hand it an empty value.\n const isArrayControlled = value !== undefined || defaultValue !== undefined;\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_checkbox-item_properties_max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive checkboxes nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n isArrayControlled ? (\n <MantineCheckbox.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineCheckboxGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value as any}\n defaultValue={defaultValue as any}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineCheckbox.Group>\n ) : (\n <div\n ref={ref}\n {...(sanitizedProps as Record<string, unknown>)}\n role=\"group\"\n className={styles.groupRoot}\n data-layout={formLayout}\n >\n {children}\n </div>\n )\n }\n />\n );\n },\n);\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Checkbox as MantineCheckbox,\n type CheckboxProps as MantineCheckboxProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport { CheckboxGroup } from \"./CheckboxGroup\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RequireAccessibleLabel,\n type RecursicaCheckboxProps,\n} from \"@recursica/adapter-common\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\n\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxWrapperProps = Omit<\n MantineCheckboxProps,\n \"size\" | \"color\" | \"radius\" | \"iconColor\" | \"variant\"\n> &\n RecursicaCheckboxProps &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >;\n\nexport type RecursicaCheckboxPropsAlias =\n RequireAccessibleLabel<CheckboxWrapperProps>;\n\nexport type CheckboxProps = RecursicaOverStyled<RecursicaCheckboxPropsAlias>;\n\ntype CheckboxComponent = React.ForwardRefExoticComponent<\n CheckboxProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof CheckboxGroup;\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n // Checkbox doesn't use Label onLabelEditClick natively since it isn't mapped inside FormControlWrapper intrinsically.\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Checkbox.module.css variables, not Mantine's native size scale.\n \"color\", // Colors are token-driven via Checkbox.module.css; Mantine's native palette isn't exposed.\n \"radius\", // Corner radius is fixed by Recursica tokens in Checkbox.module.css, not caller-configurable.\n \"variant\", // Checkbox has a single Recursica-defined visual treatment; Mantine's variant isn't exposed.\n \"iconColor\", // Icon color is token-driven via Checkbox.module.css, not a native Mantine override.\n ] as const satisfies readonly (keyof MantineCheckboxProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n body: styles.body,\n inner: styles.inner,\n input: styles.input,\n icon: styles.icon,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Checkbox.module.css\n const checkboxNode = (\n <MantineCheckbox\n ref={ref}\n {...(sanitizedProps as unknown as MantineCheckboxProps)}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {checkboxNode}\n </FormControlLayout>\n );\n }\n\n return checkboxNode;\n },\n) as CheckboxComponent;\n\nCheckbox.displayName = \"Checkbox\";\nCheckbox.Group = CheckboxGroup;\n","import React, { forwardRef } from \"react\";\nimport {\n Chip as MantineChip,\n type ChipProps as MantineChipProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n withCallerOverride,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Chip.module.css\";\nimport { type RecursicaChipProps } from \"@recursica/adapter-common\";\n\nexport type ChipProps = RecursicaOverStyled<\n Omit<MantineChipProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaChipProps\n>;\n\nfunction CloseIcon(props: React.ComponentPropsWithoutRef<\"svg\">) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n );\n}\n\nexport const Chip = forwardRef<HTMLInputElement, ChipProps>(function Chip(\n {\n error = false,\n icon,\n onDelete,\n deleteLabel = \"Delete\",\n deleteTabIndex,\n deleteIconRef,\n children,\n checked,\n overStyled = false,\n wrapperProps,\n tabIndex,\n \"aria-hidden\": ariaHidden,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n label: styles.label,\n input: styles.input,\n iconWrapper: styles.mantineIconWrapper,\n checkIcon: styles.checkIcon,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n // Determine state\n const dataError = error ? \"\" : undefined;\n const isIconOnly = !children && (!!icon || !!onDelete);\n // A chip only counts as interactive when something actually responds to it — merely passing a\n // `checked` value (e.g. to pin a display-only chip to a fixed visual state, as FileUpload's\n // read-only file list does) isn't itself an interaction, since clicking it with no onChange/\n // onClick wired does nothing observable.\n const isInteractive =\n onDelete !== undefined ||\n restRecord.onClick !== undefined ||\n restRecord.onChange !== undefined;\n\n // Our own computed default for Mantine's `wrapperProps` — flags the internal error/interactive\n // CSS hooks. This is a real Mantine `ChipProps` slot a caller could legitimately pass their own\n // value for, so it must merge via `withCallerOverride`, not silently clobber theirs.\n const computedWrapperProps = {\n ...(dataError !== undefined ? { \"data-error\": \"\" } : {}),\n ...(isInteractive ? { \"data-interactive\": \"\" } : {}),\n } as NonNullable<MantineChipProps[\"wrapperProps\"]>;\n\n return (\n <MantineChip\n ref={ref}\n {...sanitizedProps}\n checked={checked}\n className={finalClass}\n classNames={mergedClassNames}\n wrapperProps={withCallerOverride(computedWrapperProps, wrapperProps)}\n data-icon-only={isIconOnly ? \"\" : undefined}\n tabIndex={withCallerOverride<number | undefined>(\n isInteractive ? undefined : -1,\n tabIndex,\n )}\n aria-hidden={withCallerOverride<boolean | \"true\" | \"false\" | undefined>(\n isInteractive ? undefined : true,\n ariaHidden,\n )}\n >\n <span className={styles.innerWrapper}>\n {/* When checked, Mantine's own check icon (rendered in its native iconWrapper slot,\n ahead of this children span) overlays/replaces the leading icon rather than sitting\n next to it — matching mui-adapter's `icon={checked ? checkIcon : icon}` swap. */}\n {icon && !checked && (\n <span className={styles.leadingIcon} aria-hidden>\n {icon}\n </span>\n )}\n\n <span className={styles.children}>{children}</span>\n\n {onDelete && (\n <span\n ref={deleteIconRef}\n role=\"button\"\n className={styles.deleteIcon}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onDelete(e);\n }}\n aria-label={deleteLabel}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n onDelete(\n e as unknown as React.MouseEvent<HTMLSpanElement, MouseEvent>,\n );\n }\n }}\n tabIndex={deleteTabIndex ?? 0}\n >\n <CloseIcon />\n </span>\n )}\n </span>\n </MantineChip>\n );\n});\n\nChip.displayName = \"Chip\";\n","import { forwardRef } from \"react\";\nimport {\n Container as MantineContainer,\n type ContainerProps as MantineContainerProps,\n} from \"@mantine/core\";\nimport styles from \"./Container.module.css\";\n\nimport { type WithRecursicaSpacing } from \"../../utils/filterStylingProps\";\nimport { type RecursicaContainerProps } from \"@recursica/adapter-common\";\n\n/**\n * Container layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type ContainerProps = WithRecursicaSpacing<\n Omit<MantineContainerProps, \"size\"> & RecursicaContainerProps\n>;\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, size, ...rest }, ref) {\n const mapSize: Record<string, string> = {\n \"rec-sm\": \"sm\",\n \"rec-default\": \"md\",\n \"rec-md\": \"md\",\n \"rec-lg\": \"lg\",\n \"rec-xl\": \"xl\",\n \"rec-2xl\": \"xl\",\n };\n\n const resolvedSize =\n typeof size === \"string\" && mapSize[size] ? mapSize[size] : size;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineContainer\n ref={ref}\n size={resolvedSize}\n className={finalClass}\n classNames={mergedClassNames}\n {...rest}\n >\n {children}\n </MantineContainer>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","import React from \"react\";\n\n/**\n * Default leading icon for DatePicker's left section. Consumers can override it by passing\n * their own `leftSection` prop (see DatePicker.tsx). Sized/colored entirely via the generic\n * `.section :global(svg)` rule in DatePicker.module.css, same as the icon in the\n * WithLeadingIcon story — no width/height/color hardcoded here on purpose.\n */\nexport function CalendarIcon(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n {...props}\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n );\n}\n","import React, { forwardRef } from \"react\";\nimport {\n DatePickerInput,\n type DatePickerInputProps,\n getFormattedDate,\n} from \"@mantine/dates\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n withCallerOverride,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport { CalendarIcon } from \"./DatePicker.icons\";\nimport styles from \"./DatePicker.module.css\";\n\nimport { type RecursicaDatePickerProps as BaseRecursicaDatePickerProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaDatePickerProps\n extends Omit<\n DatePickerInputProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"label\"\n | \"error\"\n | \"required\"\n | \"withAsterisk\"\n | \"id\"\n | \"description\"\n >,\n Pick<\n DatePickerInputProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaDatePickerProps {}\n\nexport type DatePickerProps = RecursicaOverStyled<RecursicaDatePickerProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n \"description\", // Managed by FormControlWrapper via assistiveText.\n] as const satisfies readonly (keyof DatePickerInputProps)[];\n\nexport const DatePicker = forwardRef<HTMLButtonElement, DatePickerProps>(\n function DatePicker(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n highlightToday = true, // Default on so today is visually marked; consumers can still override.\n valueFormat = \"MM/DD/YY\", // Default display format; consumers can still override.\n placeholder = \"MM / DD / YY\", // Default placeholder; consumers can still override.\n leftSection, // Default leading icon computed below; consumers can still override.\n ...rest\n } = props;\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames = mergeClassNames(\n {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n day: styles.day,\n weekday: styles.weekday,\n calendarHeader: styles.calendarHeader,\n calendarHeaderControl: styles.calendarHeaderControl,\n calendarHeaderLevel: styles.calendarHeaderLevel,\n calendarHeaderControlIcon: styles.calendarHeaderControlIcon,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // The calendar popover surface (.dropdown) is styled by Mantine's underlying `Popover`\n // component, not `DatePickerInput` itself — it only accepts classNames via `popoverProps`,\n // not the top-level `classNames` map above (which only reaches the Input/Calendar parts).\n const popoverPropsInput = restRecord.popoverProps;\n const consumerPopoverProps =\n popoverPropsInput &&\n typeof popoverPropsInput === \"object\" &&\n !Array.isArray(popoverPropsInput)\n ? (popoverPropsInput as Record<string, unknown>)\n : undefined;\n const consumerPopoverClassNames =\n consumerPopoverProps?.classNames &&\n typeof consumerPopoverProps.classNames === \"object\" &&\n !Array.isArray(consumerPopoverProps.classNames)\n ? (consumerPopoverProps.classNames as Partial<Record<string, string>>)\n : undefined;\n delete restRecord[\"popoverProps\"];\n const mergedPopoverProps = {\n ...consumerPopoverProps,\n classNames: mergeClassNames(\n { dropdown: styles.dropdown },\n consumerPopoverClassNames,\n ),\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={(() => {\n const readOnlyDate = value !== undefined ? value : defaultValue;\n // `DatePickerInput` formats its own displayed value via `valueFormat` internally\n // (using this same `getFormattedDate` helper) — the read-only text swap-in bypassed\n // that entirely and rendered `String(date)` instead (a raw JS `Date.toString()`, e.g.\n // \"Wed May 20 2026 17:00:00 GMT-0700 (Pacific Daylight Time)\"), so a read-only\n // DatePicker never matched what the same value looks like while editable.\n return readOnlyDate\n ? getFormattedDate({\n type: \"default\",\n date: readOnlyDate,\n locale: \"en\",\n format: valueFormat,\n labelSeparator: \"\",\n })\n : undefined;\n })()}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <DatePickerInput\n ref={ref}\n {...(sanitizedProps as unknown as DatePickerInputProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n label={undefined} // Disable Mantine's native label\n description={undefined} // Disable Mantine's native description\n error={undefined} // Disable Mantine's native error text (handled by wrapper)\n withAsterisk={false} // Handled by wrapper\n highlightToday={highlightToday}\n valueFormat={valueFormat}\n placeholder={placeholder}\n leftSection={withCallerOverride<React.ReactNode>(\n <CalendarIcon />,\n leftSection,\n )}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n popoverProps={mergedPopoverProps}\n />\n }\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n","import React, { forwardRef } from \"react\";\nimport {\n Select as MantineSelect,\n type SelectProps as MantineSelectProps,\n} from \"@mantine/core\";\nimport {\n type ReadOnlyControlProps,\n normalizeComboboxData,\n} from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport { renderRichOption } from \"../../utils/renderRichOption\";\nimport styles from \"./Dropdown.module.css\";\n\nimport { type RecursicaDropdownProps as BaseRecursicaDropdownProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaDropdownProps\n extends Omit<\n MantineSelectProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\" | \"data\" | \"searchable\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaDropdownProps {}\n\nexport type DropdownProps = RecursicaOverStyled<RecursicaDropdownProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n \"searchable\", // Not a supported Dropdown feature — that's what makes it an AutoComplete.\n] as const satisfies readonly (keyof MantineSelectProps)[];\n\nexport const Dropdown = forwardRef<HTMLInputElement, DropdownProps>(\n function Dropdown(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n containerWidth,\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n data,\n clearButtonProps,\n renderOption,\n wrapItemText = false,\n ...rest\n } = props;\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Mantine's own data parser only preserves extra fields (`leadingIcon`/`supportingText`) when\n // an item already has both `value` and `label` — an item with `value` only is rebuilt into a\n // bare `{value, label: value, disabled}` object, silently dropping them (see\n // get-parsed-combobox-data.mjs, and AutoComplete.tsx's identical use of this). Matters here\n // too now that `label` is optional (shared `RecursicaComboboxItem` — see adapter-common).\n const normalizedData = normalizeComboboxData(data);\n\n // Mantine's own clear button (rendered when `clearable` + a value are both present) otherwise\n // renders unstyled — bare `CloseButton` defaults, no Recursica icon-button treatment. Merge in\n // our own class (see `.clearButton` in Dropdown.module.css) alongside anything the caller\n // already passed, same merge shape as `mergeClassNames` but for a single `className` string\n // rather than a per-slot classNames map.\n const consumerClearButtonProps = clearButtonProps as\n | Record<string, unknown>\n | undefined;\n const mergedClearButtonProps = {\n ...consumerClearButtonProps,\n className: consumerClearButtonProps?.className\n ? `${styles.clearButton} ${consumerClearButtonProps.className as string}`\n : styles.clearButton,\n };\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames = mergeClassNames(\n {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const optionClassNames = {\n optionContent: styles.optionContent,\n optionIcon: styles.optionIcon,\n optionText: styles.optionText,\n optionTextWrap: styles.optionTextWrap,\n optionSupportingText: styles.optionSupportingText,\n };\n\n const injectedStyles = {\n ...((style as React.CSSProperties) || {}),\n width: containerWidth || \"100%\",\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={injectedStyles}\n controlMaxWidth=\"var(--dropdown-control-max-width)\"\n controlMinWidth=\"var(--dropdown-control-min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined\n ? String(value)\n : defaultValue\n ? String(defaultValue)\n : undefined\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Select execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineSelect\n ref={ref}\n {...(sanitizedProps as unknown as MantineSelectProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n data={\n (normalizedData as unknown as MantineSelectProps[\"data\"]) || []\n }\n renderOption={\n renderOption ??\n ((input) =>\n renderRichOption(input, optionClassNames, wrapItemText))\n }\n clearButtonProps={mergedClearButtonProps}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n // `wrapperProps` targets Mantine's *outer* `Input.Wrapper` (the label/description/error\n // stacking element) — a different, ancestor element from the \"wrapper\" styles-api slot\n // that actually carries `styles.root`'s border/background. Dropdown.module.css's error/\n // disabled rules (`.root[data-error]`/`[data-disabled]`) need the attribute on that\n // inner element, so `attributes.wrapper` (which targets the same slot as\n // `classNames.wrapper`) is the correct hook — `wrapperProps` here meant the error state\n // never actually applied a border color.\n attributes={{\n wrapper: {\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n },\n }}\n />\n }\n />\n );\n },\n);\n\nDropdown.displayName = \"Dropdown\";\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { type InputWrapperProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { Button } from \"../Button/Button\";\nimport { Chip } from \"../Chip/Chip\";\nimport {\n FormControlWrapper,\n type RecursicaFormControlWrapperProps,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport styles from \"./FileInput.module.css\";\n\nimport {\n fileMatchesAccept,\n type RecursicaFileUploadItem,\n type RecursicaFileInputProps as BaseRecursicaFileInputProps,\n} from \"@recursica/adapter-common\";\nexport type { RecursicaFileUploadItem };\n\nexport interface RecursicaFileInputProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"children\" | \"onDrop\" | \"onChange\"\n >,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n BaseRecursicaFileInputProps {}\n\nexport type FileInputProps = RecursicaOverStyled<RecursicaFileInputProps>;\n\nfunction UploadIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <path d=\"M12 3v12\" />\n <path d=\"M7 8l5-5 5 5\" />\n <path d=\"M4 21h16\" />\n </svg>\n );\n}\n\nfunction ClearIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n/**\n * A single-line, `TextField`-shaped control for choosing one or more files, sharing\n * `FileUpload`'s selection/validation interface (`accept`/`maxSize`/`maxFiles`, `readOnly`)\n * behind a different presentation.\n *\n * @example\n * <FileInput\n * label=\"Resume\"\n * files={files}\n * onFilesAdded={(added) => setFiles(added.map((file) => ({ file })))}\n * onFileRemove={() => setFiles([])}\n * />\n */\nexport const FileInput = forwardRef<HTMLDivElement, FileInputProps>(\n function FileInput(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n\n files,\n onFilesAdded,\n onFileRemove,\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n onFilesRejected,\n invalidFileTypeMessage = \"File type not accepted\",\n maxFilesMessage = multiple\n ? `Maximum of ${maxFiles} files allowed`\n : \"Only one file is allowed\",\n icon,\n clearIcon,\n placeholder = \"Select a file...\",\n browseLabel = \"Choose file\",\n removeFileLabel = \"Remove\",\n clearLabel = \"Clear\",\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const interactive = !disabled && !readOnly;\n const hasFiles = !!files && files.length > 0;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Whether the most recent drop/pick attempt included a file that failed the `accept` check —\n // surfaced as the control's error state (see `effectiveError` below), same as FileUpload.\n const [invalidTypeRejected, setInvalidTypeRejected] = useState(false);\n // Whether the most recent drop/pick attempt included a file past the effective cap — 1 in\n // single-file mode, `maxFiles` in multiple-file mode.\n const [tooManyFilesRejected, setTooManyFilesRejected] = useState(false);\n\n const handleFiles = (incoming: FileList | File[]) => {\n if (!interactive) return;\n const list = Array.from(incoming);\n if (list.length === 0) return;\n\n // Single-file mode always replaces the current selection rather than adding to it, so it\n // never counts the existing file against the cap — the effective cap is just 1.\n const effectiveMaxFiles = multiple ? maxFiles : 1;\n const currentCount = multiple ? (files?.length ?? 0) : 0;\n\n const accepted: File[] = [];\n const rejected: File[] = [];\n let hasInvalidType = false;\n let hasTooMany = false;\n for (const file of list) {\n const isInvalidType = !fileMatchesAccept(file, accept);\n if (isInvalidType) hasInvalidType = true;\n const isTooLarge = maxSize !== undefined && file.size > maxSize;\n const wouldExceedMax =\n effectiveMaxFiles !== undefined &&\n currentCount + accepted.length >= effectiveMaxFiles;\n if (wouldExceedMax) hasTooMany = true;\n const isRejected = isInvalidType || isTooLarge || wouldExceedMax;\n (isRejected ? rejected : accepted).push(file);\n }\n setInvalidTypeRejected(hasInvalidType);\n setTooManyFilesRejected(hasTooMany);\n if (accepted.length > 0) onFilesAdded?.(accepted);\n if (rejected.length > 0) onFilesRejected?.(rejected);\n };\n\n // Counts nested dragenter/dragleave pairs (they fire for every child element the pointer\n // crosses, not just the root itself) so the drag-over visual state only clears once the\n // pointer has actually left the control, not just moved between its children. Mirrors\n // FileUpload's dropzone.\n const dragCounterRef = useRef(0);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n dragCounterRef.current += 1;\n setIsDragging(true);\n };\n\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n dragCounterRef.current -= 1;\n if (dragCounterRef.current <= 0) {\n dragCounterRef.current = 0;\n setIsDragging(false);\n }\n };\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n // Required so the browser treats this element as a valid drop target.\n event.preventDefault();\n };\n\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n dragCounterRef.current = 0;\n setIsDragging(false);\n handleFiles(event.dataTransfer.files);\n };\n\n const openFilePicker = () => {\n if (!interactive) return;\n inputRef.current?.click();\n };\n\n const handleRootKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n openFilePicker();\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) handleFiles(event.target.files);\n // Reset so picking the same file again still fires a change event.\n event.target.value = \"\";\n };\n\n const handleClearAll = () => {\n if (!interactive || !files || files.length === 0) return;\n files.forEach((item) => onFileRemove?.(item.id ?? item.file.name));\n };\n\n // Roving tabindex across the file chip list (single- or multiple-file mode): only the\n // \"active\" chip's delete icon is a tab stop, and Left/Right/Up/Down move it — same pattern\n // as FileUpload, see FILEINPUT_IMPLEMENTATION_NOTES.md.\n const [activeChipIndex, setActiveChipIndex] = useState(0);\n const deleteIconRefs = useRef<Array<HTMLSpanElement | null>>([]);\n const prevFileCountRef = useRef(files?.length ?? 0);\n\n useEffect(() => {\n const count = files?.length ?? 0;\n if (count > 0 && count < prevFileCountRef.current) {\n const nextIndex = Math.min(activeChipIndex, count - 1);\n setActiveChipIndex(nextIndex);\n deleteIconRefs.current[nextIndex]?.focus();\n }\n prevFileCountRef.current = count;\n // Only react to the file list itself shrinking/growing, not to activeChipIndex changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [files]);\n\n const handleChipRowKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>,\n ) => {\n const count = files?.length ?? 0;\n if (count === 0) return;\n let nextIndex: number | undefined;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n nextIndex = (activeChipIndex + 1) % count;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n nextIndex = (activeChipIndex - 1 + count) % count;\n }\n if (nextIndex === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n setActiveChipIndex(nextIndex);\n deleteIconRefs.current[nextIndex]?.focus();\n };\n\n // The built-in `accept`/cap-mismatch message is only shown when the integrator hasn't\n // supplied their own `error` — an explicit error always wins.\n const effectiveError =\n error ??\n (invalidTypeRejected\n ? invalidFileTypeMessage\n : tooManyFilesRejected\n ? maxFilesMessage\n : undefined);\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <FormControlWrapper\n overStyled={overStyled as true}\n className={wrapperClass}\n style={style}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={effectiveError}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n controlMaxWidth=\"var(--file-input-control-max-width)\"\n controlMinWidth=\"var(--file-input-control-min-width)\"\n >\n <div\n ref={ref}\n {...restRecord}\n className={styles.root}\n role=\"button\"\n aria-label={browseLabel}\n aria-disabled={disabled ? \"true\" : undefined}\n tabIndex={interactive ? 0 : -1}\n data-disabled={disabled ? \"true\" : undefined}\n data-readonly={readOnly ? \"true\" : undefined}\n data-error={effectiveError ? \"true\" : undefined}\n data-dragging={isDragging ? \"true\" : undefined}\n onClick={interactive ? openFilePicker : undefined}\n onKeyDown={interactive ? handleRootKeyDown : undefined}\n onDragEnter={interactive ? handleDragEnter : undefined}\n onDragLeave={interactive ? handleDragLeave : undefined}\n onDragOver={interactive ? handleDragOver : undefined}\n onDrop={interactive ? handleDrop : undefined}\n >\n <span className={styles.leadingIcon} aria-hidden>\n {icon ?? <UploadIcon />}\n </span>\n\n <div className={styles.content}>\n {!hasFiles && (\n <span className={styles.value} data-placeholder=\"true\">\n {placeholder}\n </span>\n )}\n\n {hasFiles && (\n <div\n className={styles.chipRow}\n onKeyDown={readOnly ? undefined : handleChipRowKeyDown}\n >\n {files!.map((item: RecursicaFileUploadItem, index) => {\n const itemId = item.id ?? item.file.name;\n return (\n <span\n key={itemId}\n className={styles.chipWrapper}\n onClick={(e) => e.stopPropagation()}\n >\n <Chip\n checked={false}\n tabIndex={-1}\n deleteLabel={readOnly ? undefined : removeFileLabel}\n deleteTabIndex={\n !readOnly && index === activeChipIndex ? 0 : -1\n }\n deleteIconRef={(el) => {\n deleteIconRefs.current[index] = el;\n }}\n onDelete={\n readOnly || disabled\n ? undefined\n : () => onFileRemove?.(itemId)\n }\n >\n {item.file.name}\n </Chip>\n </span>\n );\n })}\n </div>\n )}\n </div>\n\n {hasFiles && !readOnly && (\n <Button\n overStyled\n variant=\"text\"\n size=\"small\"\n icon={clearIcon ?? <ClearIcon />}\n aria-label={clearLabel}\n className={styles.trailingIcon}\n disabled={disabled}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleClearAll();\n }}\n onKeyDown={(e) => {\n if (e.key !== \"Enter\" && e.key !== \" \") return;\n e.preventDefault();\n e.stopPropagation();\n handleClearAll();\n }}\n />\n )}\n\n <input\n ref={inputRef}\n type=\"file\"\n hidden\n accept={accept}\n multiple={multiple}\n disabled={!interactive}\n onChange={handleInputChange}\n />\n </div>\n </FormControlWrapper>\n );\n },\n);\n\nFileInput.displayName = \"FileInput\";\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { type InputWrapperProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { Button } from \"../Button/Button\";\nimport { Chip } from \"../Chip/Chip\";\nimport {\n FormControlWrapper,\n type RecursicaFormControlWrapperProps,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport styles from \"./FileUpload.module.css\";\n\nimport {\n fileMatchesAccept,\n type RecursicaFileUploadItem,\n type RecursicaFileUploadProps as BaseRecursicaFileUploadProps,\n} from \"@recursica/adapter-common\";\nexport type { RecursicaFileUploadItem };\n\nexport interface RecursicaFileUploadProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"children\" | \"onDrop\" | \"onChange\"\n >,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n BaseRecursicaFileUploadProps {}\n\nexport type FileUploadProps = RecursicaOverStyled<RecursicaFileUploadProps>;\n\nfunction UploadIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <path d=\"M12 3v12\" />\n <path d=\"M7 8l5-5 5 5\" />\n <path d=\"M4 21h16\" />\n </svg>\n );\n}\n\n/**\n * A dropzone for uploading files, with a native browse-button fallback and a\n * removable-chip list of the currently selected files.\n *\n * @example\n * <FileUpload\n * label=\"Upload Files\"\n * assistiveText=\"Max file size 5MB\"\n * files={files}\n * onFilesAdded={(added) => setFiles((f) => [...f, ...added.map((file) => ({ file }))])}\n * onFileRemove={(id) => setFiles((f) => f.filter((item) => (item.id ?? item.file.name) !== id))}\n * />\n */\nexport const FileUpload = forwardRef<HTMLDivElement, FileUploadProps>(\n function FileUpload(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n\n files,\n onFilesAdded,\n onFileRemove,\n accept,\n multiple = true,\n maxSize,\n maxFiles,\n onFilesRejected,\n invalidFileTypeMessage = \"File type not accepted\",\n maxFilesMessage = `Maximum of ${maxFiles} files allowed`,\n icon,\n dropzoneLabel = \"Drag and drop files here to upload\",\n browseButtonLabel = \"Browse files\",\n removeFileLabel = \"Remove\",\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Whether the most recent drop/pick attempt included a file that failed the `accept` check —\n // surfaced as the control's error state (see `effectiveError` below) rather than left for the\n // integrator to wire up themselves.\n const [invalidTypeRejected, setInvalidTypeRejected] = useState(false);\n // Whether the most recent drop/pick attempt included a file that would have pushed the total\n // past `maxFiles` — surfaced the same way as `invalidTypeRejected` (see `effectiveError`).\n const [tooManyFilesRejected, setTooManyFilesRejected] = useState(false);\n\n const handleFiles = (incoming: FileList | File[]) => {\n if (disabled) return;\n const list = Array.from(incoming);\n if (list.length === 0) return;\n\n const currentCount = files?.length ?? 0;\n const accepted: File[] = [];\n const rejected: File[] = [];\n let hasInvalidType = false;\n let hasTooMany = false;\n for (const file of list) {\n const isInvalidType = !fileMatchesAccept(file, accept);\n if (isInvalidType) hasInvalidType = true;\n const isTooLarge = maxSize !== undefined && file.size > maxSize;\n const wouldExceedMax =\n maxFiles !== undefined && currentCount + accepted.length >= maxFiles;\n if (wouldExceedMax) hasTooMany = true;\n const isRejected = isInvalidType || isTooLarge || wouldExceedMax;\n (isRejected ? rejected : accepted).push(file);\n }\n setInvalidTypeRejected(hasInvalidType);\n setTooManyFilesRejected(hasTooMany);\n if (accepted.length > 0) onFilesAdded?.(accepted);\n if (rejected.length > 0) onFilesRejected?.(rejected);\n };\n\n // Counts nested dragenter/dragleave pairs (they fire for every child element the pointer\n // crosses, not just the dropzone itself) so the drag-over visual state only clears once the\n // pointer has actually left the dropzone, not just moved between its children.\n const dragCounterRef = useRef(0);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n dragCounterRef.current += 1;\n setIsDragging(true);\n };\n\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n dragCounterRef.current -= 1;\n if (dragCounterRef.current <= 0) {\n dragCounterRef.current = 0;\n setIsDragging(false);\n }\n };\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n // Required so the browser treats this element as a valid drop target.\n event.preventDefault();\n };\n\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n dragCounterRef.current = 0;\n setIsDragging(false);\n handleFiles(event.dataTransfer.files);\n };\n\n const openFilePicker = () => {\n if (disabled) return;\n inputRef.current?.click();\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) handleFiles(event.target.files);\n // Reset so picking the same file again still fires a change event.\n event.target.value = \"\";\n };\n\n // Roving tabindex across the file chip list: only the \"active\" chip's delete icon is a tab\n // stop (Tab lands on the first chip), and Left/Right/Up/Down move it — see\n // FILEUPLOAD_IMPLEMENTATION_NOTES.md.\n const [activeChipIndex, setActiveChipIndex] = useState(0);\n const deleteIconRefs = useRef<Array<HTMLSpanElement | null>>([]);\n const prevFileCountRef = useRef(files?.length ?? 0);\n\n useEffect(() => {\n const count = files?.length ?? 0;\n // A chip was removed (via keyboard or otherwise) — keep focus in the list, clamped to the\n // new length, rather than letting it fall back to the document body.\n if (count > 0 && count < prevFileCountRef.current) {\n const nextIndex = Math.min(activeChipIndex, count - 1);\n setActiveChipIndex(nextIndex);\n deleteIconRefs.current[nextIndex]?.focus();\n }\n prevFileCountRef.current = count;\n // Only react to the file list itself shrinking/growing, not to activeChipIndex changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [files]);\n\n const handleFileListKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>,\n ) => {\n const count = files?.length ?? 0;\n if (count === 0) return;\n let nextIndex: number | undefined;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n nextIndex = (activeChipIndex + 1) % count;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n nextIndex = (activeChipIndex - 1 + count) % count;\n }\n if (nextIndex === undefined) return;\n event.preventDefault();\n setActiveChipIndex(nextIndex);\n deleteIconRefs.current[nextIndex]?.focus();\n };\n\n // The built-in `accept`-mismatch message is only shown when the integrator hasn't supplied\n // their own `error` — an explicit error always wins.\n const effectiveError =\n error ??\n (invalidTypeRejected\n ? invalidFileTypeMessage\n : tooManyFilesRejected\n ? maxFilesMessage\n : undefined);\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <FormControlWrapper\n overStyled={overStyled as true}\n className={wrapperClass}\n style={style}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={effectiveError}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n >\n <div\n ref={ref}\n {...restRecord}\n className={styles.root}\n data-disabled={disabled ? \"true\" : undefined}\n data-error={effectiveError ? \"true\" : undefined}\n >\n {!readOnly && (\n <div\n className={styles.dropzone}\n data-dragging={isDragging ? \"true\" : undefined}\n onDragEnter={disabled ? undefined : handleDragEnter}\n onDragLeave={disabled ? undefined : handleDragLeave}\n onDragOver={disabled ? undefined : handleDragOver}\n onDrop={disabled ? undefined : handleDrop}\n >\n <span className={styles.uploadIcon}>\n {icon ?? <UploadIcon />}\n </span>\n <span className={styles.dropzoneText}>{dropzoneLabel}</span>\n <Button\n variant=\"outline\"\n disabled={disabled}\n onClick={openFilePicker}\n >\n {browseButtonLabel}\n </Button>\n <input\n ref={inputRef}\n type=\"file\"\n hidden\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleInputChange}\n />\n </div>\n )}\n\n {files &&\n files.length > 0 &&\n (readOnly ? (\n <div className={styles.fileList}>\n {files.map((item: RecursicaFileUploadItem) => {\n const itemId = item.id ?? item.file.name;\n return (\n <Chip key={itemId} checked={false} tabIndex={-1}>\n {item.file.name}\n </Chip>\n );\n })}\n </div>\n ) : (\n <div\n className={styles.fileList}\n onKeyDown={handleFileListKeyDown}\n >\n {files.map((item: RecursicaFileUploadItem, index) => {\n const itemId = item.id ?? item.file.name;\n return (\n <Chip\n key={itemId}\n checked={false}\n tabIndex={-1}\n deleteLabel={removeFileLabel}\n deleteTabIndex={index === activeChipIndex ? 0 : -1}\n deleteIconRef={(el) => {\n deleteIconRefs.current[index] = el;\n }}\n onDelete={\n disabled ? undefined : () => onFileRemove?.(itemId)\n }\n >\n {item.file.name}\n </Chip>\n );\n })}\n </div>\n ))}\n </div>\n </FormControlWrapper>\n );\n },\n);\n\nFileUpload.displayName = \"FileUpload\";\n","import { forwardRef } from \"react\";\nimport {\n Flex as MantineFlex,\n type FlexProps as MantineFlexProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n mapLayoutProps,\n type WithRecursicaSpacing,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Flex.module.css\";\n\n/**\n * Flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n *\n * No formal Recursica prop contract here: this simply passes through Mantine's own\n * `FlexProps` (gap/rowGap/columnGap/direction/align/justify/wrap are all native to Mantine),\n * layered only with rec- spacing token support via `WithRecursicaSpacing`.\n */\nexport type FlexProps = WithRecursicaSpacing<MantineFlexProps>;\n\nconst _Flex = forwardRef<HTMLDivElement, FlexProps>(function Flex(\n { children, gap = \"rec-default\", rowGap, columnGap, ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineFlex\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, rowGap, columnGap, ...rest } as Record<\n string,\n unknown\n >)}\n >\n {children}\n </MantineFlex>\n );\n});\n_Flex.displayName = \"Flex\";\n\n/**\n * Recursica Flex layout wrapper.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * @example\n * ```tsx\n * <Flex component=\"nav\">...</Flex>\n * <Flex component=\"section\">...</Flex>\n * ```\n */\nexport const Flex = createPolymorphicComponent<\"div\", FlexProps>(_Flex);\n","import { forwardRef } from \"react\";\nimport {\n Grid as MantineGrid,\n type GridProps as MantineGridProps,\n type GridColProps as MantineGridColProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n mapLayoutProps,\n type WithRecursicaSpacing,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Grid.module.css\";\n\n/**\n * Grid layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container, Grid)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n *\n * No formal Recursica prop contract here: this simply passes through Mantine's own\n * `GridProps` (gutter/grow/columns/justify/align are all native to Mantine), layered only\n * with rec- spacing token support via `WithRecursicaSpacing`.\n */\nexport type GridProps = WithRecursicaSpacing<MantineGridProps>;\n\nconst _Grid = forwardRef<HTMLDivElement, GridProps>(function Grid(\n { children, gutter = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n const { gutter: mappedGutter, ...mappedRest } = mapLayoutProps({\n gutter,\n ...rest,\n } as Record<string, unknown>);\n\n return (\n <MantineGrid\n ref={ref}\n gutter={mappedGutter as MantineGridProps[\"gutter\"]}\n className={finalClass}\n classNames={mergedClassNames}\n {...(mappedRest as unknown as Omit<MantineGridProps, \"gutter\">)}\n >\n {children}\n </MantineGrid>\n );\n});\n_Grid.displayName = \"Grid\";\n\n/**\n * Recursica Grid layout wrapper.\n *\n * Supports polymorphism via the `component` prop for custom element rendering.\n * @example\n * ```tsx\n * <Grid gap=\"rec-default\">\n * <Grid.Col span={6}>Half width</Grid.Col>\n * <Grid.Col span={6}>Half width</Grid.Col>\n * </Grid>\n * ```\n */\nconst GridBase = createPolymorphicComponent<\"div\", GridProps>(_Grid);\n\n// ============================================================\n// GRID.COL\n// ============================================================\n\nexport type GridColProps = WithRecursicaSpacing<MantineGridColProps>;\n\nconst _GridCol = forwardRef<HTMLDivElement, GridColProps>(function GridCol(\n { children, ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n col: styles.col,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.col = o.col ? `${styles.col} ${o.col}` : styles.col;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.col} ${classNameProp}`\n : styles.col;\n\n return (\n <MantineGrid.Col\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...(mapLayoutProps(\n rest as Record<string, unknown>,\n ) as unknown as MantineGridColProps)}\n >\n {children}\n </MantineGrid.Col>\n );\n});\n_GridCol.displayName = \"GridCol\";\n\nexport const GridCol = createPolymorphicComponent<\"div\", GridColProps>(\n _GridCol,\n);\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype GridComponent = typeof GridBase & {\n Col: typeof GridCol;\n};\n\nexport const Grid = GridBase as GridComponent;\nGrid.Col = GridCol;\n","import { forwardRef } from \"react\";\nimport {\n Group as MantineGroup,\n type GroupProps as MantineGroupProps,\n} from \"@mantine/core\";\nimport {\n mapLayoutProps,\n type WithRecursicaSpacing,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Group.module.css\";\n\n/**\n * Group flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n *\n * No formal Recursica prop contract here: this simply passes through Mantine's own\n * `GroupProps` (gap/rowGap/columnGap/justify/align/wrap are all native to Mantine),\n * layered only with rec- spacing token support via `WithRecursicaSpacing`.\n */\nexport type GroupProps = WithRecursicaSpacing<MantineGroupProps>;\n\nexport const Group = forwardRef<HTMLDivElement, GroupProps>(function Group(\n { children, gap = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineGroup\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, ...rest } as Record<string, unknown>)}\n >\n {children}\n </MantineGroup>\n );\n});\n\nGroup.displayName = \"Group\";\n","import { forwardRef } from \"react\";\nimport {\n Title as MantineTitle,\n type TitleProps as MantineTitleProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\n\nimport { type RecursicaHeadingProps } from \"@recursica/adapter-common\";\nimport styles from \"./Heading.module.css\";\n\nexport type HeadingProps = RecursicaOverStyled<\n Omit<MantineTitleProps, \"size\"> & RecursicaHeadingProps\n>;\n\n/**\n * Enforces highly accessible structural markup utilizing semantic `<h1>` through `<h6>` tags securely bound directly to Recursica typographic scales.\n */\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading({ overStyled = false, order = 1, ...rest }, ref) {\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls Heading sizing via the `order` prop + typography tokens, not Mantine's native `size`.\n ] as const satisfies readonly (keyof MantineTitleProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n UNSUPPORTED_PROPS,\n );\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const typographyClass = `recursica_brand_typography_h${order}`;\n const mergedClassName = [typographyClass, styles.root, classNameProp]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <MantineTitle\n ref={ref}\n {...(sanitizedProps as unknown as MantineTitleProps)}\n order={order}\n className={mergedClassName}\n />\n );\n },\n);\nHeading.displayName = \"Heading\";\n","import {\n HoverCard as MantineHoverCard,\n type HoverCardProps as MantineHoverCardProps,\n type HoverCardTargetProps as MantineHoverCardTargetProps,\n type HoverCardDropdownProps as MantineHoverCardDropdownProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./HoverCard.module.css\";\n\n// ============================================================\n// HOVERCARD ROOT\n// ============================================================\n\n/**\n * Recursica-specific props for HoverCard.\n */\nimport { type RecursicaHoverCardProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica HoverCard component wrapping Mantine's composable HoverCard.\n *\n * Displays a dropdown panel when the user hovers over a target element.\n * Uses the composable dot-notation pattern:\n * ```tsx\n * <HoverCard withBeak>\n * <HoverCard.Target>\n * <Button>Hover me</Button>\n * </HoverCard.Target>\n * <HoverCard.Dropdown>\n * Content displayed on hover\n * </HoverCard.Dropdown>\n * </HoverCard>\n * ```\n */\nexport type HoverCardProps = RecursicaOverStyled<\n MantineHoverCardProps & RecursicaHoverCardProps\n>;\n\nconst HoverCardBase = function HoverCard({\n overStyled = false,\n withBeak = true,\n position = \"top\", // Recursica default; Mantine defaults to \"bottom\". Consumers can still override.\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px). Consumers can still override.\n arrowSize = 16,\n withArrow,\n ...rest\n}: HoverCardProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames = mergeClassNames(\n {\n dropdown: styles.dropdown,\n arrow: styles.arrow,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantineHoverCard\n {...(sanitizedProps as unknown as MantineHoverCardProps)}\n position={position}\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n />\n );\n};\nHoverCardBase.displayName = \"HoverCard\";\n\n// ============================================================\n// HOVERCARD TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the hover card.\n * Requires a single child element that supports ref forwarding.\n */\nexport type HoverCardTargetProps = MantineHoverCardTargetProps;\n\nconst HoverCardTarget = function HoverCardTarget(props: HoverCardTargetProps) {\n return <MantineHoverCard.Target {...props} />;\n};\nHoverCardTarget.displayName = \"HoverCardTarget\";\n\n// ============================================================\n// HOVERCARD DROPDOWN\n// ============================================================\n\n/** The dropdown panel displayed when hovering over the target. */\nexport type HoverCardDropdownProps =\n RecursicaOverStyled<MantineHoverCardDropdownProps>;\n\nconst HoverCardDropdown = function HoverCardDropdown({\n overStyled = false,\n ...rest\n}: HoverCardDropdownProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineHoverCard.Dropdown\n {...(sanitizedProps as unknown as MantineHoverCardDropdownProps)}\n className={classNameProp}\n />\n );\n};\nHoverCardDropdown.displayName = \"HoverCardDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype HoverCardComponent = typeof HoverCardBase & {\n Target: typeof HoverCardTarget;\n Dropdown: typeof HoverCardDropdown;\n};\n\nexport const HoverCard = HoverCardBase as HoverCardComponent;\nHoverCard.Target = HoverCardTarget;\nHoverCard.Dropdown = HoverCardDropdown;\n","import { forwardRef } from \"react\";\nimport {\n Anchor as MantineAnchor,\n type AnchorProps as MantineAnchorProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Link.module.css\";\n\nimport { type RecursicaLinkProps } from \"@recursica/adapter-common\";\n\nexport type LinkProps = RecursicaOverStyled<\n Omit<MantineAnchorProps, \"underline\"> & Omit<RecursicaLinkProps, \"component\">\n>;\n\nconst _Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n { icon, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n { root: styles.root },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineAnchor\n ref={ref}\n {...(sanitizedProps as Record<string, unknown>)}\n className={finalClass}\n classNames={mergedClassNames}\n underline=\"never\"\n {...(icon ? { \"data-has-icon\": \"\" } : {})}\n >\n {icon && (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n )}\n <span className={styles.labelText}>{children}</span>\n </MantineAnchor>\n );\n});\n_Link.displayName = \"Link\";\n\n/**\n * Recursica Link component wrapping Mantine's Anchor.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering (e.g. react-router Link).\n * @example\n * ```tsx\n * <Link component=\"a\" href=\"https://example.com\">External Link</Link>\n * <Link renderRoot={(props) => <RouterLink to=\"/home\" {...props} />}>Home</Link>\n * ```\n */\nexport const Link = createPolymorphicComponent<\"a\", LinkProps>(_Link);\n","import { forwardRef, type CSSProperties } from \"react\";\nimport {\n Menu as MantineMenu,\n type MenuProps as MantineMenuProps,\n type MenuTargetProps as MantineMenuTargetProps,\n type MenuDropdownProps as MantineMenuDropdownProps,\n type MenuItemProps as MantineMenuItemProps,\n type MenuDividerProps as MantineMenuDividerProps,\n type MenuLabelProps as MantineMenuLabelProps,\n type MenuSubProps as MantineMenuSubProps,\n type MenuSubTargetProps as MantineMenuSubTargetProps,\n type MenuSubDropdownProps as MantineMenuSubDropdownProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Menu.module.css\";\n\nimport { type RecursicaMenuProps } from \"@recursica/adapter-common\";\n\n// ============================================================\n// MENU ROOT\n// ============================================================\n\n/**\n * Recursica Menu component wrapping Mantine's composable Menu.\n *\n * Usage follows the composable dot-notation pattern:\n * ```tsx\n * <Menu>\n * <Menu.Target><Button>Open</Button></Menu.Target>\n * <Menu.Dropdown>\n * <Menu.Label>Section</Menu.Label>\n * <Menu.Item>Action</Menu.Item>\n * <Menu.Divider />\n * <Menu.Item>Another action</Menu.Item>\n * </Menu.Dropdown>\n * </Menu>\n * ```\n */\nexport type MenuProps = RecursicaOverStyled<\n MantineMenuProps & RecursicaMenuProps\n>;\n\nconst MenuBase = function Menu({ overStyled = false, ...rest }: MenuProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n const { maxHeight, ...menuRestRecord } = restRecord;\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames = mergeClassNames(\n {\n dropdown: styles.dropdown,\n item: styles.item,\n itemLabel: styles.itemLabel,\n itemSection: styles.itemSection,\n divider: styles.divider,\n label: styles.label,\n chevron: styles.chevron,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // `maxHeight` is a caller-supplied override of the token-driven dropdown max-height, applied\n // via Mantine's per-part `styles` API (same mechanism as `classNames` above) rather than a CSS\n // module change, since it's an explicit per-instance escape hatch, not a design token. The CSS\n // module deliberately leaves `overflow` unset (see MENU_IMPLEMENTATION_NOTES.md §8) so it\n // doesn't clip sub-menus at the token default height; once a caller opts into a fixed\n // `maxHeight`, though, items need to scroll instead of spilling out past the boundary.\n const callerStyles = menuRestRecord.styles as\n | Partial<Record<string, CSSProperties>>\n | undefined;\n const mergedStyles = maxHeight\n ? {\n ...callerStyles,\n dropdown: {\n ...callerStyles?.dropdown,\n maxHeight: maxHeight as CSSProperties[\"maxHeight\"],\n overflowY: \"auto\" as CSSProperties[\"overflowY\"],\n },\n }\n : callerStyles;\n\n return (\n <MantineMenu\n {...(menuRestRecord as unknown as MantineMenuProps)}\n classNames={mergedClassNames}\n {...(mergedStyles ? { styles: mergedStyles } : {})}\n />\n );\n};\nMenuBase.displayName = \"Menu\";\n\n// ============================================================\n// MENU TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the menu.\n * Requires a single child element that supports ref forwarding.\n */\nexport type MenuTargetProps = RecursicaOverStyled<MantineMenuTargetProps>;\n\nconst MenuTarget = function MenuTarget({\n overStyled = false,\n ...rest\n}: MenuTargetProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n return (\n <MantineMenu.Target\n {...(sanitizedProps as unknown as MantineMenuTargetProps)}\n />\n );\n};\nMenuTarget.displayName = \"MenuTarget\";\n\n// ============================================================\n// MENU DROPDOWN\n// ============================================================\n\n/** The dropdown panel containing menu items, dividers, and labels. */\nexport type MenuDropdownProps = RecursicaOverStyled<MantineMenuDropdownProps>;\n\nconst MenuDropdown = forwardRef<HTMLDivElement, MenuDropdownProps>(\n function MenuDropdown({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Dropdown\n {...(sanitizedProps as unknown as MantineMenuDropdownProps)}\n ref={ref}\n className={classNameProp}\n />\n );\n },\n);\nMenuDropdown.displayName = \"MenuDropdown\";\n\n// ============================================================\n// MENU ITEM\n// ============================================================\n\n/**\n * An individual actionable item within the menu dropdown.\n *\n * **Note:** Mantine's `color` prop is stripped to enforce design token adherence.\n */\nexport type MenuItemProps = RecursicaOverStyled<\n Omit<MantineMenuItemProps, \"color\">\n>;\n\nconst _MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n function MenuItem({ overStyled = false, ...rest }, ref) {\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"color\", // Colors are token-driven; the library's native palette isn't exposed.\n ] as const satisfies readonly (keyof MantineMenuItemProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineMenu.Item\n {...(sanitizedProps as unknown as MantineMenuItemProps)}\n ref={ref}\n className={classNameProp}\n />\n );\n },\n);\n_MenuItem.displayName = \"MenuItem\";\n\n/**\n * An individual actionable item within the menu dropdown.\n *\n * Supports polymorphism via the `component` prop for link-style items.\n * @example\n * ```tsx\n * <Menu.Item component=\"a\" href=\"/settings\">Settings</Menu.Item>\n * ```\n */\nconst MenuItem = createPolymorphicComponent<\"button\", MenuItemProps>(_MenuItem);\n\n// ============================================================\n// MENU DIVIDER\n// ============================================================\n\n/** A visual separator between groups of menu items. */\nexport type MenuDividerProps = RecursicaOverStyled<MantineMenuDividerProps>;\n\nconst MenuDivider = forwardRef<HTMLHRElement, MenuDividerProps>(\n function MenuDivider({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Divider\n {...(sanitizedProps as unknown as MantineMenuDividerProps)}\n ref={ref}\n className={classNameProp}\n />\n );\n },\n);\nMenuDivider.displayName = \"MenuDivider\";\n\n// ============================================================\n// MENU LABEL\n// ============================================================\n\n/** A non-interactive section label used to categorize groups of menu items. */\nexport type MenuLabelProps = RecursicaOverStyled<MantineMenuLabelProps>;\n\nconst MenuLabel = forwardRef<HTMLDivElement, MenuLabelProps>(function MenuLabel(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Label\n {...(sanitizedProps as unknown as MantineMenuLabelProps)}\n ref={ref}\n className={classNameProp}\n />\n );\n});\nMenuLabel.displayName = \"MenuLabel\";\n\n// ============================================================\n// MENU SUB (SUBMENU CONTAINER)\n// ============================================================\n\n/** Container for a submenu, wrapping Menu.Sub.Target and Menu.Sub.Dropdown. */\nexport type MenuSubProps = MantineMenuSubProps;\n\nconst MenuSubBase = function MenuSub(props: MenuSubProps) {\n return <MantineMenu.Sub {...props} />;\n};\nMenuSubBase.displayName = \"MenuSub\";\n\n// ============================================================\n// MENU SUB TARGET\n// ============================================================\n\n/** Wrapper for the element that triggers the submenu. */\nexport type MenuSubTargetProps = MantineMenuSubTargetProps;\n\nconst MenuSubTarget = function MenuSubTarget(props: MenuSubTargetProps) {\n return <MantineMenu.Sub.Target {...props} />;\n};\nMenuSubTarget.displayName = \"MenuSubTarget\";\n\n// ============================================================\n// MENU SUB ITEM (triggers submenu)\n// ============================================================\n\n/**\n * A menu item that acts as a submenu trigger.\n * Renders within Menu.Sub.Target and displays a chevron indicator.\n */\nexport type MenuSubItemProps = RecursicaOverStyled<\n Omit<MantineMenuItemProps, \"color\">\n>;\n\nconst _MenuSubItem = forwardRef<HTMLButtonElement, MenuSubItemProps>(\n function MenuSubItem({ overStyled = false, ...rest }, ref) {\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"color\", // Colors are token-driven; the library's native palette isn't exposed.\n ] as const satisfies readonly (keyof MantineMenuItemProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineMenu.Sub.Item\n {...(sanitizedProps as unknown as MantineMenuItemProps)}\n ref={ref}\n className={classNameProp}\n />\n );\n },\n);\n_MenuSubItem.displayName = \"MenuSubItem\";\n\n/**\n * A menu item that acts as a submenu trigger.\n *\n * Supports polymorphism via the `component` prop.\n */\nconst MenuSubItem = createPolymorphicComponent<\"button\", MenuSubItemProps>(\n _MenuSubItem,\n);\n\n// ============================================================\n// MENU SUB DROPDOWN\n// ============================================================\n\n/** The dropdown panel for a submenu. */\nexport type MenuSubDropdownProps =\n RecursicaOverStyled<MantineMenuSubDropdownProps>;\n\nconst MenuSubDropdown = forwardRef<HTMLDivElement, MenuSubDropdownProps>(\n function MenuSubDropdown({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Sub.Dropdown\n {...(sanitizedProps as unknown as MantineMenuSubDropdownProps)}\n ref={ref}\n className={classNameProp}\n />\n );\n },\n);\nMenuSubDropdown.displayName = \"MenuSubDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype MenuSubComponent = typeof MenuSubBase & {\n Target: typeof MenuSubTarget;\n Item: typeof MenuSubItem;\n Dropdown: typeof MenuSubDropdown;\n};\n\nconst MenuSub = MenuSubBase as MenuSubComponent;\nMenuSub.Target = MenuSubTarget;\nMenuSub.Item = MenuSubItem;\nMenuSub.Dropdown = MenuSubDropdown;\n\ntype MenuComponent = typeof MenuBase & {\n Target: typeof MenuTarget;\n Dropdown: typeof MenuDropdown;\n Item: typeof MenuItem;\n Divider: typeof MenuDivider;\n Label: typeof MenuLabel;\n Sub: MenuSubComponent;\n};\n\nexport const Menu = MenuBase as MenuComponent;\nMenu.Target = MenuTarget;\nMenu.Dropdown = MenuDropdown;\nMenu.Item = MenuItem;\nMenu.Divider = MenuDivider;\nMenu.Label = MenuLabel;\nMenu.Sub = MenuSub;\n","import React from \"react\";\nimport {\n Modal as MantineModal,\n type ModalProps as MantineModalProps,\n type ModalRootProps as MantineModalRootProps,\n type ModalOverlayProps as MantineModalOverlayProps,\n type ModalContentProps as MantineModalContentProps,\n type ModalHeaderProps as MantineModalHeaderProps,\n type ModalTitleProps as MantineModalTitleProps,\n type ModalCloseButtonProps as MantineModalCloseButtonProps,\n type ModalBodyProps as MantineModalBodyProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Modal.module.css\";\n\nimport { type RecursicaModalProps } from \"@recursica/adapter-common\";\n\n/**\n * Properties for the strictly-tokenized Modal component.\n * Native Mantine abstract properties like `size`, `radius`, and `shadow` have been stripped out\n * because they directly conflict with the non-negotiable pixel boundaries defined in the Recursica UI Kit.\n */\nexport type ModalProps = RecursicaOverStyled<\n Omit<MantineModalProps, \"size\" | \"radius\" | \"shadow\"> & RecursicaModalProps\n>;\n\n/**\n * The `Modal` component displays a window overlaid on the primary viewport.\n *\n * **Recursica Abstract:**\n * This component acts as a strict structural wrapper around Mantine's `<Modal>`.\n * It automatically enforces Figma UI Kit geometries (`max-width: 960px`, `min-width: 304px`)\n * and handles internal body scrolling explicitly via CSS module overrides.\n *\n * @example\n * ```tsx\n * <Modal opened={opened} onClose={close} title=\"Hello World\">\n * Modal Content\n * </Modal>\n * ```\n */\nconst ModalInner = React.forwardRef<HTMLDivElement, ModalProps>(function Modal(\n {\n overStyled = false,\n children,\n title,\n withCloseButton = true,\n overlayProps,\n withOverlay = true,\n closeButtonProps,\n ...rest\n },\n ref,\n) {\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Modal width/height are enforced via CSS module tokens (min/max-width, min/max-height), not Mantine's `size` scale.\n \"radius\", // Modal corner radius is token-driven via `.content` in Modal.module.css, not Mantine's `radius` prop.\n ] as const satisfies readonly (keyof MantineModalProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n inner: styles.inner,\n content: styles.content,\n header: styles.header,\n title: styles.title,\n close: styles.close,\n },\n (sanitizedProps as Record<string, unknown>).classNames as\n | Partial<Record<string, string>>\n | undefined,\n );\n\n return (\n <MantineModal.Root\n ref={ref}\n {...(sanitizedProps as unknown as Omit<\n MantineModalProps,\n \"size\" | \"radius\" | \"shadow\"\n >)}\n classNames={mergedClassNames}\n >\n {withOverlay && <MantineModal.Overlay {...overlayProps} />}\n <MantineModal.Content>\n {(title || withCloseButton) && (\n <MantineModal.Header>\n {title && <MantineModal.Title>{title}</MantineModal.Title>}\n {withCloseButton && (\n <MantineModal.CloseButton {...closeButtonProps} />\n )}\n </MantineModal.Header>\n )}\n <ModalBody>{children}</ModalBody>\n </MantineModal.Content>\n </MantineModal.Root>\n );\n});\n\nModalInner.displayName = \"Modal\";\n\n/**\n * The `Modal.Footer` provides a perfectly padded container for modal actions.\n *\n * **Recursica Abstract:**\n * By default, this container aligns its children to the right (`justify-content: flex-end`)\n * and applies the standard Figma button-gap spacing.\n *\n * > [!IMPORTANT]\n * > **Button Hierarchy:** Recursica design language explicitly requires that the\n * > primary action button MUST be the right-most element, with the secondary\n * > (outline variant) action placed immediately to the left of it.\n */\nexport type ModalFooterProps = RecursicaOverStyled<\n React.ComponentPropsWithoutRef<\"div\">\n>;\n\nconst ModalFooter = React.forwardRef<HTMLDivElement, ModalFooterProps>(\n function ModalFooter({ overStyled = false, className, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <div\n ref={ref}\n {...sanitizedProps}\n className={`${styles.footer} ${className || \"\"}`}\n />\n );\n },\n);\nModalFooter.displayName = \"Modal.Footer\";\n\nexport type ModalBodyProps = RecursicaOverStyled<MantineModalBodyProps>;\n\nconst ModalBody = React.forwardRef<HTMLDivElement, ModalBodyProps>(\n function ModalBody(\n { overStyled = false, className, onScroll, children, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const internalRef = React.useRef<HTMLDivElement>(null);\n const [scrolledTop, setScrolledTop] = React.useState(false);\n const [scrolledBottom, setScrolledBottom] = React.useState(false);\n\n const checkScroll = React.useCallback(() => {\n if (internalRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = internalRef.current;\n setScrolledTop(scrollTop > 0);\n setScrolledBottom(Math.ceil(scrollTop + clientHeight) < scrollHeight);\n }\n }, []);\n\n // Re-check scroll on mount and window resize\n React.useEffect(() => {\n checkScroll();\n window.addEventListener(\"resize\", checkScroll);\n return () => window.removeEventListener(\"resize\", checkScroll);\n }, [checkScroll, children]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n checkScroll();\n onScroll?.(e);\n };\n\n // Intercept children to pull Modal.Footer out of the scrolling container\n let footer: React.ReactNode = null;\n const bodyChildren: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (\n React.isValidElement(child) &&\n (child.type === ModalFooter ||\n (child.type as React.ComponentType)?.displayName === \"Modal.Footer\")\n ) {\n footer = child;\n } else {\n bodyChildren.push(child);\n }\n });\n\n return (\n <MantineModal.Body\n {...sanitizedProps}\n ref={(node) => {\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }}\n className={`${styles.bodyWrapper} ${className || \"\"}`}\n >\n <div\n ref={internalRef}\n onScroll={handleScroll}\n data-scrolled-top={scrolledTop || undefined}\n data-scrolled-bottom={scrolledBottom || undefined}\n className={styles.scrollArea}\n >\n {bodyChildren}\n </div>\n {footer}\n </MantineModal.Body>\n );\n },\n);\nModalBody.displayName = \"Modal.Body\";\n\n// ============================================================\n// MODAL SUB-COMPONENTS (wrapped so overStyled/filterStylingProps applies)\n// ============================================================\n\nexport type ModalRootProps = RecursicaOverStyled<MantineModalRootProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript. `Modal.Root` is used directly for\n// advanced composition, so it doesn't benefit from the top-level `Modal`'s `Omit<>` protection.\nconst MODAL_ROOT_UNSUPPORTED_PROPS = [\n \"size\", // Modal width/height are enforced via CSS module tokens, not Mantine's `size` scale.\n \"radius\", // Modal corner radius is token-driven via `.content` in Modal.module.css, not Mantine's `radius` prop.\n] as const satisfies readonly (keyof MantineModalRootProps)[];\n\nconst ModalRoot = React.forwardRef<HTMLDivElement, ModalRootProps>(\n function ModalRoot({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n MODAL_ROOT_UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n return (\n <MantineModal.Root\n ref={ref}\n {...(sanitizedProps as unknown as MantineModalRootProps)}\n />\n );\n },\n);\nModalRoot.displayName = \"Modal.Root\";\n\nexport type ModalOverlayProps = RecursicaOverStyled<MantineModalOverlayProps>;\n\nconst ModalOverlay = React.forwardRef<HTMLDivElement, ModalOverlayProps>(\n function ModalOverlay({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineModal.Overlay\n ref={ref}\n {...(sanitizedProps as unknown as MantineModalOverlayProps)}\n />\n );\n },\n);\nModalOverlay.displayName = \"Modal.Overlay\";\n\nexport type ModalContentProps = RecursicaOverStyled<MantineModalContentProps>;\n\n// Modal corner radius is token-driven via `.content` in Modal.module.css, not Mantine's\n// native `radius` prop — deleted at runtime so it can't leak through via plain JavaScript.\nconst MODAL_CONTENT_UNSUPPORTED_PROPS = [\n \"radius\",\n] as const satisfies readonly (keyof MantineModalContentProps)[];\n\nconst ModalContent = React.forwardRef<HTMLDivElement, ModalContentProps>(\n function ModalContent({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n MODAL_CONTENT_UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n return (\n <MantineModal.Content\n ref={ref}\n {...(sanitizedProps as unknown as MantineModalContentProps)}\n />\n );\n },\n);\nModalContent.displayName = \"Modal.Content\";\n\nexport type ModalHeaderProps = RecursicaOverStyled<MantineModalHeaderProps>;\n\nconst ModalHeader = React.forwardRef<HTMLElement, ModalHeaderProps>(\n function ModalHeader({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineModal.Header\n ref={ref}\n {...(sanitizedProps as unknown as MantineModalHeaderProps)}\n />\n );\n },\n);\nModalHeader.displayName = \"Modal.Header\";\n\nexport type ModalTitleProps = RecursicaOverStyled<MantineModalTitleProps>;\n\nconst ModalTitle = React.forwardRef<HTMLHeadingElement, ModalTitleProps>(\n function ModalTitle({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineModal.Title\n ref={ref}\n {...(sanitizedProps as unknown as MantineModalTitleProps)}\n />\n );\n },\n);\nModalTitle.displayName = \"Modal.Title\";\n\nexport type ModalCloseButtonProps =\n RecursicaOverStyled<MantineModalCloseButtonProps>;\n\n// The close button's dimensions and corner radius are enforced by Modal.module.css's `.close`\n// (standard icon-button tokens), not Mantine's native `size`/`radius` scales.\nconst MODAL_CLOSE_BUTTON_UNSUPPORTED_PROPS = [\n \"size\",\n \"radius\",\n] as const satisfies readonly (keyof MantineModalCloseButtonProps)[];\n\nconst ModalCloseButton = React.forwardRef<\n HTMLButtonElement,\n ModalCloseButtonProps\n>(function ModalCloseButton({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n MODAL_CLOSE_BUTTON_UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n return (\n <MantineModal.CloseButton\n ref={ref}\n {...(sanitizedProps as unknown as MantineModalCloseButtonProps)}\n />\n );\n});\nModalCloseButton.displayName = \"Modal.CloseButton\";\n\ninterface ModalComponent\n extends React.ForwardRefExoticComponent<\n ModalProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof ModalRoot;\n Overlay: typeof ModalOverlay;\n Content: typeof ModalContent;\n Header: typeof ModalHeader;\n Title: typeof ModalTitle;\n CloseButton: typeof ModalCloseButton;\n Body: typeof ModalBody;\n Footer: typeof ModalFooter;\n}\n\nexport const Modal = ModalInner as ModalComponent & {\n Footer: typeof ModalFooter;\n};\nModal.Root = ModalRoot;\nModal.Overlay = ModalOverlay;\nModal.Content = ModalContent;\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.CloseButton = ModalCloseButton;\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n","import React, { forwardRef } from \"react\";\nimport {\n NumberInput as MantineNumberInput,\n type NumberInputProps as MantineNumberInputProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./NumberInput.module.css\";\n\nimport { type RecursicaNumberInputProps as BaseRecursicaNumberInputProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaNumberInputProps\n extends Omit<\n MantineNumberInputProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\" | \"classNames\" | \"styles\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaNumberInputProps {}\n\nexport type NumberInputProps = RecursicaOverStyled<RecursicaNumberInputProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n] as const satisfies readonly (keyof MantineNumberInputProps)[];\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n hideControls = false,\n ...rest\n } = props;\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n controls: styles.controls,\n control: styles.control,\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--number-input-control-max-width)\"\n controlMinWidth=\"var(--number-input-control-min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined ? value?.toString() : defaultValue?.toString()\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineNumberInput\n ref={ref}\n {...(sanitizedProps as unknown as MantineNumberInputProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n hideControls={hideControls}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n \"data-with-left-section\": restRecord.leftSection\n ? \"true\"\n : undefined,\n \"data-with-right-section\":\n restRecord.rightSection || !hideControls ? \"true\" : undefined,\n }}\n />\n }\n />\n );\n },\n);\n\nNumberInput.displayName = \"NumberInput\";\n","import styles from \"./Pagination.module.css\";\n\nconst NextPath =\n \"M8.781 8l-3.3-3.3.943-.943L10.667 8l-4.243 4.243-.943-.943 3.3-3.3z\";\nconst PrevPath =\n \"M7.219 8l3.3 3.3-.943.943L5.333 8l4.243-4.243.943.943-3.3 3.3z\";\nconst FirstPath =\n \"M6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645C6.65829 2.95118 6.34171 2.95118 6.14645 3.14645L2.14645 7.14645C1.95118 7.34171 1.95118 7.65829 2.14645 7.85355L6.14645 11.8536C6.34171 12.0488 6.65829 12.0488 6.85355 11.8536C7.04882 11.6583 7.04882 11.3417 6.85355 11.1464L3.20711 7.5L6.85355 3.85355ZM12.8536 3.85355C13.0488 3.65829 13.0488 3.34171 12.8536 3.14645C12.6583 2.95118 12.3417 2.95118 12.1464 3.14645L8.14645 7.14645C7.95118 7.34171 7.95118 7.65829 8.14645 7.85355L12.1464 11.8536C12.3417 12.0488 12.6583 12.0488 12.8536 11.8536C13.0488 11.6583 13.0488 11.3417 12.8536 11.1464L9.20711 7.5L12.8536 3.85355Z\";\nconst LastPath =\n \"M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z\";\n\nexport type PaginationIconType = \"next\" | \"prev\" | \"first\" | \"last\";\n\nconst paths: Record<PaginationIconType, string> = {\n next: NextPath,\n prev: PrevPath,\n first: FirstPath,\n last: LastPath,\n};\n\nexport const PaginationIcon = ({\n type,\n className,\n ...props\n}: React.ComponentProps<\"svg\"> & { type: PaginationIconType }) => (\n <svg\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.baseIcon} ${className || \"\"}`.trim()}\n {...props}\n >\n <path d={paths[type as PaginationIconType]} fill=\"currentColor\" />\n </svg>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const NextWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <span>Next</span>\n <PaginationIcon type=\"next\" {...props} />\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const PrevWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <PaginationIcon type=\"prev\" {...props} />\n <span>Prev</span>\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const FirstWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <PaginationIcon type=\"first\" {...props} />\n <span>First</span>\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LastWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <span>Last</span>\n <PaginationIcon type=\"last\" {...props} />\n </div>\n);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Pagination as MantinePagination,\n type PaginationProps as MantinePaginationProps,\n type PaginationRootProps as MantinePaginationRootProps,\n type PaginationControlProps as MantinePaginationControlProps,\n type PaginationDotsProps as MantinePaginationDotsProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n withCallerOverride,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Pagination.module.css\";\nimport {\n NextWithLabel,\n PrevWithLabel,\n FirstWithLabel,\n LastWithLabel,\n PaginationIcon,\n} from \"./Pagination.icons\";\n\nimport { type RecursicaPaginationProps } from \"@recursica/adapter-common\";\n\nexport type PaginationProps = RecursicaOverStyled<\n MantinePaginationProps & RecursicaPaginationProps\n>;\n\nexport type PaginationRootProps =\n RecursicaOverStyled<MantinePaginationRootProps>;\n\nexport type PaginationEdgeProps<T extends React.ElementType> =\n RecursicaOverStyled<\n React.ComponentProps<T> & {\n /** If set to true, displays text labels alongside the icon. */\n withLabel?: boolean;\n icon?: any;\n }\n >;\n\nfunction usePaginationClassNames(restRecord: Record<string, unknown>): {\n className: string;\n classNames: Partial<Record<string, string>>;\n} {\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n control: styles.control,\n dots: styles.dots,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return { className: finalClass, classNames: mergedClassNames };\n}\n\nconst _PaginationRoot = forwardRef<HTMLDivElement, PaginationRootProps>(\n function PaginationRoot({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const stylingParams = usePaginationClassNames(\n sanitizedProps as Record<string, unknown>,\n );\n\n return (\n <MantinePagination.Root\n ref={ref}\n {...(sanitizedProps as MantinePaginationRootProps)}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n />\n );\n },\n);\n_PaginationRoot.displayName = \"Pagination.Root\";\n\nconst _PaginationNext = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Next>\n>(function PaginationNext(\n { overStyled = false, withLabel, icon, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const computedIcon = withLabel ? NextWithLabel : undefined;\n return (\n <MantinePagination.Next\n ref={ref}\n {...sanitizedProps}\n data-variant=\"text\"\n icon={withCallerOverride(computedIcon, icon) as any}\n />\n );\n});\n_PaginationNext.displayName = \"Pagination.Next\";\n\nconst _PaginationPrevious = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Previous>\n>(function PaginationPrevious(\n { overStyled = false, withLabel, icon, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const computedIcon = withLabel ? PrevWithLabel : undefined;\n return (\n <MantinePagination.Previous\n ref={ref}\n {...sanitizedProps}\n data-variant=\"text\"\n icon={withCallerOverride(computedIcon, icon) as any}\n />\n );\n});\n_PaginationPrevious.displayName = \"Pagination.Previous\";\n\nconst _PaginationFirst = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.First>\n>(function PaginationFirst(\n { overStyled = false, withLabel, icon, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const computedIcon = withLabel ? FirstWithLabel : undefined;\n return (\n <MantinePagination.First\n ref={ref}\n {...sanitizedProps}\n data-variant=\"text\"\n icon={withCallerOverride(computedIcon, icon) as any}\n />\n );\n});\n_PaginationFirst.displayName = \"Pagination.First\";\n\nconst _PaginationLast = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Last>\n>(function PaginationLast(\n { overStyled = false, withLabel, icon, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const computedIcon = withLabel ? LastWithLabel : undefined;\n return (\n <MantinePagination.Last\n ref={ref}\n {...sanitizedProps}\n data-variant=\"text\"\n icon={withCallerOverride(computedIcon, icon) as any}\n />\n );\n});\n_PaginationLast.displayName = \"Pagination.Last\";\n\nconst _Pagination = forwardRef<HTMLDivElement, PaginationProps>(\n function Pagination(\n { overStyled = false, getControlProps, withLabels, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const stylingParams = usePaginationClassNames(\n sanitizedProps as Record<string, unknown>,\n );\n\n const mergedGetControlProps = (\n control: \"first\" | \"previous\" | \"last\" | \"next\",\n ) => {\n const baseProps = { \"data-variant\": \"text\" };\n if (getControlProps) {\n return { ...baseProps, ...getControlProps(control) };\n }\n return baseProps;\n };\n\n const labelsIcons = withLabels\n ? {\n nextIcon: NextWithLabel,\n previousIcon: PrevWithLabel,\n firstIcon: FirstWithLabel,\n lastIcon: LastWithLabel,\n }\n : {};\n\n return (\n <MantinePagination\n ref={ref}\n {...labelsIcons}\n {...(sanitizedProps as MantinePaginationProps)}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n getControlProps={mergedGetControlProps}\n />\n );\n },\n);\n_Pagination.displayName = \"Pagination\";\n\nexport type PaginationControlProps =\n RecursicaOverStyled<MantinePaginationControlProps>;\n\nconst _PaginationControl = forwardRef<\n HTMLButtonElement,\n PaginationControlProps\n>(function PaginationControl({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantinePagination.Control\n ref={ref}\n {...(sanitizedProps as unknown as MantinePaginationControlProps)}\n />\n );\n});\n_PaginationControl.displayName = \"Pagination.Control\";\n\nexport type PaginationDotsProps =\n RecursicaOverStyled<MantinePaginationDotsProps>;\n\nconst _PaginationDots = forwardRef<HTMLDivElement, PaginationDotsProps>(\n function PaginationDots({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantinePagination.Dots\n ref={ref}\n {...(sanitizedProps as unknown as MantinePaginationDotsProps)}\n />\n );\n },\n);\n_PaginationDots.displayName = \"Pagination.Dots\";\n\n/**\n * Recursica Pagination component wrapping Mantine's Pagination.\n */\nexport const Pagination = _Pagination as typeof _Pagination & {\n Root: typeof _PaginationRoot;\n Items: typeof MantinePagination.Items;\n Control: typeof _PaginationControl;\n Dots: typeof _PaginationDots;\n Next: typeof _PaginationNext;\n Previous: typeof _PaginationPrevious;\n First: typeof _PaginationFirst;\n Last: typeof _PaginationLast;\n Icon: typeof PaginationIcon;\n};\n\nPagination.Root = _PaginationRoot;\n// Pagination.Items has no styling props of its own (just a `dotsIcon` prop, no\n// `style`/`className`/BoxProps), so re-exporting Mantine's implementation\n// directly is not a styling-gate gap.\nPagination.Items = MantinePagination.Items;\nPagination.Control = _PaginationControl;\nPagination.Dots = _PaginationDots;\nPagination.Next = _PaginationNext;\nPagination.Previous = _PaginationPrevious;\nPagination.First = _PaginationFirst;\nPagination.Last = _PaginationLast;\nPagination.Icon = PaginationIcon;\n","import { forwardRef } from \"react\";\nimport {\n Drawer as MantineDrawer,\n type DrawerProps as MantineDrawerProps,\n type DrawerRootProps as MantineDrawerRootProps,\n type DrawerOverlayProps as MantineDrawerOverlayProps,\n type DrawerContentProps as MantineDrawerContentProps,\n type DrawerHeaderProps as MantineDrawerHeaderProps,\n type DrawerTitleProps as MantineDrawerTitleProps,\n type DrawerCloseButtonProps as MantineDrawerCloseButtonProps,\n type DrawerBodyProps as MantineDrawerBodyProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n withCallerOverride,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Panel.module.css\";\n\n// ============================================================\n// PANEL (Drawer)\n// ============================================================\n\nimport { type RecursicaPanelProps as BaseRecursicaPanelProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica Panel root props. Extends Mantine Drawer.\n */\nexport interface RecursicaPanelProps\n extends Omit<\n MantineDrawerProps,\n \"size\" | \"styles\" | \"classNames\" | \"style\" | \"position\" | \"opened\"\n >,\n BaseRecursicaPanelProps {}\n\nexport type PanelProps = RecursicaOverStyled<RecursicaPanelProps>;\n\n/**\n * Recursica Panel component wrapping Mantine's Drawer.\n *\n * Panels slide in or expand from the edge of the screen to reveal\n * additional content or functionality. They are commonly used to provide\n * supplementary information, navigation options, or toolsets without\n * cluttering the main interface.\n *\n * ```tsx\n * <Panel opened={opened} onClose={close} title=\"Panel Title\" placement=\"right\">\n * <Panel.Body>\n * Content goes here\n * </Panel.Body>\n * </Panel>\n * ```\n *\n * Mantine Drawer sub-components available via dot-notation:\n * - `Panel.Header` — Top section with title and close button\n * - `Panel.Title` — Title text within the header\n * - `Panel.CloseButton` — Close button within the header\n * - `Panel.Body` — Scrollable body content area\n * - `Panel.Content` — Outer content container\n * - `Panel.Overlay` — Background overlay\n * - `Panel.Root` — Root element for advanced composition\n * - `Panel.Stack` — Stacked drawer context\n */\nconst PanelBase = function Panel({\n overStyled = false,\n placement = \"right\",\n keepMounted = true,\n wrapHeaderText = true,\n ...rest\n}: PanelProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames = mergeClassNames(\n {\n content: styles.content,\n header: styles.header,\n title: wrapHeaderText ? styles.titleTruncate : styles.title,\n body: styles.body,\n inner: styles.inner,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n return (\n <MantineDrawer\n {...(sanitizedProps as unknown as MantineDrawerProps)}\n position={placement} /* Recursica default: right; Mantine default: left */\n keepMounted={keepMounted}\n closeOnClickOutside={withCallerOverride(\n Boolean(rest.opened),\n rest.closeOnClickOutside,\n )}\n classNames={mergedClassNames}\n />\n );\n};\nPanelBase.displayName = \"Panel\";\n\n// ============================================================\n// PANEL FOOTER (custom — Mantine Drawer has no Footer sub-component)\n// ============================================================\n\nexport type PanelFooterProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Panel footer section with action buttons.\n * Separated from the body by a divider. Remains fixed at the bottom.\n * This is a Recursica-specific sub-component; Mantine Drawer does not\n * natively provide a footer.\n */\nexport const PanelFooter = forwardRef<HTMLDivElement, PanelFooterProps>(\n function PanelFooter({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const finalClassName = classNameProp\n ? `${styles.footer} ${classNameProp}`\n : styles.footer;\n\n return <div ref={ref} {...sanitizedProps} className={finalClassName} />;\n },\n);\nPanelFooter.displayName = \"PanelFooter\";\n\n// ============================================================\n// PANEL SUB-COMPONENTS (wrapped so overStyled/filterStylingProps applies)\n// ============================================================\n\nexport type PanelRootProps = RecursicaOverStyled<MantineDrawerRootProps>;\n\nexport const PanelRoot = forwardRef<HTMLDivElement, PanelRootProps>(\n function PanelRoot({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.Root\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerRootProps)}\n />\n );\n },\n);\nPanelRoot.displayName = \"PanelRoot\";\n\nexport type PanelOverlayProps = RecursicaOverStyled<MantineDrawerOverlayProps>;\n\nexport const PanelOverlay = forwardRef<HTMLDivElement, PanelOverlayProps>(\n function PanelOverlay({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.Overlay\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerOverlayProps)}\n />\n );\n },\n);\nPanelOverlay.displayName = \"PanelOverlay\";\n\nexport type PanelContentProps = RecursicaOverStyled<MantineDrawerContentProps>;\n\nexport const PanelContent = forwardRef<HTMLDivElement, PanelContentProps>(\n function PanelContent({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.Content\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerContentProps)}\n />\n );\n },\n);\nPanelContent.displayName = \"PanelContent\";\n\nexport type PanelHeaderProps = RecursicaOverStyled<MantineDrawerHeaderProps>;\n\nexport const PanelHeader = forwardRef<HTMLElement, PanelHeaderProps>(\n function PanelHeader({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.Header\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerHeaderProps)}\n />\n );\n },\n);\nPanelHeader.displayName = \"PanelHeader\";\n\nexport type PanelTitleProps = RecursicaOverStyled<MantineDrawerTitleProps>;\n\nexport const PanelTitle = forwardRef<HTMLHeadingElement, PanelTitleProps>(\n function PanelTitle({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.Title\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerTitleProps)}\n />\n );\n },\n);\nPanelTitle.displayName = \"PanelTitle\";\n\nexport type PanelCloseButtonProps =\n RecursicaOverStyled<MantineDrawerCloseButtonProps>;\n\nexport const PanelCloseButton = forwardRef<\n HTMLButtonElement,\n PanelCloseButtonProps\n>(function PanelCloseButton({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.CloseButton\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerCloseButtonProps)}\n />\n );\n});\nPanelCloseButton.displayName = \"PanelCloseButton\";\n\nexport type PanelBodyProps = RecursicaOverStyled<MantineDrawerBodyProps>;\n\nexport const PanelBody = forwardRef<HTMLDivElement, PanelBodyProps>(\n function PanelBody({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineDrawer.Body\n ref={ref}\n {...(sanitizedProps as unknown as MantineDrawerBodyProps)}\n />\n );\n },\n);\nPanelBody.displayName = \"PanelBody\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype PanelComponent = typeof PanelBase & {\n Root: typeof PanelRoot;\n Overlay: typeof PanelOverlay;\n Content: typeof PanelContent;\n Header: typeof PanelHeader;\n Title: typeof PanelTitle;\n CloseButton: typeof PanelCloseButton;\n Body: typeof PanelBody;\n Stack: typeof MantineDrawer.Stack;\n Footer: typeof PanelFooter;\n};\n\nexport const Panel = PanelBase as PanelComponent;\nPanel.Root = PanelRoot;\nPanel.Overlay = PanelOverlay;\nPanel.Content = PanelContent;\nPanel.Header = PanelHeader;\nPanel.Title = PanelTitle;\nPanel.CloseButton = PanelCloseButton;\nPanel.Body = PanelBody;\n// Panel.Stack (DrawerStack) only accepts `children` — no styling props to\n// strip, so re-exporting Mantine's implementation directly is not a gap.\nPanel.Stack = MantineDrawer.Stack;\nPanel.Footer = PanelFooter;\n","import {\n Popover as MantinePopover,\n type PopoverProps as MantinePopoverProps,\n type PopoverTargetProps as MantinePopoverTargetProps,\n type PopoverDropdownProps as MantinePopoverDropdownProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n withCallerOverride,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Popover.module.css\";\n\n// ============================================================\n// POPOVER ROOT\n// ============================================================\n\n/**\n * Recursica-specific props for Popover.\n */\nimport { type RecursicaPopoverProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica Popover component wrapping Mantine's composable Popover.\n *\n * Displays a dropdown panel when the user clicks or interacts with a target element.\n * Uses the composable dot-notation pattern:\n * ```tsx\n * <Popover withBeak>\n * <Popover.Target>\n * <Button>Click me</Button>\n * </Popover.Target>\n * <Popover.Dropdown>\n * Content displayed in popover\n * </Popover.Dropdown>\n * </Popover>\n * ```\n */\nexport type PopoverProps = Omit<\n RecursicaOverStyled<\n Omit<MantinePopoverProps, \"position\"> & RecursicaPopoverProps\n >,\n \"position\"\n> & {\n position?: MantinePopoverProps[\"position\"];\n};\n\nconst PopoverBase = function Popover({\n overStyled = false,\n withBeak = true,\n position = \"top\", // Recursica default; Mantine defaults to \"bottom\"\n ...rest\n}: PopoverProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames = mergeClassNames(\n { dropdown: styles.dropdown, arrow: styles.arrow },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize = withCallerOverride<number>(\n 16,\n restRecord.arrowSize as number | undefined,\n );\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const resolvedWithArrow = withCallerOverride<boolean | undefined>(\n withBeak,\n restRecord.withArrow as boolean | undefined,\n );\n\n return (\n <MantinePopover\n {...(sanitizedProps as unknown as MantinePopoverProps)}\n position={position}\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n />\n );\n};\nPopoverBase.displayName = \"Popover\";\n\n// ============================================================\n// POPOVER TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the popover.\n * Requires a single child element that supports ref forwarding.\n */\nexport type PopoverTargetProps = MantinePopoverTargetProps;\n\nconst PopoverTarget = function PopoverTarget(props: PopoverTargetProps) {\n return <MantinePopover.Target {...props} />;\n};\nPopoverTarget.displayName = \"PopoverTarget\";\n\n// ============================================================\n// POPOVER DROPDOWN\n// ============================================================\n\n/** The dropdown panel displayed from the popover. */\nexport type PopoverDropdownProps =\n RecursicaOverStyled<MantinePopoverDropdownProps>;\n\nconst PopoverDropdown = function PopoverDropdown({\n overStyled = false,\n ...rest\n}: PopoverDropdownProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantinePopover.Dropdown\n {...(sanitizedProps as unknown as MantinePopoverDropdownProps)}\n className={classNameProp}\n />\n );\n};\nPopoverDropdown.displayName = \"PopoverDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype PopoverComponent = typeof PopoverBase & {\n Target: typeof PopoverTarget;\n Dropdown: typeof PopoverDropdown;\n};\n\nexport const Popover = PopoverBase as PopoverComponent;\nPopover.Target = PopoverTarget;\nPopover.Dropdown = PopoverDropdown;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Radio as MantineRadio,\n type RadioGroupProps as MantineRadioGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Radio.module.css\";\n\nimport { type RecursicaRadioGroupProps as BaseRecursicaRadioGroupProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaRadioGroupProps\n extends Omit<\n MantineRadioGroupProps,\n \"size\" | \"labelProps\" | \"defaultValue\" | \"value\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaRadioGroupProps {}\n\nexport type RadioGroupProps = RecursicaOverStyled<RecursicaRadioGroupProps>;\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n function RadioGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Radio.module.css variables, not Mantine's native size scale.\n ] as const satisfies readonly (keyof MantineRadioGroupProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_radio-button-item_properties_max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive radios nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineRadio.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineRadioGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value as any}\n defaultValue={defaultValue as any}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineRadio.Group>\n }\n />\n );\n },\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Radio as MantineRadio,\n type RadioProps as MantineRadioProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport { RadioGroup } from \"./RadioGroup\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n withCallerOverride,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RequireAccessibleLabel,\n type RecursicaRadioProps,\n} from \"@recursica/adapter-common\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\n\nimport styles from \"./Radio.module.css\";\n\nconst RadioIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n className={className}\n style={style}\n >\n <circle cx=\"8\" cy=\"8\" r=\"5\" />\n </svg>\n);\n\nexport type RadioWrapperProps = Omit<\n MantineRadioProps,\n \"size\" | \"color\" | \"radius\" | \"iconColor\" | \"variant\"\n> &\n RecursicaRadioProps &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >;\n\nexport type RecursicaRadioPropsAlias =\n RequireAccessibleLabel<RadioWrapperProps>;\n\nexport type RadioProps = RecursicaOverStyled<RecursicaRadioPropsAlias>;\n\ntype RadioComponent = React.ForwardRefExoticComponent<\n RadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof RadioGroup;\n};\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n icon,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Radio.module.css variables, not Mantine's native size scale.\n \"color\", // Colors are token-driven via Radio.module.css; Mantine's native palette isn't exposed.\n \"radius\", // Corner radius is fixed by Recursica tokens in Radio.module.css, not caller-configurable.\n \"variant\", // Radio has a single Recursica-defined visual treatment; Mantine's variant isn't exposed.\n \"iconColor\", // Icon color is token-driven via Radio.module.css, not a native Mantine override.\n ] as const satisfies readonly (keyof MantineRadioProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n body: styles.body,\n inner: styles.inner,\n radio: styles.radio,\n icon: styles.icon,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Radio.module.css\n const radioNode = (\n <MantineRadio\n ref={ref}\n {...(sanitizedProps as unknown as MantineRadioProps)}\n icon={withCallerOverride<MantineRadioProps[\"icon\"]>(RadioIcon, icon)}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {radioNode}\n </FormControlLayout>\n );\n }\n\n return radioNode;\n },\n) as RadioComponent;\n\nRadio.displayName = \"Radio\";\nRadio.Group = RadioGroup;\n","import { forwardRef } from \"react\";\nimport {\n SegmentedControl as MantineSegmentedControl,\n type SegmentedControlProps as MantineSegmentedControlProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./SegmentedControl.module.css\";\n\nimport { type RecursicaSegmentedControlProps } from \"@recursica/adapter-common\";\n\nexport type SegmentedControlProps = RecursicaOverStyled<\n Omit<\n MantineSegmentedControlProps,\n | \"variant\"\n | \"size\"\n | \"radius\"\n | \"color\"\n | \"classNames\"\n | \"className\"\n | \"data\"\n > & {\n className?: string;\n classNames?: Partial<Record<string, string>>;\n } & RecursicaSegmentedControlProps\n>;\n\nfunction useSegmentedControlClassNames(restRecord: Record<string, unknown>): {\n className: string;\n classNames: Partial<Record<string, string>>;\n} {\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n control: styles.control,\n label: styles.label,\n indicator: styles.indicator,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return { className: finalClass, classNames: mergedClassNames };\n}\n\nconst _SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl(\n {\n overStyled = false,\n orientation = \"horizontal\",\n fullWidth,\n data = [],\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled) as Partial<\n typeof rest\n >;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const stylingParams = useSegmentedControlClassNames(restRecord);\n\n // Mantine's own data item has no icon slot; compose one into `label` (already a ReactNode)\n // so Mantine's native innerLabel wrapper lays it out using the icon-size/gap tokens already\n // wired in SegmentedControl.module.css.\n const mappedData = data.map((item) =>\n typeof item === \"string\" || !item.icon\n ? item\n : {\n ...item,\n label: (\n <>\n {item.icon}\n {item.label}\n </>\n ),\n },\n );\n\n return (\n <MantineSegmentedControl\n ref={ref}\n {...(sanitizedProps as Omit<\n MantineSegmentedControlProps,\n \"variant\" | \"size\"\n >)}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n orientation={orientation}\n fullWidth={fullWidth}\n data-orientation={orientation}\n data={mappedData}\n />\n );\n },\n);\n_SegmentedControl.displayName = \"SegmentedControl\";\n\n/**\n * Recursica SegmentedControl component wrapping Mantine's SegmentedControl.\n */\nexport const SegmentedControl = _SegmentedControl;\n","import React, { forwardRef, useState, useEffect } from \"react\";\nimport {\n Slider as MantineSlider,\n RangeSlider as MantineRangeSlider,\n type SliderProps as MantineSliderProps,\n type RangeSliderProps as MantineRangeSliderProps,\n type InputWrapperProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\n\nimport styles from \"./Slider.module.css\";\n\nimport { type RecursicaSliderProps as BaseRecursicaSliderProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaSliderProps\n extends Omit<\n MantineSliderProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"classNames\"\n | \"styles\"\n | \"label\"\n | \"value\"\n | \"defaultValue\"\n | \"onChange\"\n | \"onChangeEnd\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n Pick<InputWrapperProps, \"error\" | \"required\" | \"withAsterisk\">,\n ReadOnlyControlProps,\n BaseRecursicaSliderProps {}\n\nexport type SliderProps = RecursicaOverStyled<RecursicaSliderProps>;\n\n/**\n * Custom Read-Only visual representation of the Slider value.\n * Utilizes component-specific read-only typography variables. Renders a \"lower – upper\" pair\n * when the value is a range tuple.\n */\nconst SliderReadOnlyValue: React.FC<{ value: number | [number, number] }> = ({\n value,\n}) => {\n const display = Array.isArray(value) ? `${value[0]} – ${value[1]}` : value;\n return <div className={styles.readOnlyValue}>{display}</div>;\n};\n\n/**\n * Recursica Slider component wrapping Mantine's Slider (or, when `value`/`defaultValue` is a\n * `[number, number]` tuple, Mantine's two-thumb RangeSlider).\n *\n * Implements a bidirectional text input field next to the slider track, responsive layouts,\n * custom typography-bound min/max labels (optionally overridden via `minLabel`/`maxLabel`),\n * optional leading/trailing icons, and an explicit read-only layout.\n */\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(\n function Slider(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n tooltipLabel,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n icon,\n trailingIcon,\n showInput = false,\n showMinMaxLabels = true,\n min = 0,\n max = 100,\n minLabel,\n maxLabel,\n step = 1,\n onChange,\n onChangeEnd,\n ...rest\n } = props;\n\n // Bidirectional state linking the slider track value to the input field string\n // representation. A `[number, number]` value/defaultValue switches the component into\n // two-thumb range mode, backed by Mantine's RangeSlider instead of Slider.\n type SliderValue = number | [number, number];\n\n const [internalValue, setInternalValue] = useState<SliderValue>(() => {\n if (value !== undefined) return value;\n if (defaultValue !== undefined) return defaultValue;\n return min;\n });\n\n const resolvedValue: SliderValue =\n value !== undefined ? value : internalValue;\n const isRange = Array.isArray(resolvedValue);\n\n const [inputValue, setInputValue] = useState<string | [string, string]>(\n () =>\n Array.isArray(resolvedValue)\n ? [resolvedValue[0].toString(), resolvedValue[1].toString()]\n : resolvedValue.toString(),\n );\n\n // Synchronize text input(s) whenever the slider value changes\n useEffect(() => {\n setInputValue(\n Array.isArray(resolvedValue)\n ? [resolvedValue[0].toString(), resolvedValue[1].toString()]\n : resolvedValue.toString(),\n );\n }, [resolvedValue]);\n\n const handleValueChange = (val: SliderValue) => {\n if (value === undefined) {\n setInternalValue(val);\n }\n onChange?.(val);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const valStr = e.target.value;\n setInputValue(valStr);\n\n const parsed = parseFloat(valStr);\n if (!isNaN(parsed)) {\n // Clamp input value to bounds\n const clamped = Math.max(min, Math.min(max, parsed));\n handleValueChange(clamped);\n }\n };\n\n const handleInputBlur = () => {\n // Clean up text field on blur to reflect the final clamped resolved value\n setInputValue((resolvedValue as number).toString());\n };\n\n // Range-mode input handlers: each bound clamps against the other thumb rather than the\n // shared min/max, so the lower thumb can never cross the upper one and vice versa.\n const handleLowerInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const current = resolvedValue as [number, number];\n const valStr = e.target.value;\n setInputValue([valStr, current[1].toString()]);\n\n const parsed = parseFloat(valStr);\n if (!isNaN(parsed)) {\n const clamped = Math.max(min, Math.min(current[1], parsed));\n handleValueChange([clamped, current[1]]);\n }\n };\n\n const handleUpperInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const current = resolvedValue as [number, number];\n const valStr = e.target.value;\n setInputValue([current[0].toString(), valStr]);\n\n const parsed = parseFloat(valStr);\n if (!isNaN(parsed)) {\n const clamped = Math.max(current[0], Math.min(max, parsed));\n handleValueChange([current[0], clamped]);\n }\n };\n\n const handleRangeInputBlur = () => {\n const current = resolvedValue as [number, number];\n setInputValue([current[0].toString(), current[1].toString()]);\n };\n\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Slider.module.css variables, not Mantine's native size scale.\n \"variant\", // Slider has a single Recursica-defined visual treatment; Mantine's variant isn't exposed.\n \"radius\", // Corner radius is fixed by Recursica tokens in Slider.module.css, not caller-configurable.\n // Not currently a real key of Mantine's SliderProps (that's an Input.Wrapper-only prop) — kept\n // as a defensive no-op delete since it predates this consolidation and the public prop type\n // already `Omit`s it; Recursica's own FormControlLayout/WithReadOnlyWrapper own wrapper markup.\n \"wrapperProps\",\n ] as const satisfies readonly (keyof MantineSliderProps | \"wrapperProps\")[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames = mergeClassNames(\n {\n root: styles.sliderRoot,\n track: styles.sliderTrack,\n bar: styles.sliderBar,\n thumb: styles.sliderThumb,\n markWrapper: styles.sliderMarkWrapper,\n mark: styles.sliderMark,\n markLabel: styles.sliderMarkLabel,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n const leadingIcon = icon ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : null;\n\n const trailingIconEl = trailingIcon ? (\n <span className={styles.iconWrapper} aria-hidden>\n {trailingIcon}\n </span>\n ) : null;\n\n // Duplicates the raw numeric value next to the track by default; when `tooltipLabel` is a\n // formatter, reuse it here too so both displays agree instead of one showing raw numbers.\n // Range mode formats each thumb independently and joins them with an en dash.\n const displayValue = Array.isArray(resolvedValue)\n ? typeof tooltipLabel === \"function\"\n ? `${tooltipLabel(resolvedValue[0])} – ${tooltipLabel(resolvedValue[1])}`\n : `${resolvedValue[0]} – ${resolvedValue[1]}`\n : typeof tooltipLabel === \"function\"\n ? tooltipLabel(resolvedValue)\n : resolvedValue;\n\n return (\n <WithReadOnlyWrapper\n ref={ref}\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent || SliderReadOnlyValue}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={resolvedValue}\n readOnlyNativeProps={{ value: resolvedValue }}\n activeComponent={\n <div\n className={styles.sliderContainer}\n data-form-layout={formLayout}\n data-disabled={disabled ? \"true\" : undefined}\n data-error={error ? \"true\" : undefined}\n >\n {isRange && showInput && (\n <input\n type=\"number\"\n className={styles.inputField}\n value={(inputValue as [string, string])[0]}\n onChange={handleLowerInputChange}\n onBlur={handleRangeInputBlur}\n min={min}\n max={(resolvedValue as [number, number])[1]}\n step={step}\n disabled={disabled}\n data-error={error ? \"true\" : undefined}\n aria-label=\"Minimum value\"\n />\n )}\n\n {leadingIcon}\n\n {showMinMaxLabels && (\n <span className={styles.minMaxGuide}>{minLabel ?? min}</span>\n )}\n\n <div className={styles.sliderTrackWrapper}>\n {isRange ? (\n <MantineRangeSlider\n {...(sanitizedProps as unknown as MantineRangeSliderProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={resolvedValue as [number, number]}\n onChange={handleValueChange}\n onChangeEnd={onChangeEnd}\n min={min}\n max={max}\n step={step}\n label={tooltipLabel}\n />\n ) : (\n <MantineSlider\n {...(sanitizedProps as unknown as MantineSliderProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={resolvedValue as number}\n onChange={handleValueChange}\n onChangeEnd={onChangeEnd}\n min={min}\n max={max}\n step={step}\n label={tooltipLabel}\n />\n )}\n </div>\n\n <div className={styles.rightGuideContainer}>\n {!showInput && (\n <span className={styles.currentValue}>{displayValue}</span>\n )}\n {showMinMaxLabels && (\n <span className={styles.minMaxGuide}>{maxLabel ?? max}</span>\n )}\n </div>\n\n {trailingIconEl}\n\n {showInput &&\n (isRange ? (\n <input\n type=\"number\"\n className={styles.inputField}\n value={(inputValue as [string, string])[1]}\n onChange={handleUpperInputChange}\n onBlur={handleRangeInputBlur}\n min={(resolvedValue as [number, number])[0]}\n max={max}\n step={step}\n disabled={disabled}\n data-error={error ? \"true\" : undefined}\n aria-label=\"Maximum value\"\n />\n ) : (\n <input\n type=\"number\"\n className={styles.inputField}\n value={inputValue as string}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n data-error={error ? \"true\" : undefined}\n />\n ))}\n </div>\n }\n />\n );\n },\n);\n\nSlider.displayName = \"Slider\";\n","import { forwardRef } from \"react\";\nimport {\n Stack as MantineStack,\n type StackProps as MantineStackProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n mapLayoutProps,\n type WithRecursicaSpacing,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Stack.module.css\";\n\n/**\n * Stack flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n *\n * No formal Recursica prop contract here: this simply passes through Mantine's own\n * `StackProps` (gap/align/justify are all native to Mantine), layered only with rec-\n * spacing token support via `WithRecursicaSpacing`.\n */\nexport type StackProps = WithRecursicaSpacing<MantineStackProps>;\n\nconst _Stack = forwardRef<HTMLDivElement, StackProps>(function Stack(\n { children, gap = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineStack\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, ...rest } as Record<string, unknown>)}\n >\n {children}\n </MantineStack>\n );\n});\n_Stack.displayName = \"Stack\";\n\nexport const Stack = createPolymorphicComponent<\"div\", StackProps>(_Stack);\n","import React, { forwardRef } from \"react\";\nimport {\n Stepper as MantineStepper,\n type StepperProps as MantineStepperProps,\n type StepperStepProps as MantineStepperStepProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Stepper.module.css\";\n\nimport { type RecursicaStepperProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaStepperPropsExtended\n extends Omit<MantineStepperProps, \"size\">,\n RecursicaStepperProps {}\n\nexport type StepperProps = RecursicaOverStyled<RecursicaStepperPropsExtended>;\n\nconst _Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(props, ref) {\n const {\n overStyled = false,\n size = \"large\",\n orientation = \"horizontal\",\n className,\n style,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n steps: styles.steps,\n step: styles.step,\n stepIcon: styles.stepIcon,\n stepCompletedIcon: styles.stepCompletedIcon,\n stepBody: styles.stepBody,\n stepLabel: styles.stepLabel,\n stepDescription: styles.stepDescription,\n separator: styles.separator,\n verticalSeparator: styles.verticalSeparator,\n content: styles.content,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n return (\n <MantineStepper\n ref={ref}\n {...(sanitizedProps as MantineStepperProps)}\n orientation={orientation}\n className={`${styles.root} ${orientation === \"horizontal\" ? styles.horizontal : styles.vertical} ${size === \"large\" ? styles.large : styles.small} ${className || \"\"}`}\n style={style as React.CSSProperties}\n data-size={size}\n data-orientation={orientation}\n classNames={mergedClassNames}\n />\n );\n },\n);\n\nexport type StepperStepProps = RecursicaOverStyled<MantineStepperStepProps>;\n\nconst _StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n function StepperStep({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineStepper.Step\n ref={ref}\n {...(sanitizedProps as unknown as MantineStepperStepProps)}\n />\n );\n },\n);\n_StepperStep.displayName = \"Stepper.Step\";\n\n// We need to re-export the static components Step and Completed\nexport const Stepper: typeof _Stepper & {\n Step: typeof _StepperStep;\n Completed: typeof MantineStepper.Completed;\n} = Object.assign(_Stepper, {\n Step: _StepperStep,\n // Stepper.Completed only accepts `children` — no styling props to strip,\n // so re-exporting Mantine's implementation directly is not a gap.\n Completed: MantineStepper.Completed,\n});\n\n_Stepper.displayName = \"Stepper\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Switch as MantineSwitch,\n type SwitchGroupProps as MantineSwitchGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Switch.module.css\";\n\nimport { type RecursicaSwitchGroupProps as BaseRecursicaSwitchGroupProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaSwitchGroupProps\n extends Omit<\n MantineSwitchGroupProps,\n \"size\" | \"labelProps\" | \"defaultValue\" | \"value\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaSwitchGroupProps {}\n\nexport type SwitchGroupProps = RecursicaOverStyled<RecursicaSwitchGroupProps>;\n\nexport const SwitchGroup = forwardRef<HTMLDivElement, SwitchGroupProps>(\n function SwitchGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Switch.module.css variables, not Mantine's native size scale.\n ] as const satisfies readonly (keyof MantineSwitchGroupProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n // No group-level max-width: switch-item label-max-width (200px) caps a single switch's\n // own label text, not the whole group — reusing it here made the side-by-side label\n // column (fixed 224px) wider than its container, so it always wrapped onto its own line.\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive switches nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineSwitch.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineSwitchGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineSwitch.Group>\n }\n />\n );\n },\n);\n\nSwitchGroup.displayName = \"SwitchGroup\";\n","import { forwardRef, type CSSProperties } from \"react\";\nimport {\n Switch as MantineSwitch,\n type SwitchProps as MantineSwitchProps,\n CheckIcon,\n CloseIcon,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\n\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n withCallerOverride,\n mergeClassNames,\n mergeStyles,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RequireAccessibleLabel,\n type RecursicaSwitchProps,\n} from \"@recursica/adapter-common\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\nimport styles from \"./Switch.module.css\";\n\nimport { SwitchGroup } from \"./SwitchGroup\";\n\nexport type SwitchWrapperProps = Omit<\n MantineSwitchProps,\n \"size\" | \"color\" | \"radius\" | \"variant\"\n> &\n RecursicaSwitchProps &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >;\n\nexport type RecursicaSwitchPropsAlias =\n RequireAccessibleLabel<SwitchWrapperProps>;\n\nexport type SwitchProps = RecursicaOverStyled<RecursicaSwitchPropsAlias>;\n\ntype SwitchComponent = React.ForwardRefExoticComponent<\n SwitchProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof SwitchGroup;\n};\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n thumbIcon,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via Switch.module.css variables, not Mantine's native size scale.\n \"color\", // Colors are token-driven via Switch.module.css; Mantine's native palette isn't exposed.\n \"radius\", // Corner radius is fixed by Recursica tokens in Switch.module.css, not caller-configurable.\n \"variant\", // Switch has a single Recursica-defined visual treatment; Mantine's variant isn't exposed.\n ] as const satisfies readonly (keyof MantineSwitchProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n ) as Partial<typeof rest>;\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n body: styles.body,\n track: styles.track,\n thumb: styles.thumb,\n trackLabel: styles.trackLabel,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // Recursica has no default per-slot inline styles here (all default styling comes from\n // Switch.module.css above) — this only exists so a caller-supplied `styles` prop (permitted\n // once overStyled=true clears filterStylingProps) merges in per-slot instead of needing its\n // own passthrough path.\n const mergedStyles = mergeStyles(\n {} as Record<string, CSSProperties | undefined>,\n restRecord.styles as Partial<Record<string, CSSProperties>> | undefined,\n );\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n const FinalThumbIcon = (\n <div className={styles.thumbIconWrapper}>\n <CheckIcon className={styles.checkIcon} />\n <CloseIcon className={styles.closeIcon} />\n </div>\n );\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Switch.module.css\n const switchNode = (\n <MantineSwitch\n ref={ref}\n {...(sanitizedProps as unknown as MantineSwitchProps)}\n className={finalClass}\n classNames={mergedClassNames}\n styles={mergedStyles}\n disabled={readOnly || disabled}\n data-disabled={readOnly || disabled || undefined}\n thumbIcon={withCallerOverride<React.ReactNode>(\n FinalThumbIcon,\n thumbIcon,\n )}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {switchNode}\n </FormControlLayout>\n );\n }\n\n return switchNode;\n },\n) as SwitchComponent;\n\nSwitch.displayName = \"Switch\";\nSwitch.Group = SwitchGroup;\n","import React from \"react\";\n\n/**\n * Sort-direction indicators for `Table.Th`. Sized/colored entirely via the `.sortIcon` rule in\n * Table.module.css (currentColor + the header's own text-color token) — no width/height/color\n * hardcoded here on purpose, same convention as DatePicker.icons.tsx.\n */\nexport function ChevronUpIcon(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n {...props}\n >\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n );\n}\n\nexport function ChevronDownIcon(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n {...props}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n","import { forwardRef } from \"react\";\nimport {\n Table as MantineTable,\n type TableProps as MantineTableProps,\n type TableTheadProps as MantineTableTheadProps,\n type TableTbodyProps as MantineTableTbodyProps,\n type TableTrProps as MantineTableTrProps,\n type TableThProps as MantineTableThProps,\n type TableTdProps as MantineTableTdProps,\n type TableTfootProps as MantineTableTfootProps,\n type TableCaptionProps as MantineTableCaptionProps,\n type TableScrollContainerProps as MantineTableScrollContainerProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RecursicaTableProps,\n type RecursicaTableRowProps,\n type RecursicaTableHeaderCellProps,\n type RecursicaTableCellProps,\n} from \"@recursica/adapter-common\";\nimport styles from \"./Table.module.css\";\nimport { ChevronUpIcon, ChevronDownIcon } from \"./Table.icons\";\n\nexport type TableProps = RecursicaOverStyled<\n MantineTableProps & RecursicaTableProps\n>;\n\nconst TableBase = forwardRef<HTMLTableElement, TableProps>(function Table(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const rootClass = styles.root;\n const finalClass = classNameProp\n ? `${rootClass} ${classNameProp}`\n : rootClass;\n\n return (\n <MantineTable\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableProps)}\n className={finalClass}\n />\n );\n});\n\nTableBase.displayName = \"Table\";\n\n// ==== EXPLICIT DOT-NOTATION SUB-COMPONENTS ====\n// Each sub-component is wrapped independently so it goes through\n// filterStylingProps/overStyled the same way the root Table does.\n\nexport type TableTheadProps = RecursicaOverStyled<MantineTableTheadProps>;\n\nexport const TableThead = forwardRef<HTMLTableSectionElement, TableTheadProps>(\n function TableThead({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Thead\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableTheadProps)}\n />\n );\n },\n);\nTableThead.displayName = \"TableThead\";\n\nexport type TableTbodyProps = RecursicaOverStyled<MantineTableTbodyProps>;\n\nexport const TableTbody = forwardRef<HTMLTableSectionElement, TableTbodyProps>(\n function TableTbody({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Tbody\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableTbodyProps)}\n />\n );\n },\n);\nTableTbody.displayName = \"TableTbody\";\n\nexport type TableTrProps = RecursicaOverStyled<\n Omit<MantineTableTrProps, \"children\"> & RecursicaTableRowProps\n>;\n\nexport const TableTr = forwardRef<HTMLTableRowElement, TableTrProps>(\n function TableTr(\n { overStyled = false, selected = false, disabled = false, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Tr\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableTrProps)}\n data-selected={selected ? \"true\" : undefined}\n data-disabled={disabled ? \"true\" : undefined}\n />\n );\n },\n);\nTableTr.displayName = \"TableTr\";\n\nexport type TableThProps = RecursicaOverStyled<\n Omit<MantineTableThProps, \"children\"> & RecursicaTableHeaderCellProps\n>;\n\nexport const TableTh = forwardRef<HTMLTableCellElement, TableThProps>(\n function TableTh(\n {\n overStyled = false,\n sorted = false,\n disabled = false,\n variant = \"default\",\n children,\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Th\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableThProps)}\n data-sorted={sorted ? \"true\" : undefined}\n data-disabled={disabled ? \"true\" : undefined}\n data-currency={variant === \"currency\" ? \"true\" : undefined}\n aria-sort={\n sorted === \"asc\"\n ? \"ascending\"\n : sorted === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {sorted === \"asc\" && <ChevronUpIcon className={styles.sortIcon} />}\n {sorted === \"desc\" && <ChevronDownIcon className={styles.sortIcon} />}\n </MantineTable.Th>\n );\n },\n);\nTableTh.displayName = \"TableTh\";\n\nexport type TableTdProps = RecursicaOverStyled<\n Omit<MantineTableTdProps, \"children\"> & RecursicaTableCellProps\n>;\n\nexport const TableTd = forwardRef<HTMLTableCellElement, TableTdProps>(\n function TableTd(\n { overStyled = false, disabled = false, variant = \"default\", ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Td\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableTdProps)}\n data-disabled={disabled ? \"true\" : undefined}\n data-currency={variant === \"currency\" ? \"true\" : undefined}\n />\n );\n },\n);\nTableTd.displayName = \"TableTd\";\n\nexport type TableTfootProps = RecursicaOverStyled<MantineTableTfootProps>;\n\nexport const TableTfoot = forwardRef<HTMLTableSectionElement, TableTfootProps>(\n function TableTfoot({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Tfoot\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableTfootProps)}\n />\n );\n },\n);\nTableTfoot.displayName = \"TableTfoot\";\n\nexport type TableCaptionProps = RecursicaOverStyled<MantineTableCaptionProps>;\n\nexport const TableCaption = forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(function TableCaption({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.Caption\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableCaptionProps)}\n />\n );\n});\nTableCaption.displayName = \"TableCaption\";\n\nexport type TableScrollContainerProps =\n RecursicaOverStyled<MantineTableScrollContainerProps>;\n\nexport const TableScrollContainer = forwardRef<\n HTMLDivElement,\n TableScrollContainerProps\n>(function TableScrollContainer({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTable.ScrollContainer\n ref={ref}\n {...(sanitizedProps as unknown as MantineTableScrollContainerProps)}\n />\n );\n});\nTableScrollContainer.displayName = \"TableScrollContainer\";\n\n// ==== DOT NOTATION EXPORT ====\n\ntype TableComponent = typeof TableBase & {\n Thead: typeof TableThead;\n Tbody: typeof TableTbody;\n Tr: typeof TableTr;\n Th: typeof TableTh;\n Td: typeof TableTd;\n Tfoot: typeof TableTfoot;\n Caption: typeof TableCaption;\n ScrollContainer: typeof TableScrollContainer;\n};\n\nexport const Table = TableBase as TableComponent;\nTable.Thead = TableThead;\nTable.Tbody = TableTbody;\nTable.Tr = TableTr;\nTable.Th = TableTh;\nTable.Td = TableTd;\nTable.Tfoot = TableTfoot;\nTable.Caption = TableCaption;\nTable.ScrollContainer = TableScrollContainer;\n","import { forwardRef } from \"react\";\nimport {\n Tabs as MantineTabs,\n type TabsProps as MantineTabsProps,\n type TabsListProps as MantineTabsListProps,\n type TabsTabProps as MantineTabsTabProps,\n type TabsPanelProps as MantineTabsPanelProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Tabs.module.css\";\n\nimport { type RecursicaTabsProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaTabsPropsExtended\n extends Omit<MantineTabsProps, \"variant\">,\n RecursicaTabsProps {}\n\nexport type TabsProps = RecursicaOverStyled<RecursicaTabsPropsExtended>;\n\nconst _Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(props, ref) {\n const {\n variant = \"default\",\n orientation = \"horizontal\",\n overStyled = false,\n className,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n list: styles.list,\n tab: styles.tab,\n panel: styles.panel,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n return (\n <MantineTabs\n ref={ref}\n {...(sanitizedProps as MantineTabsProps)}\n variant={variant}\n orientation={orientation}\n className={`${styles.root} ${className || \"\"}`}\n data-variant={variant}\n data-orientation={orientation}\n classNames={mergedClassNames}\n />\n );\n});\n\n_Tabs.displayName = \"Tabs\";\n\nexport type TabsListProps = RecursicaOverStyled<MantineTabsListProps>;\n\nconst _TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n function TabsList(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.List\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsListProps)}\n />\n );\n },\n);\n_TabsList.displayName = \"Tabs.List\";\n\nexport type TabsTabProps = RecursicaOverStyled<MantineTabsTabProps>;\n\nconst _TabsTab = forwardRef<HTMLButtonElement, TabsTabProps>(\n function TabsTab(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.Tab\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsTabProps)}\n />\n );\n },\n);\n_TabsTab.displayName = \"Tabs.Tab\";\n\nexport type TabsPanelProps = RecursicaOverStyled<MantineTabsPanelProps>;\n\nconst _TabsPanel = forwardRef<HTMLDivElement, TabsPanelProps>(\n function TabsPanel(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.Panel\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsPanelProps)}\n />\n );\n },\n);\n_TabsPanel.displayName = \"Tabs.Panel\";\n\nexport const Tabs: typeof _Tabs & {\n List: typeof _TabsList;\n Tab: typeof _TabsTab;\n Panel: typeof _TabsPanel;\n} = Object.assign(_Tabs, {\n List: _TabsList,\n Tab: _TabsTab,\n Panel: _TabsPanel,\n});\n","import { forwardRef } from \"react\";\nimport {\n Text as MantineText,\n type TextProps as MantineTextProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\n\nimport { type RecursicaTextProps } from \"@recursica/adapter-common\";\nimport styles from \"./Text.module.css\";\n\nexport type TextProps = RecursicaOverStyled<\n Omit<MantineTextProps, \"variant\"> & RecursicaTextProps\n>;\n\nconst _Text = forwardRef<HTMLDivElement, TextProps>(function Text(\n { overStyled = false, variant = \"body\", ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const typographyClass = `recursica_brand_typography_${variant}`;\n const mergedClassName = [typographyClass, styles.root, classNameProp]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <MantineText\n ref={ref}\n {...(sanitizedProps as unknown as MantineTextProps)}\n className={mergedClassName}\n />\n );\n});\n_Text.displayName = \"Text\";\n\n/**\n * A generalized typographical wrapper limiting text properties to bounded Recursica UI-kit tokens inherently.\n * Do not use for semantic headings; use the explicit `<Heading>` component for `<h1>` - `<h6>`.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * @example\n * ```tsx\n * <Text component=\"span\">Inline text</Text>\n * <Text component=\"label\" htmlFor=\"input-id\">Label text</Text>\n * ```\n */\nexport const Text = createPolymorphicComponent<\"p\", TextProps>(_Text);\n","import React, { forwardRef } from \"react\";\nimport {\n Textarea as MantineTextarea,\n type TextareaProps as MantineTextareaProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./TextArea.module.css\";\n\nimport { type RecursicaTextAreaProps as BaseRecursicaTextAreaProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaTextAreaProps\n extends Omit<\n MantineTextareaProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaTextAreaProps {}\n\nexport type TextAreaProps = RecursicaOverStyled<RecursicaTextAreaProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n] as const satisfies readonly (keyof MantineTextareaProps)[];\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames = mergeClassNames(\n {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--textarea-control-max-width)\"\n controlMinWidth=\"var(--textarea-control-min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineTextarea\n ref={ref}\n {...(sanitizedProps as unknown as MantineTextareaProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n label={undefined}\n description={undefined}\n error={!!error}\n required={undefined}\n withAsterisk={undefined}\n />\n }\n />\n );\n },\n);\n\nTextArea.displayName = \"TextArea\";\n","import React, { forwardRef } from \"react\";\nimport { Input, type InputProps, type InputWrapperProps } from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./TextField.module.css\";\n\nimport { type RecursicaTextFieldProps as BaseRecursicaTextFieldProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaTextFieldProps\n extends Omit<InputProps, \"size\" | \"variant\" | \"radius\" | \"wrapperProps\">,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n React.ComponentPropsWithoutRef<\"input\">,\n \"size\" | \"style\" | \"className\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaTextFieldProps {}\n\nexport type TextFieldProps = RecursicaOverStyled<RecursicaTextFieldProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n] as const satisfies readonly (keyof InputProps)[];\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames = mergeClassNames(\n {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--text-field-control-max-width)\"\n controlMinWidth=\"var(--text-field-control-min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <Input\n ref={ref}\n {...(sanitizedProps as unknown as InputProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n />\n }\n />\n );\n },\n);\n\nTextField.displayName = \"TextField\";\n","import { forwardRef } from \"react\";\nimport {\n Select as MantineSelect,\n type SelectProps as MantineSelectProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Dropdown.module.css\";\n\n/**\n * Bare, unwrapped Select — no `FormControlWrapper`/`WithReadOnlyWrapper`, no label/assistiveText/\n * error/required. Tied to the same `Dropdown.module.css` variables/classes as the public\n * `Dropdown` component, so it looks identical, but is meant to be embedded inside another\n * component that already owns its own `FormControlWrapper` (e.g. `TimePicker`'s AM/PM control) —\n * nesting the full `Dropdown` there would double up `FormControl`/`FormControlLayout` wrapping.\n *\n * Not exported from this folder's `index.ts` — internal use only. Import it directly:\n * `import { BareDropdown } from \"../Dropdown/BareDropdown\"`.\n */\nexport interface BareDropdownProps\n extends Omit<\n MantineSelectProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"label\"\n | \"description\"\n | \"error\"\n > {\n data: MantineSelectProps[\"data\"];\n /** Applies the error visual state (via `data-error`) — no error message is rendered here. */\n error?: boolean;\n}\n\nexport type BareDropdownComponentProps = RecursicaOverStyled<BareDropdownProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n] as const satisfies readonly (keyof MantineSelectProps)[];\n\nexport const BareDropdown = forwardRef<\n HTMLInputElement,\n BareDropdownComponentProps\n>(function BareDropdown(props, ref) {\n const { overStyled = false, className, disabled, error, ...rest } = props;\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n wrapper: className ? `${styles.root} ${className}` : styles.root,\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n return (\n <MantineSelect\n ref={ref}\n {...(sanitizedProps as unknown as MantineSelectProps)}\n classNames={mergedClassNames}\n disabled={disabled}\n label={undefined}\n description={undefined}\n error={undefined}\n // `wrapperProps` targets Mantine's *outer* `Input.Wrapper` (the label/description/error\n // stacking element) — a different, ancestor element from the \"wrapper\" styles-api slot that\n // actually carries `styles.root`'s border/background. Dropdown.module.css's error/disabled\n // rules (`.root[data-error]`/`[data-disabled]`) need the attribute on that inner element, so\n // `attributes.wrapper` (which targets the same slot as `classNames.wrapper`/`styles.wrapper`)\n // is the correct hook here, not `wrapperProps`. See TIMEPICKER_IMPLEMENTATION_NOTES.md.\n attributes={{\n wrapper: {\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n },\n }}\n />\n );\n});\n\nBareDropdown.displayName = \"BareDropdown\";\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport {\n TimePicker as MantineTimePicker,\n type TimePickerProps as MantineTimePickerProps,\n} from \"@mantine/dates\";\nimport { type InputWrapperProps } from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport { BareDropdown } from \"../Dropdown/BareDropdown\";\nimport styles from \"./TimePicker.module.css\";\n\nimport { type RecursicaTimePickerProps as BaseRecursicaTimePickerProps } from \"@recursica/adapter-common\";\n\nconst AM_PM_DATA = [\n { value: \"AM\", label: \"AM\" },\n { value: \"PM\", label: \"PM\" },\n];\n\n/** Parses an \"HH:mm\"/\"HH:mm:ss\" string's hour, or undefined if not set/parseable. */\nfunction getHour(value: string | undefined): number | undefined {\n if (!value) return undefined;\n const hour = parseInt(value.slice(0, 2), 10);\n return Number.isNaN(hour) ? undefined : hour;\n}\n\n/** Replaces the hour segment of an \"HH:mm\"/\"HH:mm:ss\" string, preserving minutes/seconds. */\nfunction withHour(value: string, hour: number): string {\n return `${String(hour).padStart(2, \"0\")}${value.slice(2)}`;\n}\n\n/**\n * Formats an \"HH:mm\"/\"HH:mm:ss\" 24-hour value as a 12-hour + AM/PM string for read-only display\n * (e.g. \"14:30\" -> \"2:30 PM\") — the raw 24-hour string was being shown as-is in read-only mode,\n * with no AM/PM, unlike the interactive composite. Returns undefined if not parseable.\n */\nfunction formatReadOnlyTime(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const [hourStr, minute, second] = value.split(\":\");\n const hour24 = parseInt(hourStr, 10);\n if (Number.isNaN(hour24) || minute === undefined) return value;\n const isPM = hour24 >= 12;\n const hour12 = hour24 % 12 === 0 ? 12 : hour24 % 12;\n const rest = second !== undefined ? `${minute}:${second}` : minute;\n return `${hour12}:${rest} ${isPM ? \"PM\" : \"AM\"}`;\n}\n\n/**\n * Simulates a real user interaction on Mantine's own (CSS-hidden) native AM/PM <select>, since it's\n * a React-controlled element — setting `.value` directly and dispatching a plain DOM event doesn't\n * trigger React's change handling; using the native property setter first does. See \"Why AM/PM is\n * seeded on mount\" in TIMEPICKER_IMPLEMENTATION_NOTES.md.\n */\nfunction setNativeSelectValue(el: HTMLSelectElement, value: string): void {\n const nativeSetter = Object.getOwnPropertyDescriptor(\n window.HTMLSelectElement.prototype,\n \"value\",\n )?.set;\n nativeSetter?.call(el, value);\n el.dispatchEvent(new Event(\"change\", { bubbles: true }));\n}\n\nexport interface RecursicaTimePickerProps\n extends Omit<\n MantineTimePickerProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"format\"\n | \"min\"\n | \"max\"\n // AM/PM is always shown via our own BareDropdown, driving a fixed 12h format — these all\n // control Mantine's own native (now CSS-hidden) AM/PM select and would be misleading to\n // expose, since they'd have no visible effect. See TIMEPICKER_IMPLEMENTATION_NOTES.md.\n | \"amPmInputLabel\"\n | \"amPmLabels\"\n | \"amPmSelectProps\"\n | \"amPmRef\"\n // The optional time-presets dropdown isn't wired up; keep the public API to what's supported.\n | \"withDropdown\"\n | \"presets\"\n | \"maxDropdownContentHeight\"\n | \"scrollAreaProps\"\n | \"reverseTimeControlsList\"\n | \"popoverProps\"\n >,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaTimePickerProps {}\n\nexport type TimePickerProps = RecursicaOverStyled<RecursicaTimePickerProps>;\n\n// Props this component intentionally doesn't support — deleted at runtime so they can't leak\n// through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\nconst UNSUPPORTED_PROPS = [\n \"size\", // Recursica controls sizing via the `size` variant + design tokens, not raw dimensions.\n \"variant\", // Colors/variants are token-driven; the library's native palette isn't exposed.\n \"radius\", // Recursica does not expose the library's native corner-radius system.\n] as const satisfies readonly (keyof MantineTimePickerProps)[];\n\nexport const TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n function TimePicker(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n onChange,\n withSeconds,\n minTime,\n maxTime,\n ...rest\n } = props;\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled) as Record<string, unknown>,\n UNSUPPORTED_PROPS,\n );\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Internal full 24-hour value. Needed because Mantine's TimePicker (hour/minute/second entry)\n // and our own BareDropdown (AM/PM) both mutate the same conceptual value — see\n // TIMEPICKER_IMPLEMENTATION_NOTES.md.\n const [internalValue, setInternalValue] = useState<string | undefined>(\n () => value ?? defaultValue,\n );\n\n useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Mantine's own internal amPm state starts `null` whenever there's no initial hour to derive it\n // from (see convertTimeTo12HourFormat in @mantine/dates), and it stays null — meaning Mantine\n // never reports a valid onChange, no matter what's typed — until something interacts with the\n // (CSS-hidden) native AM/PM <select>. Simulating that interaction once on mount, defaulting to\n // AM, breaks the deadlock: a freshly-typed time now resolves and reports immediately, and our\n // own BareDropdown (which drives the same native select the same way, see handleMeridiemChange)\n // correctly displays and changes it from there. Skipped whenever a real initial value/defaultValue\n // is already present — Mantine already derives the correct AM/PM from that on its own. See\n // TIMEPICKER_IMPLEMENTATION_NOTES.md.\n const amPmRef = useRef<HTMLSelectElement>(null);\n useEffect(() => {\n if (getHour(value ?? defaultValue) === undefined && amPmRef.current) {\n setNativeSelectValue(amPmRef.current, \"AM\");\n }\n // Intentionally mount-only — this seeds Mantine's internal state once; after that it's driven\n // by real interaction (typing, or our own BareDropdown).\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const emitChange = (next: string) => {\n setInternalValue(next);\n onChange?.(next);\n };\n\n const hour = getHour(internalValue);\n const isPM = hour !== undefined && hour >= 12;\n\n const handleFieldChange = (next: string) => {\n emitChange(next);\n };\n\n const handleMeridiemChange = (next: string | null) => {\n if (hour === undefined || !internalValue || !next) return;\n const wantsPM = next === \"PM\";\n if (wantsPM === isPM) return;\n const nextHour = wantsPM ? hour + 12 : hour - 12;\n emitChange(withHour(internalValue, nextHour));\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={formatReadOnlyTime(\n value !== undefined ? value : defaultValue,\n )}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked field execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks.\n format=\"12h\" is always on — this is the only way this component operates, not a user\n choice (see TIMEPICKER_IMPLEMENTATION_NOTES.md). Mantine's own native AM/PM <select>\n (bundled unconditionally with format=\"12h\") is CSS-hidden; our own BareDropdown next to\n it is the only AM/PM control the user interacts with. */\n <div\n className={styles.root}\n data-disabled={disabled ? \"true\" : undefined}\n data-error={error ? \"true\" : undefined}\n >\n <MantineTimePicker\n ref={ref}\n {...(sanitizedProps as unknown as MantineTimePickerProps)}\n classNames={mergeClassNames(\n {\n wrapper: styles.timeWrapper,\n input: styles.timeInput,\n section: styles.section,\n fieldsGroup: styles.fieldsGroup,\n field: styles.timeField,\n },\n restRecord.classNames as\n | Partial<Record<string, string>>\n | undefined,\n )}\n disabled={disabled}\n value={internalValue}\n onChange={handleFieldChange}\n format=\"12h\"\n withSeconds={withSeconds}\n min={minTime}\n max={maxTime}\n withDropdown={false}\n // Internal-only — not part of the public API (see the Omit list above) — used solely\n // to seed the mount-time AM default onto Mantine's own hidden native select. See\n // TIMEPICKER_IMPLEMENTATION_NOTES.md.\n amPmRef={amPmRef}\n />\n <BareDropdown\n overStyled\n className={styles.amPmSelect}\n // Dropdown.module.css's own .root sets width: 100% (correct for a standalone\n // Dropdown filling its form-control column) — overStyled lets us override just the\n // width, keeping every other Recursica style (border, colors, padding) intact.\n // A plain `style` prop won't do this: Mantine's Select/InputBase internals\n // (useInputProps) route a top-level `style` prop to the *label* InputWrapper, not\n // the bordered input box itself — `styles={{ wrapper: ... }}` is the styles-api hook\n // that actually targets that box. See TIMEPICKER_IMPLEMENTATION_NOTES.md.\n styles={{ wrapper: { width: \"fit-content\" } }}\n data={AM_PM_DATA}\n value={isPM ? \"PM\" : \"AM\"}\n onChange={handleMeridiemChange}\n disabled={disabled}\n error={!!error}\n aria-label=\"AM or PM\"\n />\n </div>\n }\n />\n );\n },\n);\n\nTimePicker.displayName = \"TimePicker\";\n","import React from \"react\";\nimport {\n TimelineItem as MantineTimelineItem,\n type TimelineItemProps as MantineTimelineItemProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Timeline.module.css\";\n\nimport { type RecursicaTimelineItemProps } from \"@recursica/adapter-common\";\n\nexport type TimelineItemProps = RecursicaOverStyled<\n Omit<MantineTimelineItemProps, \"radius\" | \"color\" | \"lineVariant\"> &\n RecursicaTimelineItemProps\n>;\n\n/**\n * The individual item component for the Timeline.\n *\n * **Recursica Abstract:**\n * The `Timeline.Item` has been extended to support a `timestamp` string natively,\n * rendering it below the body content. It also accepts a `bulletVariant` to morph\n * the structural dimensions of the node circle automatically.\n */\nexport const TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\n function TimelineItem(\n {\n overStyled = false,\n timestamp,\n bulletVariant = \"default\",\n children,\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n {\n item: styles.item,\n itemBody: styles.itemBody,\n itemContent: styles.itemContent,\n itemBullet: styles.itemBullet,\n itemTitle: styles.itemTitle,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // Embed timestamp inside children if provided, wrapped in a specific class\n const content = timestamp ? (\n <>\n {children && <div className={styles.description}>{children}</div>}\n <div className={styles.timestamp}>{timestamp}</div>\n </>\n ) : (\n children\n );\n\n return (\n <MantineTimelineItem\n ref={ref}\n {...(sanitizedProps as unknown as Omit<\n MantineTimelineItemProps,\n \"radius\" | \"color\" | \"lineVariant\"\n >)}\n classNames={mergedClassNames}\n data-variant={bulletVariant}\n >\n {content}\n </MantineTimelineItem>\n );\n },\n);\n\nTimelineItem.displayName = \"TimelineItem\";\n","import React from \"react\";\nimport {\n Timeline as MantineTimeline,\n type TimelineProps as MantineTimelineProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Timeline.module.css\";\nimport { TimelineItem } from \"./TimelineItem\";\n\nimport { type RecursicaTimelineProps } from \"@recursica/adapter-common\";\n\n/**\n * Properties for the strictly-tokenized Timeline component.\n * Native Mantine abstract properties like `color`, `radius`, `bulletSize`, and `lineWidth`\n * have been stripped out to strictly enforce the structural mappings of the Recursica UI Kit.\n */\nexport type TimelineProps = RecursicaOverStyled<\n Omit<MantineTimelineProps, \"color\" | \"radius\" | \"bulletSize\" | \"lineWidth\"> &\n RecursicaTimelineProps\n>;\n\ninterface TimelineComponent\n extends React.ForwardRefExoticComponent<\n TimelineProps & React.RefAttributes<HTMLDivElement>\n > {\n Item: typeof TimelineItem;\n}\n\n/**\n * The `Timeline` component displays a list of events in chronological order.\n *\n * **Recursica Abstract:**\n * This component acts as a structural wrapper around Mantine's `<Timeline>`.\n * It forces alignment and geometry strictly via the UI Kit's `.itemBullet` and connector definitions.\n *\n * @example\n * ```tsx\n * <Timeline active={1}>\n * <Timeline.Item title=\"Event 1\" timestamp=\"Yesterday\">Description</Timeline.Item>\n * </Timeline>\n * ```\n */\nconst TimelineInner = React.forwardRef<HTMLDivElement, TimelineProps>(\n function Timeline({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames = mergeClassNames(\n { root: styles.root },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n return (\n <MantineTimeline\n ref={ref}\n {...(sanitizedProps as unknown as Omit<\n MantineTimelineProps,\n \"color\" | \"radius\" | \"bulletSize\" | \"lineWidth\"\n >)}\n classNames={mergedClassNames}\n />\n );\n },\n);\n\nTimelineInner.displayName = \"Timeline\";\n\nexport const Timeline = TimelineInner as TimelineComponent;\nTimeline.Item = TimelineItem;\n","import React from \"react\";\nimport {\n Notification as MantineNotification,\n type NotificationProps as MantineNotificationProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n omitUnsupportedProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Toast.module.css\";\n\nimport { type RecursicaToastProps } from \"@recursica/adapter-common\";\n\n/**\n * Toast component wrapping Mantine's Notification.\n *\n * Can be used as a standalone visual component to display a notification or message.\n */\nexport type ToastProps = RecursicaOverStyled<\n Omit<MantineNotificationProps, \"color\" | \"radius\" | \"variant\" | \"loading\"> &\n RecursicaToastProps\n>;\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n function Toast(\n {\n overStyled = false,\n variant = \"default\",\n withCloseButton = true,\n ...rest\n },\n ref,\n ) {\n // Props this component intentionally doesn't support — deleted at runtime so they can't leak\n // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.\n const UNSUPPORTED_PROPS = [\n \"color\", // Colors are token-driven via `data-variant`; Mantine's native palette isn't exposed.\n \"radius\", // Toast corner radius is controlled by design tokens, not a raw radius prop.\n \"loading\", // Toast never renders a loading state; always forced off via `loading={false}` below.\n ] as const satisfies readonly (keyof MantineNotificationProps)[];\n\n const sanitizedProps = omitUnsupportedProps(\n filterStylingProps(rest, overStyled),\n UNSUPPORTED_PROPS,\n );\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames = mergeClassNames(\n {\n root: styles.root,\n body: styles.body,\n title: styles.title,\n description: styles.description,\n closeButton: styles.closeButton,\n icon: styles.icon,\n loader: styles.loader,\n },\n (sanitizedProps as Record<string, unknown>).classNames as\n | Partial<Record<string, string>>\n | undefined,\n );\n\n return (\n <MantineNotification\n ref={ref}\n {...(sanitizedProps as unknown as Omit<\n MantineNotificationProps,\n \"color\" | \"radius\" | \"variant\" | \"loading\"\n >)}\n withCloseButton={withCloseButton}\n withBorder={false} // Border is handled via CSS or tokens if needed\n data-variant={variant}\n classNames={mergedClassNames}\n loading={false}\n />\n );\n },\n);\n\nToast.displayName = \"Toast\";\n","import { forwardRef } from \"react\";\nimport {\n Tooltip as MantineTooltip,\n type TooltipProps as MantineTooltipProps,\n type TooltipFloatingProps as MantineTooltipFloatingProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Tooltip.module.css\";\n\n// ============================================================\n// TOOLTIP\n// ============================================================\n\n/**\n * Recursica-specific props for Tooltip.\n */\nimport { type RecursicaTooltipProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica Tooltip component wrapping Mantine's Tooltip.\n *\n * Displays a floating label when the user hovers over or focuses a target element.\n * Unlike HoverCard, Tooltip is a single component (not composable) — content is\n * passed via the `label` prop, and the trigger is passed as `children`.\n *\n * ```tsx\n * <Tooltip label=\"Helpful information\" withBeak>\n * <Button>Hover me</Button>\n * </Tooltip>\n * ```\n *\n * Static sub-components available via dot-notation:\n * - `Tooltip.Floating` — Tooltip that follows the cursor\n * - `Tooltip.Group` — Shared hover delay group for multiple tooltips\n */\nexport type TooltipProps = RecursicaOverStyled<\n MantineTooltipProps & RecursicaTooltipProps\n>;\n\nconst TooltipBase = function Tooltip({\n overStyled = false,\n withBeak = true,\n position = \"top\", // Recursica default; Mantine defaults to \"bottom\"\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n arrowSize = 16,\n ...rest\n}: TooltipProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames = mergeClassNames(\n {\n tooltip: styles.tooltip,\n arrow: styles.arrow,\n },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n );\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = restRecord.withArrow as boolean | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantineTooltip\n {...(sanitizedProps as unknown as MantineTooltipProps)}\n position={position}\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n multiline /* Always allow text wrapping within max-width */\n classNames={mergedClassNames}\n />\n );\n};\nTooltipBase.displayName = \"Tooltip\";\n\n// ============================================================\n// TOOLTIP.FLOATING\n// ============================================================\n\nexport type TooltipFloatingProps =\n RecursicaOverStyled<MantineTooltipFloatingProps>;\n\nexport const TooltipFloating = forwardRef<HTMLDivElement, TooltipFloatingProps>(\n function TooltipFloating({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n return (\n <MantineTooltip.Floating\n ref={ref}\n {...(sanitizedProps as unknown as MantineTooltipFloatingProps)}\n />\n );\n },\n);\nTooltipFloating.displayName = \"TooltipFloating\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype TooltipComponent = typeof TooltipBase & {\n Floating: typeof TooltipFloating;\n Group: typeof MantineTooltip.Group;\n};\n\nexport const Tooltip = TooltipBase as TooltipComponent;\nTooltip.Floating = TooltipFloating;\n// Tooltip.Group has no styling props of its own (no `style`/`className`/BoxProps),\n// so re-exporting Mantine's implementation directly is not a styling-gate gap.\nTooltip.Group = MantineTooltip.Group;\n","import { forwardRef, useCallback, useId, useMemo, useState } from \"react\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type FormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport { Badge } from \"../Badge/Badge\";\nimport { Button } from \"../Button/Button\";\nimport { TextField } from \"../TextField/TextField\";\nimport { Checkbox } from \"../Checkbox/Checkbox\";\nimport { CheckboxGroup } from \"../Checkbox/CheckboxGroup\";\nimport styles from \"./TransferList.module.css\";\n\nimport {\n type ReadOnlyControlProps,\n type RecursicaTransferListProps as BaseRecursicaTransferListProps,\n type RecursicaTransferListItem,\n type RecursicaTransferListData,\n} from \"@recursica/adapter-common\";\n\nexport type { RecursicaTransferListItem, RecursicaTransferListData };\n\nexport interface RecursicaTransferListProps\n extends Omit<\n FormControlWrapperProps,\n | \"children\"\n | \"overStyled\"\n | \"controlMaxWidth\"\n | \"controlMinWidth\"\n | \"onChange\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaTransferListProps {\n /** Disables the whole control */\n disabled?: boolean;\n}\n\nexport type TransferListProps = RecursicaOverStyled<RecursicaTransferListProps>;\n\n/** Single/double chevron glyphs for the transfer buttons; flipped via CSS for the \"left\" direction\n * so only one path needs to be maintained, same approach as Tree's `ExpandGlyph`. */\nfunction ChevronIcon({ direction }: { direction: \"left\" | \"right\" }) {\n return (\n <svg\n className={styles.chevron}\n data-direction={direction}\n viewBox=\"0 0 16 16\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 3l5 5-5 5\" />\n </svg>\n );\n}\n\nfunction ChevronsIcon({ direction }: { direction: \"left\" | \"right\" }) {\n return (\n <svg\n className={styles.chevron}\n data-direction={direction}\n viewBox=\"0 0 16 16\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 3l5 5-5 5M9 3l5 5-5 5\" />\n </svg>\n );\n}\n\n/** Splits items into grouped/ungrouped buckets, same shape Forge's reference groups by `group`. */\nfunction groupItems(items: RecursicaTransferListItem[]) {\n const groups: Record<string, RecursicaTransferListItem[]> = {};\n const ungrouped: RecursicaTransferListItem[] = [];\n items.forEach((item) => {\n if (item.group) {\n (groups[item.group] ??= []).push(item);\n } else {\n ungrouped.push(item);\n }\n });\n return { groups, ungrouped };\n}\n\nexport const TransferList = forwardRef<HTMLDivElement, TransferListProps>(\n function TransferList(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n assistiveText,\n description,\n helperText,\n assistiveWithIcon,\n error,\n required,\n id: userProvidedId,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n\n data: controlledData,\n defaultData,\n onChange,\n sourceLabel = \"Available\",\n targetLabel = \"Selected\",\n searchable = true,\n searchPlaceholder = \"Filter items...\",\n disabled = false,\n\n className,\n style,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const generatedId = useId();\n const id = userProvidedId || `recursica-transfer-list-${generatedId}`;\n\n // Manage internal state for uncontrolled mode\n const [internalData, setInternalData] = useState<RecursicaTransferListData>(\n () => defaultData ?? controlledData ?? [[], []],\n );\n const effectiveData =\n controlledData !== undefined ? controlledData : internalData;\n\n const handleChange = useCallback(\n (newData: RecursicaTransferListData) => {\n if (controlledData === undefined) {\n setInternalData(newData);\n }\n onChange?.(newData);\n },\n [controlledData, onChange],\n );\n\n const [sourceSearch, setSourceSearch] = useState(\"\");\n const [targetSearch, setTargetSearch] = useState(\"\");\n const [sourceSelected, setSourceSelected] = useState<Set<string>>(\n () => new Set(),\n );\n const [targetSelected, setTargetSelected] = useState<Set<string>>(\n () => new Set(),\n );\n\n const filteredSource = useMemo(() => {\n if (!sourceSearch) return effectiveData[0];\n const query = sourceSearch.toLowerCase();\n return effectiveData[0].filter((item) =>\n item.label.toLowerCase().includes(query),\n );\n }, [effectiveData, sourceSearch]);\n\n const filteredTarget = useMemo(() => {\n if (!targetSearch) return effectiveData[1];\n const query = targetSearch.toLowerCase();\n return effectiveData[1].filter((item) =>\n item.label.toLowerCase().includes(query),\n );\n }, [effectiveData, targetSearch]);\n\n const transferToTarget = useCallback(() => {\n if (sourceSelected.size === 0) return;\n const newSource = effectiveData[0].filter(\n (item) => !sourceSelected.has(item.value),\n );\n const moved = effectiveData[0].filter((item) =>\n sourceSelected.has(item.value),\n );\n setSourceSelected(new Set());\n handleChange([newSource, [...effectiveData[1], ...moved]]);\n }, [effectiveData, sourceSelected, handleChange]);\n\n const transferToSource = useCallback(() => {\n if (targetSelected.size === 0) return;\n const newTarget = effectiveData[1].filter(\n (item) => !targetSelected.has(item.value),\n );\n const moved = effectiveData[1].filter((item) =>\n targetSelected.has(item.value),\n );\n setTargetSelected(new Set());\n handleChange([[...effectiveData[0], ...moved], newTarget]);\n }, [effectiveData, targetSelected, handleChange]);\n\n const transferAllToTarget = useCallback(() => {\n if (effectiveData[0].length === 0) return;\n setSourceSelected(new Set());\n handleChange([[], [...effectiveData[1], ...effectiveData[0]]]);\n }, [effectiveData, handleChange]);\n\n const transferAllToSource = useCallback(() => {\n if (effectiveData[1].length === 0) return;\n setTargetSelected(new Set());\n handleChange([[...effectiveData[0], ...effectiveData[1]], []]);\n }, [effectiveData, handleChange]);\n\n const toggleSourceItem = useCallback((value: string) => {\n setSourceSelected((prev) => {\n const next = new Set(prev);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n }, []);\n\n const toggleTargetItem = useCallback((value: string) => {\n setTargetSelected((prev) => {\n const next = new Set(prev);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n }, []);\n\n const renderPane = (\n paneId: string,\n paneLabel: string,\n items: RecursicaTransferListItem[],\n allItems: RecursicaTransferListItem[],\n selected: Set<string>,\n onToggle: (value: string) => void,\n search: string,\n onSearchChange: (value: string) => void,\n ) => {\n const { groups, ungrouped } = groupItems(items);\n const groupNames = Object.keys(groups).sort();\n const countText =\n selected.size > 0\n ? `${selected.size} / ${allItems.length}`\n : `${allItems.length}`;\n\n return (\n <div className={styles.pane} data-pane={paneId}>\n <div className={styles.paneHeader}>\n <span>{paneLabel}</span>\n <Badge>{countText}</Badge>\n </div>\n\n {searchable && (\n <div className={styles.paneSearch}>\n <TextField\n value={search}\n onChange={(e) => onSearchChange(e.currentTarget.value)}\n placeholder={searchPlaceholder}\n disabled={disabled}\n aria-label={`Filter ${paneLabel.toLowerCase()}`}\n />\n </div>\n )}\n\n <div className={styles.paneList}>\n {items.length === 0 && (\n <div className={styles.emptyState}>No items</div>\n )}\n\n {ungrouped.length > 0 && (\n <CheckboxGroup>\n {ungrouped.map((item) => (\n <Checkbox\n key={item.value}\n id={`${id}-${paneId}-${item.value}`}\n label={item.label}\n checked={selected.has(item.value)}\n onChange={() => onToggle(item.value)}\n disabled={disabled}\n />\n ))}\n </CheckboxGroup>\n )}\n\n {groupNames.map((groupName) => (\n <CheckboxGroup\n key={groupName}\n label={groupName}\n labelSize=\"small\"\n >\n {groups[groupName].map((item) => (\n <Checkbox\n key={item.value}\n id={`${id}-${paneId}-${item.value}`}\n label={item.label}\n checked={selected.has(item.value)}\n onChange={() => onToggle(item.value)}\n disabled={disabled}\n />\n ))}\n </CheckboxGroup>\n ))}\n </div>\n </div>\n );\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n ref={ref}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n description={description}\n helperText={helperText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n id={id}\n className={wrapperClass}\n style={style}\n overStyled={overStyled as true}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={effectiveData[1].map((item) => item.label)}\n readOnlyNativeProps={props}\n activeComponent={\n <div\n {...(sanitizedProps as Record<string, unknown>)}\n className={styles.root}\n data-disabled={disabled ? \"true\" : undefined}\n data-error={error ? \"true\" : undefined}\n >\n <div className={styles.panes}>\n {renderPane(\n \"source\",\n sourceLabel,\n filteredSource,\n effectiveData[0],\n sourceSelected,\n toggleSourceItem,\n sourceSearch,\n setSourceSearch,\n )}\n\n <div className={styles.transferColumn}>\n <Button\n variant=\"outline\"\n size=\"small\"\n icon={<ChevronsIcon direction=\"right\" />}\n aria-label={`Move all to ${targetLabel}`}\n disabled={disabled || effectiveData[0].length === 0}\n onClick={transferAllToTarget}\n />\n <Button\n variant=\"outline\"\n size=\"small\"\n icon={<ChevronIcon direction=\"right\" />}\n aria-label={`Move selected to ${targetLabel}`}\n disabled={disabled || sourceSelected.size === 0}\n onClick={transferToTarget}\n />\n <Button\n variant=\"outline\"\n size=\"small\"\n icon={<ChevronIcon direction=\"left\" />}\n aria-label={`Move selected to ${sourceLabel}`}\n disabled={disabled || targetSelected.size === 0}\n onClick={transferToSource}\n />\n <Button\n variant=\"outline\"\n size=\"small\"\n icon={<ChevronsIcon direction=\"left\" />}\n aria-label={`Move all to ${sourceLabel}`}\n disabled={disabled || effectiveData[1].length === 0}\n onClick={transferAllToSource}\n />\n </div>\n\n {renderPane(\n \"target\",\n targetLabel,\n filteredTarget,\n effectiveData[1],\n targetSelected,\n toggleTargetItem,\n targetSearch,\n setTargetSearch,\n )}\n </div>\n </div>\n }\n />\n );\n },\n);\n\nTransferList.displayName = \"TransferList\";\n","import React, { forwardRef, useEffect } from \"react\";\nimport {\n Tree as MantineTree,\n useTree,\n getTreeExpandedState,\n type RenderTreeNodePayload,\n} from \"@mantine/core\";\nimport { useMergedRef } from \"@mantine/hooks\";\nimport {\n filterStylingProps,\n mergeClassNames,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaTreeProps } from \"@recursica/adapter-common\";\nimport { Button } from \"../Button/Button\";\nimport styles from \"./Tree.module.css\";\n\nexport type TreeProps = RecursicaOverStyled<\n RecursicaTreeProps & Omit<React.ComponentPropsWithoutRef<\"ul\">, \"children\">\n>;\n\n/** Simple chevron glyph; rotates via the row's `[data-expanded]` in CSS (`.row[data-expanded]\n * .expandGlyph`) — this reaches the glyph regardless of how deeply `Button` nests it internally,\n * since it's a plain descendant-combinator selector, not dependent on Button's own DOM structure.\n * Uses `currentColor` so it always matches Button's own tokened icon color for the \"text\" variant. */\nfunction ExpandGlyph() {\n return (\n <svg\n className={styles.expandGlyph}\n viewBox=\"0 0 16 16\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M5 3l5 5-5 5\" />\n </svg>\n );\n}\n\n/** Curried so the fixed-shape `renderNode` callback (Mantine controls its signature) can still\n * close over `disabled`, which isn't part of `RenderTreeNodePayload`. */\nfunction createRenderTreeNode(disabled: boolean) {\n return function renderTreeNode({\n node,\n hasChildren,\n expanded,\n selected,\n tree,\n elementProps,\n }: RenderTreeNodePayload) {\n return (\n <div\n {...elementProps}\n className={styles.row}\n data-has-children={hasChildren || undefined}\n data-expanded={hasChildren && expanded ? true : undefined}\n >\n {/* The only element that toggles expand/collapse on click — independent of selection,\n which `elementProps.onClick` (spread onto `.row` above) handles for the rest of the\n row. Stops propagation so the click never also reaches `.row`'s own handler and\n selects the node. Never independently focusable/tab-stoppable (tabIndex={-1},\n aria-hidden), so the row stays the only focusable element and this button never\n shows its own focus state. `onMouseDown` prevents the browser's default\n click-focuses-the-button behavior (tabIndex={-1} only removes it from the tab\n order, it doesn't stop a direct mouse click from focusing it) — without this, a\n click here leaves the (aria-hidden) button focused, which browsers now flag as an\n accessibility violation (\"focus must not be hidden from assistive technology\").\n Always rendered, even for leaf nodes, so every row reserves the same layout space;\n CSS hides it (visibility, not display) when there are no children to toggle. Guards\n `disabled` itself (not just via the CSS `pointer-events: none` on `.root`) since this\n handler bypasses Mantine's own `expandOnClick`/`selectOnClick` flags entirely by\n calling `tree.toggleExpanded` directly. */}\n <Button\n overStyled\n variant=\"text\"\n size=\"small\"\n icon={<ExpandGlyph />}\n aria-label=\"Toggle subtree\"\n aria-hidden=\"true\"\n tabIndex={-1}\n className={styles.expandButton}\n onMouseDown={(event) => event.preventDefault()}\n onClick={(event) => {\n event.stopPropagation();\n if (disabled) return;\n tree.toggleExpanded(node.value);\n }}\n />\n <span className={styles.label} data-selected={selected || undefined}>\n {node.label}\n </span>\n </div>\n );\n };\n}\n\n/**\n * Recursively renders hierarchical `data` as an expandable/selectable tree.\n *\n * **Recursica Abstract:**\n * Wraps Mantine's `Tree` with a fully custom node renderer so every visual aspect (row box\n * model, selected/unselected colors and typography, indent, item spacing) comes from\n * Recursica's `tree` design tokens rather than Mantine's defaults.\n *\n * **Interaction pattern (fixed, not prop-configurable):** expand/collapse and select are\n * independent — the chevron button toggles a node's subtree only, clicking the rest of a row\n * (or pressing `Enter`/`Space`) selects it only, and `ArrowLeft`/`ArrowRight` toggle expansion\n * only. See `RecursicaTreeProps` for the full breakdown.\n */\nexport const Tree = forwardRef<HTMLUListElement, TreeProps>(function Tree(\n {\n overStyled = false,\n data,\n initialExpandedValues,\n initialSelectedValues,\n multiple = false,\n disabled = false,\n onNodeExpand,\n onNodeCollapse,\n onSelectedChange,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const tree = useTree({\n initialExpandedState: initialExpandedValues\n ? getTreeExpandedState(data, initialExpandedValues)\n : undefined,\n initialSelectedState: initialSelectedValues,\n multiple,\n onNodeExpand,\n onNodeCollapse,\n });\n\n // Mantine's `useTree` tracks selection internally but has no `onSelectedChange` callback of\n // its own; surface one at the Recursica layer by watching the controller's selectedState.\n useEffect(() => {\n onSelectedChange?.(tree.selectedState);\n }, [tree.selectedState, onSelectedChange]);\n\n // `Enter`/`Space` select the focused node. Mantine's own `TreeNode` only wires this for\n // `Space`, and only as an expand toggle (`expandOnSpace`, disabled below) — it has no\n // select-on-key behavior and no `Enter` handling at all, and its key handler lives on the\n // `<li role=\"treeitem\">` itself (not reachable through `renderNode`'s `elementProps`), so this\n // is added as a native listener on the tree root instead. `tree.select` is referentially\n // stable (Mantine wraps it in `useCallback` with no deps), so this effect only re-runs when\n // `disabled` actually changes.\n const rootRef = React.useRef<HTMLUListElement>(null);\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (disabled) return;\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n const treeItem = (event.target as HTMLElement).closest<HTMLElement>(\n '[role=\"treeitem\"]',\n );\n const value = treeItem?.dataset.value;\n if (!value) return;\n event.preventDefault();\n tree.select(value);\n };\n root.addEventListener(\"keydown\", handleKeyDown);\n return () => root.removeEventListener(\"keydown\", handleKeyDown);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree.select, disabled]);\n\n // When disabled, block every keydown at the capture phase — before it can reach either the\n // listener above or Mantine's own internal per-node keydown handling (`ArrowLeft`/`ArrowRight`\n // expand/collapse, baked into `TreeNode` itself with no prop to disable it). A capture-phase\n // `stopPropagation` here keeps the event from ever reaching its target, so neither listener\n // fires — this is the only reachable way to block Mantine's internal handling for a component\n // with no `disabled` concept of its own. Mouse clicks are separately blocked via `pointer-\n // events: none` in CSS (`.root[data-disabled]`); this effect only needs to cover keyboard.\n useEffect(() => {\n const root = rootRef.current;\n if (!root || !disabled) return;\n const blockAllKeydown = (event: KeyboardEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n root.addEventListener(\"keydown\", blockAllKeydown, { capture: true });\n return () =>\n root.removeEventListener(\"keydown\", blockAllKeydown, { capture: true });\n }, [disabled]);\n const mergedRef = useMergedRef(ref, rootRef);\n\n const restRecord = sanitizedProps as Record<string, unknown>;\n const classNameProp = restRecord.className as string | undefined;\n const rootClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineTree\n ref={mergedRef}\n {...(sanitizedProps as unknown as Record<string, unknown>)}\n data={data}\n tree={tree}\n expandOnClick={false}\n selectOnClick={!disabled}\n expandOnSpace={false}\n renderNode={createRenderTreeNode(disabled)}\n data-disabled={disabled || undefined}\n classNames={mergeClassNames(\n { root: rootClass, node: styles.node, subtree: styles.subtree },\n restRecord.classNames as Partial<Record<string, string>> | undefined,\n )}\n />\n );\n});\n\nTree.displayName = \"Tree\";\n","import \"@recursica/adapter-common/style.css\";\nimport * as rawComponents from \"./components\";\nimport { wrapComponent } from \"@recursica/adapter-common\";\n\nexport * from \"@recursica/adapter-common\";\n\n// Expose unwrapped structural layout primitives to preserve their polymorphic types\nexport const Flex = rawComponents.Flex;\nexport const Grid = rawComponents.Grid;\nexport const GridCol = rawComponents.GridCol;\nexport const Group = rawComponents.Group;\nexport const Stack = rawComponents.Stack;\nexport const Container = rawComponents.Container;\nexport const Link = rawComponents.Link;\nexport const Text = rawComponents.Text;\n\n// Statically wrap and export components to inject overStyled visual highlight in dev mode\nexport const Accordion = wrapComponent(\n rawComponents.Accordion,\n) as typeof rawComponents.Accordion;\nexport const AccordionItem = wrapComponent(\n rawComponents.AccordionItem,\n) as typeof rawComponents.AccordionItem;\nexport const AccordionControl = wrapComponent(\n rawComponents.AccordionControl,\n) as typeof rawComponents.AccordionControl;\nexport const AccordionPanel = wrapComponent(\n rawComponents.AccordionPanel,\n) as typeof rawComponents.AccordionPanel;\nexport const AssistiveElement = wrapComponent(\n rawComponents.AssistiveElement,\n) as typeof rawComponents.AssistiveElement;\nexport const AutoComplete = wrapComponent(\n rawComponents.AutoComplete,\n) as typeof rawComponents.AutoComplete;\nexport const Avatar = wrapComponent(\n rawComponents.Avatar,\n) as typeof rawComponents.Avatar;\nexport const Badge = wrapComponent(\n rawComponents.Badge,\n) as typeof rawComponents.Badge;\nexport const Breadcrumb = wrapComponent(\n rawComponents.Breadcrumb,\n) as typeof rawComponents.Breadcrumb;\nexport const Button = wrapComponent(\n rawComponents.Button,\n) as typeof rawComponents.Button;\nexport const Card = wrapComponent(\n rawComponents.Card,\n) as typeof rawComponents.Card;\nexport const Checkbox = wrapComponent(\n rawComponents.Checkbox,\n) as typeof rawComponents.Checkbox;\nexport const CheckboxGroup = wrapComponent(\n rawComponents.CheckboxGroup,\n) as typeof rawComponents.CheckboxGroup;\nexport const Chip = wrapComponent(\n rawComponents.Chip,\n) as typeof rawComponents.Chip;\nexport const DatePicker = wrapComponent(\n rawComponents.DatePicker,\n) as typeof rawComponents.DatePicker;\nexport const Dropdown = wrapComponent(\n rawComponents.Dropdown,\n) as typeof rawComponents.Dropdown;\nexport const FileInput = wrapComponent(\n rawComponents.FileInput,\n) as typeof rawComponents.FileInput;\nexport const FileUpload = wrapComponent(\n rawComponents.FileUpload,\n) as typeof rawComponents.FileUpload;\nexport const FormControlLayout = wrapComponent(\n rawComponents.FormControlLayout,\n) as typeof rawComponents.FormControlLayout;\nexport const Heading = wrapComponent(\n rawComponents.Heading,\n) as typeof rawComponents.Heading;\nexport const HoverCard = wrapComponent(\n rawComponents.HoverCard,\n) as typeof rawComponents.HoverCard;\nexport const Loader = wrapComponent(\n rawComponents.Loader,\n) as typeof rawComponents.Loader;\nexport const Label = wrapComponent(\n rawComponents.Label,\n) as typeof rawComponents.Label;\nexport const Menu = wrapComponent(\n rawComponents.Menu,\n) as typeof rawComponents.Menu;\nexport const Modal = wrapComponent(\n rawComponents.Modal,\n) as typeof rawComponents.Modal;\nexport const NumberInput = wrapComponent(\n rawComponents.NumberInput,\n) as typeof rawComponents.NumberInput;\nexport const Pagination = wrapComponent(\n rawComponents.Pagination,\n) as typeof rawComponents.Pagination;\nexport const Panel = wrapComponent(\n rawComponents.Panel,\n) as typeof rawComponents.Panel;\nexport const PanelFooter = wrapComponent(\n rawComponents.PanelFooter,\n) as typeof rawComponents.PanelFooter;\nexport const Popover = wrapComponent(\n rawComponents.Popover,\n) as typeof rawComponents.Popover;\nexport const Radio = wrapComponent(\n rawComponents.Radio,\n) as typeof rawComponents.Radio;\nexport const RadioGroup = wrapComponent(\n rawComponents.RadioGroup,\n) as typeof rawComponents.RadioGroup;\nexport const ReadOnlyField = wrapComponent(\n rawComponents.ReadOnlyField,\n) as typeof rawComponents.ReadOnlyField;\nexport const SegmentedControl = wrapComponent(\n rawComponents.SegmentedControl,\n) as typeof rawComponents.SegmentedControl;\nexport const Slider = wrapComponent(\n rawComponents.Slider,\n) as typeof rawComponents.Slider;\nexport const Stepper = wrapComponent(\n rawComponents.Stepper,\n) as typeof rawComponents.Stepper;\nexport const Switch = wrapComponent(\n rawComponents.Switch,\n) as typeof rawComponents.Switch;\nexport const SwitchGroup = wrapComponent(\n rawComponents.SwitchGroup,\n) as typeof rawComponents.SwitchGroup;\nexport const Table = wrapComponent(\n rawComponents.Table,\n) as typeof rawComponents.Table;\nexport const Tabs = wrapComponent(\n rawComponents.Tabs,\n) as typeof rawComponents.Tabs;\nexport const TextArea = wrapComponent(\n rawComponents.TextArea,\n) as typeof rawComponents.TextArea;\nexport const TextField = wrapComponent(\n rawComponents.TextField,\n) as typeof rawComponents.TextField;\nexport const TimePicker = wrapComponent(\n rawComponents.TimePicker,\n) as typeof rawComponents.TimePicker;\nexport const Timeline = wrapComponent(\n rawComponents.Timeline,\n) as typeof rawComponents.Timeline;\nexport const TimelineItem = wrapComponent(\n rawComponents.TimelineItem,\n) as typeof rawComponents.TimelineItem;\nexport const Toast = wrapComponent(\n rawComponents.Toast,\n) as typeof rawComponents.Toast;\nexport const Tooltip = wrapComponent(\n rawComponents.Tooltip,\n) as typeof rawComponents.Tooltip;\nexport const TransferList = wrapComponent(\n rawComponents.TransferList,\n) as typeof rawComponents.TransferList;\nexport const Tree = wrapComponent(\n rawComponents.Tree,\n) as typeof rawComponents.Tree;\n\nexport type {\n RecursicaCheckboxGroupProps,\n RecursicaDatePickerProps,\n RecursicaDropdownProps,\n RecursicaNumberInputProps,\n RecursicaRadioGroupProps,\n RecursicaReadOnlyFieldProps,\n RecursicaReadOnlyTextFieldProps,\n RecursicaSliderProps,\n RecursicaSwitchGroupProps,\n RecursicaTextAreaProps,\n RecursicaTextFieldProps,\n RecursicaTimePickerProps,\n} from \"./components\";\n"],"names":["k","P","d","w","b","t","n","o","s","r","c","u","f","l","E","e","p","x","i","m","a","L","B","N","T","y","g","_","G","A","I","O","v","M","R","W","j","H","z","Y","q","X","K","$","F","S","U","C","h","BLOCKED_STYLING_KEYS","LAYOUT_PROPS","SPACING_MAP","mapLayoutProps","props","mapped","key","value","filterStylingProps","overStyled","sanitized","prop","mapVariant","AccordionBase","variant","rest","resolvedVariant","sanitizedProps","restRecord","mergedClassNames","mergeClassNames","styles","classNameProp","jsx","MantineAccordion","AccordionItem","forwardRef","title","leftIcon","divider","children","disabled","ref","finalClass","jsxs","Fragment","AccordionControl","AccordionPanel","UNSUPPORTED_PROPS","omitUnsupportedProps","Accordion","InfoIcon","AlertIcon","AssistiveElement","assistiveVariant","assistiveWithIcon","className","role","rootClass","IconComponent","Label","labelSize","labelAlignment","required","labelOptionalText","labelWithEditIcon","labelActionArea","onLabelEditClick","resolvedAlignment","resolvedOptionalText","Input","FormControlLayout","formLayout","controlMaxWidth","controlMinWidth","leftSection","style","shouldRenderLeft","FormControlWrapper","label","description","assistiveText","error","withAsterisk","userProvidedId","labelElement","generatedId","useId","id","labelId","resolvedAssistive","assistiveId","errorId","content","React","labelNode","ReadOnlyTextField","Box","ReadOnlyField","type","emptyValueComponent","Renderer","EmptyValueRenderer","displayValue","wrapperClass","WithReadOnlyWrapper","readOnly","readOnlyComponent","readOnlyType","readOnlyValue","readOnlyNativeProps","activeComponent","wrapperProps","renderRichOption","option","classNames","wrapItemText","leadingIcon","supportingText","displayLabel","optionTextClassName","AutoComplete","defaultValue","data","renderOption","normalizedData","normalizeComboboxData","optionClassNames","MantineAutocomplete","input","_Avatar","size","icon","src","mapSize","computedStyle","MantineAvatar","Avatar","createPolymorphicComponent","_Badge","MantineBadge","Badge","Breadcrumb","separator","markCurrentPageItem","callerAttributes","mergedAttributes","MantineBreadcrumbs","Loader","animate","resolvedSize","MantineLoader","hasVisibleChildren","_Button","loaderVariant","loaderSize","useRecursicaLoader","hasLeftSection","hasRightSection","hasVisibleText","isIconOnly","contentType","userLoaderProps","resolvedLoaderSize","withCallerOverride","mergedLoaderProps","MantineButton","Button","CardBase","MantineCard","CardSection","HEADER_FOOTER_UNSUPPORTED_PROPS","CardHeader","CardFooter","CardContent","PolymorphicCard","_card","Card","CheckboxGroup","MantineCheckbox","Checkbox","isChecked","roNode","checkboxNode","CloseIcon","Chip","onDelete","deleteLabel","deleteTabIndex","deleteIconRef","checked","tabIndex","ariaHidden","dataError","isInteractive","computedWrapperProps","MantineChip","Container","classNamesProp","MantineContainer","CalendarIcon","DatePicker","highlightToday","valueFormat","placeholder","popoverPropsInput","consumerPopoverProps","consumerPopoverClassNames","mergedPopoverProps","readOnlyDate","getFormattedDate","DatePickerInput","Dropdown","containerWidth","clearButtonProps","consumerClearButtonProps","mergedClearButtonProps","injectedStyles","MantineSelect","UploadIcon","ClearIcon","FileInput","files","onFilesAdded","onFileRemove","accept","multiple","maxSize","maxFiles","onFilesRejected","invalidFileTypeMessage","maxFilesMessage","clearIcon","browseLabel","removeFileLabel","clearLabel","interactive","hasFiles","inputRef","useRef","invalidTypeRejected","setInvalidTypeRejected","useState","tooManyFilesRejected","setTooManyFilesRejected","handleFiles","incoming","list","effectiveMaxFiles","currentCount","accepted","rejected","hasInvalidType","hasTooMany","file","isInvalidType","fileMatchesAccept","isTooLarge","wouldExceedMax","dragCounterRef","isDragging","setIsDragging","handleDragEnter","event","handleDragLeave","handleDragOver","handleDrop","openFilePicker","_a","handleRootKeyDown","handleInputChange","handleClearAll","item","activeChipIndex","setActiveChipIndex","deleteIconRefs","prevFileCountRef","useEffect","count","nextIndex","handleChipRowKeyDown","effectiveError","index","itemId","el","FileUpload","dropzoneLabel","browseButtonLabel","handleFileListKeyDown","_Flex","gap","rowGap","columnGap","MantineFlex","Flex","_Grid","gutter","mappedGutter","mappedRest","MantineGrid","GridBase","_GridCol","GridCol","Grid","Group","MantineGroup","Heading","order","mergedClassName","MantineTitle","HoverCardBase","withBeak","position","arrowSize","withArrow","MantineHoverCard","HoverCardTarget","HoverCardDropdown","HoverCard","_Link","MantineAnchor","Link","MenuBase","maxHeight","menuRestRecord","callerStyles","mergedStyles","MantineMenu","MenuTarget","MenuDropdown","_MenuItem","MenuItem","MenuDivider","MenuLabel","MenuSubBase","MenuSubTarget","_MenuSubItem","MenuSubItem","MenuSubDropdown","MenuSub","Menu","ModalInner","withCloseButton","overlayProps","withOverlay","closeButtonProps","MantineModal","ModalBody","ModalFooter","onScroll","internalRef","scrolledTop","setScrolledTop","scrolledBottom","setScrolledBottom","checkScroll","scrollTop","scrollHeight","clientHeight","handleScroll","footer","bodyChildren","child","node","MODAL_ROOT_UNSUPPORTED_PROPS","ModalRoot","ModalOverlay","MODAL_CONTENT_UNSUPPORTED_PROPS","ModalContent","ModalHeader","ModalTitle","MODAL_CLOSE_BUTTON_UNSUPPORTED_PROPS","ModalCloseButton","Modal","NumberInput","hideControls","MantineNumberInput","NextPath","PrevPath","FirstPath","LastPath","paths","PaginationIcon","NextWithLabel","PrevWithLabel","FirstWithLabel","LastWithLabel","usePaginationClassNames","_PaginationRoot","stylingParams","MantinePagination","_PaginationNext","withLabel","computedIcon","_PaginationPrevious","_PaginationFirst","_PaginationLast","_Pagination","getControlProps","withLabels","mergedGetControlProps","control","baseProps","_PaginationControl","_PaginationDots","Pagination","PanelBase","placement","keepMounted","wrapHeaderText","MantineDrawer","PanelFooter","finalClassName","PanelRoot","PanelOverlay","PanelContent","PanelHeader","PanelTitle","PanelCloseButton","PanelBody","Panel","PopoverBase","resolvedWithArrow","MantinePopover","PopoverTarget","PopoverDropdown","Popover","RadioGroup","MantineRadio","RadioIcon","Radio","radioNode","useSegmentedControlClassNames","_SegmentedControl","orientation","fullWidth","mappedData","MantineSegmentedControl","SegmentedControl","SliderReadOnlyValue","display","Slider","tooltipLabel","trailingIcon","showInput","showMinMaxLabels","min","max","minLabel","maxLabel","step","onChange","onChangeEnd","internalValue","setInternalValue","resolvedValue","isRange","inputValue","setInputValue","handleValueChange","val","valStr","parsed","clamped","handleInputBlur","handleLowerInputChange","current","handleUpperInputChange","handleRangeInputBlur","trailingIconEl","MantineRangeSlider","MantineSlider","_Stack","MantineStack","Stack","_Stepper","MantineStepper","_StepperStep","Stepper","SwitchGroup","MantineSwitch","Switch","thumbIcon","mergeStyles","FinalThumbIcon","CheckIcon","switchNode","ChevronUpIcon","ChevronDownIcon","TableBase","MantineTable","TableThead","TableTbody","TableTr","selected","TableTh","sorted","TableTd","TableTfoot","TableCaption","TableScrollContainer","Table","_Tabs","MantineTabs","_TabsList","_TabsTab","_TabsPanel","Tabs","_Text","MantineText","Text","TextArea","MantineTextarea","TextField","BareDropdown","AM_PM_DATA","getHour","hour","withHour","formatReadOnlyTime","hourStr","minute","second","hour24","isPM","hour12","setNativeSelectValue","nativeSetter","TimePicker","withSeconds","minTime","maxTime","amPmRef","emitChange","next","handleFieldChange","handleMeridiemChange","wantsPM","nextHour","MantineTimePicker","TimelineItem","timestamp","bulletVariant","MantineTimelineItem","TimelineInner","MantineTimeline","Timeline","Toast","MantineNotification","TooltipBase","MantineTooltip","TooltipFloating","Tooltip","ChevronIcon","direction","ChevronsIcon","groupItems","items","groups","ungrouped","TransferList","helperText","controlledData","defaultData","sourceLabel","targetLabel","searchable","searchPlaceholder","internalData","setInternalData","effectiveData","handleChange","useCallback","newData","sourceSearch","setSourceSearch","targetSearch","setTargetSearch","sourceSelected","setSourceSelected","targetSelected","setTargetSelected","filteredSource","useMemo","query","filteredTarget","transferToTarget","newSource","moved","transferToSource","newTarget","transferAllToTarget","transferAllToSource","toggleSourceItem","prev","toggleTargetItem","renderPane","paneId","paneLabel","allItems","onToggle","search","onSearchChange","groupNames","countText","groupName","ExpandGlyph","createRenderTreeNode","hasChildren","expanded","tree","elementProps","Tree","initialExpandedValues","initialSelectedValues","onNodeExpand","onNodeCollapse","onSelectedChange","useTree","getTreeExpandedState","rootRef","root","handleKeyDown","treeItem","blockAllKeydown","mergedRef","useMergedRef","MantineTree","rawComponents.Flex","rawComponents.Grid","rawComponents.GridCol","rawComponents.Group","rawComponents.Stack","rawComponents.Container","rawComponents.Link","rawComponents.Text","wrapComponent","rawComponents.Accordion","rawComponents.AccordionItem","rawComponents.AccordionControl","rawComponents.AccordionPanel","rawComponents.AssistiveElement","rawComponents.AutoComplete","rawComponents.Avatar","rawComponents.Badge","rawComponents.Breadcrumb","rawComponents.Button","rawComponents.Card","rawComponents.Checkbox","rawComponents.CheckboxGroup","rawComponents.Chip","rawComponents.DatePicker","rawComponents.Dropdown","rawComponents.FileInput","rawComponents.FileUpload","rawComponents.FormControlLayout","rawComponents.Heading","rawComponents.HoverCard","rawComponents.Loader","rawComponents.Label","rawComponents.Menu","rawComponents.Modal","rawComponents.NumberInput","rawComponents.Pagination","rawComponents.Panel","rawComponents.PanelFooter","rawComponents.Popover","rawComponents.Radio","rawComponents.RadioGroup","rawComponents.ReadOnlyField","rawComponents.SegmentedControl","rawComponents.Slider","rawComponents.Stepper","rawComponents.Switch","rawComponents.SwitchGroup","rawComponents.Table","rawComponents.Tabs","rawComponents.TextArea","rawComponents.TextField","rawComponents.TimePicker","rawComponents.Timeline","rawComponents.TimelineItem","rawComponents.Toast","rawComponents.Tooltip","rawComponents.TransferList","rawComponents.Tree"],"mappings":"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4B;AACF,GACa7P,KAAciO;AAAAA,EACzB6B;AACF,GACa/O,KAAUkN;AAAAA,EACrB8B;AACF,GACa5O,KAAQ8M;AAAAA,EACnB+B;AACF,GACahP,KAAaiN;AAAAA,EACxBgC;AACF,GACa1jB,KAAgB0hB;AAAAA,EAC3BiC;AACF,GACavO,KAAmBsM;AAAAA,EAC9BkC;AACF,GACarO,KAASmM;AAAAA,EACpBmC;AACF,GACajM,KAAU8J;AAAAA,EACrBoC;AACF,GACa/L,KAAS2J;AAAAA,EACpBqC;AACF,GACalM,KAAc6J;AAAAA,EACzBsC;AACF,GACa7K,KAAQuI;AAAAA,EACnBuC;AACF,GACaxK,KAAOiI;AAAAA,EAClBwC;AACF,GACarK,KAAW6H;AAAAA,EACtByC;AACF,GACapK,KAAY2H;AAAAA,EACvB0C;AACF,GACatJ,KAAa4G;AAAAA,EACxB2C;AACF,GACarI,KAAW0F;AAAAA,EACtB4C;AACF,GACa5I,KAAegG;AAAAA,EAC1B6C;AACF,GACatI,KAAQyF;AAAAA,EACnB8C;AACF,GACalI,KAAUoF;AAAAA,EACrB+C;AACF,GACa3H,KAAe4E;AAAAA,EAC1BgD;AACF,GACaxE,KAAOwB;AAAAA,EAClBiD;AACF;","x_google_ignoreList":[0]}