@soyfri/shared-library 2.0.0-beta.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/Alert-B3SMPD1s.cjs +31 -0
  2. package/Alert-B3SMPD1s.cjs.map +1 -0
  3. package/Alert-YsPScpSE.js +32 -0
  4. package/Alert-YsPScpSE.js.map +1 -0
  5. package/Autocomplete-C_lW1VER.js +337 -0
  6. package/Autocomplete-C_lW1VER.js.map +1 -0
  7. package/Autocomplete-CejWztBY.cjs +336 -0
  8. package/Autocomplete-CejWztBY.cjs.map +1 -0
  9. package/Avatar-Dw5rzayR.cjs +166 -0
  10. package/Avatar-Dw5rzayR.cjs.map +1 -0
  11. package/Avatar-H8akSege.js +167 -0
  12. package/Avatar-H8akSege.js.map +1 -0
  13. package/Breadcrumbs-B9I3vxPb.cjs +25 -0
  14. package/Breadcrumbs-B9I3vxPb.cjs.map +1 -0
  15. package/Breadcrumbs-C41SPbtX.js +26 -0
  16. package/Breadcrumbs-C41SPbtX.js.map +1 -0
  17. package/Button-C17mExpd.cjs.map +1 -1
  18. package/Button-UkkP-bNw.js.map +1 -1
  19. package/ButtonGroup-CNunDofQ.cjs +33 -0
  20. package/ButtonGroup-CNunDofQ.cjs.map +1 -0
  21. package/ButtonGroup-CcKUZ-lT.js +34 -0
  22. package/ButtonGroup-CcKUZ-lT.js.map +1 -0
  23. package/Card-DYKGY-NG.js +116 -0
  24. package/Card-DYKGY-NG.js.map +1 -0
  25. package/Card-Dr1-ATRY.cjs +115 -0
  26. package/Card-Dr1-ATRY.cjs.map +1 -0
  27. package/Checkbox-BCqMFWt4.cjs +187 -0
  28. package/Checkbox-BCqMFWt4.cjs.map +1 -0
  29. package/Checkbox-gB5YKkVo.js +188 -0
  30. package/Checkbox-gB5YKkVo.js.map +1 -0
  31. package/{components/DateRangePicker/DateRangePicker.js → Chip-OPYQ1uQ_.js} +33 -35
  32. package/Chip-OPYQ1uQ_.js.map +1 -0
  33. package/{components/DateRangePicker/DateRangePicker.cjs → Chip-qoJLDiva.cjs} +33 -36
  34. package/Chip-qoJLDiva.cjs.map +1 -0
  35. package/DatePicker-_IGWc3I5.js +178 -0
  36. package/DatePicker-_IGWc3I5.js.map +1 -0
  37. package/DatePicker-t7uDTZMl.cjs +177 -0
  38. package/DatePicker-t7uDTZMl.cjs.map +1 -0
  39. package/DateTimePicker-BxQyjTCY.cjs +229 -0
  40. package/DateTimePicker-BxQyjTCY.cjs.map +1 -0
  41. package/DateTimePicker-CrmWav_j.js +230 -0
  42. package/DateTimePicker-CrmWav_j.js.map +1 -0
  43. package/Divider-BApcM5CV.js +28 -0
  44. package/Divider-BApcM5CV.js.map +1 -0
  45. package/Divider-CIY0JK4U.cjs +27 -0
  46. package/Divider-CIY0JK4U.cjs.map +1 -0
  47. package/Input-CScC87J5.cjs +185 -0
  48. package/Input-CScC87J5.cjs.map +1 -0
  49. package/Input-DP_fKl38.js +186 -0
  50. package/Input-DP_fKl38.js.map +1 -0
  51. package/Modal-C_QY7ZzY.js +352 -0
  52. package/Modal-C_QY7ZzY.js.map +1 -0
  53. package/Modal-D_6ZdSzw.cjs +351 -0
  54. package/Modal-D_6ZdSzw.cjs.map +1 -0
  55. package/README.md +188 -172
  56. package/RadioGroup-Dd0rHXSX.cjs +202 -0
  57. package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  58. package/RadioGroup-bO-ahP9T.js +203 -0
  59. package/RadioGroup-bO-ahP9T.js.map +1 -0
  60. package/Select-BY5Y0qZ1.js +376 -0
  61. package/Select-BY5Y0qZ1.js.map +1 -0
  62. package/Select-CURrHSyl.cjs +375 -0
  63. package/Select-CURrHSyl.cjs.map +1 -0
  64. package/Spinner-B6sThC1p.js +74 -0
  65. package/Spinner-B6sThC1p.js.map +1 -0
  66. package/Spinner-D7qRmNS9.cjs +73 -0
  67. package/Spinner-D7qRmNS9.cjs.map +1 -0
  68. package/Stat-BUcFCGrz.cjs +83 -0
  69. package/Stat-BUcFCGrz.cjs.map +1 -0
  70. package/Stat-C06A_izS.js +84 -0
  71. package/Stat-C06A_izS.js.map +1 -0
  72. package/StatusMessage-B3nXpuRl.cjs +88 -0
  73. package/StatusMessage-B3nXpuRl.cjs.map +1 -0
  74. package/StatusMessage-D0WgSBx7.js +89 -0
  75. package/StatusMessage-D0WgSBx7.js.map +1 -0
  76. package/Step-BArsou1V.js +301 -0
  77. package/Step-BArsou1V.js.map +1 -0
  78. package/Step-Nd7SJbRZ.cjs +300 -0
  79. package/Step-Nd7SJbRZ.cjs.map +1 -0
  80. package/Switch-CQFOopYy.cjs +182 -0
  81. package/Switch-CQFOopYy.cjs.map +1 -0
  82. package/Switch-D72dpkH2.js +183 -0
  83. package/Switch-D72dpkH2.js.map +1 -0
  84. package/Tab-D1S7kxXI.cjs +137 -0
  85. package/Tab-D1S7kxXI.cjs.map +1 -0
  86. package/Tab-DycIMXmQ.js +138 -0
  87. package/Tab-DycIMXmQ.js.map +1 -0
  88. package/Table-C2LbW0B1.js +531 -0
  89. package/Table-C2LbW0B1.js.map +1 -0
  90. package/Table-C4OM6rrC.cjs +530 -0
  91. package/Table-C4OM6rrC.cjs.map +1 -0
  92. package/components/ActionMenu/ActionMenu.cjs +52 -52
  93. package/components/ActionMenu/ActionMenu.cjs.map +1 -1
  94. package/components/ActionMenu/ActionMenu.d.ts +20 -36
  95. package/components/ActionMenu/ActionMenu.js +55 -55
  96. package/components/ActionMenu/ActionMenu.js.map +1 -1
  97. package/components/ActionMenu/index.d.ts +2 -2
  98. package/components/Alert/Alert.cjs +6 -0
  99. package/components/Alert/Alert.cjs.map +1 -0
  100. package/components/Alert/Alert.d.ts +31 -0
  101. package/components/Alert/Alert.js +6 -0
  102. package/components/Alert/Alert.js.map +1 -0
  103. package/components/Alert/index.d.ts +2 -0
  104. package/components/Alert.d.ts +6 -0
  105. package/components/AppBar/AppBar.cjs +3 -220
  106. package/components/AppBar/AppBar.cjs.map +1 -1
  107. package/components/AppBar/AppBar.d.ts +6 -6
  108. package/components/AppBar/AppBar.js +6 -223
  109. package/components/AppBar/AppBar.js.map +1 -1
  110. package/components/AppBar/index.d.ts +0 -6
  111. package/components/Autocomplete/Autocomplete.cjs +4 -311
  112. package/components/Autocomplete/Autocomplete.cjs.map +1 -1
  113. package/components/Autocomplete/Autocomplete.d.ts +8 -6
  114. package/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
  115. package/components/Autocomplete/Autocomplete.js +4 -311
  116. package/components/Autocomplete/Autocomplete.js.map +1 -1
  117. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  118. package/components/Autocomplete/index.d.ts +1 -1
  119. package/components/Avatar/Avatar.cjs +2 -160
  120. package/components/Avatar/Avatar.cjs.map +1 -1
  121. package/components/Avatar/Avatar.d.ts +16 -1
  122. package/components/Avatar/Avatar.js +2 -160
  123. package/components/Avatar/Avatar.js.map +1 -1
  124. package/components/Avatar/index.d.ts +1 -0
  125. package/components/Breadcrumbs/Breadcrumbs.cjs +6 -0
  126. package/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -0
  127. package/components/Breadcrumbs/Breadcrumbs.d.ts +16 -0
  128. package/components/Breadcrumbs/Breadcrumbs.js +6 -0
  129. package/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  130. package/components/Breadcrumbs/index.d.ts +2 -0
  131. package/components/Breadcrumbs.d.ts +6 -0
  132. package/components/Button/Button.d.ts +5 -5
  133. package/components/Button/index.d.ts +1 -0
  134. package/components/ButtonGroup/ButtonGroup.cjs +6 -0
  135. package/components/ButtonGroup/ButtonGroup.cjs.map +1 -0
  136. package/components/ButtonGroup/ButtonGroup.d.ts +18 -0
  137. package/components/ButtonGroup/ButtonGroup.js +6 -0
  138. package/components/ButtonGroup/ButtonGroup.js.map +1 -0
  139. package/components/ButtonGroup/index.d.ts +2 -0
  140. package/components/ButtonGroup.d.ts +6 -0
  141. package/components/Card/Card.cjs +4 -184
  142. package/components/Card/Card.cjs.map +1 -1
  143. package/components/Card/Card.d.ts +21 -50
  144. package/components/Card/Card.js +4 -184
  145. package/components/Card/Card.js.map +1 -1
  146. package/components/Card/Card.sx.d.ts +3 -6
  147. package/components/Card/index.d.ts +1 -1
  148. package/components/Checkbox/Checkbox.cjs +6 -0
  149. package/components/Checkbox/Checkbox.cjs.map +1 -0
  150. package/components/Checkbox/Checkbox.d.ts +55 -0
  151. package/components/Checkbox/Checkbox.js +6 -0
  152. package/components/Checkbox/Checkbox.js.map +1 -0
  153. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  154. package/components/Checkbox/index.d.ts +2 -0
  155. package/components/Checkbox.d.ts +6 -0
  156. package/components/Chip/Chip.cjs +4 -72
  157. package/components/Chip/Chip.cjs.map +1 -1
  158. package/components/Chip/Chip.js +3 -71
  159. package/components/Chip/Chip.js.map +1 -1
  160. package/components/Chip/index.d.ts +2 -1
  161. package/components/Chip.d.ts +4 -0
  162. package/components/Column/Column.cjs +1 -1
  163. package/components/Column/Column.cjs.map +1 -1
  164. package/components/Column/Column.d.ts +1 -1
  165. package/components/Column/Column.js +1 -1
  166. package/components/Column/Column.js.map +1 -1
  167. package/components/Column/index.d.ts +1 -0
  168. package/components/DatePicker/DatePicker.cjs +3 -200
  169. package/components/DatePicker/DatePicker.cjs.map +1 -1
  170. package/components/DatePicker/DatePicker.d.ts +1 -13
  171. package/components/DatePicker/DatePicker.js +3 -200
  172. package/components/DatePicker/DatePicker.js.map +1 -1
  173. package/components/DatePicker/index.d.ts +1 -1
  174. package/components/DateTimePicker/DateTimePicker.cjs +3 -219
  175. package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  176. package/components/DateTimePicker/DateTimePicker.d.ts +10 -6
  177. package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
  178. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
  179. package/components/DateTimePicker/DateTimePicker.js +3 -219
  180. package/components/DateTimePicker/DateTimePicker.js.map +1 -1
  181. package/components/DateTimePicker/index.d.ts +1 -1
  182. package/components/Divider/Divider.cjs +6 -0
  183. package/components/Divider/Divider.cjs.map +1 -0
  184. package/components/Divider/Divider.d.ts +17 -0
  185. package/components/Divider/Divider.js +6 -0
  186. package/components/Divider/Divider.js.map +1 -0
  187. package/components/Divider/index.d.ts +2 -0
  188. package/components/Divider.d.ts +6 -0
  189. package/components/Drawer/Drawer.cjs +11 -7
  190. package/components/Drawer/Drawer.cjs.map +1 -1
  191. package/components/Drawer/Drawer.js +12 -8
  192. package/components/Drawer/Drawer.js.map +1 -1
  193. package/components/Drawer/DrawerItem.d.ts +6 -1
  194. package/components/Gallery/Gallery.cjs +154 -79
  195. package/components/Gallery/Gallery.cjs.map +1 -1
  196. package/components/Gallery/Gallery.d.ts +25 -9
  197. package/components/Gallery/Gallery.js +154 -79
  198. package/components/Gallery/Gallery.js.map +1 -1
  199. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  200. package/components/Gallery/GalleryMain.d.ts +3 -7
  201. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  202. package/components/Gallery/index.d.ts +2 -1
  203. package/components/Gallery.d.ts +4 -0
  204. package/components/Icon/Icon.cjs +6 -8
  205. package/components/Icon/Icon.cjs.map +1 -1
  206. package/components/Icon/Icon.d.ts +11 -17
  207. package/components/Icon/Icon.js +6 -8
  208. package/components/Icon/Icon.js.map +1 -1
  209. package/components/Icon/index.d.ts +2 -1
  210. package/components/Icon.d.ts +4 -0
  211. package/components/Input/Input.cjs +3 -172
  212. package/components/Input/Input.cjs.map +1 -1
  213. package/components/Input/Input.d.ts +9 -2
  214. package/components/Input/Input.helpers.d.ts +3 -3
  215. package/components/Input/Input.js +3 -172
  216. package/components/Input/Input.js.map +1 -1
  217. package/components/Input/index.d.ts +1 -1
  218. package/components/InputGroup/InputGroup.cjs +23 -22
  219. package/components/InputGroup/InputGroup.cjs.map +1 -1
  220. package/components/InputGroup/InputGroup.d.ts +4 -4
  221. package/components/InputGroup/InputGroup.js +22 -21
  222. package/components/InputGroup/InputGroup.js.map +1 -1
  223. package/components/InputGroup/index.d.ts +2 -1
  224. package/components/InputGroup.d.ts +4 -0
  225. package/components/Modal/Modal.cjs +7 -317
  226. package/components/Modal/Modal.cjs.map +1 -1
  227. package/components/Modal/Modal.d.ts +27 -5
  228. package/components/Modal/Modal.js +6 -316
  229. package/components/Modal/Modal.js.map +1 -1
  230. package/components/Modal/ModalBody.d.ts +6 -1
  231. package/components/Modal/ModalFooter.d.ts +4 -4
  232. package/components/Modal/ModalHeader.d.ts +6 -1
  233. package/components/Modal/index.d.ts +3 -1
  234. package/components/Modal.d.ts +4 -0
  235. package/components/RadioGroup/RadioGroup.cjs +3 -199
  236. package/components/RadioGroup/RadioGroup.cjs.map +1 -1
  237. package/components/RadioGroup/RadioGroup.d.ts +9 -3
  238. package/components/RadioGroup/RadioGroup.js +3 -199
  239. package/components/RadioGroup/RadioGroup.js.map +1 -1
  240. package/components/RadioGroup/index.d.ts +1 -1
  241. package/components/Select/Select.cjs +4 -445
  242. package/components/Select/Select.cjs.map +1 -1
  243. package/components/Select/Select.d.ts +37 -18
  244. package/components/Select/Select.helpers.d.ts +5 -19
  245. package/components/Select/Select.js +4 -445
  246. package/components/Select/Select.js.map +1 -1
  247. package/components/Select/index.d.ts +1 -1
  248. package/components/Spinner/Spinner.cjs +6 -0
  249. package/components/Spinner/Spinner.cjs.map +1 -0
  250. package/components/Spinner/Spinner.d.ts +26 -0
  251. package/components/Spinner/Spinner.js +6 -0
  252. package/components/Spinner/Spinner.js.map +1 -0
  253. package/components/Spinner/index.d.ts +2 -0
  254. package/components/Spinner.d.ts +6 -0
  255. package/components/Stat/Stat.cjs +4 -83
  256. package/components/Stat/Stat.cjs.map +1 -1
  257. package/components/Stat/Stat.js +3 -82
  258. package/components/Stat/Stat.js.map +1 -1
  259. package/components/Stat/index.d.ts +2 -1
  260. package/components/Stat.d.ts +4 -0
  261. package/components/StatusMessage/StatusMessage.cjs +4 -77
  262. package/components/StatusMessage/StatusMessage.cjs.map +1 -1
  263. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  264. package/components/StatusMessage/StatusMessage.js +3 -76
  265. package/components/StatusMessage/StatusMessage.js.map +1 -1
  266. package/components/StatusMessage/index.d.ts +2 -1
  267. package/components/StatusMessage.d.ts +4 -0
  268. package/components/Stepper/Stepper.cjs +8 -90
  269. package/components/Stepper/Stepper.cjs.map +1 -1
  270. package/components/Stepper/Stepper.d.ts +9 -20
  271. package/components/Stepper/Stepper.js +7 -89
  272. package/components/Stepper/Stepper.js.map +1 -1
  273. package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +29 -23
  274. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  275. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  276. package/components/Stepper/index.d.ts +6 -2
  277. package/components/Stepper.d.ts +4 -0
  278. package/components/Switch/Switch.cjs +3 -178
  279. package/components/Switch/Switch.cjs.map +1 -1
  280. package/components/Switch/Switch.d.ts +7 -2
  281. package/components/Switch/Switch.js +3 -178
  282. package/components/Switch/Switch.js.map +1 -1
  283. package/components/Table/Table.cjs +2 -528
  284. package/components/Table/Table.cjs.map +1 -1
  285. package/components/Table/Table.d.ts +1 -1
  286. package/components/Table/Table.js +2 -528
  287. package/components/Table/Table.js.map +1 -1
  288. package/components/Tabs/Tab.d.ts +13 -2
  289. package/components/Tabs/Tabs.cjs +5 -94
  290. package/components/Tabs/Tabs.cjs.map +1 -1
  291. package/components/Tabs/Tabs.d.ts +33 -16
  292. package/components/Tabs/Tabs.js +4 -93
  293. package/components/Tabs/Tabs.js.map +1 -1
  294. package/components/Tabs/index.d.ts +4 -2
  295. package/components/Tabs.d.ts +4 -0
  296. package/components/Timeline/Timeline.cjs +3 -2
  297. package/components/Timeline/Timeline.cjs.map +1 -1
  298. package/components/Timeline/Timeline.d.ts +4 -8
  299. package/components/Timeline/Timeline.js +3 -2
  300. package/components/Timeline/Timeline.js.map +1 -1
  301. package/components/Timeline/index.d.ts +4 -2
  302. package/components/Timeline.d.ts +4 -0
  303. package/components/_shared/mergeSx.d.ts +7 -0
  304. package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  305. package/formField.sx-8_QRnKxv.js.map +1 -0
  306. package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  307. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  308. package/index.cjs +78 -10
  309. package/index.cjs.map +1 -1
  310. package/index.d.ts +42 -0
  311. package/index.js +70 -5
  312. package/index.js.map +1 -1
  313. package/local/affiliations/affiliations.dev.soyfri.com-key.pem +28 -0
  314. package/local/affiliations/affiliations.dev.soyfri.com.pem +27 -0
  315. package/local/aficiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  316. package/local/aficiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  317. package/local/afiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  318. package/local/afiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  319. package/local/root/rootCA-key.pem +40 -0
  320. package/local/root/rootCA.pem +30 -0
  321. package/local/soporte/supportweb.dev.soyfri.com-key.pem +28 -0
  322. package/local/soporte/supportweb.dev.soyfri.com.pem +27 -0
  323. package/local/support/supportweb.dev.soyfri.com-key.pem +28 -0
  324. package/local/support/supportweb.dev.soyfri.com.pem +27 -0
  325. package/mergeSx-BXoNZjB_.js +10 -0
  326. package/mergeSx-BXoNZjB_.js.map +1 -0
  327. package/mergeSx-Dbccoo_H.cjs +9 -0
  328. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  329. package/mui.d.ts +2 -1
  330. package/package.json +85 -76
  331. package/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
  332. package/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
  333. package/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
  334. package/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
  335. package/theme/componentStyles.d.ts +1 -1
  336. package/tokens-BRrcP_p_.js +21 -0
  337. package/tokens-BRrcP_p_.js.map +1 -0
  338. package/tokens-jaWWNk39.cjs +20 -0
  339. package/tokens-jaWWNk39.cjs.map +1 -0
  340. package/utils/index.d.ts +2 -0
  341. package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  342. package/components/AppBar/AppBarBrand.d.ts +0 -31
  343. package/components/AppBar/AppBarUserMenu.d.ts +0 -65
  344. package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  345. package/components/DatePicker/DatePicker.types.d.ts +0 -1
  346. package/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  347. package/components/DateRangePicker/DateRangePicker.d.ts +0 -15
  348. package/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
  349. package/components/DateRangePicker/DateRangePicker.js.map +0 -1
  350. package/components/DateRangePicker/index.d.ts +0 -1
  351. package/components/DateRangePicker.d.ts +0 -2
  352. package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  353. package/components/Input/Input.types.d.ts +0 -1
  354. package/components/PageLoader/PageLoader.cjs +0 -61
  355. package/components/PageLoader/PageLoader.cjs.map +0 -1
  356. package/components/PageLoader/PageLoader.d.ts +0 -38
  357. package/components/PageLoader/PageLoader.js +0 -61
  358. package/components/PageLoader/PageLoader.js.map +0 -1
  359. package/components/PageLoader/index.d.ts +0 -2
  360. package/components/PageLoader.d.ts +0 -6
  361. package/components/RadioGroup/RadioGroup.types.d.ts +0 -1
  362. package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  363. package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  364. package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  365. package/components/ScrollTopButton/ScrollTopButton.js +0 -79
  366. package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  367. package/components/ScrollTopButton/index.d.ts +0 -4
  368. package/components/ScrollTopButton.d.ts +0 -6
  369. package/components/Select/Select.definitions.d.ts +0 -17
  370. package/components/Select/Select.types.d.ts +0 -1
  371. package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  372. package/formField.sx-CQ1mbk9M.cjs.map +0 -1
  373. package/formField.sx-DfVbMe0V.js.map +0 -1
  374. package/hooks/Wizard/Wizard.cjs +0 -7
  375. package/hooks/Wizard/Wizard.cjs.map +0 -1
  376. package/hooks/Wizard/Wizard.js +0 -7
  377. package/hooks/Wizard/Wizard.js.map +0 -1
  378. package/hooks/Wizard/index.d.ts +0 -3
  379. package/hooks/Wizard/useWizard.d.ts +0 -9
  380. package/hooks/Wizard.d.ts +0 -2
  381. package/useWizard-CWdIxZzX.cjs +0 -94
  382. package/useWizard-CWdIxZzX.cjs.map +0 -1
  383. package/useWizard-CWq--C3o.js +0 -95
  384. package/useWizard-CWq--C3o.js.map +0 -1
  385. /package/{styles.css → index.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.cjs","sources":["../../../src/components/Modal/ModalFooter.tsx","../../../src/components/Modal/ModalHeader.tsx","../../../src/components/Modal/ModalBody.tsx","../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { ButtonProps } from '@mui/material/Button';\n\n// Interfaz para acciones personalizadas (se mantiene aquí)\nexport interface ModalAction {\n text: string;\n onClick?: () => void;\n disabled?: boolean;\n variant?: ButtonProps['variant'];\n color?: ButtonProps['color'];\n /**\n * Props adicionales que se forwardean al `<Button>` interno. Útil para casos\n * avanzados como conectar el botón con un `<form id=\"...\">` externo usando\n * `buttonProps={{ type: 'submit', form: 'my-form-id' }}`.\n */\n buttonProps?: Partial<ButtonProps> & { form?: string };\n}\n\nexport interface ModalFooterProps { // Renombrado\n children?: React.ReactNode;\n showCloseButton?: boolean;\n closeButtonText?: string;\n closeButtonDisabled?: boolean;\n onClose: () => void;\n actions?: ModalAction[];\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({ // Renombrado\n children,\n showCloseButton = true,\n closeButtonText = \"Cerrar\",\n closeButtonDisabled = false,\n onClose,\n actions = [],\n}) => {\n return (\n <Box sx={{ padding: 2, borderTop: '1px solid #e0e0e0', display: 'flex', justifyContent: 'flex-end', gap: 1 }}>\n {children}\n <Stack direction=\"row\" spacing={1}>\n {showCloseButton && (\n <Button\n onClick={onClose}\n disabled={closeButtonDisabled}\n variant=\"outlined\"\n color=\"secondary\"\n >\n {closeButtonText}\n </Button>\n )}\n {actions.map((action, index) => {\n const { buttonProps } = action;\n return (\n <Button\n key={index}\n onClick={action.onClick}\n disabled={action.disabled}\n variant={action.variant || 'contained'}\n color={action.color || 'primary'}\n {...(buttonProps as any)}\n >\n {action.text}\n </Button>\n );\n })}\n </Stack>\n </Box>\n );\n};\n\nexport default ModalFooter;","import React from 'react';\nimport { Box, Typography } from '@mui/material';\n\ninterface ModalHeaderProps { // Renombrado\n children: React.ReactNode;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({ children }) => { // Renombrado\n return (\n <Box sx={{ padding: 2, borderBottom: '1px solid #e0e0e0', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n <Typography variant=\"h6\" component=\"h2\">\n {children}\n </Typography>\n </Box>\n );\n};\n\nexport default ModalHeader;","import React from 'react';\nimport { Box } from '@mui/material';\n\ninterface ModalBodyProps { // Renombrado\n children: React.ReactNode;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ children }) => { // Renombrado\n return (\n <Box sx={{ padding: 2, overflowY: 'auto', flexGrow: 1 }}>\n {children}\n </Box>\n );\n};\n\nexport default ModalBody;","import React, {\n useState,\n useImperativeHandle,\n forwardRef,\n type ReactNode,\n} from 'react';\nimport {\n Modal as MuiModal,\n Paper,\n useTheme,\n useMediaQuery,\n Box,\n Stack,\n Typography,\n} from '@mui/material';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport WarningAmberIcon from '@mui/icons-material/WarningAmber';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\n\nimport type { DialogProps } from '@mui/material/Dialog';\nimport { ModalAction, ModalFooter, ModalFooterProps } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\n\n// Define la interfaz para los métodos que el padre puede llamar a través de la ref\nexport interface ModalRef {\n open: () => void;\n close: () => void;\n}\n\nexport type ModalMode = 'default' | 'confirm';\nexport type ModalSeverity = 'info' | 'warning' | 'error' | 'success';\n\ninterface ModalProps {\n /**\n * Modo del modal.\n * - `default` (default): modal genérico con slots `Header`/`Body`/`Footer` y\n * `actions` custom.\n * - `confirm`: reemplaza al `ConfirmModal` legacy. Renderiza un layout\n * focalizado con icono por severidad, mensaje y botones \"Cancelar\" /\n * \"Confirmar\".\n */\n mode?: ModalMode;\n\n // ── Props comunes ────────────────────────────────────────────────────\n /** Controlado externamente. Omitir si se usa vía ref. */\n open?: boolean;\n /** Callback al cerrar. También se dispara al confirmar/cancelar. */\n onClose?: () => void;\n title?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonText?: string;\n closeButtonDisabled?: boolean;\n actions?: ModalAction[];\n maxWidth?: DialogProps['maxWidth'];\n hiddenFooter?: boolean;\n\n // ── Props del modo confirm ───────────────────────────────────────────\n /**\n * Callback de confirmación. Soporta promesa — si devuelve `Promise`, el\n * botón muestra estado `disabled` mientras resuelve.\n */\n onConfirm?: () => void | Promise<void>;\n /** Texto del botón primario en modo `confirm`. Default: \"Confirmar\". */\n confirmText?: string;\n /** Deshabilita el botón de confirmar. */\n confirmDisabled?: boolean;\n /**\n * Severidad visual en modo `confirm`. Controla el icono y el color del\n * botón de confirmación.\n * - `info` (default): primary\n * - `warning`: warning (amarillo)\n * - `error`: error (rojo) — típico para \"Eliminar\"\n * - `success`: success (verde) — típico para \"Aprobar\"\n */\n severity?: ModalSeverity;\n /**\n * Mensaje del confirm. Puede ser string o cualquier ReactNode. Si se omite,\n * se usa `children`.\n */\n confirmMessage?: ReactNode;\n}\n\nconst modalStyle = {\n position: 'absolute' as const,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxHeight: '90vh',\n display: 'flex',\n flexDirection: 'column' as const,\n outline: 'none',\n};\n\nconst severityConfig: Record<\n ModalSeverity,\n { color: ModalAction['color']; icon: ReactNode; bg: string }\n> = {\n info: {\n color: 'primary',\n icon: <InfoOutlinedIcon sx={{ fontSize: 48 }} />,\n bg: 'primary.light',\n },\n warning: {\n color: 'warning',\n icon: <WarningAmberIcon sx={{ fontSize: 48 }} />,\n bg: 'warning.light',\n },\n error: {\n color: 'error',\n icon: <ErrorOutlineIcon sx={{ fontSize: 48 }} />,\n bg: 'error.light',\n },\n success: {\n color: 'success',\n icon: <CheckCircleOutlineIcon sx={{ fontSize: 48 }} />,\n bg: 'success.light',\n },\n};\n\nexport const Modal = forwardRef<ModalRef, ModalProps>(\n (\n {\n mode = 'default',\n open: controlledOpen,\n onClose: controlledOnClose,\n title,\n children,\n showCloseButton = true,\n closeButtonText = 'Cerrar',\n closeButtonDisabled = false,\n actions = [],\n maxWidth = 'sm',\n hiddenFooter = false,\n\n // Props del modo confirm\n onConfirm,\n confirmText = 'Confirmar',\n confirmDisabled = false,\n severity = 'info',\n confirmMessage,\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const [confirmLoading, setConfirmLoading] = useState(false);\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n useImperativeHandle(ref, () => ({\n open: () => setInternalOpen(true),\n close: () => {\n setInternalOpen(false);\n controlledOnClose?.();\n },\n }));\n\n const handleCloseInternal = () => {\n setInternalOpen(false);\n controlledOnClose?.();\n };\n\n const handleConfirm = async () => {\n if (!onConfirm) {\n handleCloseInternal();\n return;\n }\n try {\n const result = onConfirm();\n if (result instanceof Promise) {\n setConfirmLoading(true);\n await result;\n }\n } finally {\n setConfirmLoading(false);\n handleCloseInternal();\n }\n };\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const getWidth = () => {\n if (isMobile) return '95%';\n switch (maxWidth) {\n case 'xs':\n return 300;\n case 'sm':\n return 500;\n case 'md':\n return 700;\n case 'lg':\n return 900;\n case 'xl':\n return 1100;\n case false:\n return 'auto';\n default:\n return 500;\n }\n };\n\n // ── Render modo CONFIRM ─────────────────────────────────────────────\n if (mode === 'confirm') {\n const config = severityConfig[severity];\n const message = confirmMessage ?? children;\n\n return (\n <MuiModal\n open={isOpen}\n onClose={handleCloseInternal}\n aria-labelledby=\"modal-title\"\n closeAfterTransition\n >\n <Paper sx={{ ...modalStyle, width: getWidth() }}>\n <Stack spacing={2.5} sx={{ p: 3, alignItems: 'center', textAlign: 'center' }}>\n <Box\n sx={{\n width: 72,\n height: 72,\n borderRadius: '50%',\n backgroundColor: (t) =>\n t.palette[severity === 'info' ? 'primary' : severity].light,\n color: (t) =>\n t.palette[severity === 'info' ? 'primary' : severity].dark,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: 0.9,\n }}\n >\n {config.icon}\n </Box>\n {title && (\n <Typography variant=\"h6\" component=\"h2\" sx={{ fontWeight: 700 }}>\n {title}\n </Typography>\n )}\n {message && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n )}\n </Stack>\n <ModalFooter\n showCloseButton={showCloseButton}\n closeButtonText={closeButtonText}\n closeButtonDisabled={closeButtonDisabled || confirmLoading}\n onClose={handleCloseInternal}\n actions={[\n {\n text: confirmText,\n onClick: handleConfirm,\n disabled: confirmDisabled || confirmLoading,\n variant: 'contained',\n color: config.color,\n },\n ]}\n />\n </Paper>\n </MuiModal>\n );\n }\n\n // ── Render modo DEFAULT (legacy) ────────────────────────────────────\n const renderChildren = () => {\n let header: ReactNode | null = null;\n let body: ReactNode | null = null;\n let footer: ReactNode | null = null;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === ModalHeader) {\n header = child;\n } else if (child.type === ModalBody) {\n body = child;\n } else if (child.type === ModalFooter) {\n const footerChild = child as React.ReactElement<ModalFooterProps>;\n const {\n showCloseButton: childShowCloseButton,\n closeButtonText: childCloseButtonText,\n closeButtonDisabled: childCloseButtonDisabled,\n onClose: childOnClose,\n actions: childActions,\n ...restOfFooterProps\n } = footerChild.props;\n\n footer = React.cloneElement(footerChild, {\n showCloseButton,\n closeButtonText,\n closeButtonDisabled,\n onClose: handleCloseInternal,\n actions,\n ...restOfFooterProps,\n });\n }\n }\n });\n\n if (!footer && !hiddenFooter) {\n footer = (\n <ModalFooter\n showCloseButton={showCloseButton}\n closeButtonText={closeButtonText}\n closeButtonDisabled={closeButtonDisabled}\n onClose={handleCloseInternal}\n actions={actions}\n />\n );\n }\n\n return (\n <>\n {header || (title && <ModalHeader>{title}</ModalHeader>)}\n {body}\n {footer}\n </>\n );\n };\n\n return (\n <MuiModal\n open={isOpen}\n onClose={handleCloseInternal}\n aria-labelledby=\"modal-title\"\n aria-describedby=\"modal-description\"\n closeAfterTransition\n >\n <Paper sx={{ ...modalStyle, width: getWidth() }}>\n {renderChildren()}\n </Paper>\n </MuiModal>\n );\n },\n);\n\n// Define los sub-componentes como propiedades estáticas con tipos explícitos\ntype ModalComponent = React.ForwardRefExoticComponent<\n ModalProps & React.RefAttributes<ModalRef>\n> & {\n Header: typeof ModalHeader;\n Body: typeof ModalBody;\n Footer: typeof ModalFooter;\n};\n\nconst ModalWithStatics = Modal as ModalComponent;\n\nModalWithStatics.Header = ModalHeader;\nModalWithStatics.Body = ModalBody;\nModalWithStatics.Footer = ModalFooter;\n\nexport default ModalWithStatics;\n"],"names":["jsxs","Box","Stack","jsx","Button","Typography","forwardRef","useState","useImperativeHandle","useTheme","useMediaQuery","MuiModal","Paper","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,6 +1,7 @@
1
- import { default as React, ReactNode } from 'react';
1
+ import { forwardRef, ReactNode } from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
2
3
  import { DialogProps } from '@mui/material/Dialog';
3
- import { ModalAction, ModalFooter } from './ModalFooter';
4
+ import { ModalFooter, ModalAction } from './ModalFooter';
4
5
  import { ModalHeader } from './ModalHeader';
5
6
  import { ModalBody } from './ModalBody';
6
7
  export interface ModalRef {
@@ -9,7 +10,7 @@ export interface ModalRef {
9
10
  }
10
11
  export type ModalMode = 'default' | 'confirm';
11
12
  export type ModalSeverity = 'info' | 'warning' | 'error' | 'success';
12
- interface ModalProps {
13
+ export interface ModalProps {
13
14
  /**
14
15
  * Modo del modal.
15
16
  * - `default` (default): modal genérico con slots `Header`/`Body`/`Footer` y
@@ -30,10 +31,31 @@ interface ModalProps {
30
31
  closeButtonDisabled?: boolean;
31
32
  actions?: ModalAction[];
32
33
  maxWidth?: DialogProps['maxWidth'];
34
+ /**
35
+ * Si `true`, el modal NO se cierra al hacer click en el backdrop ni con Escape
36
+ * (equivale a `backdrop="static"`). Cerrar solo vía botón/acción.
37
+ */
38
+ staticBackdrop?: boolean;
39
+ /** Test id aplicado al Paper interno (contenedor visual). */
40
+ 'data-testid'?: string;
41
+ /** Oculta el header (incluso si hay `title` o se pasa un `<Modal.Header>`). */
42
+ hiddenHeader?: boolean;
43
+ /** Oculta el body (incluso si se pasa un `<Modal.Body>`). */
44
+ hiddenBody?: boolean;
45
+ /** Oculta el footer (incluso si se pasa un `<Modal.Footer>` o `actions`). */
33
46
  hiddenFooter?: boolean;
47
+ /** sx del Modal root (MuiModal). */
48
+ sx?: SxProps<Theme>;
49
+ /** sx del Paper interno (contenedor visual). Se mergea sobre el default. */
50
+ paperSx?: SxProps<Theme>;
51
+ /** className del Paper interno. */
52
+ className?: string;
34
53
  /**
35
54
  * Callback de confirmación. Soporta promesa — si devuelve `Promise`, el
36
55
  * botón muestra estado `disabled` mientras resuelve.
56
+ *
57
+ * Si la promesa **rechaza**, el modal queda abierto para que el consumer
58
+ * pueda mostrar el error en su UI. El modal se cierra solo en éxito.
37
59
  */
38
60
  onConfirm?: () => void | Promise<void>;
39
61
  /** Texto del botón primario en modo `confirm`. Default: "Confirmar". */
@@ -55,8 +77,8 @@ interface ModalProps {
55
77
  */
56
78
  confirmMessage?: ReactNode;
57
79
  }
58
- export declare const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<ModalRef>>;
59
- type ModalComponent = React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<ModalRef>> & {
80
+ export declare const Modal: import('react').ForwardRefExoticComponent<ModalProps & import('react').RefAttributes<ModalRef>>;
81
+ type ModalComponent = ReturnType<typeof forwardRef<ModalRef, ModalProps>> & {
60
82
  Header: typeof ModalHeader;
61
83
  Body: typeof ModalBody;
62
84
  Footer: typeof ModalFooter;
@@ -1,319 +1,9 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __objRest = (source, exclude) => {
21
- var target = {};
22
- for (var prop in source)
23
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
- target[prop] = source[prop];
25
- if (source != null && __getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(source)) {
27
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
- target[prop] = source[prop];
29
- }
30
- return target;
31
- };
32
- import { jsxs, jsx, Fragment } from "react/jsx-runtime";
33
- import React__default, { forwardRef, useState, useImperativeHandle } from "react";
34
- import { Box, Stack, Button, Typography, useTheme, useMediaQuery, Modal as Modal$1, Paper } from "@mui/material";
35
- import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
36
- import WarningAmberIcon from "@mui/icons-material/WarningAmber";
37
- import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
38
- import CheckCircleOutlineIcon from "@mui/icons-material/CheckCircleOutline";
39
- const ModalFooter = ({
40
- // Renombrado
41
- children,
42
- showCloseButton = true,
43
- closeButtonText = "Cerrar",
44
- closeButtonDisabled = false,
45
- onClose,
46
- actions = []
47
- }) => {
48
- return /* @__PURE__ */ jsxs(Box, { sx: { padding: 2, borderTop: "1px solid #e0e0e0", display: "flex", justifyContent: "flex-end", gap: 1 }, children: [
49
- children,
50
- /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, children: [
51
- showCloseButton && /* @__PURE__ */ jsx(
52
- Button,
53
- {
54
- onClick: onClose,
55
- disabled: closeButtonDisabled,
56
- variant: "outlined",
57
- color: "secondary",
58
- children: closeButtonText
59
- }
60
- ),
61
- actions.map((action, index) => {
62
- const { buttonProps } = action;
63
- return /* @__PURE__ */ jsx(
64
- Button,
65
- __spreadProps(__spreadValues({
66
- onClick: action.onClick,
67
- disabled: action.disabled,
68
- variant: action.variant || "contained",
69
- color: action.color || "primary"
70
- }, buttonProps), {
71
- children: action.text
72
- }),
73
- index
74
- );
75
- })
76
- ] })
77
- ] });
78
- };
79
- const ModalHeader = ({ children }) => {
80
- return /* @__PURE__ */ jsx(Box, { sx: { padding: 2, borderBottom: "1px solid #e0e0e0", display: "flex", alignItems: "center", justifyContent: "space-between" }, children: /* @__PURE__ */ jsx(Typography, { variant: "h6", component: "h2", children }) });
81
- };
82
- const ModalBody = ({ children }) => {
83
- return /* @__PURE__ */ jsx(Box, { sx: { padding: 2, overflowY: "auto", flexGrow: 1 }, children });
84
- };
85
- const modalStyle = {
86
- position: "absolute",
87
- top: "50%",
88
- left: "50%",
89
- transform: "translate(-50%, -50%)",
90
- width: "90%",
91
- maxHeight: "90vh",
92
- display: "flex",
93
- flexDirection: "column",
94
- outline: "none"
95
- };
96
- const severityConfig = {
97
- info: {
98
- color: "primary",
99
- icon: /* @__PURE__ */ jsx(InfoOutlinedIcon, { sx: { fontSize: 48 } }),
100
- bg: "primary.light"
101
- },
102
- warning: {
103
- color: "warning",
104
- icon: /* @__PURE__ */ jsx(WarningAmberIcon, { sx: { fontSize: 48 } }),
105
- bg: "warning.light"
106
- },
107
- error: {
108
- color: "error",
109
- icon: /* @__PURE__ */ jsx(ErrorOutlineIcon, { sx: { fontSize: 48 } }),
110
- bg: "error.light"
111
- },
112
- success: {
113
- color: "success",
114
- icon: /* @__PURE__ */ jsx(CheckCircleOutlineIcon, { sx: { fontSize: 48 } }),
115
- bg: "success.light"
116
- }
117
- };
118
- const Modal = forwardRef(
119
- ({
120
- mode = "default",
121
- open: controlledOpen,
122
- onClose: controlledOnClose,
123
- title,
124
- children,
125
- showCloseButton = true,
126
- closeButtonText = "Cerrar",
127
- closeButtonDisabled = false,
128
- actions = [],
129
- maxWidth = "sm",
130
- hiddenFooter = false,
131
- // Props del modo confirm
132
- onConfirm,
133
- confirmText = "Confirmar",
134
- confirmDisabled = false,
135
- severity = "info",
136
- confirmMessage
137
- }, ref) => {
138
- const [internalOpen, setInternalOpen] = useState(false);
139
- const [confirmLoading, setConfirmLoading] = useState(false);
140
- const isOpen = controlledOpen !== void 0 ? controlledOpen : internalOpen;
141
- useImperativeHandle(ref, () => ({
142
- open: () => setInternalOpen(true),
143
- close: () => {
144
- setInternalOpen(false);
145
- controlledOnClose == null ? void 0 : controlledOnClose();
146
- }
147
- }));
148
- const handleCloseInternal = () => {
149
- setInternalOpen(false);
150
- controlledOnClose == null ? void 0 : controlledOnClose();
151
- };
152
- const handleConfirm = async () => {
153
- if (!onConfirm) {
154
- handleCloseInternal();
155
- return;
156
- }
157
- try {
158
- const result = onConfirm();
159
- if (result instanceof Promise) {
160
- setConfirmLoading(true);
161
- await result;
162
- }
163
- } finally {
164
- setConfirmLoading(false);
165
- handleCloseInternal();
166
- }
167
- };
168
- const theme = useTheme();
169
- const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
170
- const getWidth = () => {
171
- if (isMobile) return "95%";
172
- switch (maxWidth) {
173
- case "xs":
174
- return 300;
175
- case "sm":
176
- return 500;
177
- case "md":
178
- return 700;
179
- case "lg":
180
- return 900;
181
- case "xl":
182
- return 1100;
183
- case false:
184
- return "auto";
185
- default:
186
- return 500;
187
- }
188
- };
189
- if (mode === "confirm") {
190
- const config = severityConfig[severity];
191
- const message = confirmMessage != null ? confirmMessage : children;
192
- return /* @__PURE__ */ jsx(
193
- Modal$1,
194
- {
195
- open: isOpen,
196
- onClose: handleCloseInternal,
197
- "aria-labelledby": "modal-title",
198
- closeAfterTransition: true,
199
- children: /* @__PURE__ */ jsxs(Paper, { sx: __spreadProps(__spreadValues({}, modalStyle), { width: getWidth() }), children: [
200
- /* @__PURE__ */ jsxs(Stack, { spacing: 2.5, sx: { p: 3, alignItems: "center", textAlign: "center" }, children: [
201
- /* @__PURE__ */ jsx(
202
- Box,
203
- {
204
- sx: {
205
- width: 72,
206
- height: 72,
207
- borderRadius: "50%",
208
- backgroundColor: (t) => t.palette[severity === "info" ? "primary" : severity].light,
209
- color: (t) => t.palette[severity === "info" ? "primary" : severity].dark,
210
- display: "flex",
211
- alignItems: "center",
212
- justifyContent: "center",
213
- opacity: 0.9
214
- },
215
- children: config.icon
216
- }
217
- ),
218
- title && /* @__PURE__ */ jsx(Typography, { variant: "h6", component: "h2", sx: { fontWeight: 700 }, children: title }),
219
- message && /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: message })
220
- ] }),
221
- /* @__PURE__ */ jsx(
222
- ModalFooter,
223
- {
224
- showCloseButton,
225
- closeButtonText,
226
- closeButtonDisabled: closeButtonDisabled || confirmLoading,
227
- onClose: handleCloseInternal,
228
- actions: [
229
- {
230
- text: confirmText,
231
- onClick: handleConfirm,
232
- disabled: confirmDisabled || confirmLoading,
233
- variant: "contained",
234
- color: config.color
235
- }
236
- ]
237
- }
238
- )
239
- ] })
240
- }
241
- );
242
- }
243
- const renderChildren = () => {
244
- let header = null;
245
- let body = null;
246
- let footer = null;
247
- React__default.Children.forEach(children, (child) => {
248
- if (React__default.isValidElement(child)) {
249
- if (child.type === ModalHeader) {
250
- header = child;
251
- } else if (child.type === ModalBody) {
252
- body = child;
253
- } else if (child.type === ModalFooter) {
254
- const footerChild = child;
255
- const _a = footerChild.props, {
256
- showCloseButton: childShowCloseButton,
257
- closeButtonText: childCloseButtonText,
258
- closeButtonDisabled: childCloseButtonDisabled,
259
- onClose: childOnClose,
260
- actions: childActions
261
- } = _a, restOfFooterProps = __objRest(_a, [
262
- "showCloseButton",
263
- "closeButtonText",
264
- "closeButtonDisabled",
265
- "onClose",
266
- "actions"
267
- ]);
268
- footer = React__default.cloneElement(footerChild, __spreadValues({
269
- showCloseButton,
270
- closeButtonText,
271
- closeButtonDisabled,
272
- onClose: handleCloseInternal,
273
- actions
274
- }, restOfFooterProps));
275
- }
276
- }
277
- });
278
- if (!footer && !hiddenFooter) {
279
- footer = /* @__PURE__ */ jsx(
280
- ModalFooter,
281
- {
282
- showCloseButton,
283
- closeButtonText,
284
- closeButtonDisabled,
285
- onClose: handleCloseInternal,
286
- actions
287
- }
288
- );
289
- }
290
- return /* @__PURE__ */ jsxs(Fragment, { children: [
291
- header || title && /* @__PURE__ */ jsx(ModalHeader, { children: title }),
292
- body,
293
- footer
294
- ] });
295
- };
296
- return /* @__PURE__ */ jsx(
297
- Modal$1,
298
- {
299
- open: isOpen,
300
- onClose: handleCloseInternal,
301
- "aria-labelledby": "modal-title",
302
- "aria-describedby": "modal-description",
303
- closeAfterTransition: true,
304
- children: /* @__PURE__ */ jsx(Paper, { sx: __spreadProps(__spreadValues({}, modalStyle), { width: getWidth() }), children: renderChildren() })
305
- }
306
- );
307
- }
308
- );
309
- const ModalWithStatics = Modal;
310
- ModalWithStatics.Header = ModalHeader;
311
- ModalWithStatics.Body = ModalBody;
312
- ModalWithStatics.Footer = ModalFooter;
1
+ import { M, b, c, a, M as M2 } from "../../Modal-C_QY7ZzY.js";
313
2
  export {
314
- ModalWithStatics as Modal,
315
- ModalBody,
316
- ModalFooter,
317
- ModalHeader
3
+ M as Modal,
4
+ b as ModalBody,
5
+ c as ModalFooter,
6
+ a as ModalHeader,
7
+ M2 as default
318
8
  };
319
9
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/ModalFooter.tsx","../../../src/components/Modal/ModalHeader.tsx","../../../src/components/Modal/ModalBody.tsx","../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { ButtonProps } from '@mui/material/Button';\n\n// Interfaz para acciones personalizadas (se mantiene aquí)\nexport interface ModalAction {\n text: string;\n onClick?: () => void;\n disabled?: boolean;\n variant?: ButtonProps['variant'];\n color?: ButtonProps['color'];\n /**\n * Props adicionales que se forwardean al `<Button>` interno. Útil para casos\n * avanzados como conectar el botón con un `<form id=\"...\">` externo usando\n * `buttonProps={{ type: 'submit', form: 'my-form-id' }}`.\n */\n buttonProps?: Partial<ButtonProps> & { form?: string };\n}\n\nexport interface ModalFooterProps { // Renombrado\n children?: React.ReactNode;\n showCloseButton?: boolean;\n closeButtonText?: string;\n closeButtonDisabled?: boolean;\n onClose: () => void;\n actions?: ModalAction[];\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({ // Renombrado\n children,\n showCloseButton = true,\n closeButtonText = \"Cerrar\",\n closeButtonDisabled = false,\n onClose,\n actions = [],\n}) => {\n return (\n <Box sx={{ padding: 2, borderTop: '1px solid #e0e0e0', display: 'flex', justifyContent: 'flex-end', gap: 1 }}>\n {children}\n <Stack direction=\"row\" spacing={1}>\n {showCloseButton && (\n <Button\n onClick={onClose}\n disabled={closeButtonDisabled}\n variant=\"outlined\"\n color=\"secondary\"\n >\n {closeButtonText}\n </Button>\n )}\n {actions.map((action, index) => {\n const { buttonProps } = action;\n return (\n <Button\n key={index}\n onClick={action.onClick}\n disabled={action.disabled}\n variant={action.variant || 'contained'}\n color={action.color || 'primary'}\n {...(buttonProps as any)}\n >\n {action.text}\n </Button>\n );\n })}\n </Stack>\n </Box>\n );\n};\n\nexport default ModalFooter;","import React from 'react';\nimport { Box, Typography } from '@mui/material';\n\ninterface ModalHeaderProps { // Renombrado\n children: React.ReactNode;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({ children }) => { // Renombrado\n return (\n <Box sx={{ padding: 2, borderBottom: '1px solid #e0e0e0', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n <Typography variant=\"h6\" component=\"h2\">\n {children}\n </Typography>\n </Box>\n );\n};\n\nexport default ModalHeader;","import React from 'react';\nimport { Box } from '@mui/material';\n\ninterface ModalBodyProps { // Renombrado\n children: React.ReactNode;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ children }) => { // Renombrado\n return (\n <Box sx={{ padding: 2, overflowY: 'auto', flexGrow: 1 }}>\n {children}\n </Box>\n );\n};\n\nexport default ModalBody;","import React, {\n useState,\n useImperativeHandle,\n forwardRef,\n type ReactNode,\n} from 'react';\nimport {\n Modal as MuiModal,\n Paper,\n useTheme,\n useMediaQuery,\n Box,\n Stack,\n Typography,\n} from '@mui/material';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport WarningAmberIcon from '@mui/icons-material/WarningAmber';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\n\nimport type { DialogProps } from '@mui/material/Dialog';\nimport { ModalAction, ModalFooter, ModalFooterProps } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\n\n// Define la interfaz para los métodos que el padre puede llamar a través de la ref\nexport interface ModalRef {\n open: () => void;\n close: () => void;\n}\n\nexport type ModalMode = 'default' | 'confirm';\nexport type ModalSeverity = 'info' | 'warning' | 'error' | 'success';\n\ninterface ModalProps {\n /**\n * Modo del modal.\n * - `default` (default): modal genérico con slots `Header`/`Body`/`Footer` y\n * `actions` custom.\n * - `confirm`: reemplaza al `ConfirmModal` legacy. Renderiza un layout\n * focalizado con icono por severidad, mensaje y botones \"Cancelar\" /\n * \"Confirmar\".\n */\n mode?: ModalMode;\n\n // ── Props comunes ────────────────────────────────────────────────────\n /** Controlado externamente. Omitir si se usa vía ref. */\n open?: boolean;\n /** Callback al cerrar. También se dispara al confirmar/cancelar. */\n onClose?: () => void;\n title?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonText?: string;\n closeButtonDisabled?: boolean;\n actions?: ModalAction[];\n maxWidth?: DialogProps['maxWidth'];\n hiddenFooter?: boolean;\n\n // ── Props del modo confirm ───────────────────────────────────────────\n /**\n * Callback de confirmación. Soporta promesa — si devuelve `Promise`, el\n * botón muestra estado `disabled` mientras resuelve.\n */\n onConfirm?: () => void | Promise<void>;\n /** Texto del botón primario en modo `confirm`. Default: \"Confirmar\". */\n confirmText?: string;\n /** Deshabilita el botón de confirmar. */\n confirmDisabled?: boolean;\n /**\n * Severidad visual en modo `confirm`. Controla el icono y el color del\n * botón de confirmación.\n * - `info` (default): primary\n * - `warning`: warning (amarillo)\n * - `error`: error (rojo) — típico para \"Eliminar\"\n * - `success`: success (verde) — típico para \"Aprobar\"\n */\n severity?: ModalSeverity;\n /**\n * Mensaje del confirm. Puede ser string o cualquier ReactNode. Si se omite,\n * se usa `children`.\n */\n confirmMessage?: ReactNode;\n}\n\nconst modalStyle = {\n position: 'absolute' as const,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxHeight: '90vh',\n display: 'flex',\n flexDirection: 'column' as const,\n outline: 'none',\n};\n\nconst severityConfig: Record<\n ModalSeverity,\n { color: ModalAction['color']; icon: ReactNode; bg: string }\n> = {\n info: {\n color: 'primary',\n icon: <InfoOutlinedIcon sx={{ fontSize: 48 }} />,\n bg: 'primary.light',\n },\n warning: {\n color: 'warning',\n icon: <WarningAmberIcon sx={{ fontSize: 48 }} />,\n bg: 'warning.light',\n },\n error: {\n color: 'error',\n icon: <ErrorOutlineIcon sx={{ fontSize: 48 }} />,\n bg: 'error.light',\n },\n success: {\n color: 'success',\n icon: <CheckCircleOutlineIcon sx={{ fontSize: 48 }} />,\n bg: 'success.light',\n },\n};\n\nexport const Modal = forwardRef<ModalRef, ModalProps>(\n (\n {\n mode = 'default',\n open: controlledOpen,\n onClose: controlledOnClose,\n title,\n children,\n showCloseButton = true,\n closeButtonText = 'Cerrar',\n closeButtonDisabled = false,\n actions = [],\n maxWidth = 'sm',\n hiddenFooter = false,\n\n // Props del modo confirm\n onConfirm,\n confirmText = 'Confirmar',\n confirmDisabled = false,\n severity = 'info',\n confirmMessage,\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const [confirmLoading, setConfirmLoading] = useState(false);\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n useImperativeHandle(ref, () => ({\n open: () => setInternalOpen(true),\n close: () => {\n setInternalOpen(false);\n controlledOnClose?.();\n },\n }));\n\n const handleCloseInternal = () => {\n setInternalOpen(false);\n controlledOnClose?.();\n };\n\n const handleConfirm = async () => {\n if (!onConfirm) {\n handleCloseInternal();\n return;\n }\n try {\n const result = onConfirm();\n if (result instanceof Promise) {\n setConfirmLoading(true);\n await result;\n }\n } finally {\n setConfirmLoading(false);\n handleCloseInternal();\n }\n };\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const getWidth = () => {\n if (isMobile) return '95%';\n switch (maxWidth) {\n case 'xs':\n return 300;\n case 'sm':\n return 500;\n case 'md':\n return 700;\n case 'lg':\n return 900;\n case 'xl':\n return 1100;\n case false:\n return 'auto';\n default:\n return 500;\n }\n };\n\n // ── Render modo CONFIRM ─────────────────────────────────────────────\n if (mode === 'confirm') {\n const config = severityConfig[severity];\n const message = confirmMessage ?? children;\n\n return (\n <MuiModal\n open={isOpen}\n onClose={handleCloseInternal}\n aria-labelledby=\"modal-title\"\n closeAfterTransition\n >\n <Paper sx={{ ...modalStyle, width: getWidth() }}>\n <Stack spacing={2.5} sx={{ p: 3, alignItems: 'center', textAlign: 'center' }}>\n <Box\n sx={{\n width: 72,\n height: 72,\n borderRadius: '50%',\n backgroundColor: (t) =>\n t.palette[severity === 'info' ? 'primary' : severity].light,\n color: (t) =>\n t.palette[severity === 'info' ? 'primary' : severity].dark,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: 0.9,\n }}\n >\n {config.icon}\n </Box>\n {title && (\n <Typography variant=\"h6\" component=\"h2\" sx={{ fontWeight: 700 }}>\n {title}\n </Typography>\n )}\n {message && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n )}\n </Stack>\n <ModalFooter\n showCloseButton={showCloseButton}\n closeButtonText={closeButtonText}\n closeButtonDisabled={closeButtonDisabled || confirmLoading}\n onClose={handleCloseInternal}\n actions={[\n {\n text: confirmText,\n onClick: handleConfirm,\n disabled: confirmDisabled || confirmLoading,\n variant: 'contained',\n color: config.color,\n },\n ]}\n />\n </Paper>\n </MuiModal>\n );\n }\n\n // ── Render modo DEFAULT (legacy) ────────────────────────────────────\n const renderChildren = () => {\n let header: ReactNode | null = null;\n let body: ReactNode | null = null;\n let footer: ReactNode | null = null;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === ModalHeader) {\n header = child;\n } else if (child.type === ModalBody) {\n body = child;\n } else if (child.type === ModalFooter) {\n const footerChild = child as React.ReactElement<ModalFooterProps>;\n const {\n showCloseButton: childShowCloseButton,\n closeButtonText: childCloseButtonText,\n closeButtonDisabled: childCloseButtonDisabled,\n onClose: childOnClose,\n actions: childActions,\n ...restOfFooterProps\n } = footerChild.props;\n\n footer = React.cloneElement(footerChild, {\n showCloseButton,\n closeButtonText,\n closeButtonDisabled,\n onClose: handleCloseInternal,\n actions,\n ...restOfFooterProps,\n });\n }\n }\n });\n\n if (!footer && !hiddenFooter) {\n footer = (\n <ModalFooter\n showCloseButton={showCloseButton}\n closeButtonText={closeButtonText}\n closeButtonDisabled={closeButtonDisabled}\n onClose={handleCloseInternal}\n actions={actions}\n />\n );\n }\n\n return (\n <>\n {header || (title && <ModalHeader>{title}</ModalHeader>)}\n {body}\n {footer}\n </>\n );\n };\n\n return (\n <MuiModal\n open={isOpen}\n onClose={handleCloseInternal}\n aria-labelledby=\"modal-title\"\n aria-describedby=\"modal-description\"\n closeAfterTransition\n >\n <Paper sx={{ ...modalStyle, width: getWidth() }}>\n {renderChildren()}\n </Paper>\n </MuiModal>\n );\n },\n);\n\n// Define los sub-componentes como propiedades estáticas con tipos explícitos\ntype ModalComponent = React.ForwardRefExoticComponent<\n ModalProps & React.RefAttributes<ModalRef>\n> & {\n Header: typeof ModalHeader;\n Body: typeof ModalBody;\n Footer: typeof ModalFooter;\n};\n\nconst ModalWithStatics = Modal as ModalComponent;\n\nModalWithStatics.Header = ModalHeader;\nModalWithStatics.Body = ModalBody;\nModalWithStatics.Footer = ModalFooter;\n\nexport default ModalWithStatics;\n"],"names":["MuiModal","React"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,6 +1,11 @@
1
1
  import { default as React } from 'react';
2
- interface ModalBodyProps {
2
+ export interface ModalBodyProps {
3
3
  children: React.ReactNode;
4
+ /**
5
+ * ID del elemento — usado para `aria-describedby` del Modal. Se setea
6
+ * automáticamente cuando el body se renderiza dentro de `<Modal>`.
7
+ */
8
+ id?: string;
4
9
  }
5
10
  export declare const ModalBody: React.FC<ModalBodyProps>;
6
11
  export default ModalBody;
@@ -1,17 +1,17 @@
1
1
  import { default as React } from 'react';
2
- import { ButtonProps } from '@mui/material/Button';
2
+ import { ButtonProps as MuiButtonProps } from '@mui/material/Button';
3
3
  export interface ModalAction {
4
4
  text: string;
5
5
  onClick?: () => void;
6
6
  disabled?: boolean;
7
- variant?: ButtonProps['variant'];
8
- color?: ButtonProps['color'];
7
+ variant?: MuiButtonProps['variant'];
8
+ color?: MuiButtonProps['color'];
9
9
  /**
10
10
  * Props adicionales que se forwardean al `<Button>` interno. Útil para casos
11
11
  * avanzados como conectar el botón con un `<form id="...">` externo usando
12
12
  * `buttonProps={{ type: 'submit', form: 'my-form-id' }}`.
13
13
  */
14
- buttonProps?: Partial<ButtonProps> & {
14
+ buttonProps?: Partial<MuiButtonProps> & {
15
15
  form?: string;
16
16
  };
17
17
  }
@@ -1,6 +1,11 @@
1
1
  import { default as React } from 'react';
2
- interface ModalHeaderProps {
2
+ export interface ModalHeaderProps {
3
3
  children: React.ReactNode;
4
+ /**
5
+ * ID del elemento — usado para `aria-labelledby` del Modal. Se setea
6
+ * automáticamente cuando el header se renderiza dentro de `<Modal>`.
7
+ */
8
+ id?: string;
4
9
  }
5
10
  export declare const ModalHeader: React.FC<ModalHeaderProps>;
6
11
  export default ModalHeader;
@@ -1,6 +1,8 @@
1
- export { default as Modal } from './Modal';
1
+ export { default, default as Modal } from './Modal';
2
2
  export type { ModalRef, ModalMode, ModalSeverity } from './Modal';
3
3
  export { ModalHeader } from './ModalHeader';
4
+ export type { ModalHeaderProps } from './ModalHeader';
4
5
  export { ModalBody } from './ModalBody';
6
+ export type { ModalBodyProps } from './ModalBody';
5
7
  export { ModalFooter } from './ModalFooter';
6
8
  export type { ModalAction, ModalFooterProps } from './ModalFooter';
@@ -1,2 +1,6 @@
1
1
  export * from './Modal/index'
2
2
  export {}
3
+ import _default from './Modal/index'
4
+ export default _default
5
+ export * from './Modal/index'
6
+ export {}