@soyfri/shared-library 2.0.0-beta8 → 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 (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-DI0jfq5X.cjs → Input-CScC87J5.cjs} +28 -16
  44. package/Input-CScC87J5.cjs.map +1 -0
  45. package/{Input-Cp911l23.js → Input-DP_fKl38.js} +25 -13
  46. package/Input-DP_fKl38.js.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 +188 -172
  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 +9 -2
  185. package/components/Input/Input.helpers.d.ts +3 -3
  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
@@ -36,7 +36,8 @@ import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
36
36
  import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
37
37
  import { DateTimePicker as DateTimePicker$1 } from "@mui/x-date-pickers/DateTimePicker";
38
38
  import { Controller } from "react-hook-form";
39
- import { b as buildFormFieldSx, F as FIELD_INPUT_PADDING_Y } from "./formField.sx-DfVbMe0V.js";
39
+ import { b as buildFormFieldSx } from "./formField.sx-8_QRnKxv.js";
40
+ import { F as FIELD_INPUT_PADDING_Y } from "./tokens-BRrcP_p_.js";
40
41
  import { r as resolvePreset } from "./resolvePreset-K6_BfWHD.js";
41
42
  const buildDateTimePickerSx = (borderRadius, labelPosition) => buildFormFieldSx({
42
43
  borderRadius,
@@ -57,12 +58,17 @@ const getDateTimeValidationMessage = (error) => {
57
58
  switch (error) {
58
59
  case "minDate":
59
60
  case "maxDate":
61
+ case "minTime":
62
+ case "maxTime":
63
+ return "Fecha/hora fuera del rango permitido";
60
64
  case "invalidDate":
61
65
  return "Formato de fecha/hora inválido";
62
66
  case "disableFuture":
63
67
  return "No se permiten fechas/horas futuras";
64
68
  case "disablePast":
65
69
  return "No se permiten fechas/horas pasadas";
70
+ case "minutesStep":
71
+ return "Minutos no válidos para el paso configurado";
66
72
  default:
67
73
  return "";
68
74
  }
@@ -96,10 +102,9 @@ const DateTimePicker = (props) => {
96
102
  acceptButtonText,
97
103
  minutesStep,
98
104
  minTime,
99
- customClass,
105
+ ampm = false,
100
106
  viewRenderers,
101
107
  timeSteps,
102
- ampm = false,
103
108
  textFieldProps,
104
109
  slotProps: slotPropsProp
105
110
  } = _a, rest = __objRest(_a, [
@@ -123,10 +128,9 @@ const DateTimePicker = (props) => {
123
128
  "acceptButtonText",
124
129
  "minutesStep",
125
130
  "minTime",
126
- "customClass",
131
+ "ampm",
127
132
  "viewRenderers",
128
133
  "timeSteps",
129
- "ampm",
130
134
  "textFieldProps",
131
135
  "slotProps"
132
136
  ]);
@@ -142,22 +146,21 @@ const DateTimePicker = (props) => {
142
146
  const theme = useTheme();
143
147
  const presetSx = resolvePreset("DateTimePicker", preset, theme);
144
148
  const mergedSx = [
145
- buildDateTimePickerSx(borderRadius, labelPosition),
146
- ...presetSx ? [presetSx] : [],
147
- ...Array.isArray(sx) ? sx : [sx]
149
+ ...presetSx ? [presetSx] : [buildDateTimePickerSx(borderRadius, labelPosition)],
150
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
148
151
  ];
149
152
  const renderPicker = (value, onChange, onBlur, inputRef, rhfError, rhfHelperText) => {
150
153
  const finalError = rhfError || !!validationErrorMessage || !!errorProp;
151
154
  const finalHelperText = rhfHelperText || validationErrorMessage || helperText;
152
155
  return /* @__PURE__ */ jsx(
153
156
  LocalizationProvider,
154
- __spreadProps(__spreadValues({
155
- dateAdapter: AdapterDayjs
156
- }, adapterLocale ? { adapterLocale } : {}), {
157
+ {
158
+ dateAdapter: AdapterDayjs,
159
+ adapterLocale,
157
160
  children: /* @__PURE__ */ jsx(
158
161
  DateTimePicker$1,
159
162
  __spreadValues({
160
- className: customClass || className,
163
+ className,
161
164
  label,
162
165
  value,
163
166
  onChange,
@@ -169,29 +172,32 @@ const DateTimePicker = (props) => {
169
172
  readOnly,
170
173
  minTime,
171
174
  format: inputFormat != null ? inputFormat : "DD/MM/YYYY HH:mm",
175
+ ampm,
172
176
  viewRenderers,
173
177
  timeSteps,
174
- ampm,
175
178
  sx: mergedSx,
176
179
  slotProps: __spreadProps(__spreadValues({}, slotPropsProp), {
177
- textField: __spreadValues(__spreadValues({
180
+ textField: __spreadProps(__spreadValues(__spreadValues({
178
181
  fullWidth: true,
179
182
  size,
180
- variant: "outlined",
183
+ variant: "outlined"
184
+ }, slotPropsProp == null ? void 0 : slotPropsProp.textField), textFieldProps), {
185
+ // Props críticas al final: ganan al consumer para no romper la
186
+ // integración con RHF ni desactivar el visual de error.
181
187
  onBlur,
182
188
  inputRef,
183
189
  error: !!finalError,
184
190
  helperText: finalHelperText
185
- }, slotPropsProp == null ? void 0 : slotPropsProp.textField), textFieldProps)
191
+ })
186
192
  }),
187
193
  localeText: customLocaleText
188
194
  }, rest)
189
195
  )
190
- })
196
+ }
191
197
  );
192
198
  };
193
199
  if ("control" in props && props.control) {
194
- const { name, control, validation } = props;
200
+ const { name, control, validation, onValueChange } = props;
195
201
  return /* @__PURE__ */ jsx(
196
202
  Controller,
197
203
  {
@@ -202,7 +208,10 @@ const DateTimePicker = (props) => {
202
208
  var _a2;
203
209
  return renderPicker(
204
210
  (_a2 = field.value) != null ? _a2 : null,
205
- field.onChange,
211
+ (next) => {
212
+ field.onChange(next);
213
+ onValueChange == null ? void 0 : onValueChange(next);
214
+ },
206
215
  field.onBlur,
207
216
  field.ref,
208
217
  !!fieldError,
@@ -218,4 +227,4 @@ const DateTimePicker = (props) => {
218
227
  export {
219
228
  DateTimePicker as D
220
229
  };
221
- //# sourceMappingURL=DateTimePicker-D4L9GAod.js.map
230
+ //# sourceMappingURL=DateTimePicker-CrmWav_j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimePicker-CrmWav_j.js","sources":["../src/components/DateTimePicker/DateTimePicker.sx.ts","../src/components/DateTimePicker/DateTimePicker.helpers.ts","../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport { FIELD_INPUT_PADDING_Y } from '../../theme/tokens';\nimport type { LabelPosition } from './DateTimePicker';\n\n/**\n * Builder de sx para el DateTimePicker. Mismo patrón que DatePicker.\n * Usa `includePickersApi: true` para soportar la API nueva de MUI X v8.\n */\nexport const buildDateTimePickerSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): SxProps<Theme> =>\n buildFormFieldSx({\n borderRadius,\n labelPosition,\n includePickersApi: true,\n extraOutsideSx: {\n '& .MuiInputBase-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n\n '& .MuiPickersInputBase-sectionsContainer': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n },\n });\n","import type { DateTimeValidationError } from '@mui/x-date-pickers/models';\n\n/**\n * Traduce el error del DateTimePicker a un mensaje en español. Se usa\n * internamente para poblar `helperText` cuando hay error de validación.\n * Cubre tanto errores de fecha (`minDate`, `maxDate`, etc.) como de hora\n * (`minTime`, `maxTime`, `minutesStep`, etc.).\n */\nexport const getDateTimeValidationMessage = (\n error: DateTimeValidationError | null,\n): string => {\n switch (error) {\n case 'minDate':\n case 'maxDate':\n case 'minTime':\n case 'maxTime':\n return 'Fecha/hora fuera del rango permitido';\n case 'invalidDate':\n return 'Formato de fecha/hora inválido';\n case 'disableFuture':\n return 'No se permiten fechas/horas futuras';\n case 'disablePast':\n return 'No se permiten fechas/horas pasadas';\n case 'minutesStep':\n return 'Minutos no válidos para el paso configurado';\n default:\n return '';\n }\n};\n\n/**\n * Construye el `localeText` que MUI acepta para overridear los labels de los\n * botones del popover (Cancel / OK / Clear).\n */\nexport const buildLocaleText = (\n clearButtonText?: string,\n cancelButtonText?: string,\n acceptButtonText?: string,\n): Record<string, string> => {\n const text: Record<string, string> = {};\n if (clearButtonText) text.clearButtonLabel = clearButtonText;\n if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;\n if (acceptButtonText) text.okButtonLabel = acceptButtonText;\n return text;\n};\n","import React, { useMemo } from 'react';\nimport type { SxProps, Theme } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport {\n DateTimePicker as MuiDateTimePicker,\n type DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker';\nimport type { DateTimeValidationError } from '@mui/x-date-pickers/models';\nimport { Dayjs } from 'dayjs';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildDateTimePickerSx } from './DateTimePicker.sx';\nimport {\n buildLocaleText,\n getDateTimeValidationMessage,\n} from './DateTimePicker.helpers';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport type LabelPosition = 'outside' | 'floating';\nexport type DateTimePickerSize = 'small' | 'medium';\n\n// ── Props base ───────────────────────────────────────────────────────────\nexport interface BaseDateTimePickerProps\n extends Omit<MuiDateTimePickerProps, 'value' | 'onChange' | 'slotProps' | 'format'> {\n label?: string;\n minDateTime?: Dayjs;\n maxDateTime?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n /** Formato de la fecha/hora. Default: 'DD/MM/YYYY HH:mm'. */\n inputFormat?: string;\n /** Border radius del input. Default: 10. */\n borderRadius?: number | string;\n /** \"outside\" (default) o \"floating\". */\n labelPosition?: LabelPosition;\n /** Tamaño del TextField. Default: 'small'. */\n size?: DateTimePickerSize;\n helperText?: string;\n error?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.DateTimePicker`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n /** Locale del adaptador dayjs. */\n adapterLocale?: string;\n /** Textos de los botones del popover. */\n clearButtonText?: string;\n cancelButtonText?: string;\n acceptButtonText?: string;\n minutesStep?: number;\n minTime?: Dayjs;\n /** Si es true usa formato 12h (AM/PM), false = 24h. Default: false. */\n ampm?: boolean;\n viewRenderers?: MuiDateTimePickerProps['viewRenderers'];\n timeSteps?: MuiDateTimePickerProps['timeSteps'];\n textFieldProps?: Record<string, any>;\n /** Passthrough completo a slotProps del MuiDateTimePicker. */\n slotProps?: MuiDateTimePickerProps['slotProps'];\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFDateTimePickerProps extends BaseDateTimePickerProps {\n name: string;\n // `any` plano (no `Control<any>`): RHF tipa `Control<T>` con generics en\n // posiciones tanto contravariantes como covariantes (ej. `_subjects.state`).\n // Cuando el componente o su uso involucra generics adicionales, TS se\n // confunde narroweando el discriminated union y `Control<any>` no logra\n // absorber `Control<MyForm>` en la comparación estructural profunda. El\n // `any` plano elimina ese ruido. RHF adentro sigue teniendo sus tipos\n // fuertes — solo degradamos la superficie del prop del componente.\n control: any;\n validation?: RegisterOptions;\n /**\n * Side-effect que corre después de que RHF actualiza el form state.\n * Útil para cascadas entre campos. NO reemplaza al handler de RHF.\n */\n onValueChange?: (dateTime: Dayjs | null) => void;\n selectedDateTime?: never;\n onDateTimeChange?: never;\n}\n\nexport interface ControlledDateTimePickerProps extends BaseDateTimePickerProps {\n name?: string;\n control?: never;\n validation?: never;\n selectedDateTime: Dayjs | null;\n onDateTimeChange: (dateTime: Dayjs | null) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type DateTimePickerProps =\n | RHFDateTimePickerProps\n | ControlledDateTimePickerProps;\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = (props) => {\n const {\n label,\n minDateTime,\n maxDateTime,\n disabled,\n readOnly,\n inputFormat,\n borderRadius = 10,\n labelPosition = 'outside',\n size = 'small',\n helperText,\n error: errorProp,\n sx,\n className,\n preset,\n adapterLocale,\n clearButtonText,\n cancelButtonText,\n acceptButtonText,\n minutesStep,\n minTime,\n ampm = false,\n viewRenderers,\n timeSteps,\n textFieldProps,\n slotProps: slotPropsProp,\n ...rest\n } = props as ControlledDateTimePickerProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const [validationError, setValidationError] = React.useState<DateTimeValidationError | null>(null);\n\n const validationErrorMessage = useMemo(\n () => getDateTimeValidationMessage(validationError),\n [validationError],\n );\n\n const customLocaleText = useMemo(\n () => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),\n [clearButtonText, cancelButtonText, acceptButtonText],\n );\n\n const theme = useTheme();\n const presetSx = resolvePreset('DateTimePicker', preset, theme);\n\n const mergedSx = [\n ...(presetSx ? [presetSx] : [buildDateTimePickerSx(borderRadius, labelPosition)]),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderPicker = (\n value: Dayjs | null,\n onChange: (date: Dayjs | null) => void,\n onBlur?: () => void,\n inputRef?: React.Ref<any>,\n rhfError?: boolean,\n rhfHelperText?: string,\n ) => {\n const finalError = rhfError || !!validationErrorMessage || !!errorProp;\n const finalHelperText = rhfHelperText || validationErrorMessage || helperText;\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterDayjs}\n adapterLocale={adapterLocale}\n >\n <MuiDateTimePicker\n className={className}\n label={label}\n value={value}\n onChange={onChange}\n onError={setValidationError}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n minutesStep={minutesStep}\n disabled={disabled}\n readOnly={readOnly}\n minTime={minTime}\n format={inputFormat ?? 'DD/MM/YYYY HH:mm'}\n ampm={ampm}\n viewRenderers={viewRenderers}\n timeSteps={timeSteps}\n sx={mergedSx}\n slotProps={{\n ...slotPropsProp,\n textField: {\n fullWidth: true,\n size,\n variant: 'outlined',\n // Consumer overrides visuales / de comportamiento opcionales.\n ...(slotPropsProp?.textField as Record<string, any> | undefined),\n ...textFieldProps,\n // Props críticas al final: ganan al consumer para no romper la\n // integración con RHF ni desactivar el visual de error.\n onBlur,\n inputRef,\n error: !!finalError,\n helperText: finalHelperText,\n } as any,\n }}\n localeText={customLocaleText}\n {...rest}\n />\n </LocalizationProvider>\n );\n };\n\n if ('control' in props && props.control) {\n const { name, control, validation, onValueChange } = props as RHFDateTimePickerProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error: fieldError } }) =>\n renderPicker(\n field.value ?? null,\n (next) => {\n field.onChange(next);\n onValueChange?.(next);\n },\n field.onBlur,\n field.ref,\n !!fieldError,\n fieldError?.message,\n )\n }\n />\n );\n }\n\n const { selectedDateTime, onDateTimeChange } = props as ControlledDateTimePickerProps;\n return renderPicker(selectedDateTime, onDateTimeChange);\n};\n\nexport default DateTimePicker;\n"],"names":["React","MuiDateTimePicker","_a"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Divider as Divider$1 } from "@mui/material";
3
+ function Divider({
4
+ orientation = "horizontal",
5
+ variant = "fullWidth",
6
+ flexItem,
7
+ textAlign,
8
+ children,
9
+ sx,
10
+ className
11
+ }) {
12
+ return /* @__PURE__ */ jsx(
13
+ Divider$1,
14
+ {
15
+ orientation,
16
+ variant,
17
+ flexItem,
18
+ textAlign,
19
+ sx,
20
+ className,
21
+ children
22
+ }
23
+ );
24
+ }
25
+ export {
26
+ Divider as D
27
+ };
28
+ //# sourceMappingURL=Divider-BApcM5CV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider-BApcM5CV.js","sources":["../src/components/Divider/Divider.tsx"],"sourcesContent":["import { type ReactNode } from 'react';\nimport { Divider as MuiDivider } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'fullWidth' | 'inset' | 'middle';\n /** Para usar dentro de contenedores flex (ej. divider vertical). */\n flexItem?: boolean;\n /** Alineación del contenido cuando hay `children` (label centrado, etc.). */\n textAlign?: 'center' | 'left' | 'right';\n /** Contenido opcional (label) en medio del divider. */\n children?: ReactNode;\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/** Separador. Wrapper fino sobre MUI `Divider`. */\nexport function Divider({\n orientation = 'horizontal',\n variant = 'fullWidth',\n flexItem,\n textAlign,\n children,\n sx,\n className,\n}: DividerProps) {\n return (\n <MuiDivider\n orientation={orientation}\n variant={variant}\n flexItem={flexItem}\n textAlign={textAlign}\n sx={sx}\n className={className}\n >\n {children}\n </MuiDivider>\n );\n}\n\nexport default Divider;\n"],"names":["MuiDivider"],"mappings":";;AAkBO,SAAS,QAAQ;AAAA,EACtB,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiB;AACf,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const material = require("@mui/material");
4
+ function Divider({
5
+ orientation = "horizontal",
6
+ variant = "fullWidth",
7
+ flexItem,
8
+ textAlign,
9
+ children,
10
+ sx,
11
+ className
12
+ }) {
13
+ return /* @__PURE__ */ jsxRuntime.jsx(
14
+ material.Divider,
15
+ {
16
+ orientation,
17
+ variant,
18
+ flexItem,
19
+ textAlign,
20
+ sx,
21
+ className,
22
+ children
23
+ }
24
+ );
25
+ }
26
+ exports.Divider = Divider;
27
+ //# sourceMappingURL=Divider-CIY0JK4U.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider-CIY0JK4U.cjs","sources":["../src/components/Divider/Divider.tsx"],"sourcesContent":["import { type ReactNode } from 'react';\nimport { Divider as MuiDivider } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'fullWidth' | 'inset' | 'middle';\n /** Para usar dentro de contenedores flex (ej. divider vertical). */\n flexItem?: boolean;\n /** Alineación del contenido cuando hay `children` (label centrado, etc.). */\n textAlign?: 'center' | 'left' | 'right';\n /** Contenido opcional (label) en medio del divider. */\n children?: ReactNode;\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/** Separador. Wrapper fino sobre MUI `Divider`. */\nexport function Divider({\n orientation = 'horizontal',\n variant = 'fullWidth',\n flexItem,\n textAlign,\n children,\n sx,\n className,\n}: DividerProps) {\n return (\n <MuiDivider\n orientation={orientation}\n variant={variant}\n flexItem={flexItem}\n textAlign={textAlign}\n sx={sx}\n className={className}\n >\n {children}\n </MuiDivider>\n );\n}\n\nexport default Divider;\n"],"names":["jsx","MuiDivider"],"mappings":";;;AAkBO,SAAS,QAAQ;AAAA,EACtB,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiB;AACf,SACEA,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
@@ -34,7 +34,8 @@ const jsxRuntime = require("react/jsx-runtime");
34
34
  const material = require("@mui/material");
35
35
  const styles = require("@mui/material/styles");
36
36
  const reactHookForm = require("react-hook-form");
37
- const formField_sx = require("./formField.sx-CQ1mbk9M.cjs");
37
+ const formField_sx = require("./formField.sx-BAX7KwMR.cjs");
38
+ const tokens = require("./tokens-jaWWNk39.cjs");
38
39
  const resolvePreset = require("./resolvePreset-CxTI6_Ln.cjs");
39
40
  const parseValue = (raw, type) => {
40
41
  if (type !== "number") return raw;
@@ -42,10 +43,10 @@ const parseValue = (raw, type) => {
42
43
  const n = parseFloat(raw);
43
44
  return isNaN(n) ? raw : n;
44
45
  };
45
- const buildSlotProps = (type, min, max, customSlotProps, customInputProps, _labelPosition, readOnly) => {
46
+ const buildSlotProps = (type, min, max, maxLength, customSlotProps, customInputProps, readOnly) => {
46
47
  const numberAttrs = type === "number" ? __spreadValues({ min: min != null ? min : Number.NEGATIVE_INFINITY }, max !== void 0 && { max }) : {};
47
48
  return __spreadProps(__spreadValues({}, customSlotProps), {
48
- htmlInput: __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, customInputProps), customSlotProps == null ? void 0 : customSlotProps.htmlInput), numberAttrs), readOnly && { readOnly: true }),
49
+ htmlInput: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, customInputProps), customSlotProps == null ? void 0 : customSlotProps.htmlInput), numberAttrs), maxLength !== void 0 && { maxLength }), readOnly && { readOnly: true }),
49
50
  // Dejamos que MUI maneje el shrink nativamente (animación inside → up).
50
51
  // El consumidor puede forzar shrink con slotProps.inputLabel.shrink=true si lo necesita.
51
52
  inputLabel: __spreadValues({}, customSlotProps == null ? void 0 : customSlotProps.inputLabel)
@@ -58,8 +59,8 @@ const buildInputSx = (borderRadius, labelPosition) => {
58
59
  labelPosition,
59
60
  extraOutsideSx: {
60
61
  "& .MuiInputBase-input": {
61
- paddingTop: formField_sx.FIELD_INPUT_PADDING_Y,
62
- paddingBottom: formField_sx.FIELD_INPUT_PADDING_Y
62
+ paddingTop: tokens.FIELD_INPUT_PADDING_Y,
63
+ paddingBottom: tokens.FIELD_INPUT_PADDING_Y
63
64
  },
64
65
  // Filled: quitar el padding-top reservado para el label flotante dentro.
65
66
  "& .MuiFilledInput-root": {
@@ -67,7 +68,7 @@ const buildInputSx = (borderRadius, labelPosition) => {
67
68
  borderRadius: `${radius} ${radius} 0 0`
68
69
  },
69
70
  "& .MuiFilledInput-input": {
70
- paddingTop: formField_sx.FIELD_INPUT_PADDING_Y
71
+ paddingTop: tokens.FIELD_INPUT_PADDING_Y
71
72
  },
72
73
  // Standard: quitar el margin-top reservado para el label flotante.
73
74
  "& .MuiInput-root": {
@@ -86,10 +87,12 @@ const Input = (props) => {
86
87
  preset,
87
88
  min,
88
89
  max,
90
+ maxLength,
89
91
  readOnly,
90
92
  inputProps,
91
93
  slotProps,
92
- sx
94
+ sx,
95
+ onBlur
93
96
  } = _a, rest = __objRest(_a, [
94
97
  "type",
95
98
  "variant",
@@ -99,10 +102,12 @@ const Input = (props) => {
99
102
  "preset",
100
103
  "min",
101
104
  "max",
105
+ "maxLength",
102
106
  "readOnly",
103
107
  "inputProps",
104
108
  "slotProps",
105
- "sx"
109
+ "sx",
110
+ "onBlur"
106
111
  ]);
107
112
  const theme = styles.useTheme();
108
113
  const presetSx = resolvePreset.resolvePreset("Input", preset, theme);
@@ -110,18 +115,17 @@ const Input = (props) => {
110
115
  type,
111
116
  min,
112
117
  max,
118
+ maxLength,
113
119
  slotProps,
114
120
  inputProps,
115
- labelPosition,
116
121
  readOnly
117
122
  );
118
123
  const mergedSx = [
119
- buildInputSx(borderRadius, labelPosition),
120
- ...presetSx ? [presetSx] : [],
121
- ...Array.isArray(sx) ? sx : [sx]
124
+ ...presetSx ? [presetSx] : [buildInputSx(borderRadius, labelPosition)],
125
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
122
126
  ];
123
127
  if ("control" in props && props.control) {
124
- const { name, control, validation } = props;
128
+ const { name, control, validation, onValueChange } = props;
125
129
  return /* @__PURE__ */ jsxRuntime.jsx(
126
130
  reactHookForm.Controller,
127
131
  {
@@ -137,8 +141,15 @@ const Input = (props) => {
137
141
  }, rest), {
138
142
  name: field.name,
139
143
  value: (_a2 = field.value) != null ? _a2 : "",
140
- onChange: (e) => field.onChange(parseValue(e.target.value, type)),
141
- onBlur: field.onBlur,
144
+ onChange: (e) => {
145
+ const parsed = parseValue(e.target.value, type);
146
+ field.onChange(parsed);
147
+ onValueChange == null ? void 0 : onValueChange(parsed);
148
+ },
149
+ onBlur: (e) => {
150
+ field.onBlur();
151
+ onBlur == null ? void 0 : onBlur(e);
152
+ },
142
153
  inputRef: field.ref,
143
154
  type,
144
155
  variant,
@@ -161,6 +172,7 @@ const Input = (props) => {
161
172
  }, rest), {
162
173
  value: value != null ? value : "",
163
174
  onChange: (e) => onChange(parseValue(e.target.value, type)),
175
+ onBlur,
164
176
  type,
165
177
  variant,
166
178
  size,
@@ -170,4 +182,4 @@ const Input = (props) => {
170
182
  );
171
183
  };
172
184
  exports.Input = Input;
173
- //# sourceMappingURL=Input-DI0jfq5X.cjs.map
185
+ //# sourceMappingURL=Input-CScC87J5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-CScC87J5.cjs","sources":["../src/components/Input/Input.helpers.ts","../src/components/Input/Input.sx.ts","../src/components/Input/Input.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\nimport type { TextFieldProps } from '@mui/material';\nimport type { InputType } from './Input';\n\n/**\n * Convierte el valor raw del evento al tipo apropiado.\n * Para type=\"number\" intenta parsear a número; si falla, devuelve el raw\n * (permite estados intermedios como \"\" o \"-\" mientras el usuario tipea).\n */\nexport const parseValue = (raw: string, type: InputType): string | number => {\n if (type !== 'number') return raw;\n if (raw === '' || raw === '-') return raw;\n const n = parseFloat(raw);\n return isNaN(n) ? raw : n;\n};\n\n/**\n * Construye los slotProps del TextField consolidando htmlInput + inputLabel.\n * Maneja los atributos min/max cuando type=\"number\", maxLength y readOnly.\n */\nexport const buildSlotProps = (\n type: InputType,\n min: number | undefined,\n max: number | undefined,\n maxLength: number | undefined,\n customSlotProps: TextFieldProps['slotProps'],\n customInputProps: InputHTMLAttributes<HTMLInputElement> | undefined,\n readOnly?: boolean,\n): TextFieldProps['slotProps'] => {\n const numberAttrs =\n type === 'number'\n ? { min: min ?? Number.NEGATIVE_INFINITY, ...(max !== undefined && { max }) }\n : {};\n\n return {\n ...customSlotProps,\n htmlInput: {\n ...customInputProps,\n ...(customSlotProps as any)?.htmlInput,\n ...numberAttrs,\n ...(maxLength !== undefined && { maxLength }),\n ...(readOnly && { readOnly: true }),\n },\n // Dejamos que MUI maneje el shrink nativamente (animación inside → up).\n // El consumidor puede forzar shrink con slotProps.inputLabel.shrink=true si lo necesita.\n inputLabel: {\n ...(customSlotProps as any)?.inputLabel,\n },\n };\n};\n","import type { TextFieldProps } from '@mui/material';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport { FIELD_INPUT_PADDING_Y } from '../../theme/tokens';\nimport type { LabelPosition } from './Input';\n\n/**\n * Builder de sx para el Input. Usa el builder compartido\n * `buildFormFieldSx` y añade overrides específicos de TextField\n * (padding del input base, filled, standard).\n */\nexport const buildInputSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): TextFieldProps['sx'] => {\n const radius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n return buildFormFieldSx({\n borderRadius,\n labelPosition,\n extraOutsideSx: {\n '& .MuiInputBase-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n\n // Filled: quitar el padding-top reservado para el label flotante dentro.\n '& .MuiFilledInput-root': {\n paddingTop: 0,\n borderRadius: `${radius} ${radius} 0 0`,\n },\n '& .MuiFilledInput-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n },\n\n // Standard: quitar el margin-top reservado para el label flotante.\n '& .MuiInput-root': {\n marginTop: 0,\n },\n },\n });\n};\n","import { TextField, type TextFieldProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { parseValue, buildSlotProps } from './Input.helpers';\nimport { buildInputSx } from './Input.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport type InputType =\n | 'text' | 'number' | 'email' | 'password' | 'tel'\n | 'url' | 'search' | 'date' | 'datetime-local'\n | 'month' | 'week' | 'time' | 'color';\n\nexport type LabelPosition = 'outside' | 'floating';\n\n// ── Props base (todo lo común entre RHF y controlado) ────────────────────\nexport interface BaseInputProps\n extends Omit<TextFieldProps, 'value' | 'onChange' | 'type'> {\n type?: InputType;\n min?: number;\n max?: number;\n maxLength?: number;\n /** Border radius del input. Default: 10 */\n borderRadius?: number | string;\n /** \"outside\" = label arriba del campo (default). \"floating\" = label clásico MUI dentro del borde */\n labelPosition?: LabelPosition;\n readOnly?: boolean;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Input`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFInputProps extends BaseInputProps {\n name: string;\n // `any` plano (no `Control<any>`): RHF tipa `Control<T>` con generics en\n // posiciones tanto contravariantes como covariantes (ej. `_subjects.state`).\n // Cuando el componente o su uso involucra generics adicionales, TS se\n // confunde narroweando el discriminated union y `Control<any>` no logra\n // absorber `Control<MyForm>` en la comparación estructural profunda. El\n // `any` plano elimina ese ruido. RHF adentro sigue teniendo sus tipos\n // fuertes — solo degradamos la superficie del prop del componente.\n control: any;\n validation?: RegisterOptions;\n /**\n * Side-effect que corre después de que RHF actualiza el form state.\n * Útil para cascadas entre campos (ej. reset de municipio al cambiar\n * departamento). NO reemplaza al handler de RHF.\n */\n onValueChange?: (value: string | number) => void;\n value?: never;\n onChange?: never;\n}\n\nexport interface ControlledInputProps extends BaseInputProps {\n name?: string;\n control?: never;\n validation?: never;\n value: string | number;\n onChange: (value: string | number) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type InputProps = RHFInputProps | ControlledInputProps;\n\nexport const Input: React.FC<InputProps> = (props) => {\n const {\n type = 'text',\n variant = 'outlined',\n size = 'small',\n borderRadius = 10,\n labelPosition = 'outside',\n preset,\n min,\n max,\n maxLength,\n readOnly,\n inputProps,\n slotProps,\n sx,\n onBlur,\n ...rest\n } = props as ControlledInputProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('Input', preset, theme);\n\n const finalSlotProps = buildSlotProps(\n type,\n min,\n max,\n maxLength,\n slotProps,\n inputProps,\n readOnly,\n );\n const mergedSx = [\n ...(presetSx ? [presetSx] : [buildInputSx(borderRadius, labelPosition)]),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n if ('control' in props && props.control) {\n const { name, control, validation, onValueChange } = props as RHFInputProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error } }) => (\n <TextField\n fullWidth\n {...rest}\n name={field.name}\n value={field.value ?? ''}\n onChange={(e) => {\n const parsed = parseValue(e.target.value, type);\n field.onChange(parsed);\n onValueChange?.(parsed);\n }}\n onBlur={(e) => {\n field.onBlur();\n onBlur?.(e);\n }}\n inputRef={field.ref}\n type={type}\n variant={variant}\n size={size}\n slotProps={finalSlotProps}\n sx={mergedSx}\n error={!!error || rest.error}\n helperText={error?.message ?? rest.helperText}\n />\n )}\n />\n );\n }\n\n const { value, onChange } = props as ControlledInputProps;\n return (\n <TextField\n fullWidth\n {...rest}\n value={value ?? ''}\n onChange={(e) => onChange(parseValue(e.target.value, type))}\n onBlur={onBlur}\n type={type}\n variant={variant}\n size={size}\n slotProps={finalSlotProps}\n sx={mergedSx}\n />\n );\n};\n\nexport default Input;\n"],"names":["buildFormFieldSx","FIELD_INPUT_PADDING_Y","useTheme","resolvePreset","jsx","Controller","TextField","_a"],"mappings":"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"}
@@ -33,7 +33,8 @@ import { jsx } from "react/jsx-runtime";
33
33
  import { TextField } from "@mui/material";
34
34
  import { useTheme } from "@mui/material/styles";
35
35
  import { Controller } from "react-hook-form";
36
- import { b as buildFormFieldSx, F as FIELD_INPUT_PADDING_Y } from "./formField.sx-DfVbMe0V.js";
36
+ import { b as buildFormFieldSx } from "./formField.sx-8_QRnKxv.js";
37
+ import { F as FIELD_INPUT_PADDING_Y } from "./tokens-BRrcP_p_.js";
37
38
  import { r as resolvePreset } from "./resolvePreset-K6_BfWHD.js";
38
39
  const parseValue = (raw, type) => {
39
40
  if (type !== "number") return raw;
@@ -41,10 +42,10 @@ const parseValue = (raw, type) => {
41
42
  const n = parseFloat(raw);
42
43
  return isNaN(n) ? raw : n;
43
44
  };
44
- const buildSlotProps = (type, min, max, customSlotProps, customInputProps, _labelPosition, readOnly) => {
45
+ const buildSlotProps = (type, min, max, maxLength, customSlotProps, customInputProps, readOnly) => {
45
46
  const numberAttrs = type === "number" ? __spreadValues({ min: min != null ? min : Number.NEGATIVE_INFINITY }, max !== void 0 && { max }) : {};
46
47
  return __spreadProps(__spreadValues({}, customSlotProps), {
47
- htmlInput: __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, customInputProps), customSlotProps == null ? void 0 : customSlotProps.htmlInput), numberAttrs), readOnly && { readOnly: true }),
48
+ htmlInput: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, customInputProps), customSlotProps == null ? void 0 : customSlotProps.htmlInput), numberAttrs), maxLength !== void 0 && { maxLength }), readOnly && { readOnly: true }),
48
49
  // Dejamos que MUI maneje el shrink nativamente (animación inside → up).
49
50
  // El consumidor puede forzar shrink con slotProps.inputLabel.shrink=true si lo necesita.
50
51
  inputLabel: __spreadValues({}, customSlotProps == null ? void 0 : customSlotProps.inputLabel)
@@ -85,10 +86,12 @@ const Input = (props) => {
85
86
  preset,
86
87
  min,
87
88
  max,
89
+ maxLength,
88
90
  readOnly,
89
91
  inputProps,
90
92
  slotProps,
91
- sx
93
+ sx,
94
+ onBlur
92
95
  } = _a, rest = __objRest(_a, [
93
96
  "type",
94
97
  "variant",
@@ -98,10 +101,12 @@ const Input = (props) => {
98
101
  "preset",
99
102
  "min",
100
103
  "max",
104
+ "maxLength",
101
105
  "readOnly",
102
106
  "inputProps",
103
107
  "slotProps",
104
- "sx"
108
+ "sx",
109
+ "onBlur"
105
110
  ]);
106
111
  const theme = useTheme();
107
112
  const presetSx = resolvePreset("Input", preset, theme);
@@ -109,18 +114,17 @@ const Input = (props) => {
109
114
  type,
110
115
  min,
111
116
  max,
117
+ maxLength,
112
118
  slotProps,
113
119
  inputProps,
114
- labelPosition,
115
120
  readOnly
116
121
  );
117
122
  const mergedSx = [
118
- buildInputSx(borderRadius, labelPosition),
119
- ...presetSx ? [presetSx] : [],
120
- ...Array.isArray(sx) ? sx : [sx]
123
+ ...presetSx ? [presetSx] : [buildInputSx(borderRadius, labelPosition)],
124
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
121
125
  ];
122
126
  if ("control" in props && props.control) {
123
- const { name, control, validation } = props;
127
+ const { name, control, validation, onValueChange } = props;
124
128
  return /* @__PURE__ */ jsx(
125
129
  Controller,
126
130
  {
@@ -136,8 +140,15 @@ const Input = (props) => {
136
140
  }, rest), {
137
141
  name: field.name,
138
142
  value: (_a2 = field.value) != null ? _a2 : "",
139
- onChange: (e) => field.onChange(parseValue(e.target.value, type)),
140
- onBlur: field.onBlur,
143
+ onChange: (e) => {
144
+ const parsed = parseValue(e.target.value, type);
145
+ field.onChange(parsed);
146
+ onValueChange == null ? void 0 : onValueChange(parsed);
147
+ },
148
+ onBlur: (e) => {
149
+ field.onBlur();
150
+ onBlur == null ? void 0 : onBlur(e);
151
+ },
141
152
  inputRef: field.ref,
142
153
  type,
143
154
  variant,
@@ -160,6 +171,7 @@ const Input = (props) => {
160
171
  }, rest), {
161
172
  value: value != null ? value : "",
162
173
  onChange: (e) => onChange(parseValue(e.target.value, type)),
174
+ onBlur,
163
175
  type,
164
176
  variant,
165
177
  size,
@@ -171,4 +183,4 @@ const Input = (props) => {
171
183
  export {
172
184
  Input as I
173
185
  };
174
- //# sourceMappingURL=Input-Cp911l23.js.map
186
+ //# sourceMappingURL=Input-DP_fKl38.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-DP_fKl38.js","sources":["../src/components/Input/Input.helpers.ts","../src/components/Input/Input.sx.ts","../src/components/Input/Input.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\nimport type { TextFieldProps } from '@mui/material';\nimport type { InputType } from './Input';\n\n/**\n * Convierte el valor raw del evento al tipo apropiado.\n * Para type=\"number\" intenta parsear a número; si falla, devuelve el raw\n * (permite estados intermedios como \"\" o \"-\" mientras el usuario tipea).\n */\nexport const parseValue = (raw: string, type: InputType): string | number => {\n if (type !== 'number') return raw;\n if (raw === '' || raw === '-') return raw;\n const n = parseFloat(raw);\n return isNaN(n) ? raw : n;\n};\n\n/**\n * Construye los slotProps del TextField consolidando htmlInput + inputLabel.\n * Maneja los atributos min/max cuando type=\"number\", maxLength y readOnly.\n */\nexport const buildSlotProps = (\n type: InputType,\n min: number | undefined,\n max: number | undefined,\n maxLength: number | undefined,\n customSlotProps: TextFieldProps['slotProps'],\n customInputProps: InputHTMLAttributes<HTMLInputElement> | undefined,\n readOnly?: boolean,\n): TextFieldProps['slotProps'] => {\n const numberAttrs =\n type === 'number'\n ? { min: min ?? Number.NEGATIVE_INFINITY, ...(max !== undefined && { max }) }\n : {};\n\n return {\n ...customSlotProps,\n htmlInput: {\n ...customInputProps,\n ...(customSlotProps as any)?.htmlInput,\n ...numberAttrs,\n ...(maxLength !== undefined && { maxLength }),\n ...(readOnly && { readOnly: true }),\n },\n // Dejamos que MUI maneje el shrink nativamente (animación inside → up).\n // El consumidor puede forzar shrink con slotProps.inputLabel.shrink=true si lo necesita.\n inputLabel: {\n ...(customSlotProps as any)?.inputLabel,\n },\n };\n};\n","import type { TextFieldProps } from '@mui/material';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport { FIELD_INPUT_PADDING_Y } from '../../theme/tokens';\nimport type { LabelPosition } from './Input';\n\n/**\n * Builder de sx para el Input. Usa el builder compartido\n * `buildFormFieldSx` y añade overrides específicos de TextField\n * (padding del input base, filled, standard).\n */\nexport const buildInputSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): TextFieldProps['sx'] => {\n const radius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n return buildFormFieldSx({\n borderRadius,\n labelPosition,\n extraOutsideSx: {\n '& .MuiInputBase-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n\n // Filled: quitar el padding-top reservado para el label flotante dentro.\n '& .MuiFilledInput-root': {\n paddingTop: 0,\n borderRadius: `${radius} ${radius} 0 0`,\n },\n '& .MuiFilledInput-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n },\n\n // Standard: quitar el margin-top reservado para el label flotante.\n '& .MuiInput-root': {\n marginTop: 0,\n },\n },\n });\n};\n","import { TextField, type TextFieldProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { parseValue, buildSlotProps } from './Input.helpers';\nimport { buildInputSx } from './Input.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport type InputType =\n | 'text' | 'number' | 'email' | 'password' | 'tel'\n | 'url' | 'search' | 'date' | 'datetime-local'\n | 'month' | 'week' | 'time' | 'color';\n\nexport type LabelPosition = 'outside' | 'floating';\n\n// ── Props base (todo lo común entre RHF y controlado) ────────────────────\nexport interface BaseInputProps\n extends Omit<TextFieldProps, 'value' | 'onChange' | 'type'> {\n type?: InputType;\n min?: number;\n max?: number;\n maxLength?: number;\n /** Border radius del input. Default: 10 */\n borderRadius?: number | string;\n /** \"outside\" = label arriba del campo (default). \"floating\" = label clásico MUI dentro del borde */\n labelPosition?: LabelPosition;\n readOnly?: boolean;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Input`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFInputProps extends BaseInputProps {\n name: string;\n // `any` plano (no `Control<any>`): RHF tipa `Control<T>` con generics en\n // posiciones tanto contravariantes como covariantes (ej. `_subjects.state`).\n // Cuando el componente o su uso involucra generics adicionales, TS se\n // confunde narroweando el discriminated union y `Control<any>` no logra\n // absorber `Control<MyForm>` en la comparación estructural profunda. El\n // `any` plano elimina ese ruido. RHF adentro sigue teniendo sus tipos\n // fuertes — solo degradamos la superficie del prop del componente.\n control: any;\n validation?: RegisterOptions;\n /**\n * Side-effect que corre después de que RHF actualiza el form state.\n * Útil para cascadas entre campos (ej. reset de municipio al cambiar\n * departamento). NO reemplaza al handler de RHF.\n */\n onValueChange?: (value: string | number) => void;\n value?: never;\n onChange?: never;\n}\n\nexport interface ControlledInputProps extends BaseInputProps {\n name?: string;\n control?: never;\n validation?: never;\n value: string | number;\n onChange: (value: string | number) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type InputProps = RHFInputProps | ControlledInputProps;\n\nexport const Input: React.FC<InputProps> = (props) => {\n const {\n type = 'text',\n variant = 'outlined',\n size = 'small',\n borderRadius = 10,\n labelPosition = 'outside',\n preset,\n min,\n max,\n maxLength,\n readOnly,\n inputProps,\n slotProps,\n sx,\n onBlur,\n ...rest\n } = props as ControlledInputProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('Input', preset, theme);\n\n const finalSlotProps = buildSlotProps(\n type,\n min,\n max,\n maxLength,\n slotProps,\n inputProps,\n readOnly,\n );\n const mergedSx = [\n ...(presetSx ? [presetSx] : [buildInputSx(borderRadius, labelPosition)]),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n if ('control' in props && props.control) {\n const { name, control, validation, onValueChange } = props as RHFInputProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error } }) => (\n <TextField\n fullWidth\n {...rest}\n name={field.name}\n value={field.value ?? ''}\n onChange={(e) => {\n const parsed = parseValue(e.target.value, type);\n field.onChange(parsed);\n onValueChange?.(parsed);\n }}\n onBlur={(e) => {\n field.onBlur();\n onBlur?.(e);\n }}\n inputRef={field.ref}\n type={type}\n variant={variant}\n size={size}\n slotProps={finalSlotProps}\n sx={mergedSx}\n error={!!error || rest.error}\n helperText={error?.message ?? rest.helperText}\n />\n )}\n />\n );\n }\n\n const { value, onChange } = props as ControlledInputProps;\n return (\n <TextField\n fullWidth\n {...rest}\n value={value ?? ''}\n onChange={(e) => onChange(parseValue(e.target.value, type))}\n onBlur={onBlur}\n type={type}\n variant={variant}\n size={size}\n slotProps={finalSlotProps}\n sx={mergedSx}\n />\n );\n};\n\nexport default Input;\n"],"names":["_a"],"mappings":"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"}