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

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 (348) hide show
  1. package/Autocomplete-C_lW1VER.js +337 -0
  2. package/Autocomplete-C_lW1VER.js.map +1 -0
  3. package/Autocomplete-CejWztBY.cjs +336 -0
  4. package/Autocomplete-CejWztBY.cjs.map +1 -0
  5. package/Avatar-Dw5rzayR.cjs +166 -0
  6. package/Avatar-Dw5rzayR.cjs.map +1 -0
  7. package/Avatar-H8akSege.js +167 -0
  8. package/Avatar-H8akSege.js.map +1 -0
  9. package/Button-C17mExpd.cjs.map +1 -1
  10. package/Button-UkkP-bNw.js.map +1 -1
  11. package/Card-DYKGY-NG.js +116 -0
  12. package/Card-DYKGY-NG.js.map +1 -0
  13. package/Card-Dr1-ATRY.cjs +115 -0
  14. package/Card-Dr1-ATRY.cjs.map +1 -0
  15. package/Checkbox-BCqMFWt4.cjs +187 -0
  16. package/Checkbox-BCqMFWt4.cjs.map +1 -0
  17. package/Checkbox-gB5YKkVo.js +188 -0
  18. package/Checkbox-gB5YKkVo.js.map +1 -0
  19. package/{components/DateRangePicker/DateRangePicker.js → Chip-OPYQ1uQ_.js} +33 -35
  20. package/Chip-OPYQ1uQ_.js.map +1 -0
  21. package/{components/DateRangePicker/DateRangePicker.cjs → Chip-qoJLDiva.cjs} +33 -36
  22. package/Chip-qoJLDiva.cjs.map +1 -0
  23. package/DatePicker-_IGWc3I5.js +178 -0
  24. package/DatePicker-_IGWc3I5.js.map +1 -0
  25. package/DatePicker-t7uDTZMl.cjs +177 -0
  26. package/DatePicker-t7uDTZMl.cjs.map +1 -0
  27. package/DateTimePicker-BxQyjTCY.cjs +229 -0
  28. package/DateTimePicker-BxQyjTCY.cjs.map +1 -0
  29. package/DateTimePicker-CrmWav_j.js +230 -0
  30. package/DateTimePicker-CrmWav_j.js.map +1 -0
  31. package/Input-CScC87J5.cjs +185 -0
  32. package/Input-CScC87J5.cjs.map +1 -0
  33. package/Input-DP_fKl38.js +186 -0
  34. package/Input-DP_fKl38.js.map +1 -0
  35. package/Modal-BFpX5AFV.js +347 -0
  36. package/Modal-BFpX5AFV.js.map +1 -0
  37. package/Modal-CkpuI8ns.cjs +346 -0
  38. package/Modal-CkpuI8ns.cjs.map +1 -0
  39. package/RadioGroup-Dd0rHXSX.cjs +202 -0
  40. package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  41. package/RadioGroup-bO-ahP9T.js +203 -0
  42. package/RadioGroup-bO-ahP9T.js.map +1 -0
  43. package/Select-BY5Y0qZ1.js +376 -0
  44. package/Select-BY5Y0qZ1.js.map +1 -0
  45. package/Select-CURrHSyl.cjs +375 -0
  46. package/Select-CURrHSyl.cjs.map +1 -0
  47. package/Spinner-B6sThC1p.js +74 -0
  48. package/Spinner-B6sThC1p.js.map +1 -0
  49. package/Spinner-D7qRmNS9.cjs +73 -0
  50. package/Spinner-D7qRmNS9.cjs.map +1 -0
  51. package/Stat-BUcFCGrz.cjs +83 -0
  52. package/Stat-BUcFCGrz.cjs.map +1 -0
  53. package/Stat-C06A_izS.js +84 -0
  54. package/Stat-C06A_izS.js.map +1 -0
  55. package/StatusMessage-B3nXpuRl.cjs +88 -0
  56. package/StatusMessage-B3nXpuRl.cjs.map +1 -0
  57. package/StatusMessage-D0WgSBx7.js +89 -0
  58. package/StatusMessage-D0WgSBx7.js.map +1 -0
  59. package/Step-BArsou1V.js +301 -0
  60. package/Step-BArsou1V.js.map +1 -0
  61. package/Step-Nd7SJbRZ.cjs +300 -0
  62. package/Step-Nd7SJbRZ.cjs.map +1 -0
  63. package/Switch-CQFOopYy.cjs +182 -0
  64. package/Switch-CQFOopYy.cjs.map +1 -0
  65. package/Switch-D72dpkH2.js +183 -0
  66. package/Switch-D72dpkH2.js.map +1 -0
  67. package/Tab-BbP8jBcK.cjs +110 -0
  68. package/Tab-BbP8jBcK.cjs.map +1 -0
  69. package/Tab-BxSxKJsP.js +111 -0
  70. package/Tab-BxSxKJsP.js.map +1 -0
  71. package/Table-C2LbW0B1.js +531 -0
  72. package/Table-C2LbW0B1.js.map +1 -0
  73. package/Table-C4OM6rrC.cjs +530 -0
  74. package/Table-C4OM6rrC.cjs.map +1 -0
  75. package/components/ActionMenu/ActionMenu.cjs +52 -52
  76. package/components/ActionMenu/ActionMenu.cjs.map +1 -1
  77. package/components/ActionMenu/ActionMenu.d.ts +20 -36
  78. package/components/ActionMenu/ActionMenu.js +55 -55
  79. package/components/ActionMenu/ActionMenu.js.map +1 -1
  80. package/components/ActionMenu/index.d.ts +2 -2
  81. package/components/AppBar/AppBar.cjs +3 -220
  82. package/components/AppBar/AppBar.cjs.map +1 -1
  83. package/components/AppBar/AppBar.d.ts +6 -6
  84. package/components/AppBar/AppBar.js +6 -223
  85. package/components/AppBar/AppBar.js.map +1 -1
  86. package/components/AppBar/index.d.ts +0 -6
  87. package/components/Autocomplete/Autocomplete.cjs +4 -311
  88. package/components/Autocomplete/Autocomplete.cjs.map +1 -1
  89. package/components/Autocomplete/Autocomplete.d.ts +8 -6
  90. package/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
  91. package/components/Autocomplete/Autocomplete.js +4 -311
  92. package/components/Autocomplete/Autocomplete.js.map +1 -1
  93. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  94. package/components/Autocomplete/index.d.ts +1 -1
  95. package/components/Avatar/Avatar.cjs +2 -160
  96. package/components/Avatar/Avatar.cjs.map +1 -1
  97. package/components/Avatar/Avatar.d.ts +16 -1
  98. package/components/Avatar/Avatar.js +2 -160
  99. package/components/Avatar/Avatar.js.map +1 -1
  100. package/components/Avatar/index.d.ts +1 -0
  101. package/components/Button/Button.d.ts +5 -5
  102. package/components/Button/index.d.ts +1 -0
  103. package/components/Card/Card.cjs +4 -184
  104. package/components/Card/Card.cjs.map +1 -1
  105. package/components/Card/Card.d.ts +21 -50
  106. package/components/Card/Card.js +4 -184
  107. package/components/Card/Card.js.map +1 -1
  108. package/components/Card/Card.sx.d.ts +3 -6
  109. package/components/Card/index.d.ts +1 -1
  110. package/components/Checkbox/Checkbox.cjs +6 -0
  111. package/components/Checkbox/Checkbox.cjs.map +1 -0
  112. package/components/Checkbox/Checkbox.d.ts +55 -0
  113. package/components/Checkbox/Checkbox.js +6 -0
  114. package/components/Checkbox/Checkbox.js.map +1 -0
  115. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  116. package/components/Checkbox/index.d.ts +2 -0
  117. package/components/Checkbox.d.ts +6 -0
  118. package/components/Chip/Chip.cjs +4 -72
  119. package/components/Chip/Chip.cjs.map +1 -1
  120. package/components/Chip/Chip.js +3 -71
  121. package/components/Chip/Chip.js.map +1 -1
  122. package/components/Chip/index.d.ts +2 -1
  123. package/components/Chip.d.ts +4 -0
  124. package/components/Column/Column.cjs +1 -1
  125. package/components/Column/Column.cjs.map +1 -1
  126. package/components/Column/Column.d.ts +1 -1
  127. package/components/Column/Column.js +1 -1
  128. package/components/Column/Column.js.map +1 -1
  129. package/components/Column/index.d.ts +1 -0
  130. package/components/DatePicker/DatePicker.cjs +3 -200
  131. package/components/DatePicker/DatePicker.cjs.map +1 -1
  132. package/components/DatePicker/DatePicker.d.ts +1 -13
  133. package/components/DatePicker/DatePicker.js +3 -200
  134. package/components/DatePicker/DatePicker.js.map +1 -1
  135. package/components/DatePicker/index.d.ts +1 -1
  136. package/components/DateTimePicker/DateTimePicker.cjs +3 -219
  137. package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  138. package/components/DateTimePicker/DateTimePicker.d.ts +10 -6
  139. package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
  140. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
  141. package/components/DateTimePicker/DateTimePicker.js +3 -219
  142. package/components/DateTimePicker/DateTimePicker.js.map +1 -1
  143. package/components/DateTimePicker/index.d.ts +1 -1
  144. package/components/Drawer/Drawer.cjs +25 -24
  145. package/components/Drawer/Drawer.cjs.map +1 -1
  146. package/components/Drawer/Drawer.d.ts +8 -1
  147. package/components/Drawer/Drawer.js +26 -25
  148. package/components/Drawer/Drawer.js.map +1 -1
  149. package/components/Drawer/DrawerItem.d.ts +6 -1
  150. package/components/Gallery/Gallery.cjs +154 -79
  151. package/components/Gallery/Gallery.cjs.map +1 -1
  152. package/components/Gallery/Gallery.d.ts +25 -9
  153. package/components/Gallery/Gallery.js +154 -79
  154. package/components/Gallery/Gallery.js.map +1 -1
  155. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  156. package/components/Gallery/GalleryMain.d.ts +3 -7
  157. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  158. package/components/Gallery/index.d.ts +2 -1
  159. package/components/Gallery.d.ts +4 -0
  160. package/components/Icon/Icon.cjs +6 -8
  161. package/components/Icon/Icon.cjs.map +1 -1
  162. package/components/Icon/Icon.d.ts +11 -17
  163. package/components/Icon/Icon.js +6 -8
  164. package/components/Icon/Icon.js.map +1 -1
  165. package/components/Icon/index.d.ts +2 -1
  166. package/components/Icon.d.ts +4 -0
  167. package/components/Input/Input.cjs +3 -172
  168. package/components/Input/Input.cjs.map +1 -1
  169. package/components/Input/Input.d.ts +9 -2
  170. package/components/Input/Input.definitions.d.ts +1 -0
  171. package/components/Input/Input.helpers.d.ts +3 -3
  172. package/components/Input/Input.js +3 -172
  173. package/components/Input/Input.js.map +1 -1
  174. package/components/Input/index.d.ts +1 -1
  175. package/components/InputGroup/InputGroup.cjs +23 -22
  176. package/components/InputGroup/InputGroup.cjs.map +1 -1
  177. package/components/InputGroup/InputGroup.d.ts +4 -4
  178. package/components/InputGroup/InputGroup.js +22 -21
  179. package/components/InputGroup/InputGroup.js.map +1 -1
  180. package/components/InputGroup/index.d.ts +2 -1
  181. package/components/InputGroup.d.ts +4 -0
  182. package/components/Modal/Modal.cjs +7 -317
  183. package/components/Modal/Modal.cjs.map +1 -1
  184. package/components/Modal/Modal.d.ts +20 -5
  185. package/components/Modal/Modal.js +6 -316
  186. package/components/Modal/Modal.js.map +1 -1
  187. package/components/Modal/ModalBody.d.ts +6 -1
  188. package/components/Modal/ModalFooter.d.ts +4 -4
  189. package/components/Modal/ModalHeader.d.ts +6 -1
  190. package/components/Modal/index.d.ts +3 -1
  191. package/components/Modal.d.ts +4 -0
  192. package/components/RadioGroup/RadioGroup.cjs +6 -0
  193. package/components/RadioGroup/RadioGroup.cjs.map +1 -0
  194. package/components/RadioGroup/RadioGroup.d.ts +59 -0
  195. package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  196. package/components/RadioGroup/RadioGroup.js +6 -0
  197. package/components/RadioGroup/RadioGroup.js.map +1 -0
  198. package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  199. package/components/RadioGroup/index.d.ts +2 -0
  200. package/components/RadioGroup.d.ts +6 -0
  201. package/components/Select/Select.cjs +4 -445
  202. package/components/Select/Select.cjs.map +1 -1
  203. package/components/Select/Select.d.ts +37 -18
  204. package/components/Select/Select.helpers.d.ts +5 -19
  205. package/components/Select/Select.js +4 -445
  206. package/components/Select/Select.js.map +1 -1
  207. package/components/Select/index.d.ts +1 -1
  208. package/components/Spinner/Spinner.cjs +6 -0
  209. package/components/Spinner/Spinner.cjs.map +1 -0
  210. package/components/Spinner/Spinner.d.ts +26 -0
  211. package/components/Spinner/Spinner.js +6 -0
  212. package/components/Spinner/Spinner.js.map +1 -0
  213. package/components/Spinner/index.d.ts +2 -0
  214. package/components/Spinner.d.ts +6 -0
  215. package/components/Stat/Stat.cjs +4 -83
  216. package/components/Stat/Stat.cjs.map +1 -1
  217. package/components/Stat/Stat.js +3 -82
  218. package/components/Stat/Stat.js.map +1 -1
  219. package/components/Stat/index.d.ts +2 -1
  220. package/components/Stat.d.ts +4 -0
  221. package/components/StatusMessage/StatusMessage.cjs +4 -77
  222. package/components/StatusMessage/StatusMessage.cjs.map +1 -1
  223. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  224. package/components/StatusMessage/StatusMessage.js +3 -76
  225. package/components/StatusMessage/StatusMessage.js.map +1 -1
  226. package/components/StatusMessage/index.d.ts +2 -1
  227. package/components/StatusMessage.d.ts +4 -0
  228. package/components/Stepper/Stepper.cjs +8 -47
  229. package/components/Stepper/Stepper.cjs.map +1 -1
  230. package/components/Stepper/Stepper.d.ts +9 -8
  231. package/components/Stepper/Stepper.js +7 -46
  232. package/components/Stepper/Stepper.js.map +1 -1
  233. package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +29 -23
  234. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  235. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  236. package/components/Stepper/index.d.ts +6 -2
  237. package/components/Stepper.d.ts +4 -0
  238. package/components/Switch/Switch.cjs +6 -0
  239. package/components/Switch/Switch.cjs.map +1 -0
  240. package/components/Switch/Switch.d.ts +48 -0
  241. package/components/Switch/Switch.definitions.d.ts +7 -0
  242. package/components/Switch/Switch.js +6 -0
  243. package/components/Switch/Switch.js.map +1 -0
  244. package/components/Switch/Switch.sx.d.ts +22 -0
  245. package/components/Switch/Switch.types.d.ts +1 -0
  246. package/components/Switch/index.d.ts +2 -0
  247. package/components/Switch.d.ts +6 -0
  248. package/components/Table/Table.cjs +2 -528
  249. package/components/Table/Table.cjs.map +1 -1
  250. package/components/Table/Table.d.ts +1 -1
  251. package/components/Table/Table.js +2 -528
  252. package/components/Table/Table.js.map +1 -1
  253. package/components/Tabs/Tabs.cjs +5 -94
  254. package/components/Tabs/Tabs.cjs.map +1 -1
  255. package/components/Tabs/Tabs.d.ts +21 -16
  256. package/components/Tabs/Tabs.js +4 -93
  257. package/components/Tabs/Tabs.js.map +1 -1
  258. package/components/Tabs/index.d.ts +4 -2
  259. package/components/Tabs.d.ts +4 -0
  260. package/components/Timeline/Timeline.cjs +3 -2
  261. package/components/Timeline/Timeline.cjs.map +1 -1
  262. package/components/Timeline/Timeline.d.ts +4 -8
  263. package/components/Timeline/Timeline.js +3 -2
  264. package/components/Timeline/Timeline.js.map +1 -1
  265. package/components/Timeline/index.d.ts +4 -2
  266. package/components/Timeline.d.ts +4 -0
  267. package/components/_shared/mergeSx.d.ts +7 -0
  268. package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  269. package/formField.sx-8_QRnKxv.js.map +1 -0
  270. package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  271. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  272. package/index.cjs +94 -2
  273. package/index.cjs.map +1 -1
  274. package/index.d.ts +34 -0
  275. package/index.js +68 -3
  276. package/index.js.map +1 -1
  277. package/local/affiliations/affiliations.dev.soyfri.com-key.pem +28 -0
  278. package/local/affiliations/affiliations.dev.soyfri.com.pem +27 -0
  279. package/local/aficiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  280. package/local/aficiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  281. package/local/afiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  282. package/local/afiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  283. package/local/root/rootCA-key.pem +40 -0
  284. package/local/root/rootCA.pem +30 -0
  285. package/local/soporte/supportweb.dev.soyfri.com-key.pem +28 -0
  286. package/local/soporte/supportweb.dev.soyfri.com.pem +27 -0
  287. package/local/support/supportweb.dev.soyfri.com-key.pem +28 -0
  288. package/local/support/supportweb.dev.soyfri.com.pem +27 -0
  289. package/mergeSx-BXoNZjB_.js +10 -0
  290. package/mergeSx-BXoNZjB_.js.map +1 -0
  291. package/mergeSx-Dbccoo_H.cjs +9 -0
  292. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  293. package/mui.d.ts +3 -1
  294. package/package.json +73 -73
  295. package/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
  296. package/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
  297. package/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
  298. package/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
  299. package/theme/componentStyles.d.ts +1 -1
  300. package/tokens-BRrcP_p_.js +21 -0
  301. package/tokens-BRrcP_p_.js.map +1 -0
  302. package/tokens-jaWWNk39.cjs +20 -0
  303. package/tokens-jaWWNk39.cjs.map +1 -0
  304. package/utils/index.d.ts +2 -0
  305. package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  306. package/components/AppBar/AppBarBrand.d.ts +0 -31
  307. package/components/AppBar/AppBarUserMenu.d.ts +0 -65
  308. package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  309. package/components/DatePicker/DatePicker.types.d.ts +0 -1
  310. package/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  311. package/components/DateRangePicker/DateRangePicker.d.ts +0 -15
  312. package/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
  313. package/components/DateRangePicker/DateRangePicker.js.map +0 -1
  314. package/components/DateRangePicker/index.d.ts +0 -1
  315. package/components/DateRangePicker.d.ts +0 -2
  316. package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  317. package/components/Input/Input.types.d.ts +0 -1
  318. package/components/PageLoader/PageLoader.cjs +0 -61
  319. package/components/PageLoader/PageLoader.cjs.map +0 -1
  320. package/components/PageLoader/PageLoader.d.ts +0 -38
  321. package/components/PageLoader/PageLoader.js +0 -61
  322. package/components/PageLoader/PageLoader.js.map +0 -1
  323. package/components/PageLoader/index.d.ts +0 -2
  324. package/components/PageLoader.d.ts +0 -6
  325. package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  326. package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  327. package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  328. package/components/ScrollTopButton/ScrollTopButton.js +0 -79
  329. package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  330. package/components/ScrollTopButton/index.d.ts +0 -4
  331. package/components/ScrollTopButton.d.ts +0 -6
  332. package/components/Select/Select.definitions.d.ts +0 -17
  333. package/components/Select/Select.types.d.ts +0 -1
  334. package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  335. package/formField.sx-CQ1mbk9M.cjs.map +0 -1
  336. package/formField.sx-DfVbMe0V.js.map +0 -1
  337. package/hooks/Wizard/Wizard.cjs +0 -7
  338. package/hooks/Wizard/Wizard.cjs.map +0 -1
  339. package/hooks/Wizard/Wizard.js +0 -7
  340. package/hooks/Wizard/Wizard.js.map +0 -1
  341. package/hooks/Wizard/index.d.ts +0 -3
  342. package/hooks/Wizard/useWizard.d.ts +0 -9
  343. package/hooks/Wizard.d.ts +0 -2
  344. package/useWizard-CWdIxZzX.cjs +0 -94
  345. package/useWizard-CWdIxZzX.cjs.map +0 -1
  346. package/useWizard-CWq--C3o.js +0 -95
  347. package/useWizard-CWq--C3o.js.map +0 -1
  348. /package/{styles.css → index.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Input.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, LabelPosition } 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\" y readOnly.\n */\nexport const buildSlotProps = (\n type: InputType,\n min: number | undefined,\n max: number | undefined,\n customSlotProps: TextFieldProps['slotProps'],\n customInputProps: InputHTMLAttributes<HTMLInputElement> | undefined,\n _labelPosition: LabelPosition,\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 ...(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 /** 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 control: Control<any>;\n validation?: RegisterOptions;\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 readOnly,\n inputProps,\n slotProps,\n sx,\n ...rest\n } = props as ControlledInputProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n readOnly?: boolean;\n preset?: string;\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 slotProps,\n inputProps,\n labelPosition,\n readOnly,\n );\n const mergedSx = [\n buildInputSx(borderRadius, labelPosition),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : [sx]),\n ];\n\n if ('control' in props && props.control) {\n const { name, control, validation } = 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) => field.onChange(parseValue(e.target.value, type))}\n onBlur={field.onBlur}\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 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,aAAa,CAAC,KAAa,SAAqC;AAC3E,MAAI,SAAS,SAAU,QAAO;AAC9B,MAAI,QAAQ,MAAM,QAAQ,IAAK,QAAO;AACtC,QAAM,IAAI,WAAW,GAAG;AACxB,SAAO,MAAM,CAAC,IAAI,MAAM;AAC1B;AAMO,MAAM,iBAAiB,CAC5B,MACA,KACA,KACA,iBACA,kBACA,gBACA,aACgC;AAChC,QAAM,cACJ,SAAS,WACL,iBAAE,KAAK,oBAAO,OAAO,qBAAuB,QAAQ,UAAa,EAAE,IAAA,KACnE,CAAA;AAEN,SAAO,iCACF,kBADE;AAAA,IAEL,WAAW,gEACN,mBACC,mDAAyB,YAC1B,cACC,YAAY,EAAE,UAAU,KAAA;AAAA;AAAA;AAAA,IAI9B,YAAY,mBACN,mDAAyB;AAAA,EAC/B;AAEJ;ACrCO,MAAM,eAAe,CAC1B,cACA,kBACyB;AACzB,QAAM,SAAS,OAAO,iBAAiB,WAAW,GAAG,YAAY,OAAO;AAExE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,MACd,yBAAyB;AAAA,QACvB,YAAY;AAAA,QACZ,eAAe;AAAA,MAAA;AAAA;AAAA,MAIjB,0BAA0B;AAAA,QACxB,YAAY;AAAA,QACZ,cAAc,GAAG,MAAM,IAAI,MAAM;AAAA,MAAA;AAAA,MAEnC,2BAA2B;AAAA,QACzB,YAAY;AAAA,MAAA;AAAA;AAAA,MAId,oBAAoB;AAAA,QAClB,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF,CACD;AACH;ACcO,MAAM,QAA8B,CAAC,UAAU;AACpD,QAcI,YAbF;AAAA,WAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,IACP,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAEE,IADC,iBACD,IADC;AAAA,IAZH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AASF,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,SAAS,QAAQ,KAAK;AAErD,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,WAAW;AAAA,IACf,aAAa,cAAc,aAAa;AAAA,IACxC,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE;AAAA,EAAA;AAGlC,MAAI,aAAa,SAAS,MAAM,SAAS;AACvC,UAAM,EAAE,MAAM,SAAS,WAAA,IAAe;AACtC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,MAAA;;AAC9B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAS;AAAA,eACL,OAFL;AAAA,cAGC,MAAM,MAAM;AAAA,cACZ,QAAOA,MAAA,MAAM,UAAN,OAAAA,MAAe;AAAA,cACtB,UAAU,CAAC,MAAM,MAAM,SAAS,WAAW,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,cAChE,QAAQ,MAAM;AAAA,cACd,UAAU,MAAM;AAAA,cAChB;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW;AAAA,cACX,IAAI;AAAA,cACJ,OAAO,CAAC,CAAC,SAAS,KAAK;AAAA,cACvB,aAAY,oCAAO,YAAP,YAAkB,KAAK;AAAA,YAAA;AAAA,UAAA;AAAA;AAAA,MACrC;AAAA,IAAA;AAAA,EAIR;AAEA,QAAM,EAAE,OAAO,SAAA,IAAa;AAC5B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,OACL,OAFL;AAAA,MAGC,OAAO,wBAAS;AAAA,MAChB,UAAU,CAAC,MAAM,SAAS,WAAW,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,MAC1D;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,IAAI;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"Input.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,2 @@
