@soyfri/shared-library 2.0.0-beta8 → 3.1.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 (370) 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-BA-cGASd.js → Autocomplete-C_lW1VER.js} +57 -36
  6. package/Autocomplete-C_lW1VER.js.map +1 -0
  7. package/{Autocomplete-C2x-lBvZ.cjs → Autocomplete-CejWztBY.cjs} +56 -35
  8. package/Autocomplete-CejWztBY.cjs.map +1 -0
  9. package/{Avatar-9L7YMxya.cjs → Avatar-Dw5rzayR.cjs} +28 -24
  10. package/Avatar-Dw5rzayR.cjs.map +1 -0
  11. package/{Avatar-BJTr-PBd.js → Avatar-H8akSege.js} +28 -24
  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/{DatePicker-8f_9bwhS.js → DatePicker-_IGWc3I5.js} +38 -62
  32. package/DatePicker-_IGWc3I5.js.map +1 -0
  33. package/{DatePicker-DLSfkgGA.cjs → DatePicker-t7uDTZMl.cjs} +42 -66
  34. package/DatePicker-t7uDTZMl.cjs.map +1 -0
  35. package/{DateTimePicker-CWNW09-O.cjs → DateTimePicker-BxQyjTCY.cjs} +33 -24
  36. package/DateTimePicker-BxQyjTCY.cjs.map +1 -0
  37. package/{DateTimePicker-D4L9GAod.js → DateTimePicker-CrmWav_j.js} +29 -20
  38. package/DateTimePicker-CrmWav_j.js.map +1 -0
  39. package/Divider-BApcM5CV.js +28 -0
  40. package/Divider-BApcM5CV.js.map +1 -0
  41. package/Divider-CIY0JK4U.cjs +27 -0
  42. package/Divider-CIY0JK4U.cjs.map +1 -0
  43. package/{Input-Cp911l23.js → Input-BL1NUIbr.js} +36 -15
  44. package/Input-BL1NUIbr.js.map +1 -0
  45. package/{Input-DI0jfq5X.cjs → Input-BcLJlPRo.cjs} +39 -18
  46. package/Input-BcLJlPRo.cjs.map +1 -0
  47. package/{Modal-Bnz6d9m9.js → Modal-C_QY7ZzY.js} +137 -105
  48. package/Modal-C_QY7ZzY.js.map +1 -0
  49. package/{Modal-Bm_HH9cv.cjs → Modal-D_6ZdSzw.cjs} +132 -100
  50. package/Modal-D_6ZdSzw.cjs.map +1 -0
  51. package/README.md +181 -173
  52. package/{RadioGroup-CxqDHap1.cjs → RadioGroup-Dd0rHXSX.cjs} +10 -8
  53. package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  54. package/{RadioGroup-DMi9FvMP.js → RadioGroup-bO-ahP9T.js} +10 -8
  55. package/RadioGroup-bO-ahP9T.js.map +1 -0
  56. package/{Select-3CBOfM2H.js → Select-BY5Y0qZ1.js} +160 -231
  57. package/Select-BY5Y0qZ1.js.map +1 -0
  58. package/{Select-Bku4f4f8.cjs → Select-CURrHSyl.cjs} +155 -226
  59. package/Select-CURrHSyl.cjs.map +1 -0
  60. package/Spinner-B6sThC1p.js +74 -0
  61. package/Spinner-B6sThC1p.js.map +1 -0
  62. package/Spinner-D7qRmNS9.cjs +73 -0
  63. package/Spinner-D7qRmNS9.cjs.map +1 -0
  64. package/StatusMessage-B3nXpuRl.cjs +88 -0
  65. package/StatusMessage-B3nXpuRl.cjs.map +1 -0
  66. package/StatusMessage-D0WgSBx7.js +89 -0
  67. package/StatusMessage-D0WgSBx7.js.map +1 -0
  68. package/Step-BArsou1V.js +301 -0
  69. package/Step-BArsou1V.js.map +1 -0
  70. package/Step-Nd7SJbRZ.cjs +300 -0
  71. package/Step-Nd7SJbRZ.cjs.map +1 -0
  72. package/{Switch-BIeobv6i.cjs → Switch-CQFOopYy.cjs} +6 -3
  73. package/Switch-CQFOopYy.cjs.map +1 -0
  74. package/{Switch-DQEOxM2R.js → Switch-D72dpkH2.js} +6 -3
  75. package/Switch-D72dpkH2.js.map +1 -0
  76. package/Tab-D1S7kxXI.cjs +137 -0
  77. package/Tab-D1S7kxXI.cjs.map +1 -0
  78. package/Tab-DycIMXmQ.js +138 -0
  79. package/Tab-DycIMXmQ.js.map +1 -0
  80. package/components/ActionMenu/ActionMenu.cjs +52 -52
  81. package/components/ActionMenu/ActionMenu.cjs.map +1 -1
  82. package/components/ActionMenu/ActionMenu.d.ts +20 -36
  83. package/components/ActionMenu/ActionMenu.js +55 -55
  84. package/components/ActionMenu/ActionMenu.js.map +1 -1
  85. package/components/ActionMenu/index.d.ts +2 -2
  86. package/components/Alert/Alert.cjs +6 -0
  87. package/components/Alert/Alert.cjs.map +1 -0
  88. package/components/Alert/Alert.d.ts +31 -0
  89. package/components/Alert/Alert.js +6 -0
  90. package/components/Alert/Alert.js.map +1 -0
  91. package/components/Alert/index.d.ts +2 -0
  92. package/components/Alert.d.ts +6 -0
  93. package/components/AppBar/AppBar.cjs +2 -219
  94. package/components/AppBar/AppBar.cjs.map +1 -1
  95. package/components/AppBar/AppBar.d.ts +6 -6
  96. package/components/AppBar/AppBar.js +5 -222
  97. package/components/AppBar/AppBar.js.map +1 -1
  98. package/components/AppBar/index.d.ts +0 -6
  99. package/components/Autocomplete/Autocomplete.cjs +1 -1
  100. package/components/Autocomplete/Autocomplete.d.ts +8 -6
  101. package/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
  102. package/components/Autocomplete/Autocomplete.js +1 -1
  103. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  104. package/components/Autocomplete/index.d.ts +1 -1
  105. package/components/Avatar/Avatar.cjs +1 -1
  106. package/components/Avatar/Avatar.d.ts +16 -1
  107. package/components/Avatar/Avatar.js +1 -1
  108. package/components/Avatar/index.d.ts +1 -0
  109. package/components/Breadcrumbs/Breadcrumbs.cjs +6 -0
  110. package/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -0
  111. package/components/Breadcrumbs/Breadcrumbs.d.ts +16 -0
  112. package/components/Breadcrumbs/Breadcrumbs.js +6 -0
  113. package/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  114. package/components/Breadcrumbs/index.d.ts +2 -0
  115. package/components/Breadcrumbs.d.ts +6 -0
  116. package/components/Button/Button.d.ts +5 -5
  117. package/components/Button/index.d.ts +1 -0
  118. package/components/ButtonGroup/ButtonGroup.cjs +6 -0
  119. package/components/ButtonGroup/ButtonGroup.cjs.map +1 -0
  120. package/components/ButtonGroup/ButtonGroup.d.ts +18 -0
  121. package/components/ButtonGroup/ButtonGroup.js +6 -0
  122. package/components/ButtonGroup/ButtonGroup.js.map +1 -0
  123. package/components/ButtonGroup/index.d.ts +2 -0
  124. package/components/ButtonGroup.d.ts +6 -0
  125. package/components/Card/Card.cjs +1 -4
  126. package/components/Card/Card.cjs.map +1 -1
  127. package/components/Card/Card.d.ts +21 -50
  128. package/components/Card/Card.js +1 -4
  129. package/components/Card/Card.sx.d.ts +3 -6
  130. package/components/Card/index.d.ts +1 -1
  131. package/components/Checkbox/Checkbox.cjs +6 -0
  132. package/components/Checkbox/Checkbox.cjs.map +1 -0
  133. package/components/Checkbox/Checkbox.d.ts +55 -0
  134. package/components/Checkbox/Checkbox.js +6 -0
  135. package/components/Checkbox/Checkbox.js.map +1 -0
  136. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  137. package/components/Checkbox/index.d.ts +2 -0
  138. package/components/Checkbox.d.ts +6 -0
  139. package/components/Chip/Chip.cjs +2 -1
  140. package/components/Chip/Chip.cjs.map +1 -1
  141. package/components/Chip/Chip.js +3 -2
  142. package/components/Chip/index.d.ts +2 -1
  143. package/components/Chip.d.ts +4 -0
  144. package/components/DatePicker/DatePicker.cjs +1 -1
  145. package/components/DatePicker/DatePicker.d.ts +1 -13
  146. package/components/DatePicker/DatePicker.js +1 -1
  147. package/components/DatePicker/index.d.ts +1 -1
  148. package/components/DateTimePicker/DateTimePicker.cjs +1 -1
  149. package/components/DateTimePicker/DateTimePicker.d.ts +10 -6
  150. package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
  151. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
  152. package/components/DateTimePicker/DateTimePicker.js +1 -1
  153. package/components/DateTimePicker/index.d.ts +1 -1
  154. package/components/Divider/Divider.cjs +6 -0
  155. package/components/Divider/Divider.cjs.map +1 -0
  156. package/components/Divider/Divider.d.ts +17 -0
  157. package/components/Divider/Divider.js +6 -0
  158. package/components/Divider/Divider.js.map +1 -0
  159. package/components/Divider/index.d.ts +2 -0
  160. package/components/Divider.d.ts +6 -0
  161. package/components/Drawer/Drawer.cjs +10 -6
  162. package/components/Drawer/Drawer.cjs.map +1 -1
  163. package/components/Drawer/Drawer.js +11 -7
  164. package/components/Drawer/Drawer.js.map +1 -1
  165. package/components/Drawer/DrawerItem.d.ts +6 -1
  166. package/components/Gallery/Gallery.cjs +154 -79
  167. package/components/Gallery/Gallery.cjs.map +1 -1
  168. package/components/Gallery/Gallery.d.ts +25 -9
  169. package/components/Gallery/Gallery.js +154 -79
  170. package/components/Gallery/Gallery.js.map +1 -1
  171. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  172. package/components/Gallery/GalleryMain.d.ts +3 -7
  173. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  174. package/components/Gallery/index.d.ts +2 -1
  175. package/components/Gallery.d.ts +4 -0
  176. package/components/Icon/Icon.cjs +6 -8
  177. package/components/Icon/Icon.cjs.map +1 -1
  178. package/components/Icon/Icon.d.ts +11 -17
  179. package/components/Icon/Icon.js +6 -8
  180. package/components/Icon/Icon.js.map +1 -1
  181. package/components/Icon/index.d.ts +2 -1
  182. package/components/Icon.d.ts +4 -0
  183. package/components/Input/Input.cjs +1 -1
  184. package/components/Input/Input.d.ts +13 -2
  185. package/components/Input/Input.helpers.d.ts +4 -4
  186. package/components/Input/Input.js +1 -1
  187. package/components/Input/index.d.ts +1 -1
  188. package/components/InputGroup/InputGroup.cjs +23 -22
  189. package/components/InputGroup/InputGroup.cjs.map +1 -1
  190. package/components/InputGroup/InputGroup.d.ts +4 -4
  191. package/components/InputGroup/InputGroup.js +22 -21
  192. package/components/InputGroup/InputGroup.js.map +1 -1
  193. package/components/InputGroup/index.d.ts +2 -1
  194. package/components/InputGroup.d.ts +4 -0
  195. package/components/Modal/Modal.cjs +2 -2
  196. package/components/Modal/Modal.d.ts +27 -5
  197. package/components/Modal/Modal.js +2 -2
  198. package/components/Modal/ModalBody.d.ts +6 -1
  199. package/components/Modal/ModalFooter.d.ts +4 -4
  200. package/components/Modal/ModalHeader.d.ts +6 -1
  201. package/components/Modal/index.d.ts +3 -2
  202. package/components/RadioGroup/RadioGroup.cjs +1 -1
  203. package/components/RadioGroup/RadioGroup.d.ts +9 -3
  204. package/components/RadioGroup/RadioGroup.js +1 -1
  205. package/components/RadioGroup/index.d.ts +1 -1
  206. package/components/Select/Select.cjs +1 -1
  207. package/components/Select/Select.d.ts +37 -18
  208. package/components/Select/Select.helpers.d.ts +5 -19
  209. package/components/Select/Select.js +1 -1
  210. package/components/Select/index.d.ts +1 -1
  211. package/components/Spinner/Spinner.cjs +6 -0
  212. package/components/Spinner/Spinner.cjs.map +1 -0
  213. package/components/Spinner/Spinner.d.ts +26 -0
  214. package/components/Spinner/Spinner.js +6 -0
  215. package/components/Spinner/Spinner.js.map +1 -0
  216. package/components/Spinner/index.d.ts +2 -0
  217. package/components/Spinner.d.ts +6 -0
  218. package/components/Stat/Stat.cjs +2 -2
  219. package/components/Stat/Stat.js +3 -3
  220. package/components/Stat/Stat.js.map +1 -1
  221. package/components/Stat/index.d.ts +2 -1
  222. package/components/Stat.d.ts +4 -0
  223. package/components/StatusMessage/StatusMessage.cjs +1 -1
  224. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  225. package/components/StatusMessage/StatusMessage.js +1 -1
  226. package/components/Stepper/Stepper.cjs +6 -2
  227. package/components/Stepper/Stepper.cjs.map +1 -1
  228. package/components/Stepper/Stepper.d.ts +9 -8
  229. package/components/Stepper/Stepper.js +6 -2
  230. package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +28 -22
  231. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  232. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  233. package/components/Stepper/index.d.ts +6 -2
  234. package/components/Stepper.d.ts +4 -0
  235. package/components/Switch/Switch.cjs +1 -1
  236. package/components/Switch/Switch.d.ts +7 -2
  237. package/components/Switch/Switch.js +1 -1
  238. package/components/Tabs/Tab.d.ts +13 -2
  239. package/components/Tabs/Tabs.cjs +3 -2
  240. package/components/Tabs/Tabs.cjs.map +1 -1
  241. package/components/Tabs/Tabs.d.ts +33 -16
  242. package/components/Tabs/Tabs.js +3 -2
  243. package/components/Tabs/index.d.ts +4 -2
  244. package/components/Tabs.d.ts +4 -0
  245. package/components/Timeline/Timeline.cjs +3 -2
  246. package/components/Timeline/Timeline.cjs.map +1 -1
  247. package/components/Timeline/Timeline.d.ts +4 -8
  248. package/components/Timeline/Timeline.js +3 -2
  249. package/components/Timeline/Timeline.js.map +1 -1
  250. package/components/Timeline/index.d.ts +4 -2
  251. package/components/Timeline.d.ts +4 -0
  252. package/components/_shared/mergeSx.d.ts +7 -0
  253. package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  254. package/formField.sx-8_QRnKxv.js.map +1 -0
  255. package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  256. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  257. package/index.cjs +49 -26
  258. package/index.cjs.map +1 -1
  259. package/index.d.ts +13 -1
  260. package/index.js +45 -25
  261. package/index.js.map +1 -1
  262. package/local/affiliations/affiliations.dev.soyfri.com-key.pem +28 -0
  263. package/local/affiliations/affiliations.dev.soyfri.com.pem +27 -0
  264. package/local/aficiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  265. package/local/aficiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  266. package/local/afiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  267. package/local/afiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  268. package/local/root/rootCA-key.pem +40 -0
  269. package/local/root/rootCA.pem +30 -0
  270. package/local/soporte/supportweb.dev.soyfri.com-key.pem +28 -0
  271. package/local/soporte/supportweb.dev.soyfri.com.pem +27 -0
  272. package/local/support/supportweb.dev.soyfri.com-key.pem +28 -0
  273. package/local/support/supportweb.dev.soyfri.com.pem +27 -0
  274. package/mergeSx-BXoNZjB_.js +10 -0
  275. package/mergeSx-BXoNZjB_.js.map +1 -0
  276. package/mergeSx-Dbccoo_H.cjs +9 -0
  277. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  278. package/mui.d.ts +2 -1
  279. package/package.json +83 -76
  280. package/theme/componentStyles.d.ts +1 -1
  281. package/tokens-BRrcP_p_.js +21 -0
  282. package/tokens-BRrcP_p_.js.map +1 -0
  283. package/tokens-jaWWNk39.cjs +20 -0
  284. package/tokens-jaWWNk39.cjs.map +1 -0
  285. package/utils/index.d.ts +2 -0
  286. package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  287. package/Autocomplete-BA-cGASd.js.map +0 -1
  288. package/Autocomplete-C2x-lBvZ.cjs.map +0 -1
  289. package/Avatar-9L7YMxya.cjs.map +0 -1
  290. package/Avatar-BJTr-PBd.js.map +0 -1
  291. package/Card-DG_crfkK.cjs +0 -185
  292. package/Card-DG_crfkK.cjs.map +0 -1
  293. package/Card-Ug-ttVSh.js +0 -186
  294. package/Card-Ug-ttVSh.js.map +0 -1
  295. package/DatePicker-8f_9bwhS.js.map +0 -1
  296. package/DatePicker-DLSfkgGA.cjs.map +0 -1
  297. package/DateRangePicker-BVpeJCHI.js +0 -76
  298. package/DateRangePicker-BVpeJCHI.js.map +0 -1
  299. package/DateRangePicker-B_hKQhbj.cjs +0 -75
  300. package/DateRangePicker-B_hKQhbj.cjs.map +0 -1
  301. package/DateTimePicker-CWNW09-O.cjs.map +0 -1
  302. package/DateTimePicker-D4L9GAod.js.map +0 -1
  303. package/Input-Cp911l23.js.map +0 -1
  304. package/Input-DI0jfq5X.cjs.map +0 -1
  305. package/Modal-Bm_HH9cv.cjs.map +0 -1
  306. package/Modal-Bnz6d9m9.js.map +0 -1
  307. package/RadioGroup-CxqDHap1.cjs.map +0 -1
  308. package/RadioGroup-DMi9FvMP.js.map +0 -1
  309. package/Select-3CBOfM2H.js.map +0 -1
  310. package/Select-Bku4f4f8.cjs.map +0 -1
  311. package/StatusMessage-C5B6oGZ_.cjs +0 -78
  312. package/StatusMessage-C5B6oGZ_.cjs.map +0 -1
  313. package/StatusMessage-D1GlfQdz.js +0 -79
  314. package/StatusMessage-D1GlfQdz.js.map +0 -1
  315. package/Step-Dq0N72YB.js +0 -49
  316. package/Step-Dq0N72YB.js.map +0 -1
  317. package/Step-a8U8O-91.cjs +0 -48
  318. package/Step-a8U8O-91.cjs.map +0 -1
  319. package/Switch-BIeobv6i.cjs.map +0 -1
  320. package/Switch-DQEOxM2R.js.map +0 -1
  321. package/Tab-Co31KY2k.cjs +0 -95
  322. package/Tab-Co31KY2k.cjs.map +0 -1
  323. package/Tab-DiK62gRz.js +0 -96
  324. package/Tab-DiK62gRz.js.map +0 -1
  325. package/components/AppBar/AppBarBrand.d.ts +0 -31
  326. package/components/AppBar/AppBarUserMenu.d.ts +0 -65
  327. package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  328. package/components/DatePicker/DatePicker.types.d.ts +0 -1
  329. package/components/DateRangePicker/DateRangePicker.cjs +0 -5
  330. package/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  331. package/components/DateRangePicker/DateRangePicker.d.ts +0 -15
  332. package/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
  333. package/components/DateRangePicker/DateRangePicker.js +0 -5
  334. package/components/DateRangePicker/DateRangePicker.js.map +0 -1
  335. package/components/DateRangePicker/index.d.ts +0 -1
  336. package/components/DateRangePicker.d.ts +0 -2
  337. package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  338. package/components/Input/Input.types.d.ts +0 -1
  339. package/components/PageLoader/PageLoader.cjs +0 -61
  340. package/components/PageLoader/PageLoader.cjs.map +0 -1
  341. package/components/PageLoader/PageLoader.d.ts +0 -38
  342. package/components/PageLoader/PageLoader.js +0 -61
  343. package/components/PageLoader/PageLoader.js.map +0 -1
  344. package/components/PageLoader/index.d.ts +0 -2
  345. package/components/PageLoader.d.ts +0 -6
  346. package/components/RadioGroup/RadioGroup.types.d.ts +0 -1
  347. package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  348. package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  349. package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  350. package/components/ScrollTopButton/ScrollTopButton.js +0 -79
  351. package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  352. package/components/ScrollTopButton/index.d.ts +0 -4
  353. package/components/ScrollTopButton.d.ts +0 -6
  354. package/components/Select/Select.definitions.d.ts +0 -17
  355. package/components/Select/Select.types.d.ts +0 -1
  356. package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  357. package/formField.sx-CQ1mbk9M.cjs.map +0 -1
  358. package/formField.sx-DfVbMe0V.js.map +0 -1
  359. package/hooks/Wizard/Wizard.cjs +0 -7
  360. package/hooks/Wizard/Wizard.cjs.map +0 -1
  361. package/hooks/Wizard/Wizard.js +0 -7
  362. package/hooks/Wizard/Wizard.js.map +0 -1
  363. package/hooks/Wizard/index.d.ts +0 -3
  364. package/hooks/Wizard/useWizard.d.ts +0 -9
  365. package/hooks/Wizard.d.ts +0 -2
  366. package/useWizard-CWdIxZzX.cjs +0 -94
  367. package/useWizard-CWdIxZzX.cjs.map +0 -1
  368. package/useWizard-CWq--C3o.js +0 -95
  369. package/useWizard-CWq--C3o.js.map +0 -1
  370. /package/{styles.css → index.css} +0 -0
