@soyfri/shared-library 2.0.0-beta8 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/Alert-B3SMPD1s.cjs +31 -0
  2. package/Alert-B3SMPD1s.cjs.map +1 -0
  3. package/Alert-YsPScpSE.js +32 -0
  4. package/Alert-YsPScpSE.js.map +1 -0
  5. package/{Autocomplete-BA-cGASd.js → Autocomplete-C_lW1VER.js} +57 -36
  6. package/Autocomplete-C_lW1VER.js.map +1 -0
  7. package/{Autocomplete-C2x-lBvZ.cjs → Autocomplete-CejWztBY.cjs} +56 -35
  8. package/Autocomplete-CejWztBY.cjs.map +1 -0
  9. package/{Avatar-9L7YMxya.cjs → Avatar-Dw5rzayR.cjs} +28 -24
  10. package/Avatar-Dw5rzayR.cjs.map +1 -0
  11. package/{Avatar-BJTr-PBd.js → Avatar-H8akSege.js} +28 -24
  12. package/Avatar-H8akSege.js.map +1 -0
  13. package/Breadcrumbs-B9I3vxPb.cjs +25 -0
  14. package/Breadcrumbs-B9I3vxPb.cjs.map +1 -0
  15. package/Breadcrumbs-C41SPbtX.js +26 -0
  16. package/Breadcrumbs-C41SPbtX.js.map +1 -0
  17. package/Button-C17mExpd.cjs.map +1 -1
  18. package/Button-UkkP-bNw.js.map +1 -1
  19. package/ButtonGroup-CNunDofQ.cjs +33 -0
  20. package/ButtonGroup-CNunDofQ.cjs.map +1 -0
  21. package/ButtonGroup-CcKUZ-lT.js +34 -0
  22. package/ButtonGroup-CcKUZ-lT.js.map +1 -0
  23. package/Card-DYKGY-NG.js +116 -0
  24. package/Card-DYKGY-NG.js.map +1 -0
  25. package/Card-Dr1-ATRY.cjs +115 -0
  26. package/Card-Dr1-ATRY.cjs.map +1 -0
  27. package/Checkbox-BCqMFWt4.cjs +187 -0
  28. package/Checkbox-BCqMFWt4.cjs.map +1 -0
  29. package/Checkbox-gB5YKkVo.js +188 -0
  30. package/Checkbox-gB5YKkVo.js.map +1 -0
  31. package/{DatePicker-8f_9bwhS.js → DatePicker-_IGWc3I5.js} +38 -62
  32. package/DatePicker-_IGWc3I5.js.map +1 -0
  33. package/{DatePicker-DLSfkgGA.cjs → DatePicker-t7uDTZMl.cjs} +42 -66
  34. package/DatePicker-t7uDTZMl.cjs.map +1 -0
  35. package/{DateTimePicker-CWNW09-O.cjs → DateTimePicker-BxQyjTCY.cjs} +33 -24
  36. package/DateTimePicker-BxQyjTCY.cjs.map +1 -0
  37. package/{DateTimePicker-D4L9GAod.js → DateTimePicker-CrmWav_j.js} +29 -20
  38. package/DateTimePicker-CrmWav_j.js.map +1 -0
  39. package/Divider-BApcM5CV.js +28 -0
  40. package/Divider-BApcM5CV.js.map +1 -0
  41. package/Divider-CIY0JK4U.cjs +27 -0
  42. package/Divider-CIY0JK4U.cjs.map +1 -0
  43. package/{Input-Cp911l23.js → Input-BL1NUIbr.js} +36 -15
  44. package/Input-BL1NUIbr.js.map +1 -0
  45. package/{Input-DI0jfq5X.cjs → Input-BcLJlPRo.cjs} +39 -18
  46. package/Input-BcLJlPRo.cjs.map +1 -0
  47. package/{Modal-Bnz6d9m9.js → Modal-C_QY7ZzY.js} +137 -105
  48. package/Modal-C_QY7ZzY.js.map +1 -0
  49. package/{Modal-Bm_HH9cv.cjs → Modal-D_6ZdSzw.cjs} +132 -100
  50. package/Modal-D_6ZdSzw.cjs.map +1 -0
  51. package/README.md +181 -173
  52. package/{RadioGroup-CxqDHap1.cjs → RadioGroup-Dd0rHXSX.cjs} +10 -8
  53. package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  54. package/{RadioGroup-DMi9FvMP.js → RadioGroup-bO-ahP9T.js} +10 -8
  55. package/RadioGroup-bO-ahP9T.js.map +1 -0
  56. package/{Select-3CBOfM2H.js → Select-BY5Y0qZ1.js} +160 -231
  57. package/Select-BY5Y0qZ1.js.map +1 -0
  58. package/{Select-Bku4f4f8.cjs → Select-CURrHSyl.cjs} +155 -226
  59. package/Select-CURrHSyl.cjs.map +1 -0
  60. package/Spinner-B6sThC1p.js +74 -0
  61. package/Spinner-B6sThC1p.js.map +1 -0
  62. package/Spinner-D7qRmNS9.cjs +73 -0
  63. package/Spinner-D7qRmNS9.cjs.map +1 -0
  64. package/StatusMessage-B3nXpuRl.cjs +88 -0
  65. package/StatusMessage-B3nXpuRl.cjs.map +1 -0
  66. package/StatusMessage-D0WgSBx7.js +89 -0
  67. package/StatusMessage-D0WgSBx7.js.map +1 -0
  68. package/Step-BArsou1V.js +301 -0
  69. package/Step-BArsou1V.js.map +1 -0
  70. package/Step-Nd7SJbRZ.cjs +300 -0
  71. package/Step-Nd7SJbRZ.cjs.map +1 -0
  72. package/{Switch-BIeobv6i.cjs → Switch-CQFOopYy.cjs} +6 -3
  73. package/Switch-CQFOopYy.cjs.map +1 -0
  74. package/{Switch-DQEOxM2R.js → Switch-D72dpkH2.js} +6 -3
  75. package/Switch-D72dpkH2.js.map +1 -0
  76. package/Tab-D1S7kxXI.cjs +137 -0
  77. package/Tab-D1S7kxXI.cjs.map +1 -0
  78. package/Tab-DycIMXmQ.js +138 -0
  79. package/Tab-DycIMXmQ.js.map +1 -0
  80. package/components/ActionMenu/ActionMenu.cjs +52 -52
  81. package/components/ActionMenu/ActionMenu.cjs.map +1 -1
  82. package/components/ActionMenu/ActionMenu.d.ts +20 -36
  83. package/components/ActionMenu/ActionMenu.js +55 -55
  84. package/components/ActionMenu/ActionMenu.js.map +1 -1
  85. package/components/ActionMenu/index.d.ts +2 -2
  86. package/components/Alert/Alert.cjs +6 -0
  87. package/components/Alert/Alert.cjs.map +1 -0
  88. package/components/Alert/Alert.d.ts +31 -0
  89. package/components/Alert/Alert.js +6 -0
  90. package/components/Alert/Alert.js.map +1 -0
  91. package/components/Alert/index.d.ts +2 -0
  92. package/components/Alert.d.ts +6 -0
  93. package/components/AppBar/AppBar.cjs +2 -219
  94. package/components/AppBar/AppBar.cjs.map +1 -1
  95. package/components/AppBar/AppBar.d.ts +6 -6
  96. package/components/AppBar/AppBar.js +5 -222
  97. package/components/AppBar/AppBar.js.map +1 -1
  98. package/components/AppBar/index.d.ts +0 -6
  99. package/components/Autocomplete/Autocomplete.cjs +1 -1
  100. package/components/Autocomplete/Autocomplete.d.ts +8 -6
  101. package/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
  102. package/components/Autocomplete/Autocomplete.js +1 -1
  103. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  104. package/components/Autocomplete/index.d.ts +1 -1
  105. package/components/Avatar/Avatar.cjs +1 -1
  106. package/components/Avatar/Avatar.d.ts +16 -1
  107. package/components/Avatar/Avatar.js +1 -1
  108. package/components/Avatar/index.d.ts +1 -0
  109. package/components/Breadcrumbs/Breadcrumbs.cjs +6 -0
  110. package/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -0
  111. package/components/Breadcrumbs/Breadcrumbs.d.ts +16 -0
  112. package/components/Breadcrumbs/Breadcrumbs.js +6 -0
  113. package/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  114. package/components/Breadcrumbs/index.d.ts +2 -0
  115. package/components/Breadcrumbs.d.ts +6 -0
  116. package/components/Button/Button.d.ts +5 -5
  117. package/components/Button/index.d.ts +1 -0
  118. package/components/ButtonGroup/ButtonGroup.cjs +6 -0
  119. package/components/ButtonGroup/ButtonGroup.cjs.map +1 -0
  120. package/components/ButtonGroup/ButtonGroup.d.ts +18 -0
  121. package/components/ButtonGroup/ButtonGroup.js +6 -0
  122. package/components/ButtonGroup/ButtonGroup.js.map +1 -0
  123. package/components/ButtonGroup/index.d.ts +2 -0
  124. package/components/ButtonGroup.d.ts +6 -0
  125. package/components/Card/Card.cjs +1 -4
  126. package/components/Card/Card.cjs.map +1 -1
  127. package/components/Card/Card.d.ts +21 -50
  128. package/components/Card/Card.js +1 -4
  129. package/components/Card/Card.sx.d.ts +3 -6
  130. package/components/Card/index.d.ts +1 -1
  131. package/components/Checkbox/Checkbox.cjs +6 -0
  132. package/components/Checkbox/Checkbox.cjs.map +1 -0
  133. package/components/Checkbox/Checkbox.d.ts +55 -0
  134. package/components/Checkbox/Checkbox.js +6 -0
  135. package/components/Checkbox/Checkbox.js.map +1 -0
  136. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  137. package/components/Checkbox/index.d.ts +2 -0
  138. package/components/Checkbox.d.ts +6 -0
  139. package/components/Chip/Chip.cjs +2 -1
  140. package/components/Chip/Chip.cjs.map +1 -1
  141. package/components/Chip/Chip.js +3 -2
  142. package/components/Chip/index.d.ts +2 -1
  143. package/components/Chip.d.ts +4 -0
  144. package/components/DatePicker/DatePicker.cjs +1 -1
  145. package/components/DatePicker/DatePicker.d.ts +1 -13
  146. package/components/DatePicker/DatePicker.js +1 -1
  147. package/components/DatePicker/index.d.ts +1 -1
  148. package/components/DateTimePicker/DateTimePicker.cjs +1 -1
  149. package/components/DateTimePicker/DateTimePicker.d.ts +10 -6
  150. package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
  151. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
  152. package/components/DateTimePicker/DateTimePicker.js +1 -1
  153. package/components/DateTimePicker/index.d.ts +1 -1
  154. package/components/Divider/Divider.cjs +6 -0
  155. package/components/Divider/Divider.cjs.map +1 -0
  156. package/components/Divider/Divider.d.ts +17 -0
  157. package/components/Divider/Divider.js +6 -0
  158. package/components/Divider/Divider.js.map +1 -0
  159. package/components/Divider/index.d.ts +2 -0
  160. package/components/Divider.d.ts +6 -0
  161. package/components/Drawer/Drawer.cjs +10 -6
  162. package/components/Drawer/Drawer.cjs.map +1 -1
  163. package/components/Drawer/Drawer.js +11 -7
  164. package/components/Drawer/Drawer.js.map +1 -1
  165. package/components/Drawer/DrawerItem.d.ts +6 -1
  166. package/components/Gallery/Gallery.cjs +154 -79
  167. package/components/Gallery/Gallery.cjs.map +1 -1
  168. package/components/Gallery/Gallery.d.ts +25 -9
  169. package/components/Gallery/Gallery.js +154 -79
  170. package/components/Gallery/Gallery.js.map +1 -1
  171. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  172. package/components/Gallery/GalleryMain.d.ts +3 -7
  173. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  174. package/components/Gallery/index.d.ts +2 -1
  175. package/components/Gallery.d.ts +4 -0
  176. package/components/Icon/Icon.cjs +6 -8
  177. package/components/Icon/Icon.cjs.map +1 -1
  178. package/components/Icon/Icon.d.ts +11 -17
  179. package/components/Icon/Icon.js +6 -8
  180. package/components/Icon/Icon.js.map +1 -1
  181. package/components/Icon/index.d.ts +2 -1
  182. package/components/Icon.d.ts +4 -0
  183. package/components/Input/Input.cjs +1 -1
  184. package/components/Input/Input.d.ts +13 -2
  185. package/components/Input/Input.helpers.d.ts +4 -4
  186. package/components/Input/Input.js +1 -1
  187. package/components/Input/index.d.ts +1 -1
  188. package/components/InputGroup/InputGroup.cjs +23 -22
  189. package/components/InputGroup/InputGroup.cjs.map +1 -1
  190. package/components/InputGroup/InputGroup.d.ts +4 -4
  191. package/components/InputGroup/InputGroup.js +22 -21
  192. package/components/InputGroup/InputGroup.js.map +1 -1
  193. package/components/InputGroup/index.d.ts +2 -1
  194. package/components/InputGroup.d.ts +4 -0
  195. package/components/Modal/Modal.cjs +2 -2
  196. package/components/Modal/Modal.d.ts +27 -5
  197. package/components/Modal/Modal.js +2 -2
  198. package/components/Modal/ModalBody.d.ts +6 -1
  199. package/components/Modal/ModalFooter.d.ts +4 -4
  200. package/components/Modal/ModalHeader.d.ts +6 -1
  201. package/components/Modal/index.d.ts +3 -2
  202. package/components/RadioGroup/RadioGroup.cjs +1 -1
  203. package/components/RadioGroup/RadioGroup.d.ts +9 -3
  204. package/components/RadioGroup/RadioGroup.js +1 -1
  205. package/components/RadioGroup/index.d.ts +1 -1
  206. package/components/Select/Select.cjs +1 -1
  207. package/components/Select/Select.d.ts +37 -18
  208. package/components/Select/Select.helpers.d.ts +5 -19
  209. package/components/Select/Select.js +1 -1
  210. package/components/Select/index.d.ts +1 -1
  211. package/components/Spinner/Spinner.cjs +6 -0
  212. package/components/Spinner/Spinner.cjs.map +1 -0
  213. package/components/Spinner/Spinner.d.ts +26 -0
  214. package/components/Spinner/Spinner.js +6 -0
  215. package/components/Spinner/Spinner.js.map +1 -0
  216. package/components/Spinner/index.d.ts +2 -0
  217. package/components/Spinner.d.ts +6 -0
  218. package/components/Stat/Stat.cjs +2 -2
  219. package/components/Stat/Stat.js +3 -3
  220. package/components/Stat/Stat.js.map +1 -1
  221. package/components/Stat/index.d.ts +2 -1
  222. package/components/Stat.d.ts +4 -0
  223. package/components/StatusMessage/StatusMessage.cjs +1 -1
  224. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  225. package/components/StatusMessage/StatusMessage.js +1 -1
  226. package/components/Stepper/Stepper.cjs +6 -2
  227. package/components/Stepper/Stepper.cjs.map +1 -1
  228. package/components/Stepper/Stepper.d.ts +9 -8
  229. package/components/Stepper/Stepper.js +6 -2
  230. package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +28 -22
  231. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  232. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  233. package/components/Stepper/index.d.ts +6 -2
  234. package/components/Stepper.d.ts +4 -0
  235. package/components/Switch/Switch.cjs +1 -1
  236. package/components/Switch/Switch.d.ts +7 -2
  237. package/components/Switch/Switch.js +1 -1
  238. package/components/Tabs/Tab.d.ts +13 -2
  239. package/components/Tabs/Tabs.cjs +3 -2
  240. package/components/Tabs/Tabs.cjs.map +1 -1
  241. package/components/Tabs/Tabs.d.ts +33 -16
  242. package/components/Tabs/Tabs.js +3 -2
  243. package/components/Tabs/index.d.ts +4 -2
  244. package/components/Tabs.d.ts +4 -0
  245. package/components/Timeline/Timeline.cjs +3 -2
  246. package/components/Timeline/Timeline.cjs.map +1 -1
  247. package/components/Timeline/Timeline.d.ts +4 -8
  248. package/components/Timeline/Timeline.js +3 -2
  249. package/components/Timeline/Timeline.js.map +1 -1
  250. package/components/Timeline/index.d.ts +4 -2
  251. package/components/Timeline.d.ts +4 -0
  252. package/components/_shared/mergeSx.d.ts +7 -0
  253. package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  254. package/formField.sx-8_QRnKxv.js.map +1 -0
  255. package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  256. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  257. package/index.cjs +49 -26
  258. package/index.cjs.map +1 -1
  259. package/index.d.ts +13 -1
  260. package/index.js +45 -25
  261. package/index.js.map +1 -1
  262. package/local/affiliations/affiliations.dev.soyfri.com-key.pem +28 -0
  263. package/local/affiliations/affiliations.dev.soyfri.com.pem +27 -0
  264. package/local/aficiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  265. package/local/aficiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  266. package/local/afiliaciones/afiliaciones.dev.soyfri.com-key.pem +28 -0
  267. package/local/afiliaciones/afiliaciones.dev.soyfri.com.pem +27 -0
  268. package/local/root/rootCA-key.pem +40 -0
  269. package/local/root/rootCA.pem +30 -0
  270. package/local/soporte/supportweb.dev.soyfri.com-key.pem +28 -0
  271. package/local/soporte/supportweb.dev.soyfri.com.pem +27 -0
  272. package/local/support/supportweb.dev.soyfri.com-key.pem +28 -0
  273. package/local/support/supportweb.dev.soyfri.com.pem +27 -0
  274. package/mergeSx-BXoNZjB_.js +10 -0
  275. package/mergeSx-BXoNZjB_.js.map +1 -0
  276. package/mergeSx-Dbccoo_H.cjs +9 -0
  277. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  278. package/mui.d.ts +2 -1
  279. package/package.json +83 -76
  280. package/theme/componentStyles.d.ts +1 -1
  281. package/tokens-BRrcP_p_.js +21 -0
  282. package/tokens-BRrcP_p_.js.map +1 -0
  283. package/tokens-jaWWNk39.cjs +20 -0
  284. package/tokens-jaWWNk39.cjs.map +1 -0
  285. package/utils/index.d.ts +2 -0
  286. package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  287. package/Autocomplete-BA-cGASd.js.map +0 -1
  288. package/Autocomplete-C2x-lBvZ.cjs.map +0 -1
  289. package/Avatar-9L7YMxya.cjs.map +0 -1
  290. package/Avatar-BJTr-PBd.js.map +0 -1
  291. package/Card-DG_crfkK.cjs +0 -185
  292. package/Card-DG_crfkK.cjs.map +0 -1
  293. package/Card-Ug-ttVSh.js +0 -186
  294. package/Card-Ug-ttVSh.js.map +0 -1
  295. package/DatePicker-8f_9bwhS.js.map +0 -1
  296. package/DatePicker-DLSfkgGA.cjs.map +0 -1
  297. package/DateRangePicker-BVpeJCHI.js +0 -76
  298. package/DateRangePicker-BVpeJCHI.js.map +0 -1
  299. package/DateRangePicker-B_hKQhbj.cjs +0 -75
  300. package/DateRangePicker-B_hKQhbj.cjs.map +0 -1
  301. package/DateTimePicker-CWNW09-O.cjs.map +0 -1
  302. package/DateTimePicker-D4L9GAod.js.map +0 -1
  303. package/Input-Cp911l23.js.map +0 -1
  304. package/Input-DI0jfq5X.cjs.map +0 -1
  305. package/Modal-Bm_HH9cv.cjs.map +0 -1
  306. package/Modal-Bnz6d9m9.js.map +0 -1
  307. package/RadioGroup-CxqDHap1.cjs.map +0 -1
  308. package/RadioGroup-DMi9FvMP.js.map +0 -1
  309. package/Select-3CBOfM2H.js.map +0 -1
  310. package/Select-Bku4f4f8.cjs.map +0 -1
  311. package/StatusMessage-C5B6oGZ_.cjs +0 -78
  312. package/StatusMessage-C5B6oGZ_.cjs.map +0 -1
  313. package/StatusMessage-D1GlfQdz.js +0 -79
  314. package/StatusMessage-D1GlfQdz.js.map +0 -1
  315. package/Step-Dq0N72YB.js +0 -49
  316. package/Step-Dq0N72YB.js.map +0 -1
  317. package/Step-a8U8O-91.cjs +0 -48
  318. package/Step-a8U8O-91.cjs.map +0 -1
  319. package/Switch-BIeobv6i.cjs.map +0 -1
  320. package/Switch-DQEOxM2R.js.map +0 -1
  321. package/Tab-Co31KY2k.cjs +0 -95
  322. package/Tab-Co31KY2k.cjs.map +0 -1
  323. package/Tab-DiK62gRz.js +0 -96
  324. package/Tab-DiK62gRz.js.map +0 -1
  325. package/components/AppBar/AppBarBrand.d.ts +0 -31
  326. package/components/AppBar/AppBarUserMenu.d.ts +0 -65
  327. package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  328. package/components/DatePicker/DatePicker.types.d.ts +0 -1
  329. package/components/DateRangePicker/DateRangePicker.cjs +0 -5
  330. package/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  331. package/components/DateRangePicker/DateRangePicker.d.ts +0 -15
  332. package/components/DateRangePicker/DateRangePicker.definitions.d.ts +0 -6
  333. package/components/DateRangePicker/DateRangePicker.js +0 -5
  334. package/components/DateRangePicker/DateRangePicker.js.map +0 -1
  335. package/components/DateRangePicker/index.d.ts +0 -1
  336. package/components/DateRangePicker.d.ts +0 -2
  337. package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  338. package/components/Input/Input.types.d.ts +0 -1
  339. package/components/PageLoader/PageLoader.cjs +0 -61
  340. package/components/PageLoader/PageLoader.cjs.map +0 -1
  341. package/components/PageLoader/PageLoader.d.ts +0 -38
  342. package/components/PageLoader/PageLoader.js +0 -61
  343. package/components/PageLoader/PageLoader.js.map +0 -1
  344. package/components/PageLoader/index.d.ts +0 -2
  345. package/components/PageLoader.d.ts +0 -6
  346. package/components/RadioGroup/RadioGroup.types.d.ts +0 -1
  347. package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  348. package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  349. package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  350. package/components/ScrollTopButton/ScrollTopButton.js +0 -79
  351. package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  352. package/components/ScrollTopButton/index.d.ts +0 -4
  353. package/components/ScrollTopButton.d.ts +0 -6
  354. package/components/Select/Select.definitions.d.ts +0 -17
  355. package/components/Select/Select.types.d.ts +0 -1
  356. package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  357. package/formField.sx-CQ1mbk9M.cjs.map +0 -1
  358. package/formField.sx-DfVbMe0V.js.map +0 -1
  359. package/hooks/Wizard/Wizard.cjs +0 -7
  360. package/hooks/Wizard/Wizard.cjs.map +0 -1
  361. package/hooks/Wizard/Wizard.js +0 -7
  362. package/hooks/Wizard/Wizard.js.map +0 -1
  363. package/hooks/Wizard/index.d.ts +0 -3
  364. package/hooks/Wizard/useWizard.d.ts +0 -9
  365. package/hooks/Wizard.d.ts +0 -2
  366. package/useWizard-CWdIxZzX.cjs +0 -94
  367. package/useWizard-CWdIxZzX.cjs.map +0 -1
  368. package/useWizard-CWq--C3o.js +0 -95
  369. package/useWizard-CWq--C3o.js.map +0 -1
  370. /package/{styles.css → index.css} +0 -0
