@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,430 @@
1
+ /* Brand-layer exemptions (recursica-allow-brand) — see recursica-token-analyzer README.md.
2
+ * Global hover/focus/disabled state tokens (recursica_variables_scoped.css header, 'Hover & Focus states' / 'Disabled state' — implicit rule for every interactive element; components must not define their own per-component treatment).
3
+ * recursica-allow-brand: --recursica_brand_states_focus_blur
4
+ * recursica-allow-brand: --recursica_brand_states_focus_border-size
5
+ * recursica-allow-brand: --recursica_brand_states_focus_color
6
+ * recursica-allow-brand: --recursica_brand_states_focus_margin
7
+ * recursica-allow-brand: --recursica_brand_states_hover_color
8
+ * recursica-allow-brand: --recursica_brand_states_hover_opacity
9
+ */
10
+
11
+ /* LAYOUT SPACING OVERRIDES:
12
+ - Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens.
13
+ - Also sets the --autocomplete-control-{max,min}-width hooks consumed inline in AutoComplete.tsx,
14
+ since the token schema no longer provides a single layout-agnostic min/max width. */
15
+ .layoutOverride {
16
+ --form-control-margin-bottom: var(
17
+ --recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_top-bottom-margin
18
+ );
19
+ --autocomplete-control-max-width: var(
20
+ --recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_max-width
21
+ );
22
+ --autocomplete-control-min-width: var(
23
+ --recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_min-width
24
+ );
25
+ }
26
+
27
+ .layoutOverride[data-form-layout="side-by-side"] {
28
+ --form-control-margin-bottom: var(
29
+ --recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_top-bottom-margin
30
+ );
31
+ --autocomplete-control-max-width: var(
32
+ --recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_max-width
33
+ );
34
+ --autocomplete-control-min-width: var(
35
+ --recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_min-width
36
+ );
37
+ }
38
+
39
+ /* HARDCODED VALUES:
40
+ - border-style: solid. Native structural rendering rule.
41
+ - outline: none. Bypassing browser focus rings to rely strictly on Recursica focus states natively.
42
+ - flex/layout: display: flex on the root wrapper safely encapsulating internal section rendering.
43
+ */
44
+
45
+ /* EXEMPTIONS:
46
+ - border-size is constant across disabled/error states — only border-color changes; the
47
+ disabled/error border-size tokens are never applied by design. */
48
+ /* recursica-ignore: --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_border-size */
49
+ /* recursica-ignore: --recursica_ui-kit_components_autocomplete_variants_states_error_properties_border-size */
50
+
51
+ .root {
52
+ display: flex;
53
+ position: relative;
54
+ width: 100%;
55
+ min-height: var(--recursica_ui-kit_components_autocomplete_properties_height);
56
+
57
+ /* Override Mantine native Input variables governing section spacing padding mathematics safely */
58
+ --input-left-section-size: calc(
59
+ var(
60
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
61
+ ) +
62
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
63
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
64
+ );
65
+ --input-right-section-size: calc(
66
+ var(
67
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
68
+ ) +
69
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
70
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
71
+ );
72
+ }
73
+
74
+ .input {
75
+ /* Structural Overrides */
76
+ width: 100%;
77
+ box-sizing: border-box;
78
+ margin: 0;
79
+
80
+ /* Box Geometry */
81
+ min-height: var(--recursica_ui-kit_components_autocomplete_properties_height);
82
+ padding-top: var(
83
+ --recursica_ui-kit_components_autocomplete_properties_vertical-padding
84
+ );
85
+ padding-bottom: var(
86
+ --recursica_ui-kit_components_autocomplete_properties_vertical-padding
87
+ );
88
+ padding-left: var(
89
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
90
+ );
91
+ padding-right: var(
92
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
93
+ );
94
+ border-radius: var(
95
+ --recursica_ui-kit_components_autocomplete_properties_border-radius
96
+ );
97
+ border-width: var(
98
+ --recursica_ui-kit_components_autocomplete_properties_border-size
99
+ );
100
+ border-style: solid;
101
+
102
+ /* Strict Typography Unification */
103
+ font-family: var(
104
+ --recursica_ui-kit_components_autocomplete_properties_text_font-family
105
+ );
106
+ font-size: var(
107
+ --recursica_ui-kit_components_autocomplete_properties_text_font-size
108
+ );
109
+ font-style: var(
110
+ --recursica_ui-kit_components_autocomplete_properties_text_font-style
111
+ );
112
+ font-weight: var(
113
+ --recursica_ui-kit_components_autocomplete_properties_text_font-weight
114
+ );
115
+ letter-spacing: var(
116
+ --recursica_ui-kit_components_autocomplete_properties_text_letter-spacing
117
+ );
118
+ line-height: var(
119
+ --recursica_ui-kit_components_autocomplete_properties_text_line-height
120
+ );
121
+ text-decoration: var(
122
+ --recursica_ui-kit_components_autocomplete_properties_text_text-decoration
123
+ );
124
+ text-transform: var(
125
+ --recursica_ui-kit_components_autocomplete_properties_text_text-transform
126
+ );
127
+
128
+ /* Base State Default Execution */
129
+ background-color: var(
130
+ --recursica_ui-kit_components_autocomplete_properties_colors_background-color
131
+ );
132
+ border-color: var(
133
+ --recursica_ui-kit_components_autocomplete_properties_colors_border-color
134
+ );
135
+ color: var(
136
+ --recursica_ui-kit_components_autocomplete_properties_colors_text-color
137
+ );
138
+
139
+ outline: none;
140
+ }
141
+
142
+ .input::placeholder {
143
+ opacity: var(
144
+ --recursica_ui-kit_components_autocomplete_properties_placeholder-opacity
145
+ );
146
+ color: inherit;
147
+ }
148
+
149
+ /* Dynamic Padding Overrides */
150
+ .root[data-with-left-section] .input {
151
+ padding-left: var(--input-left-section-size);
152
+ }
153
+
154
+ .root[data-with-right-section] .input {
155
+ padding-right: var(--input-right-section-size);
156
+ }
157
+
158
+ /* Flexible End-Caps (Icons, actions) */
159
+ .section {
160
+ display: flex;
161
+ align-items: center;
162
+ height: 100%;
163
+ }
164
+
165
+ .section[data-position="left"] {
166
+ justify-content: flex-start;
167
+ padding-left: var(
168
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
169
+ );
170
+ }
171
+
172
+ .section[data-position="right"] {
173
+ justify-content: flex-end;
174
+ padding-right: var(
175
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
176
+ );
177
+ }
178
+
179
+ .section :global(svg) {
180
+ width: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
181
+ height: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
182
+ color: var(
183
+ --recursica_ui-kit_components_autocomplete_properties_colors_leading-icon
184
+ );
185
+ }
186
+
187
+ .section[data-position="right"] :global(svg) {
188
+ color: var(
189
+ --recursica_ui-kit_components_autocomplete_properties_colors_trailing-icon
190
+ );
191
+ }
192
+
193
+ /* Dropdown and Options */
194
+ /* We want to make sure the dropdown inherits font correctly. */
195
+ .dropdown {
196
+ background-color: var(
197
+ --recursica_ui-kit_components_autocomplete_properties_colors_background-color
198
+ );
199
+ border: 1px solid
200
+ var(
201
+ --recursica_ui-kit_components_autocomplete_properties_colors_border-color
202
+ );
203
+ border-radius: var(
204
+ --recursica_ui-kit_components_autocomplete_properties_border-radius
205
+ );
206
+ box-shadow: var(--recursica_ui-kit_components_menu_properties_elevation);
207
+ }
208
+
209
+ .option {
210
+ font-family: var(
211
+ --recursica_ui-kit_components_autocomplete_properties_text_font-family
212
+ );
213
+ font-size: var(
214
+ --recursica_ui-kit_components_autocomplete_properties_text_font-size
215
+ );
216
+ font-weight: var(
217
+ --recursica_ui-kit_components_autocomplete_properties_text_font-weight
218
+ );
219
+ color: var(
220
+ --recursica_ui-kit_components_autocomplete_properties_colors_text-color
221
+ );
222
+ /* Padding/inter-item gap reuse the menu-item component's tokens (same reasoning as the icon/
223
+ supporting-text tokens below) instead of an arbitrary scaled autocomplete padding — matches
224
+ Menu.module.css's `.item` padding + `margin-bottom` gap exactly. */
225
+ padding: var(
226
+ --recursica_ui-kit_components_menu-item_properties_vertical-padding
227
+ )
228
+ var(--recursica_ui-kit_components_menu-item_properties_horizontal-padding);
229
+ margin-bottom: var(--recursica_ui-kit_components_menu_properties_item-gap);
230
+ cursor: pointer;
231
+ }
232
+
233
+ .option:last-of-type {
234
+ margin-bottom: 0;
235
+ }
236
+
237
+ /* No per-option hovered token exists in the schema; use the generic overlay tint (same technique
238
+ as Table/Dropdown) to highlight a hovered-but-not-selected option. Mantine's own
239
+ `data-combobox-selected` here is its transient keyboard-navigation highlight (imperatively
240
+ set/cleared via arrow keys — see use-combobox.mjs's `selectOption`/`clearSelectedItem` — not
241
+ the persistently-chosen value), so it belongs in this hover-equivalent bucket, not the real
242
+ selected-value rule below. */
243
+ .option[data-selected="true"],
244
+ .option[data-selected],
245
+ .option[data-combobox-selected="true"],
246
+ .option[data-combobox-selected],
247
+ .option[data-hovered="true"],
248
+ .option[data-hovered],
249
+ .option:hover {
250
+ background-color: color-mix(
251
+ in srgb,
252
+ var(--recursica_brand_states_hover_color)
253
+ calc(var(--recursica_brand_states_hover_opacity) * 100%),
254
+ transparent
255
+ );
256
+ }
257
+
258
+ /* No dedicated autocomplete-option "selected" token exists in the schema either, but the
259
+ menu-item component's selected-state colors are the closest real token family for the same
260
+ concept (a selected row in a list) — same reuse Dropdown.module.css makes. Despite the name,
261
+ Mantine's `data-combobox-active` is the attribute it sets when an option's value matches the
262
+ current field value (see OptionsDropdown.mjs: `active: checked`) — the actual "this is the
263
+ selected item" flag, distinct from the transient `data-combobox-selected` keyboard-highlight
264
+ grouped with hover above. Keying this rule off `data-combobox-selected` instead (as it
265
+ previously did) is why the selected option only showed a highlight while arrow-key navigating,
266
+ and lost it as soon as the dropdown was reopened normally. */
267
+ .option[data-combobox-active="true"],
268
+ .option[data-combobox-active] {
269
+ background-color: var(
270
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_background-color
271
+ );
272
+ color: var(
273
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_text-color
274
+ );
275
+ }
276
+
277
+ /* Rich option content (leadingIcon/supportingText — see MANTINE_ADAPTER_RICH_OPTION_DATA.md). No
278
+ dedicated autocomplete-option icon or supporting-text token exists in the schema either; reuse
279
+ the menu-item component's tokens, same reasoning as Dropdown.module.css. */
280
+ .optionContent {
281
+ display: flex;
282
+ align-items: center;
283
+ gap: var(--recursica_ui-kit_components_menu-item_properties_icon-text-gap);
284
+ }
285
+
286
+ .optionIcon {
287
+ display: flex;
288
+ flex-shrink: 0;
289
+ width: var(
290
+ --recursica_ui-kit_components_menu-item_properties_icon-leading-size
291
+ );
292
+ height: var(
293
+ --recursica_ui-kit_components_menu-item_properties_icon-leading-size
294
+ );
295
+ color: var(
296
+ --recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_leading-icon-color
297
+ );
298
+ }
299
+
300
+ .optionIcon :global(svg) {
301
+ width: 100%;
302
+ height: 100%;
303
+ }
304
+
305
+ .optionText {
306
+ display: flex;
307
+ flex-direction: column;
308
+ min-width: 0;
309
+ gap: var(--recursica_ui-kit_components_menu-item_properties_text-gap);
310
+ }
311
+
312
+ /* Default: label/supportingText each truncate to a single line with an ellipsis. */
313
+ .optionText > * {
314
+ overflow: clip; /* HARDCODE: `hidden` clips descenders (e.g. "g") when text_line-height is
315
+ tighter than the font's natural ascent+descent; overflow-clip-margin gives ink a small bleed
316
+ allowance while still clipping genuinely overflowing text (see Chip's IMPLEMENTATION_NOTES.md). */
317
+ overflow-clip-margin: 0.35em;
318
+ text-overflow: ellipsis;
319
+ white-space: nowrap;
320
+ }
321
+
322
+ /* Applied alongside .optionText when `wrapItemText` is true — long values wrap onto additional
323
+ lines instead of overflowing the fixed-width dropdown. */
324
+ .optionTextWrap > * {
325
+ overflow: visible;
326
+ text-overflow: clip;
327
+ white-space: normal;
328
+ overflow-wrap: anywhere;
329
+ }
330
+
331
+ .optionSupportingText {
332
+ font-family: var(
333
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-family
334
+ );
335
+ font-size: var(
336
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-size
337
+ );
338
+ font-style: var(
339
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-style
340
+ );
341
+ font-weight: var(
342
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-weight
343
+ );
344
+ letter-spacing: var(
345
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_letter-spacing
346
+ );
347
+ line-height: var(
348
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_line-height
349
+ );
350
+ text-decoration: var(
351
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_text-decoration
352
+ );
353
+ text-transform: var(
354
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_text-transform
355
+ );
356
+ color: var(
357
+ --recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_supporting-text-color
358
+ );
359
+ }
360
+
361
+ /* -------------------------------------
362
+ STATE CASCADE ARCHITECTURE
363
+ -------------------------------------- */
364
+
365
+ /* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
366
+ /* The token schema no longer provides per-component focus colors; apply the generic focus ring
367
+ tokens as a box-shadow ring instead of a color swap. */
368
+ .input:focus-within,
369
+ .input:focus {
370
+ box-shadow:
371
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
372
+ var(--recursica_brand_states_focus_color),
373
+ 0 0 var(--recursica_brand_states_focus_blur)
374
+ var(--recursica_brand_states_focus_margin)
375
+ var(--recursica_brand_states_focus_color);
376
+ }
377
+
378
+ /* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
379
+ .root[data-error] .input {
380
+ border-color: var(
381
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_border-color
382
+ );
383
+ background-color: var(
384
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_background-color
385
+ );
386
+ color: var(
387
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_text-color
388
+ );
389
+ }
390
+
391
+ .root[data-error] .section[data-position="left"] :global(svg) {
392
+ color: var(
393
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_leading-icon
394
+ );
395
+ }
396
+
397
+ .root[data-error] .section[data-position="right"] :global(svg) {
398
+ color: var(
399
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_trailing-icon
400
+ );
401
+ }
402
+
403
+ /* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
404
+ .root[data-disabled] .input {
405
+ border-color: var(
406
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_border-color
407
+ );
408
+ background-color: var(
409
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_background-color
410
+ );
411
+ color: var(
412
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_text-color
413
+ );
414
+ opacity: var(
415
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_opacity
416
+ );
417
+ cursor: not-allowed;
418
+ }
419
+
420
+ .root[data-disabled] .section[data-position="left"] :global(svg) {
421
+ color: var(
422
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_leading-icon
423
+ );
424
+ }
425
+
426
+ .root[data-disabled] .section[data-position="right"] :global(svg) {
427
+ color: var(
428
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_trailing-icon
429
+ );
430
+ }