1
1
  export { Input, default } from './Input';
2
- export type { InputProps, BaseInputProps, RHFInputProps, ControlledInputProps, InputType, LabelPosition, } from './Input.types';
2
+ export type { InputProps, BaseInputProps, RHFInputProps, ControlledInputProps, InputType, LabelPosition, } from './Input';
@@ -18,16 +18,12 @@ var __spreadValues = (a, b) => {
18
18
  return a;
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
21
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
22
22
  const jsxRuntime = require("react/jsx-runtime");
23
23
  const React = require("react");
24
24
  const material = require("@mui/material");
25
- const mergeSx = (base, extra) => {
26
- if (!extra) return base;
27
- const baseArr = Array.isArray(base) ? base : [base];
28
- const extraArr = Array.isArray(extra) ? extra : [extra];
29
- return [...baseArr, ...extraArr];
30
- };
25
+ const mergeSx = require("../../mergeSx-Dbccoo_H.cjs");
26
+ const tokens = require("../../tokens-jaWWNk39.cjs");
31
27
  const InputGroup = ({
32
28
  children,
33
29
  sx,
@@ -44,7 +40,7 @@ const InputGroup = ({
44
40
  // Respeta el label "outside" de Input/Select: los hijos pierden su marginTop
45
41
  // (ver más abajo) y el grupo reserva el mismo espacio arriba para que los
46
42
  // labels floten por encima del borde del grupo.
47
- marginTop: "14px",
43
+ marginTop: tokens.LABEL_MARGIN_TOP,
48
44
  display: "flex",
49
45
  flexDirection: isHorizontal ? "row" : "column",
50
46
  alignItems: "stretch",
@@ -61,7 +57,7 @@ const InputGroup = ({
61
57
  pointerEvents: disabled ? "none" : "auto",
62
58
  // Cancelar el marginTop que Input/Select reservan en labelPosition="outside".
63
59
  // El grupo ya lo reservó en su nivel externo.
64
- "& .MuiFormControl-root, & > .InputGroup__slot > .MuiTextField-root, & > .InputGroup__slot > .MuiFormControl-root": {
60
+ "& .MuiFormControl-root, & > [data-input-group-slot] > .MuiTextField-root, & > [data-input-group-slot] > .MuiFormControl-root": {
65
61
  marginTop: 0
66
62
  },
67
63
  // Quitar el borde del notched outline interno: el borde visible es el del
@@ -82,7 +78,7 @@ const InputGroup = ({
82
78
  border: "none"
83
79
  },
84
80
  // Slots: cada hijo vive en un slot neutro que lo centra verticalmente.
85
- "& > .InputGroup__slot": __spreadProps(__spreadValues({
81
+ "& > [data-input-group-slot]": __spreadProps(__spreadValues({
86
82
  flex: 1,
87
83
  display: "flex",
88
84
  alignItems: "center",
@@ -94,7 +90,7 @@ const InputGroup = ({
94
90
  }
95
91
  }),
96
92
  // Esquinas redondeadas: primer slot (izquierda o arriba).
97
- "& > .InputGroup__slot:first-of-type .MuiInputBase-root, & > .InputGroup__slot:first-of-type .MuiButton-root, & > .InputGroup__slot:first-of-type .MuiChip-root": isHorizontal ? {
93
+ "& > [data-input-group-slot]:first-of-type .MuiInputBase-root, & > [data-input-group-slot]:first-of-type .MuiButton-root, & > [data-input-group-slot]:first-of-type .MuiChip-root": isHorizontal ? {
98
94
  borderTopLeftRadius: radius,
99
95
  borderBottomLeftRadius: radius
100
96
  } : {
@@ -102,7 +98,7 @@ const InputGroup = ({
102
98
  borderTopRightRadius: radius
103
99
  },
104
100
  // Esquinas redondeadas: último slot (derecha o abajo).
105
- "& > .InputGroup__slot:last-of-type .MuiInputBase-root, & > .InputGroup__slot:last-of-type .MuiButton-root, & > .InputGroup__slot:last-of-type .MuiChip-root": isHorizontal ? {
101
+ "& > [data-input-group-slot]:last-of-type .MuiInputBase-root, & > [data-input-group-slot]:last-of-type .MuiButton-root, & > [data-input-group-slot]:last-of-type .MuiChip-root": isHorizontal ? {
106
102
  borderTopRightRadius: radius,
107
103
  borderBottomRightRadius: radius
108
104
  } : {
@@ -122,18 +118,23 @@ const InputGroup = ({
122
118
  "data-testid": "input-group",
123
119
  className,
124
120
  "aria-disabled": disabled ? "true" : void 0,
125
- sx: mergeSx(baseSx, sx),
126
- children: slots.map((child, i) => /* @__PURE__ */ jsxRuntime.jsx(
127
- material.Box,
128
- {
129
- className: "InputGroup__slot",
130
- sx: mergeSx(baseSlotSx, slotSx),
131
- children: child
132
- },
133
- i
134
- ))
121
+ sx: mergeSx.mergeSx(baseSx, sx),
122
+ children: slots.map((child, i) => {
123
+ var _a;
124
+ const slotKey = (_a = child.key) != null ? _a : i;
125
+ return /* @__PURE__ */ jsxRuntime.jsx(
126
+ material.Box,
127
+ {
128
+ "data-input-group-slot": true,
129
+ sx: mergeSx.mergeSx(baseSlotSx, slotSx),
130
+ children: child
131
+ },
132
+ slotKey
133
+ );
134
+ })
135
135
  }
136
136
  );
137
137
  };
138
138
  exports.InputGroup = InputGroup;
139
+ exports.default = InputGroup;
139
140
  //# sourceMappingURL=InputGroup.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroup.cjs","sources":["../../../src/components/InputGroup/InputGroup.tsx"],"sourcesContent":["import React, { Children, isValidElement } from 'react';\nimport { Box, type SxProps, type Theme } from '@mui/material';\n\nexport interface InputGroupProps {\n children: React.ReactNode;\n /**\n * sx aplicado al contenedor raíz del grupo. Se mergea sobre los defaults.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada slot individual. Útil para controlar flex/gap entre\n * los hijos del grupo.\n */\n slotSx?: SxProps<Theme>;\n /**\n * Radio del borde del grupo. Default: 10.\n */\n borderRadius?: number | string;\n /**\n * Desactiva visualmente el grupo (no cascada lógica — los hijos deben\n * manejar su propio `disabled`).\n */\n disabled?: boolean;\n /**\n * Orientación del grupo. Default: 'horizontal'.\n */\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nconst mergeSx = (base: SxProps<Theme>, extra?: SxProps<Theme>): SxProps<Theme> => {\n if (!extra) return base;\n const baseArr = Array.isArray(base) ? base : [base];\n const extraArr = Array.isArray(extra) ? extra : [extra];\n return [...baseArr, ...extraArr] as SxProps<Theme>;\n};\n\n/**\n * Agrupa visualmente varios componentes de entrada (Input / Select / DatePicker /\n * Button, etc.) compartiendo un solo borde y con separadores internos.\n *\n * El grupo respeta el espacio que Input/Select reservan para su label `outside`\n * (marginTop=14px) moviendo ese reservado al contenedor externo y cancelándolo\n * en los hijos. Los labels siguen flotando por encima del borde del grupo con\n * la misma animación que fuera del grupo.\n *\n * No inspecciona el tipo de cada hijo; aplica los overrides a través de\n * descendant selectors por CSS para funcionar con cualquier wrapper / memoizado.\n */\nconst InputGroup: React.FC<InputGroupProps> = ({\n children,\n sx,\n slotSx,\n borderRadius = 10,\n disabled,\n orientation = 'horizontal',\n className,\n}) => {\n const radius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n const slots = Children.toArray(children).filter(isValidElement);\n const isHorizontal = orientation === 'horizontal';\n\n const baseSx: SxProps<Theme> = {\n // Respeta el label \"outside\" de Input/Select: los hijos pierden su marginTop\n // (ver más abajo) y el grupo reserva el mismo espacio arriba para que los\n // labels floten por encima del borde del grupo.\n marginTop: '14px',\n\n display: 'flex',\n flexDirection: isHorizontal ? 'row' : 'column',\n alignItems: 'stretch',\n width: '100%',\n border: (theme) => `1px solid ${theme.palette.divider}`,\n borderRadius: radius,\n backgroundColor: 'background.paper',\n transition: 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n '&:focus-within': {\n borderColor: 'primary.main',\n boxShadow: (theme) => `0 0 0 1px ${theme.palette.primary.main}`,\n },\n opacity: disabled ? 0.6 : 1,\n pointerEvents: disabled ? 'none' : 'auto',\n\n // Cancelar el marginTop que Input/Select reservan en labelPosition=\"outside\".\n // El grupo ya lo reservó en su nivel externo.\n '& .MuiFormControl-root, & > .InputGroup__slot > .MuiTextField-root, & > .InputGroup__slot > .MuiFormControl-root': {\n marginTop: 0,\n },\n\n // Quitar el borde del notched outline interno: el borde visible es el del\n // grupo, los separadores son los borderRight/borderBottom de cada slot.\n '& .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n\n // Forzar que todos los campos pinten sus esquinas cuadradas (las esquinas\n // redondeadas se aplican solo al primer/último slot más abajo).\n '& .MuiInputBase-root, & .MuiChip-root': {\n borderRadius: 0,\n },\n\n // Botones integrados: sin radius propio, altura completa, sin sombra.\n '& .MuiButton-root': {\n borderRadius: 0,\n height: '100%',\n boxShadow: 'none',\n border: 'none',\n },\n\n // Slots: cada hijo vive en un slot neutro que lo centra verticalmente.\n '& > .InputGroup__slot': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n // Separador entre slots (horizontal: borderRight / vertical: borderBottom),\n // usando el color de divider del theme.\n ...(isHorizontal\n ? { borderRight: (theme: Theme) => `1px solid ${theme.palette.divider}` }\n : { borderBottom: (theme: Theme) => `1px solid ${theme.palette.divider}` }),\n '&:last-of-type': {\n borderRight: 'none',\n borderBottom: 'none',\n },\n },\n\n // Esquinas redondeadas: primer slot (izquierda o arriba).\n '& > .InputGroup__slot:first-of-type .MuiInputBase-root, & > .InputGroup__slot:first-of-type .MuiButton-root, & > .InputGroup__slot:first-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopLeftRadius: radius,\n borderBottomLeftRadius: radius,\n }\n : {\n borderTopLeftRadius: radius,\n borderTopRightRadius: radius,\n },\n\n // Esquinas redondeadas: último slot (derecha o abajo).\n '& > .InputGroup__slot:last-of-type .MuiInputBase-root, & > .InputGroup__slot:last-of-type .MuiButton-root, & > .InputGroup__slot:last-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopRightRadius: radius,\n borderBottomRightRadius: radius,\n }\n : {\n borderBottomLeftRadius: radius,\n borderBottomRightRadius: radius,\n },\n };\n\n const baseSlotSx: SxProps<Theme> = {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n };\n\n return (\n <Box\n data-testid=\"input-group\"\n className={className}\n aria-disabled={disabled ? 'true' : undefined}\n sx={mergeSx(baseSx, sx)}\n >\n {slots.map((child, i) => (\n <Box\n key={i}\n className=\"InputGroup__slot\"\n sx={mergeSx(baseSlotSx, slotSx)}\n >\n {child}\n </Box>\n ))}\n </Box>\n );\n};\n\nexport default InputGroup;\n"],"names":["Children","isValidElement","jsx","Box"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,UAAU,CAAC,MAAsB,UAA2C;AAChF,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAClD,QAAM,WAAW,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACtD,SAAO,CAAC,GAAG,SAAS,GAAG,QAAQ;AACjC;AAcA,MAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,cAAc;AAAA,EACd;AACF,MAAM;AACJ,QAAM,SAAS,OAAO,iBAAiB,WAAW,GAAG,YAAY,OAAO;AACxE,QAAM,QAAQA,MAAAA,SAAS,QAAQ,QAAQ,EAAE,OAAOC,oBAAc;AAC9D,QAAM,eAAe,gBAAgB;AAErC,QAAM,SAAyB;AAAA;AAAA;AAAA;AAAA,IAI7B,WAAW;AAAA,IAEX,SAAS;AAAA,IACT,eAAe,eAAe,QAAQ;AAAA,IACtC,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,CAAC,UAAU,aAAa,MAAM,QAAQ,OAAO;AAAA,IACrD,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,kBAAkB;AAAA,MAChB,aAAa;AAAA,MACb,WAAW,CAAC,UAAU,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAAA;AAAA,IAE/D,SAAS,WAAW,MAAM;AAAA,IAC1B,eAAe,WAAW,SAAS;AAAA;AAAA;AAAA,IAInC,oHAAoH;AAAA,MAClH,WAAW;AAAA,IAAA;AAAA;AAAA;AAAA,IAKb,sCAAsC;AAAA,MACpC,QAAQ;AAAA,IAAA;AAAA;AAAA;AAAA,IAKV,yCAAyC;AAAA,MACvC,cAAc;AAAA,IAAA;AAAA;AAAA,IAIhB,qBAAqB;AAAA,MACnB,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA;AAAA,IAIV,yBAAyB;AAAA,MACvB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,OAGN,eACA,EAAE,aAAa,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,OACnE,EAAE,cAAc,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,GAAA,IATjD;AAAA,MAUvB,kBAAkB;AAAA,QAChB,aAAa;AAAA,QACb,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA;AAAA,IAIF,kKACE,eACI;AAAA,MACE,qBAAqB;AAAA,MACrB,wBAAwB;AAAA,IAAA,IAE1B;AAAA,MACE,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IAAA;AAAA;AAAA,IAI9B,+JACE,eACI;AAAA,MACE,sBAAsB;AAAA,MACtB,yBAAyB;AAAA,IAAA,IAE3B;AAAA,MACE,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAGR,QAAM,aAA6B;AAAA,IACjC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA;AAGZ,SACEC,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ;AAAA,MACA,iBAAe,WAAW,SAAS;AAAA,MACnC,IAAI,QAAQ,QAAQ,EAAE;AAAA,MAErB,UAAA,MAAM,IAAI,CAAC,OAAO,MACjBD,2BAAAA;AAAAA,QAACC,SAAAA;AAAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UACV,IAAI,QAAQ,YAAY,MAAM;AAAA,UAE7B,UAAA;AAAA,QAAA;AAAA,QAJI;AAAA,MAAA,CAMR;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
1
+ {"version":3,"file":"InputGroup.cjs","sources":["../../../src/components/InputGroup/InputGroup.tsx"],"sourcesContent":["import React, { Children, isValidElement } from 'react';\nimport { Box, type SxProps, type Theme } from '@mui/material';\n\nimport { mergeSx } from '../_shared/mergeSx';\nimport { LABEL_MARGIN_TOP } from '../../theme/tokens';\n\nexport interface InputGroupProps {\n children: React.ReactNode;\n /**\n * sx aplicado al contenedor raíz del grupo. Se mergea sobre los defaults.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada slot individual. Útil para controlar flex/gap entre\n * los hijos del grupo.\n */\n slotSx?: SxProps<Theme>;\n /**\n * Radio del borde del grupo. Default: 10.\n */\n borderRadius?: number | string;\n /**\n * Desactiva visualmente el grupo (no cascada lógica — los hijos deben\n * manejar su propio `disabled`).\n */\n disabled?: boolean;\n /**\n * Orientación del grupo. Default: 'horizontal'.\n */\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\n/**\n * Agrupa visualmente varios componentes de entrada (Input / Select / DatePicker /\n * Button, etc.) compartiendo un solo borde y con separadores internos.\n *\n * El grupo respeta el espacio que Input/Select reservan para su label `outside`\n * (`LABEL_MARGIN_TOP`) moviendo ese reservado al contenedor externo y\n * cancelándolo en los hijos. Los labels siguen flotando por encima del borde\n * del grupo con la misma animación que fuera del grupo.\n *\n * No inspecciona el tipo de cada hijo; aplica los overrides a través de\n * descendant selectors por CSS para funcionar con cualquier wrapper / memoizado.\n */\nexport const InputGroup: React.FC<InputGroupProps> = ({\n children,\n sx,\n slotSx,\n borderRadius = 10,\n disabled,\n orientation = 'horizontal',\n className,\n}) => {\n const radius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n const slots = Children.toArray(children).filter(isValidElement);\n const isHorizontal = orientation === 'horizontal';\n\n const baseSx: SxProps<Theme> = {\n // Respeta el label \"outside\" de Input/Select: los hijos pierden su marginTop\n // (ver más abajo) y el grupo reserva el mismo espacio arriba para que los\n // labels floten por encima del borde del grupo.\n marginTop: LABEL_MARGIN_TOP,\n\n display: 'flex',\n flexDirection: isHorizontal ? 'row' : 'column',\n alignItems: 'stretch',\n width: '100%',\n border: (theme) => `1px solid ${theme.palette.divider}`,\n borderRadius: radius,\n backgroundColor: 'background.paper',\n transition:\n 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n '&:focus-within': {\n borderColor: 'primary.main',\n boxShadow: (theme) => `0 0 0 1px ${theme.palette.primary.main}`,\n },\n opacity: disabled ? 0.6 : 1,\n pointerEvents: disabled ? 'none' : 'auto',\n\n // Cancelar el marginTop que Input/Select reservan en labelPosition=\"outside\".\n // El grupo ya lo reservó en su nivel externo.\n '& .MuiFormControl-root, & > [data-input-group-slot] > .MuiTextField-root, & > [data-input-group-slot] > .MuiFormControl-root':\n {\n marginTop: 0,\n },\n\n // Quitar el borde del notched outline interno: el borde visible es el del\n // grupo, los separadores son los borderRight/borderBottom de cada slot.\n '& .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n\n // Forzar que todos los campos pinten sus esquinas cuadradas (las esquinas\n // redondeadas se aplican solo al primer/último slot más abajo).\n '& .MuiInputBase-root, & .MuiChip-root': {\n borderRadius: 0,\n },\n\n // Botones integrados: sin radius propio, altura completa, sin sombra.\n '& .MuiButton-root': {\n borderRadius: 0,\n height: '100%',\n boxShadow: 'none',\n border: 'none',\n },\n\n // Slots: cada hijo vive en un slot neutro que lo centra verticalmente.\n '& > [data-input-group-slot]': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n // Separador entre slots (horizontal: borderRight / vertical: borderBottom),\n // usando el color de divider del theme.\n ...(isHorizontal\n ? { borderRight: (theme: Theme) => `1px solid ${theme.palette.divider}` }\n : { borderBottom: (theme: Theme) => `1px solid ${theme.palette.divider}` }),\n '&:last-of-type': {\n borderRight: 'none',\n borderBottom: 'none',\n },\n },\n\n // Esquinas redondeadas: primer slot (izquierda o arriba).\n '& > [data-input-group-slot]:first-of-type .MuiInputBase-root, & > [data-input-group-slot]:first-of-type .MuiButton-root, & > [data-input-group-slot]:first-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopLeftRadius: radius,\n borderBottomLeftRadius: radius,\n }\n : {\n borderTopLeftRadius: radius,\n borderTopRightRadius: radius,\n },\n\n // Esquinas redondeadas: último slot (derecha o abajo).\n '& > [data-input-group-slot]:last-of-type .MuiInputBase-root, & > [data-input-group-slot]:last-of-type .MuiButton-root, & > [data-input-group-slot]:last-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopRightRadius: radius,\n borderBottomRightRadius: radius,\n }\n : {\n borderBottomLeftRadius: radius,\n borderBottomRightRadius: radius,\n },\n };\n\n const baseSlotSx: SxProps<Theme> = {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n };\n\n return (\n <Box\n data-testid=\"input-group\"\n className={className}\n aria-disabled={disabled ? 'true' : undefined}\n sx={mergeSx(baseSx, sx)}\n >\n {slots.map((child, i) => {\n const slotKey = (child as React.ReactElement).key ?? i;\n return (\n <Box\n key={slotKey}\n data-input-group-slot\n sx={mergeSx(baseSlotSx, slotSx)}\n >\n {child}\n </Box>\n );\n })}\n </Box>\n );\n};\n\nexport default InputGroup;\n"],"names":["Children","isValidElement","LABEL_MARGIN_TOP","jsx","Box","mergeSx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6CO,MAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,cAAc;AAAA,EACd;AACF,MAAM;AACJ,QAAM,SAAS,OAAO,iBAAiB,WAAW,GAAG,YAAY,OAAO;AACxE,QAAM,QAAQA,MAAAA,SAAS,QAAQ,QAAQ,EAAE,OAAOC,oBAAc;AAC9D,QAAM,eAAe,gBAAgB;AAErC,QAAM,SAAyB;AAAA;AAAA;AAAA;AAAA,IAI7B,WAAWC,OAAAA;AAAAA,IAEX,SAAS;AAAA,IACT,eAAe,eAAe,QAAQ;AAAA,IACtC,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,CAAC,UAAU,aAAa,MAAM,QAAQ,OAAO;AAAA,IACrD,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,YACE;AAAA,IACF,kBAAkB;AAAA,MAChB,aAAa;AAAA,MACb,WAAW,CAAC,UAAU,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAAA;AAAA,IAE/D,SAAS,WAAW,MAAM;AAAA,IAC1B,eAAe,WAAW,SAAS;AAAA;AAAA;AAAA,IAInC,gIACE;AAAA,MACE,WAAW;AAAA,IAAA;AAAA;AAAA;AAAA,IAKf,sCAAsC;AAAA,MACpC,QAAQ;AAAA,IAAA;AAAA;AAAA;AAAA,IAKV,yCAAyC;AAAA,MACvC,cAAc;AAAA,IAAA;AAAA;AAAA,IAIhB,qBAAqB;AAAA,MACnB,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA;AAAA,IAIV,+BAA+B;AAAA,MAC7B,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,OAGN,eACA,EAAE,aAAa,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,OACnE,EAAE,cAAc,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,GAAA,IAT3C;AAAA,MAU7B,kBAAkB;AAAA,QAChB,aAAa;AAAA,QACb,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA;AAAA,IAIF,oLACE,eACI;AAAA,MACE,qBAAqB;AAAA,MACrB,wBAAwB;AAAA,IAAA,IAE1B;AAAA,MACE,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IAAA;AAAA;AAAA,IAI9B,iLACE,eACI;AAAA,MACE,sBAAsB;AAAA,MACtB,yBAAyB;AAAA,IAAA,IAE3B;AAAA,MACE,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAGR,QAAM,aAA6B;AAAA,IACjC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA;AAGZ,SACEC,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ;AAAA,MACA,iBAAe,WAAW,SAAS;AAAA,MACnC,IAAIC,QAAAA,QAAQ,QAAQ,EAAE;AAAA,MAErB,UAAA,MAAM,IAAI,CAAC,OAAO,MAAM;;AACvB,cAAM,WAAW,WAA6B,QAA7B,YAAoC;AACrD,eACEF,2BAAAA;AAAAA,UAACC,SAAAA;AAAAA,UAAA;AAAA,YAEC,yBAAqB;AAAA,YACrB,IAAIC,QAAAA,QAAQ,YAAY,MAAM;AAAA,YAE7B,UAAA;AAAA,UAAA;AAAA,UAJI;AAAA,QAAA;AAAA,MAOX,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP;;;"}
@@ -31,12 +31,12 @@ export interface InputGroupProps {
31
31
  * Button, etc.) compartiendo un solo borde y con separadores internos.
32
32
  *
33
33
  * El grupo respeta el espacio que Input/Select reservan para su label `outside`
34
- * (marginTop=14px) moviendo ese reservado al contenedor externo y cancelándolo
35
- * en los hijos. Los labels siguen flotando por encima del borde del grupo con
36
- * la misma animación que fuera del grupo.
34
+ * (`LABEL_MARGIN_TOP`) moviendo ese reservado al contenedor externo y
35
+ * cancelándolo en los hijos. Los labels siguen flotando por encima del borde
36
+ * del grupo con la misma animación que fuera del grupo.
37
37
  *
38
38
  * No inspecciona el tipo de cada hijo; aplica los overrides a través de
39
39
  * descendant selectors por CSS para funcionar con cualquier wrapper / memoizado.
40
40
  */
41
- declare const InputGroup: React.FC<InputGroupProps>;
41
+ export declare const InputGroup: React.FC<InputGroupProps>;
42
42
  export default InputGroup;
@@ -20,12 +20,8 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import { jsx } from "react/jsx-runtime";
21
21
  import { Children, isValidElement } from "react";
22
22
  import { Box } from "@mui/material";
23
- const mergeSx = (base, extra) => {
24
- if (!extra) return base;
25
- const baseArr = Array.isArray(base) ? base : [base];
26
- const extraArr = Array.isArray(extra) ? extra : [extra];
27
- return [...baseArr, ...extraArr];
28
- };
23
+ import { m as mergeSx } from "../../mergeSx-BXoNZjB_.js";
24
+ import { L as LABEL_MARGIN_TOP } from "../../tokens-BRrcP_p_.js";
29
25
  const InputGroup = ({
30
26
  children,
31
27
  sx,
@@ -42,7 +38,7 @@ const InputGroup = ({
42
38
  // Respeta el label "outside" de Input/Select: los hijos pierden su marginTop
43
39
  // (ver más abajo) y el grupo reserva el mismo espacio arriba para que los
44
40
  // labels floten por encima del borde del grupo.
45
- marginTop: "14px",
41
+ marginTop: LABEL_MARGIN_TOP,
46
42
  display: "flex",
47
43
  flexDirection: isHorizontal ? "row" : "column",
48
44
  alignItems: "stretch",
@@ -59,7 +55,7 @@ const InputGroup = ({
59
55
  pointerEvents: disabled ? "none" : "auto",
60
56
  // Cancelar el marginTop que Input/Select reservan en labelPosition="outside".
61
57
  // El grupo ya lo reservó en su nivel externo.
62
- "& .MuiFormControl-root, & > .InputGroup__slot > .MuiTextField-root, & > .InputGroup__slot > .MuiFormControl-root": {
58
+ "& .MuiFormControl-root, & > [data-input-group-slot] > .MuiTextField-root, & > [data-input-group-slot] > .MuiFormControl-root": {
63
59
  marginTop: 0
64
60
  },
65
61
  // Quitar el borde del notched outline interno: el borde visible es el del
@@ -80,7 +76,7 @@ const InputGroup = ({
80
76
  border: "none"
81
77
  },
82
78
  // Slots: cada hijo vive en un slot neutro que lo centra verticalmente.
83
- "& > .InputGroup__slot": __spreadProps(__spreadValues({
79
+ "& > [data-input-group-slot]": __spreadProps(__spreadValues({
84
80
  flex: 1,
85
81
  display: "flex",
86
82
  alignItems: "center",
@@ -92,7 +88,7 @@ const InputGroup = ({
92
88
  }
93
89
  }),
94
90
  // Esquinas redondeadas: primer slot (izquierda o arriba).
95
- "& > .InputGroup__slot:first-of-type .MuiInputBase-root, & > .InputGroup__slot:first-of-type .MuiButton-root, & > .InputGroup__slot:first-of-type .MuiChip-root": isHorizontal ? {
91
+ "& > [data-input-group-slot]:first-of-type .MuiInputBase-root, & > [data-input-group-slot]:first-of-type .MuiButton-root, & > [data-input-group-slot]:first-of-type .MuiChip-root": isHorizontal ? {
96
92
  borderTopLeftRadius: radius,
97
93
  borderBottomLeftRadius: radius
98
94
  } : {
@@ -100,7 +96,7 @@ const InputGroup = ({
100
96
  borderTopRightRadius: radius
101
97
  },
102
98
  // Esquinas redondeadas: último slot (derecha o abajo).
103
- "& > .InputGroup__slot:last-of-type .MuiInputBase-root, & > .InputGroup__slot:last-of-type .MuiButton-root, & > .InputGroup__slot:last-of-type .MuiChip-root": isHorizontal ? {
99
+ "& > [data-input-group-slot]:last-of-type .MuiInputBase-root, & > [data-input-group-slot]:last-of-type .MuiButton-root, & > [data-input-group-slot]:last-of-type .MuiChip-root": isHorizontal ? {
104
100
  borderTopRightRadius: radius,
105
101
  borderBottomRightRadius: radius
106
102
  } : {
@@ -121,19 +117,24 @@ const InputGroup = ({
121
117
  className,
122
118
  "aria-disabled": disabled ? "true" : void 0,
123
119
  sx: mergeSx(baseSx, sx),
124
- children: slots.map((child, i) => /* @__PURE__ */ jsx(
125
- Box,
126
- {
127
- className: "InputGroup__slot",
128
- sx: mergeSx(baseSlotSx, slotSx),
129
- children: child
130
- },
131
- i
132
- ))
120
+ children: slots.map((child, i) => {
121
+ var _a;
122
+ const slotKey = (_a = child.key) != null ? _a : i;
123
+ return /* @__PURE__ */ jsx(
124
+ Box,
125
+ {
126
+ "data-input-group-slot": true,
127
+ sx: mergeSx(baseSlotSx, slotSx),
128
+ children: child
129
+ },
130
+ slotKey
131
+ );
132
+ })
133
133
  }
134
134
  );
135
135
  };
136
136
  export {
137
- InputGroup
137
+ InputGroup,
138
+ InputGroup as default
138
139
  };
139
140
  //# sourceMappingURL=InputGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroup.js","sources":["../../../src/components/InputGroup/InputGroup.tsx"],"sourcesContent":["import React, { Children, isValidElement } from 'react';\nimport { Box, type SxProps, type Theme } from '@mui/material';\n\nexport interface InputGroupProps {\n children: React.ReactNode;\n /**\n * sx aplicado al contenedor raíz del grupo. Se mergea sobre los defaults.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada slot individual. Útil para controlar flex/gap entre\n * los hijos del grupo.\n */\n slotSx?: SxProps<Theme>;\n /**\n * Radio del borde del grupo. Default: 10.\n */\n borderRadius?: number | string;\n /**\n * Desactiva visualmente el grupo (no cascada lógica — los hijos deben\n * manejar su propio `disabled`).\n */\n disabled?: boolean;\n /**\n * Orientación del grupo. Default: 'horizontal'.\n */\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nconst mergeSx = (base: SxProps<Theme>, extra?: SxProps<Theme>): SxProps<Theme> => {\n if (!extra) return base;\n const baseArr = Array.isArray(base) ? base : [base];\n const extraArr = Array.isArray(extra) ? extra : [extra];\n return [...baseArr, ...extraArr] as SxProps<Theme>;\n};\n\n/**\n * Agrupa visualmente varios componentes de entrada (Input / Select / DatePicker /\n * Button, etc.) compartiendo un solo borde y con separadores internos.\n *\n * El grupo respeta el espacio que Input/Select reservan para su label `outside`\n * (marginTop=14px) moviendo ese reservado al contenedor externo y cancelándolo\n * en los hijos. Los labels siguen flotando por encima del borde del grupo con\n * la misma animación que fuera del grupo.\n *\n * No inspecciona el tipo de cada hijo; aplica los overrides a través de\n * descendant selectors por CSS para funcionar con cualquier wrapper / memoizado.\n */\nconst InputGroup: React.FC<InputGroupProps> = ({\n children,\n sx,\n slotSx,\n borderRadius = 10,\n disabled,\n orientation = 'horizontal',\n className,\n}) => {\n const radius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n const slots = Children.toArray(children).filter(isValidElement);\n const isHorizontal = orientation === 'horizontal';\n\n const baseSx: SxProps<Theme> = {\n // Respeta el label \"outside\" de Input/Select: los hijos pierden su marginTop\n // (ver más abajo) y el grupo reserva el mismo espacio arriba para que los\n // labels floten por encima del borde del grupo.\n marginTop: '14px',\n\n display: 'flex',\n flexDirection: isHorizontal ? 'row' : 'column',\n alignItems: 'stretch',\n width: '100%',\n border: (theme) => `1px solid ${theme.palette.divider}`,\n borderRadius: radius,\n backgroundColor: 'background.paper',\n transition: 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n '&:focus-within': {\n borderColor: 'primary.main',\n boxShadow: (theme) => `0 0 0 1px ${theme.palette.primary.main}`,\n },\n opacity: disabled ? 0.6 : 1,\n pointerEvents: disabled ? 'none' : 'auto',\n\n // Cancelar el marginTop que Input/Select reservan en labelPosition=\"outside\".\n // El grupo ya lo reservó en su nivel externo.\n '& .MuiFormControl-root, & > .InputGroup__slot > .MuiTextField-root, & > .InputGroup__slot > .MuiFormControl-root': {\n marginTop: 0,\n },\n\n // Quitar el borde del notched outline interno: el borde visible es el del\n // grupo, los separadores son los borderRight/borderBottom de cada slot.\n '& .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n\n // Forzar que todos los campos pinten sus esquinas cuadradas (las esquinas\n // redondeadas se aplican solo al primer/último slot más abajo).\n '& .MuiInputBase-root, & .MuiChip-root': {\n borderRadius: 0,\n },\n\n // Botones integrados: sin radius propio, altura completa, sin sombra.\n '& .MuiButton-root': {\n borderRadius: 0,\n height: '100%',\n boxShadow: 'none',\n border: 'none',\n },\n\n // Slots: cada hijo vive en un slot neutro que lo centra verticalmente.\n '& > .InputGroup__slot': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n // Separador entre slots (horizontal: borderRight / vertical: borderBottom),\n // usando el color de divider del theme.\n ...(isHorizontal\n ? { borderRight: (theme: Theme) => `1px solid ${theme.palette.divider}` }\n : { borderBottom: (theme: Theme) => `1px solid ${theme.palette.divider}` }),\n '&:last-of-type': {\n borderRight: 'none',\n borderBottom: 'none',\n },\n },\n\n // Esquinas redondeadas: primer slot (izquierda o arriba).\n '& > .InputGroup__slot:first-of-type .MuiInputBase-root, & > .InputGroup__slot:first-of-type .MuiButton-root, & > .InputGroup__slot:first-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopLeftRadius: radius,\n borderBottomLeftRadius: radius,\n }\n : {\n borderTopLeftRadius: radius,\n borderTopRightRadius: radius,\n },\n\n // Esquinas redondeadas: último slot (derecha o abajo).\n '& > .InputGroup__slot:last-of-type .MuiInputBase-root, & > .InputGroup__slot:last-of-type .MuiButton-root, & > .InputGroup__slot:last-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopRightRadius: radius,\n borderBottomRightRadius: radius,\n }\n : {\n borderBottomLeftRadius: radius,\n borderBottomRightRadius: radius,\n },\n };\n\n const baseSlotSx: SxProps<Theme> = {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n };\n\n return (\n <Box\n data-testid=\"input-group\"\n className={className}\n aria-disabled={disabled ? 'true' : undefined}\n sx={mergeSx(baseSx, sx)}\n >\n {slots.map((child, i) => (\n <Box\n key={i}\n className=\"InputGroup__slot\"\n sx={mergeSx(baseSlotSx, slotSx)}\n >\n {child}\n </Box>\n ))}\n </Box>\n );\n};\n\nexport default InputGroup;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,UAAU,CAAC,MAAsB,UAA2C;AAChF,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAClD,QAAM,WAAW,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACtD,SAAO,CAAC,GAAG,SAAS,GAAG,QAAQ;AACjC;AAcA,MAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,cAAc;AAAA,EACd;AACF,MAAM;AACJ,QAAM,SAAS,OAAO,iBAAiB,WAAW,GAAG,YAAY,OAAO;AACxE,QAAM,QAAQ,SAAS,QAAQ,QAAQ,EAAE,OAAO,cAAc;AAC9D,QAAM,eAAe,gBAAgB;AAErC,QAAM,SAAyB;AAAA;AAAA;AAAA;AAAA,IAI7B,WAAW;AAAA,IAEX,SAAS;AAAA,IACT,eAAe,eAAe,QAAQ;AAAA,IACtC,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,CAAC,UAAU,aAAa,MAAM,QAAQ,OAAO;AAAA,IACrD,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,kBAAkB;AAAA,MAChB,aAAa;AAAA,MACb,WAAW,CAAC,UAAU,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAAA;AAAA,IAE/D,SAAS,WAAW,MAAM;AAAA,IAC1B,eAAe,WAAW,SAAS;AAAA;AAAA;AAAA,IAInC,oHAAoH;AAAA,MAClH,WAAW;AAAA,IAAA;AAAA;AAAA;AAAA,IAKb,sCAAsC;AAAA,MACpC,QAAQ;AAAA,IAAA;AAAA;AAAA;AAAA,IAKV,yCAAyC;AAAA,MACvC,cAAc;AAAA,IAAA;AAAA;AAAA,IAIhB,qBAAqB;AAAA,MACnB,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA;AAAA,IAIV,yBAAyB;AAAA,MACvB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,OAGN,eACA,EAAE,aAAa,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,OACnE,EAAE,cAAc,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,GAAA,IATjD;AAAA,MAUvB,kBAAkB;AAAA,QAChB,aAAa;AAAA,QACb,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA;AAAA,IAIF,kKACE,eACI;AAAA,MACE,qBAAqB;AAAA,MACrB,wBAAwB;AAAA,IAAA,IAE1B;AAAA,MACE,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IAAA;AAAA;AAAA,IAI9B,+JACE,eACI;AAAA,MACE,sBAAsB;AAAA,MACtB,yBAAyB;AAAA,IAAA,IAE3B;AAAA,MACE,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAGR,QAAM,aAA6B;AAAA,IACjC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA;AAGZ,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ;AAAA,MACA,iBAAe,WAAW,SAAS;AAAA,MACnC,IAAI,QAAQ,QAAQ,EAAE;AAAA,MAErB,UAAA,MAAM,IAAI,CAAC,OAAO,MACjB;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UACV,IAAI,QAAQ,YAAY,MAAM;AAAA,UAE7B,UAAA;AAAA,QAAA;AAAA,QAJI;AAAA,MAAA,CAMR;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"InputGroup.js","sources":["../../../src/components/InputGroup/InputGroup.tsx"],"sourcesContent":["import React, { Children, isValidElement } from 'react';\nimport { Box, type SxProps, type Theme } from '@mui/material';\n\nimport { mergeSx } from '../_shared/mergeSx';\nimport { LABEL_MARGIN_TOP } from '../../theme/tokens';\n\nexport interface InputGroupProps {\n children: React.ReactNode;\n /**\n * sx aplicado al contenedor raíz del grupo. Se mergea sobre los defaults.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada slot individual. Útil para controlar flex/gap entre\n * los hijos del grupo.\n */\n slotSx?: SxProps<Theme>;\n /**\n * Radio del borde del grupo. Default: 10.\n */\n borderRadius?: number | string;\n /**\n * Desactiva visualmente el grupo (no cascada lógica — los hijos deben\n * manejar su propio `disabled`).\n */\n disabled?: boolean;\n /**\n * Orientación del grupo. Default: 'horizontal'.\n */\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n}\n\n/**\n * Agrupa visualmente varios componentes de entrada (Input / Select / DatePicker /\n * Button, etc.) compartiendo un solo borde y con separadores internos.\n *\n * El grupo respeta el espacio que Input/Select reservan para su label `outside`\n * (`LABEL_MARGIN_TOP`) moviendo ese reservado al contenedor externo y\n * cancelándolo en los hijos. Los labels siguen flotando por encima del borde\n * del grupo con la misma animación que fuera del grupo.\n *\n * No inspecciona el tipo de cada hijo; aplica los overrides a través de\n * descendant selectors por CSS para funcionar con cualquier wrapper / memoizado.\n */\nexport const InputGroup: React.FC<InputGroupProps> = ({\n children,\n sx,\n slotSx,\n borderRadius = 10,\n disabled,\n orientation = 'horizontal',\n className,\n}) => {\n const radius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n const slots = Children.toArray(children).filter(isValidElement);\n const isHorizontal = orientation === 'horizontal';\n\n const baseSx: SxProps<Theme> = {\n // Respeta el label \"outside\" de Input/Select: los hijos pierden su marginTop\n // (ver más abajo) y el grupo reserva el mismo espacio arriba para que los\n // labels floten por encima del borde del grupo.\n marginTop: LABEL_MARGIN_TOP,\n\n display: 'flex',\n flexDirection: isHorizontal ? 'row' : 'column',\n alignItems: 'stretch',\n width: '100%',\n border: (theme) => `1px solid ${theme.palette.divider}`,\n borderRadius: radius,\n backgroundColor: 'background.paper',\n transition:\n 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n '&:focus-within': {\n borderColor: 'primary.main',\n boxShadow: (theme) => `0 0 0 1px ${theme.palette.primary.main}`,\n },\n opacity: disabled ? 0.6 : 1,\n pointerEvents: disabled ? 'none' : 'auto',\n\n // Cancelar el marginTop que Input/Select reservan en labelPosition=\"outside\".\n // El grupo ya lo reservó en su nivel externo.\n '& .MuiFormControl-root, & > [data-input-group-slot] > .MuiTextField-root, & > [data-input-group-slot] > .MuiFormControl-root':\n {\n marginTop: 0,\n },\n\n // Quitar el borde del notched outline interno: el borde visible es el del\n // grupo, los separadores son los borderRight/borderBottom de cada slot.\n '& .MuiOutlinedInput-notchedOutline': {\n border: 'none',\n },\n\n // Forzar que todos los campos pinten sus esquinas cuadradas (las esquinas\n // redondeadas se aplican solo al primer/último slot más abajo).\n '& .MuiInputBase-root, & .MuiChip-root': {\n borderRadius: 0,\n },\n\n // Botones integrados: sin radius propio, altura completa, sin sombra.\n '& .MuiButton-root': {\n borderRadius: 0,\n height: '100%',\n boxShadow: 'none',\n border: 'none',\n },\n\n // Slots: cada hijo vive en un slot neutro que lo centra verticalmente.\n '& > [data-input-group-slot]': {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n // Separador entre slots (horizontal: borderRight / vertical: borderBottom),\n // usando el color de divider del theme.\n ...(isHorizontal\n ? { borderRight: (theme: Theme) => `1px solid ${theme.palette.divider}` }\n : { borderBottom: (theme: Theme) => `1px solid ${theme.palette.divider}` }),\n '&:last-of-type': {\n borderRight: 'none',\n borderBottom: 'none',\n },\n },\n\n // Esquinas redondeadas: primer slot (izquierda o arriba).\n '& > [data-input-group-slot]:first-of-type .MuiInputBase-root, & > [data-input-group-slot]:first-of-type .MuiButton-root, & > [data-input-group-slot]:first-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopLeftRadius: radius,\n borderBottomLeftRadius: radius,\n }\n : {\n borderTopLeftRadius: radius,\n borderTopRightRadius: radius,\n },\n\n // Esquinas redondeadas: último slot (derecha o abajo).\n '& > [data-input-group-slot]:last-of-type .MuiInputBase-root, & > [data-input-group-slot]:last-of-type .MuiButton-root, & > [data-input-group-slot]:last-of-type .MuiChip-root':\n isHorizontal\n ? {\n borderTopRightRadius: radius,\n borderBottomRightRadius: radius,\n }\n : {\n borderBottomLeftRadius: radius,\n borderBottomRightRadius: radius,\n },\n };\n\n const baseSlotSx: SxProps<Theme> = {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n };\n\n return (\n <Box\n data-testid=\"input-group\"\n className={className}\n aria-disabled={disabled ? 'true' : undefined}\n sx={mergeSx(baseSx, sx)}\n >\n {slots.map((child, i) => {\n const slotKey = (child as React.ReactElement).key ?? i;\n return (\n <Box\n key={slotKey}\n data-input-group-slot\n sx={mergeSx(baseSlotSx, slotSx)}\n >\n {child}\n </Box>\n );\n })}\n </Box>\n );\n};\n\nexport default InputGroup;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA6CO,MAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,cAAc;AAAA,EACd;AACF,MAAM;AACJ,QAAM,SAAS,OAAO,iBAAiB,WAAW,GAAG,YAAY,OAAO;AACxE,QAAM,QAAQ,SAAS,QAAQ,QAAQ,EAAE,OAAO,cAAc;AAC9D,QAAM,eAAe,gBAAgB;AAErC,QAAM,SAAyB;AAAA;AAAA;AAAA;AAAA,IAI7B,WAAW;AAAA,IAEX,SAAS;AAAA,IACT,eAAe,eAAe,QAAQ;AAAA,IACtC,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,CAAC,UAAU,aAAa,MAAM,QAAQ,OAAO;AAAA,IACrD,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,YACE;AAAA,IACF,kBAAkB;AAAA,MAChB,aAAa;AAAA,MACb,WAAW,CAAC,UAAU,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAAA;AAAA,IAE/D,SAAS,WAAW,MAAM;AAAA,IAC1B,eAAe,WAAW,SAAS;AAAA;AAAA;AAAA,IAInC,gIACE;AAAA,MACE,WAAW;AAAA,IAAA;AAAA;AAAA;AAAA,IAKf,sCAAsC;AAAA,MACpC,QAAQ;AAAA,IAAA;AAAA;AAAA;AAAA,IAKV,yCAAyC;AAAA,MACvC,cAAc;AAAA,IAAA;AAAA;AAAA,IAIhB,qBAAqB;AAAA,MACnB,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA;AAAA,IAIV,+BAA+B;AAAA,MAC7B,MAAM;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,OAGN,eACA,EAAE,aAAa,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,OACnE,EAAE,cAAc,CAAC,UAAiB,aAAa,MAAM,QAAQ,OAAO,GAAA,IAT3C;AAAA,MAU7B,kBAAkB;AAAA,QAChB,aAAa;AAAA,QACb,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA;AAAA,IAIF,oLACE,eACI;AAAA,MACE,qBAAqB;AAAA,MACrB,wBAAwB;AAAA,IAAA,IAE1B;AAAA,MACE,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IAAA;AAAA;AAAA,IAI9B,iLACE,eACI;AAAA,MACE,sBAAsB;AAAA,MACtB,yBAAyB;AAAA,IAAA,IAE3B;AAAA,MACE,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAGR,QAAM,aAA6B;AAAA,IACjC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA;AAGZ,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ;AAAA,MACA,iBAAe,WAAW,SAAS;AAAA,MACnC,IAAI,QAAQ,QAAQ,EAAE;AAAA,MAErB,UAAA,MAAM,IAAI,CAAC,OAAO,MAAM;;AACvB,cAAM,WAAW,WAA6B,QAA7B,YAAoC;AACrD,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,yBAAqB;AAAA,YACrB,IAAI,QAAQ,YAAY,MAAM;AAAA,YAE7B,UAAA;AAAA,UAAA;AAAA,UAJI;AAAA,QAAA;AAAA,MAOX,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +1,2 @@
1
- export { default as InputGroup } from './InputGroup';
1
+ export { InputGroup, default } from './InputGroup';
2
+ export type { InputGroupProps } from './InputGroup';
@@ -1,2 +1,6 @@
1
1
  export * from './InputGroup/index'
2
2
  export {}
3
+ import _default from './InputGroup/index'
4
+ export default _default
5
+ export * from './InputGroup/index'
6
+ export {}