@soyfri/shared-library 2.0.0-beta.2 → 2.0.0-beta.21

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 (657) hide show
  1. package/.dockerignore +8 -0
  2. package/.github/workflows/publish.yml +107 -0
  3. package/.prettierrc +3 -0
  4. package/.storybook/main.ts +19 -0
  5. package/.storybook/preview.ts +14 -0
  6. package/.storybook/vitest.setup.ts +9 -0
  7. package/Dockerfile +37 -0
  8. package/build.js +117 -0
  9. package/chromatic.config.json +5 -0
  10. package/cleanDirectories.js +40 -0
  11. package/dist/Autocomplete-C_lW1VER.js +337 -0
  12. package/dist/Autocomplete-C_lW1VER.js.map +1 -0
  13. package/dist/Autocomplete-CejWztBY.cjs +336 -0
  14. package/dist/Autocomplete-CejWztBY.cjs.map +1 -0
  15. package/dist/Avatar-CgT7955R.js +162 -0
  16. package/dist/Avatar-CgT7955R.js.map +1 -0
  17. package/dist/Avatar-CuSrK8Wn.cjs +161 -0
  18. package/dist/Avatar-CuSrK8Wn.cjs.map +1 -0
  19. package/dist/Button-C17mExpd.cjs.map +1 -1
  20. package/dist/Button-UkkP-bNw.js.map +1 -1
  21. package/dist/Card-B1wtavyl.js +98 -0
  22. package/dist/Card-B1wtavyl.js.map +1 -0
  23. package/dist/Card-DfdU610V.cjs +97 -0
  24. package/dist/Card-DfdU610V.cjs.map +1 -0
  25. package/dist/Checkbox-BCqMFWt4.cjs +187 -0
  26. package/dist/Checkbox-BCqMFWt4.cjs.map +1 -0
  27. package/dist/Checkbox-gB5YKkVo.js +188 -0
  28. package/dist/Checkbox-gB5YKkVo.js.map +1 -0
  29. package/dist/{components/DateRangePicker/DateRangePicker.js → Chip-OPYQ1uQ_.js} +33 -35
  30. package/dist/Chip-OPYQ1uQ_.js.map +1 -0
  31. package/dist/{components/DateRangePicker/DateRangePicker.cjs → Chip-qoJLDiva.cjs} +33 -36
  32. package/dist/Chip-qoJLDiva.cjs.map +1 -0
  33. package/dist/DatePicker-_IGWc3I5.js +178 -0
  34. package/dist/DatePicker-_IGWc3I5.js.map +1 -0
  35. package/dist/DatePicker-t7uDTZMl.cjs +177 -0
  36. package/dist/DatePicker-t7uDTZMl.cjs.map +1 -0
  37. package/dist/DateTimePicker-BxQyjTCY.cjs +229 -0
  38. package/dist/DateTimePicker-BxQyjTCY.cjs.map +1 -0
  39. package/dist/DateTimePicker-CrmWav_j.js +230 -0
  40. package/dist/DateTimePicker-CrmWav_j.js.map +1 -0
  41. package/dist/Input-CScC87J5.cjs +185 -0
  42. package/dist/Input-CScC87J5.cjs.map +1 -0
  43. package/dist/Input-DP_fKl38.js +186 -0
  44. package/dist/Input-DP_fKl38.js.map +1 -0
  45. package/dist/Modal-BN5s-Tfk.cjs +347 -0
  46. package/dist/Modal-BN5s-Tfk.cjs.map +1 -0
  47. package/dist/Modal-BRZMPwDj.js +348 -0
  48. package/dist/Modal-BRZMPwDj.js.map +1 -0
  49. package/dist/README.md +243 -0
  50. package/dist/RadioGroup-Dd0rHXSX.cjs +202 -0
  51. package/dist/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  52. package/dist/RadioGroup-bO-ahP9T.js +203 -0
  53. package/dist/RadioGroup-bO-ahP9T.js.map +1 -0
  54. package/dist/Select-Dycmh9vt.js +256 -0
  55. package/dist/Select-Dycmh9vt.js.map +1 -0
  56. package/dist/Select-kqR48jZU.cjs +255 -0
  57. package/dist/Select-kqR48jZU.cjs.map +1 -0
  58. package/dist/Stat-BUcFCGrz.cjs +83 -0
  59. package/dist/Stat-BUcFCGrz.cjs.map +1 -0
  60. package/dist/Stat-C06A_izS.js +84 -0
  61. package/dist/Stat-C06A_izS.js.map +1 -0
  62. package/dist/StatusMessage-B3nXpuRl.cjs +88 -0
  63. package/dist/StatusMessage-B3nXpuRl.cjs.map +1 -0
  64. package/dist/StatusMessage-D0WgSBx7.js +89 -0
  65. package/dist/StatusMessage-D0WgSBx7.js.map +1 -0
  66. package/dist/Step-BArsou1V.js +301 -0
  67. package/dist/Step-BArsou1V.js.map +1 -0
  68. package/dist/Step-Nd7SJbRZ.cjs +300 -0
  69. package/dist/Step-Nd7SJbRZ.cjs.map +1 -0
  70. package/dist/Switch-CQFOopYy.cjs +182 -0
  71. package/dist/Switch-CQFOopYy.cjs.map +1 -0
  72. package/dist/Switch-D72dpkH2.js +183 -0
  73. package/dist/Switch-D72dpkH2.js.map +1 -0
  74. package/dist/Tab-BbP8jBcK.cjs +110 -0
  75. package/dist/Tab-BbP8jBcK.cjs.map +1 -0
  76. package/dist/Tab-BxSxKJsP.js +111 -0
  77. package/dist/Tab-BxSxKJsP.js.map +1 -0
  78. package/dist/Table-C2LbW0B1.js +531 -0
  79. package/dist/Table-C2LbW0B1.js.map +1 -0
  80. package/dist/Table-C4OM6rrC.cjs +530 -0
  81. package/dist/Table-C4OM6rrC.cjs.map +1 -0
  82. package/dist/components/ActionMenu/ActionMenu.cjs +52 -52
  83. package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -1
  84. package/dist/components/ActionMenu/ActionMenu.d.ts +20 -36
  85. package/dist/components/ActionMenu/ActionMenu.js +55 -55
  86. package/dist/components/ActionMenu/ActionMenu.js.map +1 -1
  87. package/dist/components/ActionMenu/index.d.ts +2 -2
  88. package/dist/components/AppBar/AppBar.cjs +3 -220
  89. package/dist/components/AppBar/AppBar.cjs.map +1 -1
  90. package/dist/components/AppBar/AppBar.d.ts +6 -6
  91. package/dist/components/AppBar/AppBar.js +6 -223
  92. package/dist/components/AppBar/AppBar.js.map +1 -1
  93. package/dist/components/AppBar/index.d.ts +0 -6
  94. package/dist/components/Autocomplete/Autocomplete.cjs +4 -311
  95. package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -1
  96. package/dist/components/Autocomplete/Autocomplete.d.ts +8 -6
  97. package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
  98. package/dist/components/Autocomplete/Autocomplete.js +4 -311
  99. package/dist/components/Autocomplete/Autocomplete.js.map +1 -1
  100. package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  101. package/dist/components/Autocomplete/index.d.ts +1 -1
  102. package/dist/components/Avatar/Avatar.cjs +2 -160
  103. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  104. package/dist/components/Avatar/Avatar.js +2 -160
  105. package/dist/components/Avatar/Avatar.js.map +1 -1
  106. package/dist/components/Avatar/index.d.ts +1 -0
  107. package/dist/components/Button/Button.d.ts +5 -5
  108. package/dist/components/Button/index.d.ts +1 -0
  109. package/dist/components/Card/Card.cjs +4 -184
  110. package/dist/components/Card/Card.cjs.map +1 -1
  111. package/dist/components/Card/Card.d.ts +3 -50
  112. package/dist/components/Card/Card.js +4 -184
  113. package/dist/components/Card/Card.js.map +1 -1
  114. package/dist/components/Card/Card.sx.d.ts +3 -6
  115. package/dist/components/Card/index.d.ts +1 -1
  116. package/dist/components/Checkbox/Checkbox.cjs +6 -0
  117. package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
  118. package/dist/components/Checkbox/Checkbox.d.ts +55 -0
  119. package/dist/components/Checkbox/Checkbox.js +6 -0
  120. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  121. package/dist/components/Checkbox/Checkbox.sx.d.ts +13 -0
  122. package/dist/components/Checkbox/index.d.ts +2 -0
  123. package/dist/components/Checkbox.d.ts +6 -0
  124. package/dist/components/Chip/Chip.cjs +4 -72
  125. package/dist/components/Chip/Chip.cjs.map +1 -1
  126. package/dist/components/Chip/Chip.js +3 -71
  127. package/dist/components/Chip/Chip.js.map +1 -1
  128. package/dist/components/Chip/index.d.ts +2 -1
  129. package/dist/components/Chip.d.ts +4 -0
  130. package/dist/components/Column/Column.cjs +1 -1
  131. package/dist/components/Column/Column.cjs.map +1 -1
  132. package/dist/components/Column/Column.d.ts +1 -1
  133. package/dist/components/Column/Column.js +1 -1
  134. package/dist/components/Column/Column.js.map +1 -1
  135. package/dist/components/Column/index.d.ts +1 -0
  136. package/dist/components/DatePicker/DatePicker.cjs +3 -200
  137. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  138. package/dist/components/DatePicker/DatePicker.d.ts +1 -13
  139. package/dist/components/DatePicker/DatePicker.js +3 -200
  140. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  141. package/dist/components/DatePicker/index.d.ts +1 -1
  142. package/dist/components/DateTimePicker/DateTimePicker.cjs +3 -219
  143. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  144. package/dist/components/DateTimePicker/DateTimePicker.d.ts +10 -6
  145. package/dist/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
  146. package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
  147. package/dist/components/DateTimePicker/DateTimePicker.js +3 -219
  148. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  149. package/dist/components/DateTimePicker/index.d.ts +1 -1
  150. package/dist/components/Drawer/Drawer.cjs +25 -24
  151. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  152. package/dist/components/Drawer/Drawer.d.ts +8 -1
  153. package/dist/components/Drawer/Drawer.js +26 -25
  154. package/dist/components/Drawer/Drawer.js.map +1 -1
  155. package/dist/components/Drawer/DrawerItem.d.ts +6 -1
  156. package/dist/components/Gallery/Gallery.cjs +154 -79
  157. package/dist/components/Gallery/Gallery.cjs.map +1 -1
  158. package/dist/components/Gallery/Gallery.d.ts +25 -9
  159. package/dist/components/Gallery/Gallery.js +154 -79
  160. package/dist/components/Gallery/Gallery.js.map +1 -1
  161. package/dist/components/Gallery/GalleryLightbox.d.ts +6 -10
  162. package/dist/components/Gallery/GalleryMain.d.ts +3 -7
  163. package/dist/components/Gallery/GalleryThumbnails.d.ts +7 -11
  164. package/dist/components/Gallery/index.d.ts +2 -1
  165. package/dist/components/Gallery.d.ts +4 -0
  166. package/dist/components/Icon/Icon.cjs +6 -8
  167. package/dist/components/Icon/Icon.cjs.map +1 -1
  168. package/dist/components/Icon/Icon.d.ts +11 -17
  169. package/dist/components/Icon/Icon.js +7 -9
  170. package/dist/components/Icon/Icon.js.map +1 -1
  171. package/dist/components/Icon/index.d.ts +2 -1
  172. package/dist/components/Icon.d.ts +4 -0
  173. package/dist/components/Input/Input.cjs +3 -172
  174. package/dist/components/Input/Input.cjs.map +1 -1
  175. package/dist/components/Input/Input.d.ts +9 -2
  176. package/dist/components/Input/Input.definitions.d.ts +1 -0
  177. package/dist/components/Input/Input.helpers.d.ts +3 -3
  178. package/dist/components/Input/Input.js +3 -172
  179. package/dist/components/Input/Input.js.map +1 -1
  180. package/dist/components/Input/index.d.ts +1 -1
  181. package/dist/components/InputGroup/InputGroup.cjs +23 -22
  182. package/dist/components/InputGroup/InputGroup.cjs.map +1 -1
  183. package/dist/components/InputGroup/InputGroup.d.ts +4 -4
  184. package/dist/components/InputGroup/InputGroup.js +22 -21
  185. package/dist/components/InputGroup/InputGroup.js.map +1 -1
  186. package/dist/components/InputGroup/index.d.ts +2 -1
  187. package/dist/components/InputGroup.d.ts +4 -0
  188. package/dist/components/Modal/Modal.cjs +7 -317
  189. package/dist/components/Modal/Modal.cjs.map +1 -1
  190. package/dist/components/Modal/Modal.d.ts +20 -5
  191. package/dist/components/Modal/Modal.js +6 -316
  192. package/dist/components/Modal/Modal.js.map +1 -1
  193. package/dist/components/Modal/ModalBody.d.ts +6 -1
  194. package/dist/components/Modal/ModalFooter.d.ts +4 -4
  195. package/dist/components/Modal/ModalHeader.d.ts +6 -1
  196. package/dist/components/Modal/index.d.ts +4 -1
  197. package/dist/components/Modal.d.ts +4 -0
  198. package/dist/components/RadioGroup/RadioGroup.cjs +6 -0
  199. package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -0
  200. package/dist/components/RadioGroup/RadioGroup.d.ts +59 -0
  201. package/dist/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  202. package/dist/components/RadioGroup/RadioGroup.js +6 -0
  203. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  204. package/dist/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  205. package/dist/components/RadioGroup/index.d.ts +2 -0
  206. package/dist/components/RadioGroup.d.ts +6 -0
  207. package/dist/components/Select/Select.cjs +4 -445
  208. package/dist/components/Select/Select.cjs.map +1 -1
  209. package/dist/components/Select/Select.d.ts +15 -18
  210. package/dist/components/Select/Select.helpers.d.ts +5 -19
  211. package/dist/components/Select/Select.js +4 -445
  212. package/dist/components/Select/Select.js.map +1 -1
  213. package/dist/components/Select/index.d.ts +1 -1
  214. package/dist/components/Stat/Stat.cjs +4 -83
  215. package/dist/components/Stat/Stat.cjs.map +1 -1
  216. package/dist/components/Stat/Stat.js +3 -82
  217. package/dist/components/Stat/Stat.js.map +1 -1
  218. package/dist/components/Stat/index.d.ts +2 -1
  219. package/dist/components/Stat.d.ts +4 -0
  220. package/dist/components/StatusMessage/StatusMessage.cjs +4 -77
  221. package/dist/components/StatusMessage/StatusMessage.cjs.map +1 -1
  222. package/dist/components/StatusMessage/StatusMessage.d.ts +20 -36
  223. package/dist/components/StatusMessage/StatusMessage.js +3 -76
  224. package/dist/components/StatusMessage/StatusMessage.js.map +1 -1
  225. package/dist/components/StatusMessage/index.d.ts +2 -1
  226. package/dist/components/StatusMessage.d.ts +4 -0
  227. package/dist/components/Stepper/Stepper.cjs +8 -47
  228. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  229. package/dist/components/Stepper/Stepper.d.ts +9 -8
  230. package/dist/components/Stepper/Stepper.js +7 -46
  231. package/dist/components/Stepper/Stepper.js.map +1 -1
  232. package/dist/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +29 -23
  233. package/dist/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  234. package/dist/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  235. package/dist/components/Stepper/index.d.ts +6 -2
  236. package/dist/components/Stepper.d.ts +4 -0
  237. package/dist/components/Switch/Switch.cjs +6 -0
  238. package/dist/components/Switch/Switch.cjs.map +1 -0
  239. package/dist/components/Switch/Switch.d.ts +48 -0
  240. package/dist/components/Switch/Switch.definitions.d.ts +7 -0
  241. package/dist/components/Switch/Switch.js +6 -0
  242. package/dist/components/Switch/Switch.js.map +1 -0
  243. package/dist/components/Switch/Switch.sx.d.ts +22 -0
  244. package/dist/components/Switch/Switch.types.d.ts +1 -0
  245. package/dist/components/Switch/index.d.ts +2 -0
  246. package/dist/components/Switch.d.ts +6 -0
  247. package/dist/components/Table/Table.cjs +2 -528
  248. package/dist/components/Table/Table.cjs.map +1 -1
  249. package/dist/components/Table/Table.d.ts +1 -1
  250. package/dist/components/Table/Table.js +2 -528
  251. package/dist/components/Table/Table.js.map +1 -1
  252. package/dist/components/Tabs/Tabs.cjs +5 -94
  253. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  254. package/dist/components/Tabs/Tabs.d.ts +21 -16
  255. package/dist/components/Tabs/Tabs.js +4 -93
  256. package/dist/components/Tabs/Tabs.js.map +1 -1
  257. package/dist/components/Tabs/index.d.ts +4 -2
  258. package/dist/components/Tabs.d.ts +4 -0
  259. package/dist/components/Timeline/Timeline.cjs +3 -2
  260. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  261. package/dist/components/Timeline/Timeline.d.ts +4 -8
  262. package/dist/components/Timeline/Timeline.js +3 -2
  263. package/dist/components/Timeline/Timeline.js.map +1 -1
  264. package/dist/components/Timeline/index.d.ts +4 -2
  265. package/dist/components/Timeline.d.ts +4 -0
  266. package/dist/components/_shared/mergeSx.d.ts +7 -0
  267. package/dist/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  268. package/dist/formField.sx-8_QRnKxv.js.map +1 -0
  269. package/dist/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  270. package/dist/formField.sx-BAX7KwMR.cjs.map +1 -0
  271. package/dist/index.cjs +92 -2
  272. package/dist/index.cjs.map +1 -1
  273. package/dist/index.d.ts +32 -0
  274. package/dist/index.js +66 -3
  275. package/dist/index.js.map +1 -1
  276. package/dist/mergeSx-BXoNZjB_.js +10 -0
  277. package/dist/mergeSx-BXoNZjB_.js.map +1 -0
  278. package/dist/mergeSx-Dbccoo_H.cjs +9 -0
  279. package/dist/mergeSx-Dbccoo_H.cjs.map +1 -0
  280. package/dist/mui.d.ts +3 -1
  281. package/dist/package.json +190 -0
  282. package/dist/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
  283. package/dist/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
  284. package/dist/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
  285. package/dist/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
  286. package/dist/theme/componentStyles.d.ts +1 -1
  287. package/dist/tokens-BRrcP_p_.js +21 -0
  288. package/dist/tokens-BRrcP_p_.js.map +1 -0
  289. package/dist/tokens-jaWWNk39.cjs +20 -0
  290. package/dist/tokens-jaWWNk39.cjs.map +1 -0
  291. package/dist/utils/index.d.ts +2 -0
  292. package/dist/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  293. package/package.json +25 -48
  294. package/rollup.config.cjs +87 -0
  295. package/scripts/gen-dist-pkg.mjs +15 -0
  296. package/shared-library-comercios-MUI.code-workspace +10 -0
  297. package/src/components/ActionMenu/ActionMenu.stories.tsx +427 -0
  298. package/src/components/ActionMenu/ActionMenu.tsx +153 -0
  299. package/src/components/ActionMenu/index.ts +2 -0
  300. package/src/components/AppBar/AppBar.stories.tsx +316 -0
  301. package/src/components/AppBar/AppBar.sx.ts +32 -0
  302. package/src/components/AppBar/AppBar.tsx +119 -0
  303. package/src/components/AppBar/AppBarContext.ts +25 -0
  304. package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
  305. package/src/components/AppBar/index.ts +12 -0
  306. package/src/components/Autocomplete/Autocomplete.definitions.ts +477 -0
  307. package/src/components/Autocomplete/Autocomplete.helpers.ts +80 -0
  308. package/src/components/Autocomplete/Autocomplete.stories.tsx +784 -0
  309. package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
  310. package/src/components/Autocomplete/Autocomplete.tsx +393 -0
  311. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
  312. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
  313. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +29 -0
  314. package/src/components/Autocomplete/index.ts +12 -0
  315. package/src/components/Avatar/Avatar.definitions.ts +162 -0
  316. package/src/components/Avatar/Avatar.stories.tsx +258 -0
  317. package/src/components/Avatar/Avatar.tsx +206 -0
  318. package/src/components/Avatar/index.ts +2 -0
  319. package/src/components/Button/Button.definition.ts +97 -0
  320. package/src/components/Button/Button.stories.tsx +285 -0
  321. package/src/components/Button/Button.tsx +66 -0
  322. package/src/components/Button/index.ts +2 -0
  323. package/src/components/Card/Card.definition.ts +5 -0
  324. package/src/components/Card/Card.stories.tsx +102 -0
  325. package/src/components/Card/Card.sx.ts +58 -0
  326. package/src/components/Card/Card.tsx +85 -0
  327. package/src/components/Card/index.ts +4 -0
  328. package/src/components/Checkbox/Checkbox.stories.tsx +212 -0
  329. package/src/components/Checkbox/Checkbox.sx.ts +67 -0
  330. package/src/components/Checkbox/Checkbox.tsx +208 -0
  331. package/src/components/Checkbox/index.ts +10 -0
  332. package/src/components/Chip/Chip.definitions.ts +167 -0
  333. package/src/components/Chip/Chip.stories.tsx +265 -0
  334. package/src/components/Chip/Chip.tsx +61 -0
  335. package/src/components/Chip/index.ts +2 -0
  336. package/src/components/Column/Column.tsx +29 -0
  337. package/src/components/Column/index.ts +2 -0
  338. package/src/components/DatePicker/DatePicker.definitions.ts +228 -0
  339. package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
  340. package/src/components/DatePicker/DatePicker.stories.tsx +309 -0
  341. package/src/components/DatePicker/DatePicker.sx.ts +33 -0
  342. package/src/components/DatePicker/DatePicker.tsx +133 -0
  343. package/src/components/DatePicker/index.ts +7 -0
  344. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +317 -0
  345. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +45 -0
  346. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +415 -0
  347. package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
  348. package/src/components/DateTimePicker/DateTimePicker.tsx +240 -0
  349. package/src/components/DateTimePicker/index.ts +9 -0
  350. package/src/components/Drawer/Drawer.stories.tsx +438 -0
  351. package/src/components/Drawer/Drawer.sx.ts +106 -0
  352. package/src/components/Drawer/Drawer.tsx +224 -0
  353. package/src/components/Drawer/DrawerContext.ts +26 -0
  354. package/src/components/Drawer/DrawerItem.tsx +120 -0
  355. package/src/components/Drawer/index.ts +10 -0
  356. package/src/components/Flyout/Flyout.stories.tsx +282 -0
  357. package/src/components/Flyout/Flyout.tsx +122 -0
  358. package/src/components/Flyout/index.ts +1 -0
  359. package/src/components/Gallery/Gallery.definition.tsx +37 -0
  360. package/src/components/Gallery/Gallery.stories.tsx +82 -0
  361. package/src/components/Gallery/Gallery.tsx +158 -0
  362. package/src/components/Gallery/GalleryLightbox.tsx +186 -0
  363. package/src/components/Gallery/GalleryMain.tsx +87 -0
  364. package/src/components/Gallery/GalleryThumbnails.tsx +122 -0
  365. package/src/components/Gallery/index.ts +2 -0
  366. package/src/components/Icon/Icon.stories.tsx +121 -0
  367. package/src/components/Icon/Icon.tsx +163 -0
  368. package/src/components/Icon/index.ts +2 -0
  369. package/src/components/Input/Input.definitions.ts +348 -0
  370. package/src/components/Input/Input.helpers.ts +50 -0
  371. package/src/components/Input/Input.stories.tsx +528 -0
  372. package/src/components/Input/Input.sx.ts +42 -0
  373. package/src/components/Input/Input.tsx +162 -0
  374. package/src/components/Input/index.ts +10 -0
  375. package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
  376. package/src/components/InputGroup/InputGroup.stories.tsx +267 -0
  377. package/src/components/InputGroup/InputGroup.tsx +180 -0
  378. package/src/components/InputGroup/index.ts +2 -0
  379. package/src/components/MenuButton/MenuButton.stories.tsx +197 -0
  380. package/src/components/MenuButton/MenuButton.tsx +100 -0
  381. package/src/components/MenuButton/index.ts +1 -0
  382. package/src/components/Modal/Modal.stories.tsx +721 -0
  383. package/src/components/Modal/Modal.tsx +407 -0
  384. package/src/components/Modal/ModalBody.tsx +23 -0
  385. package/src/components/Modal/ModalFooter.tsx +83 -0
  386. package/src/components/Modal/ModalHeader.tsx +33 -0
  387. package/src/components/Modal/index.ts +11 -0
  388. package/src/components/RadioGroup/RadioGroup.definitions.ts +177 -0
  389. package/src/components/RadioGroup/RadioGroup.stories.tsx +231 -0
  390. package/src/components/RadioGroup/RadioGroup.sx.ts +75 -0
  391. package/src/components/RadioGroup/RadioGroup.tsx +207 -0
  392. package/src/components/RadioGroup/index.ts +10 -0
  393. package/src/components/Select/Select.helpers.ts +31 -0
  394. package/src/components/Select/Select.stories.tsx +393 -0
  395. package/src/components/Select/Select.sx.ts +14 -0
  396. package/src/components/Select/Select.tsx +332 -0
  397. package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
  398. package/src/components/Select/_parts/SelectValue.tsx +95 -0
  399. package/src/components/Select/index.ts +12 -0
  400. package/src/components/Stat/Stat.stories.tsx +85 -0
  401. package/src/components/Stat/Stat.tsx +117 -0
  402. package/src/components/Stat/index.ts +2 -0
  403. package/src/components/StatusMessage/StatusMessage.stories.tsx +159 -0
  404. package/src/components/StatusMessage/StatusMessage.tsx +143 -0
  405. package/src/components/StatusMessage/index.ts +3 -0
  406. package/src/components/Stepper/Step.tsx +21 -0
  407. package/src/components/Stepper/Stepper.definition.ts +75 -0
  408. package/src/components/Stepper/Stepper.stories.tsx +194 -0
  409. package/src/components/Stepper/Stepper.tsx +194 -0
  410. package/src/components/Stepper/StepperContext.tsx +176 -0
  411. package/src/components/Stepper/StepperProvider.stories.tsx +286 -0
  412. package/src/components/Stepper/_hooks/useHorizontalScroll.ts +56 -0
  413. package/src/components/Stepper/_parts/StepperScrollArrow.tsx +50 -0
  414. package/src/components/Stepper/index.ts +15 -0
  415. package/src/components/Switch/Switch.definitions.ts +134 -0
  416. package/src/components/Switch/Switch.stories.tsx +213 -0
  417. package/src/components/Switch/Switch.sx.ts +81 -0
  418. package/src/components/Switch/Switch.tsx +188 -0
  419. package/src/components/Switch/Switch.types.ts +10 -0
  420. package/src/components/Switch/index.ts +9 -0
  421. package/src/components/Table/EmptyTable.png +0 -0
  422. package/src/components/Table/Table.definition.ts +580 -0
  423. package/src/components/Table/Table.stories.tsx +853 -0
  424. package/src/components/Table/Table.tsx +494 -0
  425. package/src/components/Table/data.ts +134 -0
  426. package/src/components/Table/exportsUtils.ts +195 -0
  427. package/src/components/Table/index.ts +3 -0
  428. package/src/components/Table/types.ts +34 -0
  429. package/src/components/Tabs/Tab.definition.ts +53 -0
  430. package/src/components/Tabs/Tab.tsx +19 -0
  431. package/src/components/Tabs/Tabs.stories.tsx +118 -0
  432. package/src/components/Tabs/Tabs.tsx +163 -0
  433. package/src/components/Tabs/_tabUtils.tsx +4 -0
  434. package/src/components/Tabs/index.ts +5 -0
  435. package/src/components/Timeline/Timeline.definition.ts +43 -0
  436. package/src/components/Timeline/Timeline.stories.tsx +108 -0
  437. package/src/components/Timeline/Timeline.tsx +44 -0
  438. package/src/components/Timeline/TimelineItem.tsx +31 -0
  439. package/src/components/Timeline/index.ts +5 -0
  440. package/src/components/Tooltip/Tooltip.stories.tsx +129 -0
  441. package/src/components/Tooltip/Tooltip.tsx +58 -0
  442. package/src/components/Tooltip/index.ts +1 -0
  443. package/src/components/_shared/formField.sx.ts +118 -0
  444. package/src/components/_shared/mergeSx.ts +16 -0
  445. package/src/components/_shared/resolvePreset.ts +38 -0
  446. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +168 -0
  447. package/src/hooks/ClipBoard/ClipBoard.tsx +131 -0
  448. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +111 -0
  449. package/src/hooks/ClipBoard/index.ts +1 -0
  450. package/src/index.ts +51 -0
  451. package/src/mui.ts +57 -0
  452. package/src/styles.css +3 -0
  453. package/src/theme/componentStyles.ts +50 -0
  454. package/src/theme/tokens.ts +43 -0
  455. package/src/utils/index.ts +2 -0
  456. package/src/utils/scrollToTop.ts +36 -0
  457. package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
  458. package/storybook-static/assets/AccountCircle-BDZFsbTw.js +1 -0
  459. package/storybook-static/assets/ActionMenu-EynP8yU1.js +19 -0
  460. package/storybook-static/assets/ActionMenu.stories-DqSqRGix.js +185 -0
  461. package/storybook-static/assets/Alert-3zvTPc0p.js +1 -0
  462. package/storybook-static/assets/AppBar.stories-DcX3M5th.js +172 -0
  463. package/storybook-static/assets/Autocomplete.stories-CXJm8FOT.js +788 -0
  464. package/storybook-static/assets/Avatar-NbFfkZws.js +1 -0
  465. package/storybook-static/assets/Avatar.stories-CwOYCzqU.js +390 -0
  466. package/storybook-static/assets/Box-BnhEcfFm.js +1 -0
  467. package/storybook-static/assets/Button-D9h7OggD.js +1 -0
  468. package/storybook-static/assets/Button-DBpqmVB_.js +1 -0
  469. package/storybook-static/assets/Button.stories-F20dmnjq.js +320 -0
  470. package/storybook-static/assets/ButtonBase-qyaMEhe4.js +74 -0
  471. package/storybook-static/assets/Card.stories-B3NpAhO0.js +154 -0
  472. package/storybook-static/assets/CheckCircleOutline-CEj5mDsl.js +1 -0
  473. package/storybook-static/assets/Chip-C3vKPpzR.js +1 -0
  474. package/storybook-static/assets/Chip.stories-sxcfHVo9.js +333 -0
  475. package/storybook-static/assets/CircularProgress-DC7ZNWwl.js +28 -0
  476. package/storybook-static/assets/Clear-4kYcKvT3.js +1 -0
  477. package/storybook-static/assets/ClipBoard-DvLBdNHe.js +1 -0
  478. package/storybook-static/assets/ClipBoard.stories-BGUo47r6.js +108 -0
  479. package/storybook-static/assets/Close-CgHeRgmh.js +1 -0
  480. package/storybook-static/assets/Close-Cy8nELYU.js +1 -0
  481. package/storybook-static/assets/Color-AVL7NMMY-BJKvwERm.js +1 -0
  482. package/storybook-static/assets/ContentCopy-BfLTDb10.js +1 -0
  483. package/storybook-static/assets/DatePicker-Clkpr-Ku.js +1 -0
  484. package/storybook-static/assets/DatePicker.stories-EaUCMkh3.js +444 -0
  485. package/storybook-static/assets/DateRangePicker.stories-BMlkj-8K.js +390 -0
  486. package/storybook-static/assets/DateTimePicker.stories-B6gdzKq5.js +555 -0
  487. package/storybook-static/assets/DefaultPropsProvider-BGoQxtDa.js +16 -0
  488. package/storybook-static/assets/Delete-D2SMMmIA.js +1 -0
  489. package/storybook-static/assets/DialogContent-BeCDKgax.js +1 -0
  490. package/storybook-static/assets/Divider-BbCj9wT4.js +1 -0
  491. package/storybook-static/assets/DocsRenderer-PQXLIZUC-BebLK5Y_.js +1243 -0
  492. package/storybook-static/assets/Drawer-DcFwy73r.js +1 -0
  493. package/storybook-static/assets/Drawer.stories-C5AZkJBk.js +173 -0
  494. package/storybook-static/assets/EmptyTable-B-RKtgVs.png +0 -0
  495. package/storybook-static/assets/ErrorOutline-D9gM7ART.js +1 -0
  496. package/storybook-static/assets/Fade-Ll96CvH8.js +1 -0
  497. package/storybook-static/assets/Flyout.stories-Cf7z6MNw.js +163 -0
  498. package/storybook-static/assets/Gallery.stories-DdpWVTF6.js +127 -0
  499. package/storybook-static/assets/Grow-8y4FglGK.js +1 -0
  500. package/storybook-static/assets/Home-BRvJEp2L.js +1 -0
  501. package/storybook-static/assets/Icon.stories-D0mUiW_t.js +78 -0
  502. package/storybook-static/assets/IconButton-9OYSTH58.js +1 -0
  503. package/storybook-static/assets/Input-CjX0t4h-.js +1 -0
  504. package/storybook-static/assets/Input.stories-BRxekliy.js +650 -0
  505. package/storybook-static/assets/InputGroup.stories-DH6gUfmn.js +306 -0
  506. package/storybook-static/assets/KeyboardArrowRight-WO_attK2.js +1 -0
  507. package/storybook-static/assets/KeyboardArrowUp-DsyVef-i.js +1 -0
  508. package/storybook-static/assets/ListItem-D3O0103N.js +1 -0
  509. package/storybook-static/assets/ListItemIcon-hca6xN79.js +1 -0
  510. package/storybook-static/assets/ListItemText-BFLAwLdl.js +1 -0
  511. package/storybook-static/assets/Logout-gj-P3AfU.js +1 -0
  512. package/storybook-static/assets/Menu-ClzfjLc3.js +1 -0
  513. package/storybook-static/assets/MenuButton.stories-B-W_QVDt.js +162 -0
  514. package/storybook-static/assets/MenuItem-iU6tAqJI.js +1 -0
  515. package/storybook-static/assets/Modal-3okp9H2i.js +1 -0
  516. package/storybook-static/assets/Modal.stories-DIWzm4qR.js +468 -0
  517. package/storybook-static/assets/MoreVert-BoIVG4gh.js +1 -0
  518. package/storybook-static/assets/Notifications-DY_A-Sho.js +1 -0
  519. package/storybook-static/assets/PageLoader.stories-DmtO1mlm.js +158 -0
  520. package/storybook-static/assets/Paper-SwQBhqI7.js +1 -0
  521. package/storybook-static/assets/Person-CkQl-mpq.js +1 -0
  522. package/storybook-static/assets/PickersModalDialog-Tjnr_cu5.js +10 -0
  523. package/storybook-static/assets/PickersToolbarButton-Tt185-si.js +1 -0
  524. package/storybook-static/assets/Popper-CnCTYXxy.js +1 -0
  525. package/storybook-static/assets/Portal-Cj8XF9Lf.js +1 -0
  526. package/storybook-static/assets/ScrollTopButton.stories-BflQCwNP.js +90 -0
  527. package/storybook-static/assets/Select-CjcuMAY0.js +4 -0
  528. package/storybook-static/assets/Select-DJh2biEb.js +3 -0
  529. package/storybook-static/assets/Select.stories-DU1Gb3I2.js +1103 -0
  530. package/storybook-static/assets/Settings-BLKc1CnO.js +1 -0
  531. package/storybook-static/assets/Snackbar-BtVeKTw6.js +1 -0
  532. package/storybook-static/assets/Stack-D01OUIXi.js +1 -0
  533. package/storybook-static/assets/Stat.stories-Bn9-iuPT.js +60 -0
  534. package/storybook-static/assets/StatusMessage.stories-hnfX8FeU.js +73 -0
  535. package/storybook-static/assets/Stepper-BtKB5ykn.js +2 -0
  536. package/storybook-static/assets/Stepper.stories-CTEZbgPc.js +165 -0
  537. package/storybook-static/assets/Table.stories-CTn2Ktmn.js +1260 -0
  538. package/storybook-static/assets/TableContainer-CzLNaEU-.js +1 -0
  539. package/storybook-static/assets/TableRow-CS88-1HF.js +2 -0
  540. package/storybook-static/assets/Tabs-DLpDOu_n.js +1 -0
  541. package/storybook-static/assets/Tabs.stories-BFVuFy_5.js +159 -0
  542. package/storybook-static/assets/TextField-22T-xHBm.js +1 -0
  543. package/storybook-static/assets/Timeline.stories-DJU_U2Hv.js +97 -0
  544. package/storybook-static/assets/Tooltip-DbnHUxNj.js +1 -0
  545. package/storybook-static/assets/Tooltip.stories-B7tA3dnV.js +66 -0
  546. package/storybook-static/assets/Typography-BgntX2Ep.js +1 -0
  547. package/storybook-static/assets/Wizard.stories-CVrJLK_D.js +23 -0
  548. package/storybook-static/assets/createSimplePaletteValueFilter-bm0fmN_7.js +1 -0
  549. package/storybook-static/assets/createSvgIcon-D_Gca4vA.js +1 -0
  550. package/storybook-static/assets/debounce-Be36O1Ab.js +1 -0
  551. package/storybook-static/assets/emotion-react.browser.esm--g-C9cX9.js +8 -0
  552. package/storybook-static/assets/extendSxProp-CEpa30hT.js +1 -0
  553. package/storybook-static/assets/formField.sx-DMCmZIAa.js +1 -0
  554. package/storybook-static/assets/getReactElementRef-BQ3ANZdy.js +1 -0
  555. package/storybook-static/assets/iframe-BAJnc_4n.js +1079 -0
  556. package/storybook-static/assets/index-B1tlhOpe.js +240 -0
  557. package/storybook-static/assets/index-BF3FAXTk.js +9 -0
  558. package/storybook-static/assets/index-CIeucmOB.js +2 -0
  559. package/storybook-static/assets/index-CY7j4a7o.js +1 -0
  560. package/storybook-static/assets/index-CxkKctw5.js +1 -0
  561. package/storybook-static/assets/isFocusVisible-B8k4qzLc.js +1 -0
  562. package/storybook-static/assets/isMuiElement-CTZSFcY5.js +1 -0
  563. package/storybook-static/assets/jsx-runtime-D_zvdyIk.js +9 -0
  564. package/storybook-static/assets/listItemTextClasses-CC_rwJam.js +1 -0
  565. package/storybook-static/assets/mergeSlotProps-B0UBKBMe.js +1 -0
  566. package/storybook-static/assets/ownerDocument-DW-IO8s5.js +1 -0
  567. package/storybook-static/assets/ownerWindow-HkKU3E4x.js +1 -0
  568. package/storybook-static/assets/preload-helper-PPVm8Dsz.js +1 -0
  569. package/storybook-static/assets/react-18-BUJ64QCV.js +25 -0
  570. package/storybook-static/assets/resolvePreset-CN2aOJJr.js +1 -0
  571. package/storybook-static/assets/useControlled-DsVh1a5j.js +1 -0
  572. package/storybook-static/assets/useForkRef-0ANIrxcF.js +1 -0
  573. package/storybook-static/assets/useId-b4fZxjOL.js +1 -0
  574. package/storybook-static/assets/useMobilePicker-DK-c8xbD.js +1 -0
  575. package/storybook-static/assets/usePreviousProps-WR0rG4aR.js +1 -0
  576. package/storybook-static/assets/useSlot-b6pXgp5_.js +1 -0
  577. package/storybook-static/assets/useSlotProps-C0uMfuBt.js +1 -0
  578. package/storybook-static/assets/useTheme-BmOJK7ra.js +1 -0
  579. package/storybook-static/assets/useThemeProps-DYtxXiUU.js +1 -0
  580. package/storybook-static/assets/useThemeProps-U4yXiZ_5.js +1 -0
  581. package/storybook-static/assets/useTimeout-DNjRaOWc.js +1 -0
  582. package/storybook-static/assets/visuallyHidden-Dan1xhjv.js +1 -0
  583. package/storybook-static/favicon-wrapper.svg +46 -0
  584. package/storybook-static/favicon.svg +1 -0
  585. package/storybook-static/iframe.html +686 -0
  586. package/storybook-static/index.html +160 -0
  587. package/storybook-static/index.json +1 -0
  588. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  589. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  590. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  591. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  592. package/storybook-static/project.json +1 -0
  593. package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js +356 -0
  594. package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js.LEGAL.txt +40 -0
  595. package/storybook-static/sb-addons/docs-4/manager-bundle.js +151 -0
  596. package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +127 -0
  597. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
  598. package/storybook-static/sb-addons/vitest-3/manager-bundle.js +3 -0
  599. package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
  600. package/storybook-static/sb-common-assets/favicon.svg +1 -0
  601. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  602. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  603. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  604. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  605. package/storybook-static/sb-manager/globals-module-info.js +797 -0
  606. package/storybook-static/sb-manager/globals-runtime.js +69679 -0
  607. package/storybook-static/sb-manager/globals.js +34 -0
  608. package/storybook-static/sb-manager/runtime.js +13195 -0
  609. package/storybook-static/vite-inject-mocker-entry.js +18 -0
  610. package/tailwind.config.js +10 -0
  611. package/tsconfig.json +48 -0
  612. package/tsup.config.js +41 -0
  613. package/vite.config.js +132 -0
  614. package/vitest.config.ts +35 -0
  615. package/dist/components/AppBar/AppBarBrand.d.ts +0 -31
  616. package/dist/components/AppBar/AppBarUserMenu.d.ts +0 -65
  617. package/dist/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  618. package/dist/components/DatePicker/DatePicker.types.d.ts +0 -1
  619. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  620. package/dist/components/DateRangePicker/DateRangePicker.d.ts +0 -15
  621. package/dist/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
  622. package/dist/components/DateRangePicker/DateRangePicker.js.map +0 -1
  623. package/dist/components/DateRangePicker/index.d.ts +0 -1
  624. package/dist/components/DateRangePicker.d.ts +0 -2
  625. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  626. package/dist/components/Input/Input.types.d.ts +0 -1
  627. package/dist/components/PageLoader/PageLoader.cjs +0 -61
  628. package/dist/components/PageLoader/PageLoader.cjs.map +0 -1
  629. package/dist/components/PageLoader/PageLoader.d.ts +0 -38
  630. package/dist/components/PageLoader/PageLoader.js +0 -61
  631. package/dist/components/PageLoader/PageLoader.js.map +0 -1
  632. package/dist/components/PageLoader/index.d.ts +0 -2
  633. package/dist/components/PageLoader.d.ts +0 -6
  634. package/dist/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  635. package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  636. package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  637. package/dist/components/ScrollTopButton/ScrollTopButton.js +0 -79
  638. package/dist/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  639. package/dist/components/ScrollTopButton/index.d.ts +0 -4
  640. package/dist/components/ScrollTopButton.d.ts +0 -6
  641. package/dist/components/Select/Select.definitions.d.ts +0 -17
  642. package/dist/components/Select/Select.types.d.ts +0 -1
  643. package/dist/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  644. package/dist/formField.sx-CQ1mbk9M.cjs.map +0 -1
  645. package/dist/formField.sx-DfVbMe0V.js.map +0 -1
  646. package/dist/hooks/Wizard/Wizard.cjs +0 -7
  647. package/dist/hooks/Wizard/Wizard.cjs.map +0 -1
  648. package/dist/hooks/Wizard/Wizard.js +0 -7
  649. package/dist/hooks/Wizard/Wizard.js.map +0 -1
  650. package/dist/hooks/Wizard/index.d.ts +0 -3
  651. package/dist/hooks/Wizard/useWizard.d.ts +0 -9
  652. package/dist/hooks/Wizard.d.ts +0 -2
  653. package/dist/useWizard-CWdIxZzX.cjs +0 -94
  654. package/dist/useWizard-CWdIxZzX.cjs.map +0 -1
  655. package/dist/useWizard-CWq--C3o.js +0 -95
  656. package/dist/useWizard-CWq--C3o.js.map +0 -1
  657. /package/dist/{styles.css → index.css} +0 -0
