@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,477 @@
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 --dropdown-control-{max,min}-width hooks consumed inline in Dropdown.tsx, since
14
+ 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_dropdown_variants_layouts_stacked_properties_top-bottom-margin
18
+ );
19
+ --dropdown-control-max-width: var(
20
+ --recursica_ui-kit_components_dropdown_variants_layouts_stacked_properties_max-width
21
+ );
22
+ --dropdown-control-min-width: var(
23
+ --recursica_ui-kit_components_dropdown_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_dropdown_variants_layouts_side-by-side_properties_top-bottom-margin
30
+ );
31
+ --dropdown-control-max-width: var(
32
+ --recursica_ui-kit_components_dropdown_variants_layouts_side-by-side_properties_max-width
33
+ );
34
+ --dropdown-control-min-width: var(
35
+ --recursica_ui-kit_components_dropdown_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
+ - placeholder opacity: 0.5. The dropdown parameters currently lack a dedicated placeholder-opacity variable.
44
+ */
45
+
46
+ /* EXEMPTIONS:
47
+ - border-size is constant across disabled/error states — only border-color changes; the
48
+ disabled/error border-size tokens are never applied by design. */
49
+ /* recursica-ignore: --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_border-size */
50
+ /* recursica-ignore: --recursica_ui-kit_components_dropdown_variants_states_error_properties_border-size */
51
+
52
+ .root {
53
+ display: flex;
54
+ position: relative;
55
+ width: 100%;
56
+ min-height: var(--recursica_ui-kit_components_dropdown_properties_min-height);
57
+
58
+ /* Override Mantine native Input variables governing section spacing padding mathematics safely */
59
+ --input-left-section-size: calc(
60
+ var(--recursica_ui-kit_components_dropdown_properties_horizontal-padding) +
61
+ var(--recursica_ui-kit_components_dropdown_properties_icon-size) +
62
+ var(--recursica_ui-kit_components_dropdown_properties_icon-text-gap)
63
+ );
64
+ --input-right-section-size: calc(
65
+ var(--recursica_ui-kit_components_dropdown_properties_horizontal-padding) +
66
+ var(--recursica_ui-kit_components_dropdown_properties_icon-size) +
67
+ var(--recursica_ui-kit_components_dropdown_properties_icon-text-gap)
68
+ );
69
+ }
70
+
71
+ .input {
72
+ /* Structural Overrides */
73
+ width: 100%;
74
+ box-sizing: border-box;
75
+ margin: 0;
76
+
77
+ /* Box Geometry */
78
+ min-height: var(--recursica_ui-kit_components_dropdown_properties_min-height);
79
+ padding-top: var(
80
+ --recursica_ui-kit_components_dropdown_properties_vertical-padding
81
+ );
82
+ padding-bottom: var(
83
+ --recursica_ui-kit_components_dropdown_properties_vertical-padding
84
+ );
85
+ padding-left: var(
86
+ --recursica_ui-kit_components_dropdown_properties_horizontal-padding
87
+ );
88
+ padding-right: var(
89
+ --recursica_ui-kit_components_dropdown_properties_horizontal-padding
90
+ );
91
+ border-radius: var(
92
+ --recursica_ui-kit_components_dropdown_properties_border-radius
93
+ );
94
+ border-width: var(
95
+ --recursica_ui-kit_components_dropdown_properties_border-size
96
+ );
97
+ border-style: solid;
98
+
99
+ /* Strict Typography Unification */
100
+ font-family: var(
101
+ --recursica_ui-kit_components_dropdown_properties_text_font-family
102
+ );
103
+ font-size: var(
104
+ --recursica_ui-kit_components_dropdown_properties_text_font-size
105
+ );
106
+ font-style: var(
107
+ --recursica_ui-kit_components_dropdown_properties_text_font-style
108
+ );
109
+ font-weight: var(
110
+ --recursica_ui-kit_components_dropdown_properties_text_font-weight
111
+ );
112
+ letter-spacing: var(
113
+ --recursica_ui-kit_components_dropdown_properties_text_letter-spacing
114
+ );
115
+ line-height: var(
116
+ --recursica_ui-kit_components_dropdown_properties_text_line-height
117
+ );
118
+ text-decoration: var(
119
+ --recursica_ui-kit_components_dropdown_properties_text_text-decoration
120
+ );
121
+ text-transform: var(
122
+ --recursica_ui-kit_components_dropdown_properties_text_text-transform
123
+ );
124
+
125
+ /* Base State Default Execution */
126
+ background-color: var(
127
+ --recursica_ui-kit_components_dropdown_properties_colors_background-color
128
+ );
129
+ border-color: var(
130
+ --recursica_ui-kit_components_dropdown_properties_colors_border-color
131
+ );
132
+ color: var(
133
+ --recursica_ui-kit_components_dropdown_properties_colors_text-color
134
+ );
135
+
136
+ outline: none;
137
+ }
138
+
139
+ .input::placeholder {
140
+ /* HARDCODE: Dropdown properties currently missing placeholder-opacity tokens from Figma JSON */
141
+ opacity: 0.5;
142
+ color: inherit;
143
+ }
144
+
145
+ /* Dynamic Padding Overrides */
146
+ .root[data-with-left-section] .input {
147
+ padding-left: var(--input-left-section-size);
148
+ }
149
+
150
+ .root[data-with-right-section] .input {
151
+ padding-right: var(--input-right-section-size);
152
+ }
153
+
154
+ /* Flexible End-Caps (Icons, actions) */
155
+ .section {
156
+ display: flex;
157
+ align-items: center;
158
+ height: 100%;
159
+ }
160
+
161
+ .section[data-position="left"] {
162
+ justify-content: flex-start;
163
+ padding-left: var(
164
+ --recursica_ui-kit_components_dropdown_properties_horizontal-padding
165
+ );
166
+ }
167
+
168
+ .section[data-position="right"] {
169
+ justify-content: flex-end;
170
+ padding-right: var(
171
+ --recursica_ui-kit_components_dropdown_properties_horizontal-padding
172
+ );
173
+ }
174
+
175
+ .section :global(svg) {
176
+ width: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
177
+ height: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
178
+ color: var(
179
+ --recursica_ui-kit_components_dropdown_properties_colors_leading-icon
180
+ );
181
+ }
182
+
183
+ .section[data-position="right"] :global(svg) {
184
+ color: var(
185
+ --recursica_ui-kit_components_dropdown_properties_colors_trailing-icon
186
+ );
187
+ }
188
+
189
+ /* Mantine's own clear button (rendered via `clearButtonProps`, see Dropdown.tsx) is a bare
190
+ `CloseButton` by default — its own module CSS hardcodes a gray icon color and a circular gray
191
+ hover background, neither of which is Recursica-token-driven. The double class selector (same
192
+ specificity-boosting trick as Chip.module.css's `.root.root`) beats that default without
193
+ needing `!important`. Same icon-size/trailing-icon tokens as the rest of this section, same
194
+ focus-visible ring technique as Chip's own `.deleteIcon` — the established inline icon-button
195
+ pattern elsewhere in this adapter. */
196
+ .clearButton.clearButton {
197
+ width: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
198
+ height: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
199
+ min-width: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
200
+ min-height: var(--recursica_ui-kit_components_dropdown_properties_icon-size);
201
+ border-radius: 50%;
202
+ background: transparent;
203
+ color: var(
204
+ --recursica_ui-kit_components_dropdown_properties_colors_trailing-icon
205
+ );
206
+ outline: none;
207
+ }
208
+
209
+ .clearButton.clearButton:hover {
210
+ background: transparent;
211
+ }
212
+
213
+ .clearButton.clearButton:focus-visible {
214
+ box-shadow:
215
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
216
+ var(--recursica_brand_states_focus_color),
217
+ 0 0 var(--recursica_brand_states_focus_blur)
218
+ var(--recursica_brand_states_focus_margin)
219
+ var(--recursica_brand_states_focus_color);
220
+ }
221
+
222
+ /* -------------------------------------
223
+ STATE CASCADE ARCHITECTURE
224
+ -------------------------------------- */
225
+
226
+ /* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
227
+ /* The token schema no longer provides per-component focus colors; apply the generic focus ring
228
+ tokens as a box-shadow ring instead of a color swap. */
229
+ .input:focus-within,
230
+ .input:focus {
231
+ box-shadow:
232
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
233
+ var(--recursica_brand_states_focus_color),
234
+ 0 0 var(--recursica_brand_states_focus_blur)
235
+ var(--recursica_brand_states_focus_margin)
236
+ var(--recursica_brand_states_focus_color);
237
+ }
238
+
239
+ /* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
240
+ .root[data-error] .input {
241
+ border-color: var(
242
+ --recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_border-color
243
+ ) !important;
244
+ background-color: var(
245
+ --recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_background-color
246
+ ) !important;
247
+ color: var(
248
+ --recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_text-color
249
+ ) !important;
250
+ }
251
+
252
+ .root[data-error] .section[data-position="left"] :global(svg) {
253
+ color: var(
254
+ --recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_leading-icon
255
+ ) !important;
256
+ }
257
+
258
+ .root[data-error] .section[data-position="right"] :global(svg) {
259
+ color: var(
260
+ --recursica_ui-kit_components_dropdown_variants_states_error_properties_colors_trailing-icon
261
+ ) !important;
262
+ }
263
+
264
+ /* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
265
+ .root[data-disabled] .input {
266
+ border-color: var(
267
+ --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_border-color
268
+ ) !important;
269
+ background-color: var(
270
+ --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_background-color
271
+ ) !important;
272
+ color: var(
273
+ --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_text-color
274
+ ) !important;
275
+ opacity: var(
276
+ --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_opacity
277
+ ) !important;
278
+ cursor: not-allowed;
279
+ }
280
+
281
+ .root[data-disabled] .section[data-position="left"] :global(svg) {
282
+ color: var(
283
+ --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_leading-icon
284
+ ) !important;
285
+ }
286
+
287
+ .root[data-disabled] .section[data-position="right"] :global(svg) {
288
+ color: var(
289
+ --recursica_ui-kit_components_dropdown_variants_states_disabled_properties_colors_trailing-icon
290
+ ) !important;
291
+ }
292
+
293
+ /* -------------------------------------
294
+ DROPDOWN & OPTIONS ARCHITECTURE
295
+ -------------------------------------- */
296
+
297
+ .dropdown {
298
+ background-color: var(
299
+ --recursica_ui-kit_components_dropdown_properties_colors_background-color
300
+ );
301
+ border: 1px solid
302
+ var(--recursica_ui-kit_components_dropdown_properties_colors_border-color);
303
+ border-radius: var(
304
+ --recursica_ui-kit_components_dropdown_properties_border-radius
305
+ );
306
+ overflow: hidden;
307
+
308
+ /* The visible top/bottom gap before/after the option list was previously left to Mantine's own
309
+ untokenized `--combobox-padding` default (4px) — wire it to the same dropdown vertical-padding
310
+ token the closed control itself uses instead (mirrors the mui-adapter fix to the equivalent
311
+ gap there, which came from MUI's own untokenized 8px `.MuiList-padding` default). */
312
+ padding-top: var(
313
+ --recursica_ui-kit_components_dropdown_properties_vertical-padding
314
+ );
315
+ padding-bottom: var(
316
+ --recursica_ui-kit_components_dropdown_properties_vertical-padding
317
+ );
318
+ }
319
+
320
+ .option {
321
+ font-family: var(
322
+ --recursica_ui-kit_components_dropdown_properties_text_font-family
323
+ );
324
+ font-size: var(
325
+ --recursica_ui-kit_components_dropdown_properties_text_font-size
326
+ );
327
+ font-weight: var(
328
+ --recursica_ui-kit_components_dropdown_properties_text_font-weight
329
+ );
330
+ color: var(
331
+ --recursica_ui-kit_components_dropdown_properties_colors_text-color
332
+ );
333
+ /* Padding/inter-item gap reuse the menu-item component's tokens (same reasoning as the icon/
334
+ supporting-text tokens below) instead of an arbitrary scaled dropdown padding — matches
335
+ Menu.module.css's `.item` padding + `margin-bottom` gap exactly. */
336
+ padding: var(
337
+ --recursica_ui-kit_components_menu-item_properties_vertical-padding
338
+ )
339
+ var(--recursica_ui-kit_components_menu-item_properties_horizontal-padding);
340
+ margin-bottom: var(--recursica_ui-kit_components_menu_properties_item-gap);
341
+ cursor: pointer;
342
+ }
343
+
344
+ .option:last-of-type {
345
+ margin-bottom: 0;
346
+ }
347
+
348
+ /* No per-option hovered token exists in the schema; use the generic overlay tint (same technique
349
+ as Table's row hover) to highlight a hovered-but-not-selected option. */
350
+ .option[data-hovered="true"],
351
+ .option:hover {
352
+ background-color: color-mix(
353
+ in srgb,
354
+ var(--recursica_brand_states_hover_color)
355
+ calc(var(--recursica_brand_states_hover_opacity) * 100%),
356
+ transparent
357
+ );
358
+ }
359
+
360
+ /* No dedicated dropdown-option "selected" token exists in the schema either, but the menu-item
361
+ component's selected-state colors are the closest real token family for the same concept (a
362
+ selected row in a list) — reused here rather than the neutral hover tint above, which is what
363
+ previously made the selected option read as grey instead of Recursica's brand color. Matches
364
+ the mui-adapter fix for the same gap. Despite the name, Mantine's `data-combobox-active` — not
365
+ `data-combobox-selected` — is the attribute it sets when an option's value matches the current
366
+ field value (see OptionsDropdown.mjs: `active: checked`); `data-combobox-selected` is an
367
+ unrelated transient keyboard-navigation highlight (imperatively set/cleared via arrow keys —
368
+ use-combobox.mjs's `selectOption`/`clearSelectedItem`). Keying this off `data-combobox-selected`
369
+ meant the real selected option only showed the brand color while arrow-key navigating, and lost
370
+ it as soon as the dropdown was reopened normally. */
371
+ .option[data-selected="true"],
372
+ .option[data-combobox-active="true"] {
373
+ background-color: var(
374
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_background-color
375
+ );
376
+ color: var(
377
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_text-color
378
+ );
379
+ }
380
+
381
+ /* Rich option content (leadingIcon/supportingText — see MANTINE_ADAPTER_RICH_OPTION_DATA.md). No
382
+ dedicated dropdown-option icon or supporting-text token exists in the schema either; reuse the
383
+ menu-item component's tokens for the same reason the selected-state colors above do. */
384
+ .optionContent {
385
+ display: flex;
386
+ align-items: center;
387
+ gap: var(--recursica_ui-kit_components_menu-item_properties_icon-text-gap);
388
+ }
389
+
390
+ .optionIcon {
391
+ display: flex;
392
+ flex-shrink: 0;
393
+ width: var(
394
+ --recursica_ui-kit_components_menu-item_properties_icon-leading-size
395
+ );
396
+ height: var(
397
+ --recursica_ui-kit_components_menu-item_properties_icon-leading-size
398
+ );
399
+ color: var(
400
+ --recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_leading-icon-color
401
+ );
402
+ }
403
+
404
+ .optionIcon :global(svg) {
405
+ width: 100%;
406
+ height: 100%;
407
+ }
408
+
409
+ .optionText {
410
+ display: flex;
411
+ flex-direction: column;
412
+ min-width: 0;
413
+ gap: var(--recursica_ui-kit_components_menu-item_properties_text-gap);
414
+ }
415
+
416
+ /* Default: label/supportingText each truncate to a single line with an ellipsis. */
417
+ .optionText > * {
418
+ overflow: clip; /* HARDCODE: `hidden` clips descenders (e.g. "g") when text_line-height is
419
+ tighter than the font's natural ascent+descent; overflow-clip-margin gives ink a small bleed
420
+ allowance while still clipping genuinely overflowing text (see Chip's IMPLEMENTATION_NOTES.md). */
421
+ overflow-clip-margin: 0.35em;
422
+ text-overflow: ellipsis;
423
+ white-space: nowrap;
424
+ }
425
+
426
+ /* Applied alongside .optionText when `wrapItemText` is true — long values wrap onto additional
427
+ lines instead of overflowing the fixed-width dropdown. */
428
+ .optionTextWrap > * {
429
+ overflow: visible;
430
+ text-overflow: clip;
431
+ white-space: normal;
432
+ overflow-wrap: anywhere;
433
+ }
434
+
435
+ .optionSupportingText {
436
+ font-family: var(
437
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-family
438
+ );
439
+ font-size: var(
440
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-size
441
+ );
442
+ font-style: var(
443
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-style
444
+ );
445
+ font-weight: var(
446
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-weight
447
+ );
448
+ letter-spacing: var(
449
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_letter-spacing
450
+ );
451
+ line-height: var(
452
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_line-height
453
+ );
454
+ text-decoration: var(
455
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_text-decoration
456
+ );
457
+ text-transform: var(
458
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_text-transform
459
+ );
460
+ color: var(
461
+ --recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_supporting-text-color
462
+ );
463
+ }
464
+
465
+ .option[data-selected="true"] .optionIcon,
466
+ .option[data-combobox-active="true"] .optionIcon {
467
+ color: var(
468
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_leading-icon-color
469
+ );
470
+ }
471
+
472
+ .option[data-selected="true"] .optionSupportingText,
473
+ .option[data-combobox-active="true"] .optionSupportingText {
474
+ color: var(
475
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_supporting-text-color
476
+ );
477
+ }