@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,267 @@
1
+ /**
2
+ * Checkbox.module.css
3
+ *
4
+ * HARDCODED VALUES:
5
+ * - margin / padding: 0 — Structural resets; consider token if spacing needed.
6
+ * - cursor: pointer / not-allowed — Baseline interactive indications.
7
+ * - appearance / box-sizing / border-style — necessary normalization for inputs.
8
+ * - transition: all 0.2s ease — Animation curve; consider a transition token.
9
+ * - min-width: 0 — Forces text wrap boundary in flex children.
10
+ */
11
+
12
+ /* --- GROUP STYLES --- */
13
+ .groupRoot {
14
+ padding: var(--recursica_ui-kit_components_checkbox-group_properties_padding);
15
+ margin: 0; /* HARDCODE: structural reset; consider token if layout needs change */
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: var(--recursica_ui-kit_components_checkbox-group_properties_item-gap);
19
+ }
20
+
21
+ /* SideBySide Variant */
22
+ .groupRoot[data-layout="side-by-side"] {
23
+ flex-direction: column;
24
+ flex-wrap: wrap;
25
+ padding-top: var(
26
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_side-by-side_properties_vertical-padding
27
+ );
28
+ padding-bottom: var(
29
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_side-by-side_properties_vertical-padding
30
+ );
31
+ margin-top: var(
32
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_side-by-side_properties_top-bottom-margin
33
+ );
34
+ margin-bottom: var(
35
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_side-by-side_properties_top-bottom-margin
36
+ );
37
+ }
38
+
39
+ /* Stacked Variant */
40
+ .groupRoot[data-layout="stacked"] {
41
+ flex-direction: column;
42
+ margin-top: var(
43
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_stacked_properties_top-bottom-margin
44
+ );
45
+ margin-bottom: var(
46
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_stacked_properties_top-bottom-margin
47
+ );
48
+ }
49
+
50
+ /* --- PRIMITIVE CHECKBOX STYLES --- */
51
+
52
+ .root {
53
+ max-width: var(
54
+ --recursica_ui-kit_components_checkbox-item_properties_max-width
55
+ );
56
+ }
57
+
58
+ .body {
59
+ display: flex;
60
+ align-items: flex-start;
61
+ gap: var(--recursica_ui-kit_components_checkbox-item_properties_label-gap);
62
+ }
63
+
64
+ .inner {
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ margin: 0; /* HARDCODE: structural reset */
69
+ width: var(--recursica_ui-kit_components_checkbox_properties_size);
70
+ height: var(--recursica_ui-kit_components_checkbox_properties_size);
71
+ /* Apply font-size to this element so that an 'em' based line-height token evaluates to the correct exact pixel value. */
72
+ font-size: var(
73
+ --recursica_ui-kit_components_checkbox-item_properties_text_font-size
74
+ );
75
+ /* Mathematically syncs the physical input checkbox bounding block visually with the center of the text's first line.
76
+ NOTE: Since the Figma line-height token resolves to an 'em' length (e.g. 1.05em), we CANNOT multiply it by font-size in CSS.
77
+ Instead, it naturally evaluates to the correct height because we applied the font-size above. */
78
+ margin-top: calc(
79
+ (
80
+ var(
81
+ --recursica_ui-kit_components_checkbox-item_properties_text_line-height
82
+ ) -
83
+ var(--recursica_ui-kit_components_checkbox_properties_size)
84
+ ) /
85
+ 2
86
+ );
87
+ }
88
+
89
+ /* Base explicit reset masking underlying framework defaults */
90
+ .input {
91
+ cursor: pointer; /* HARDCODE: core interaction behavior */
92
+ appearance: none; /* HARDCODE: reset native widget */
93
+ box-sizing: border-box; /* HARDCODE: ensures size includes borders */
94
+ width: var(--recursica_ui-kit_components_checkbox_properties_size);
95
+ height: var(--recursica_ui-kit_components_checkbox_properties_size);
96
+ border-radius: var(
97
+ --recursica_ui-kit_components_checkbox_properties_border-radius
98
+ );
99
+ border-width: var(
100
+ --recursica_ui-kit_components_checkbox_properties_border-size
101
+ );
102
+ border-style: solid; /* HARDCODE: normalize primitive border-style */
103
+
104
+ /* Standard unchecked state */
105
+ background-color: var(
106
+ --recursica_ui-kit_components_checkbox_variants_selection-states_unchecked_properties_colors_background-color
107
+ );
108
+ border-color: var(
109
+ --recursica_ui-kit_components_checkbox_variants_selection-states_unchecked_properties_colors_border-color
110
+ );
111
+ transition: all 0.2s ease; /* HARDCODE: consider global transition token */
112
+ }
113
+
114
+ /* Checked/Indeterminate State */
115
+ .input:checked,
116
+ .inputChecked {
117
+ background-color: var(
118
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_properties_colors_background-color
119
+ );
120
+ border-color: var(
121
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_properties_colors_border-color
122
+ );
123
+ }
124
+ .input[data-indeterminate],
125
+ .inputIndeterminate {
126
+ background-color: var(
127
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_properties_colors_background-color
128
+ );
129
+ border-color: var(
130
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_properties_colors_border-color
131
+ );
132
+ }
133
+
134
+ /* Disabled State (colors now differ per selection state, so each combination is mapped explicitly) */
135
+ .input:disabled {
136
+ cursor: not-allowed; /* HARDCODE: disabled state default */
137
+ }
138
+ .input:disabled:not(:checked):not([data-indeterminate]) {
139
+ opacity: var(
140
+ --recursica_ui-kit_components_checkbox_variants_selection-states_unchecked_variants_states_disabled_properties_opacity
141
+ );
142
+ background-color: var(
143
+ --recursica_ui-kit_components_checkbox_variants_selection-states_unchecked_variants_states_disabled_properties_colors_background-color
144
+ );
145
+ border-color: var(
146
+ --recursica_ui-kit_components_checkbox_variants_selection-states_unchecked_variants_states_disabled_properties_colors_border-color
147
+ );
148
+ }
149
+ .input:checked:disabled {
150
+ opacity: var(
151
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_variants_states_disabled_properties_opacity
152
+ );
153
+ background-color: var(
154
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_variants_states_disabled_properties_colors_background-color
155
+ );
156
+ border-color: var(
157
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_variants_states_disabled_properties_colors_border-color
158
+ );
159
+ }
160
+ .input[data-indeterminate]:disabled {
161
+ opacity: var(
162
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_variants_states_disabled_properties_opacity
163
+ );
164
+ background-color: var(
165
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_variants_states_disabled_properties_colors_background-color
166
+ );
167
+ border-color: var(
168
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_variants_states_disabled_properties_colors_border-color
169
+ );
170
+ }
171
+
172
+ .icon {
173
+ width: var(--recursica_ui-kit_components_checkbox_properties_icon-size);
174
+ height: var(--recursica_ui-kit_components_checkbox_properties_icon-size);
175
+ }
176
+ /* No icon-color token exists for the unchecked state (no icon is visible then) */
177
+ .input:checked + .icon,
178
+ .inputChecked + .icon {
179
+ color: var(
180
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_properties_colors_icon-color
181
+ );
182
+ }
183
+ .input[data-indeterminate] + .icon,
184
+ .inputIndeterminate + .icon {
185
+ color: var(
186
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_properties_colors_icon-color
187
+ );
188
+ }
189
+ .input:checked:disabled + .icon {
190
+ color: var(
191
+ --recursica_ui-kit_components_checkbox_variants_selection-states_checked_variants_states_disabled_properties_colors_icon-color
192
+ );
193
+ }
194
+ .input[data-indeterminate]:disabled + .icon {
195
+ color: var(
196
+ --recursica_ui-kit_components_checkbox_variants_selection-states_indeterminate_variants_states_disabled_properties_colors_icon-color
197
+ );
198
+ }
199
+
200
+ .labelWrapper {
201
+ padding: 0; /* HARDCODE: structural layout reset */
202
+ margin: 0; /* HARDCODE: structural layout reset */
203
+ flex: 1;
204
+ min-width: 0; /* HARDCODE: forces text wrap boundary in flex child */
205
+ }
206
+
207
+ .label {
208
+ cursor: pointer; /* HARDCODE: interactive affordance */
209
+ padding: 0; /* HARDCODE: reset layout */
210
+ margin: 0; /* HARDCODE: reset layout */
211
+ word-wrap: break-word;
212
+ white-space: normal;
213
+ color: var(
214
+ --recursica_ui-kit_components_checkbox-item_properties_colors_text-color
215
+ );
216
+ font-family: var(
217
+ --recursica_ui-kit_components_checkbox-item_properties_text_font-family
218
+ );
219
+ font-size: var(
220
+ --recursica_ui-kit_components_checkbox-item_properties_text_font-size
221
+ );
222
+ font-weight: var(
223
+ --recursica_ui-kit_components_checkbox-item_properties_text_font-weight
224
+ );
225
+ line-height: var(
226
+ --recursica_ui-kit_components_checkbox-item_properties_text_line-height
227
+ );
228
+ font-style: var(
229
+ --recursica_ui-kit_components_checkbox-item_properties_text_font-style
230
+ );
231
+ letter-spacing: var(
232
+ --recursica_ui-kit_components_checkbox-item_properties_text_letter-spacing
233
+ );
234
+ text-decoration: var(
235
+ --recursica_ui-kit_components_checkbox-item_properties_text_text-decoration
236
+ );
237
+ text-transform: var(
238
+ --recursica_ui-kit_components_checkbox-item_properties_text_text-transform
239
+ );
240
+ }
241
+ .root:has(input:disabled) .label {
242
+ cursor: not-allowed; /* HARDCODE: disabled interaction */
243
+ opacity: var(
244
+ --recursica_ui-kit_components_checkbox-item_variants_states_disabled_properties_opacity
245
+ );
246
+ color: var(
247
+ --recursica_ui-kit_components_checkbox-item_properties_colors_disabled-text
248
+ );
249
+ }
250
+
251
+ /* CheckboxGroup Layouts */
252
+ .groupRoot {
253
+ display: flex;
254
+ }
255
+ .groupRoot[data-layout="stacked"] {
256
+ flex-direction: column;
257
+ gap: var(
258
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_stacked_properties_label-field-gap
259
+ );
260
+ }
261
+ .groupRoot[data-layout="side-by-side"] {
262
+ flex-direction: row;
263
+ flex-wrap: wrap;
264
+ gap: var(
265
+ --recursica_ui-kit_components_checkbox-group_variants_layouts_side-by-side_properties_gutter
266
+ );
267
+ }
@@ -0,0 +1,97 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Checkbox } from "./Checkbox";
3
+
4
+ const meta: Meta<typeof Checkbox> = {
5
+ title: "UI-Kit/Checkbox",
6
+ component: Checkbox,
7
+ tags: ["autodocs"],
8
+ parameters: {
9
+ docs: {
10
+ description: {
11
+ component: `
12
+ The \`Checkbox\` component is a precisely engineered, atomic form primitive representing boolean states natively aligned to the Recursica design system. It overrides Mantine's standard properties explicitly enforcing our variables natively across all structural boundaries.
13
+
14
+ > [!IMPORTANT]
15
+ > The atomic \`Checkbox\` is intended primarily as an internal primitive. **When wrapping multiple Checkbox elements together or rendering form controls, always utilize the \`<Checkbox.Group>\` component.** \`Checkbox.Group\` inherits the global \`FormControlWrapper\`, granting instantaneous access to macroscopic layout structuring, assistive descriptions, validation errors, and strict flex arrays.
16
+
17
+ ### Usage
18
+ To render a solitary component natively:
19
+ \`\`\`tsx
20
+ <Checkbox label="Acknowledge Terms" defaultChecked />
21
+ \`\`\`
22
+ `,
23
+ },
24
+ },
25
+ },
26
+ argTypes: {
27
+ disabled: {
28
+ control: "boolean",
29
+ },
30
+ readOnly: {
31
+ control: "boolean",
32
+ description:
33
+ "Toggles structural read-only data presentation bypassing interaction boundaries completely.",
34
+ },
35
+ controlMaxWidth: { table: { disable: true } },
36
+ controlMinWidth: { table: { disable: true } },
37
+ },
38
+ };
39
+
40
+ export default meta;
41
+
42
+ type Story = StoryObj<typeof Checkbox>;
43
+
44
+ export const Default: Story = {
45
+ args: {
46
+ disabled: false,
47
+ label: "Standard Unchecked Property",
48
+ },
49
+ };
50
+
51
+ export const SideBySideLayout: Story = {
52
+ args: {
53
+ label: "Opt-in form alignment",
54
+ formLayout: "side-by-side",
55
+ },
56
+ };
57
+
58
+ export const LongLabelWrap: Story = {
59
+ args: {
60
+ label:
61
+ "A meticulously long Checkbox label property demonstrating the absolute maximum 400px wrapper constraints actively snapping the text engine down onto a secondary wrapping line automatically without blowing out the visual boundaries.",
62
+ },
63
+ };
64
+
65
+ export const StaticVariations: Story = {
66
+ args: {},
67
+ render: () => (
68
+ <div
69
+ style={{
70
+ display: "flex",
71
+ flexDirection: "column",
72
+ gap: "24px",
73
+ }}
74
+ >
75
+ <Checkbox label="Default Unchecked State" />
76
+ <Checkbox label="Acknowledge Configuration" defaultChecked />
77
+ <Checkbox label="Indeterminate Master" indeterminate />
78
+ <Checkbox label="Disabled Variant" disabled />
79
+ <Checkbox label="Disabled Checked Variant" checked disabled />
80
+ </div>
81
+ ),
82
+ };
83
+
84
+ export const ReadOnly: Story = {
85
+ args: {},
86
+ render: () => (
87
+ <div
88
+ style={{
89
+ display: "flex",
90
+ flexDirection: "column",
91
+ gap: "24px",
92
+ }}
93
+ >
94
+ <Checkbox label="Accept Terms & Conditions" defaultChecked readOnly />
95
+ </div>
96
+ ),
97
+ };
@@ -0,0 +1 @@
1
+ // Placeholder for future Checkbox component tests. Add tests here if/when needed.
@@ -0,0 +1,151 @@
1
+ import { forwardRef } from "react";
2
+ import {
3
+ Checkbox as MantineCheckbox,
4
+ type CheckboxProps as MantineCheckboxProps,
5
+ } from "@mantine/core";
6
+ import { type ReadOnlyControlProps } from "@recursica/adapter-common";
7
+ import { CheckboxGroup } from "./CheckboxGroup";
8
+ import {
9
+ filterStylingProps,
10
+ omitUnsupportedProps,
11
+ mergeClassNames,
12
+ type RecursicaOverStyled,
13
+ } from "../../utils/filterStylingProps";
14
+ import {
15
+ type RequireAccessibleLabel,
16
+ type RecursicaCheckboxProps,
17
+ } from "@recursica/adapter-common";
18
+ import {
19
+ FormControlLayout,
20
+ type FormControlLayoutProps,
21
+ } from "../FormControlLayout/FormControlLayout";
22
+
23
+ import styles from "./Checkbox.module.css";
24
+
25
+ export type CheckboxWrapperProps = Omit<
26
+ MantineCheckboxProps,
27
+ "size" | "color" | "radius" | "iconColor" | "variant"
28
+ > &
29
+ RecursicaCheckboxProps &
30
+ ReadOnlyControlProps &
31
+ Pick<
32
+ FormControlLayoutProps,
33
+ "formLayout" | "labelSize" | "controlMaxWidth" | "controlMinWidth"
34
+ >;
35
+
36
+ export type RecursicaCheckboxPropsAlias =
37
+ RequireAccessibleLabel<CheckboxWrapperProps>;
38
+
39
+ export type CheckboxProps = RecursicaOverStyled<RecursicaCheckboxPropsAlias>;
40
+
41
+ type CheckboxComponent = React.ForwardRefExoticComponent<
42
+ CheckboxProps & React.RefAttributes<HTMLInputElement>
43
+ > & {
44
+ Group: typeof CheckboxGroup;
45
+ };
46
+
47
+ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(
48
+ function Checkbox(props, ref) {
49
+ const {
50
+ overStyled = false,
51
+ readOnly,
52
+ readOnlyComponent,
53
+ disabled,
54
+ formLayout,
55
+ labelSize,
56
+ controlMaxWidth,
57
+ controlMinWidth,
58
+ ...rest
59
+ } = props;
60
+ // Checkbox doesn't use Label onLabelEditClick natively since it isn't mapped inside FormControlWrapper intrinsically.
61
+ // Props this component intentionally doesn't support — deleted at runtime so they can't leak
62
+ // through even if a caller forces them via plain JavaScript, bypassing the `Omit<>` above.
63
+ const UNSUPPORTED_PROPS = [
64
+ "size", // Recursica controls sizing via Checkbox.module.css variables, not Mantine's native size scale.
65
+ "color", // Colors are token-driven via Checkbox.module.css; Mantine's native palette isn't exposed.
66
+ "radius", // Corner radius is fixed by Recursica tokens in Checkbox.module.css, not caller-configurable.
67
+ "variant", // Checkbox has a single Recursica-defined visual treatment; Mantine's variant isn't exposed.
68
+ "iconColor", // Icon color is token-driven via Checkbox.module.css, not a native Mantine override.
69
+ ] as const satisfies readonly (keyof MantineCheckboxProps)[];
70
+
71
+ const sanitizedProps = omitUnsupportedProps(
72
+ filterStylingProps(rest, overStyled) as Record<string, unknown>,
73
+ UNSUPPORTED_PROPS,
74
+ ) as Partial<typeof rest>;
75
+ const restRecord = sanitizedProps as Record<string, unknown>;
76
+
77
+ const mergedClassNames = mergeClassNames(
78
+ {
79
+ root: styles.root,
80
+ body: styles.body,
81
+ inner: styles.inner,
82
+ input: styles.input,
83
+ icon: styles.icon,
84
+ labelWrapper: styles.labelWrapper,
85
+ label: styles.label,
86
+ },
87
+ restRecord.classNames as Partial<Record<string, string>> | undefined,
88
+ );
89
+
90
+ const classNameProp = restRecord.className as string | undefined;
91
+ const finalClass = classNameProp
92
+ ? `${styles.root} ${classNameProp}`
93
+ : styles.root;
94
+
95
+ if (readOnly && !!readOnlyComponent) {
96
+ const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);
97
+ const ReadOnlyComp = readOnlyComponent;
98
+ const roNode = (
99
+ <ReadOnlyComp
100
+ {...props}
101
+ checked={isChecked}
102
+ label={restRecord.label as React.ReactNode}
103
+ />
104
+ );
105
+
106
+ if (formLayout) {
107
+ return (
108
+ <FormControlLayout
109
+ formLayout={formLayout}
110
+ labelSize={labelSize}
111
+ controlMaxWidth={controlMaxWidth}
112
+ controlMinWidth={controlMinWidth}
113
+ >
114
+ {roNode}
115
+ </FormControlLayout>
116
+ );
117
+ }
118
+
119
+ return <>{roNode}</>;
120
+ }
121
+
122
+ // We omit Mantine's sizing/coloring so we rely strictly on variables from Checkbox.module.css
123
+ const checkboxNode = (
124
+ <MantineCheckbox
125
+ ref={ref}
126
+ {...(sanitizedProps as unknown as MantineCheckboxProps)}
127
+ className={finalClass}
128
+ classNames={mergedClassNames}
129
+ disabled={readOnly || disabled}
130
+ />
131
+ );
132
+
133
+ if (formLayout) {
134
+ return (
135
+ <FormControlLayout
136
+ formLayout={formLayout}
137
+ labelSize={labelSize}
138
+ controlMaxWidth={controlMaxWidth}
139
+ controlMinWidth={controlMinWidth}
140
+ >
141
+ {checkboxNode}
142
+ </FormControlLayout>
143
+ );
144
+ }
145
+
146
+ return checkboxNode;
147
+ },
148
+ ) as CheckboxComponent;
149
+
150
+ Checkbox.displayName = "Checkbox";
151
+ Checkbox.Group = CheckboxGroup;
@@ -0,0 +1,139 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Checkbox } from "./Checkbox";
3
+ import { CheckboxGroup } from "./CheckboxGroup";
4
+ import { useState } from "react";
5
+ import { formControlArgTypes } from "../../../.storybook/commonArgTypes";
6
+
7
+ const meta: Meta<typeof CheckboxGroup> = {
8
+ title: "UI-Kit/CheckboxGroup",
9
+ component: CheckboxGroup,
10
+ tags: ["autodocs"],
11
+ parameters: {
12
+ docs: {
13
+ description: {
14
+ component: `
15
+ The \`CheckboxGroup\` component is the mandatory organizational wrapper aggregating multiple \`Checkbox\` primitives into structurally bound unified arrays. It inherently leverages the \`FormControlWrapper\` granting native access to macroscopic layout structuring, assistive descriptions, and strict flex arrays.
16
+
17
+ We exclusively utilize the \`formLayout\` parameter to control macro-level form flow:
18
+ - **\`formLayout="stacked"\`**: Top-to-bottom layout cascading the Label bounding box down vertically into a standard stacked checkbox column array.
19
+ - **\`formLayout="side-by-side"\`**: Flow architecture pulling the grouping Label dynamically to the left while structurally organizing the internal checkboxes cleanly alongside it horizontally.
20
+
21
+ \`\`\`tsx
22
+ <Checkbox.Group
23
+ label="Execution Targets"
24
+ assistiveText="Strictly mapped structural grouping dynamically applied natively."
25
+ formLayout="stacked"
26
+ >
27
+ <Checkbox value="react" label="Browser Execution Context" />
28
+ <Checkbox value="svelte" label="Edge Nodes" />
29
+ </Checkbox.Group>
30
+ \`\`\`
31
+ `,
32
+ },
33
+ },
34
+ },
35
+ argTypes: {
36
+ ...formControlArgTypes,
37
+ readOnly: {
38
+ control: "boolean",
39
+ description:
40
+ "Toggles structural read-only data presentation bypassing interaction boundaries completely.",
41
+ },
42
+ },
43
+ };
44
+
45
+ export default meta;
46
+
47
+ type Story = StoryObj<typeof CheckboxGroup>;
48
+
49
+ export const Default: Story = {
50
+ args: {
51
+ formLayout: "stacked",
52
+ label: "Standard Group",
53
+ },
54
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
55
+ render: function StoryRender({ withLayer, layer, ...args }: any) {
56
+ const [value, setValue] = useState<string[]>([]);
57
+ return (
58
+ <Checkbox.Group {...args} value={value} onChange={setValue}>
59
+ <Checkbox value="1" label="Option 1" />
60
+ <Checkbox value="2" label="Option 2" />
61
+ </Checkbox.Group>
62
+ );
63
+ },
64
+ };
65
+
66
+ export const SideBySideLayout: Story = {
67
+ args: {
68
+ formLayout: "side-by-side",
69
+ labelOptionalText: "Recommended",
70
+ labelWithEditIcon: true,
71
+ label: "Frontend Frameworks",
72
+ assistiveText:
73
+ "Select all libraries currently in use for this specific workspace configuration.",
74
+ },
75
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
76
+ render: function StoryRender({ withLayer, layer, ...args }: any) {
77
+ const [value, setValue] = useState<string[]>(["react"]);
78
+ return (
79
+ <Checkbox.Group {...args} value={value} onChange={setValue}>
80
+ <Checkbox value="react" label="React (Standard Build)" />
81
+ <Checkbox
82
+ value="svelte"
83
+ label="The Svelte architecture which provides a highly optimized, completely compiler-driven framework avoiding virtual DOM boundaries. This massively extended text explicitly guarantees accurate wrapper constraint checking and multi-line flex alignment."
84
+ />
85
+ <Checkbox value="vue" label="Vue Configuration Map" />
86
+ </Checkbox.Group>
87
+ );
88
+ },
89
+ };
90
+
91
+ export const StackedLayout: Story = {
92
+ args: {
93
+ formLayout: "stacked",
94
+ required: true,
95
+ label: "Execution Targets",
96
+ error: "You must select at least one deployment target to compile.",
97
+ },
98
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
99
+ render: function StoryRender({ withLayer, layer, ...args }: any) {
100
+ const [value, setValue] = useState<string[]>(["react"]);
101
+ return (
102
+ <Checkbox.Group {...args} value={value} onChange={setValue}>
103
+ <Checkbox value="react" label="Browser Execution Context" />
104
+ <Checkbox
105
+ value="svelte"
106
+ label="Highly distributed Edge computing environments seamlessly bridging local runtime boundaries."
107
+ />
108
+ <Checkbox value="vue" label="Serverless Cloud Providers" />
109
+ </Checkbox.Group>
110
+ );
111
+ },
112
+ };
113
+
114
+ export const ReadOnly: Story = {
115
+ args: {
116
+ readOnly: true,
117
+ formLayout: "stacked",
118
+ required: true,
119
+ label: "Static ReadOnly Execution Locks",
120
+ assistiveText:
121
+ "This structure explicitly validates native component-level DOM preservation natively mapping lock bounds safely over interaction.",
122
+ },
123
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
124
+ render: function StoryRender({ withLayer, layer, ...args }: any) {
125
+ const [value, setValue] = useState<string[]>(["disabledNode"]);
126
+ return (
127
+ <Checkbox.Group {...args} value={value} onChange={setValue}>
128
+ <Checkbox
129
+ value="disabledNode"
130
+ label="Structurally Checked Node natively"
131
+ />
132
+ <Checkbox
133
+ value="disabledNodeEmpty"
134
+ label="Unchecked Configuration Limit"
135
+ />
136
+ </Checkbox.Group>
137
+ );
138
+ },
139
+ };