@@ -0,0 +1,50 @@
1
+ import { IconButton } from '@mui/material';
2
+ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
3
+ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
4
+
5
+ interface StepperScrollArrowProps {
6
+ direction: 'left' | 'right';
7
+ /** Cuando `false`, el botón está deshabilitado (por ejemplo, ya estás al inicio). */
8
+ enabled: boolean;
9
+ /**
10
+ * Cuando `false`, el botón queda con `visibility: hidden` (reserva su
11
+ * espacio pero no se ve). Útil para que el área de scroll no se corra
12
+ * horizontalmente cuando no hay overflow en ningún lado.
13
+ */
14
+ visible: boolean;
15
+ onClick: () => void;
16
+ }
17
+
18
+ /**
19
+ * Flecha de scroll (`<` / `>`) del Stepper horizontal. Se muestra a los
20
+ * costados del área scrollable cuando hay overflow. Componente privado —
21
+ * no se exporta del barrel.
22
+ */
23
+ export const StepperScrollArrow = ({
24
+ direction,
25
+ enabled,
26
+ visible,
27
+ onClick,
28
+ }: StepperScrollArrowProps) => {
29
+ const isLeft = direction === 'left';
30
+ const Icon = isLeft ? ChevronLeftIcon : ChevronRightIcon;
31
+ const ariaLabel = isLeft ? 'Anterior' : 'Siguiente';
32
+
33
+ return (
34
+ <IconButton
35
+ aria-label={ariaLabel}
36
+ size="small"
37
+ onClick={onClick}
38
+ disabled={!enabled}
39
+ sx={{
40
+ flex: '0 0 auto',
41
+ // Reservamos el slot siempre que haya overflow en algún lado,
42
+ // así el área scroll tiene un ancho estable (no saltan los
43
+ // steps cuando aparece/desaparece la flecha).
44
+ visibility: visible ? 'visible' : 'hidden',
45
+ }}
46
+ >
47
+ <Icon fontSize="small" />
48
+ </IconButton>
49
+ );
50
+ };
@@ -0,0 +1,15 @@
1
+ export { Stepper, default } from './Stepper';
2
+ export type { StepperProps } from './Stepper';
3
+
4
+ export { Step } from './Step';
5
+ export type { StepProps } from './Step';
6
+
7
+ export {
8
+ StepperProvider,
9
+ StepperContext,
10
+ useStepper,
11
+ } from './StepperContext';
12
+ export type {
13
+ StepperContextValue,
14
+ StepperProviderProps,
15
+ } from './StepperContext';
@@ -0,0 +1,134 @@
1
+ // Switch.definitions.ts — código fuente para la pestaña Docs de Storybook.
2
+
3
+ export const BasicSwitchDefinition = `
4
+ import React, { useState } from 'react';
5
+ import { Switch } from './Switch';
6
+ import { Box, Typography } from '@mui/material';
7
+
8
+ export const BasicSwitchExample = () => {
9
+ const [checked, setChecked] = useState(false);
10
+ return (
11
+ <Box sx={{ width: 280 }}>
12
+ <Switch checked={checked} onChange={setChecked} />
13
+ <Typography sx={{ mt: 2 }}>Estado: {checked ? 'ON' : 'OFF'}</Typography>
14
+ </Box>
15
+ );
16
+ };
17
+ `;
18
+
19
+ export const SwitchWithLabelDefinition = `
20
+ import React, { useState } from 'react';
21
+ import { Switch } from './Switch';
22
+ import { Box } from '@mui/material';
23
+
24
+ export const SwitchWithLabelExample = () => {
25
+ const [checked, setChecked] = useState(true);
26
+ return (
27
+ <Box sx={{ width: 280 }}>
28
+ <Switch
29
+ label="Notificaciones por email"
30
+ checked={checked}
31
+ onChange={setChecked}
32
+ />
33
+ </Box>
34
+ );
35
+ };
36
+ `;
37
+
38
+ export const BorderedSwitchDefinition = `
39
+ import React, { useState } from 'react';
40
+ import { Switch } from './Switch';
41
+ import { Box } from '@mui/material';
42
+
43
+ export const BorderedSwitchExample = () => {
44
+ const [checked, setChecked] = useState(true);
45
+ return (
46
+ <Box sx={{ width: 360 }}>
47
+ <Switch
48
+ label="Recibir reportes diarios"
49
+ checked={checked}
50
+ onChange={setChecked}
51
+ bordered
52
+ />
53
+ </Box>
54
+ );
55
+ };
56
+ `;
57
+
58
+ export const SwitchSizesDefinition = `
59
+ import React, { useState } from 'react';
60
+ import { Switch } from './Switch';
61
+ import { Box } from '@mui/material';
62
+
63
+ export const SwitchSizesExample = () => {
64
+ const [a, setA] = useState(false);
65
+ const [b, setB] = useState(true);
66
+ return (
67
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, width: 280 }}>
68
+ <Switch label="Pequeño" size="small" checked={a} onChange={setA} />
69
+ <Switch label="Mediano (default)" size="medium" checked={b} onChange={setB} />
70
+ </Box>
71
+ );
72
+ };
73
+ `;
74
+
75
+ export const SwitchWithErrorDefinition = `
76
+ import React, { useState } from 'react';
77
+ import { Switch } from './Switch';
78
+ import { Box } from '@mui/material';
79
+
80
+ export const SwitchWithErrorExample = () => {
81
+ const [checked, setChecked] = useState(false);
82
+ const hasError = !checked;
83
+ return (
84
+ <Box sx={{ width: 320 }}>
85
+ <Switch
86
+ label="Aceptar términos y condiciones"
87
+ checked={checked}
88
+ onChange={setChecked}
89
+ error={hasError}
90
+ helperText={hasError ? 'Debes aceptar los términos para continuar' : ''}
91
+ />
92
+ </Box>
93
+ );
94
+ };
95
+ `;
96
+
97
+ export const DisabledSwitchDefinition = `
98
+ import React from 'react';
99
+ import { Switch } from './Switch';
100
+ import { Box } from '@mui/material';
101
+
102
+ export const DisabledSwitchExample = () => (
103
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, width: 280 }}>
104
+ <Switch label="Off bloqueado" checked={false} onChange={() => {}} disabled />
105
+ <Switch label="On bloqueado" checked={true} onChange={() => {}} disabled />
106
+ </Box>
107
+ );
108
+ `;
109
+
110
+ export const RHFSwitchDefinition = `
111
+ import React from 'react';
112
+ import { useForm } from 'react-hook-form';
113
+ import { Switch } from './Switch';
114
+ import { Box, Button, Typography } from '@mui/material';
115
+
116
+ export const RHFSwitchExample = () => {
117
+ const { control, handleSubmit, watch } = useForm({
118
+ defaultValues: { darkMode: false },
119
+ });
120
+ const value = watch('darkMode');
121
+ return (
122
+ <Box sx={{ width: 320 }} component="form" onSubmit={handleSubmit(console.log)}>
123
+ <Switch
124
+ label="Modo oscuro"
125
+ name="darkMode"
126
+ control={control}
127
+ bordered
128
+ />
129
+ <Typography sx={{ mt: 2 }}>Valor en el form: {String(value)}</Typography>
130
+ <Button type="submit" sx={{ mt: 1 }}>Enviar</Button>
131
+ </Box>
132
+ );
133
+ };
134
+ `;
@@ -0,0 +1,213 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import React, { useState } from 'react';
3
+ import { Box, Button, Typography } from '@mui/material';
4
+ import { useForm } from 'react-hook-form';
5
+
6
+ import { Switch } from './Switch';
7
+ import {
8
+ BasicSwitchDefinition,
9
+ SwitchWithLabelDefinition,
10
+ BorderedSwitchDefinition,
11
+ SwitchSizesDefinition,
12
+ SwitchWithErrorDefinition,
13
+ DisabledSwitchDefinition,
14
+ RHFSwitchDefinition,
15
+ } from './Switch.definitions';
16
+
17
+ // =============================================================================
18
+ // Meta
19
+ // =============================================================================
20
+ const meta: Meta<typeof Switch> = {
21
+ title: 'Components/Switch',
22
+ component: Switch,
23
+ tags: ['autodocs'],
24
+ parameters: {
25
+ layout: 'centered',
26
+ docs: {
27
+ description: {
28
+ component:
29
+ 'Un toggle/switch basado en MUI `Switch`. Soporta modo controlado (`checked` + `onChange`) ' +
30
+ 'y modo react-hook-form (`name` + `control`). Mantiene compatibilidad visual con el legacy ' +
31
+ '`FormToggleInput` mediante la prop `bordered` (label a la izquierda, switch a la derecha).',
32
+ },
33
+ },
34
+ },
35
+ argTypes: {
36
+ label: { control: 'text', description: 'Texto al lado del switch. Si está ausente, se renderiza solo el switch.' },
37
+ labelPlacement: {
38
+ control: 'radio',
39
+ options: ['start', 'end', 'top', 'bottom'],
40
+ description: 'Posición del label respecto al switch. Default: `end`.',
41
+ },
42
+ size: { control: 'radio', options: ['small', 'medium'], description: 'Tamaño del switch. Default: `medium`.' },
43
+ bordered: { control: 'boolean', description: 'Renderizar contenedor con borde estilo "form field". Default: false.' },
44
+ borderRadius: { control: { type: 'number' }, description: 'Border radius del contenedor cuando `bordered`. Default: 10.' },
45
+ disabled: { control: 'boolean', description: 'Deshabilitar el switch.' },
46
+ error: { control: 'boolean', description: 'Estado de error visual.' },
47
+ helperText: { control: 'text', description: 'Texto auxiliar debajo del switch.' },
48
+ },
49
+ };
50
+
51
+ export default meta;
52
+ type Story = StoryObj<typeof Switch>;
53
+
54
+ // =============================================================================
55
+ // Stories
56
+ // =============================================================================
57
+
58
+ export const BasicSwitch: Story = {
59
+ render: () => {
60
+ const [checked, setChecked] = useState(false);
61
+ return (
62
+ <Box sx={{ width: 280 }}>
63
+ <Switch checked={checked} onChange={setChecked} />
64
+ <Typography sx={{ mt: 2 }}>Estado: {checked ? 'ON' : 'OFF'}</Typography>
65
+ </Box>
66
+ );
67
+ },
68
+ parameters: {
69
+ docs: {
70
+ description: { story: 'Uso mínimo, sin label. Equivalente al legacy `ToggleInputReport`.' },
71
+ source: { code: BasicSwitchDefinition.trim() },
72
+ },
73
+ },
74
+ };
75
+
76
+ export const SwitchWithLabel: Story = {
77
+ render: () => {
78
+ const [checked, setChecked] = useState(true);
79
+ return (
80
+ <Box sx={{ width: 280 }}>
81
+ <Switch
82
+ label="Notificaciones por email"
83
+ checked={checked}
84
+ onChange={setChecked}
85
+ />
86
+ </Box>
87
+ );
88
+ },
89
+ parameters: {
90
+ docs: {
91
+ description: { story: 'Switch con label a la derecha (default `labelPlacement="end"`).' },
92
+ source: { code: SwitchWithLabelDefinition.trim() },
93
+ },
94
+ },
95
+ };
96
+
97
+ export const BorderedSwitch: Story = {
98
+ render: () => {
99
+ const [checked, setChecked] = useState(true);
100
+ return (
101
+ <Box sx={{ width: 360 }}>
102
+ <Switch
103
+ label="Recibir reportes diarios"
104
+ checked={checked}
105
+ onChange={setChecked}
106
+ bordered
107
+ />
108
+ </Box>
109
+ );
110
+ },
111
+ parameters: {
112
+ docs: {
113
+ description: {
114
+ story:
115
+ 'Variante con `bordered`: contenedor con borde, label a la izquierda y switch al borde opuesto. ' +
116
+ 'Replica el estilo del legacy `FormToggleInput`.',
117
+ },
118
+ source: { code: BorderedSwitchDefinition.trim() },
119
+ },
120
+ },
121
+ };
122
+
123
+ export const SwitchSizes: Story = {
124
+ render: () => {
125
+ const [a, setA] = useState(false);
126
+ const [b, setB] = useState(true);
127
+ return (
128
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, width: 280 }}>
129
+ <Switch label="Pequeño" size="small" checked={a} onChange={setA} />
130
+ <Switch label="Mediano (default)" size="medium" checked={b} onChange={setB} />
131
+ </Box>
132
+ );
133
+ },
134
+ parameters: {
135
+ docs: {
136
+ description: { story: 'Tamaños disponibles: `small` y `medium` (default).' },
137
+ source: { code: SwitchSizesDefinition.trim() },
138
+ },
139
+ },
140
+ };
141
+
142
+ export const SwitchWithError: Story = {
143
+ render: () => {
144
+ const [checked, setChecked] = useState(false);
145
+ const hasError = !checked;
146
+ return (
147
+ <Box sx={{ width: 320 }}>
148
+ <Switch
149
+ label="Aceptar términos y condiciones"
150
+ checked={checked}
151
+ onChange={setChecked}
152
+ error={hasError}
153
+ helperText={hasError ? 'Debes aceptar los términos para continuar' : ''}
154
+ />
155
+ </Box>
156
+ );
157
+ },
158
+ parameters: {
159
+ docs: {
160
+ description: { story: 'Estado de error con `error` + `helperText`.' },
161
+ source: { code: SwitchWithErrorDefinition.trim() },
162
+ },
163
+ },
164
+ };
165
+
166
+ export const DisabledSwitch: Story = {
167
+ render: () => (
168
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, width: 280 }}>
169
+ <Switch label="Off bloqueado" checked={false} onChange={() => {}} disabled />
170
+ <Switch label="On bloqueado" checked={true} onChange={() => {}} disabled />
171
+ </Box>
172
+ ),
173
+ parameters: {
174
+ docs: {
175
+ description: { story: 'Switch deshabilitado en ambos estados.' },
176
+ source: { code: DisabledSwitchDefinition.trim() },
177
+ },
178
+ },
179
+ };
180
+
181
+ export const RHFSwitch: Story = {
182
+ render: () => {
183
+ const { control, handleSubmit, watch } = useForm({
184
+ defaultValues: { darkMode: false },
185
+ });
186
+ const value = watch('darkMode');
187
+ return (
188
+ <Box
189
+ sx={{ width: 320 }}
190
+ component="form"
191
+ onSubmit={handleSubmit((data) => console.log(data))}
192
+ >
193
+ <Switch
194
+ label="Modo oscuro"
195
+ name="darkMode"
196
+ control={control}
197
+ bordered
198
+ />
199
+ <Typography sx={{ mt: 2 }}>Valor en el form: {String(value)}</Typography>
200
+ <Button type="submit" sx={{ mt: 1 }}>Enviar</Button>
201
+ </Box>
202
+ );
203
+ },
204
+ parameters: {
205
+ docs: {
206
+ description: {
207
+ story:
208
+ 'Modo react-hook-form con `name` + `control`. El valor `true`/`false` viaja directo al form state.',
209
+ },
210
+ source: { code: RHFSwitchDefinition.trim() },
211
+ },
212
+ },
213
+ };
@@ -0,0 +1,81 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles';
2
+
3
+ export interface BuildSwitchSxOptions {
4
+ bordered: boolean;
5
+ borderRadius: number | string;
6
+ hasLabel: boolean;
7
+ error: boolean;
8
+ }
9
+
10
+ const toRadius = (borderRadius: number | string) =>
11
+ typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;
12
+
13
+ /**
14
+ * Transición compartida (matchea el InputGroup y el RadioGroup).
15
+ */
16
+ const FOCUS_TRANSITION =
17
+ 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, ' +
18
+ 'box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms';
19
+
20
+ /**
21
+ * Builder de sx para Switch. Reproduce el estilo del antiguo
22
+ * `FormToggleInput` legacy cuando `bordered=true`: contenedor con borde,
23
+ * label a la izquierda y switch a la derecha (vía justify-content: space-between).
24
+ *
25
+ * Cuando `bordered=true`, el contenedor gana:
26
+ * - `:focus-within` → borde + shadow primario (mismo patrón que `InputGroup`).
27
+ * - `error=true` → borde + shadow de error (palette.error.main).
28
+ *
29
+ * El shadow es de 1px, así que no hay shift de layout — sólo se intensifica
30
+ * visualmente el borde sin empujar nada alrededor.
31
+ *
32
+ * Si `bordered=false`, sólo aplica un reset de margin del helper text.
33
+ */
34
+ export const buildSwitchSx = ({
35
+ bordered,
36
+ borderRadius,
37
+ hasLabel,
38
+ error,
39
+ }: BuildSwitchSxOptions): SxProps<Theme> => {
40
+ const radius = toRadius(borderRadius);
41
+
42
+ if (!bordered) {
43
+ return {
44
+ '& .MuiFormHelperText-root': { marginLeft: 0 },
45
+ };
46
+ }
47
+
48
+ return (theme) => ({
49
+ '& .MuiFormControlLabel-root': {
50
+ marginLeft: 0,
51
+ marginRight: 0,
52
+ paddingX: 1.5,
53
+ paddingY: 1.25,
54
+ border: `1px solid ${
55
+ error ? theme.palette.error.main : theme.palette.divider
56
+ }`,
57
+ borderRadius: radius,
58
+ transition: FOCUS_TRANSITION,
59
+ ...(error && {
60
+ boxShadow: `0 0 0 1px ${theme.palette.error.main}`,
61
+ }),
62
+ // Focus del usuario sobre el switch interno.
63
+ '&:focus-within': {
64
+ borderColor: error
65
+ ? theme.palette.error.main
66
+ : theme.palette.primary.main,
67
+ boxShadow: `0 0 0 1px ${
68
+ error ? theme.palette.error.main : theme.palette.primary.main
69
+ }`,
70
+ },
71
+ // Si hay label, separar el switch al borde opuesto.
72
+ ...(hasLabel && {
73
+ width: '100%',
74
+ justifyContent: 'space-between',
75
+ }),
76
+ },
77
+ '& .MuiFormHelperText-root': {
78
+ marginLeft: 0,
79
+ },
80
+ });
81
+ };
@@ -0,0 +1,188 @@
1
+ import { useTheme } from '@mui/material/styles';
2
+ import {
3
+ FormControl,
4
+ FormControlLabel,
5
+ FormHelperText,
6
+ Switch as MuiSwitch,
7
+ type SwitchProps as MuiSwitchProps,
8
+ type SxProps,
9
+ type Theme,
10
+ } from '@mui/material';
11
+ import { Controller, type Control, type RegisterOptions } from 'react-hook-form';
12
+
13
+ import { buildSwitchSx } from './Switch.sx';
14
+ import { resolvePreset } from '../_shared/resolvePreset';
15
+
16
+ // ── Tipos de dominio ─────────────────────────────────────────────────────
17
+ export type SwitchSize = 'small' | 'medium';
18
+ export type SwitchLabelPlacement = 'start' | 'end' | 'top' | 'bottom';
19
+
20
+ // ── Props base (todo lo común entre RHF y controlado) ────────────────────
21
+ export interface BaseSwitchProps
22
+ extends Omit<MuiSwitchProps, 'value' | 'onChange' | 'checked' | 'defaultChecked' | 'size'> {
23
+ /** Texto al lado del switch. Si está ausente, no se renderiza FormControlLabel. */
24
+ label?: string;
25
+ size?: SwitchSize;
26
+ /** Posición del label. Default: 'end' (legacy `FormToggleInput` lo ponía a la izquierda con su flex-stack). */
27
+ labelPlacement?: SwitchLabelPlacement;
28
+ disabled?: boolean;
29
+ error?: boolean;
30
+ helperText?: string;
31
+ /** Renderiza un contenedor con borde alrededor del switch + label. Default: false. */
32
+ bordered?: boolean;
33
+ /** Border radius del contenedor (cuando bordered). Default: 10. */
34
+ borderRadius?: number | string;
35
+ defaultChecked?: boolean;
36
+ /**
37
+ * Nombre del preset de estilo registrado en `theme.styles.Switch`.
38
+ * - `"default"` (o ausente) = estilo built-in del paquete.
39
+ * - Cualquier otro string = mergea el preset encima del estilo built-in.
40
+ */
41
+ preset?: string;
42
+ sx?: SxProps<Theme>;
43
+ }
44
+
45
+ // ── Variantes discriminadas (RHF vs controlado) ──────────────────────────
46
+ export interface RHFSwitchProps extends BaseSwitchProps {
47
+ name: string;
48
+ // `any` plano (no `Control<any>`): RHF tipa `Control<T>` con generics en
49
+ // posiciones tanto contravariantes como covariantes (ej. `_subjects.state`).
50
+ // Cuando el componente o su uso involucra generics adicionales, TS se
51
+ // confunde narroweando el discriminated union y `Control<any>` no logra
52
+ // absorber `Control<MyForm>` en la comparación estructural profunda. El
53
+ // `any` plano elimina ese ruido. RHF adentro sigue teniendo sus tipos
54
+ // fuertes — solo degradamos la superficie del prop del componente.
55
+ control: any;
56
+ validation?: RegisterOptions;
57
+ /**
58
+ * Side-effect que corre después de que RHF actualiza el form state.
59
+ * Útil para cascadas entre campos. NO reemplaza al handler de RHF.
60
+ */
61
+ onValueChange?: (checked: boolean) => void;
62
+ checked?: never;
63
+ onChange?: never;
64
+ }
65
+
66
+ export interface ControlledSwitchProps extends BaseSwitchProps {
67
+ name?: string;
68
+ control?: never;
69
+ validation?: never;
70
+ checked: boolean;
71
+ onChange: (checked: boolean) => void;
72
+ }
73
+
74
+ // ── API pública final ────────────────────────────────────────────────────
75
+ export type SwitchProps = RHFSwitchProps | ControlledSwitchProps;
76
+
77
+ export const Switch: React.FC<SwitchProps> = (props) => {
78
+ const {
79
+ label,
80
+ size = 'medium',
81
+ labelPlacement = 'end',
82
+ disabled = false,
83
+ error = false,
84
+ helperText,
85
+ bordered = false,
86
+ borderRadius = 10,
87
+ defaultChecked,
88
+ preset,
89
+ sx,
90
+ ...rest
91
+ } = props as ControlledSwitchProps & {
92
+ control?: Control<any>;
93
+ validation?: RegisterOptions;
94
+ };
95
+
96
+ const theme = useTheme();
97
+ const presetSx = resolvePreset('Switch', preset, theme);
98
+
99
+ // Construye el sx con el estado de error efectivo; se llama por rama
100
+ // (RHF usa el error del Controller, controlado usa el prop `error`).
101
+ const buildSx = (effectiveError: boolean) => [
102
+ buildSwitchSx({
103
+ bordered,
104
+ borderRadius,
105
+ hasLabel: !!label,
106
+ error: effectiveError,
107
+ }),
108
+ ...(presetSx ? [presetSx] : []),
109
+ ...(Array.isArray(sx) ? sx : [sx]),
110
+ ];
111
+
112
+ const renderSwitch = (
113
+ checked: boolean,
114
+ onChange: (next: boolean) => void,
115
+ onBlur?: () => void,
116
+ inputRef?: React.Ref<HTMLInputElement>,
117
+ ) => {
118
+ const switchEl = (
119
+ <MuiSwitch
120
+ {...rest}
121
+ size={size}
122
+ checked={!!checked}
123
+ onChange={(_e, next) => onChange(next)}
124
+ onBlur={onBlur}
125
+ // @ts-ignore — Ref<HTMLInputElement> type mismatch between @types/react versions in monorepo
126
+ inputRef={inputRef}
127
+ disabled={disabled}
128
+ />
129
+ );
130
+
131
+ return label ? (
132
+ <FormControlLabel
133
+ control={switchEl}
134
+ label={label}
135
+ labelPlacement={labelPlacement}
136
+ disabled={disabled}
137
+ />
138
+ ) : (
139
+ switchEl
140
+ );
141
+ };
142
+
143
+ // ── RHF mode ──────────────────────────────────────────────────────────
144
+ if ('control' in props && props.control) {
145
+ const { name, control, validation, onValueChange } = props as RHFSwitchProps;
146
+ return (
147
+ <Controller
148
+ name={name}
149
+ control={control}
150
+ rules={validation}
151
+ defaultValue={defaultChecked}
152
+ render={({ field, fieldState: { error: fieldError } }) => {
153
+ const finalError = !!fieldError || error;
154
+ const finalHelperText = fieldError?.message ?? helperText;
155
+ return (
156
+ <FormControl
157
+ error={finalError}
158
+ disabled={disabled}
159
+ sx={buildSx(finalError)}
160
+ >
161
+ {renderSwitch(
162
+ !!field.value,
163
+ (next) => {
164
+ field.onChange(next);
165
+ onValueChange?.(next);
166
+ },
167
+ field.onBlur,
168
+ field.ref,
169
+ )}
170
+ {finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}
171
+ </FormControl>
172
+ );
173
+ }}
174
+ />
175
+ );
176
+ }
177
+
178
+ // ── Controlled mode ───────────────────────────────────────────────────
179
+ const { checked, onChange } = props as ControlledSwitchProps;
180
+ return (
181
+ <FormControl error={error} disabled={disabled} sx={buildSx(error)}>
182
+ {renderSwitch(checked, onChange)}
183
+ {helperText && <FormHelperText>{helperText}</FormHelperText>}
184
+ </FormControl>
185
+ );
186
+ };
187
+
188
+ export default Switch;
@@ -0,0 +1,10 @@
1
+ // Re-export barrel para compatibilidad con imports antiguos.
2
+ // Los tipos viven dentro de Switch.tsx.
3
+ export type {
4
+ SwitchSize,
5
+ SwitchLabelPlacement,
6
+ BaseSwitchProps,
7
+ RHFSwitchProps,
8
+ ControlledSwitchProps,
9
+ SwitchProps,
10
+ } from './Switch';