@@ -17,27 +17,16 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
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
20
  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";
21
+ import { forwardRef, useState, useId, useImperativeHandle, Children, isValidElement, cloneElement } from "react";
22
+ import { Box, Stack, Typography, useTheme, useMediaQuery, Modal as Modal$1, Paper } from "@mui/material";
35
23
  import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
36
24
  import WarningAmberIcon from "@mui/icons-material/WarningAmber";
37
25
  import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
38
26
  import CheckCircleOutlineIcon from "@mui/icons-material/CheckCircleOutline";
27
+ import { B as Button } from "./Button-UkkP-bNw.js";
28
+ import { m as mergeSx } from "./mergeSx-BXoNZjB_.js";
39
29
  const ModalFooter = ({
40
- // Renombrado
41
30
  children,
42
31
  showCloseButton = true,
43
32
  closeButtonText = "Cerrar",
@@ -45,42 +34,74 @@ const ModalFooter = ({
45
34
  onClose,
46
35
  actions = []
47
36
  }) => {
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
- ] });
37
+ return /* @__PURE__ */ jsxs(
38
+ Box,
39
+ {
40
+ sx: {
41
+ padding: 2,
42
+ borderTop: (theme) => `1px solid ${theme.palette.divider}`,
43
+ display: "flex",
44
+ justifyContent: "flex-end",
45
+ gap: 1
46
+ },
47
+ children: [
48
+ children,
49
+ /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, children: [
50
+ showCloseButton && /* @__PURE__ */ jsx(
51
+ Button,
52
+ {
53
+ onClick: onClose,
54
+ disabled: closeButtonDisabled,
55
+ variant: "outlined",
56
+ color: "secondary",
57
+ children: closeButtonText
58
+ }
59
+ ),
60
+ actions.map((action) => {
61
+ const { buttonProps, text, onClick, disabled, variant, color } = action;
62
+ return /* @__PURE__ */ jsx(
63
+ Button,
64
+ __spreadProps(__spreadValues({
65
+ onClick,
66
+ disabled,
67
+ variant: variant || "contained",
68
+ color: color || "primary"
69
+ }, buttonProps), {
70
+ children: text
71
+ }),
72
+ text
73
+ );
74
+ })
75
+ ] })
76
+ ]
77
+ }
78
+ );
78
79
  };
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 }) });
80
+ ModalFooter.displayName = "ModalFooter";
81
+ const ModalHeader = ({ children, id }) => {
82
+ return /* @__PURE__ */ jsx(
83
+ Box,
84
+ {
85
+ sx: {
86
+ padding: 2,
87
+ borderBottom: (theme) => `1px solid ${theme.palette.divider}`,
88
+ display: "flex",
89
+ alignItems: "center",
90
+ justifyContent: "space-between"
91
+ },
92
+ children: /* @__PURE__ */ jsx(Typography, { id, variant: "h6", component: "h2", children })
93
+ }
94
+ );
81
95
  };
