@soyfri/shared-library 2.0.0-beta.4 → 2.0.0-beta.5

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 (488) hide show
  1. package/package.json +164 -43
  2. package/.dockerignore +0 -8
  3. package/.github/workflows/publish.yml +0 -107
  4. package/.prettierrc +0 -3
  5. package/.storybook/main.ts +0 -19
  6. package/.storybook/preview.ts +0 -14
  7. package/.storybook/vitest.setup.ts +0 -9
  8. package/Dockerfile +0 -37
  9. package/Readme.md +0 -243
  10. package/build.js +0 -102
  11. package/chromatic.config.json +0 -5
  12. package/cleanDirectories.js +0 -40
  13. package/dist/package.json +0 -197
  14. package/rollup.config.cjs +0 -87
  15. package/src/components/ActionMenu/ActionMenu.stories.tsx +0 -230
  16. package/src/components/ActionMenu/ActionMenu.tsx +0 -174
  17. package/src/components/ActionMenu/index.ts +0 -2
  18. package/src/components/AppBar/AppBar.stories.tsx +0 -272
  19. package/src/components/AppBar/AppBar.sx.ts +0 -32
  20. package/src/components/AppBar/AppBar.tsx +0 -123
  21. package/src/components/AppBar/AppBarBrand.tsx +0 -120
  22. package/src/components/AppBar/AppBarContext.ts +0 -25
  23. package/src/components/AppBar/AppBarMenuToggle.tsx +0 -90
  24. package/src/components/AppBar/AppBarUserMenu.tsx +0 -217
  25. package/src/components/AppBar/index.ts +0 -25
  26. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -477
  27. package/src/components/Autocomplete/Autocomplete.helpers.ts +0 -60
  28. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -748
  29. package/src/components/Autocomplete/Autocomplete.sx.ts +0 -30
  30. package/src/components/Autocomplete/Autocomplete.tsx +0 -361
  31. package/src/components/Autocomplete/Autocomplete.types.ts +0 -13
  32. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +0 -55
  33. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +0 -17
  34. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +0 -31
  35. package/src/components/Autocomplete/index.ts +0 -12
  36. package/src/components/Avatar/Avatar.definitions.ts +0 -162
  37. package/src/components/Avatar/Avatar.stories.tsx +0 -258
  38. package/src/components/Avatar/Avatar.tsx +0 -206
  39. package/src/components/Avatar/index.ts +0 -1
  40. package/src/components/Button/Button.definition.ts +0 -97
  41. package/src/components/Button/Button.stories.tsx +0 -285
  42. package/src/components/Button/Button.tsx +0 -67
  43. package/src/components/Button/index.ts +0 -1
  44. package/src/components/Card/Card.definition.ts +0 -5
  45. package/src/components/Card/Card.stories.tsx +0 -221
  46. package/src/components/Card/Card.sx.ts +0 -104
  47. package/src/components/Card/Card.tsx +0 -200
  48. package/src/components/Card/index.ts +0 -9
  49. package/src/components/Chip/Chip.definitions.ts +0 -167
  50. package/src/components/Chip/Chip.stories.tsx +0 -265
  51. package/src/components/Chip/Chip.tsx +0 -61
  52. package/src/components/Chip/index.ts +0 -1
  53. package/src/components/Column/Column.tsx +0 -29
  54. package/src/components/Column/index.ts +0 -1
  55. package/src/components/DatePicker/DatePicker.definitions.ts +0 -228
  56. package/src/components/DatePicker/DatePicker.helpers.ts +0 -24
  57. package/src/components/DatePicker/DatePicker.stories.tsx +0 -309
  58. package/src/components/DatePicker/DatePicker.sx.ts +0 -33
  59. package/src/components/DatePicker/DatePicker.tsx +0 -189
  60. package/src/components/DatePicker/DatePicker.types.ts +0 -10
  61. package/src/components/DatePicker/index.ts +0 -9
  62. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  63. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  64. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  65. package/src/components/DateRangePicker/index.ts +0 -1
  66. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -256
  67. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +0 -38
  68. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -418
  69. package/src/components/DateTimePicker/DateTimePicker.sx.ts +0 -30
  70. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -225
  71. package/src/components/DateTimePicker/DateTimePicker.types.ts +0 -10
  72. package/src/components/DateTimePicker/index.ts +0 -9
  73. package/src/components/Drawer/Drawer.stories.tsx +0 -270
  74. package/src/components/Drawer/Drawer.sx.ts +0 -106
  75. package/src/components/Drawer/Drawer.tsx +0 -214
  76. package/src/components/Drawer/DrawerContext.ts +0 -26
  77. package/src/components/Drawer/DrawerItem.tsx +0 -110
  78. package/src/components/Drawer/index.ts +0 -10
  79. package/src/components/Flyout/Flyout.stories.tsx +0 -282
  80. package/src/components/Flyout/Flyout.tsx +0 -122
  81. package/src/components/Flyout/index.ts +0 -1
  82. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  83. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  84. package/src/components/Gallery/Gallery.tsx +0 -118
  85. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  86. package/src/components/Gallery/GalleryMain.tsx +0 -84
  87. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  88. package/src/components/Gallery/index.ts +0 -1
  89. package/src/components/Icon/Icon.stories.tsx +0 -121
  90. package/src/components/Icon/Icon.tsx +0 -175
  91. package/src/components/Icon/index.ts +0 -2
  92. package/src/components/Input/Input.definitions.ts +0 -324
  93. package/src/components/Input/Input.helpers.ts +0 -49
  94. package/src/components/Input/Input.stories.tsx +0 -499
  95. package/src/components/Input/Input.sx.ts +0 -42
  96. package/src/components/Input/Input.tsx +0 -141
  97. package/src/components/Input/Input.types.ts +0 -10
  98. package/src/components/Input/index.ts +0 -9
  99. package/src/components/InputGroup/InputGroup.definitions.ts +0 -158
  100. package/src/components/InputGroup/InputGroup.stories.tsx +0 -267
  101. package/src/components/InputGroup/InputGroup.tsx +0 -179
  102. package/src/components/InputGroup/index.ts +0 -1
  103. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  104. package/src/components/MenuButton/MenuButton.tsx +0 -100
  105. package/src/components/MenuButton/index.ts +0 -1
  106. package/src/components/Modal/Modal.stories.tsx +0 -721
  107. package/src/components/Modal/Modal.tsx +0 -355
  108. package/src/components/Modal/ModalBody.tsx +0 -16
  109. package/src/components/Modal/ModalFooter.tsx +0 -71
  110. package/src/components/Modal/ModalHeader.tsx +0 -18
  111. package/src/components/Modal/index.ts +0 -6
  112. package/src/components/PageLoader/PageLoader.stories.tsx +0 -217
  113. package/src/components/PageLoader/PageLoader.tsx +0 -96
  114. package/src/components/PageLoader/index.ts +0 -2
  115. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +0 -158
  116. package/src/components/ScrollTopButton/ScrollTopButton.tsx +0 -135
  117. package/src/components/ScrollTopButton/index.ts +0 -8
  118. package/src/components/ScrollTopButton/scrollToTop.ts +0 -37
  119. package/src/components/Select/Select.definitions.ts +0 -602
  120. package/src/components/Select/Select.helpers.ts +0 -71
  121. package/src/components/Select/Select.stories.tsx +0 -687
  122. package/src/components/Select/Select.sx.ts +0 -14
  123. package/src/components/Select/Select.tsx +0 -429
  124. package/src/components/Select/Select.types.ts +0 -15
  125. package/src/components/Select/_parts/SelectMenuItem.tsx +0 -40
  126. package/src/components/Select/_parts/SelectSearchHeader.tsx +0 -51
  127. package/src/components/Select/_parts/SelectValue.tsx +0 -96
  128. package/src/components/Select/index.ts +0 -14
  129. package/src/components/Stat/Stat.stories.tsx +0 -85
  130. package/src/components/Stat/Stat.tsx +0 -117
  131. package/src/components/Stat/index.ts +0 -2
  132. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  133. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  134. package/src/components/StatusMessage/index.ts +0 -2
  135. package/src/components/Stepper/Step.tsx +0 -21
  136. package/src/components/Stepper/Stepper.definition.ts +0 -75
  137. package/src/components/Stepper/Stepper.stories.tsx +0 -122
  138. package/src/components/Stepper/Stepper.tsx +0 -75
  139. package/src/components/Stepper/index.ts +0 -2
  140. package/src/components/Table/EmptyTable.png +0 -0
  141. package/src/components/Table/Table.definition.ts +0 -580
  142. package/src/components/Table/Table.stories.tsx +0 -853
  143. package/src/components/Table/Table.tsx +0 -495
  144. package/src/components/Table/data.ts +0 -134
  145. package/src/components/Table/exportsUtils.ts +0 -195
  146. package/src/components/Table/index.ts +0 -3
  147. package/src/components/Table/types.ts +0 -34
  148. package/src/components/Tabs/Tab.definition.ts +0 -53
  149. package/src/components/Tabs/Tab.tsx +0 -19
  150. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  151. package/src/components/Tabs/Tabs.tsx +0 -99
  152. package/src/components/Tabs/_tabUtils.tsx +0 -4
  153. package/src/components/Tabs/index.ts +0 -2
  154. package/src/components/Timeline/Timeline.definition.ts +0 -43
  155. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  156. package/src/components/Timeline/Timeline.tsx +0 -49
  157. package/src/components/Timeline/TimelineItem.tsx +0 -31
  158. package/src/components/Timeline/index.ts +0 -2
  159. package/src/components/Tooltip/Tooltip.stories.tsx +0 -129
  160. package/src/components/Tooltip/Tooltip.tsx +0 -58
  161. package/src/components/Tooltip/index.ts +0 -1
  162. package/src/components/_shared/formField.sx.ts +0 -118
  163. package/src/components/_shared/resolvePreset.ts +0 -35
  164. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  165. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  166. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  167. package/src/hooks/ClipBoard/index.ts +0 -1
  168. package/src/hooks/Wizard/Wizard.stories.tsx +0 -301
  169. package/src/hooks/Wizard/WizardContext.tsx +0 -166
  170. package/src/hooks/Wizard/index.ts +0 -6
  171. package/src/hooks/Wizard/useWizard.ts +0 -13
  172. package/src/index.ts +0 -17
  173. package/src/mui.ts +0 -54
  174. package/src/styles.css +0 -3
  175. package/src/theme/componentStyles.ts +0 -47
  176. package/src/theme/tokens.ts +0 -43
  177. package/tailwind.config.js +0 -10
  178. package/tsconfig.json +0 -48
  179. package/tsup.config.js +0 -41
  180. package/vite.config.js +0 -132
  181. package/vitest.config.ts +0 -35
  182. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  183. /package/{dist/Button-C17mExpd.cjs.map → Button-C17mExpd.cjs.map} +0 -0
  184. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  185. /package/{dist/Button-UkkP-bNw.js.map → Button-UkkP-bNw.js.map} +0 -0
  186. /package/{dist/README.md → README.md} +0 -0
  187. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs +0 -0
  188. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs.map +0 -0
  189. /package/{dist/components → components}/ActionMenu/ActionMenu.d.ts +0 -0
  190. /package/{dist/components → components}/ActionMenu/ActionMenu.js +0 -0
  191. /package/{dist/components → components}/ActionMenu/ActionMenu.js.map +0 -0
  192. /package/{dist/components → components}/ActionMenu/index.d.ts +0 -0
  193. /package/{dist/components → components}/ActionMenu.d.ts +0 -0
  194. /package/{dist/components → components}/AppBar/AppBar.cjs +0 -0
  195. /package/{dist/components → components}/AppBar/AppBar.cjs.map +0 -0
  196. /package/{dist/components → components}/AppBar/AppBar.d.ts +0 -0
  197. /package/{dist/components → components}/AppBar/AppBar.js +0 -0
  198. /package/{dist/components → components}/AppBar/AppBar.js.map +0 -0
  199. /package/{dist/components → components}/AppBar/AppBar.sx.d.ts +0 -0
  200. /package/{dist/components → components}/AppBar/AppBarBrand.d.ts +0 -0
  201. /package/{dist/components → components}/AppBar/AppBarContext.d.ts +0 -0
  202. /package/{dist/components → components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  203. /package/{dist/components → components}/AppBar/AppBarUserMenu.d.ts +0 -0
  204. /package/{dist/components → components}/AppBar/index.d.ts +0 -0
  205. /package/{dist/components → components}/AppBar.d.ts +0 -0
  206. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs +0 -0
  207. /package/{dist/components → components}/Autocomplete/Autocomplete.cjs.map +0 -0
  208. /package/{dist/components → components}/Autocomplete/Autocomplete.d.ts +0 -0
  209. /package/{dist/components → components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  210. /package/{dist/components → components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  211. /package/{dist/components → components}/Autocomplete/Autocomplete.js +0 -0
  212. /package/{dist/components → components}/Autocomplete/Autocomplete.js.map +0 -0
  213. /package/{dist/components → components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  214. /package/{dist/components → components}/Autocomplete/Autocomplete.types.d.ts +0 -0
  215. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  216. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  217. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  218. /package/{dist/components → components}/Autocomplete/index.d.ts +0 -0
  219. /package/{dist/components → components}/Autocomplete.d.ts +0 -0
  220. /package/{dist/components → components}/Avatar/Avatar.cjs +0 -0
  221. /package/{dist/components → components}/Avatar/Avatar.cjs.map +0 -0
  222. /package/{dist/components → components}/Avatar/Avatar.d.ts +0 -0
  223. /package/{dist/components → components}/Avatar/Avatar.definitions.d.ts +0 -0
  224. /package/{dist/components → components}/Avatar/Avatar.js +0 -0
  225. /package/{dist/components → components}/Avatar/Avatar.js.map +0 -0
  226. /package/{dist/components → components}/Avatar/index.d.ts +0 -0
  227. /package/{dist/components → components}/Avatar.d.ts +0 -0
  228. /package/{dist/components → components}/Button/Button.cjs +0 -0
  229. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  230. /package/{dist/components → components}/Button/Button.d.ts +0 -0
  231. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  232. /package/{dist/components → components}/Button/Button.js +0 -0
  233. /package/{dist/components → components}/Button/Button.js.map +0 -0
  234. /package/{dist/components → components}/Button/index.d.ts +0 -0
  235. /package/{dist/components → components}/Button.d.ts +0 -0
  236. /package/{dist/components → components}/Card/Card.cjs +0 -0
  237. /package/{dist/components → components}/Card/Card.cjs.map +0 -0
  238. /package/{dist/components → components}/Card/Card.d.ts +0 -0
  239. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  240. /package/{dist/components → components}/Card/Card.js +0 -0
  241. /package/{dist/components → components}/Card/Card.js.map +0 -0
  242. /package/{dist/components → components}/Card/Card.sx.d.ts +0 -0
  243. /package/{dist/components → components}/Card/index.d.ts +0 -0
  244. /package/{dist/components → components}/Card.d.ts +0 -0
  245. /package/{dist/components → components}/Chip/Chip.cjs +0 -0
  246. /package/{dist/components → components}/Chip/Chip.cjs.map +0 -0
  247. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  248. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  249. /package/{dist/components → components}/Chip/Chip.js +0 -0
  250. /package/{dist/components → components}/Chip/Chip.js.map +0 -0
  251. /package/{dist/components → components}/Chip/index.d.ts +0 -0
  252. /package/{dist/components → components}/Chip.d.ts +0 -0
  253. /package/{dist/components → components}/Column/Column.cjs +0 -0
  254. /package/{dist/components → components}/Column/Column.cjs.map +0 -0
  255. /package/{dist/components → components}/Column/Column.d.ts +0 -0
  256. /package/{dist/components → components}/Column/Column.js +0 -0
  257. /package/{dist/components → components}/Column/Column.js.map +0 -0
  258. /package/{dist/components → components}/Column/index.d.ts +0 -0
  259. /package/{dist/components → components}/Column.d.ts +0 -0
  260. /package/{dist/components → components}/DatePicker/DatePicker.cjs +0 -0
  261. /package/{dist/components → components}/DatePicker/DatePicker.cjs.map +0 -0
  262. /package/{dist/components → components}/DatePicker/DatePicker.d.ts +0 -0
  263. /package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  264. /package/{dist/components → components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  265. /package/{dist/components → components}/DatePicker/DatePicker.js +0 -0
  266. /package/{dist/components → components}/DatePicker/DatePicker.js.map +0 -0
  267. /package/{dist/components → components}/DatePicker/DatePicker.sx.d.ts +0 -0
  268. /package/{dist/components → components}/DatePicker/DatePicker.types.d.ts +0 -0
  269. /package/{dist/components → components}/DatePicker/index.d.ts +0 -0
  270. /package/{dist/components → components}/DatePicker.d.ts +0 -0
  271. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
  272. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  273. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  274. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  275. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
  276. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
  277. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  278. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  279. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs +0 -0
  280. /package/{dist/components → components}/DateTimePicker/DateTimePicker.cjs.map +0 -0
  281. /package/{dist/components → components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  282. /package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  283. /package/{dist/components → components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  284. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js +0 -0
  285. /package/{dist/components → components}/DateTimePicker/DateTimePicker.js.map +0 -0
  286. /package/{dist/components → components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  287. /package/{dist/components → components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
  288. /package/{dist/components → components}/DateTimePicker/index.d.ts +0 -0
  289. /package/{dist/components → components}/DateTimePicker.d.ts +0 -0
  290. /package/{dist/components → components}/Drawer/Drawer.cjs +0 -0
  291. /package/{dist/components → components}/Drawer/Drawer.cjs.map +0 -0
  292. /package/{dist/components → components}/Drawer/Drawer.d.ts +0 -0
  293. /package/{dist/components → components}/Drawer/Drawer.js +0 -0
  294. /package/{dist/components → components}/Drawer/Drawer.js.map +0 -0
  295. /package/{dist/components → components}/Drawer/Drawer.sx.d.ts +0 -0
  296. /package/{dist/components → components}/Drawer/DrawerContext.d.ts +0 -0
  297. /package/{dist/components → components}/Drawer/DrawerItem.d.ts +0 -0
  298. /package/{dist/components → components}/Drawer/index.d.ts +0 -0
  299. /package/{dist/components → components}/Drawer.d.ts +0 -0
  300. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  301. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  302. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  303. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  304. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  305. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  306. /package/{dist/components → components}/Flyout.d.ts +0 -0
  307. /package/{dist/components → components}/Gallery/Gallery.cjs +0 -0
  308. /package/{dist/components → components}/Gallery/Gallery.cjs.map +0 -0
  309. /package/{dist/components → components}/Gallery/Gallery.d.ts +0 -0
  310. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  311. /package/{dist/components → components}/Gallery/Gallery.js +0 -0
  312. /package/{dist/components → components}/Gallery/Gallery.js.map +0 -0
  313. /package/{dist/components → components}/Gallery/GalleryLightbox.d.ts +0 -0
  314. /package/{dist/components → components}/Gallery/GalleryMain.d.ts +0 -0
  315. /package/{dist/components → components}/Gallery/GalleryThumbnails.d.ts +0 -0
  316. /package/{dist/components → components}/Gallery/index.d.ts +0 -0
  317. /package/{dist/components → components}/Gallery.d.ts +0 -0
  318. /package/{dist/components → components}/Icon/Icon.cjs +0 -0
  319. /package/{dist/components → components}/Icon/Icon.cjs.map +0 -0
  320. /package/{dist/components → components}/Icon/Icon.d.ts +0 -0
  321. /package/{dist/components → components}/Icon/Icon.js +0 -0
  322. /package/{dist/components → components}/Icon/Icon.js.map +0 -0
  323. /package/{dist/components → components}/Icon/index.d.ts +0 -0
  324. /package/{dist/components → components}/Icon.d.ts +0 -0
  325. /package/{dist/components → components}/Input/Input.cjs +0 -0
  326. /package/{dist/components → components}/Input/Input.cjs.map +0 -0
  327. /package/{dist/components → components}/Input/Input.d.ts +0 -0
  328. /package/{dist/components → components}/Input/Input.definitions.d.ts +0 -0
  329. /package/{dist/components → components}/Input/Input.helpers.d.ts +0 -0
  330. /package/{dist/components → components}/Input/Input.js +0 -0
  331. /package/{dist/components → components}/Input/Input.js.map +0 -0
  332. /package/{dist/components → components}/Input/Input.sx.d.ts +0 -0
  333. /package/{dist/components → components}/Input/Input.types.d.ts +0 -0
  334. /package/{dist/components → components}/Input/index.d.ts +0 -0
  335. /package/{dist/components → components}/Input.d.ts +0 -0
  336. /package/{dist/components → components}/InputGroup/InputGroup.cjs +0 -0
  337. /package/{dist/components → components}/InputGroup/InputGroup.cjs.map +0 -0
  338. /package/{dist/components → components}/InputGroup/InputGroup.d.ts +0 -0
  339. /package/{dist/components → components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  340. /package/{dist/components → components}/InputGroup/InputGroup.js +0 -0
  341. /package/{dist/components → components}/InputGroup/InputGroup.js.map +0 -0
  342. /package/{dist/components → components}/InputGroup/index.d.ts +0 -0
  343. /package/{dist/components → components}/InputGroup.d.ts +0 -0
  344. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  345. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  346. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  347. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  348. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  349. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  350. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  351. /package/{dist/components → components}/Modal/Modal.cjs +0 -0
  352. /package/{dist/components → components}/Modal/Modal.cjs.map +0 -0
  353. /package/{dist/components → components}/Modal/Modal.d.ts +0 -0
  354. /package/{dist/components → components}/Modal/Modal.js +0 -0
  355. /package/{dist/components → components}/Modal/Modal.js.map +0 -0
  356. /package/{dist/components → components}/Modal/ModalBody.d.ts +0 -0
  357. /package/{dist/components → components}/Modal/ModalFooter.d.ts +0 -0
  358. /package/{dist/components → components}/Modal/ModalHeader.d.ts +0 -0
  359. /package/{dist/components → components}/Modal/index.d.ts +0 -0
  360. /package/{dist/components → components}/Modal.d.ts +0 -0
  361. /package/{dist/components → components}/PageLoader/PageLoader.cjs +0 -0
  362. /package/{dist/components → components}/PageLoader/PageLoader.cjs.map +0 -0
  363. /package/{dist/components → components}/PageLoader/PageLoader.d.ts +0 -0
  364. /package/{dist/components → components}/PageLoader/PageLoader.js +0 -0
  365. /package/{dist/components → components}/PageLoader/PageLoader.js.map +0 -0
  366. /package/{dist/components → components}/PageLoader/index.d.ts +0 -0
  367. /package/{dist/components → components}/PageLoader.d.ts +0 -0
  368. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs +0 -0
  369. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
  370. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
  371. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js +0 -0
  372. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
  373. /package/{dist/components → components}/ScrollTopButton/index.d.ts +0 -0
  374. /package/{dist/components → components}/ScrollTopButton/scrollToTop.d.ts +0 -0
  375. /package/{dist/components → components}/ScrollTopButton.d.ts +0 -0
  376. /package/{dist/components → components}/Select/Select.cjs +0 -0
  377. /package/{dist/components → components}/Select/Select.cjs.map +0 -0
  378. /package/{dist/components → components}/Select/Select.d.ts +0 -0
  379. /package/{dist/components → components}/Select/Select.definitions.d.ts +0 -0
  380. /package/{dist/components → components}/Select/Select.helpers.d.ts +0 -0
  381. /package/{dist/components → components}/Select/Select.js +0 -0
  382. /package/{dist/components → components}/Select/Select.js.map +0 -0
  383. /package/{dist/components → components}/Select/Select.sx.d.ts +0 -0
  384. /package/{dist/components → components}/Select/Select.types.d.ts +0 -0
  385. /package/{dist/components → components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  386. /package/{dist/components → components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
  387. /package/{dist/components → components}/Select/_parts/SelectValue.d.ts +0 -0
  388. /package/{dist/components → components}/Select/index.d.ts +0 -0
  389. /package/{dist/components → components}/Select.d.ts +0 -0
  390. /package/{dist/components → components}/Stat/Stat.cjs +0 -0
  391. /package/{dist/components → components}/Stat/Stat.cjs.map +0 -0
  392. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  393. /package/{dist/components → components}/Stat/Stat.js +0 -0
  394. /package/{dist/components → components}/Stat/Stat.js.map +0 -0
  395. /package/{dist/components → components}/Stat/index.d.ts +0 -0
  396. /package/{dist/components → components}/Stat.d.ts +0 -0
  397. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs +0 -0
  398. /package/{dist/components → components}/StatusMessage/StatusMessage.cjs.map +0 -0
  399. /package/{dist/components → components}/StatusMessage/StatusMessage.d.ts +0 -0
  400. /package/{dist/components → components}/StatusMessage/StatusMessage.js +0 -0
  401. /package/{dist/components → components}/StatusMessage/StatusMessage.js.map +0 -0
  402. /package/{dist/components → components}/StatusMessage/index.d.ts +0 -0
  403. /package/{dist/components → components}/StatusMessage.d.ts +0 -0
  404. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  405. /package/{dist/components → components}/Stepper/Stepper.cjs +0 -0
  406. /package/{dist/components → components}/Stepper/Stepper.cjs.map +0 -0
  407. /package/{dist/components → components}/Stepper/Stepper.d.ts +0 -0
  408. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  409. /package/{dist/components → components}/Stepper/Stepper.js +0 -0
  410. /package/{dist/components → components}/Stepper/Stepper.js.map +0 -0
  411. /package/{dist/components → components}/Stepper/index.d.ts +0 -0
  412. /package/{dist/components → components}/Stepper.d.ts +0 -0
  413. /package/{dist/components → components}/Table/Table.cjs +0 -0
  414. /package/{dist/components → components}/Table/Table.cjs.map +0 -0
  415. /package/{dist/components → components}/Table/Table.d.ts +0 -0
  416. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  417. /package/{dist/components → components}/Table/Table.js +0 -0
  418. /package/{dist/components → components}/Table/Table.js.map +0 -0
  419. /package/{dist/components → components}/Table/data.d.ts +0 -0
  420. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  421. /package/{dist/components → components}/Table/index.d.ts +0 -0
  422. /package/{dist/components → components}/Table/types.d.ts +0 -0
  423. /package/{dist/components → components}/Table.d.ts +0 -0
  424. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  425. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  426. /package/{dist/components → components}/Tabs/Tabs.cjs +0 -0
  427. /package/{dist/components → components}/Tabs/Tabs.cjs.map +0 -0
  428. /package/{dist/components → components}/Tabs/Tabs.d.ts +0 -0
  429. /package/{dist/components → components}/Tabs/Tabs.js +0 -0
  430. /package/{dist/components → components}/Tabs/Tabs.js.map +0 -0
  431. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  432. /package/{dist/components → components}/Tabs/index.d.ts +0 -0
  433. /package/{dist/components → components}/Tabs.d.ts +0 -0
  434. /package/{dist/components → components}/Timeline/Timeline.cjs +0 -0
  435. /package/{dist/components → components}/Timeline/Timeline.cjs.map +0 -0
  436. /package/{dist/components → components}/Timeline/Timeline.d.ts +0 -0
  437. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  438. /package/{dist/components → components}/Timeline/Timeline.js +0 -0
  439. /package/{dist/components → components}/Timeline/Timeline.js.map +0 -0
  440. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  441. /package/{dist/components → components}/Timeline/index.d.ts +0 -0
  442. /package/{dist/components → components}/Timeline.d.ts +0 -0
  443. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  444. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  445. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  446. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  447. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  448. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  449. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  450. /package/{dist/components → components}/_shared/formField.sx.d.ts +0 -0
  451. /package/{dist/components → components}/_shared/resolvePreset.d.ts +0 -0
  452. /package/{dist/formField.sx-CQ1mbk9M.cjs → formField.sx-CQ1mbk9M.cjs} +0 -0
  453. /package/{dist/formField.sx-CQ1mbk9M.cjs.map → formField.sx-CQ1mbk9M.cjs.map} +0 -0
  454. /package/{dist/formField.sx-DfVbMe0V.js → formField.sx-DfVbMe0V.js} +0 -0
  455. /package/{dist/formField.sx-DfVbMe0V.js.map → formField.sx-DfVbMe0V.js.map} +0 -0
  456. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  457. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  458. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  459. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  460. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  461. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  462. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  463. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  464. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs +0 -0
  465. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs.map +0 -0
  466. /package/{dist/hooks → hooks}/Wizard/Wizard.js +0 -0
  467. /package/{dist/hooks → hooks}/Wizard/Wizard.js.map +0 -0
  468. /package/{dist/hooks → hooks}/Wizard/WizardContext.d.ts +0 -0
  469. /package/{dist/hooks → hooks}/Wizard/index.d.ts +0 -0
  470. /package/{dist/hooks → hooks}/Wizard/useWizard.d.ts +0 -0
  471. /package/{dist/hooks → hooks}/Wizard.d.ts +0 -0
  472. /package/{dist/index.cjs → index.cjs} +0 -0
  473. /package/{dist/index.cjs.map → index.cjs.map} +0 -0
  474. /package/{dist/index.d.ts → index.d.ts} +0 -0
  475. /package/{dist/index.js → index.js} +0 -0
  476. /package/{dist/index.js.map → index.js.map} +0 -0
  477. /package/{dist/mui.d.ts → mui.d.ts} +0 -0
  478. /package/{dist/resolvePreset-B-IB0ehH.js → resolvePreset-B-IB0ehH.js} +0 -0
  479. /package/{dist/resolvePreset-B-IB0ehH.js.map → resolvePreset-B-IB0ehH.js.map} +0 -0
  480. /package/{dist/resolvePreset-CT3kU-K2.cjs → resolvePreset-CT3kU-K2.cjs} +0 -0
  481. /package/{dist/resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CT3kU-K2.cjs.map} +0 -0
  482. /package/{dist/styles.css → styles.css} +0 -0
  483. /package/{dist/theme → theme}/componentStyles.d.ts +0 -0
  484. /package/{dist/theme → theme}/tokens.d.ts +0 -0
  485. /package/{dist/useWizard-CWdIxZzX.cjs → useWizard-CWdIxZzX.cjs} +0 -0
  486. /package/{dist/useWizard-CWdIxZzX.cjs.map → useWizard-CWdIxZzX.cjs.map} +0 -0
  487. /package/{dist/useWizard-CWq--C3o.js → useWizard-CWq--C3o.js} +0 -0
  488. /package/{dist/useWizard-CWq--C3o.js.map → useWizard-CWq--C3o.js.map} +0 -0
@@ -1,721 +0,0 @@
1
- import React, { useState, useRef } from 'react'; // 👈 Importa useRef
2
- import type { Meta, StoryObj } from '@storybook/react';
3
- import { useForm } from 'react-hook-form';
4
-
5
- import { Button, Typography, Box, Stack } from '@mui/material';
6
- import { fn } from '@storybook/test';
7
- import Modal, { ModalRef } from './Modal';
8
- import { Input } from '../Input/Input';
9
- import { useClipboard } from '../../hooks/ClipBoard';
10
-
11
- const meta: Meta<typeof Modal> = {
12
- title: 'Components/Modal',
13
- component: Modal,
14
- tags: ['autodocs'],
15
- argTypes: {
16
- open: {
17
- control: 'boolean',
18
- description: 'Controla si el modal está abierto o cerrado (uso controlado). Opcional si se usa el control imperativo con `ref`.',
19
- },
20
- onClose: {
21
- action: 'onClose clickeado',
22
- description: 'Función a ejecutar cuando el modal solicita cerrarse (ej. clic fuera o botón de cerrar). Opcional si se usa el control imperativo con `ref`.',
23
- },
24
- title: {
25
- control: 'text',
26
- description: 'Título opcional para el encabezado del modal. Se usará si no se proporciona `Modal.Header` explícitamente.',
27
- },
28
- children: {
29
- control: 'object',
30
- description: 'Contenido del modal, típicamente `Modal.Header`, `Modal.Body` y `Modal.Footer`.',
31
- },
32
- showCloseButton: {
33
- control: 'boolean',
34
- description: 'Controla la visibilidad del botón "Cerrar" por defecto en el `Modal.Footer`.',
35
- },
36
- closeButtonText: {
37
- control: 'text',
38
- description: 'Texto personalizado para el botón "Cerrar".',
39
- },
40
- closeButtonDisabled: {
41
- control: 'boolean',
42
- description: 'Deshabilita el botón "Cerrar".',
43
- },
44
- actions: {
45
- control: 'object',
46
- description: 'Un arreglo de objetos `ModalAction` para botones de acción personalizados en el `Modal.Footer`.',
47
- },
48
- maxWidth: {
49
- control: 'select',
50
- options: ['xs', 'sm', 'md', 'lg', 'xl', false],
51
- description: 'Tamaño máximo del modal (propiedad de Material-UI `Dialog`).',
52
- },
53
- },
54
- parameters: {
55
- docs: {
56
- description: {
57
- component: 'Un componente de modal reutilizable de Material-UI con una estructura de componente compuesto (`Modal.Header`, `Modal.Body`, `Modal.Footer`). Puede ser controlado por una prop `open` o de forma imperativa a través de `ref` (`open()` y `close()` métodos). Permite definir acciones personalizadas y controlar la visibilidad y el estado de los botones por defecto.',
58
- },
59
- },
60
- },
61
- };
62
-
63
- export default meta;
64
- type Story = StoryObj<typeof Modal>;
65
-
66
- // --- Historias ---
67
-
68
- // Historia base: Modal simple con título y contenido básico (uso controlado por estado)
69
- export const Default: Story = {
70
- args: {
71
- open: true,
72
- onClose: fn(),
73
- title: 'Modal de Ejemplo (Controlado por Estado)',
74
- children: (
75
- <Modal.Body>
76
- <Typography>Este es el contenido principal del modal.</Typography>
77
- <Typography sx={{ mt: 2 }}>Puedes colocar cualquier elemento React aquí.</Typography>
78
- </Modal.Body>
79
- ),
80
- showCloseButton: true,
81
- closeButtonText: 'Cerrar',
82
- actions: [
83
- { text: 'Guardar', onClick: fn(() => console.log("some some")), variant: 'contained' },
84
- { text: 'Aceptar', onClick: fn(), color: 'success' },
85
- ],
86
- },
87
- parameters: {
88
- docs: {
89
- description: {
90
- story: 'Muestra un modal básico con un título y botones de acción, controlado por una prop `open` en el componente padre.',
91
- },
92
- },
93
- },
94
- };
95
-
96
- // Nueva Historia: Modal controlado de forma Imperativa (sin estado `open` en el padre)
97
- export const ImperativeControl: Story = {
98
- render: (args) => {
99
- const modalRef = useRef<ModalRef>(null);
100
-
101
- const handleOpen = () => {
102
- modalRef.current?.open();
103
- };
104
-
105
- const handleConfirm = () => {
106
- alert('Acción confirmada desde el modal imperativo!');
107
- modalRef.current?.close();
108
- };
109
-
110
- return (
111
- <Box>
112
- <Button onClick={handleOpen} variant="contained">
113
- Abrir Modal Imperativo
114
- </Button>
115
-
116
- <Modal
117
- ref={modalRef} // Asigna la ref al modal
118
- // No se pasa la prop `open` aquí, el modal gestiona su estado interno
119
- onClose={fn(() => console.log('Modal cerrado imperativamente'))} // El padre aún puede escuchar el cierre
120
- title="Modal Controlado Imperativamente"
121
- showCloseButton={true}
122
- closeButtonText="Cerrar"
123
- actions={[{ text: 'Aceptar', onClick: handleConfirm, variant: 'contained' }]}
124
- maxWidth="sm"
125
- {...args} // Pasa otras props del story
126
- >
127
- <Modal.Body>
128
- <Typography>Este modal se abre y cierra llamando a métodos de la `ref`.</Typography>
129
- <Typography sx={{ mt: 2 }}>No hay un `useState` para `open` en este componente padre.</Typography>
130
- </Modal.Body>
131
- </Modal>
132
- </Box>
133
- );
134
- },
135
- args: {
136
- // Las props 'open' y 'onClose' se omiten o se gestionan internamente en el render
137
- open: undefined, // Asegúrate de que `open` no se pase para activar el control interno
138
- onClose: undefined, // `onClose` se gestiona en el render
139
- },
140
- parameters: {
141
- docs: {
142
- description: {
143
- story: 'Demuestra cómo controlar el modal de forma imperativa usando `useRef` y los métodos `open()` y `close()` expuestos por el modal, sin necesidad de gestionar un estado `open` en el componente padre.',
144
- },
145
- },
146
- },
147
- };
148
-
149
-
150
- // Historia: Modal con estructura de componente compuesto completa
151
- export const CompleteStructure: Story = {
152
- args: {
153
- open: true,
154
- onClose: fn(),
155
- maxWidth: 'md',
156
- children: (
157
- <>
158
- <Modal.Header>
159
- <Typography variant="h6">Detalles del Artículo</Typography>
160
- </Modal.Header>
161
- <Modal.Body>
162
- <Box sx={{ p: 2, border: '1px dashed grey', borderRadius: 1 }}>
163
- <Typography>Aquí va un formulario complejo o información detallada.</Typography>
164
- <Typography sx={{ mt: 1 }}>El cuerpo puede crecer y tener scroll si es necesario.</Typography>
165
- <Button onClick={fn()} sx={{ mt: 2 }}>Acción en el cuerpo</Button>
166
- </Box>
167
- </Modal.Body>
168
- <Modal.Footer
169
- showCloseButton={false}
170
- onClose={fn()} // Added onClose property
171
- actions={[
172
- { text: 'Cancelar', onClick: fn(), variant: 'outlined', color: 'error' },
173
- { text: 'Confirmar Envío', onClick: fn(), variant: 'contained', color: 'primary' },
174
- ]}
175
- >
176
- <Typography variant="caption" sx={{ mr: 2 }}>
177
- Requiere confirmación.
178
- </Typography>
179
- </Modal.Footer>
180
- </>
181
- ),
182
- },
183
- parameters: {
184
- docs: {
185
- description: {
186
- story: 'Demuestra el uso completo de la estructura de componente compuesto (`Modal.Header`, `Modal.Body`, `Modal.Footer`) con contenido variado y control de botones.',
187
- },
188
- },
189
- },
190
- };
191
-
192
- // Historia: Modal sin botón de cerrar por defecto
193
- export const NoDefaultCloseButton: Story = {
194
- args: {
195
- ...Default.args,
196
- title: 'Modal sin botón de cerrar',
197
- showCloseButton: false,
198
- actions: [
199
- { text: 'Entendido', onClick: fn(), variant: 'contained' },
200
- ],
201
- },
202
- parameters: {
203
- docs: {
204
- description: {
205
- story: 'Un modal que no muestra el botón "Cerrar" por defecto, forzando al usuario a usar las acciones personalizadas.',
206
- },
207
- },
208
- },
209
- };
210
-
211
- // Historia: Modal con botón de cerrar deshabilitado
212
- export const DisabledCloseButton: Story = {
213
- args: {
214
- ...Default.args,
215
- title: 'Modal con botón de cerrar deshabilitado',
216
- closeButtonDisabled: true,
217
- actions: [
218
- { text: 'Habilitar', onClick: fn(), variant: 'contained' },
219
- ],
220
- },
221
- parameters: {
222
- docs: {
223
- description: {
224
- story: 'Muestra un modal donde el botón "Cerrar" por defecto está deshabilitado.',
225
- },
226
- },
227
- },
228
- };
229
-
230
- // Historia: Modal con diferentes tamaños (maxWidth)
231
- export const Sizing: Story = {
232
- render: (args: any) => {
233
- const [openXs, setOpenXs] = useState(false);
234
- const [openLg, setOpenLg] = useState(false);
235
- const { ref, CopyMessage } = useClipboard();
236
-
237
- return (
238
- <Box sx={{ display: 'flex', gap: 2 }}>
239
- <Button onClick={() => setOpenXs(true)} variant="outlined">Abrir XS</Button>
240
- <Button onClick={() => setOpenLg(true)} variant="outlined">Abrir LG</Button>
241
-
242
- <Modal {...args} open={openXs} onClose={() => setOpenXs(false)} title="Modal XS" maxWidth="xs">
243
- <Modal.Body><Typography>Este es un modal de tamaño extra pequeño.</Typography></Modal.Body>
244
- </Modal>
245
-
246
- <Modal {...args} open={openLg} onClose={() => setOpenLg(false)} title="Modal LG" maxWidth="lg">
247
- <Modal.Body>
248
- <Typography ref={ref}>Este es un modal de tamaño grande.</Typography>
249
- <CopyMessage />
250
- </Modal.Body>
251
- </Modal>
252
- </Box>
253
- );
254
- },
255
- args: {
256
- open: false,
257
- onClose: fn(),
258
- },
259
- parameters: {
260
- docs: {
261
- description: {
262
- story: 'Demuestra cómo el modal se ajusta a diferentes tamaños (`maxWidth`) definidos por las propiedades de Material-UI.',
263
- },
264
- },
265
- },
266
- };
267
-
268
- // Historia: Modal con texto largo en el cuerpo (para probar el scroll)
269
- export const LongContent: Story = {
270
- args: {
271
- open: true,
272
- onClose: fn(),
273
- title: 'Modal con Contenido Largo',
274
- maxWidth: 'sm',
275
- children: (
276
- <Modal.Body>
277
- {Array.from({ length: 30 }, (_, i) => (
278
- <Typography key={i} sx={{ mb: 1 }}>
279
- Este es un párrafo de contenido largo para probar el scroll del modal. Línea {i + 1}.
280
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
281
- </Typography>
282
- ))}
283
- </Modal.Body>
284
- ),
285
- },
286
- parameters: {
287
- docs: {
288
- description: {
289
- story: 'Muestra un modal con un cuerpo que contiene mucho texto, demostrando la funcionalidad de scroll automático.',
290
- },
291
- },
292
- },
293
- };
294
- // =============================================================================
295
- // RHF DENTRO DEL MODAL — Botones a nivel de BODY (forma recomendada)
296
- // =============================================================================
297
- // PROBLEMA: Si los botones viven en `Modal.Footer` (hermano de `Modal.Body`),
298
- // el `<form>` no puede envolver a ambos porque son hermanos en el árbol.
299
- // Entonces "Guardar" NO dispara submit ni validaciones.
300
- //
301
- // SOLUCIÓN: Meter el `<form>` + inputs + botones dentro del mismo `Modal.Body`.
302
- // Usar `hiddenFooter` para ocultar el footer por defecto.
303
- // =============================================================================
304
-
305
- type UserFormValues = {
306
- name: string;
307
- email: string;
308
- };
309
-
310
- export const RHFInsideBody: Story = {
311
- render: () => {
312
- const [open, setOpen] = useState(false);
313
- const [submitted, setSubmitted] = useState<UserFormValues | null>(null);
314
-
315
- const {
316
- control,
317
- handleSubmit,
318
- reset,
319
- formState: { isSubmitting },
320
- } = useForm<UserFormValues>({
321
- defaultValues: { name: '', email: '' },
322
- });
323
-
324
- const onSubmit = async (data: UserFormValues) => {
325
- await new Promise((r) => setTimeout(r, 500));
326
- setSubmitted(data);
327
- setOpen(false);
328
- reset();
329
- };
330
-
331
- const handleClose = () => {
332
- setOpen(false);
333
- reset();
334
- };
335
-
336
- return (
337
- <Box>
338
- <Button variant="contained" onClick={() => setOpen(true)}>
339
- Abrir form en Modal
340
- </Button>
341
- {submitted && (
342
- <Typography sx={{ mt: 2 }} color="success.main">
343
- Enviado: {JSON.stringify(submitted)}
344
- </Typography>
345
- )}
346
-
347
- <Modal
348
- open={open}
349
- onClose={handleClose}
350
- title="Crear usuario"
351
- maxWidth="sm"
352
- hiddenFooter // 👈 ocultamos el footer por defecto
353
- >
354
- <Modal.Body>
355
- {/* El form envuelve TODO: inputs + botones.
356
- Los botones están dentro del body, NO en un footer. */}
357
- <Box
358
- component="form"
359
- onSubmit={handleSubmit(onSubmit)}
360
- noValidate
361
- paddingTop={2}
362
- >
363
- <Stack spacing={3}>
364
- <Input
365
- name="name"
366
- control={control}
367
- label="Nombre"
368
- validation={{
369
- required: 'El nombre es requerido',
370
- minLength: { value: 2, message: 'Mínimo 2 caracteres' },
371
- }}
372
- />
373
- <Input
374
- name="email"
375
- control={control}
376
- label="Email"
377
- type="email"
378
- validation={{
379
- required: 'El email es requerido',
380
- pattern: {
381
- value: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
382
- message: 'Email inválido',
383
- },
384
- }}
385
- />
386
-
387
- {/* Botones DENTRO del form, a nivel del body. */}
388
- <Stack
389
- direction="row"
390
- spacing={1}
391
- justifyContent="flex-end"
392
- sx={{ pt: 1 }}
393
- >
394
- <Button
395
- type="button"
396
- variant="text"
397
- onClick={handleClose}
398
- disabled={isSubmitting}
399
- >
400
- Cancelar
401
- </Button>
402
- <Button
403
- type="submit"
404
- variant="contained"
405
- disabled={isSubmitting}
406
- >
407
- {isSubmitting ? 'Guardando...' : 'Guardar'}
408
- </Button>
409
- </Stack>
410
- </Stack>
411
- </Box>
412
- </Modal.Body>
413
- </Modal>
414
- </Box>
415
- );
416
- },
417
- parameters: {
418
- docs: {
419
- description: {
420
- story: [
421
- '**Modal + React Hook Form con botones a nivel del Body (recomendado).**',
422
- '',
423
- 'Cuando usás RHF dentro de un modal, los botones de submit/cancel deben',
424
- 'vivir dentro del mismo `<form>` que los inputs. Si ponés los botones',
425
- 'en `Modal.Footer`, quedan en un subárbol hermano al Body y el submit',
426
- 'no dispara porque el `<form>` no los envuelve.',
427
- '',
428
- 'La solución es:',
429
- '1. Usar `hiddenFooter` en el Modal para ocultar el footer por defecto.',
430
- '2. Meter el `<form>`, los inputs y los botones todos dentro de `Modal.Body`.',
431
- '3. El botón de submit usa `type="submit"`, que dispara el `onSubmit` del form.',
432
- ].join('\n'),
433
- },
434
- },
435
- },
436
- };
437
-
438
- // =============================================================================
439
- // RHF con botones en FOOTER usando formId (alternativa avanzada)
440
- // =============================================================================
441
- // Si querés mantener el layout clásico (botones en footer, form en body), la
442
- // forma correcta es conectar el botón al form por su atributo `form=""`.
443
- // Esto sí funciona con HTML5 nativo: un `<button form="myFormId">` fuera del
444
- // `<form>` sigue disparando el submit.
445
- // =============================================================================
446
-
447
- // =============================================================================
448
- // MODO CONFIRM — reemplazo del ConfirmModal legacy
449
- // =============================================================================
450
-
451
- export const ConfirmInfo: Story = {
452
- render: () => {
453
- const [open, setOpen] = useState(false);
454
- return (
455
- <Box>
456
- <Button variant="contained" onClick={() => setOpen(true)}>
457
- Abrir confirm (info)
458
- </Button>
459
- <Modal
460
- mode="confirm"
461
- open={open}
462
- onClose={() => setOpen(false)}
463
- title="¿Deseas continuar?"
464
- confirmMessage="Esta acción guardará los cambios realizados en el formulario."
465
- confirmText="Sí, continuar"
466
- closeButtonText="Cancelar"
467
- onConfirm={() => console.log('confirmed')}
468
- />
469
- </Box>
470
- );
471
- },
472
- parameters: {
473
- docs: {
474
- description: {
475
- story: 'Confirm de severidad `info` (default). Layout centrado con icono circular, título, mensaje y botones Cancelar / Confirmar.',
476
- },
477
- },
478
- },
479
- };
480
-
481
- export const ConfirmDelete: Story = {
482
- render: () => {
483
- const [open, setOpen] = useState(false);
484
- return (
485
- <Box>
486
- <Button variant="outlined" color="error" onClick={() => setOpen(true)}>
487
- Eliminar afiliación
488
- </Button>
489
- <Modal
490
- mode="confirm"
491
- severity="error"
492
- open={open}
493
- onClose={() => setOpen(false)}
494
- title="Eliminar afiliación"
495
- confirmMessage="Esta acción no se puede deshacer. ¿Confirmas que deseas eliminar la afiliación #12458?"
496
- confirmText="Sí, eliminar"
497
- closeButtonText="Cancelar"
498
- onConfirm={() => console.log('deleted')}
499
- />
500
- </Box>
501
- );
502
- },
503
- parameters: {
504
- docs: {
505
- description: {
506
- story: 'Confirm de severidad `error` — icono rojo y botón primario rojo. Patrón típico para operaciones destructivas.',
507
- },
508
- },
509
- },
510
- };
511
-
512
- export const ConfirmWarning: Story = {
513
- render: () => {
514
- const [open, setOpen] = useState(false);
515
- return (
516
- <Box>
517
- <Button variant="contained" color="warning" onClick={() => setOpen(true)}>
518
- Salir sin guardar
519
- </Button>
520
- <Modal
521
- mode="confirm"
522
- severity="warning"
523
- open={open}
524
- onClose={() => setOpen(false)}
525
- title="Tienes cambios sin guardar"
526
- confirmMessage="Si sales ahora perderás los cambios realizados. ¿Deseas salir igualmente?"
527
- confirmText="Salir sin guardar"
528
- closeButtonText="Seguir editando"
529
- onConfirm={() => console.log('discarded')}
530
- />
531
- </Box>
532
- );
533
- },
534
- };
535
-
536
- export const ConfirmSuccess: Story = {
537
- render: () => {
538
- const [open, setOpen] = useState(false);
539
- return (
540
- <Box>
541
- <Button variant="contained" color="success" onClick={() => setOpen(true)}>
542
- Aprobar solicitud
543
- </Button>
544
- <Modal
545
- mode="confirm"
546
- severity="success"
547
- open={open}
548
- onClose={() => setOpen(false)}
549
- title="Aprobar solicitud"
550
- confirmMessage="Al aprobar, el cliente recibirá una notificación y se activará su afiliación."
551
- confirmText="Aprobar"
552
- closeButtonText="Cancelar"
553
- onConfirm={() => console.log('approved')}
554
- />
555
- </Box>
556
- );
557
- },
558
- };
559
-
560
- export const ConfirmAsync: Story = {
561
- render: () => {
562
- const [open, setOpen] = useState(false);
563
- const [result, setResult] = useState<string | null>(null);
564
-
565
- const simulateRequest = () =>
566
- new Promise<void>((resolve) => {
567
- setTimeout(() => {
568
- setResult('Ejecutado después de 1.5s');
569
- resolve();
570
- }, 1500);
571
- });
572
-
573
- return (
574
- <Box>
575
- <Button variant="contained" onClick={() => setOpen(true)}>
576
- Confirmar con request async
577
- </Button>
578
- {result && (
579
- <Typography sx={{ mt: 2 }} color="success.main">
580
- {result}
581
- </Typography>
582
- )}
583
- <Modal
584
- mode="confirm"
585
- open={open}
586
- onClose={() => setOpen(false)}
587
- title="Procesar afiliación"
588
- confirmMessage="Esto enviará la solicitud al backend y puede tardar unos segundos."
589
- confirmText="Procesar"
590
- onConfirm={simulateRequest}
591
- />
592
- </Box>
593
- );
594
- },
595
- parameters: {
596
- docs: {
597
- description: {
598
- story: 'El `onConfirm` puede devolver una `Promise`. Mientras resuelve, los botones quedan deshabilitados para evitar clicks dobles. Al resolver, el modal cierra automáticamente.',
599
- },
600
- },
601
- },
602
- };
603
-
604
- export const RHFWithFooterFormId: Story = {
605
- render: () => {
606
- const [open, setOpen] = useState(false);
607
- const [submitted, setSubmitted] = useState<UserFormValues | null>(null);
608
-
609
- const {
610
- control,
611
- handleSubmit,
612
- reset,
613
- formState: { isSubmitting },
614
- } = useForm<UserFormValues>({
615
- defaultValues: { name: '', email: '' },
616
- });
617
-
618
- const FORM_ID = 'user-form-footer';
619
-
620
- const onSubmit = async (data: UserFormValues) => {
621
- await new Promise((r) => setTimeout(r, 500));
622
- setSubmitted(data);
623
- setOpen(false);
624
- reset();
625
- };
626
-
627
- const handleClose = () => {
628
- setOpen(false);
629
- reset();
630
- };
631
-
632
- return (
633
- <Box>
634
- <Button variant="contained" onClick={() => setOpen(true)}>
635
- Abrir form (footer con formId)
636
- </Button>
637
- {submitted && (
638
- <Typography sx={{ mt: 2 }} color="success.main">
639
- Enviado: {JSON.stringify(submitted)}
640
- </Typography>
641
- )}
642
-
643
- <Modal
644
- open={open}
645
- onClose={handleClose}
646
- title="Crear usuario (footer)"
647
- maxWidth="sm"
648
- actions={[
649
- {
650
- text: isSubmitting ? 'Guardando...' : 'Guardar',
651
- // 👇 clave: el botón referencia al form por id.
652
- buttonProps: {
653
- type: 'submit',
654
- form: FORM_ID,
655
- variant: 'contained',
656
- disabled: isSubmitting,
657
- },
658
- },
659
- ]}
660
- closeButtonText="Cancelar"
661
- >
662
- <Modal.Body>
663
- <Box
664
- component="form"
665
- id={FORM_ID}
666
- onSubmit={handleSubmit(onSubmit)}
667
- noValidate
668
- paddingTop={2}
669
- >
670
- <Stack spacing={3}>
671
- <Input
672
- name="name"
673
- control={control}
674
- label="Nombre"
675
- validation={{
676
- required: 'El nombre es requerido',
677
- }}
678
- />
679
- <Input
680
- name="email"
681
- control={control}
682
- label="Email"
683
- type="email"
684
- validation={{
685
- required: 'El email es requerido',
686
- pattern: {
687
- value: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
688
- message: 'Email inválido',
689
- },
690
- }}
691
- />
692
- </Stack>
693
- </Box>
694
- </Modal.Body>
695
- </Modal>
696
- </Box>
697
- );
698
- },
699
- parameters: {
700
- docs: {
701
- description: {
702
- story: [
703
- '**Alternativa avanzada: botones en el footer usando `form="formId"`.**',
704
- '',
705
- 'Si necesitás mantener el layout clásico (Header / Body / Footer) con los',
706
- 'botones en el footer, la forma correcta es asignarle un `id` al `<form>`',
707
- 'y al botón de submit le pasás `form="mismoId"`. HTML5 nativo conecta',
708
- 'el botón con el form aunque no sean hermanos en el DOM.',
709
- '',
710
- '```tsx',
711
- '<form id="user-form" onSubmit={handleSubmit(onSubmit)}>...</form>',
712
- '<button type="submit" form="user-form">Guardar</button>',
713
- '```',
714
- '',
715
- 'Es la alternativa cuando querés reutilizar `Modal.Footer` con sus `actions`',
716
- 'en lugar de construir los botones a mano dentro del body.',
717
- ].join('\n'),
718
- },
719
- },
720
- },
721
- };