@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,336 @@
1
+ /*
2
+ HARDCODED VALUES:
3
+ - justify-content, align-items, display: Center content for custom internal spans
4
+ - Mantine overrides (--avatar-bd, --avatar-bg, --avatar-color): Remove default static themes
5
+ - Default object-fit for image
6
+ - Transitions and standard flex layouts
7
+ - Image has no explicit size tokens other than root size, assume it scales 100%
8
+ */
9
+
10
+ .root {
11
+ box-sizing: border-box;
12
+ margin: 0;
13
+ border-style: solid;
14
+ overflow: hidden;
15
+ position: relative;
16
+ transition: all 0.2s ease;
17
+ box-shadow: var(--recursica_ui-kit_components_avatar_properties_elevation);
18
+
19
+ /* HARDCODE: Remove internal Mantine custom props that interfere */
20
+ --avatar-bd: none;
21
+ --avatar-bg: transparent;
22
+ --avatar-color: inherit;
23
+ }
24
+
25
+ /* ==== SIZES ==== */
26
+ .root[data-size="small"] {
27
+ width: var(
28
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_width
29
+ );
30
+ height: var(
31
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_height
32
+ );
33
+ border-width: var(
34
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_border-size
35
+ );
36
+ }
37
+
38
+ .root[data-size="small"] .iconWrapper {
39
+ width: var(
40
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_icon-size
41
+ );
42
+ height: var(
43
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_icon-size
44
+ );
45
+ }
46
+
47
+ .root[data-size="small"] .textWrapper {
48
+ font-family: var(
49
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_font-family
50
+ );
51
+ font-size: var(
52
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_font-size
53
+ );
54
+ font-style: var(
55
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_font-style
56
+ );
57
+ font-weight: var(
58
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_font-weight
59
+ );
60
+ letter-spacing: var(
61
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_letter-spacing
62
+ );
63
+ line-height: var(
64
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_line-height
65
+ );
66
+ text-decoration: var(
67
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_text-decoration
68
+ );
69
+ text-transform: var(
70
+ --recursica_ui-kit_components_avatar_variants_sizes_small_properties_text_text-transform
71
+ );
72
+ }
73
+
74
+ .root[data-size="default"] {
75
+ width: var(
76
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_width
77
+ );
78
+ height: var(
79
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_height
80
+ );
81
+ border-width: var(
82
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_border-size
83
+ );
84
+ }
85
+
86
+ .root[data-size="default"] .iconWrapper {
87
+ width: var(
88
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_icon-size
89
+ );
90
+ height: var(
91
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_icon-size
92
+ );
93
+ }
94
+
95
+ .root[data-size="default"] .textWrapper {
96
+ font-family: var(
97
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_font-family
98
+ );
99
+ font-size: var(
100
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_font-size
101
+ );
102
+ font-style: var(
103
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_font-style
104
+ );
105
+ font-weight: var(
106
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_font-weight
107
+ );
108
+ letter-spacing: var(
109
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_letter-spacing
110
+ );
111
+ line-height: var(
112
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_line-height
113
+ );
114
+ text-decoration: var(
115
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_text-decoration
116
+ );
117
+ text-transform: var(
118
+ --recursica_ui-kit_components_avatar_variants_sizes_default_properties_text_text-transform
119
+ );
120
+ }
121
+
122
+ .root[data-size="large"] {
123
+ width: var(
124
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_width
125
+ );
126
+ height: var(
127
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_height
128
+ );
129
+ border-width: var(
130
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_border-size
131
+ );
132
+ }
133
+
134
+ .root[data-size="large"] .iconWrapper {
135
+ width: var(
136
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_icon-size
137
+ );
138
+ height: var(
139
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_icon-size
140
+ );
141
+ }
142
+
143
+ .root[data-size="large"] .textWrapper {
144
+ font-family: var(
145
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_font-family
146
+ );
147
+ font-size: var(
148
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_font-size
149
+ );
150
+ font-style: var(
151
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_font-style
152
+ );
153
+ font-weight: var(
154
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_font-weight
155
+ );
156
+ letter-spacing: var(
157
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_letter-spacing
158
+ );
159
+ line-height: var(
160
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_line-height
161
+ );
162
+ text-decoration: var(
163
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_text-decoration
164
+ );
165
+ text-transform: var(
166
+ --recursica_ui-kit_components_avatar_variants_sizes_large_properties_text_text-transform
167
+ );
168
+ }
169
+
170
+ /* ==== STYLES & VARIANTS ==== */
171
+
172
+ /* 1. IMAGE */
173
+ .root[data-style="image"] {
174
+ border-radius: var(
175
+ --recursica_ui-kit_components_avatar_variants_styles_image_properties_border-radius
176
+ );
177
+ border-width: var(
178
+ --recursica_ui-kit_components_avatar_variants_styles_image_properties_border-size
179
+ );
180
+ padding: var(
181
+ --recursica_ui-kit_components_avatar_variants_styles_image_properties_padding
182
+ );
183
+
184
+ /* Image variant styles */
185
+ background-color: var(
186
+ --recursica_ui-kit_components_avatar_variants_styles_image_properties_colors_background-color
187
+ );
188
+ border-color: var(
189
+ --recursica_ui-kit_components_avatar_variants_styles_image_properties_colors_border-color
190
+ );
191
+ }
192
+
193
+ /* Base styles for Internal Nodes */
194
+ .image {
195
+ object-fit: cover;
196
+ width: 100%;
197
+ height: 100%;
198
+ }
199
+
200
+ .placeholder {
201
+ display: flex;
202
+ align-items: center;
203
+ justify-content: center;
204
+ width: 100%;
205
+ height: 100%;
206
+ color: inherit;
207
+ background-color: transparent;
208
+ }
209
+
210
+ .iconWrapper {
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: center;
214
+ flex-shrink: 0;
215
+ }
216
+ .iconWrapper > * {
217
+ width: 100%;
218
+ height: 100%;
219
+ object-fit: contain;
220
+ }
221
+
222
+ .textWrapper {
223
+ display: inline-flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ }
227
+
228
+ /* 2. ICON */
229
+ .root[data-style="icon"] {
230
+ border-radius: var(
231
+ --recursica_ui-kit_components_avatar_variants_styles_icon_properties_border-radius
232
+ );
233
+ padding: var(
234
+ --recursica_ui-kit_components_avatar_variants_styles_icon_properties_padding
235
+ );
236
+ }
237
+
238
+ .root[data-style="icon"][data-variant="solid"] {
239
+ border-width: var(
240
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_solid_properties_border-size
241
+ );
242
+ background-color: var(
243
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_solid_properties_colors_background-color
244
+ );
245
+ border-color: var(
246
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_solid_properties_colors_border-color
247
+ );
248
+ color: var(
249
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_solid_properties_colors_icon-color
250
+ );
251
+ }
252
+
253
+ .root[data-style="icon"][data-variant="outline"] {
254
+ border-width: var(
255
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_outline_properties_border-size
256
+ );
257
+ background-color: var(
258
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_outline_properties_colors_background-color
259
+ );
260
+ border-color: var(
261
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_outline_properties_colors_border-color
262
+ );
263
+ color: var(
264
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_outline_properties_colors_icon-color
265
+ );
266
+ }
267
+
268
+ .root[data-style="icon"][data-variant="ghost"] {
269
+ border-width: var(
270
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_ghost_properties_border-size
271
+ );
272
+ background-color: var(
273
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_ghost_properties_colors_background-color
274
+ );
275
+ border-color: var(
276
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_ghost_properties_colors_border-color
277
+ );
278
+ color: var(
279
+ --recursica_ui-kit_components_avatar_variants_styles_icon_variants_types_ghost_properties_colors_icon-color
280
+ );
281
+ }
282
+
283
+ /* 3. TEXT */
284
+ .root[data-style="text"] {
285
+ border-radius: var(
286
+ --recursica_ui-kit_components_avatar_variants_styles_text_properties_border-radius
287
+ );
288
+ padding: var(
289
+ --recursica_ui-kit_components_avatar_variants_styles_text_properties_padding
290
+ );
291
+ }
292
+
293
+ .root[data-style="text"][data-variant="solid"] {
294
+ border-width: var(
295
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_solid_properties_border-size
296
+ );
297
+ background-color: var(
298
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_solid_properties_colors_background-color
299
+ );
300
+ border-color: var(
301
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_solid_properties_colors_border-color
302
+ );
303
+ color: var(
304
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_solid_properties_colors_text-color
305
+ );
306
+ }
307
+
308
+ .root[data-style="text"][data-variant="outline"] {
309
+ border-width: var(
310
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_outline_properties_border-size
311
+ );
312
+ background-color: var(
313
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_outline_properties_colors_background-color
314
+ );
315
+ border-color: var(
316
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_outline_properties_colors_border-color
317
+ );
318
+ color: var(
319
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_outline_properties_colors_text-color
320
+ );
321
+ }
322
+
323
+ .root[data-style="text"][data-variant="ghost"] {
324
+ border-width: var(
325
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_ghost_properties_border-size
326
+ );
327
+ background-color: var(
328
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_ghost_properties_colors_background-color
329
+ );
330
+ border-color: var(
331
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_ghost_properties_colors_border-color
332
+ );
333
+ color: var(
334
+ --recursica_ui-kit_components_avatar_variants_styles_text_variants_types_ghost_properties_colors_text-color
335
+ );
336
+ }
@@ -0,0 +1,92 @@
1
+ import React from "react";
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { Avatar } from "./Avatar";
4
+
5
+ type AvatarStoryProps = React.ComponentProps<typeof Avatar>;
6
+
7
+ const meta: Meta<AvatarStoryProps> = {
8
+ title: "UI-Kit/Avatar",
9
+ component: Avatar,
10
+ tags: ["autodocs"],
11
+ argTypes: {
12
+ variant: {
13
+ control: "select",
14
+ options: ["solid", "outline", "ghost"],
15
+ description:
16
+ "The visual variant of the avatar (applies to icon/text styles)",
17
+ },
18
+ size: {
19
+ control: "radio",
20
+ options: ["default", "small", "large"],
21
+ description: "The size of the avatar",
22
+ },
23
+ src: {
24
+ control: "text",
25
+ description: "Image URL for the image style avatar",
26
+ },
27
+ icon: {
28
+ table: {
29
+ disable: true,
30
+ },
31
+ },
32
+ },
33
+ };
34
+
35
+ export default meta;
36
+
37
+ type Story = StoryObj<AvatarStoryProps>;
38
+
39
+ export const Default: Story = {
40
+ args: {
41
+ size: "default",
42
+ variant: "solid",
43
+ },
44
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
45
+ render: ({ withLayer, layer, ...args }: any) => {
46
+ return <Avatar {...args} />;
47
+ },
48
+ };
49
+
50
+ export const TextSolidDefault: Story = {
51
+ args: {
52
+ children: "JD",
53
+ variant: "solid",
54
+ size: "default",
55
+ },
56
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
57
+ render: ({ withLayer, layer, ...args }: any) => <Avatar {...args} />,
58
+ };
59
+
60
+ export const ImageLarge: Story = {
61
+ args: {
62
+ src: "https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=250&q=80",
63
+ size: "large",
64
+ },
65
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
66
+ render: ({ withLayer, layer, ...args }: any) => <Avatar {...args} />,
67
+ };
68
+
69
+ export const IconSmallGhost: Story = {
70
+ args: {
71
+ size: "small",
72
+ variant: "ghost",
73
+ icon: (
74
+ <svg
75
+ xmlns="http://www.w3.org/2000/svg"
76
+ width="16"
77
+ height="16"
78
+ viewBox="0 0 24 24"
79
+ fill="none"
80
+ stroke="currentColor"
81
+ strokeWidth="2"
82
+ strokeLinecap="round"
83
+ strokeLinejoin="round"
84
+ >
85
+ <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
86
+ <circle cx="12" cy="7" r="4"></circle>
87
+ </svg>
88
+ ),
89
+ },
90
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
91
+ render: ({ withLayer, layer, ...args }: any) => <Avatar {...args} />,
92
+ };
@@ -0,0 +1 @@
1
+ // Placeholder for future Avatar component tests. Add tests here if/when needed.
@@ -0,0 +1,108 @@
1
+ import { forwardRef } from "react";
2
+ import {
3
+ Avatar as MantineAvatar,
4
+ type AvatarProps as MantineAvatarProps,
5
+ createPolymorphicComponent,
6
+ } from "@mantine/core";
7
+ import {
8
+ filterStylingProps,
9
+ omitUnsupportedProps,
10
+ mergeClassNames,
11
+ type RecursicaOverStyled,
12
+ } from "../../utils/filterStylingProps";
13
+ import styles from "./Avatar.module.css";
14
+
15
+ import { type RecursicaAvatarProps } from "@recursica/adapter-common";
16
+
17
+ export type AvatarProps = RecursicaOverStyled<
18
+ Omit<MantineAvatarProps, "variant" | "size" | "color" | "radius"> &
19
+ RecursicaAvatarProps
20
+ >;
21
+
22
+ const _Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(
23
+ {
24
+ size = "default",
25
+ variant = "solid",
26
+ icon,
27
+ children,
28
+ src,
29
+ overStyled = false,
30
+ ...rest
31
+ },
32
+ ref,
33
+ ) {
34
+ const mapVariant = {
35
+ solid: "filled",
36
+ outline: "outline",
37
+ ghost: "transparent",
38
+ } as const;
39
+
40
+ const mapSize = {
41
+ default: "md",
42
+ small: "sm",
43
+ large: "lg",
44
+ } as const;
45
+
46
+ // Props this component intentionally doesn't support — deleted at runtime so they can't leak
47
+ // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.
48
+ const UNSUPPORTED_PROPS = [
49
+ "color", // Colors are token-driven via `data-variant`; Mantine's native palette isn't exposed.
50
+ "radius", // Avatar corner radius is controlled by design tokens, not a raw radius prop.
51
+ ] as const satisfies readonly (keyof MantineAvatarProps)[];
52
+
53
+ const sanitizedProps = omitUnsupportedProps(
54
+ filterStylingProps(rest, overStyled),
55
+ UNSUPPORTED_PROPS,
56
+ );
57
+ const restRecord = sanitizedProps as Record<string, unknown>;
58
+
59
+ // Determine semantic style based on provided props
60
+ let computedStyle = "text";
61
+ if (src) {
62
+ computedStyle = "image";
63
+ } else if (icon) {
64
+ computedStyle = "icon";
65
+ }
66
+
67
+ const mergedClassNames = mergeClassNames(
68
+ {
69
+ root: styles.root,
70
+ image: styles.image,
71
+ placeholder: styles.placeholder,
72
+ },
73
+ restRecord.classNames as Partial<Record<string, string>> | undefined,
74
+ );
75
+
76
+ const classNameProp = restRecord.className as string | undefined;
77
+
78
+ return (
79
+ <MantineAvatar
80
+ ref={ref}
81
+ {...sanitizedProps}
82
+ className={classNameProp}
83
+ classNames={mergedClassNames}
84
+ variant={mapVariant[variant]}
85
+ size={mapSize[size]}
86
+ src={src}
87
+ data-variant={variant}
88
+ data-size={size}
89
+ data-style={computedStyle}
90
+ >
91
+ {icon != null ? (
92
+ <span className={styles.iconWrapper} aria-hidden>
93
+ {icon}
94
+ </span>
95
+ ) : children != null ? (
96
+ <span className={styles.textWrapper}>{children}</span>
97
+ ) : undefined}
98
+ </MantineAvatar>
99
+ );
100
+ });
101
+ _Avatar.displayName = "Avatar";
102
+
103
+ /**
104
+ * Recursica Avatar component wrapping Mantine's Avatar.
105
+ *
106
+ * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.
107
+ */
108
+ export const Avatar = createPolymorphicComponent<"div", AvatarProps>(_Avatar);
@@ -0,0 +1,38 @@
1
+ # Avatar - Usage Guide
2
+
3
+ This document describes how to integrate and use the `Avatar` component in your projects using `@recursica/adapter-mantine-v8`.
4
+
5
+ ---
6
+
7
+ ## 1. Import Reference
8
+
9
+ ```tsx
10
+ import { Avatar } from "@recursica/adapter-mantine-v8";
11
+ ```
12
+
13
+ ---
14
+
15
+ ## 2. Basic Example
16
+
17
+ ```tsx
18
+ import React from "react";
19
+ import { Avatar } from "@recursica/adapter-mantine-v8";
20
+
21
+ export default function Demo() {
22
+ return (
23
+ <Avatar src="https://example.com/avatar.png" alt="User Name" radius="xl" />
24
+ );
25
+ }
26
+ ```
27
+
28
+ ---
29
+
30
+ ## 3. Design System Integration
31
+
32
+ All Recursica components in the `@recursica/adapter-mantine-v8` package adhere strictly to design system spacing, scaling, and behavior patterns.
33
+
34
+ > [!IMPORTANT]
35
+ >
36
+ > - **Anti-override protection**: Rogues style injections (like inline `style` or arbitrary `className`) are automatically blocked by our prop layer unless `overStyled={true}` is explicitly provided.
37
+ > - **No Direct Layers**: Do not pass a `layer` prop to this component. To place it on a specific visual layer, wrap it in a `<Layer layer={0|1|2|3}>` component natively.
38
+ > - **Variables and Theming**: Styling is entirely determined by local CSS variables defined in `recursica_variables_scoped.css` and mapped in the component's CSS module.
@@ -0,0 +1 @@
1
+ export * from "./Avatar";
@@ -0,0 +1,18 @@
1
+ # Badge Implementation Notes
2
+
3
+ This document captures specific decisions, regressions, and structural compromises made when integrating Mantine's `Badge` component into the Recursica styling system.
4
+
5
+ ## 1. Stripped Size Properties
6
+
7
+ As logged in `COMPONENT_ISSUES.md`, there are currently no Figma variables mapped for different `size` variants (`small`, `default`, etc.). The component explicitly `Omit`s the Mantine `size` property from its signature to prevent integrators from attempting to drive sizes that do not exist in the tokens.
8
+
9
+ ## 2. Intent-Based Variants
10
+
11
+ Mantine supports multiple visual variants (`outline`, `filled`, `light`). However, the existing variable schema for `Badge` only defines "Styles" which act as intents (`alert`, `primary-color`, `success`, `warning`).
12
+
13
+ - Default is arbitrarily mapped to `primary-color` as we lack a pure `neutral` schema right now.
14
+ - `variant` mapped to underlying Mantine prop has been hardcoded to `filled`, since the Recursica coloring fully replaces the Mantine DOM.
15
+
16
+ ## 3. The `overStyled` Prop
17
+
18
+ This component implements the newly added `overStyled` architectural standard. By default, passing inline `{style}` React properties to `Badge` will be ignored. This prevents accidental cascading regressions of our strict CSS-variables layouts unless a developer explicitly forces `overStyled={true}`.