@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,36 @@
1
+ # AssistiveElement - Usage Guide
2
+
3
+ This document describes how to integrate and use the `AssistiveElement` component in your projects using `@recursica/adapter-mui-v7`.
4
+
5
+ ---
6
+
7
+ ## 1. Import Reference
8
+
9
+ ```tsx
10
+ import { AssistiveElement } from "@recursica/adapter-mui-v7";
11
+ ```
12
+
13
+ ---
14
+
15
+ ## 2. Basic Example
16
+
17
+ ```tsx
18
+ import React from "react";
19
+ import { AssistiveElement } from "@recursica/adapter-mui-v7";
20
+
21
+ export default function Demo() {
22
+ return <AssistiveElement state="error" message="This field is required" />;
23
+ }
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 3. Design System Integration
29
+
30
+ All Recursica components in the `@recursica/adapter-mui-v7` package adhere strictly to design system spacing, scaling, and behavior patterns.
31
+
32
+ > [!IMPORTANT]
33
+ >
34
+ > - **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.
35
+ > - **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.
36
+ > - **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 "./AssistiveElement";
@@ -0,0 +1,456 @@
1
+ /* Brand-layer exemptions (recursica-allow-brand) — see recursica-token-analyzer README.md.
2
+ * Global hover/focus/disabled state tokens (recursica_variables_scoped.css header, 'Hover & Focus states' / 'Disabled state' — implicit rule for every interactive element; components must not define their own per-component treatment).
3
+ * recursica-allow-brand: --recursica_brand_states_focus_blur
4
+ * recursica-allow-brand: --recursica_brand_states_focus_border-size
5
+ * recursica-allow-brand: --recursica_brand_states_focus_color
6
+ * recursica-allow-brand: --recursica_brand_states_focus_margin
7
+ * recursica-allow-brand: --recursica_brand_states_hover_color
8
+ * recursica-allow-brand: --recursica_brand_states_hover_opacity
9
+ * No ui-kit token exists for the input-to-menu gap (see `.popper` below) — reusing the closest
10
+ * matching generic dimension token instead of hardcoding an unexplained pixel value.
11
+ * recursica-allow-brand: --recursica_brand_dimensions_general_default
12
+ */
13
+
14
+ /* LAYOUT SPACING OVERRIDES:
15
+ - Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens.
16
+ - Also sets the --autocomplete-control-{max,min}-width hooks consumed inline in Autocomplete.tsx,
17
+ since the token schema no longer provides a single layout-agnostic min/max width. */
18
+ .layoutOverride {
19
+ --form-control-margin-bottom: var(
20
+ --recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_top-bottom-margin
21
+ );
22
+ --autocomplete-control-max-width: var(
23
+ --recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_max-width
24
+ );
25
+ --autocomplete-control-min-width: var(
26
+ --recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_min-width
27
+ );
28
+ }
29
+
30
+ .layoutOverride[data-form-layout="side-by-side"] {
31
+ --form-control-margin-bottom: var(
32
+ --recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_top-bottom-margin
33
+ );
34
+ --autocomplete-control-max-width: var(
35
+ --recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_max-width
36
+ );
37
+ --autocomplete-control-min-width: var(
38
+ --recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_min-width
39
+ );
40
+ }
41
+
42
+ /* HARDCODED VALUES:
43
+ - border-style: solid. Native structural rendering rule.
44
+ - outline: none. Bypassing browser focus rings to rely strictly on Recursica focus states natively.
45
+ - flex/layout: display: flex on the root wrapper safely encapsulating internal section rendering.
46
+ */
47
+
48
+ .root {
49
+ display: flex;
50
+ position: relative;
51
+ width: 100% !important; /* Override MUI default 300px width */
52
+ min-height: var(--recursica_ui-kit_components_autocomplete_properties_height);
53
+
54
+ /* Override Mantine native Input variables governing section spacing padding mathematics safely */
55
+ --input-left-section-size: calc(
56
+ var(
57
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
58
+ ) +
59
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
60
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
61
+ );
62
+ --input-right-section-size: calc(
63
+ var(
64
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
65
+ ) +
66
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
67
+ var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
68
+ );
69
+ }
70
+
71
+ /* Strip MUI native Form Control wrapper margins on standard variant */
72
+ .root :global(.MuiFormControl-root) {
73
+ margin: 0 !important;
74
+ }
75
+
76
+ .input {
77
+ /* Structural Overrides */
78
+ display: flex;
79
+ align-items: center;
80
+ width: 100%;
81
+ box-sizing: border-box;
82
+ margin: 0;
83
+
84
+ /* Box Geometry */
85
+ min-height: var(--recursica_ui-kit_components_autocomplete_properties_height);
86
+ padding-top: var(
87
+ --recursica_ui-kit_components_autocomplete_properties_vertical-padding
88
+ ) !important;
89
+ padding-bottom: var(
90
+ --recursica_ui-kit_components_autocomplete_properties_vertical-padding
91
+ ) !important;
92
+ padding-left: var(
93
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
94
+ ) !important;
95
+ padding-right: var(
96
+ --recursica_ui-kit_components_autocomplete_properties_horizontal-padding
97
+ ) !important;
98
+ border-radius: var(
99
+ --recursica_ui-kit_components_autocomplete_properties_border-radius
100
+ );
101
+ border-width: var(
102
+ --recursica_ui-kit_components_autocomplete_properties_border-size
103
+ );
104
+ border-style: solid;
105
+
106
+ /* Strict Typography Unification */
107
+ font-family: var(
108
+ --recursica_ui-kit_components_autocomplete_properties_text_font-family
109
+ );
110
+ font-size: var(
111
+ --recursica_ui-kit_components_autocomplete_properties_text_font-size
112
+ );
113
+ font-style: var(
114
+ --recursica_ui-kit_components_autocomplete_properties_text_font-style
115
+ );
116
+ font-weight: var(
117
+ --recursica_ui-kit_components_autocomplete_properties_text_font-weight
118
+ );
119
+ letter-spacing: var(
120
+ --recursica_ui-kit_components_autocomplete_properties_text_letter-spacing
121
+ );
122
+ line-height: var(
123
+ --recursica_ui-kit_components_autocomplete_properties_text_line-height
124
+ );
125
+ text-decoration: var(
126
+ --recursica_ui-kit_components_autocomplete_properties_text_text-decoration
127
+ );
128
+ text-transform: var(
129
+ --recursica_ui-kit_components_autocomplete_properties_text_text-transform
130
+ );
131
+
132
+ /* Base State Default Execution */
133
+ background-color: var(
134
+ --recursica_ui-kit_components_autocomplete_properties_colors_background-color
135
+ );
136
+ border-color: var(
137
+ --recursica_ui-kit_components_autocomplete_properties_colors_border-color
138
+ );
139
+ color: var(
140
+ --recursica_ui-kit_components_autocomplete_properties_colors_text-color
141
+ );
142
+
143
+ outline: none;
144
+ }
145
+
146
+ /* Reset internal MUI <input> node padding to safely allow the wrapper to manage geometry */
147
+ .input :global(input.MuiInputBase-input) {
148
+ padding: 0 !important;
149
+ height: 100%;
150
+ margin: 0;
151
+ box-sizing: border-box;
152
+ color: inherit;
153
+ }
154
+
155
+ /* Ensure MUI standard variant pseudo-elements (underlines) are destroyed completely */
156
+ .input::before,
157
+ .input::after {
158
+ display: none !important;
159
+ }
160
+
161
+ .input::placeholder {
162
+ opacity: var(
163
+ --recursica_ui-kit_components_autocomplete_properties_placeholder-opacity
164
+ );
165
+ color: inherit;
166
+ }
167
+
168
+ /* Dynamic Padding Overrides */
169
+ /* MUI naturally flexes adornments, so we don't need absolute padding overrides for the wrapper.
170
+ Instead, we apply gap to the input wrapper to space out the adornments and the input natively. */
171
+ .input {
172
+ gap: var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap);
173
+ }
174
+
175
+ /* Flexible End-Caps (Icons, actions) */
176
+ .section {
177
+ display: flex;
178
+ align-items: center;
179
+ height: 100%;
180
+ }
181
+
182
+ .section[data-position="left"] {
183
+ justify-content: flex-start;
184
+ }
185
+
186
+ .section[data-position="right"] {
187
+ justify-content: flex-end;
188
+ }
189
+
190
+ .section :global(svg) {
191
+ width: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
192
+ height: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
193
+ color: var(
194
+ --recursica_ui-kit_components_autocomplete_properties_colors_leading-icon
195
+ );
196
+ }
197
+
198
+ .section[data-position="right"] :global(svg) {
199
+ color: var(
200
+ --recursica_ui-kit_components_autocomplete_properties_colors_trailing-icon
201
+ );
202
+ }
203
+
204
+ /* MUI's Autocomplete positions its Popper flush against the input — it sets `margin: 0px` as an
205
+ inline style, so the option list touches the control's bottom border with no gap. Mantine's
206
+ equivalent (Combobox, built on its own Popover) leaves an 8px gap, but that comes from
207
+ Popover.mjs's own untokenized `offset: 8` default, not any Recursica token — there's no
208
+ dedicated "menu offset" token in the schema. `--recursica_brand_dimensions_general_default`
209
+ happens to also resolve to 8px, so it's reused here rather than hardcoding an unexplained
210
+ magic number; if the schema ever adds a real gap token for this, prefer it over this one.
211
+ `!important` needed: MUI's inline `margin: 0px` otherwise always wins over a class rule. */
212
+ .popper {
213
+ margin-top: var(--recursica_brand_dimensions_general_default) !important;
214
+ }
215
+
216
+ /* Dropdown and Options */
217
+ /* We want to make sure the dropdown inherits font correctly. */
218
+ .dropdown {
219
+ background-color: var(
220
+ --recursica_ui-kit_components_autocomplete_properties_colors_background-color
221
+ );
222
+ border: 1px solid
223
+ var(
224
+ --recursica_ui-kit_components_autocomplete_properties_colors_border-color
225
+ );
226
+ border-radius: var(
227
+ --recursica_ui-kit_components_autocomplete_properties_border-radius
228
+ );
229
+ box-shadow: var(--recursica_ui-kit_components_menu_properties_elevation);
230
+ }
231
+
232
+ .option {
233
+ font-family: var(
234
+ --recursica_ui-kit_components_autocomplete_properties_text_font-family
235
+ );
236
+ font-size: var(
237
+ --recursica_ui-kit_components_autocomplete_properties_text_font-size
238
+ );
239
+ font-weight: var(
240
+ --recursica_ui-kit_components_autocomplete_properties_text_font-weight
241
+ );
242
+ color: var(
243
+ --recursica_ui-kit_components_autocomplete_properties_colors_text-color
244
+ );
245
+ /* Padding/inter-item gap reuse the menu-item component's tokens (same reasoning as the icon/
246
+ supporting-text tokens below) instead of an arbitrary scaled autocomplete padding — matches
247
+ the mantine-adapter's equivalent Menu.module.css `.item` padding + gap exactly. `!important`
248
+ needed on padding: MUI's own `.MuiAutocomplete-listbox .MuiAutocomplete-option` rule
249
+ (hardcoded `6px 16px`) is a two-class descendant selector, higher specificity than this
250
+ single-class rule, and otherwise wins regardless of source order. */
251
+ padding: var(
252
+ --recursica_ui-kit_components_menu-item_properties_vertical-padding
253
+ )
254
+ var(--recursica_ui-kit_components_menu-item_properties_horizontal-padding) !important;
255
+ margin-bottom: var(--recursica_ui-kit_components_menu_properties_item-gap);
256
+ cursor: pointer;
257
+ }
258
+
259
+ .option:last-of-type {
260
+ margin-bottom: 0;
261
+ }
262
+
263
+ /* No per-option hovered token exists in the schema; use the generic overlay tint (same technique
264
+ as Table/Dropdown) to highlight a hovered-but-not-selected option. `data-combobox-selected`/
265
+ `data-combobox-active`/`data-hovered` are Mantine-only attributes that never actually appear on
266
+ this MUI-driven tree — kept here only so this stays shape-matched with the mantine-adapter's
267
+ equivalent file. */
268
+ .option[data-selected="true"],
269
+ .option[data-selected],
270
+ .option[data-combobox-selected="true"],
271
+ .option[data-combobox-selected],
272
+ .option[data-hovered="true"],
273
+ .option[data-hovered],
274
+ .option:hover {
275
+ background-color: color-mix(
276
+ in srgb,
277
+ var(--recursica_brand_states_hover_color)
278
+ calc(var(--recursica_brand_states_hover_opacity) * 100%),
279
+ transparent
280
+ );
281
+ }
282
+
283
+ /* No dedicated autocomplete-option "selected" token exists in the schema either, but the
284
+ menu-item component's selected-state colors are the closest real token family for the same
285
+ concept (a selected row in a list) — same reuse Dropdown.module.css makes. MUI's Autocomplete
286
+ already stamps `aria-selected="true"` onto the option matching the current value (see
287
+ useAutocomplete.js's `getOptionProps`), and `defaultRenderOption` (Autocomplete.tsx) spreads
288
+ that straight onto the `<li>` — there was previously no rule keyed off it at all, so the
289
+ selected option never got a distinct highlight (only ever the same neutral hover tint above,
290
+ and only while actually hovered). `!important` needed: MUI's own
291
+ `.MuiAutocomplete-listbox .MuiAutocomplete-option[aria-selected="true"]` rule (Autocomplete.js)
292
+ is a two-class descendant selector, higher specificity than this single-class rule, and
293
+ otherwise wins with its default blue tint regardless of source order — same reasoning as the
294
+ padding `!important` above. */
295
+ .option[aria-selected="true"] {
296
+ background-color: var(
297
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_background-color
298
+ ) !important;
299
+ color: var(
300
+ --recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_text-color
301
+ ) !important;
302
+ }
303
+
304
+ /* Rich option content (leadingIcon/supportingText — see MANTINE_ADAPTER_RICH_OPTION_DATA.md). No
305
+ dedicated autocomplete-option icon or supporting-text token exists in the schema either; reuse
306
+ the menu-item component's tokens, same reasoning as Dropdown.module.css. */
307
+ .optionContent {
308
+ display: flex;
309
+ align-items: center;
310
+ gap: var(--recursica_ui-kit_components_menu-item_properties_icon-text-gap);
311
+ }
312
+
313
+ .optionIcon {
314
+ display: flex;
315
+ flex-shrink: 0;
316
+ width: var(
317
+ --recursica_ui-kit_components_menu-item_properties_icon-leading-size
318
+ );
319
+ height: var(
320
+ --recursica_ui-kit_components_menu-item_properties_icon-leading-size
321
+ );
322
+ color: var(
323
+ --recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_leading-icon-color
324
+ );
325
+ }
326
+
327
+ .optionIcon :global(svg) {
328
+ width: 100%;
329
+ height: 100%;
330
+ }
331
+
332
+ .optionText {
333
+ display: flex;
334
+ flex-direction: column;
335
+ min-width: 0;
336
+ gap: var(--recursica_ui-kit_components_menu-item_properties_text-gap);
337
+ }
338
+
339
+ /* Default: label/supportingText each truncate to a single line with an ellipsis. */
340
+ .optionText > * {
341
+ overflow: clip; /* HARDCODE: `hidden` clips descenders (e.g. "g") when text_line-height is
342
+ tighter than the font's natural ascent+descent; overflow-clip-margin gives ink a small bleed
343
+ allowance while still clipping genuinely overflowing text (see Chip's IMPLEMENTATION_NOTES.md). */
344
+ overflow-clip-margin: 0.35em;
345
+ text-overflow: ellipsis;
346
+ white-space: nowrap;
347
+ }
348
+
349
+ /* Applied alongside .optionText when `wrapItemText` is true — long values wrap onto additional
350
+ lines instead of overflowing the fixed-width dropdown. */
351
+ .optionTextWrap > * {
352
+ overflow: visible;
353
+ text-overflow: clip;
354
+ white-space: normal;
355
+ overflow-wrap: anywhere;
356
+ }
357
+
358
+ .optionSupportingText {
359
+ font-family: var(
360
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-family
361
+ );
362
+ font-size: var(
363
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-size
364
+ );
365
+ font-style: var(
366
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-style
367
+ );
368
+ font-weight: var(
369
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_font-weight
370
+ );
371
+ letter-spacing: var(
372
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_letter-spacing
373
+ );
374
+ line-height: var(
375
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_line-height
376
+ );
377
+ text-decoration: var(
378
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_text-decoration
379
+ );
380
+ text-transform: var(
381
+ --recursica_ui-kit_components_menu-item_properties_supporting-text_text-transform
382
+ );
383
+ color: var(
384
+ --recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_supporting-text-color
385
+ );
386
+ }
387
+
388
+ /* -------------------------------------
389
+ STATE CASCADE ARCHITECTURE
390
+ -------------------------------------- */
391
+
392
+ /* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
393
+ /* The token schema no longer provides per-component focus colors; apply the generic focus ring
394
+ tokens as a box-shadow ring instead of a color swap. */
395
+ .input:focus-within,
396
+ .input:focus {
397
+ box-shadow:
398
+ 0 0 0 var(--recursica_brand_states_focus_border-size)
399
+ var(--recursica_brand_states_focus_color),
400
+ 0 0 var(--recursica_brand_states_focus_blur)
401
+ var(--recursica_brand_states_focus_margin)
402
+ var(--recursica_brand_states_focus_color);
403
+ }
404
+
405
+ /* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
406
+ .root[data-error] .input {
407
+ border-color: var(
408
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_border-color
409
+ );
410
+ background-color: var(
411
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_background-color
412
+ );
413
+ color: var(
414
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_text-color
415
+ );
416
+ }
417
+
418
+ .root[data-error] .section[data-position="left"] :global(svg) {
419
+ color: var(
420
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_leading-icon
421
+ );
422
+ }
423
+
424
+ .root[data-error] .section[data-position="right"] :global(svg) {
425
+ color: var(
426
+ --recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_trailing-icon
427
+ );
428
+ }
429
+
430
+ /* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
431
+ .root[data-disabled] .input {
432
+ border-color: var(
433
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_border-color
434
+ );
435
+ background-color: var(
436
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_background-color
437
+ );
438
+ color: var(
439
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_text-color
440
+ );
441
+ opacity: var(
442
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_opacity
443
+ );
444
+ }
445
+
446
+ .root[data-disabled] .section[data-position="left"] :global(svg) {
447
+ color: var(
448
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_leading-icon
449
+ );
450
+ }
451
+
452
+ .root[data-disabled] .section[data-position="right"] :global(svg) {
453
+ color: var(
454
+ --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_trailing-icon
455
+ );
456
+ }