@soyfri/shared-library 2.0.0-beta.3 → 2.0.0-beta.31

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 (359) hide show
  1. package/Alert-B3SMPD1s.cjs +31 -0
  2. package/Alert-B3SMPD1s.cjs.map +1 -0
  3. package/Alert-YsPScpSE.js +32 -0
  4. package/Alert-YsPScpSE.js.map +1 -0
  5. package/Autocomplete-C_lW1VER.js +337 -0
  6. package/Autocomplete-C_lW1VER.js.map +1 -0
  7. package/Autocomplete-CejWztBY.cjs +336 -0
  8. package/Autocomplete-CejWztBY.cjs.map +1 -0
  9. package/Avatar-Dw5rzayR.cjs +166 -0
  10. package/Avatar-Dw5rzayR.cjs.map +1 -0
  11. package/Avatar-H8akSege.js +167 -0
  12. package/Avatar-H8akSege.js.map +1 -0
  13. package/Button-C17mExpd.cjs.map +1 -1
  14. package/Button-UkkP-bNw.js.map +1 -1
  15. package/Card-DYKGY-NG.js +116 -0
  16. package/Card-DYKGY-NG.js.map +1 -0
  17. package/Card-Dr1-ATRY.cjs +115 -0
  18. package/Card-Dr1-ATRY.cjs.map +1 -0
  19. package/Checkbox-BCqMFWt4.cjs +187 -0
  20. package/Checkbox-BCqMFWt4.cjs.map +1 -0
  21. package/Checkbox-gB5YKkVo.js +188 -0
  22. package/Checkbox-gB5YKkVo.js.map +1 -0
  23. package/{components/DateRangePicker/DateRangePicker.js → Chip-OPYQ1uQ_.js} +33 -35
  24. package/Chip-OPYQ1uQ_.js.map +1 -0
  25. package/{components/DateRangePicker/DateRangePicker.cjs → Chip-qoJLDiva.cjs} +33 -36
  26. package/Chip-qoJLDiva.cjs.map +1 -0
  27. package/DatePicker-_IGWc3I5.js +178 -0
  28. package/DatePicker-_IGWc3I5.js.map +1 -0
  29. package/DatePicker-t7uDTZMl.cjs +177 -0
  30. package/DatePicker-t7uDTZMl.cjs.map +1 -0
  31. package/DateTimePicker-BxQyjTCY.cjs +229 -0
  32. package/DateTimePicker-BxQyjTCY.cjs.map +1 -0
  33. package/DateTimePicker-CrmWav_j.js +230 -0
  34. package/DateTimePicker-CrmWav_j.js.map +1 -0
  35. package/Input-CScC87J5.cjs +185 -0
  36. package/Input-CScC87J5.cjs.map +1 -0
  37. package/Input-DP_fKl38.js +186 -0
  38. package/Input-DP_fKl38.js.map +1 -0
  39. package/Modal-BFpX5AFV.js +347 -0
  40. package/Modal-BFpX5AFV.js.map +1 -0
  41. package/Modal-CkpuI8ns.cjs +346 -0
  42. package/Modal-CkpuI8ns.cjs.map +1 -0
  43. package/RadioGroup-Dd0rHXSX.cjs +202 -0
  44. package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  45. package/RadioGroup-bO-ahP9T.js +203 -0
  46. package/RadioGroup-bO-ahP9T.js.map +1 -0
  47. package/Select-BY5Y0qZ1.js +376 -0
  48. package/Select-BY5Y0qZ1.js.map +1 -0
  49. package/Select-CURrHSyl.cjs +375 -0
  50. package/Select-CURrHSyl.cjs.map +1 -0
  51. package/Spinner-B6sThC1p.js +74 -0
  52. package/Spinner-B6sThC1p.js.map +1 -0
  53. package/Spinner-D7qRmNS9.cjs +73 -0
  54. package/Spinner-D7qRmNS9.cjs.map +1 -0
  55. package/Stat-BUcFCGrz.cjs +83 -0
  56. package/Stat-BUcFCGrz.cjs.map +1 -0
  57. package/Stat-C06A_izS.js +84 -0
  58. package/Stat-C06A_izS.js.map +1 -0
  59. package/StatusMessage-B3nXpuRl.cjs +88 -0
  60. package/StatusMessage-B3nXpuRl.cjs.map +1 -0
  61. package/StatusMessage-D0WgSBx7.js +89 -0
  62. package/StatusMessage-D0WgSBx7.js.map +1 -0
  63. package/Step-BArsou1V.js +301 -0
  64. package/Step-BArsou1V.js.map +1 -0
  65. package/Step-Nd7SJbRZ.cjs +300 -0
  66. package/Step-Nd7SJbRZ.cjs.map +1 -0
  67. package/Switch-CQFOopYy.cjs +182 -0
  68. package/Switch-CQFOopYy.cjs.map +1 -0
  69. package/Switch-D72dpkH2.js +183 -0
  70. package/Switch-D72dpkH2.js.map +1 -0
  71. package/Tab-BbP8jBcK.cjs +110 -0
  72. package/Tab-BbP8jBcK.cjs.map +1 -0
  73. package/Tab-BxSxKJsP.js +111 -0
  74. package/Tab-BxSxKJsP.js.map +1 -0
  75. package/Table-C2LbW0B1.js +531 -0
  76. package/Table-C2LbW0B1.js.map +1 -0
  77. package/Table-C4OM6rrC.cjs +530 -0
  78. package/Table-C4OM6rrC.cjs.map +1 -0
  79. package/components/ActionMenu/ActionMenu.cjs +52 -52
  80. package/components/ActionMenu/ActionMenu.cjs.map +1 -1
  81. package/components/ActionMenu/ActionMenu.d.ts +20 -36
  82. package/components/ActionMenu/ActionMenu.js +55 -55
  83. package/components/ActionMenu/ActionMenu.js.map +1 -1
  84. package/components/ActionMenu/index.d.ts +2 -2
  85. package/components/Alert/Alert.cjs +6 -0
  86. package/components/Alert/Alert.cjs.map +1 -0
  87. package/components/Alert/Alert.d.ts +31 -0
  88. package/components/Alert/Alert.js +6 -0
  89. package/components/Alert/Alert.js.map +1 -0
  90. package/components/Alert/index.d.ts +2 -0
  91. package/components/Alert.d.ts +6 -0
  92. package/components/AppBar/AppBar.cjs +3 -220
  93. package/components/AppBar/AppBar.cjs.map +1 -1
  94. package/components/AppBar/AppBar.d.ts +6 -6
  95. package/components/AppBar/AppBar.js +6 -223
  96. package/components/AppBar/AppBar.js.map +1 -1
  97. package/components/AppBar/index.d.ts +0 -6
  98. package/components/Autocomplete/Autocomplete.cjs +4 -311
  99. package/components/Autocomplete/Autocomplete.cjs.map +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 +4 -311
  103. package/components/Autocomplete/Autocomplete.js.map +1 -1
  104. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  105. package/components/Autocomplete/index.d.ts +1 -1
  106. package/components/Avatar/Avatar.cjs +2 -160
  107. package/components/Avatar/Avatar.cjs.map +1 -1
  108. package/components/Avatar/Avatar.d.ts +16 -1
  109. package/components/Avatar/Avatar.js +2 -160
  110. package/components/Avatar/Avatar.js.map +1 -1
  111. package/components/Avatar/index.d.ts +1 -0
  112. package/components/Button/Button.d.ts +5 -5
  113. package/components/Button/index.d.ts +1 -0
  114. package/components/Card/Card.cjs +4 -184
  115. package/components/Card/Card.cjs.map +1 -1
  116. package/components/Card/Card.d.ts +21 -50
  117. package/components/Card/Card.js +4 -184
  118. package/components/Card/Card.js.map +1 -1
  119. package/components/Card/Card.sx.d.ts +3 -6
  120. package/components/Card/index.d.ts +1 -1
  121. package/components/Checkbox/Checkbox.cjs +6 -0
  122. package/components/Checkbox/Checkbox.cjs.map +1 -0
  123. package/components/Checkbox/Checkbox.d.ts +55 -0
  124. package/components/Checkbox/Checkbox.js +6 -0
  125. package/components/Checkbox/Checkbox.js.map +1 -0
  126. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  127. package/components/Checkbox/index.d.ts +2 -0
  128. package/components/Checkbox.d.ts +6 -0
  129. package/components/Chip/Chip.cjs +4 -72
  130. package/components/Chip/Chip.cjs.map +1 -1
  131. package/components/Chip/Chip.js +3 -71
  132. package/components/Chip/Chip.js.map +1 -1
  133. package/components/Chip/index.d.ts +2 -1
  134. package/components/Chip.d.ts +4 -0
  135. package/components/Column/Column.cjs +1 -1
  136. package/components/Column/Column.cjs.map +1 -1
  137. package/components/Column/Column.d.ts +1 -1
  138. package/components/Column/Column.js +1 -1
  139. package/components/Column/Column.js.map +1 -1
  140. package/components/Column/index.d.ts +1 -0
  141. package/components/DatePicker/DatePicker.cjs +3 -200
  142. package/components/DatePicker/DatePicker.cjs.map +1 -1
  143. package/components/DatePicker/DatePicker.d.ts +1 -13
  144. package/components/DatePicker/DatePicker.js +3 -200
  145. package/components/DatePicker/DatePicker.js.map +1 -1
  146. package/components/DatePicker/index.d.ts +1 -1
  147. package/components/DateTimePicker/DateTimePicker.cjs +3 -219
  148. package/components/DateTimePicker/DateTimePicker.cjs.map +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 +3 -219
  153. package/components/DateTimePicker/DateTimePicker.js.map +1 -1
  154. package/components/DateTimePicker/index.d.ts +1 -1
  155. package/components/Drawer/Drawer.cjs +25 -24
  156. package/components/Drawer/Drawer.cjs.map +1 -1
  157. package/components/Drawer/Drawer.d.ts +8 -1
  158. package/components/Drawer/Drawer.js +26 -25
  159. package/components/Drawer/Drawer.js.map +1 -1
  160. package/components/Drawer/DrawerItem.d.ts +6 -1
  161. package/components/Gallery/Gallery.cjs +154 -79
  162. package/components/Gallery/Gallery.cjs.map +1 -1
  163. package/components/Gallery/Gallery.d.ts +25 -9
  164. package/components/Gallery/Gallery.js +154 -79
  165. package/components/Gallery/Gallery.js.map +1 -1
  166. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  167. package/components/Gallery/GalleryMain.d.ts +3 -7
  168. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  169. package/components/Gallery/index.d.ts +2 -1
  170. package/components/Gallery.d.ts +4 -0
  171. package/components/Icon/Icon.cjs +6 -8
  172. package/components/Icon/Icon.cjs.map +1 -1
  173. package/components/Icon/Icon.d.ts +11 -17
  174. package/components/Icon/Icon.js +6 -8
  175. package/components/Icon/Icon.js.map +1 -1
  176. package/components/Icon/index.d.ts +2 -1
  177. package/components/Icon.d.ts +4 -0
  178. package/components/Input/Input.cjs +3 -172
  179. package/components/Input/Input.cjs.map +1 -1
  180. package/components/Input/Input.d.ts +9 -2
  181. package/components/Input/Input.definitions.d.ts +1 -0
  182. package/components/Input/Input.helpers.d.ts +3 -3
  183. package/components/Input/Input.js +3 -172
  184. package/components/Input/Input.js.map +1 -1
  185. package/components/Input/index.d.ts +1 -1
  186. package/components/InputGroup/InputGroup.cjs +23 -22
  187. package/components/InputGroup/InputGroup.cjs.map +1 -1
  188. package/components/InputGroup/InputGroup.d.ts +4 -4
  189. package/components/InputGroup/InputGroup.js +22 -21
  190. package/components/InputGroup/InputGroup.js.map +1 -1
  191. package/components/InputGroup/index.d.ts +2 -1
  192. package/components/InputGroup.d.ts +4 -0
  193. package/components/Modal/Modal.cjs +7 -317
  194. package/components/Modal/Modal.cjs.map +1 -1
  195. package/components/Modal/Modal.d.ts +20 -5
  196. package/components/Modal/Modal.js +6 -316
  197. package/components/Modal/Modal.js.map +1 -1
  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 -1
  202. package/components/Modal.d.ts +4 -0
  203. package/components/RadioGroup/RadioGroup.cjs +6 -0
  204. package/components/RadioGroup/RadioGroup.cjs.map +1 -0
  205. package/components/RadioGroup/RadioGroup.d.ts +59 -0
  206. package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  207. package/components/RadioGroup/RadioGroup.js +6 -0
  208. package/components/RadioGroup/RadioGroup.js.map +1 -0
  209. package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  210. package/components/RadioGroup/index.d.ts +2 -0
  211. package/components/RadioGroup.d.ts +6 -0
  212. package/components/Select/Select.cjs +4 -445
  213. package/components/Select/Select.cjs.map +1 -1
  214. package/components/Select/Select.d.ts +37 -18
  215. package/components/Select/Select.helpers.d.ts +5 -19
  216. package/components/Select/Select.js +4 -445
  217. package/components/Select/Select.js.map +1 -1
  218. package/components/Select/index.d.ts +1 -1
  219. package/components/Spinner/Spinner.cjs +6 -0
  220. package/components/Spinner/Spinner.cjs.map +1 -0
  221. package/components/Spinner/Spinner.d.ts +26 -0
  222. package/components/Spinner/Spinner.js +6 -0
  223. package/components/Spinner/Spinner.js.map +1 -0
  224. package/components/Spinner/index.d.ts +2 -0
  225. package/components/Spinner.d.ts +6 -0
  226. package/components/Stat/Stat.cjs +4 -83
  227. package/components/Stat/Stat.cjs.map +1 -1
  228. package/components/Stat/Stat.js +3 -82
  229. package/components/Stat/Stat.js.map +1 -1
  230. package/components/Stat/index.d.ts +2 -1
  231. package/components/Stat.d.ts +4 -0
  232. package/components/StatusMessage/StatusMessage.cjs +4 -77
  233. package/components/StatusMessage/StatusMessage.cjs.map +1 -1
  234. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  235. package/components/StatusMessage/StatusMessage.js +3 -76
  236. package/components/StatusMessage/StatusMessage.js.map +1 -1
  237. package/components/StatusMessage/index.d.ts +2 -1
  238. package/components/StatusMessage.d.ts +4 -0
  239. package/components/Stepper/Stepper.cjs +8 -47
  240. package/components/Stepper/Stepper.cjs.map +1 -1
  241. package/components/Stepper/Stepper.d.ts +9 -8
  242. package/components/Stepper/Stepper.js +7 -46
  243. package/components/Stepper/Stepper.js.map +1 -1
  244. package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +29 -23
  245. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  246. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  247. package/components/Stepper/index.d.ts +6 -2
  248. package/components/Stepper.d.ts +4 -0
  249. package/components/Switch/Switch.cjs +6 -0
  250. package/components/Switch/Switch.cjs.map +1 -0
  251. package/components/Switch/Switch.d.ts +48 -0
  252. package/components/Switch/Switch.definitions.d.ts +7 -0
  253. package/components/Switch/Switch.js +6 -0
  254. package/components/Switch/Switch.js.map +1 -0
  255. package/components/Switch/Switch.sx.d.ts +22 -0
  256. package/components/Switch/Switch.types.d.ts +1 -0
  257. package/components/Switch/index.d.ts +2 -0
  258. package/components/Switch.d.ts +6 -0
  259. package/components/Table/Table.cjs +2 -528
  260. package/components/Table/Table.cjs.map +1 -1
  261. package/components/Table/Table.d.ts +1 -1
  262. package/components/Table/Table.js +2 -528
  263. package/components/Table/Table.js.map +1 -1
  264. package/components/Tabs/Tabs.cjs +5 -94
  265. package/components/Tabs/Tabs.cjs.map +1 -1
  266. package/components/Tabs/Tabs.d.ts +21 -16
  267. package/components/Tabs/Tabs.js +4 -93
  268. package/components/Tabs/Tabs.js.map +1 -1
  269. package/components/Tabs/index.d.ts +4 -2
  270. package/components/Tabs.d.ts +4 -0
  271. package/components/Timeline/Timeline.cjs +3 -2
  272. package/components/Timeline/Timeline.cjs.map +1 -1
  273. package/components/Timeline/Timeline.d.ts +4 -8
  274. package/components/Timeline/Timeline.js +3 -2
  275. package/components/Timeline/Timeline.js.map +1 -1
  276. package/components/Timeline/index.d.ts +4 -2
  277. package/components/Timeline.d.ts +4 -0
  278. package/components/_shared/mergeSx.d.ts +7 -0
  279. package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  280. package/formField.sx-8_QRnKxv.js.map +1 -0
  281. package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  282. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  283. package/index.cjs +96 -6
  284. package/index.cjs.map +1 -1
  285. package/index.d.ts +36 -0
  286. package/index.js +70 -4
  287. package/index.js.map +1 -1
  288. package/local/affiliations/affiliations.dev.soyfri.com-key.pem +28 -0
  289. package/local/affiliations/affiliations.dev.soyfri.com.pem +27 -0
  290. package/local/aficiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  291. package/local/aficiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  292. package/local/afiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  293. package/local/afiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  294. package/local/root/rootCA-key.pem +40 -0
  295. package/local/root/rootCA.pem +30 -0
  296. package/local/soporte/supportweb.dev.soyfri.com-key.pem +28 -0
  297. package/local/soporte/supportweb.dev.soyfri.com.pem +27 -0
  298. package/local/support/supportweb.dev.soyfri.com-key.pem +28 -0
  299. package/local/support/supportweb.dev.soyfri.com.pem +27 -0
  300. package/mergeSx-BXoNZjB_.js +10 -0
  301. package/mergeSx-BXoNZjB_.js.map +1 -0
  302. package/mergeSx-Dbccoo_H.cjs +9 -0
  303. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  304. package/mui.d.ts +3 -1
  305. package/package.json +78 -73
  306. package/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
  307. package/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
  308. package/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
  309. package/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
  310. package/theme/componentStyles.d.ts +1 -1
  311. package/tokens-BRrcP_p_.js +21 -0
  312. package/tokens-BRrcP_p_.js.map +1 -0
  313. package/tokens-jaWWNk39.cjs +20 -0
  314. package/tokens-jaWWNk39.cjs.map +1 -0
  315. package/utils/index.d.ts +2 -0
  316. package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  317. package/components/AppBar/AppBarBrand.d.ts +0 -31
  318. package/components/AppBar/AppBarUserMenu.d.ts +0 -65
  319. package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  320. package/components/DatePicker/DatePicker.types.d.ts +0 -1
  321. package/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  322. package/components/DateRangePicker/DateRangePicker.d.ts +0 -15
  323. package/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
  324. package/components/DateRangePicker/DateRangePicker.js.map +0 -1
  325. package/components/DateRangePicker/index.d.ts +0 -1
  326. package/components/DateRangePicker.d.ts +0 -2
  327. package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  328. package/components/Input/Input.types.d.ts +0 -1
  329. package/components/PageLoader/PageLoader.cjs +0 -61
  330. package/components/PageLoader/PageLoader.cjs.map +0 -1
  331. package/components/PageLoader/PageLoader.d.ts +0 -38
  332. package/components/PageLoader/PageLoader.js +0 -61
  333. package/components/PageLoader/PageLoader.js.map +0 -1
  334. package/components/PageLoader/index.d.ts +0 -2
  335. package/components/PageLoader.d.ts +0 -6
  336. package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  337. package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  338. package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  339. package/components/ScrollTopButton/ScrollTopButton.js +0 -79
  340. package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  341. package/components/ScrollTopButton/index.d.ts +0 -4
  342. package/components/ScrollTopButton.d.ts +0 -6
  343. package/components/Select/Select.definitions.d.ts +0 -17
  344. package/components/Select/Select.types.d.ts +0 -1
  345. package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  346. package/formField.sx-CQ1mbk9M.cjs.map +0 -1
  347. package/formField.sx-DfVbMe0V.js.map +0 -1
  348. package/hooks/Wizard/Wizard.cjs +0 -7
  349. package/hooks/Wizard/Wizard.cjs.map +0 -1
  350. package/hooks/Wizard/Wizard.js +0 -7
  351. package/hooks/Wizard/Wizard.js.map +0 -1
  352. package/hooks/Wizard/index.d.ts +0 -3
  353. package/hooks/Wizard/useWizard.d.ts +0 -9
  354. package/hooks/Wizard.d.ts +0 -2
  355. package/useWizard-CWdIxZzX.cjs +0 -94
  356. package/useWizard-CWdIxZzX.cjs.map +0 -1
  357. package/useWizard-CWq--C3o.js +0 -95
  358. package/useWizard-CWq--C3o.js.map +0 -1
  359. /package/{styles.css → index.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimePicker-BxQyjTCY.cjs","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":["buildFormFieldSx","FIELD_INPUT_PADDING_Y","useMemo","useTheme","resolvePreset","jsx","LocalizationProvider","AdapterDayjs","MuiDateTimePicker","Controller","_a"],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { jsx } from "react/jsx-runtime";
33
+ import React__default, { useMemo } from "react";
34
+ import { useTheme } from "@mui/material/styles";
35
+ import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
36
+ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
37
+ import { DateTimePicker as DateTimePicker$1 } from "@mui/x-date-pickers/DateTimePicker";
38
+ import { Controller } from "react-hook-form";
39
+ import { b as buildFormFieldSx } from "./formField.sx-8_QRnKxv.js";
40
+ import { F as FIELD_INPUT_PADDING_Y } from "./tokens-BRrcP_p_.js";
41
+ import { r as resolvePreset } from "./resolvePreset-K6_BfWHD.js";
42
+ const buildDateTimePickerSx = (borderRadius, labelPosition) => buildFormFieldSx({
43
+ borderRadius,
44
+ labelPosition,
45
+ includePickersApi: true,
46
+ extraOutsideSx: {
47
+ "& .MuiInputBase-input": {
48
+ paddingTop: FIELD_INPUT_PADDING_Y,
49
+ paddingBottom: FIELD_INPUT_PADDING_Y
50
+ },
51
+ "& .MuiPickersInputBase-sectionsContainer": {
52
+ paddingTop: FIELD_INPUT_PADDING_Y,
53
+ paddingBottom: FIELD_INPUT_PADDING_Y
54
+ }
55
+ }
56
+ });
57
+ const getDateTimeValidationMessage = (error) => {
58
+ switch (error) {
59
+ case "minDate":
60
+ case "maxDate":
61
+ case "minTime":
62
+ case "maxTime":
63
+ return "Fecha/hora fuera del rango permitido";
64
+ case "invalidDate":
65
+ return "Formato de fecha/hora inválido";
66
+ case "disableFuture":
67
+ return "No se permiten fechas/horas futuras";
68
+ case "disablePast":
69
+ return "No se permiten fechas/horas pasadas";
70
+ case "minutesStep":
71
+ return "Minutos no válidos para el paso configurado";
72
+ default:
73
+ return "";
74
+ }
75
+ };
76
+ const buildLocaleText = (clearButtonText, cancelButtonText, acceptButtonText) => {
77
+ const text = {};
78
+ if (clearButtonText) text.clearButtonLabel = clearButtonText;
79
+ if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;
80
+ if (acceptButtonText) text.okButtonLabel = acceptButtonText;
81
+ return text;
82
+ };
83
+ const DateTimePicker = (props) => {
84
+ const _a = props, {
85
+ label,
86
+ minDateTime,
87
+ maxDateTime,
88
+ disabled,
89
+ readOnly,
90
+ inputFormat,
91
+ borderRadius = 10,
92
+ labelPosition = "outside",
93
+ size = "small",
94
+ helperText,
95
+ error: errorProp,
96
+ sx,
97
+ className,
98
+ preset,
99
+ adapterLocale,
100
+ clearButtonText,
101
+ cancelButtonText,
102
+ acceptButtonText,
103
+ minutesStep,
104
+ minTime,
105
+ ampm = false,
106
+ viewRenderers,
107
+ timeSteps,
108
+ textFieldProps,
109
+ slotProps: slotPropsProp
110
+ } = _a, rest = __objRest(_a, [
111
+ "label",
112
+ "minDateTime",
113
+ "maxDateTime",
114
+ "disabled",
115
+ "readOnly",
116
+ "inputFormat",
117
+ "borderRadius",
118
+ "labelPosition",
119
+ "size",
120
+ "helperText",
121
+ "error",
122
+ "sx",
123
+ "className",
124
+ "preset",
125
+ "adapterLocale",
126
+ "clearButtonText",
127
+ "cancelButtonText",
128
+ "acceptButtonText",
129
+ "minutesStep",
130
+ "minTime",
131
+ "ampm",
132
+ "viewRenderers",
133
+ "timeSteps",
134
+ "textFieldProps",
135
+ "slotProps"
136
+ ]);
137
+ const [validationError, setValidationError] = React__default.useState(null);
138
+ const validationErrorMessage = useMemo(
139
+ () => getDateTimeValidationMessage(validationError),
140
+ [validationError]
141
+ );
142
+ const customLocaleText = useMemo(
143
+ () => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),
144
+ [clearButtonText, cancelButtonText, acceptButtonText]
145
+ );
146
+ const theme = useTheme();
147
+ const presetSx = resolvePreset("DateTimePicker", preset, theme);
148
+ const mergedSx = [
149
+ ...presetSx ? [presetSx] : [buildDateTimePickerSx(borderRadius, labelPosition)],
150
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
151
+ ];
152
+ const renderPicker = (value, onChange, onBlur, inputRef, rhfError, rhfHelperText) => {
153
+ const finalError = rhfError || !!validationErrorMessage || !!errorProp;
154
+ const finalHelperText = rhfHelperText || validationErrorMessage || helperText;
155
+ return /* @__PURE__ */ jsx(
156
+ LocalizationProvider,
157
+ {
158
+ dateAdapter: AdapterDayjs,
159
+ adapterLocale,
160
+ children: /* @__PURE__ */ jsx(
161
+ DateTimePicker$1,
162
+ __spreadValues({
163
+ className,
164
+ label,
165
+ value,
166
+ onChange,
167
+ onError: setValidationError,
168
+ minDateTime,
169
+ maxDateTime,
170
+ minutesStep,
171
+ disabled,
172
+ readOnly,
173
+ minTime,
174
+ format: inputFormat != null ? inputFormat : "DD/MM/YYYY HH:mm",
175
+ ampm,
176
+ viewRenderers,
177
+ timeSteps,
178
+ sx: mergedSx,
179
+ slotProps: __spreadProps(__spreadValues({}, slotPropsProp), {
180
+ textField: __spreadProps(__spreadValues(__spreadValues({
181
+ fullWidth: true,
182
+ size,
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.
187
+ onBlur,
188
+ inputRef,
189
+ error: !!finalError,
190
+ helperText: finalHelperText
191
+ })
192
+ }),
193
+ localeText: customLocaleText
194
+ }, rest)
195
+ )
196
+ }
197
+ );
198
+ };
199
+ if ("control" in props && props.control) {
200
+ const { name, control, validation, onValueChange } = props;
201
+ return /* @__PURE__ */ jsx(
202
+ Controller,
203
+ {
204
+ name,
205
+ control,
206
+ rules: validation,
207
+ render: ({ field, fieldState: { error: fieldError } }) => {
208
+ var _a2;
209
+ return renderPicker(
210
+ (_a2 = field.value) != null ? _a2 : null,
211
+ (next) => {
212
+ field.onChange(next);
213
+ onValueChange == null ? void 0 : onValueChange(next);
214
+ },
215
+ field.onBlur,
216
+ field.ref,
217
+ !!fieldError,
218
+ fieldError == null ? void 0 : fieldError.message
219
+ );
220
+ }
221
+ }
222
+ );
223
+ }
224
+ const { selectedDateTime, onDateTimeChange } = props;
225
+ return renderPicker(selectedDateTime, onDateTimeChange);
226
+ };
227
+ export {
228
+ DateTimePicker as D
229
+ };
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,wBAAwB,CACnC,cACA,kBAEA,iBAAiB;AAAA,EACf;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,IACd,yBAAyB;AAAA,MACvB,YAAY;AAAA,MACZ,eAAe;AAAA,IAAA;AAAA,IAGjB,4CAA4C;AAAA,MAC1C,YAAY;AAAA,MACZ,eAAe;AAAA,IAAA;AAAA,EACjB;AAEJ,CAAC;ACrBI,MAAM,+BAA+B,CAC1C,UACW;AACX,UAAQ,OAAA;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAMO,MAAM,kBAAkB,CAC7B,iBACA,kBACA,qBAC2B;AAC3B,QAAM,OAA+B,CAAA;AACrC,MAAI,sBAAsB,mBAAmB;AAC7C,MAAI,uBAAuB,oBAAoB;AAC/C,MAAI,uBAAuB,gBAAgB;AAC3C,SAAO;AACT;ACyDO,MAAM,iBAAgD,CAAC,UAAU;AACtE,QA2BI,YA1BF;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MAET,IADC,iBACD,IADC;AAAA,IAzBH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOF,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,eAAM,SAAyC,IAAI;AAEjG,QAAM,yBAAyB;AAAA,IAC7B,MAAM,6BAA6B,eAAe;AAAA,IAClD,CAAC,eAAe;AAAA,EAAA;AAGlB,QAAM,mBAAmB;AAAA,IACvB,MAAM,gBAAgB,iBAAiB,kBAAkB,gBAAgB;AAAA,IACzE,CAAC,iBAAiB,kBAAkB,gBAAgB;AAAA,EAAA;AAGtD,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,kBAAkB,QAAQ,KAAK;AAE9D,QAAM,WAAW;AAAA,IACf,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,sBAAsB,cAAc,aAAa,CAAC;AAAA,IAC/E,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,eAAe,CACnB,OACA,UACA,QACA,UACA,UACA,kBACG;AACH,UAAM,aAAa,YAAY,CAAC,CAAC,0BAA0B,CAAC,CAAC;AAC7D,UAAM,kBAAkB,iBAAiB,0BAA0B;AAEnE,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAa;AAAA,QACb;AAAA,QAEA,UAAA;AAAA,UAACC;AAAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,oCAAe;AAAA,YACvB;AAAA,YACA;AAAA,YACA;AAAA,YACA,IAAI;AAAA,YACJ,WAAW,iCACN,gBADM;AAAA,cAET,WAAW;AAAA,gBACT,WAAW;AAAA,gBACX;AAAA,gBACA,SAAS;AAAA,iBAEL,+CAAe,YAChB,iBANM;AAAA;AAAA;AAAA,gBAST;AAAA,gBACA;AAAA,gBACA,OAAO,CAAC,CAAC;AAAA,gBACT,YAAY;AAAA,cAAA;AAAA,YACd;AAAA,YAEF,YAAY;AAAA,aACR;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAGN;AAEA,MAAI,aAAa,SAAS,MAAM,SAAS;AACvC,UAAM,EAAE,MAAM,SAAS,YAAY,kBAAkB;AACrD,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,OAAO,WAAA,EAAW;;AAChD;AAAA,aACEC,MAAA,MAAM,UAAN,OAAAA,MAAe;AAAA,YACf,CAAC,SAAS;AACR,oBAAM,SAAS,IAAI;AACnB,6DAAgB;AAAA,YAClB;AAAA,YACA,MAAM;AAAA,YACN,MAAM;AAAA,YACN,CAAC,CAAC;AAAA,YACF,yCAAY;AAAA,UAAA;AAAA;AAAA,MACd;AAAA,IAAA;AAAA,EAIR;AAEA,QAAM,EAAE,kBAAkB,iBAAA,IAAqB;AAC/C,SAAO,aAAa,kBAAkB,gBAAgB;AACxD;"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
33
+ const jsxRuntime = require("react/jsx-runtime");
34
+ const material = require("@mui/material");
35
+ const styles = require("@mui/material/styles");
36
+ const reactHookForm = require("react-hook-form");
37
+ const formField_sx = require("./formField.sx-BAX7KwMR.cjs");
38
+ const tokens = require("./tokens-jaWWNk39.cjs");
39
+ const resolvePreset = require("./resolvePreset-CxTI6_Ln.cjs");
40
+ const parseValue = (raw, type) => {
41
+ if (type !== "number") return raw;
42
+ if (raw === "" || raw === "-") return raw;
43
+ const n = parseFloat(raw);
44
+ return isNaN(n) ? raw : n;
45
+ };
46
+ const buildSlotProps = (type, min, max, maxLength, customSlotProps, customInputProps, readOnly) => {
47
+ const numberAttrs = type === "number" ? __spreadValues({ min: min != null ? min : Number.NEGATIVE_INFINITY }, max !== void 0 && { max }) : {};
48
+ return __spreadProps(__spreadValues({}, customSlotProps), {
49
+ htmlInput: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, customInputProps), customSlotProps == null ? void 0 : customSlotProps.htmlInput), numberAttrs), maxLength !== void 0 && { maxLength }), readOnly && { readOnly: true }),
50
+ // Dejamos que MUI maneje el shrink nativamente (animación inside → up).
51
+ // El consumidor puede forzar shrink con slotProps.inputLabel.shrink=true si lo necesita.
52
+ inputLabel: __spreadValues({}, customSlotProps == null ? void 0 : customSlotProps.inputLabel)
53
+ });
54
+ };
55
+ const buildInputSx = (borderRadius, labelPosition) => {
56
+ const radius = typeof borderRadius === "number" ? `${borderRadius}px` : borderRadius;
57
+ return formField_sx.buildFormFieldSx({
58
+ borderRadius,
59
+ labelPosition,
60
+ extraOutsideSx: {
61
+ "& .MuiInputBase-input": {
62
+ paddingTop: tokens.FIELD_INPUT_PADDING_Y,
63
+ paddingBottom: tokens.FIELD_INPUT_PADDING_Y
64
+ },
65
+ // Filled: quitar el padding-top reservado para el label flotante dentro.
66
+ "& .MuiFilledInput-root": {
67
+ paddingTop: 0,
68
+ borderRadius: `${radius} ${radius} 0 0`
69
+ },
70
+ "& .MuiFilledInput-input": {
71
+ paddingTop: tokens.FIELD_INPUT_PADDING_Y
72
+ },
73
+ // Standard: quitar el margin-top reservado para el label flotante.
74
+ "& .MuiInput-root": {
75
+ marginTop: 0
76
+ }
77
+ }
78
+ });
79
+ };
80
+ const Input = (props) => {
81
+ const _a = props, {
82
+ type = "text",
83
+ variant = "outlined",
84
+ size = "small",
85
+ borderRadius = 10,
86
+ labelPosition = "outside",
87
+ preset,
88
+ min,
89
+ max,
90
+ maxLength,
91
+ readOnly,
92
+ inputProps,
93
+ slotProps,
94
+ sx,
95
+ onBlur
96
+ } = _a, rest = __objRest(_a, [
97
+ "type",
98
+ "variant",
99
+ "size",
100
+ "borderRadius",
101
+ "labelPosition",
102
+ "preset",
103
+ "min",
104
+ "max",
105
+ "maxLength",
106
+ "readOnly",
107
+ "inputProps",
108
+ "slotProps",
109
+ "sx",
110
+ "onBlur"
111
+ ]);
112
+ const theme = styles.useTheme();
113
+ const presetSx = resolvePreset.resolvePreset("Input", preset, theme);
114
+ const finalSlotProps = buildSlotProps(
115
+ type,
116
+ min,
117
+ max,
118
+ maxLength,
119
+ slotProps,
120
+ inputProps,
121
+ readOnly
122
+ );
123
+ const mergedSx = [
124
+ ...presetSx ? [presetSx] : [buildInputSx(borderRadius, labelPosition)],
125
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
126
+ ];
127
+ if ("control" in props && props.control) {
128
+ const { name, control, validation, onValueChange } = props;
129
+ return /* @__PURE__ */ jsxRuntime.jsx(
130
+ reactHookForm.Controller,
131
+ {
132
+ name,
133
+ control,
134
+ rules: validation,
135
+ render: ({ field, fieldState: { error } }) => {
136
+ var _a2, _b;
137
+ return /* @__PURE__ */ jsxRuntime.jsx(
138
+ material.TextField,
139
+ __spreadProps(__spreadValues({
140
+ fullWidth: true
141
+ }, rest), {
142
+ name: field.name,
143
+ value: (_a2 = field.value) != null ? _a2 : "",
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
+ },
153
+ inputRef: field.ref,
154
+ type,
155
+ variant,
156
+ size,
157
+ slotProps: finalSlotProps,
158
+ sx: mergedSx,
159
+ error: !!error || rest.error,
160
+ helperText: (_b = error == null ? void 0 : error.message) != null ? _b : rest.helperText
161
+ })
162
+ );
163
+ }
164
+ }
165
+ );
166
+ }
167
+ const { value, onChange } = props;
168
+ return /* @__PURE__ */ jsxRuntime.jsx(
169
+ material.TextField,
170
+ __spreadProps(__spreadValues({
171
+ fullWidth: true
172
+ }, rest), {
173
+ value: value != null ? value : "",
174
+ onChange: (e) => onChange(parseValue(e.target.value, type)),
175
+ onBlur,
176
+ type,
177
+ variant,
178
+ size,
179
+ slotProps: finalSlotProps,
180
+ sx: mergedSx
181
+ })
182
+ );
183
+ };
184
+ exports.Input = Input;
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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"}