@recursica/adapter-mui-v7 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 (389) hide show
  1. package/.storybook/commonArgTypes.ts +148 -0
  2. package/ARCHITECTURE.md +18 -0
  3. package/CHANGELOG.md +582 -0
  4. package/LICENSE +21 -0
  5. package/OVERSTYLING.md +59 -0
  6. package/README.md +70 -0
  7. package/SETUP.md +92 -0
  8. package/USAGE.md +57 -0
  9. package/dist/adapter-mui-v7.cjs +292 -0
  10. package/dist/adapter-mui-v7.cjs.map +1 -0
  11. package/dist/adapter-mui-v7.css +1 -0
  12. package/dist/adapter-mui-v7.js +40757 -0
  13. package/dist/adapter-mui-v7.js.map +1 -0
  14. package/dist/index.d.ts +2350 -0
  15. package/dist/vite.svg +1 -0
  16. package/docs/PHILOSOPHY.md +39 -0
  17. package/llms.txt +76 -0
  18. package/package.json +151 -0
  19. package/recursica_brand.json +2677 -0
  20. package/recursica_tokens.json +799 -0
  21. package/recursica_ui-kit.json +14981 -0
  22. package/recursica_variables_scoped.css +30489 -0
  23. package/src/GlobalExemptions.modules.css +7 -0
  24. package/src/Introduction.stories.tsx +184 -0
  25. package/src/OverStyling.tsx +87 -0
  26. package/src/Version.tsx +37 -0
  27. package/src/components/Accordion/ACCORDION_IMPLEMENTATION_NOTES.md +107 -0
  28. package/src/components/Accordion/Accordion.module.css +362 -0
  29. package/src/components/Accordion/Accordion.stories.tsx +198 -0
  30. package/src/components/Accordion/Accordion.test.tsx +1 -0
  31. package/src/components/Accordion/Accordion.tsx +285 -0
  32. package/src/components/Accordion/USAGE.md +43 -0
  33. package/src/components/Accordion/index.ts +1 -0
  34. package/src/components/AssistiveElement/ASSISTIVEELEMENT_IMPLEMENTATION_NOTES.md +59 -0
  35. package/src/components/AssistiveElement/AssistiveElement.module.css +121 -0
  36. package/src/components/AssistiveElement/AssistiveElement.stories.tsx +68 -0
  37. package/src/components/AssistiveElement/AssistiveElement.test.tsx +1 -0
  38. package/src/components/AssistiveElement/AssistiveElement.tsx +94 -0
  39. package/src/components/AssistiveElement/USAGE.md +36 -0
  40. package/src/components/AssistiveElement/index.ts +1 -0
  41. package/src/components/AutoComplete/AutoComplete.module.css +456 -0
  42. package/src/components/AutoComplete/AutoComplete.stories.tsx +336 -0
  43. package/src/components/AutoComplete/AutoComplete.test.tsx +1 -0
  44. package/src/components/AutoComplete/AutoComplete.tsx +266 -0
  45. package/src/components/AutoComplete/IMPLEMENTATION_NOTES.md +37 -0
  46. package/src/components/AutoComplete/USAGE.md +68 -0
  47. package/src/components/AutoComplete/index.ts +1 -0
  48. package/src/components/Avatar/AVATAR_IMPLEMENTATION_NOTES.md +36 -0
  49. package/src/components/Avatar/Avatar.module.css +336 -0
  50. package/src/components/Avatar/Avatar.stories.tsx +92 -0
  51. package/src/components/Avatar/Avatar.test.tsx +1 -0
  52. package/src/components/Avatar/Avatar.tsx +88 -0
  53. package/src/components/Avatar/USAGE.md +38 -0
  54. package/src/components/Avatar/index.ts +1 -0
  55. package/src/components/Badge/Badge.module.css +115 -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 +61 -0
  59. package/src/components/Badge/USAGE.md +40 -0
  60. package/src/components/Badge/index.ts +1 -0
  61. package/src/components/Breadcrumb/BREADCRUMB_IMPLEMENTATION_NOTES.md +51 -0
  62. package/src/components/Breadcrumb/Breadcrumb.module.css +51 -0
  63. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
  64. package/src/components/Breadcrumb/Breadcrumb.test.tsx +1 -0
  65. package/src/components/Breadcrumb/Breadcrumb.tsx +70 -0
  66. package/src/components/Breadcrumb/USAGE.md +42 -0
  67. package/src/components/Breadcrumb/index.ts +1 -0
  68. package/src/components/Button/BUTTON_IMPLEMENTATION_NOTES.md +123 -0
  69. package/src/components/Button/Button.module.css +413 -0
  70. package/src/components/Button/Button.stories.tsx +196 -0
  71. package/src/components/Button/Button.styleIsolation.dom.test.tsx +98 -0
  72. package/src/components/Button/Button.tsx +156 -0
  73. package/src/components/Button/USAGE.md +46 -0
  74. package/src/components/Button/index.ts +1 -0
  75. package/src/components/Card/CARD_IMPLEMENTATION_NOTES.md +15 -0
  76. package/src/components/Card/Card.module.css +155 -0
  77. package/src/components/Card/Card.stories.tsx +131 -0
  78. package/src/components/Card/Card.test.tsx +1 -0
  79. package/src/components/Card/Card.tsx +202 -0
  80. package/src/components/Card/USAGE.md +57 -0
  81. package/src/components/Card/index.ts +1 -0
  82. package/src/components/Checkbox/CHECKBOX_IMPLEMENTATION_NOTES.md +14 -0
  83. package/src/components/Checkbox/Checkbox.module.css +286 -0
  84. package/src/components/Checkbox/Checkbox.stories.tsx +97 -0
  85. package/src/components/Checkbox/Checkbox.test.tsx +1 -0
  86. package/src/components/Checkbox/Checkbox.tsx +259 -0
  87. package/src/components/Checkbox/CheckboxGroup.stories.tsx +139 -0
  88. package/src/components/Checkbox/CheckboxGroup.tsx +148 -0
  89. package/src/components/Checkbox/USAGE.md +36 -0
  90. package/src/components/Checkbox/index.ts +6 -0
  91. package/src/components/Chip/CHIP_IMPLEMENTATION_NOTES.md +102 -0
  92. package/src/components/Chip/Chip.module.css +283 -0
  93. package/src/components/Chip/Chip.stories.tsx +154 -0
  94. package/src/components/Chip/Chip.test.tsx +1 -0
  95. package/src/components/Chip/Chip.tsx +168 -0
  96. package/src/components/Chip/USAGE.md +55 -0
  97. package/src/components/Chip/index.ts +1 -0
  98. package/src/components/Container/Container.stories.tsx +118 -0
  99. package/src/components/Container/Container.test.tsx +1 -0
  100. package/src/components/Container/Container.tsx +51 -0
  101. package/src/components/Container/IMPLEMENTATION_NOTES.md +5 -0
  102. package/src/components/Container/USAGE.md +48 -0
  103. package/src/components/Container/index.ts +1 -0
  104. package/src/components/DatePicker/DATEPICKER_IMPLEMENTATION_NOTES.md +29 -0
  105. package/src/components/DatePicker/DatePicker.icons.tsx +35 -0
  106. package/src/components/DatePicker/DatePicker.module.css +464 -0
  107. package/src/components/DatePicker/DatePicker.stories.tsx +163 -0
  108. package/src/components/DatePicker/DatePicker.test.tsx +1 -0
  109. package/src/components/DatePicker/DatePicker.tsx +229 -0
  110. package/src/components/DatePicker/USAGE.md +49 -0
  111. package/src/components/DatePicker/index.ts +1 -0
  112. package/src/components/Dropdown/BareDropdown.tsx +168 -0
  113. package/src/components/Dropdown/DROPDOWN_IMPLEMENTATION_NOTES.md +45 -0
  114. package/src/components/Dropdown/Dropdown.icons.tsx +33 -0
  115. package/src/components/Dropdown/Dropdown.module.css +535 -0
  116. package/src/components/Dropdown/Dropdown.stories.tsx +252 -0
  117. package/src/components/Dropdown/Dropdown.test.tsx +1 -0
  118. package/src/components/Dropdown/Dropdown.tsx +319 -0
  119. package/src/components/Dropdown/USAGE.md +68 -0
  120. package/src/components/Dropdown/index.ts +1 -0
  121. package/src/components/FileInput/FILEINPUT_IMPLEMENTATION_NOTES.md +153 -0
  122. package/src/components/FileInput/FileInput.module.css +268 -0
  123. package/src/components/FileInput/FileInput.stories.tsx +313 -0
  124. package/src/components/FileInput/FileInput.test.tsx +1 -0
  125. package/src/components/FileInput/FileInput.tsx +415 -0
  126. package/src/components/FileInput/USAGE.md +145 -0
  127. package/src/components/FileInput/index.ts +1 -0
  128. package/src/components/FileUpload/FILEUPLOAD_IMPLEMENTATION_NOTES.md +249 -0
  129. package/src/components/FileUpload/FileUpload.module.css +200 -0
  130. package/src/components/FileUpload/FileUpload.stories.tsx +362 -0
  131. package/src/components/FileUpload/FileUpload.test.tsx +1 -0
  132. package/src/components/FileUpload/FileUpload.tsx +352 -0
  133. package/src/components/FileUpload/USAGE.md +199 -0
  134. package/src/components/FileUpload/index.ts +1 -0
  135. package/src/components/Flex/Flex.stories.tsx +128 -0
  136. package/src/components/Flex/Flex.test.tsx +1 -0
  137. package/src/components/Flex/Flex.tsx +89 -0
  138. package/src/components/Flex/USAGE.md +41 -0
  139. package/src/components/Flex/index.ts +1 -0
  140. package/src/components/FormControlLayout/FormControlLayout.module.css +92 -0
  141. package/src/components/FormControlLayout/FormControlLayout.stories.tsx +118 -0
  142. package/src/components/FormControlLayout/FormControlLayout.test.tsx +1 -0
  143. package/src/components/FormControlLayout/FormControlLayout.tsx +72 -0
  144. package/src/components/FormControlLayout/USAGE.md +40 -0
  145. package/src/components/FormControlLayout/index.ts +1 -0
  146. package/src/components/FormControlWrapper/FORMCONTROLWRAPPER_IMPLEMENTATION_NOTES.md +35 -0
  147. package/src/components/FormControlWrapper/FormControlWrapper.module.css +87 -0
  148. package/src/components/FormControlWrapper/FormControlWrapper.stories.tsx +129 -0
  149. package/src/components/FormControlWrapper/FormControlWrapper.test.tsx +1 -0
  150. package/src/components/FormControlWrapper/FormControlWrapper.tsx +149 -0
  151. package/src/components/FormControlWrapper/USAGE.md +40 -0
  152. package/src/components/FormControlWrapper/index.ts +1 -0
  153. package/src/components/Grid/Grid.module.css +72 -0
  154. package/src/components/Grid/Grid.stories.tsx +161 -0
  155. package/src/components/Grid/Grid.test.tsx +1 -0
  156. package/src/components/Grid/Grid.tsx +155 -0
  157. package/src/components/Grid/IMPLEMENTATION_NOTES.md +24 -0
  158. package/src/components/Grid/USAGE.md +53 -0
  159. package/src/components/Grid/index.ts +1 -0
  160. package/src/components/Group/Group.stories.tsx +120 -0
  161. package/src/components/Group/Group.test.tsx +1 -0
  162. package/src/components/Group/Group.tsx +116 -0
  163. package/src/components/Group/USAGE.md +41 -0
  164. package/src/components/Group/index.ts +1 -0
  165. package/src/components/Heading/Heading.stories.tsx +50 -0
  166. package/src/components/Heading/Heading.test.tsx +1 -0
  167. package/src/components/Heading/Heading.tsx +28 -0
  168. package/src/components/Heading/USAGE.md +36 -0
  169. package/src/components/Heading/index.ts +1 -0
  170. package/src/components/HoverCard/HoverCard.module.css +107 -0
  171. package/src/components/HoverCard/HoverCard.stories.tsx +172 -0
  172. package/src/components/HoverCard/HoverCard.test.tsx +1 -0
  173. package/src/components/HoverCard/HoverCard.tsx +145 -0
  174. package/src/components/HoverCard/USAGE.md +45 -0
  175. package/src/components/HoverCard/index.ts +1 -0
  176. package/src/components/Label/LABEL_IMPLEMENTATION_NOTES.md +27 -0
  177. package/src/components/Label/Label.module.css +169 -0
  178. package/src/components/Label/Label.stories.tsx +131 -0
  179. package/src/components/Label/Label.test.tsx +1 -0
  180. package/src/components/Label/Label.tsx +96 -0
  181. package/src/components/Label/USAGE.md +36 -0
  182. package/src/components/Label/index.ts +1 -0
  183. package/src/components/Layer/USAGE.md +50 -0
  184. package/src/components/Link/LINK_IMPLEMENTATION_NOTES.md +9 -0
  185. package/src/components/Link/Link.module.css +105 -0
  186. package/src/components/Link/Link.stories.tsx +58 -0
  187. package/src/components/Link/Link.test.tsx +1 -0
  188. package/src/components/Link/Link.tsx +45 -0
  189. package/src/components/Link/USAGE.md +40 -0
  190. package/src/components/Link/index.ts +1 -0
  191. package/src/components/Loader/LOADER_IMPLEMENTATION_NOTES.md +25 -0
  192. package/src/components/Loader/Loader.animate.dom.test.tsx +72 -0
  193. package/src/components/Loader/Loader.module.css +175 -0
  194. package/src/components/Loader/Loader.stories.tsx +123 -0
  195. package/src/components/Loader/Loader.test.tsx +1 -0
  196. package/src/components/Loader/Loader.tsx +72 -0
  197. package/src/components/Loader/USAGE.md +42 -0
  198. package/src/components/Loader/index.ts +1 -0
  199. package/src/components/Menu/IMPLEMENTATION_NOTES.md +5 -0
  200. package/src/components/Menu/Menu.module.css +283 -0
  201. package/src/components/Menu/Menu.stories.tsx +405 -0
  202. package/src/components/Menu/Menu.test.tsx +1 -0
  203. package/src/components/Menu/Menu.tsx +103 -0
  204. package/src/components/Menu/USAGE.md +53 -0
  205. package/src/components/Menu/index.ts +1 -0
  206. package/src/components/Modal/MODAL_IMPLEMENTATION_NOTES.md +31 -0
  207. package/src/components/Modal/Modal.module.css +302 -0
  208. package/src/components/Modal/Modal.stories.tsx +105 -0
  209. package/src/components/Modal/Modal.test.tsx +1 -0
  210. package/src/components/Modal/Modal.tsx +231 -0
  211. package/src/components/Modal/USAGE.md +40 -0
  212. package/src/components/Modal/index.ts +1 -0
  213. package/src/components/NumberInput/NUMBER_INPUT_IMPLEMENTATION_NOTES.md +93 -0
  214. package/src/components/NumberInput/NumberInput.module.css +303 -0
  215. package/src/components/NumberInput/NumberInput.stories.tsx +96 -0
  216. package/src/components/NumberInput/NumberInput.test.tsx +1 -0
  217. package/src/components/NumberInput/NumberInput.tsx +273 -0
  218. package/src/components/NumberInput/USAGE.md +36 -0
  219. package/src/components/NumberInput/index.ts +1 -0
  220. package/src/components/Pagination/IMPLEMENTATION_NOTES.md +40 -0
  221. package/src/components/Pagination/Pagination.icons.tsx +66 -0
  222. package/src/components/Pagination/Pagination.module.css +197 -0
  223. package/src/components/Pagination/Pagination.stories.tsx +48 -0
  224. package/src/components/Pagination/Pagination.test.tsx +1 -0
  225. package/src/components/Pagination/Pagination.tsx +123 -0
  226. package/src/components/Pagination/USAGE.md +36 -0
  227. package/src/components/Pagination/index.ts +1 -0
  228. package/src/components/Panel/PANEL_IMPLEMENTATION_NOTES.md +133 -0
  229. package/src/components/Panel/Panel.module.css +231 -0
  230. package/src/components/Panel/Panel.stories.tsx +227 -0
  231. package/src/components/Panel/Panel.test.tsx +1 -0
  232. package/src/components/Panel/Panel.tsx +186 -0
  233. package/src/components/Panel/USAGE.md +46 -0
  234. package/src/components/Panel/index.ts +1 -0
  235. package/src/components/Popover/IMPLEMENTATION_NOTES.md +22 -0
  236. package/src/components/Popover/Popover.module.css +118 -0
  237. package/src/components/Popover/Popover.stories.tsx +133 -0
  238. package/src/components/Popover/Popover.test.tsx +1 -0
  239. package/src/components/Popover/Popover.tsx +267 -0
  240. package/src/components/Popover/USAGE.md +69 -0
  241. package/src/components/Popover/index.ts +1 -0
  242. package/src/components/Radio/RADIO_IMPLEMENTATION_NOTES.md +12 -0
  243. package/src/components/Radio/Radio.module.css +247 -0
  244. package/src/components/Radio/Radio.stories.tsx +93 -0
  245. package/src/components/Radio/Radio.test.tsx +1 -0
  246. package/src/components/Radio/Radio.tsx +223 -0
  247. package/src/components/Radio/RadioGroup.stories.tsx +117 -0
  248. package/src/components/Radio/RadioGroup.tsx +122 -0
  249. package/src/components/Radio/USAGE.md +36 -0
  250. package/src/components/Radio/index.ts +2 -0
  251. package/src/components/ReadOnlyField/ReadOnlyBooleanField.tsx +21 -0
  252. package/src/components/ReadOnlyField/ReadOnlyField.module.css +54 -0
  253. package/src/components/ReadOnlyField/ReadOnlyField.stories.tsx +163 -0
  254. package/src/components/ReadOnlyField/ReadOnlyField.test.tsx +1 -0
  255. package/src/components/ReadOnlyField/ReadOnlyField.tsx +108 -0
  256. package/src/components/ReadOnlyField/ReadOnlySwitchField.tsx +21 -0
  257. package/src/components/ReadOnlyField/ReadOnlyTextField.tsx +48 -0
  258. package/src/components/ReadOnlyField/USAGE.md +36 -0
  259. package/src/components/ReadOnlyField/WithReadOnlyWrapper.tsx +93 -0
  260. package/src/components/ReadOnlyField/index.ts +2 -0
  261. package/src/components/RecursicaThemeProvider/USAGE.md +60 -0
  262. package/src/components/SegmentedControl/IMPLEMENTATION_NOTES.md +14 -0
  263. package/src/components/SegmentedControl/SegmentedControl.module.css +201 -0
  264. package/src/components/SegmentedControl/SegmentedControl.stories.tsx +106 -0
  265. package/src/components/SegmentedControl/SegmentedControl.test.tsx +1 -0
  266. package/src/components/SegmentedControl/SegmentedControl.tsx +149 -0
  267. package/src/components/SegmentedControl/USAGE.md +49 -0
  268. package/src/components/SegmentedControl/index.ts +1 -0
  269. package/src/components/Slider/IMPLEMENTATION_NOTES.md +55 -0
  270. package/src/components/Slider/Slider.module.css +635 -0
  271. package/src/components/Slider/Slider.stories.tsx +282 -0
  272. package/src/components/Slider/Slider.test.tsx +1 -0
  273. package/src/components/Slider/Slider.tsx +435 -0
  274. package/src/components/Slider/USAGE.md +56 -0
  275. package/src/components/Slider/index.ts +1 -0
  276. package/src/components/Stack/Stack.stories.tsx +108 -0
  277. package/src/components/Stack/Stack.test.tsx +1 -0
  278. package/src/components/Stack/Stack.tsx +43 -0
  279. package/src/components/Stack/USAGE.md +41 -0
  280. package/src/components/Stack/index.ts +1 -0
  281. package/src/components/Stepper/IMPLEMENTATION_NOTES.md +120 -0
  282. package/src/components/Stepper/Stepper.module.css +474 -0
  283. package/src/components/Stepper/Stepper.stories.tsx +157 -0
  284. package/src/components/Stepper/Stepper.test.tsx +1 -0
  285. package/src/components/Stepper/Stepper.tsx +240 -0
  286. package/src/components/Stepper/USAGE.md +45 -0
  287. package/src/components/Stepper/index.ts +1 -0
  288. package/src/components/Switch/SWITCH_IMPLEMENTATION_NOTES.md +147 -0
  289. package/src/components/Switch/Switch.module.css +346 -0
  290. package/src/components/Switch/Switch.stories.tsx +114 -0
  291. package/src/components/Switch/Switch.test.tsx +1 -0
  292. package/src/components/Switch/Switch.tsx +294 -0
  293. package/src/components/Switch/SwitchGroup.stories.tsx +132 -0
  294. package/src/components/Switch/SwitchGroup.tsx +156 -0
  295. package/src/components/Switch/USAGE.md +36 -0
  296. package/src/components/Switch/index.ts +2 -0
  297. package/src/components/Table/TABLE_IMPLEMENTATION_NOTES.md +75 -0
  298. package/src/components/Table/Table.module.css +462 -0
  299. package/src/components/Table/Table.stories.tsx +154 -0
  300. package/src/components/Table/Table.test.tsx +1 -0
  301. package/src/components/Table/Table.tsx +250 -0
  302. package/src/components/Table/USAGE.md +90 -0
  303. package/src/components/Table/index.ts +1 -0
  304. package/src/components/Tabs/IMPLEMENTATION_NOTES.md +76 -0
  305. package/src/components/Tabs/Tabs.module.css +801 -0
  306. package/src/components/Tabs/Tabs.stories.tsx +174 -0
  307. package/src/components/Tabs/Tabs.test.tsx +1 -0
  308. package/src/components/Tabs/Tabs.tsx +103 -0
  309. package/src/components/Tabs/USAGE.md +61 -0
  310. package/src/components/Tabs/index.ts +1 -0
  311. package/src/components/Text/TEXT_IMPLEMENTATION_NOTES.md +10 -0
  312. package/src/components/Text/Text.stories.tsx +75 -0
  313. package/src/components/Text/Text.test.tsx +1 -0
  314. package/src/components/Text/Text.tsx +19 -0
  315. package/src/components/Text/USAGE.md +40 -0
  316. package/src/components/Text/index.ts +1 -0
  317. package/src/components/TextArea/TEXTAREA_IMPLEMENTATION_NOTES.md +42 -0
  318. package/src/components/TextArea/TextArea.module.css +203 -0
  319. package/src/components/TextArea/TextArea.stories.tsx +94 -0
  320. package/src/components/TextArea/TextArea.test.tsx +1 -0
  321. package/src/components/TextArea/TextArea.tsx +162 -0
  322. package/src/components/TextArea/USAGE.md +38 -0
  323. package/src/components/TextArea/index.ts +1 -0
  324. package/src/components/TextField/TextField.module.css +271 -0
  325. package/src/components/TextField/TextField.stories.tsx +162 -0
  326. package/src/components/TextField/TextField.test.tsx +1 -0
  327. package/src/components/TextField/TextField.tsx +182 -0
  328. package/src/components/TextField/USAGE.md +38 -0
  329. package/src/components/TextField/index.ts +1 -0
  330. package/src/components/TimePicker/TIMEPICKER_IMPLEMENTATION_NOTES.md +89 -0
  331. package/src/components/TimePicker/TimePicker.module.css +262 -0
  332. package/src/components/TimePicker/TimePicker.stories.tsx +155 -0
  333. package/src/components/TimePicker/TimePicker.test.tsx +1 -0
  334. package/src/components/TimePicker/TimePicker.tsx +277 -0
  335. package/src/components/TimePicker/USAGE.md +61 -0
  336. package/src/components/TimePicker/index.ts +1 -0
  337. package/src/components/Timeline/IMPLEMENTATION_NOTES.md +42 -0
  338. package/src/components/Timeline/Timeline.module.css +363 -0
  339. package/src/components/Timeline/Timeline.stories.tsx +128 -0
  340. package/src/components/Timeline/Timeline.test.tsx +1 -0
  341. package/src/components/Timeline/Timeline.tsx +90 -0
  342. package/src/components/Timeline/TimelineItem.tsx +95 -0
  343. package/src/components/Timeline/USAGE.md +41 -0
  344. package/src/components/Timeline/index.ts +2 -0
  345. package/src/components/Toast/TOAST_IMPLEMENTATION_NOTES.md +37 -0
  346. package/src/components/Toast/Toast.module.css +193 -0
  347. package/src/components/Toast/Toast.stories.tsx +67 -0
  348. package/src/components/Toast/Toast.test.tsx +1 -0
  349. package/src/components/Toast/Toast.tsx +121 -0
  350. package/src/components/Toast/USAGE.md +42 -0
  351. package/src/components/Toast/index.ts +1 -0
  352. package/src/components/Tooltip/Tooltip.module.css +83 -0
  353. package/src/components/Tooltip/Tooltip.stories.tsx +165 -0
  354. package/src/components/Tooltip/Tooltip.test.tsx +1 -0
  355. package/src/components/Tooltip/Tooltip.tsx +78 -0
  356. package/src/components/Tooltip/USAGE.md +40 -0
  357. package/src/components/Tooltip/index.ts +1 -0
  358. package/src/components/TransferList/TRANSFERLIST_IMPLEMENTATION_NOTES.md +140 -0
  359. package/src/components/TransferList/TransferList.module.css +174 -0
  360. package/src/components/TransferList/TransferList.stories.tsx +121 -0
  361. package/src/components/TransferList/TransferList.test.tsx +1 -0
  362. package/src/components/TransferList/TransferList.tsx +419 -0
  363. package/src/components/TransferList/USAGE.md +77 -0
  364. package/src/components/TransferList/index.ts +1 -0
  365. package/src/components/Tree/IMPLEMENTATION_NOTES.md +53 -0
  366. package/src/components/Tree/Tree.module.css +272 -0
  367. package/src/components/Tree/Tree.stories.tsx +104 -0
  368. package/src/components/Tree/Tree.test.tsx +1 -0
  369. package/src/components/Tree/Tree.tsx +298 -0
  370. package/src/components/Tree/USAGE.md +99 -0
  371. package/src/components/Tree/index.ts +1 -0
  372. package/src/components/Typography/TYPOGRAPHY_IMPLEMENTATION_NOTES.md +17 -0
  373. package/src/components/Typography/Typography.module.css +13 -0
  374. package/src/components/Typography/Typography.test.tsx +1 -0
  375. package/src/components/Typography/Typography.tsx +43 -0
  376. package/src/components/Typography/USAGE.md +40 -0
  377. package/src/components/Typography/index.ts +1 -0
  378. package/src/components/index.ts +50 -0
  379. package/src/env.d.ts +7 -0
  380. package/src/index.ts +194 -0
  381. package/src/types/index.ts +9 -0
  382. package/src/types/scss-modules.d.ts +9 -0
  383. package/src/utils/ColorSchemeWrapper.tsx +23 -0
  384. package/src/utils/RequireAccessibleLabel.ts +1 -0
  385. package/src/utils/copyToClipboard.ts +36 -0
  386. package/src/utils/filterStylingProps.test.ts +85 -0
  387. package/src/utils/filterStylingProps.ts +143 -0
  388. package/src/utils/index.ts +1 -0
  389. package/src/utils/renderRichOption.tsx +51 -0