package/README.md CHANGED
@@ -1,243 +1,251 @@
1
1
  # @soyfri/shared-library
2
2
 
3
- Una librería de componentes React reutilizables construida con Material-UI, TypeScript y Tailwind CSS, diseñada para proporcionar componentes UI consistentes y bien documentados.
3
+ Librería de componentes React de FRI, construida sobre **Material UI v7** + TypeScript. Provee componentes UI consistentes y tipados para los frontends del ecosistema (`soporte`, `afiliaciones`, …).
4
4
 
5
- ## 📋 Tabla de Contenidos
6
-
7
- - [Características](#características)
8
- - [Instalación](#instalación)
9
- - [Uso](#uso)
10
- - [Componentes Disponibles](#componentes-disponibles)
11
- - [Desarrollo](#desarrollo)
12
- - [Scripts Disponibles](#scripts-disponibles)
13
- - [Storybook](#storybook)
14
- - [Testing](#testing)
15
- - [Tecnologías](#tecnologías)
16
- - [Estructura del Proyecto](#estructura-del-proyecto)
17
-
18
- ## ✨ Características
19
-
20
- - 🎨 **Componentes tipados**: Todos los componentes están construidos con TypeScript para mayor seguridad de tipos
21
- - 📚 **Documentación con Storybook**: Cada componente incluye historias interactivas y documentación
22
- - 🎯 **Material-UI**: Basado en Material-UI para un diseño consistente y accesible
23
- - 🌈 **Tailwind CSS**: Integración con Tailwind para estilos utilitarios
24
- - 🧪 **Testing**: Configurado con Vitest y Playwright para testing de componentes
25
- - 📦 **Build optimizado**: Configuración con Rollup para generar builds ESM y CommonJS
26
-
27
- ## 📦 Instalación
5
+ ## Instalación
28
6
 
29
7
  ```bash
30
8
  npm install @soyfri/shared-library
31
9
  ```
32
10
 
33
- ## 🚀 Uso
11
+ ### Peer dependencies
34
12
 
35
- ```tsx
36
- import { Button, Table, Select } from '@soyfri/shared-library';
37
- import '@soyfri/shared-library/dist/styles.css';
13
+ El consumidor debe tener instaladas (la librería no las empaqueta):
38
14
 
39
- function App() {
40
- return (
41
- <div>
42
- <Button variant="contained" color="primary">
43
- Mi Botón
44
- </Button>
45
- </div>
46
- );
47
- }
15
+ ```
16
+ react >=18 react-dom >=18 react-hook-form ^7
17
+ @mui/material ^7 @mui/icons-material ^7 @mui/x-date-pickers ^8 @mui/lab ^7
18
+ @emotion/react ^11 @emotion/styled ^11 dayjs ^1
48
19
  ```
49
20
 
50
- ## 🧩 Componentes Disponibles
51
-
52
- ### Button
53
- Componente de botón personalizable basado en Material-UI con soporte para iconos, diferentes tamaños y estados.
21
+ ## Setup
54
22
 
55
- **Características:**
56
- - Variantes: `text`, `outlined`, `contained`
57
- - Tamaños: `small`, `medium`, `large`
58
- - Soporte para iconos de inicio y fin
59
- - Estados de carga
60
- - Completamente tipado
23
+ 1. Envuelve la app en el `ThemeProvider` de MUI (los componentes leen el theme del contexto).
24
+ 2. Importa los estilos una vez. El barrel los importa solo; si **solo** usas subpaths, impórtalos manualmente:
61
25
 
62
- ### Table
63
- Componente de tabla flexible con paginación interna y externa, ordenamiento y renderizado personalizado de columnas.
26
+ ```tsx
27
+ import '@soyfri/shared-library/styles.css'
28
+ ```
64
29
 
65
- **Características:**
66
- - Paginación interna automática
67
- - Paginación externa controlada
68
- - Columnas personalizables con renderizado custom
69
- - Soporte para componentes complejos en celdas
70
- - Completamente tipado con generics
30
+ ## Dos formas de importar
71
31
 
72
- ### Select
73
- Componente select avanzado con soporte para selección múltiple, filtros, agrupación y renderizado personalizado.
32
+ ```tsx
33
+ // 1) Subpath por componente (recomendado — tree-shaking, lo que usan los proyectos)
34
+ import { Button } from '@soyfri/shared-library/components/Button'
35
+ import { Table } from '@soyfri/shared-library/components/Table'
74
36
 
75
- **Características:**
76
- - Selección simple y múltiple
77
- - Filtrado de opciones
78
- - Agrupación de opciones
79
- - Renderizado personalizado con avatars
80
- - Placeholder configurable
37
+ // 2) Barrel raíz (importa styles.css automáticamente)
38
+ import { Button, Table, Select } from '@soyfri/shared-library'
39
+ ```
81
40
 
82
- ### Avatar
83
- Componente para mostrar avatares de usuarios con soporte para imágenes y texto.
41
+ > Cada componente se publica como subpath `@soyfri/shared-library/components/<Nombre>`.
84
42
 
85
- ### Icon
86
- Wrapper para iconos de Material-UI con propiedades consistentes.
43
+ ---
87
44
 
88
- ### Stat
89
- Componente para mostrar estadísticas con diferentes plantillas de visualización.
45
+ ## Componentes
90
46
 
91
- **Características:**
92
- - Plantilla simple
93
- - Plantilla con chip
94
- - Plantilla con lista de chips
95
- - Colores personalizables
47
+ Uso mínimo de cada componente. Todos aceptan `sx` y son tipados.
96
48
 
97
- ### Column
98
- Componente auxiliar para definir columnas en el componente Table.
49
+ ### Formularios e inputs
99
50
 
100
- ## 🛠️ Desarrollo
51
+ **Button** — `variant` (`text`/`outlined`/`contained`), `color`, `size`, `loading`, `startIcon`/`endIcon`.
52
+ ```tsx
53
+ <Button variant="contained" color="primary" onClick={fn}>Guardar</Button>
54
+ ```
101
55
 
102
- ### Prerrequisitos
56
+ **Input** — campo de texto. Modo controlado (`value`/`onChange`) o RHF (`name`/`control`).
57
+ ```tsx
58
+ <Input label="Nombre" value={v} onChange={setV} />
59
+ <Input label="Correo" type="email" name="email" control={control} />
60
+ ```
103
61
 
104
- - Node.js (versión 18 o superior)
105
- - npm o yarn
62
+ **InputGroup** — agrupa inputs/botones adyacentes con bordes unificados.
63
+ ```tsx
64
+ <InputGroup><Input label="Buscar" value={q} onChange={setQ} /><Button>Ir</Button></InputGroup>
65
+ ```
106
66
 
107
- ### Configuración del entorno de desarrollo
67
+ **Select** + **Option** — single, múltiple y filtrable. Modo controlado o RHF.
68
+ ```tsx
69
+ <Select label="País" value={v} onChange={setV} options={[{value:'gt',label:'Guatemala'}]} />
70
+ <Select label="Tags" multiple value={vals} onChange={setVals} options={opts} filterable />
71
+ ```
108
72
 
109
- 1. Clona el repositorio:
110
- ```bash
111
- git clone <repository-url>
112
- cd shared-library
73
+ **Autocomplete** — búsqueda con `options` (`{value,label,img?}`), `multiple`.
74
+ ```tsx
75
+ <Autocomplete label="Usuario" options={opts} value={v} onChange={setV} />
113
76
  ```
114
77
 
115
- 2. Instala las dependencias:
116
- ```bash
117
- npm install
78
+ **Checkbox** / **Switch** — `label`, controlado (`checked`/`onChange`) o RHF (`name`/`control`).
79
+ ```tsx
80
+ <Checkbox label="Acepto" checked={ok} onChange={setOk} />
81
+ <Switch label="Activo" checked={on} onChange={setOn} />
118
82
  ```
119
83
 
120
- 3. Inicia el entorno de desarrollo:
121
- ```bash
122
- npm run dev
84
+ **RadioGroup** — `options` (`{value,label}`), `row`.
85
+ ```tsx
86
+ <RadioGroup label="Tipo" options={[{value:'a',label:'A'},{value:'b',label:'B'}]} value={v} onChange={setV} />
123
87
  ```
124
88
 
125
- ## 📜 Scripts Disponibles
89
+ **DatePicker** / **DateTimePicker** — valor `Dayjs`, `minDate`/`maxDate`.
90
+ ```tsx
91
+ <DatePicker label="Fecha" value={date} onChange={setDate} />
92
+ ```
126
93
 
127
- - `npm run build` - Construye la librería para producción
128
- - `npm run dev` - Inicia el modo de desarrollo con watch
129
- - `npm run build:css` - Construye los estilos CSS
130
- - `npm run watch:css` - Observa cambios en los estilos CSS
131
- - `npm run clean` - Limpia la carpeta dist
132
- - `npm run prepare` - Limpia y construye la librería
133
- - `npm run storybook` - Inicia Storybook en modo desarrollo
134
- - `npm run build-storybook` - Construye Storybook para producción
135
- - `npm run dist` - Ejecuta el script de distribución personalizado
94
+ ### Datos y visualización
136
95
 
137
- ## 📚 Storybook
96
+ **Table** + **Column** — paginación interna o externa, render por columna.
97
+ ```tsx
98
+ <Table data={rows}>
99
+ <Column name="Nombre" field="name">{({name}) => <b>{name}</b>}</Column>
100
+ <Column name="Estado" field="status">{({status}) => <Chip label={status} />}</Column>
101
+ </Table>
102
+ ```
138
103
 
139
- La librería incluye Storybook para documentación interactiva y desarrollo de componentes.
104
+ **Avatar** — uno (`src`/`alt`/`fallback`) o grupo apilado (`items`).
105
+ ```tsx
106
+ <Avatar src={url} alt="Ada" fallback="AL" />
107
+ <Avatar items={[{imageUrl:u1,text:'Ada'},{imageUrl:u2,text:'Bob'}]} displayedAvatars={3} />
108
+ ```
140
109
 
141
- ### Iniciar Storybook
110
+ **Chip** — `label`, `color`, `variant`, `onDelete`.
111
+ ```tsx
112
+ <Chip label="Activo" color="success" size="small" />
113
+ ```
142
114
 
143
- ```bash
144
- npm run storybook
115
+ **Stat** — KPI con plantillas `simple`/`chip`/`chipList`.
116
+ ```tsx
117
+ <Stat simple statDisplay={() => <>Q 1,200</>} />
145
118
  ```
146
119
 
147
- Esto abrirá Storybook en `http://localhost:6006` donde podrás:
120
+ **Icon** — SVG por `path`/`url` o `children`, con `badge`, `spin`.
121
+ ```tsx
122
+ <Icon url="/icons/user.svg" size="md" />
123
+ ```
148
124
 
149
- - Ver todos los componentes disponibles
150
- - Interactuar con las propiedades de cada componente
151
- - Ver ejemplos de uso
152
- - Acceder a la documentación detallada
125
+ **Gallery** — galería con lightbox; `items` (`{url,type,title}`).
126
+ ```tsx
127
+ <Gallery items={[{url:img,type:'image',title:'Doc'}]} />
128
+ ```
153
129
 
154
- ### Construir Storybook
130
+ **Timeline** + **TimelineItem** — línea temporal.
131
+ ```tsx
132
+ <Timeline><TimelineItem>Creado</TimelineItem><TimelineItem>Aprobado</TimelineItem></Timeline>
133
+ ```
155
134
 
156
- ```bash
157
- npm run build-storybook
135
+ **Stepper** + **Step** — pasos `horizontal`/`vertical`, `currentStep`.
136
+ ```tsx
137
+ <Stepper currentStep={1}><Step label="Datos" /><Step label="Pago" /></Stepper>
158
138
  ```
159
139
 
160
- ## 🧪 Testing
140
+ ### Feedback
141
+
142
+ **Alert** — `severity` (`success`/`info`/`warning`/`error`), `variant`.
143
+ ```tsx
144
+ <Alert severity="error">No se pudo guardar</Alert>
145
+ ```
161
146
 
162
- La librería está configurada con Vitest y Playwright para testing de componentes.
147
+ **Spinner** — `size`, `color`.
148
+ ```tsx
149
+ <Spinner size={16} />
150
+ ```
163
151
 
164
- ### Configuración de Testing
152
+ **StatusMessage** — mensaje de estado como `alert` o `modal`.
153
+ ```tsx
154
+ <StatusMessage open messageType="success" title="Listo" description="Guardado" close={fn} />
155
+ ```
165
156
 
166
- - **Vitest**: Para unit tests y testing de componentes
167
- - **Playwright**: Para testing de browser
168
- - **Storybook Test Addon**: Para testing de historias de Storybook
157
+ **Tooltip** — `text` envolviendo un hijo.
158
+ ```tsx
159
+ <Tooltip text="Editar"><Button>✎</Button></Tooltip>
160
+ ```
169
161
 
170
- ## 🔧 Tecnologías
162
+ **Modal** (+ `ModalHeader`/`ModalBody`/`ModalFooter`) — `open`/`onClose`, `actions`, `staticBackdrop`, `maxWidth`.
163
+ ```tsx
164
+ <Modal open={open} onClose={close} title="Confirmar" actions={[{text:'OK',onClick:save}]} staticBackdrop />
165
+ ```
171
166
 
172
- ### Dependencias Principales
167
+ ### Navegación
173
168
 
174
- - **React 19.1.0**: Librería de UI
175
- - **Material-UI 7.1.0**: Sistema de diseño y componentes
176
- - **TypeScript 5.8.3**: Tipado estático
177
- - **Tailwind CSS 4.1.7**: Framework de CSS utilitario
169
+ **Tabs** + **Tab** — paneles por contenido, o modo `nav` (enlaces controlados por ruta).
170
+ ```tsx
171
+ <Tabs onChangeValue={setV}>
172
+ <Tab value={0} label="General">…</Tab>
173
+ <Tab value={1} label="Historial">…</Tab>
174
+ </Tabs>
175
+ // Modo nav (router): value controlado, sin paneles
176
+ <Tabs nav value={current}>
177
+ <Tab value="info" label="Info" component={Link} to="info" />
178
+ </Tabs>
179
+ ```
178
180
 
179
- ### Herramientas de Desarrollo
181
+ **Breadcrumbs** — migas; los hijos son `Link`/`Typography`.
182
+ ```tsx
183
+ <Breadcrumbs><Link href="/">Inicio</Link><Typography>Detalle</Typography></Breadcrumbs>
184
+ ```
180
185
 
181
- - **Storybook 9.0.8**: Documentación y desarrollo de componentes
182
- - **Rollup**: Bundler para la construcción de la librería
183
- - **Vitest**: Framework de testing
184
- - **Playwright**: Testing de browser
185
- - **Prettier**: Formateo de código
186
+ **Drawer** + **DrawerItem** — panel lateral colapsable.
187
+ ```tsx
188
+ <Drawer open variant="permanent"><DrawerItem>Inicio</DrawerItem></Drawer>
189
+ ```
186
190
 
187
- ## 📁 Estructura del Proyecto
191
+ **AppBar** — barra superior (incluye `AppBarMenuToggle`, `useAppBarContext`).
188
192
 
193
+ **MenuButton** — botón que abre un menú de `options`.
194
+ ```tsx
195
+ <MenuButton buttonText="Acciones" options={[{label:'Editar',onClick:fn}]} />
189
196
  ```
190
- shared-library/
191
- ├── .storybook/ # Configuración de Storybook
192
- ├── src/
193
- │ ├── components/ # Componentes de la librería
194
- │ │ ├── Avatar/
195
- │ │ ├── Button/
196
- │ │ ├── Column/
197
- │ │ ├── Icon/
198
- │ │ ├── Select/
199
- │ │ ├── Stat/
200
- │ │ └── Table/
201
- │ ├── index.ts # Punto de entrada principal
202
- │ └── styles.css # Estilos globales
203
- ├── dist/ # Archivos construidos
204
- ├── package.json
205
- ├── tsconfig.json
206
- ├── tailwind.config.js
207
- ├── rollup.config.cjs
208
- └── vitest.config.ts
197
+
198
+ **ActionMenu** + **ActionMenuItem** — menú contextual (compound; `trigger` opcional, default ⋮).
199
+ ```tsx
200
+ <ActionMenu><ActionMenuItem onClick={edit}>Editar</ActionMenuItem><ActionMenuItem onClick={del}>Eliminar</ActionMenuItem></ActionMenu>
209
201
  ```
210
202
 
211
- ### Estructura de Componentes
203
+ ### Layout y contenedores
204
+
205
+ **Card** — `variant`, `padding`; o composición con `title`/`subheader`/`action` y `contentSx`.
206
+ ```tsx
207
+ <Card title="Resumen" action={<Button>Editar</Button>}>…</Card>
208
+ <Card contentSx={{ p: 0 }}><Table data={rows}>…</Table></Card> // tabla flush
209
+ ```
212
210
 
213
- Cada componente sigue una estructura consistente:
211
+ **Divider** — separador `horizontal`/`vertical`.
212
+ ```tsx
213
+ <Divider sx={{ my: 2 }} />
214
+ ```
214
215
 
216
+ **ButtonGroup** — agrupa botones.
217
+ ```tsx
218
+ <ButtonGroup><Button>Día</Button><Button>Mes</Button></ButtonGroup>
215
219
  ```
216
- ComponentName/
217
- ├── ComponentName.tsx # Implementación del componente
218
- ├── ComponentName.stories.tsx # Historias de Storybook
219
- ├── ComponentName.definition.ts # Definiciones de código (opcional)
220
- ├── index.ts # Exportaciones
221
- └── types.ts # Tipos específicos (opcional)
220
+
221
+ **Flyout** — panel flotante `open`/`onClose`, `anchor`.
222
+ ```tsx
223
+ <Flyout open={open} onClose={close} anchor="right">…</Flyout>
222
224
  ```
223
225
 
224
- ## 🤝 Contribución
226
+ ### Hooks
227
+
228
+ **useClipboard** — copiar al portapapeles con feedback.
229
+ ```tsx
230
+ import { useClipboard } from '@soyfri/shared-library/hooks/ClipBoard'
231
+ const { copy, CopyMessage } = useClipboard({ message: 'Copiado', severity: 'success' })
232
+ ```
225
233
 
226
- Para contribuir al proyecto:
234
+ ---
227
235
 
228
- 1. Fork el repositorio
229
- 2. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
230
- 3. Commit tus cambios (`git commit -am 'Agrega nueva funcionalidad'`)
231
- 4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
232
- 5. Crea un Pull Request
236
+ ## Desarrollo
233
237
 
234
- ## 📄 Licencia
238
+ ```bash
239
+ npm install
240
+ npm run dev # build en watch (tsup)
241
+ npm run storybook # Storybook en :6006 (documentación interactiva, 260+ stories)
242
+ npm run build # build de producción (vite + postbuild genera subpaths en dist/)
243
+ ```
235
244
 
236
- ISC License
245
+ ## Tecnologías
237
246
 
238
- ---
247
+ React 18/19 · Material UI v7 · TypeScript 5 · Tailwind CSS 4 · Storybook 9 · Vite/Rollup · Vitest + Playwright.
239
248
 
240
- **Versión actual:** 1.0.1
249
+ ## Licencia
241
250
 
242
- Para más información y ejemplos detallados, consulta la documentación en Storybook ejecutando `npm run storybook`.
243
-
251
+ ISC
@@ -106,9 +106,9 @@ const RadioGroup = (props) => {
106
106
  const buildSx = (effectiveError) => [
107
107
  buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),
108
108
  ...presetSx ? [presetSx] : [],
109
- ...Array.isArray(sx) ? sx : [sx]
109
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
110
110
  ];
111
- const renderOptions = (currentValue, _onChange, fieldName) => options.map((opt) => {
111
+ const renderOptions = (fieldName) => options.map((opt) => {
112
112
  var _a2;
113
113
  const inputId = (_a2 = opt.id) != null ? _a2 : `${fieldName != null ? fieldName : "radio"}-${opt.value}`;
114
114
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -124,14 +124,13 @@ const RadioGroup = (props) => {
124
124
  }
125
125
  ),
126
126
  label: opt.label,
127
- checked: currentValue === opt.value,
128
127
  disabled: disabled || opt.disabled
129
128
  },
130
129
  inputId
131
130
  );
132
131
  });
133
132
  if ("control" in props && props.control) {
134
- const { name: name2, control, validation } = props;
133
+ const { name: name2, control, validation, onValueChange } = props;
135
134
  return /* @__PURE__ */ jsxRuntime.jsx(
136
135
  reactHookForm.Controller,
137
136
  {
@@ -159,8 +158,11 @@ const RadioGroup = (props) => {
159
158
  name: field.name,
160
159
  value: (_b = field.value) != null ? _b : "",
161
160
  onBlur: field.onBlur,
162
- onChange: (_e, value2) => field.onChange(value2),
163
- children: renderOptions(field.value, field.onChange, field.name)
161
+ onChange: (_e, value2) => {
162
+ field.onChange(value2);
163
+ onValueChange == null ? void 0 : onValueChange(value2);
164
+ },
165
+ children: renderOptions(field.name)
164
166
  })
165
167
  ),
166
168
  finalHelperText && /* @__PURE__ */ jsxRuntime.jsx(material.FormHelperText, { children: finalHelperText })
@@ -188,7 +190,7 @@ const RadioGroup = (props) => {
188
190
  name,
189
191
  value: value != null ? value : "",
190
192
  onChange: (_e, next) => onChange(next),
191
- children: renderOptions(value, onChange, name)
193
+ children: renderOptions(name)
192
194
  })
193
195
  ),
194
196
  helperText && /* @__PURE__ */ jsxRuntime.jsx(material.FormHelperText, { children: helperText })
@@ -197,4 +199,4 @@ const RadioGroup = (props) => {
197
199
  );
198
200
  };
199
201
  exports.RadioGroup = RadioGroup;
200
- //# sourceMappingURL=RadioGroup-CxqDHap1.cjs.map
202
+ //# sourceMappingURL=RadioGroup-Dd0rHXSX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup-Dd0rHXSX.cjs","sources":["../src/components/RadioGroup/RadioGroup.sx.ts","../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildRadioGroupSxOptions {\n bordered: boolean;\n borderRadius: number | string;\n error: boolean;\n}\n\nconst toRadius = (borderRadius: number | string) =>\n typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n/**\n * Transición compartida (matchea el InputGroup).\n */\nconst FOCUS_TRANSITION =\n 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, ' +\n 'box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms';\n\n/**\n * Builder de sx para RadioGroup. Reproduce el estilo del antiguo\n * `FormRadioGroup` legacy: contenedor con borde + padding vertical.\n *\n * Cuando `bordered=true`, el contenedor gana:\n * - `:focus-within` → borde + shadow primario (mismo patrón que `InputGroup`).\n * - `error=true` → borde + shadow de error (palette.error.main).\n *\n * El shadow es de 1px, así que no hay shift de layout — sólo se intensifica\n * visualmente el borde sin empujar nada alrededor.\n *\n * Si `bordered=false`, devuelve un sx mínimo (sólo helper text reset).\n */\nexport const buildRadioGroupSx = ({\n bordered,\n borderRadius,\n error,\n}: BuildRadioGroupSxOptions): SxProps<Theme> => {\n const radius = toRadius(borderRadius);\n\n if (!bordered) {\n return {\n '& .MuiFormHelperText-root': { marginLeft: 0 },\n };\n }\n\n return (theme) => ({\n '& .MuiRadioGroup-root': {\n paddingTop: 1.25,\n paddingBottom: 1.25,\n paddingX: 1.5,\n border: `1px solid ${\n error ? theme.palette.error.main : theme.palette.divider\n }`,\n borderRadius: radius,\n transition: FOCUS_TRANSITION,\n ...(error && {\n boxShadow: `0 0 0 1px ${theme.palette.error.main}`,\n }),\n // Focus del usuario sobre cualquier radio interno.\n '&:focus-within': {\n borderColor: error\n ? theme.palette.error.main\n : theme.palette.primary.main,\n boxShadow: `0 0 0 1px ${\n error ? theme.palette.error.main : theme.palette.primary.main\n }`,\n },\n },\n '& .MuiFormHelperText-root': {\n marginLeft: 0,\n },\n '& .MuiFormLabel-root': {\n marginBottom: 0.5,\n },\n });\n};\n","import type { FC } from 'react';\nimport { useTheme } from '@mui/material/styles';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup as MuiRadioGroup,\n type RadioGroupProps as MuiRadioGroupProps,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildRadioGroupSx } from './RadioGroup.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface RadioOption {\n /** Valor que se emite cuando se selecciona la opción. */\n value: string;\n /** Texto mostrado al lado del radio. */\n label: string;\n /** Deshabilitar opción individualmente. */\n disabled?: boolean;\n /** ID custom del input (default: prefijo + value). */\n id?: string;\n}\n\nexport type RadioGroupSize = 'small' | 'medium';\n\n// ── Props base (todo lo común entre RHF y controlado) ────────────────────\nexport interface BaseRadioGroupProps\n extends Omit<MuiRadioGroupProps, 'value' | 'onChange' | 'defaultValue'> {\n options: RadioOption[];\n /** Label superior del grupo. */\n label?: string;\n /** Distribución horizontal (default: true — replica el comportamiento legacy). */\n row?: boolean;\n size?: RadioGroupSize;\n disabled?: boolean;\n error?: boolean;\n helperText?: string;\n /** Renderiza un contenedor con borde estilo \"form field\". Default: true. */\n bordered?: boolean;\n /** Border radius del contenedor (cuando bordered). Default: 10. */\n borderRadius?: number | string;\n defaultValue?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.RadioGroup`.\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 sx?: SxProps<Theme>;\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFRadioGroupProps extends BaseRadioGroupProps {\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?: (value: string) => void;\n value?: never;\n onChange?: never;\n}\n\nexport interface ControlledRadioGroupProps extends BaseRadioGroupProps {\n name?: string;\n control?: never;\n validation?: never;\n value: string;\n onChange: (value: string) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type RadioGroupProps = RHFRadioGroupProps | ControlledRadioGroupProps;\n\nexport const RadioGroup: FC<RadioGroupProps> = (props) => {\n const {\n options,\n label,\n row = true,\n size = 'small',\n disabled = false,\n error = false,\n helperText,\n bordered = true,\n borderRadius = 10,\n defaultValue,\n preset,\n sx,\n ...rest\n } = props as ControlledRadioGroupProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('RadioGroup', preset, theme);\n\n // Construye el sx con el estado de error efectivo; se llama por rama\n // (RHF usa el error del Controller, controlado usa el prop `error`).\n const buildSx = (effectiveError: boolean) => [\n buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderOptions = (fieldName?: string) =>\n options.map((opt) => {\n const inputId = opt.id ?? `${fieldName ?? 'radio'}-${opt.value}`;\n return (\n <FormControlLabel\n key={inputId}\n value={opt.value}\n control={\n <Radio\n id={inputId}\n size={size}\n disabled={disabled || opt.disabled}\n />\n }\n label={opt.label}\n disabled={disabled || opt.disabled}\n />\n );\n });\n\n // ── RHF mode ──────────────────────────────────────────────────────────\n if ('control' in props && props.control) {\n const { name, control, validation, onValueChange } = props as RHFRadioGroupProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n defaultValue={defaultValue}\n render={({ field, fieldState: { error: fieldError } }) => {\n const finalError = !!fieldError || error;\n const finalHelperText = fieldError?.message ?? helperText;\n return (\n <FormControl\n error={finalError}\n disabled={disabled}\n sx={buildSx(finalError)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={field.name}\n value={field.value ?? ''}\n onBlur={field.onBlur}\n onChange={(_e, value) => {\n field.onChange(value);\n onValueChange?.(value);\n }}\n >\n {renderOptions(field.name)}\n </MuiRadioGroup>\n {finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}\n </FormControl>\n );\n }}\n />\n );\n }\n\n // ── Controlled mode ───────────────────────────────────────────────────\n const { value, onChange, name } = props as ControlledRadioGroupProps;\n return (\n <FormControl\n error={error}\n disabled={disabled}\n sx={buildSx(error)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={name}\n value={value ?? ''}\n onChange={(_e, next) => onChange(next)}\n >\n {renderOptions(name)}\n </MuiRadioGroup>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n\nexport default RadioGroup;\n"],"names":["useTheme","resolvePreset","_a","jsx","FormControlLabel","Radio","name","Controller","jsxs","FormControl","FormLabel","MuiRadioGroup","value","FormHelperText"],"mappings":"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"}
@@ -105,9 +105,9 @@ const RadioGroup = (props) => {
105
105
  const buildSx = (effectiveError) => [
106
106
  buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),
107
107
  ...presetSx ? [presetSx] : [],
108
- ...Array.isArray(sx) ? sx : [sx]
108
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
109
109
  ];
110
- const renderOptions = (currentValue, _onChange, fieldName) => options.map((opt) => {
110
+ const renderOptions = (fieldName) => options.map((opt) => {
111
111
  var _a2;
112
112
  const inputId = (_a2 = opt.id) != null ? _a2 : `${fieldName != null ? fieldName : "radio"}-${opt.value}`;
113
113
  return /* @__PURE__ */ jsx(
@@ -123,14 +123,13 @@ const RadioGroup = (props) => {
123
123
  }
124
124
  ),
125
125
  label: opt.label,
126
- checked: currentValue === opt.value,
127
126
  disabled: disabled || opt.disabled
128
127
  },
129
128
  inputId
130
129
  );
131
130
  });
132
131
  if ("control" in props && props.control) {
133
- const { name: name2, control, validation } = props;
132
+ const { name: name2, control, validation, onValueChange } = props;
134
133
  return /* @__PURE__ */ jsx(
135
134
  Controller,
136
135
  {
@@ -158,8 +157,11 @@ const RadioGroup = (props) => {
158
157
  name: field.name,
159
158
  value: (_b = field.value) != null ? _b : "",
160
159
  onBlur: field.onBlur,
161
- onChange: (_e, value2) => field.onChange(value2),
162
- children: renderOptions(field.value, field.onChange, field.name)
160
+ onChange: (_e, value2) => {
161
+ field.onChange(value2);
162
+ onValueChange == null ? void 0 : onValueChange(value2);
163
+ },
164
+ children: renderOptions(field.name)
163
165
  })
164
166
  ),
165
167
  finalHelperText && /* @__PURE__ */ jsx(FormHelperText, { children: finalHelperText })
@@ -187,7 +189,7 @@ const RadioGroup = (props) => {
187
189
  name,
188
190
  value: value != null ? value : "",
189
191
  onChange: (_e, next) => onChange(next),
190
- children: renderOptions(value, onChange, name)
192
+ children: renderOptions(name)
191
193
  })
192
194
  ),
193
195
  helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
@@ -198,4 +200,4 @@ const RadioGroup = (props) => {
198
200
  export {
199
201
  RadioGroup as R
200
202
  };
201
- //# sourceMappingURL=RadioGroup-DMi9FvMP.js.map
203
+ //# sourceMappingURL=RadioGroup-bO-ahP9T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioGroup-bO-ahP9T.js","sources":["../src/components/RadioGroup/RadioGroup.sx.ts","../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildRadioGroupSxOptions {\n bordered: boolean;\n borderRadius: number | string;\n error: boolean;\n}\n\nconst toRadius = (borderRadius: number | string) =>\n typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n/**\n * Transición compartida (matchea el InputGroup).\n */\nconst FOCUS_TRANSITION =\n 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, ' +\n 'box-shadow 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms';\n\n/**\n * Builder de sx para RadioGroup. Reproduce el estilo del antiguo\n * `FormRadioGroup` legacy: contenedor con borde + padding vertical.\n *\n * Cuando `bordered=true`, el contenedor gana:\n * - `:focus-within` → borde + shadow primario (mismo patrón que `InputGroup`).\n * - `error=true` → borde + shadow de error (palette.error.main).\n *\n * El shadow es de 1px, así que no hay shift de layout — sólo se intensifica\n * visualmente el borde sin empujar nada alrededor.\n *\n * Si `bordered=false`, devuelve un sx mínimo (sólo helper text reset).\n */\nexport const buildRadioGroupSx = ({\n bordered,\n borderRadius,\n error,\n}: BuildRadioGroupSxOptions): SxProps<Theme> => {\n const radius = toRadius(borderRadius);\n\n if (!bordered) {\n return {\n '& .MuiFormHelperText-root': { marginLeft: 0 },\n };\n }\n\n return (theme) => ({\n '& .MuiRadioGroup-root': {\n paddingTop: 1.25,\n paddingBottom: 1.25,\n paddingX: 1.5,\n border: `1px solid ${\n error ? theme.palette.error.main : theme.palette.divider\n }`,\n borderRadius: radius,\n transition: FOCUS_TRANSITION,\n ...(error && {\n boxShadow: `0 0 0 1px ${theme.palette.error.main}`,\n }),\n // Focus del usuario sobre cualquier radio interno.\n '&:focus-within': {\n borderColor: error\n ? theme.palette.error.main\n : theme.palette.primary.main,\n boxShadow: `0 0 0 1px ${\n error ? theme.palette.error.main : theme.palette.primary.main\n }`,\n },\n },\n '& .MuiFormHelperText-root': {\n marginLeft: 0,\n },\n '& .MuiFormLabel-root': {\n marginBottom: 0.5,\n },\n });\n};\n","import type { FC } from 'react';\nimport { useTheme } from '@mui/material/styles';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup as MuiRadioGroup,\n type RadioGroupProps as MuiRadioGroupProps,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildRadioGroupSx } from './RadioGroup.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface RadioOption {\n /** Valor que se emite cuando se selecciona la opción. */\n value: string;\n /** Texto mostrado al lado del radio. */\n label: string;\n /** Deshabilitar opción individualmente. */\n disabled?: boolean;\n /** ID custom del input (default: prefijo + value). */\n id?: string;\n}\n\nexport type RadioGroupSize = 'small' | 'medium';\n\n// ── Props base (todo lo común entre RHF y controlado) ────────────────────\nexport interface BaseRadioGroupProps\n extends Omit<MuiRadioGroupProps, 'value' | 'onChange' | 'defaultValue'> {\n options: RadioOption[];\n /** Label superior del grupo. */\n label?: string;\n /** Distribución horizontal (default: true — replica el comportamiento legacy). */\n row?: boolean;\n size?: RadioGroupSize;\n disabled?: boolean;\n error?: boolean;\n helperText?: string;\n /** Renderiza un contenedor con borde estilo \"form field\". Default: true. */\n bordered?: boolean;\n /** Border radius del contenedor (cuando bordered). Default: 10. */\n borderRadius?: number | string;\n defaultValue?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.RadioGroup`.\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 sx?: SxProps<Theme>;\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFRadioGroupProps extends BaseRadioGroupProps {\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?: (value: string) => void;\n value?: never;\n onChange?: never;\n}\n\nexport interface ControlledRadioGroupProps extends BaseRadioGroupProps {\n name?: string;\n control?: never;\n validation?: never;\n value: string;\n onChange: (value: string) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type RadioGroupProps = RHFRadioGroupProps | ControlledRadioGroupProps;\n\nexport const RadioGroup: FC<RadioGroupProps> = (props) => {\n const {\n options,\n label,\n row = true,\n size = 'small',\n disabled = false,\n error = false,\n helperText,\n bordered = true,\n borderRadius = 10,\n defaultValue,\n preset,\n sx,\n ...rest\n } = props as ControlledRadioGroupProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('RadioGroup', preset, theme);\n\n // Construye el sx con el estado de error efectivo; se llama por rama\n // (RHF usa el error del Controller, controlado usa el prop `error`).\n const buildSx = (effectiveError: boolean) => [\n buildRadioGroupSx({ bordered, borderRadius, error: effectiveError }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderOptions = (fieldName?: string) =>\n options.map((opt) => {\n const inputId = opt.id ?? `${fieldName ?? 'radio'}-${opt.value}`;\n return (\n <FormControlLabel\n key={inputId}\n value={opt.value}\n control={\n <Radio\n id={inputId}\n size={size}\n disabled={disabled || opt.disabled}\n />\n }\n label={opt.label}\n disabled={disabled || opt.disabled}\n />\n );\n });\n\n // ── RHF mode ──────────────────────────────────────────────────────────\n if ('control' in props && props.control) {\n const { name, control, validation, onValueChange } = props as RHFRadioGroupProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n defaultValue={defaultValue}\n render={({ field, fieldState: { error: fieldError } }) => {\n const finalError = !!fieldError || error;\n const finalHelperText = fieldError?.message ?? helperText;\n return (\n <FormControl\n error={finalError}\n disabled={disabled}\n sx={buildSx(finalError)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={field.name}\n value={field.value ?? ''}\n onBlur={field.onBlur}\n onChange={(_e, value) => {\n field.onChange(value);\n onValueChange?.(value);\n }}\n >\n {renderOptions(field.name)}\n </MuiRadioGroup>\n {finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}\n </FormControl>\n );\n }}\n />\n );\n }\n\n // ── Controlled mode ───────────────────────────────────────────────────\n const { value, onChange, name } = props as ControlledRadioGroupProps;\n return (\n <FormControl\n error={error}\n disabled={disabled}\n sx={buildSx(error)}\n fullWidth\n >\n {label && <FormLabel>{label}</FormLabel>}\n <MuiRadioGroup\n {...rest}\n row={row}\n name={name}\n value={value ?? ''}\n onChange={(_e, next) => onChange(next)}\n >\n {renderOptions(name)}\n </MuiRadioGroup>\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n\nexport default RadioGroup;\n"],"names":["_a","name","MuiRadioGroup","value"],"mappings":"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"}