82
- const ModalBody = ({ children }) => {
83
- return /* @__PURE__ */ jsx(Box, { sx: { padding: 2, overflowY: "auto", flexGrow: 1 }, children });
96
+ ModalHeader.displayName = "ModalHeader";
97
+ const ModalBody = ({ children, id }) => {
98
+ return /* @__PURE__ */ jsx(Box, { id, sx: { padding: 2, overflowY: "auto", flexGrow: 1 }, children });
99
+ };
100
+ ModalBody.displayName = "ModalBody";
101
+ const isModalSlot = (child, Component, displayName) => {
102
+ if (child.type === Component) return true;
103
+ const type = child.type;
104
+ return (type == null ? void 0 : type.displayName) === displayName;
84
105
  };
85
106
  const modalStyle = {
86
107
  position: "absolute",
@@ -97,22 +118,22 @@ const severityConfig = {
97
118
  info: {
98
119
  color: "primary",
99
120
  icon: /* @__PURE__ */ jsx(InfoOutlinedIcon, { sx: { fontSize: 48 } }),
100
- bg: "primary.light"
121
+ paletteKey: "primary"
101
122
  },
102
123
  warning: {
103
124
  color: "warning",
104
125
  icon: /* @__PURE__ */ jsx(WarningAmberIcon, { sx: { fontSize: 48 } }),
105
- bg: "warning.light"
126
+ paletteKey: "warning"
106
127
  },
107
128
  error: {
108
129
  color: "error",
109
130
  icon: /* @__PURE__ */ jsx(ErrorOutlineIcon, { sx: { fontSize: 48 } }),
110
- bg: "error.light"
131
+ paletteKey: "error"
111
132
  },
112
133
  success: {
113
134
  color: "success",
114
135
  icon: /* @__PURE__ */ jsx(CheckCircleOutlineIcon, { sx: { fontSize: 48 } }),
115
- bg: "success.light"
136
+ paletteKey: "success"
116
137
  }
117
138
  };
118
139
  const Modal = forwardRef(
@@ -127,7 +148,14 @@ const Modal = forwardRef(
127
148
  closeButtonDisabled = false,
128
149
  actions = [],
129
150
  maxWidth = "sm",
151
+ hiddenHeader = false,
152
+ hiddenBody = false,
130
153
  hiddenFooter = false,
154
+ staticBackdrop = false,
155
+ "data-testid": dataTestId,
156
+ sx,
157
+ paperSx,
158
+ className,
131
159
  // Props del modo confirm
132
160
  onConfirm,
133
161
  confirmText = "Confirmar",
@@ -137,6 +165,8 @@ const Modal = forwardRef(
137
165
  }, ref) => {
138
166
  const [internalOpen, setInternalOpen] = useState(false);
139
167
  const [confirmLoading, setConfirmLoading] = useState(false);
168
+ const titleId = useId();
169
+ const descId = useId();
140
170
  const isOpen = controlledOpen !== void 0 ? controlledOpen : internalOpen;
141
171
  useImperativeHandle(ref, () => ({
142
172
  open: () => setInternalOpen(true),
@@ -145,7 +175,10 @@ const Modal = forwardRef(
145
175
  controlledOnClose == null ? void 0 : controlledOnClose();
146
176
  }
147
177
  }));
148
- const handleCloseInternal = () => {
178
+ const handleCloseInternal = (_event, reason) => {
179
+ if (staticBackdrop && (reason === "backdropClick" || reason === "escapeKeyDown")) {
180
+ return;
181
+ }
149
182
  setInternalOpen(false);
150
183
  controlledOnClose == null ? void 0 : controlledOnClose();
151
184
  };
@@ -154,15 +187,19 @@ const Modal = forwardRef(
154
187
  handleCloseInternal();
155
188
  return;
156
189
  }
190
+ const result = onConfirm();
191
+ if (!(result instanceof Promise)) {
192
+ handleCloseInternal();
193
+ return;
194
+ }
195
+ setConfirmLoading(true);
157
196
  try {
158
- const result = onConfirm();
159
- if (result instanceof Promise) {
160
- setConfirmLoading(true);
161
- await result;
162
- }
197
+ await result;
198
+ handleCloseInternal();
199
+ } catch (err) {
200
+ console.error("Modal onConfirm failed:", err);
163
201
  } finally {
164
202
  setConfirmLoading(false);
165
- handleCloseInternal();
166
203
  }
167
204
  };
168
205
  const theme = useTheme();
@@ -183,9 +220,11 @@ const Modal = forwardRef(
183
220
  case false:
184
221
  return "auto";
185
222
  default:
186
- return 500;
223
+ return typeof maxWidth === "string" ? maxWidth : 500;
187
224
  }
188
225
  };
226
+ const paperBaseSx = __spreadProps(__spreadValues({}, modalStyle), { width: getWidth() });
227
+ const mergedPaperSx = mergeSx(paperBaseSx, paperSx);
189
228
  if (mode === "confirm") {
190
229
  const config = severityConfig[severity];
191
230
  const message = confirmMessage != null ? confirmMessage : children;
@@ -194,9 +233,11 @@ const Modal = forwardRef(
194
233
  {
195
234
  open: isOpen,
196
235
  onClose: handleCloseInternal,
197
- "aria-labelledby": "modal-title",
236
+ "aria-labelledby": title ? titleId : void 0,
237
+ "aria-describedby": message ? descId : void 0,
198
238
  closeAfterTransition: true,
199
- children: /* @__PURE__ */ jsxs(Paper, { sx: __spreadProps(__spreadValues({}, modalStyle), { width: getWidth() }), children: [
239
+ sx,
240
+ children: /* @__PURE__ */ jsxs(Paper, { className, sx: mergedPaperSx, "data-testid": dataTestId, children: [
200
241
  /* @__PURE__ */ jsxs(Stack, { spacing: 2.5, sx: { p: 3, alignItems: "center", textAlign: "center" }, children: [
201
242
  /* @__PURE__ */ jsx(
202
243
  Box,
@@ -205,8 +246,8 @@ const Modal = forwardRef(
205
246
  width: 72,
206
247
  height: 72,
207
248
  borderRadius: "50%",
208
- backgroundColor: (t) => t.palette[severity === "info" ? "primary" : severity].light,
209
- color: (t) => t.palette[severity === "info" ? "primary" : severity].dark,
249
+ backgroundColor: (t) => t.palette[config.paletteKey].light,
250
+ color: (t) => t.palette[config.paletteKey].dark,
210
251
  display: "flex",
211
252
  alignItems: "center",
212
253
  justifyContent: "center",
@@ -215,8 +256,8 @@ const Modal = forwardRef(
215
256
  children: config.icon
216
257
  }
217
258
  ),
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 })
259
+ title && /* @__PURE__ */ jsx(Typography, { id: titleId, variant: "h6", component: "h2", sx: { fontWeight: 700 }, children: title }),
260
+ message && /* @__PURE__ */ jsx(Typography, { id: descId, variant: "body2", color: "text.secondary", children: message })
220
261
  ] }),
221
262
  /* @__PURE__ */ jsx(
222
263
  ModalFooter,
@@ -244,35 +285,25 @@ const Modal = forwardRef(
244
285
  let header = null;
245
286
  let body = null;
246
287
  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
- }
288
+ Children.forEach(children, (child) => {
289
+ var _a, _b, _c, _d, _e;
290
+ if (!isValidElement(child)) return;
291
+ if (isModalSlot(child, ModalHeader, "ModalHeader")) {
292
+ const headerChild = child;
293
+ header = cloneElement(headerChild, __spreadValues({ id: titleId }, headerChild.props));
294
+ } else if (isModalSlot(child, ModalBody, "ModalBody")) {
295
+ const bodyChild = child;
296
+ body = cloneElement(bodyChild, __spreadValues({ id: descId }, bodyChild.props));
297
+ } else if (isModalSlot(child, ModalFooter, "ModalFooter")) {
298
+ const footerChild = child;
299
+ const childProps = footerChild.props;
300
+ footer = cloneElement(footerChild, {
301
+ showCloseButton: (_a = childProps.showCloseButton) != null ? _a : showCloseButton,
302
+ closeButtonText: (_b = childProps.closeButtonText) != null ? _b : closeButtonText,
303
+ closeButtonDisabled: (_c = childProps.closeButtonDisabled) != null ? _c : closeButtonDisabled,
304
+ onClose: (_d = childProps.onClose) != null ? _d : handleCloseInternal,
305
+ actions: (_e = childProps.actions) != null ? _e : actions
306
+ });
276
307
  }
277
308
  });
278
309
  if (!footer && !hiddenFooter) {
@@ -288,8 +319,8 @@ const Modal = forwardRef(
288
319
  );
289
320
  }
290
321
  return /* @__PURE__ */ jsxs(Fragment, { children: [
291
- header || title && /* @__PURE__ */ jsx(ModalHeader, { children: title }),
292
- body,
322
+ !hiddenHeader && (header || title && /* @__PURE__ */ jsx(ModalHeader, { id: titleId, children: title })),
323
+ !hiddenBody && body,
293
324
  footer
294
325
  ] });
295
326
  };
@@ -298,23 +329,24 @@ const Modal = forwardRef(
298
329
  {
299
330
  open: isOpen,
300
331
  onClose: handleCloseInternal,
301
- "aria-labelledby": "modal-title",
302
- "aria-describedby": "modal-description",
332
+ "aria-labelledby": titleId,
333
+ "aria-describedby": descId,
303
334
  closeAfterTransition: true,
304
- children: /* @__PURE__ */ jsx(Paper, { sx: __spreadProps(__spreadValues({}, modalStyle), { width: getWidth() }), children: renderChildren() })
335
+ sx,
336
+ children: /* @__PURE__ */ jsx(Paper, { className, sx: mergedPaperSx, "data-testid": dataTestId, children: renderChildren() })
305
337
  }
306
338
  );
307
339
  }
308
340
  );
341
+ Modal.displayName = "Modal";
309
342
  const ModalWithStatics = Modal;
310
343
  ModalWithStatics.Header = ModalHeader;
311
344
  ModalWithStatics.Body = ModalBody;
312
345
  ModalWithStatics.Footer = ModalFooter;
313
346
  export {
314
- Modal as M,
347
+ ModalWithStatics as M,
315
348
  ModalHeader as a,
316
349
  ModalBody as b,
317
- ModalFooter as c,
318
- ModalWithStatics as d
350
+ ModalFooter as c
319
351
  };
320
- //# sourceMappingURL=Modal-Bnz6d9m9.js.map
352
+ //# sourceMappingURL=Modal-C_QY7ZzY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal-C_QY7ZzY.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, Stack } from '@mui/material';\nimport type { ButtonProps as MuiButtonProps } from '@mui/material/Button';\n\nimport { Button } from '../Button';\n\n// Interfaz para acciones personalizadas (se mantiene aquí)\nexport interface ModalAction {\n text: string;\n onClick?: () => void;\n disabled?: boolean;\n variant?: MuiButtonProps['variant'];\n color?: MuiButtonProps['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<MuiButtonProps> & { form?: string };\n}\n\nexport interface ModalFooterProps {\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> = ({\n children,\n showCloseButton = true,\n closeButtonText = 'Cerrar',\n closeButtonDisabled = false,\n onClose,\n actions = [],\n}) => {\n return (\n <Box\n sx={{\n padding: 2,\n borderTop: (theme) => `1px solid ${theme.palette.divider}`,\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 1,\n }}\n >\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) => {\n const { buttonProps, text, onClick, disabled, variant, color } = action;\n return (\n <Button\n key={text}\n onClick={onClick}\n disabled={disabled}\n variant={variant || 'contained'}\n color={color || 'primary'}\n {...(buttonProps as any)}\n >\n {text}\n </Button>\n );\n })}\n </Stack>\n </Box>\n );\n};\n\nModalFooter.displayName = 'ModalFooter';\n\nexport default ModalFooter;\n","import React from 'react';\nimport { Box, Typography } from '@mui/material';\n\nexport interface ModalHeaderProps {\n children: React.ReactNode;\n /**\n * ID del elemento — usado para `aria-labelledby` del Modal. Se setea\n * automáticamente cuando el header se renderiza dentro de `<Modal>`.\n */\n id?: string;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({ children, id }) => {\n return (\n <Box\n sx={{\n padding: 2,\n borderBottom: (theme) => `1px solid ${theme.palette.divider}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Typography id={id} variant=\"h6\" component=\"h2\">\n {children}\n </Typography>\n </Box>\n );\n};\n\nModalHeader.displayName = 'ModalHeader';\n\nexport default ModalHeader;\n","import React from 'react';\nimport { Box } from '@mui/material';\n\nexport interface ModalBodyProps {\n children: React.ReactNode;\n /**\n * ID del elemento — usado para `aria-describedby` del Modal. Se setea\n * automáticamente cuando el body se renderiza dentro de `<Modal>`.\n */\n id?: string;\n}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ children, id }) => {\n return (\n <Box id={id} sx={{ padding: 2, overflowY: 'auto', flexGrow: 1 }}>\n {children}\n </Box>\n );\n};\n\nModalBody.displayName = 'ModalBody';\n\nexport default ModalBody;\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useId,\n useImperativeHandle,\n useState,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n Modal as MuiModal,\n Paper,\n useMediaQuery,\n useTheme,\n Box,\n Stack,\n Typography,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\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 { ModalFooter, type ModalAction, type ModalFooterProps } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { mergeSx } from '../_shared/mergeSx';\n\n// Detección robusta de sub-componentes — funciona con wrappers / HMR que\n// rompen la igualdad de referencia (`child.type === ModalHeader`).\nconst isModalSlot = (\n child: ReactElement,\n Component: unknown,\n displayName: string,\n): boolean => {\n if (child.type === Component) return true;\n const type = child.type as { displayName?: string };\n return type?.displayName === displayName;\n};\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\nexport interface 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 /**\n * Si `true`, el modal NO se cierra al hacer click en el backdrop ni con Escape\n * (equivale a `backdrop=\"static\"`). Cerrar solo vía botón/acción.\n */\n staticBackdrop?: boolean;\n /** Test id aplicado al Paper interno (contenedor visual). */\n 'data-testid'?: string;\n /** Oculta el header (incluso si hay `title` o se pasa un `<Modal.Header>`). */\n hiddenHeader?: boolean;\n /** Oculta el body (incluso si se pasa un `<Modal.Body>`). */\n hiddenBody?: boolean;\n /** Oculta el footer (incluso si se pasa un `<Modal.Footer>` o `actions`). */\n hiddenFooter?: boolean;\n /** sx del Modal root (MuiModal). */\n sx?: SxProps<Theme>;\n /** sx del Paper interno (contenedor visual). Se mergea sobre el default. */\n paperSx?: SxProps<Theme>;\n /** className del Paper interno. */\n className?: string;\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 * Si la promesa **rechaza**, el modal queda abierto para que el consumer\n * pueda mostrar el error en su UI. El modal se cierra solo en éxito.\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; paletteKey: 'primary' | 'warning' | 'error' | 'success' }\n> = {\n info: {\n color: 'primary',\n icon: <InfoOutlinedIcon sx={{ fontSize: 48 }} />,\n paletteKey: 'primary',\n },\n warning: {\n color: 'warning',\n icon: <WarningAmberIcon sx={{ fontSize: 48 }} />,\n paletteKey: 'warning',\n },\n error: {\n color: 'error',\n icon: <ErrorOutlineIcon sx={{ fontSize: 48 }} />,\n paletteKey: 'error',\n },\n success: {\n color: 'success',\n icon: <CheckCircleOutlineIcon sx={{ fontSize: 48 }} />,\n paletteKey: 'success',\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 hiddenHeader = false,\n hiddenBody = false,\n hiddenFooter = false,\n staticBackdrop = false,\n 'data-testid': dataTestId,\n sx,\n paperSx,\n className,\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 // IDs estables para a11y: `aria-labelledby` y `aria-describedby`.\n const titleId = useId();\n const descId = useId();\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 _event?: object,\n reason?: 'backdropClick' | 'escapeKeyDown',\n ) => {\n // Backdrop estático: ignora cierres por click fuera o Escape.\n if (\n staticBackdrop &&\n (reason === 'backdropClick' || reason === 'escapeKeyDown')\n ) {\n return;\n }\n setInternalOpen(false);\n controlledOnClose?.();\n };\n\n const handleConfirm = async () => {\n if (!onConfirm) {\n handleCloseInternal();\n return;\n }\n const result = onConfirm();\n if (!(result instanceof Promise)) {\n handleCloseInternal();\n return;\n }\n setConfirmLoading(true);\n try {\n await result;\n handleCloseInternal();\n } catch (err) {\n // No cerrar el modal en caso de error — el consumer es responsable\n // de mostrar un estado de error en su UI. Logueamos para trazabilidad\n // en dev.\n // eslint-disable-next-line no-console\n console.error('Modal onConfirm failed:', err);\n } finally {\n setConfirmLoading(false);\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 // Soporta string custom: `maxWidth=\"600px\"` se pasa tal cual.\n return typeof maxWidth === 'string' ? maxWidth : 500;\n }\n };\n\n // Base sx del Paper + width responsive; el consumer puede pisarlos via `paperSx`.\n const paperBaseSx: SxProps<Theme> = { ...modalStyle, width: getWidth() };\n const mergedPaperSx = mergeSx(paperBaseSx, paperSx);\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={title ? titleId : undefined}\n aria-describedby={message ? descId : undefined}\n closeAfterTransition\n sx={sx}\n >\n <Paper className={className} sx={mergedPaperSx} data-testid={dataTestId}>\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) => t.palette[config.paletteKey].light,\n color: (t) => t.palette[config.paletteKey].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 id={titleId} variant=\"h6\" component=\"h2\" sx={{ fontWeight: 700 }}>\n {title}\n </Typography>\n )}\n {message && (\n <Typography id={descId} 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 (compuesto) ─────────────────────────────────\n const renderChildren = () => {\n let header: ReactNode | null = null;\n let body: ReactNode | null = null;\n let footer: ReactNode | null = null;\n\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n\n if (isModalSlot(child, ModalHeader, 'ModalHeader')) {\n const headerChild = child as ReactElement<{ id?: string }>;\n header = cloneElement(headerChild, { id: titleId, ...headerChild.props });\n } else if (isModalSlot(child, ModalBody, 'ModalBody')) {\n const bodyChild = child as ReactElement<{ id?: string }>;\n body = cloneElement(bodyChild, { id: descId, ...bodyChild.props });\n } else if (isModalSlot(child, ModalFooter, 'ModalFooter')) {\n const footerChild = child as ReactElement<ModalFooterProps>;\n // Props del child ganan sobre los del Modal padre: si el consumer\n // declara `<Modal.Footer showCloseButton={false}>`, ese valor se\n // respeta. Solo los que vengan `undefined` caen al default del padre.\n const childProps = footerChild.props;\n footer = cloneElement(footerChild, {\n showCloseButton: childProps.showCloseButton ?? showCloseButton,\n closeButtonText: childProps.closeButtonText ?? closeButtonText,\n closeButtonDisabled: childProps.closeButtonDisabled ?? closeButtonDisabled,\n onClose: childProps.onClose ?? handleCloseInternal,\n actions: childProps.actions ?? actions,\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 {!hiddenHeader && (header || (title && <ModalHeader id={titleId}>{title}</ModalHeader>))}\n {!hiddenBody && body}\n {footer}\n </>\n );\n };\n\n return (\n <MuiModal\n open={isOpen}\n onClose={handleCloseInternal}\n aria-labelledby={titleId}\n aria-describedby={descId}\n closeAfterTransition\n sx={sx}\n >\n <Paper className={className} sx={mergedPaperSx} data-testid={dataTestId}>\n {renderChildren()}\n </Paper>\n </MuiModal>\n );\n },\n);\n\nModal.displayName = 'Modal';\n\n// Define los sub-componentes como propiedades estáticas con tipos explícitos\ntype ModalComponent = ReturnType<typeof forwardRef<ModalRef, ModalProps>> & {\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"],"mappings":"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"}