@@ -0,0 +1,41 @@
1
+ # Timeline - Usage Guide
2
+
3
+ This document describes how to integrate and use the `Timeline` component in your projects using `@recursica/adapter-mui-v7`.
4
+
5
+ ---
6
+
7
+ ## 1. Import Reference
8
+
9
+ ```tsx
10
+ import { Timeline } from "@recursica/adapter-mui-v7";
11
+ ```
12
+
13
+ ---
14
+
15
+ ## 2. Basic Example
16
+
17
+ ```tsx
18
+ import React from "react";
19
+ import { Timeline } from "@recursica/adapter-mui-v7";
20
+
21
+ export default function Demo() {
22
+ return (
23
+ <Timeline active={1}>
24
+ <Timeline.Item title="Step 1">Created branch</Timeline.Item>
25
+ <Timeline.Item title="Step 2">Pushed changes</Timeline.Item>
26
+ </Timeline>
27
+ );
28
+ }
29
+ ```
30
+
31
+ ---
32
+
33
+ ## 3. Design System Integration
34
+
35
+ All Recursica components in the `@recursica/adapter-mui-v7` package adhere strictly to design system spacing, scaling, and behavior patterns.
36
+
37
+ > [!IMPORTANT]
38
+ >
39
+ > - **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.
40
+ > - **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.
41
+ > - **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,2 @@
1
+ export * from "./Timeline";
2
+ export * from "./TimelineItem";
@@ -0,0 +1,37 @@
1
+ # Toast – Implementation Notes
2
+
3
+ Decisions and design tweaks tailored for the UI Kit's Toast wrapped against `@mui/material`'s `Alert` component.
4
+
5
+ ---
6
+
7
+ ## 1. No default icon (source-of-truth audit, 2026-08-30)
8
+
9
+ **Decision:** `icon` defaults to suppressed (no icon) when the caller doesn't supply one, matching mantine-adapter's `Notification`-based Toast, which never renders an icon unless explicitly given one (see its own `TOAST_IMPLEMENTATION_NOTES.md` §3).
10
+
11
+ **Implementation:** MUI's `Alert` falls back to its own built-in severity icon (a checkmark, since MUI's default `severity` is `"success"`) whenever its `icon` prop is left `undefined` — `icon={false}` is the only way to render no icon at all. `Toast` now passes `icon={icon ?? false}` instead of `icon={icon}` so an unset `icon` prop renders nothing, not MUI's own default. Found via the `adapter-tester:source-of-truth` divergence check: mui's `Default` story rendered a leading checkmark icon mantine's golden never had.
12
+
13
+ ---
14
+
15
+ ## 2. Doubled vertical padding (source-of-truth audit, 2026-08-30)
16
+
17
+ **Symptom:** `ui-kit-toast--default` (and `with-icon`) rendered visibly taller than mantine's —
18
+ confirmed via computed styles: mui's `.MuiAlert-root` measured 93.7px tall vs mantine's
19
+ `.mantine-Notification-root` at 76.8px, for identical content and an identical
20
+ `--recursica_ui-kit_components_toast_properties_vertical-padding`/`horizontal-padding` on
21
+ `.root` in both (`8px 16px` either way — the CSS files are otherwise byte-identical).
22
+
23
+ **Root cause:** MUI's `Alert` renders internal wrapper `<div>`s for its icon/message/action
24
+ slots (`.MuiAlert-message`, `.MuiAlert-icon`, `.MuiAlert-action`), and each of those ships its
25
+ own non-zero default padding (`8px 0`, `7px 0`, and `4px 0 0 16px` respectively, straight from
26
+ MUI's own `Alert.js` source) that stacks on top of `.root`'s own padding token — doubling the
27
+ effective vertical padding. Mantine's `Notification` has no equivalent built-in padding on its
28
+ `body`/`icon`/`close` slots, so `.root`'s token is already the sole source of padding there;
29
+ that's "the correct var mantine uses" — mui just wasn't the only thing applying it.
30
+
31
+ **Fix:** Added `padding: 0 !important;` to `.body` (→ `.MuiAlert-message`), `.icon` (→
32
+ `.MuiAlert-icon`), and `.closeButton` (→ `.MuiAlert-action`) in `Toast.module.css`, so
33
+ `.root`'s own `vertical-padding`/`horizontal-padding` tokens are the only padding applied,
34
+ matching mantine exactly. `!important` follows the same pattern already used on `.icon`'s other
35
+ overrides in this file (MUI's own emotion-generated class can win the cascade depending on
36
+ `<style>` injection order otherwise). Verified via computed styles after the fix: mui's root
37
+ measured 77.7px vs mantine's 76.8px — the ~1px residual is font-metric noise, not padding.
@@ -0,0 +1,193 @@
1
+ /* HARDCODED VALUES:
2
+ - border-style: solid. Baseline so the per-variant border-color tokens actually render.
3
+ */
4
+
5
+ /* ======================================
6
+ TOAST / NOTIFICATION ROOT
7
+ ====================================== */
8
+
9
+ .root {
10
+ border-radius: var(
11
+ --recursica_ui-kit_components_toast_properties_border-radius
12
+ );
13
+ border-width: var(--recursica_ui-kit_components_toast_properties_border-size);
14
+ border-style: solid; /* HARDCODE: baseline so border-color tokens render */
15
+ border-color: var(
16
+ --recursica_ui-kit_components_toast_variants_styles_default_properties_colors_border-color
17
+ );
18
+ box-shadow: var(
19
+ --recursica_ui-kit_components_toast_properties_elevation_layer-0
20
+ );
21
+ padding: var(--recursica_ui-kit_components_toast_properties_vertical-padding)
22
+ var(--recursica_ui-kit_components_toast_properties_horizontal-padding);
23
+ min-width: var(--recursica_ui-kit_components_toast_properties_min-width);
24
+ max-width: var(--recursica_ui-kit_components_toast_properties_max-width);
25
+ min-height: var(--recursica_ui-kit_components_toast_properties_min-height);
26
+
27
+ /* Default Variant (Base) */
28
+ background-color: var(
29
+ --recursica_ui-kit_components_toast_variants_styles_default_properties_colors_background-color
30
+ );
31
+ gap: var(--recursica_ui-kit_components_toast_properties_spacing);
32
+
33
+ /* Hide Mantine's native colored vertical line */
34
+ &::before {
35
+ display: none;
36
+ content: none;
37
+ }
38
+
39
+ & .icon {
40
+ width: var(--recursica_ui-kit_components_toast_properties_icon) !important;
41
+ height: var(--recursica_ui-kit_components_toast_properties_icon) !important;
42
+ margin-right: 0 !important; /* Override Mantine's native spacing in favor of flex gap */
43
+ background-color: transparent !important; /* Remove Mantine's native circle background */
44
+ /* MUI's `.MuiAlert-icon` ships its own default `padding: 7px 0`, stacking on top of
45
+ `--recursica_ui-kit_components_toast_properties_vertical-padding` already applied to
46
+ `.root` below — zero it for the same reason as `.body`'s padding override. */
47
+ padding: 0 !important;
48
+
49
+ color: var(
50
+ --recursica_ui-kit_components_toast_variants_styles_default_properties_colors_text-color
51
+ );
52
+ }
53
+
54
+ & .loader {
55
+ margin-right: 0 !important; /* Override native spacing */
56
+ }
57
+ & .title,
58
+ & .description {
59
+ color: var(
60
+ --recursica_ui-kit_components_toast_variants_styles_default_properties_colors_text-color
61
+ );
62
+ }
63
+ & .closeButton {
64
+ color: var(
65
+ --recursica_ui-kit_components_toast_variants_styles_default_properties_colors_button
66
+ );
67
+ /* MUI's `.MuiAlert-action` ships its own default `padding: 4px 0 0 16px`, adding vertical
68
+ space beyond `.root`'s own vertical-padding token (mantine's close button has no built-in
69
+ padding to conflict with it) — zero it so `.root`'s padding is the single source of
70
+ truth, same as `.body` below. `margin-left: auto` (MUI's own default, untouched) still
71
+ keeps it pinned to the row's end. */
72
+ padding: 0 !important;
73
+ }
74
+
75
+ /* Error Variant styling */
76
+ &[data-variant="error"] {
77
+ background-color: var(
78
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_background-color
79
+ );
80
+ border-color: var(
81
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_border-color
82
+ );
83
+
84
+ & .icon {
85
+ color: var(
86
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_text-color
87
+ ) !important;
88
+ }
89
+ & .title,
90
+ & .description {
91
+ color: var(
92
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_text-color
93
+ );
94
+ }
95
+ & .closeButton {
96
+ color: var(
97
+ --recursica_ui-kit_components_toast_variants_styles_error_properties_colors_button
98
+ );
99
+ }
100
+ }
101
+
102
+ /* Success Variant styling */
103
+ &[data-variant="success"] {
104
+ background-color: var(
105
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_background-color
106
+ );
107
+ border-color: var(
108
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_border-color
109
+ );
110
+
111
+ & .icon {
112
+ color: var(
113
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_text-color
114
+ ) !important;
115
+ }
116
+ & .title,
117
+ & .description {
118
+ color: var(
119
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_text-color
120
+ );
121
+ }
122
+ & .closeButton {
123
+ color: var(
124
+ --recursica_ui-kit_components_toast_variants_styles_success_properties_colors_button
125
+ );
126
+ }
127
+ }
128
+ }
129
+
130
+ /* ======================================
131
+ TOAST BODY
132
+ ====================================== */
133
+
134
+ .body {
135
+ /* No extra gap here, root handles icon-to-text, body can handle title-to-description if needed */
136
+ /* MUI's `.MuiAlert-message` ships its own default `padding: 8px 0`, doubling up on top of
137
+ `--recursica_ui-kit_components_toast_properties_vertical-padding` already applied to
138
+ `.root` above (mantine's Notification body has no built-in padding to conflict with the
139
+ same token — confirmed via computed styles: mui's root measured 93.7px tall vs mantine's
140
+ 76.8px for identical content). Zero it so `.root`'s own padding is the single source of
141
+ truth, matching mantine exactly. */
142
+ padding: 0 !important;
143
+ }
144
+
145
+ .title {
146
+ font-family: var(
147
+ --recursica_ui-kit_components_toast_properties_text_font-family
148
+ );
149
+ font-size: var(--recursica_ui-kit_components_toast_properties_text_font-size);
150
+ font-style: var(
151
+ --recursica_ui-kit_components_toast_properties_text_font-style
152
+ );
153
+ font-weight: var(
154
+ --recursica_ui-kit_components_toast_properties_text_font-weight
155
+ );
156
+ letter-spacing: var(
157
+ --recursica_ui-kit_components_toast_properties_text_letter-spacing
158
+ );
159
+ line-height: var(
160
+ --recursica_ui-kit_components_toast_properties_text_line-height
161
+ );
162
+ text-decoration: var(
163
+ --recursica_ui-kit_components_toast_properties_text_text-decoration
164
+ );
165
+ text-transform: var(
166
+ --recursica_ui-kit_components_toast_properties_text_text-transform
167
+ );
168
+ }
169
+
170
+ .description {
171
+ font-family: var(
172
+ --recursica_ui-kit_components_toast_properties_text_font-family
173
+ );
174
+ font-size: var(--recursica_ui-kit_components_toast_properties_text_font-size);
175
+ font-style: var(
176
+ --recursica_ui-kit_components_toast_properties_text_font-style
177
+ );
178
+ font-weight: var(
179
+ --recursica_ui-kit_components_toast_properties_text_font-weight
180
+ );
181
+ letter-spacing: var(
182
+ --recursica_ui-kit_components_toast_properties_text_letter-spacing
183
+ );
184
+ line-height: var(
185
+ --recursica_ui-kit_components_toast_properties_text_line-height
186
+ );
187
+ text-decoration: var(
188
+ --recursica_ui-kit_components_toast_properties_text_text-decoration
189
+ );
190
+ text-transform: var(
191
+ --recursica_ui-kit_components_toast_properties_text_text-transform
192
+ );
193
+ }
@@ -0,0 +1,67 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Toast } from "./Toast";
3
+
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ type ToastStoryArgs = Record<string, any>;
6
+
7
+ const meta = {
8
+ title: "UI-Kit/Toast",
9
+ component: Toast,
10
+ tags: ["autodocs"],
11
+ parameters: {
12
+ docs: {
13
+ description: {
14
+ component:
15
+ "The `Toast` component is a standalone visual component wrapping Mui's `Alert`. Note that this component is visually decoupled from `@mui/material/Snackbar` and is meant to be used when you need to render a static or manually-controlled notification panel.",
16
+ },
17
+ },
18
+ },
19
+ argTypes: {
20
+ title: {
21
+ control: "text",
22
+ description: "Title displayed above the message body",
23
+ },
24
+ children: {
25
+ control: "text",
26
+ description: "Main notification message",
27
+ },
28
+ withCloseButton: {
29
+ control: "boolean",
30
+ description: "Whether the close button is visible",
31
+ },
32
+ },
33
+ } satisfies Meta<typeof Toast>;
34
+
35
+ export default meta;
36
+ type Story = StoryObj<typeof meta>;
37
+
38
+ export const Default: Story = {
39
+ args: {
40
+ variant: "default",
41
+ title: "Update Available",
42
+ children:
43
+ "A new version of the application is available to download. Please restart your browser to apply the latest security patches and feature updates. If you ignore this message, the update will automatically install during your next session.",
44
+ withCloseButton: true,
45
+ },
46
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
47
+ render: ({ withLayer, layer, ...args }: ToastStoryArgs) => {
48
+ return <Toast {...args} />;
49
+ },
50
+ };
51
+
52
+ export const WithIcon: Story = {
53
+ args: {
54
+ variant: "default",
55
+ title: "Action Required",
56
+ children:
57
+ "You must complete your profile setup before accessing this feature.",
58
+ icon: "⚠️",
59
+ },
60
+ parameters: {
61
+ controls: { disable: true },
62
+ },
63
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
64
+ render: ({ withLayer, layer, ...args }: ToastStoryArgs) => {
65
+ return <Toast {...args} />;
66
+ },
67
+ };
@@ -0,0 +1 @@
1
+ // Placeholder for future Toast component tests. Add tests here if/when needed.
@@ -0,0 +1,121 @@
1
+ import React from "react";
2
+ import {
3
+ Alert as MuiAlert,
4
+ AlertTitle as MuiAlertTitle,
5
+ IconButton as MuiIconButton,
6
+ type AlertProps as MuiAlertProps,
7
+ } from "@mui/material";
8
+ import {
9
+ filterStylingProps,
10
+ mergeClassNames,
11
+ type RecursicaOverStyled,
12
+ } from "../../utils/filterStylingProps";
13
+ import styles from "./Toast.module.css";
14
+
15
+ import { type RecursicaToastProps as BaseRecursicaToastProps } from "@recursica/adapter-common";
16
+
17
+ export interface RecursicaToastProps extends BaseRecursicaToastProps {
18
+ withCloseButton?: boolean;
19
+ title?: React.ReactNode;
20
+ icon?: React.ReactNode;
21
+ onClose?: () => void;
22
+ }
23
+
24
+ /**
25
+ * Toast component wrapping Mui's Alert.
26
+ *
27
+ * Can be used as a standalone visual component to display a notification or message.
28
+ */
29
+ export type ToastProps = RecursicaOverStyled<
30
+ Omit<MuiAlertProps, "color" | "radius" | "variant" | "onClose"> &
31
+ RecursicaToastProps
32
+ >;
33
+
34
+ const CloseIcon = () => (
35
+ <svg
36
+ xmlns="http://www.w3.org/2000/svg"
37
+ width="20"
38
+ height="20"
39
+ viewBox="0 0 24 24"
40
+ fill="none"
41
+ stroke="currentColor"
42
+ strokeWidth="2"
43
+ strokeLinecap="round"
44
+ strokeLinejoin="round"
45
+ >
46
+ <path d="M18 6L6 18M6 6l12 12" />
47
+ </svg>
48
+ );
49
+
50
+ export const Toast = React.forwardRef<HTMLDivElement, ToastProps>(
51
+ function Toast(
52
+ {
53
+ overStyled = false,
54
+ variant = "default",
55
+ withCloseButton = true,
56
+ title,
57
+ icon,
58
+ children,
59
+ onClose,
60
+ className,
61
+ ...rest
62
+ },
63
+ ref,
64
+ ) {
65
+ const sanitizedProps = filterStylingProps(rest, overStyled);
66
+
67
+ // Note MUI's actual prop is "classes", not "classNames" (that's Mantine's naming) — this
68
+ // used to read the wrong key, silently no-op-ing any caller-supplied classes.
69
+ const mergedClassNames = mergeClassNames(
70
+ {
71
+ root: styles.root,
72
+ message: styles.body,
73
+ icon: styles.icon,
74
+ action: styles.closeButton,
75
+ },
76
+ (sanitizedProps as Record<string, unknown>).classes as
77
+ | Partial<Record<string, string>>
78
+ | undefined,
79
+ );
80
+
81
+ const handleClose = () => {
82
+ if (onClose) onClose();
83
+ };
84
+
85
+ return (
86
+ <MuiAlert
87
+ ref={ref}
88
+ {...(sanitizedProps as unknown as Omit<
89
+ MuiAlertProps,
90
+ "color" | "radius" | "variant" | "onClose"
91
+ >)}
92
+ // MUI's Alert falls back to its own built-in severity icon (default severity is
93
+ // "success", hence a checkmark) when `icon` is left `undefined` — `icon={false}`
94
+ // is required to render no icon at all, which is Recursica's own default.
95
+ icon={icon ?? false}
96
+ data-variant={variant}
97
+ className={`${className || ""}`}
98
+ classes={mergedClassNames}
99
+ action={
100
+ withCloseButton ? (
101
+ <MuiIconButton
102
+ size="small"
103
+ aria-label="close"
104
+ color="inherit"
105
+ onClick={handleClose}
106
+ >
107
+ <CloseIcon />
108
+ </MuiIconButton>
109
+ ) : undefined
110
+ }
111
+ >
112
+ {title && (
113
+ <MuiAlertTitle className={styles.title}>{title}</MuiAlertTitle>
114
+ )}
115
+ <div className={styles.description}>{children}</div>
116
+ </MuiAlert>
117
+ );
118
+ },
119
+ );
120
+
121
+ Toast.displayName = "Toast";
@@ -0,0 +1,42 @@
1
+ # Toast - Usage Guide
2
+
3
+ This document describes how to integrate and use the `Toast` component in your projects using `@recursica/adapter-mui-v7`.
4
+
5
+ ---
6
+
7
+ ## 1. Import Reference
8
+
9
+ ```tsx
10
+ import { Toast } from "@recursica/adapter-mui-v7";
11
+ ```
12
+
13
+ ---
14
+
15
+ ## 2. Basic Example
16
+
17
+ ```tsx
18
+ import React from "react";
19
+ import { Toast } from "@recursica/adapter-mui-v7";
20
+
21
+ export default function Demo() {
22
+ return (
23
+ <Toast
24
+ title="Success"
25
+ message="Your action completed successfully"
26
+ state="success"
27
+ />
28
+ );
29
+ }
30
+ ```
31
+
32
+ ---
33
+
34
+ ## 3. Design System Integration
35
+
36
+ All Recursica components in the `@recursica/adapter-mui-v7` package adhere strictly to design system spacing, scaling, and behavior patterns.
37
+
38
+ > [!IMPORTANT]
39
+ >
40
+ > - **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.
41
+ > - **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.
42
+ > - **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 "./Toast";
@@ -0,0 +1,83 @@
1
+ /* HARDCODED VALUES:
2
+ - border-style: solid. Structural rendering rule for the tooltip border (Mantine uses Box
3
+ which may not set border-style natively). Same pattern as Menu / HoverCard.
4
+ - arrowSize defaults to 16 in Tooltip.tsx. Mantine uses arrowSize for inline width/height
5
+ and positioning (-arrowSize/2) calculations that cannot be CSS-driven. The default matches
6
+ the Recursica beak-size token (16px). See COMPONENT_ISSUES.md for details.
7
+ - All structural layout (display, position, overflow) is deferred to Mantine's native
8
+ behavior. We only override visual design tokens (colors, typography, spacing, borders).
9
+ */
10
+
11
+ /* ======================================
12
+ TOOLTIP CONTAINER
13
+ ====================================== */
14
+
15
+ .tooltip {
16
+ background-color: var(
17
+ --recursica_ui-kit_components_tooltip_properties_colors_background-color
18
+ );
19
+ border-style: solid; /* HARDCODE: Mantine Box does not set border-style natively */
20
+ border-width: var(
21
+ --recursica_ui-kit_components_tooltip_properties_border-size
22
+ );
23
+ border-color: var(
24
+ --recursica_ui-kit_components_tooltip_properties_colors_border-color
25
+ );
26
+ border-radius: var(
27
+ --recursica_ui-kit_components_tooltip_properties_border-radius
28
+ );
29
+ box-shadow: var(--recursica_ui-kit_components_tooltip_properties_elevation);
30
+
31
+ min-width: var(--recursica_ui-kit_components_tooltip_properties_min-width);
32
+ min-height: var(--recursica_ui-kit_components_tooltip_properties_min-height);
33
+ max-width: var(--recursica_ui-kit_components_tooltip_properties_max-width);
34
+
35
+ padding: var(
36
+ --recursica_ui-kit_components_tooltip_properties_vertical-padding
37
+ )
38
+ var(--recursica_ui-kit_components_tooltip_properties_horizontal-padding);
39
+
40
+ /* Vertically center text within min-height container */
41
+ display: flex;
42
+ align-items: center;
43
+
44
+ /* Typography */
45
+ font-family: var(
46
+ --recursica_ui-kit_components_tooltip_properties_text_font-family
47
+ );
48
+ font-size: var(
49
+ --recursica_ui-kit_components_tooltip_properties_text_font-size
50
+ );
51
+ font-style: var(
52
+ --recursica_ui-kit_components_tooltip_properties_text_font-style
53
+ );
54
+ font-weight: var(
55
+ --recursica_ui-kit_components_tooltip_properties_text_font-weight
56
+ );
57
+ letter-spacing: var(
58
+ --recursica_ui-kit_components_tooltip_properties_text_letter-spacing
59
+ );
60
+ line-height: var(
61
+ --recursica_ui-kit_components_tooltip_properties_text_line-height
62
+ );
63
+ text-decoration: var(
64
+ --recursica_ui-kit_components_tooltip_properties_text_text-decoration
65
+ );
66
+ text-transform: var(
67
+ --recursica_ui-kit_components_tooltip_properties_text_text-transform
68
+ );
69
+
70
+ color: var(
71
+ --recursica_ui-kit_components_tooltip_properties_colors_text-color
72
+ );
73
+ }
74
+
75
+ /* ======================================
76
+ ARROW / BEAK
77
+ ====================================== */
78
+
79
+ .arrow {
80
+ border-color: var(
81
+ --recursica_ui-kit_components_tooltip_properties_colors_border-color
82
+ );
83
+ }