@soyfri/shared-library 2.0.0-beta.10 → 2.0.0-beta.12

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 (784) hide show
  1. package/{dist/components/Autocomplete/Autocomplete.js → Autocomplete-BA-cGASd.js} +22 -20
  2. package/Autocomplete-BA-cGASd.js.map +1 -0
  3. package/{dist/components/Autocomplete/Autocomplete.cjs → Autocomplete-C2x-lBvZ.cjs} +20 -19
  4. package/Autocomplete-C2x-lBvZ.cjs.map +1 -0
  5. package/{dist/components/Avatar/Avatar.cjs → Avatar-9L7YMxya.cjs} +1 -2
  6. package/Avatar-9L7YMxya.cjs.map +1 -0
  7. package/{dist/components/Avatar/Avatar.js → Avatar-BJTr-PBd.js} +2 -2
  8. package/Avatar-BJTr-PBd.js.map +1 -0
  9. package/{dist/components/Card/Card.cjs → Card-DG_crfkK.cjs} +2 -4
  10. package/Card-DG_crfkK.cjs.map +1 -0
  11. package/{dist/components/Card/Card.js → Card-Ug-ttVSh.js} +7 -8
  12. package/Card-Ug-ttVSh.js.map +1 -0
  13. package/{dist/components/Chip/Chip.js → Chip-OPYQ1uQ_.js} +2 -2
  14. package/Chip-OPYQ1uQ_.js.map +1 -0
  15. package/{dist/components/Chip/Chip.cjs → Chip-qoJLDiva.cjs} +1 -2
  16. package/Chip-qoJLDiva.cjs.map +1 -0
  17. package/{dist/components/DatePicker/DatePicker.js → DatePicker-8f_9bwhS.js} +4 -5
  18. package/DatePicker-8f_9bwhS.js.map +1 -0
  19. package/{dist/components/DatePicker/DatePicker.cjs → DatePicker-DLSfkgGA.cjs} +3 -5
  20. package/DatePicker-DLSfkgGA.cjs.map +1 -0
  21. package/{dist/components/DateRangePicker/DateRangePicker.js → DateRangePicker-BVpeJCHI.js} +2 -2
  22. package/DateRangePicker-BVpeJCHI.js.map +1 -0
  23. package/{dist/components/DateRangePicker/DateRangePicker.cjs → DateRangePicker-B_hKQhbj.cjs} +1 -2
  24. package/DateRangePicker-B_hKQhbj.cjs.map +1 -0
  25. package/{dist/components/DateTimePicker/DateTimePicker.cjs → DateTimePicker-CWNW09-O.cjs} +3 -5
  26. package/DateTimePicker-CWNW09-O.cjs.map +1 -0
  27. package/{dist/components/DateTimePicker/DateTimePicker.js → DateTimePicker-D4L9GAod.js} +4 -5
  28. package/DateTimePicker-D4L9GAod.js.map +1 -0
  29. package/{dist/components/Input/Input.js → Input-Cp911l23.js} +4 -5
  30. package/Input-Cp911l23.js.map +1 -0
  31. package/{dist/components/Input/Input.cjs → Input-DI0jfq5X.cjs} +3 -5
  32. package/Input-DI0jfq5X.cjs.map +1 -0
  33. package/{dist/components/Modal/Modal.cjs → Modal-Bm_HH9cv.cjs} +3 -3
  34. package/Modal-Bm_HH9cv.cjs.map +1 -0
  35. package/{dist/components/Modal/Modal.js → Modal-Bnz6d9m9.js} +6 -5
  36. package/Modal-Bnz6d9m9.js.map +1 -0
  37. package/{dist/components/RadioGroup/RadioGroup.cjs → RadioGroup-CxqDHap1.cjs} +3 -5
  38. package/RadioGroup-CxqDHap1.cjs.map +1 -0
  39. package/{dist/components/RadioGroup/RadioGroup.js → RadioGroup-DMi9FvMP.js} +4 -5
  40. package/RadioGroup-DMi9FvMP.js.map +1 -0
  41. package/{dist/components/Select/Select.js → Select-3CBOfM2H.js} +5 -6
  42. package/Select-3CBOfM2H.js.map +1 -0
  43. package/{dist/components/Select/Select.cjs → Select-Bku4f4f8.cjs} +3 -5
  44. package/Select-Bku4f4f8.cjs.map +1 -0
  45. package/{dist/components/Stat/Stat.cjs → Stat-BUcFCGrz.cjs} +3 -5
  46. package/Stat-BUcFCGrz.cjs.map +1 -0
  47. package/{dist/components/Stat/Stat.js → Stat-C06A_izS.js} +4 -5
  48. package/Stat-C06A_izS.js.map +1 -0
  49. package/{dist/components/StatusMessage/StatusMessage.cjs → StatusMessage-C5B6oGZ_.cjs} +1 -2
  50. package/StatusMessage-C5B6oGZ_.cjs.map +1 -0
  51. package/{dist/components/StatusMessage/StatusMessage.js → StatusMessage-D1GlfQdz.js} +2 -2
  52. package/StatusMessage-D1GlfQdz.js.map +1 -0
  53. package/Step-Dq0N72YB.js +49 -0
  54. package/Step-Dq0N72YB.js.map +1 -0
  55. package/Step-a8U8O-91.cjs +48 -0
  56. package/Step-a8U8O-91.cjs.map +1 -0
  57. package/{dist/components/Switch/Switch.cjs → Switch-BIeobv6i.cjs} +2 -4
  58. package/Switch-BIeobv6i.cjs.map +1 -0
  59. package/{dist/components/Switch/Switch.js → Switch-DQEOxM2R.js} +3 -4
  60. package/Switch-DQEOxM2R.js.map +1 -0
  61. package/{dist/components/Tabs/Tabs.cjs → Tab-Co31KY2k.cjs} +2 -3
  62. package/Tab-Co31KY2k.cjs.map +1 -0
  63. package/{dist/components/Tabs/Tabs.js → Tab-DiK62gRz.js} +4 -4
  64. package/Tab-DiK62gRz.js.map +1 -0
  65. package/{dist/components/Table/Table.js → Table-C2LbW0B1.js} +7 -7
  66. package/Table-C2LbW0B1.js.map +1 -0
  67. package/{dist/components/Table/Table.cjs → Table-C4OM6rrC.cjs} +6 -7
  68. package/Table-C4OM6rrC.cjs.map +1 -0
  69. package/{dist/components → components}/AppBar/AppBar.cjs +1 -1
  70. package/{dist/components → components}/AppBar/AppBar.js +1 -1
  71. package/components/Autocomplete/Autocomplete.cjs +7 -0
  72. package/components/Autocomplete/Autocomplete.cjs.map +1 -0
  73. package/components/Autocomplete/Autocomplete.js +7 -0
  74. package/components/Autocomplete/Autocomplete.js.map +1 -0
  75. package/components/Avatar/Avatar.cjs +5 -0
  76. package/components/Avatar/Avatar.cjs.map +1 -0
  77. package/components/Avatar/Avatar.js +5 -0
  78. package/components/Avatar/Avatar.js.map +1 -0
  79. package/components/Card/Card.cjs +10 -0
  80. package/components/Card/Card.cjs.map +1 -0
  81. package/components/Card/Card.js +10 -0
  82. package/components/Card/Card.js.map +1 -0
  83. package/components/Chip/Chip.cjs +5 -0
  84. package/components/Chip/Chip.cjs.map +1 -0
  85. package/components/Chip/Chip.js +5 -0
  86. package/components/Chip/Chip.js.map +1 -0
  87. package/{dist/components → components}/Column/Column.cjs +1 -1
  88. package/{dist/components → components}/Column/Column.cjs.map +1 -1
  89. package/{dist/components → components}/Column/Column.d.ts +1 -1
  90. package/{dist/components → components}/Column/Column.js +1 -1
  91. package/{dist/components → components}/Column/Column.js.map +1 -1
  92. package/{dist/components → components}/Column/index.d.ts +1 -0
  93. package/components/DatePicker/DatePicker.cjs +6 -0
  94. package/components/DatePicker/DatePicker.cjs.map +1 -0
  95. package/components/DatePicker/DatePicker.js +6 -0
  96. package/components/DatePicker/DatePicker.js.map +1 -0
  97. package/components/DateRangePicker/DateRangePicker.cjs +5 -0
  98. package/components/DateRangePicker/DateRangePicker.cjs.map +1 -0
  99. package/components/DateRangePicker/DateRangePicker.js +5 -0
  100. package/components/DateRangePicker/DateRangePicker.js.map +1 -0
  101. package/components/DateTimePicker/DateTimePicker.cjs +6 -0
  102. package/components/DateTimePicker/DateTimePicker.cjs.map +1 -0
  103. package/components/DateTimePicker/DateTimePicker.js +6 -0
  104. package/components/DateTimePicker/DateTimePicker.js.map +1 -0
  105. package/{dist/components → components}/Drawer/Drawer.cjs +1 -1
  106. package/{dist/components → components}/Drawer/Drawer.js +1 -1
  107. package/components/Input/Input.cjs +6 -0
  108. package/components/Input/Input.cjs.map +1 -0
  109. package/components/Input/Input.js +6 -0
  110. package/components/Input/Input.js.map +1 -0
  111. package/components/Modal/Modal.cjs +9 -0
  112. package/components/Modal/Modal.cjs.map +1 -0
  113. package/components/Modal/Modal.js +9 -0
  114. package/components/Modal/Modal.js.map +1 -0
  115. package/{dist/components → components}/Modal/index.d.ts +2 -1
  116. package/components/Modal.d.ts +6 -0
  117. package/components/RadioGroup/RadioGroup.cjs +6 -0
  118. package/components/RadioGroup/RadioGroup.cjs.map +1 -0
  119. package/components/RadioGroup/RadioGroup.js +6 -0
  120. package/components/RadioGroup/RadioGroup.js.map +1 -0
  121. package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs +1 -1
  122. package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js +1 -1
  123. package/components/Select/Select.cjs +7 -0
  124. package/components/Select/Select.cjs.map +1 -0
  125. package/components/Select/Select.js +7 -0
  126. package/components/Select/Select.js.map +1 -0
  127. package/components/Stat/Stat.cjs +6 -0
  128. package/components/Stat/Stat.cjs.map +1 -0
  129. package/components/Stat/Stat.js +6 -0
  130. package/components/Stat/Stat.js.map +1 -0
  131. package/components/StatusMessage/StatusMessage.cjs +6 -0
  132. package/components/StatusMessage/StatusMessage.cjs.map +1 -0
  133. package/{dist/components → components}/StatusMessage/StatusMessage.d.ts +1 -1
  134. package/components/StatusMessage/StatusMessage.js +6 -0
  135. package/components/StatusMessage/StatusMessage.js.map +1 -0
  136. package/components/StatusMessage/index.d.ts +2 -0
  137. package/components/StatusMessage.d.ts +6 -0
  138. package/components/Stepper/Stepper.cjs +6 -0
  139. package/components/Stepper/Stepper.cjs.map +1 -0
  140. package/components/Stepper/Stepper.js +6 -0
  141. package/components/Stepper/Stepper.js.map +1 -0
  142. package/components/Switch/Switch.cjs +6 -0
  143. package/components/Switch/Switch.cjs.map +1 -0
  144. package/components/Switch/Switch.js +6 -0
  145. package/components/Switch/Switch.js.map +1 -0
  146. package/components/Table/Table.cjs +5 -0
  147. package/components/Table/Table.cjs.map +1 -0
  148. package/{dist/components → components}/Table/Table.d.ts +1 -1
  149. package/components/Table/Table.js +5 -0
  150. package/components/Table/Table.js.map +1 -0
  151. package/components/Tabs/Tabs.cjs +6 -0
  152. package/components/Tabs/Tabs.cjs.map +1 -0
  153. package/components/Tabs/Tabs.js +6 -0
  154. package/components/Tabs/Tabs.js.map +1 -0
  155. package/{dist/hooks → hooks}/Wizard/WizardContext.d.ts +2 -2
  156. package/{dist/index.cjs → index.cjs} +46 -1
  157. package/{dist/index.cjs.map → index.cjs.map} +1 -1
  158. package/index.d.ts +33 -0
  159. package/index.js +82 -0
  160. package/{dist/index.js.map → index.js.map} +1 -1
  161. package/package.json +178 -45
  162. package/{dist/resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
  163. package/{dist/resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
  164. package/{dist/resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
  165. package/{dist/resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
  166. package/useWizard-CWdIxZzX.cjs.map +1 -0
  167. package/useWizard-CWq--C3o.js.map +1 -0
  168. package/.dockerignore +0 -8
  169. package/.github/workflows/publish.yml +0 -107
  170. package/.prettierrc +0 -3
  171. package/.storybook/main.ts +0 -19
  172. package/.storybook/preview.ts +0 -14
  173. package/.storybook/vitest.setup.ts +0 -9
  174. package/Dockerfile +0 -37
  175. package/Readme.md +0 -243
  176. package/build.js +0 -102
  177. package/chromatic.config.json +0 -5
  178. package/cleanDirectories.js +0 -40
  179. package/dist/components/Autocomplete/Autocomplete.cjs.map +0 -1
  180. package/dist/components/Autocomplete/Autocomplete.js.map +0 -1
  181. package/dist/components/Avatar/Avatar.cjs.map +0 -1
  182. package/dist/components/Avatar/Avatar.js.map +0 -1
  183. package/dist/components/Card/Card.cjs.map +0 -1
  184. package/dist/components/Card/Card.js.map +0 -1
  185. package/dist/components/Chip/Chip.cjs.map +0 -1
  186. package/dist/components/Chip/Chip.js.map +0 -1
  187. package/dist/components/DatePicker/DatePicker.cjs.map +0 -1
  188. package/dist/components/DatePicker/DatePicker.js.map +0 -1
  189. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +0 -1
  190. package/dist/components/DateRangePicker/DateRangePicker.js.map +0 -1
  191. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
  192. package/dist/components/DateTimePicker/DateTimePicker.js.map +0 -1
  193. package/dist/components/Input/Input.cjs.map +0 -1
  194. package/dist/components/Input/Input.js.map +0 -1
  195. package/dist/components/Modal/Modal.cjs.map +0 -1
  196. package/dist/components/Modal/Modal.js.map +0 -1
  197. package/dist/components/Modal.d.ts +0 -2
  198. package/dist/components/RadioGroup/RadioGroup.cjs.map +0 -1
  199. package/dist/components/RadioGroup/RadioGroup.js.map +0 -1
  200. package/dist/components/Select/Select.cjs.map +0 -1
  201. package/dist/components/Select/Select.js.map +0 -1
  202. package/dist/components/Stat/Stat.cjs.map +0 -1
  203. package/dist/components/Stat/Stat.js.map +0 -1
  204. package/dist/components/StatusMessage/StatusMessage.cjs.map +0 -1
  205. package/dist/components/StatusMessage/StatusMessage.js.map +0 -1
  206. package/dist/components/StatusMessage/index.d.ts +0 -1
  207. package/dist/components/StatusMessage.d.ts +0 -2
  208. package/dist/components/Stepper/Stepper.cjs +0 -162
  209. package/dist/components/Stepper/Stepper.cjs.map +0 -1
  210. package/dist/components/Stepper/Stepper.js +0 -162
  211. package/dist/components/Stepper/Stepper.js.map +0 -1
  212. package/dist/components/Switch/Switch.cjs.map +0 -1
  213. package/dist/components/Switch/Switch.js.map +0 -1
  214. package/dist/components/Table/Table.cjs.map +0 -1
  215. package/dist/components/Table/Table.js.map +0 -1
  216. package/dist/components/Tabs/Tabs.cjs.map +0 -1
  217. package/dist/components/Tabs/Tabs.js.map +0 -1
  218. package/dist/index.d.ts +0 -3
  219. package/dist/index.js +0 -37
  220. package/dist/package.json +0 -207
  221. package/dist/useWizard-CWdIxZzX.cjs.map +0 -1
  222. package/dist/useWizard-CWq--C3o.js.map +0 -1
  223. package/rollup.config.cjs +0 -87
  224. package/src/components/ActionMenu/ActionMenu.stories.tsx +0 -230
  225. package/src/components/ActionMenu/ActionMenu.tsx +0 -174
  226. package/src/components/ActionMenu/index.ts +0 -2
  227. package/src/components/AppBar/AppBar.stories.tsx +0 -272
  228. package/src/components/AppBar/AppBar.sx.ts +0 -32
  229. package/src/components/AppBar/AppBar.tsx +0 -123
  230. package/src/components/AppBar/AppBarBrand.tsx +0 -120
  231. package/src/components/AppBar/AppBarContext.ts +0 -25
  232. package/src/components/AppBar/AppBarMenuToggle.tsx +0 -90
  233. package/src/components/AppBar/AppBarUserMenu.tsx +0 -217
  234. package/src/components/AppBar/index.ts +0 -25
  235. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -477
  236. package/src/components/Autocomplete/Autocomplete.helpers.ts +0 -60
  237. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -748
  238. package/src/components/Autocomplete/Autocomplete.sx.ts +0 -30
  239. package/src/components/Autocomplete/Autocomplete.tsx +0 -361
  240. package/src/components/Autocomplete/Autocomplete.types.ts +0 -13
  241. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +0 -55
  242. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +0 -17
  243. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +0 -31
  244. package/src/components/Autocomplete/index.ts +0 -12
  245. package/src/components/Avatar/Avatar.definitions.ts +0 -162
  246. package/src/components/Avatar/Avatar.stories.tsx +0 -258
  247. package/src/components/Avatar/Avatar.tsx +0 -206
  248. package/src/components/Avatar/index.ts +0 -1
  249. package/src/components/Button/Button.definition.ts +0 -97
  250. package/src/components/Button/Button.stories.tsx +0 -285
  251. package/src/components/Button/Button.tsx +0 -67
  252. package/src/components/Button/index.ts +0 -1
  253. package/src/components/Card/Card.definition.ts +0 -5
  254. package/src/components/Card/Card.stories.tsx +0 -221
  255. package/src/components/Card/Card.sx.ts +0 -104
  256. package/src/components/Card/Card.tsx +0 -200
  257. package/src/components/Card/index.ts +0 -9
  258. package/src/components/Chip/Chip.definitions.ts +0 -167
  259. package/src/components/Chip/Chip.stories.tsx +0 -265
  260. package/src/components/Chip/Chip.tsx +0 -61
  261. package/src/components/Chip/index.ts +0 -1
  262. package/src/components/Column/Column.tsx +0 -29
  263. package/src/components/Column/index.ts +0 -1
  264. package/src/components/DatePicker/DatePicker.definitions.ts +0 -228
  265. package/src/components/DatePicker/DatePicker.helpers.ts +0 -24
  266. package/src/components/DatePicker/DatePicker.stories.tsx +0 -309
  267. package/src/components/DatePicker/DatePicker.sx.ts +0 -33
  268. package/src/components/DatePicker/DatePicker.tsx +0 -189
  269. package/src/components/DatePicker/DatePicker.types.ts +0 -10
  270. package/src/components/DatePicker/index.ts +0 -9
  271. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  272. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  273. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  274. package/src/components/DateRangePicker/index.ts +0 -1
  275. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -256
  276. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +0 -38
  277. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -418
  278. package/src/components/DateTimePicker/DateTimePicker.sx.ts +0 -30
  279. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -225
  280. package/src/components/DateTimePicker/DateTimePicker.types.ts +0 -10
  281. package/src/components/DateTimePicker/index.ts +0 -9
  282. package/src/components/Drawer/Drawer.stories.tsx +0 -438
  283. package/src/components/Drawer/Drawer.sx.ts +0 -106
  284. package/src/components/Drawer/Drawer.tsx +0 -222
  285. package/src/components/Drawer/DrawerContext.ts +0 -26
  286. package/src/components/Drawer/DrawerItem.tsx +0 -110
  287. package/src/components/Drawer/index.ts +0 -10
  288. package/src/components/Flyout/Flyout.stories.tsx +0 -282
  289. package/src/components/Flyout/Flyout.tsx +0 -122
  290. package/src/components/Flyout/index.ts +0 -1
  291. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  292. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  293. package/src/components/Gallery/Gallery.tsx +0 -118
  294. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  295. package/src/components/Gallery/GalleryMain.tsx +0 -84
  296. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  297. package/src/components/Gallery/index.ts +0 -1
  298. package/src/components/Icon/Icon.stories.tsx +0 -121
  299. package/src/components/Icon/Icon.tsx +0 -175
  300. package/src/components/Icon/index.ts +0 -2
  301. package/src/components/Input/Input.definitions.ts +0 -348
  302. package/src/components/Input/Input.helpers.ts +0 -49
  303. package/src/components/Input/Input.stories.tsx +0 -528
  304. package/src/components/Input/Input.sx.ts +0 -42
  305. package/src/components/Input/Input.tsx +0 -141
  306. package/src/components/Input/Input.types.ts +0 -10
  307. package/src/components/Input/index.ts +0 -9
  308. package/src/components/InputGroup/InputGroup.definitions.ts +0 -158
  309. package/src/components/InputGroup/InputGroup.stories.tsx +0 -267
  310. package/src/components/InputGroup/InputGroup.tsx +0 -179
  311. package/src/components/InputGroup/index.ts +0 -1
  312. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  313. package/src/components/MenuButton/MenuButton.tsx +0 -100
  314. package/src/components/MenuButton/index.ts +0 -1
  315. package/src/components/Modal/Modal.stories.tsx +0 -721
  316. package/src/components/Modal/Modal.tsx +0 -355
  317. package/src/components/Modal/ModalBody.tsx +0 -16
  318. package/src/components/Modal/ModalFooter.tsx +0 -71
  319. package/src/components/Modal/ModalHeader.tsx +0 -18
  320. package/src/components/Modal/index.ts +0 -6
  321. package/src/components/PageLoader/PageLoader.stories.tsx +0 -217
  322. package/src/components/PageLoader/PageLoader.tsx +0 -96
  323. package/src/components/PageLoader/index.ts +0 -2
  324. package/src/components/RadioGroup/RadioGroup.definitions.ts +0 -177
  325. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -231
  326. package/src/components/RadioGroup/RadioGroup.sx.ts +0 -75
  327. package/src/components/RadioGroup/RadioGroup.tsx +0 -196
  328. package/src/components/RadioGroup/RadioGroup.types.ts +0 -10
  329. package/src/components/RadioGroup/index.ts +0 -9
  330. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +0 -158
  331. package/src/components/ScrollTopButton/ScrollTopButton.tsx +0 -135
  332. package/src/components/ScrollTopButton/index.ts +0 -8
  333. package/src/components/ScrollTopButton/scrollToTop.ts +0 -37
  334. package/src/components/Select/Select.definitions.ts +0 -602
  335. package/src/components/Select/Select.helpers.ts +0 -71
  336. package/src/components/Select/Select.stories.tsx +0 -687
  337. package/src/components/Select/Select.sx.ts +0 -14
  338. package/src/components/Select/Select.tsx +0 -429
  339. package/src/components/Select/Select.types.ts +0 -15
  340. package/src/components/Select/_parts/SelectMenuItem.tsx +0 -40
  341. package/src/components/Select/_parts/SelectSearchHeader.tsx +0 -51
  342. package/src/components/Select/_parts/SelectValue.tsx +0 -96
  343. package/src/components/Select/index.ts +0 -14
  344. package/src/components/Stat/Stat.stories.tsx +0 -85
  345. package/src/components/Stat/Stat.tsx +0 -117
  346. package/src/components/Stat/index.ts +0 -2
  347. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  348. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  349. package/src/components/StatusMessage/index.ts +0 -2
  350. package/src/components/Stepper/Step.tsx +0 -21
  351. package/src/components/Stepper/Stepper.definition.ts +0 -75
  352. package/src/components/Stepper/Stepper.stories.tsx +0 -194
  353. package/src/components/Stepper/Stepper.tsx +0 -210
  354. package/src/components/Stepper/index.ts +0 -2
  355. package/src/components/Switch/Switch.definitions.ts +0 -134
  356. package/src/components/Switch/Switch.stories.tsx +0 -213
  357. package/src/components/Switch/Switch.sx.ts +0 -81
  358. package/src/components/Switch/Switch.tsx +0 -172
  359. package/src/components/Switch/Switch.types.ts +0 -10
  360. package/src/components/Switch/index.ts +0 -9
  361. package/src/components/Table/EmptyTable.png +0 -0
  362. package/src/components/Table/Table.definition.ts +0 -580
  363. package/src/components/Table/Table.stories.tsx +0 -853
  364. package/src/components/Table/Table.tsx +0 -495
  365. package/src/components/Table/data.ts +0 -134
  366. package/src/components/Table/exportsUtils.ts +0 -195
  367. package/src/components/Table/index.ts +0 -3
  368. package/src/components/Table/types.ts +0 -34
  369. package/src/components/Tabs/Tab.definition.ts +0 -53
  370. package/src/components/Tabs/Tab.tsx +0 -19
  371. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  372. package/src/components/Tabs/Tabs.tsx +0 -99
  373. package/src/components/Tabs/_tabUtils.tsx +0 -4
  374. package/src/components/Tabs/index.ts +0 -2
  375. package/src/components/Timeline/Timeline.definition.ts +0 -43
  376. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  377. package/src/components/Timeline/Timeline.tsx +0 -49
  378. package/src/components/Timeline/TimelineItem.tsx +0 -31
  379. package/src/components/Timeline/index.ts +0 -2
  380. package/src/components/Tooltip/Tooltip.stories.tsx +0 -129
  381. package/src/components/Tooltip/Tooltip.tsx +0 -58
  382. package/src/components/Tooltip/index.ts +0 -1
  383. package/src/components/_shared/formField.sx.ts +0 -118
  384. package/src/components/_shared/resolvePreset.ts +0 -35
  385. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  386. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  387. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  388. package/src/hooks/ClipBoard/index.ts +0 -1
  389. package/src/hooks/Wizard/Wizard.stories.tsx +0 -301
  390. package/src/hooks/Wizard/WizardContext.tsx +0 -166
  391. package/src/hooks/Wizard/index.ts +0 -6
  392. package/src/hooks/Wizard/useWizard.ts +0 -13
  393. package/src/index.ts +0 -17
  394. package/src/mui.ts +0 -54
  395. package/src/styles.css +0 -3
  396. package/src/theme/componentStyles.ts +0 -49
  397. package/src/theme/tokens.ts +0 -43
  398. package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
  399. package/storybook-static/assets/AccountCircle-BDZFsbTw.js +0 -1
  400. package/storybook-static/assets/ActionMenu-EynP8yU1.js +0 -19
  401. package/storybook-static/assets/ActionMenu.stories-DqSqRGix.js +0 -185
  402. package/storybook-static/assets/Alert-3zvTPc0p.js +0 -1
  403. package/storybook-static/assets/AppBar.stories-DcX3M5th.js +0 -172
  404. package/storybook-static/assets/Autocomplete.stories-CXJm8FOT.js +0 -788
  405. package/storybook-static/assets/Avatar-NbFfkZws.js +0 -1
  406. package/storybook-static/assets/Avatar.stories-CwOYCzqU.js +0 -390
  407. package/storybook-static/assets/Box-BnhEcfFm.js +0 -1
  408. package/storybook-static/assets/Button-D9h7OggD.js +0 -1
  409. package/storybook-static/assets/Button-DBpqmVB_.js +0 -1
  410. package/storybook-static/assets/Button.stories-F20dmnjq.js +0 -320
  411. package/storybook-static/assets/ButtonBase-qyaMEhe4.js +0 -74
  412. package/storybook-static/assets/Card.stories-B3NpAhO0.js +0 -154
  413. package/storybook-static/assets/CheckCircleOutline-CEj5mDsl.js +0 -1
  414. package/storybook-static/assets/Chip-C3vKPpzR.js +0 -1
  415. package/storybook-static/assets/Chip.stories-sxcfHVo9.js +0 -333
  416. package/storybook-static/assets/CircularProgress-DC7ZNWwl.js +0 -28
  417. package/storybook-static/assets/Clear-4kYcKvT3.js +0 -1
  418. package/storybook-static/assets/ClipBoard-DvLBdNHe.js +0 -1
  419. package/storybook-static/assets/ClipBoard.stories-BGUo47r6.js +0 -108
  420. package/storybook-static/assets/Close-CgHeRgmh.js +0 -1
  421. package/storybook-static/assets/Close-Cy8nELYU.js +0 -1
  422. package/storybook-static/assets/Color-AVL7NMMY-BJKvwERm.js +0 -1
  423. package/storybook-static/assets/ContentCopy-BfLTDb10.js +0 -1
  424. package/storybook-static/assets/DatePicker-Clkpr-Ku.js +0 -1
  425. package/storybook-static/assets/DatePicker.stories-EaUCMkh3.js +0 -444
  426. package/storybook-static/assets/DateRangePicker.stories-BMlkj-8K.js +0 -390
  427. package/storybook-static/assets/DateTimePicker.stories-B6gdzKq5.js +0 -555
  428. package/storybook-static/assets/DefaultPropsProvider-BGoQxtDa.js +0 -16
  429. package/storybook-static/assets/Delete-D2SMMmIA.js +0 -1
  430. package/storybook-static/assets/DialogContent-BeCDKgax.js +0 -1
  431. package/storybook-static/assets/Divider-BbCj9wT4.js +0 -1
  432. package/storybook-static/assets/DocsRenderer-PQXLIZUC-BebLK5Y_.js +0 -1243
  433. package/storybook-static/assets/Drawer-DcFwy73r.js +0 -1
  434. package/storybook-static/assets/Drawer.stories-C5AZkJBk.js +0 -173
  435. package/storybook-static/assets/EmptyTable-B-RKtgVs.png +0 -0
  436. package/storybook-static/assets/ErrorOutline-D9gM7ART.js +0 -1
  437. package/storybook-static/assets/Fade-Ll96CvH8.js +0 -1
  438. package/storybook-static/assets/Flyout.stories-Cf7z6MNw.js +0 -163
  439. package/storybook-static/assets/Gallery.stories-DdpWVTF6.js +0 -127
  440. package/storybook-static/assets/Grow-8y4FglGK.js +0 -1
  441. package/storybook-static/assets/Home-BRvJEp2L.js +0 -1
  442. package/storybook-static/assets/Icon.stories-D0mUiW_t.js +0 -78
  443. package/storybook-static/assets/IconButton-9OYSTH58.js +0 -1
  444. package/storybook-static/assets/Input-CjX0t4h-.js +0 -1
  445. package/storybook-static/assets/Input.stories-BRxekliy.js +0 -650
  446. package/storybook-static/assets/InputGroup.stories-DH6gUfmn.js +0 -306
  447. package/storybook-static/assets/KeyboardArrowRight-WO_attK2.js +0 -1
  448. package/storybook-static/assets/KeyboardArrowUp-DsyVef-i.js +0 -1
  449. package/storybook-static/assets/ListItem-D3O0103N.js +0 -1
  450. package/storybook-static/assets/ListItemIcon-hca6xN79.js +0 -1
  451. package/storybook-static/assets/ListItemText-BFLAwLdl.js +0 -1
  452. package/storybook-static/assets/Logout-gj-P3AfU.js +0 -1
  453. package/storybook-static/assets/Menu-ClzfjLc3.js +0 -1
  454. package/storybook-static/assets/MenuButton.stories-B-W_QVDt.js +0 -162
  455. package/storybook-static/assets/MenuItem-iU6tAqJI.js +0 -1
  456. package/storybook-static/assets/Modal-3okp9H2i.js +0 -1
  457. package/storybook-static/assets/Modal.stories-DIWzm4qR.js +0 -468
  458. package/storybook-static/assets/MoreVert-BoIVG4gh.js +0 -1
  459. package/storybook-static/assets/Notifications-DY_A-Sho.js +0 -1
  460. package/storybook-static/assets/PageLoader.stories-DmtO1mlm.js +0 -158
  461. package/storybook-static/assets/Paper-SwQBhqI7.js +0 -1
  462. package/storybook-static/assets/Person-CkQl-mpq.js +0 -1
  463. package/storybook-static/assets/PickersModalDialog-Tjnr_cu5.js +0 -10
  464. package/storybook-static/assets/PickersToolbarButton-Tt185-si.js +0 -1
  465. package/storybook-static/assets/Popper-CnCTYXxy.js +0 -1
  466. package/storybook-static/assets/Portal-Cj8XF9Lf.js +0 -1
  467. package/storybook-static/assets/ScrollTopButton.stories-BflQCwNP.js +0 -90
  468. package/storybook-static/assets/Select-CjcuMAY0.js +0 -4
  469. package/storybook-static/assets/Select-DJh2biEb.js +0 -3
  470. package/storybook-static/assets/Select.stories-DU1Gb3I2.js +0 -1103
  471. package/storybook-static/assets/Settings-BLKc1CnO.js +0 -1
  472. package/storybook-static/assets/Snackbar-BtVeKTw6.js +0 -1
  473. package/storybook-static/assets/Stack-D01OUIXi.js +0 -1
  474. package/storybook-static/assets/Stat.stories-Bn9-iuPT.js +0 -60
  475. package/storybook-static/assets/StatusMessage.stories-hnfX8FeU.js +0 -73
  476. package/storybook-static/assets/Stepper-BtKB5ykn.js +0 -2
  477. package/storybook-static/assets/Stepper.stories-CTEZbgPc.js +0 -165
  478. package/storybook-static/assets/Table.stories-CTn2Ktmn.js +0 -1260
  479. package/storybook-static/assets/TableContainer-CzLNaEU-.js +0 -1
  480. package/storybook-static/assets/TableRow-CS88-1HF.js +0 -2
  481. package/storybook-static/assets/Tabs-DLpDOu_n.js +0 -1
  482. package/storybook-static/assets/Tabs.stories-BFVuFy_5.js +0 -159
  483. package/storybook-static/assets/TextField-22T-xHBm.js +0 -1
  484. package/storybook-static/assets/Timeline.stories-DJU_U2Hv.js +0 -97
  485. package/storybook-static/assets/Tooltip-DbnHUxNj.js +0 -1
  486. package/storybook-static/assets/Tooltip.stories-B7tA3dnV.js +0 -66
  487. package/storybook-static/assets/Typography-BgntX2Ep.js +0 -1
  488. package/storybook-static/assets/Wizard.stories-CVrJLK_D.js +0 -23
  489. package/storybook-static/assets/createSimplePaletteValueFilter-bm0fmN_7.js +0 -1
  490. package/storybook-static/assets/createSvgIcon-D_Gca4vA.js +0 -1
  491. package/storybook-static/assets/debounce-Be36O1Ab.js +0 -1
  492. package/storybook-static/assets/emotion-react.browser.esm--g-C9cX9.js +0 -8
  493. package/storybook-static/assets/extendSxProp-CEpa30hT.js +0 -1
  494. package/storybook-static/assets/formField.sx-DMCmZIAa.js +0 -1
  495. package/storybook-static/assets/getReactElementRef-BQ3ANZdy.js +0 -1
  496. package/storybook-static/assets/iframe-BAJnc_4n.js +0 -1079
  497. package/storybook-static/assets/index-B1tlhOpe.js +0 -240
  498. package/storybook-static/assets/index-BF3FAXTk.js +0 -9
  499. package/storybook-static/assets/index-CIeucmOB.js +0 -2
  500. package/storybook-static/assets/index-CY7j4a7o.js +0 -1
  501. package/storybook-static/assets/index-CxkKctw5.js +0 -1
  502. package/storybook-static/assets/isFocusVisible-B8k4qzLc.js +0 -1
  503. package/storybook-static/assets/isMuiElement-CTZSFcY5.js +0 -1
  504. package/storybook-static/assets/jsx-runtime-D_zvdyIk.js +0 -9
  505. package/storybook-static/assets/listItemTextClasses-CC_rwJam.js +0 -1
  506. package/storybook-static/assets/mergeSlotProps-B0UBKBMe.js +0 -1
  507. package/storybook-static/assets/ownerDocument-DW-IO8s5.js +0 -1
  508. package/storybook-static/assets/ownerWindow-HkKU3E4x.js +0 -1
  509. package/storybook-static/assets/preload-helper-PPVm8Dsz.js +0 -1
  510. package/storybook-static/assets/react-18-BUJ64QCV.js +0 -25
  511. package/storybook-static/assets/resolvePreset-CN2aOJJr.js +0 -1
  512. package/storybook-static/assets/useControlled-DsVh1a5j.js +0 -1
  513. package/storybook-static/assets/useForkRef-0ANIrxcF.js +0 -1
  514. package/storybook-static/assets/useId-b4fZxjOL.js +0 -1
  515. package/storybook-static/assets/useMobilePicker-DK-c8xbD.js +0 -1
  516. package/storybook-static/assets/usePreviousProps-WR0rG4aR.js +0 -1
  517. package/storybook-static/assets/useSlot-b6pXgp5_.js +0 -1
  518. package/storybook-static/assets/useSlotProps-C0uMfuBt.js +0 -1
  519. package/storybook-static/assets/useTheme-BmOJK7ra.js +0 -1
  520. package/storybook-static/assets/useThemeProps-DYtxXiUU.js +0 -1
  521. package/storybook-static/assets/useThemeProps-U4yXiZ_5.js +0 -1
  522. package/storybook-static/assets/useTimeout-DNjRaOWc.js +0 -1
  523. package/storybook-static/assets/visuallyHidden-Dan1xhjv.js +0 -1
  524. package/storybook-static/favicon-wrapper.svg +0 -46
  525. package/storybook-static/favicon.svg +0 -1
  526. package/storybook-static/iframe.html +0 -686
  527. package/storybook-static/index.html +0 -160
  528. package/storybook-static/index.json +0 -1
  529. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  530. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  531. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  532. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  533. package/storybook-static/project.json +0 -1
  534. package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js +0 -356
  535. package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js.LEGAL.txt +0 -40
  536. package/storybook-static/sb-addons/docs-4/manager-bundle.js +0 -151
  537. package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +0 -127
  538. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +0 -971
  539. package/storybook-static/sb-addons/vitest-3/manager-bundle.js +0 -3
  540. package/storybook-static/sb-common-assets/favicon-wrapper.svg +0 -46
  541. package/storybook-static/sb-common-assets/favicon.svg +0 -1
  542. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  543. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  544. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  545. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  546. package/storybook-static/sb-manager/globals-module-info.js +0 -797
  547. package/storybook-static/sb-manager/globals-runtime.js +0 -69679
  548. package/storybook-static/sb-manager/globals.js +0 -34
  549. package/storybook-static/sb-manager/runtime.js +0 -13195
  550. package/storybook-static/vite-inject-mocker-entry.js +0 -18
  551. package/tailwind.config.js +0 -10
  552. package/tsconfig.json +0 -48
  553. package/tsup.config.js +0 -41
  554. package/vite.config.js +0 -132
  555. package/vitest.config.ts +0 -35
  556. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  557. /package/{dist/Button-C17mExpd.cjs.map → Button-C17mExpd.cjs.map} +0 -0
  558. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  559. /package/{dist/Button-UkkP-bNw.js.map → Button-UkkP-bNw.js.map} +0 -0
  560. /package/{dist/README.md → README.md} +0 -0
  561. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs +0 -0
  562. /package/{dist/components → components}/ActionMenu/ActionMenu.cjs.map +0 -0
  563. /package/{dist/components → components}/ActionMenu/ActionMenu.d.ts +0 -0
  564. /package/{dist/components → components}/ActionMenu/ActionMenu.js +0 -0
  565. /package/{dist/components → components}/ActionMenu/ActionMenu.js.map +0 -0
  566. /package/{dist/components → components}/ActionMenu/index.d.ts +0 -0
  567. /package/{dist/components → components}/ActionMenu.d.ts +0 -0
  568. /package/{dist/components → components}/AppBar/AppBar.cjs.map +0 -0
  569. /package/{dist/components → components}/AppBar/AppBar.d.ts +0 -0
  570. /package/{dist/components → components}/AppBar/AppBar.js.map +0 -0
  571. /package/{dist/components → components}/AppBar/AppBar.sx.d.ts +0 -0
  572. /package/{dist/components → components}/AppBar/AppBarBrand.d.ts +0 -0
  573. /package/{dist/components → components}/AppBar/AppBarContext.d.ts +0 -0
  574. /package/{dist/components → components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  575. /package/{dist/components → components}/AppBar/AppBarUserMenu.d.ts +0 -0
  576. /package/{dist/components → components}/AppBar/index.d.ts +0 -0
  577. /package/{dist/components → components}/AppBar.d.ts +0 -0
  578. /package/{dist/components → components}/Autocomplete/Autocomplete.d.ts +0 -0
  579. /package/{dist/components → components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  580. /package/{dist/components → components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  581. /package/{dist/components → components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  582. /package/{dist/components → components}/Autocomplete/Autocomplete.types.d.ts +0 -0
  583. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  584. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  585. /package/{dist/components → components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  586. /package/{dist/components → components}/Autocomplete/index.d.ts +0 -0
  587. /package/{dist/components → components}/Autocomplete.d.ts +0 -0
  588. /package/{dist/components → components}/Avatar/Avatar.d.ts +0 -0
  589. /package/{dist/components → components}/Avatar/Avatar.definitions.d.ts +0 -0
  590. /package/{dist/components → components}/Avatar/index.d.ts +0 -0
  591. /package/{dist/components → components}/Avatar.d.ts +0 -0
  592. /package/{dist/components → components}/Button/Button.cjs +0 -0
  593. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  594. /package/{dist/components → components}/Button/Button.d.ts +0 -0
  595. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  596. /package/{dist/components → components}/Button/Button.js +0 -0
  597. /package/{dist/components → components}/Button/Button.js.map +0 -0
  598. /package/{dist/components → components}/Button/index.d.ts +0 -0
  599. /package/{dist/components → components}/Button.d.ts +0 -0
  600. /package/{dist/components → components}/Card/Card.d.ts +0 -0
  601. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  602. /package/{dist/components → components}/Card/Card.sx.d.ts +0 -0
  603. /package/{dist/components → components}/Card/index.d.ts +0 -0
  604. /package/{dist/components → components}/Card.d.ts +0 -0
  605. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  606. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  607. /package/{dist/components → components}/Chip/index.d.ts +0 -0
  608. /package/{dist/components → components}/Chip.d.ts +0 -0
  609. /package/{dist/components → components}/Column.d.ts +0 -0
  610. /package/{dist/components → components}/DatePicker/DatePicker.d.ts +0 -0
  611. /package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  612. /package/{dist/components → components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  613. /package/{dist/components → components}/DatePicker/DatePicker.sx.d.ts +0 -0
  614. /package/{dist/components → components}/DatePicker/DatePicker.types.d.ts +0 -0
  615. /package/{dist/components → components}/DatePicker/index.d.ts +0 -0
  616. /package/{dist/components → components}/DatePicker.d.ts +0 -0
  617. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  618. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  619. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  620. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  621. /package/{dist/components → components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  622. /package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  623. /package/{dist/components → components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  624. /package/{dist/components → components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  625. /package/{dist/components → components}/DateTimePicker/DateTimePicker.types.d.ts +0 -0
  626. /package/{dist/components → components}/DateTimePicker/index.d.ts +0 -0
  627. /package/{dist/components → components}/DateTimePicker.d.ts +0 -0
  628. /package/{dist/components → components}/Drawer/Drawer.cjs.map +0 -0
  629. /package/{dist/components → components}/Drawer/Drawer.d.ts +0 -0
  630. /package/{dist/components → components}/Drawer/Drawer.js.map +0 -0
  631. /package/{dist/components → components}/Drawer/Drawer.sx.d.ts +0 -0
  632. /package/{dist/components → components}/Drawer/DrawerContext.d.ts +0 -0
  633. /package/{dist/components → components}/Drawer/DrawerItem.d.ts +0 -0
  634. /package/{dist/components → components}/Drawer/index.d.ts +0 -0
  635. /package/{dist/components → components}/Drawer.d.ts +0 -0
  636. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  637. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  638. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  639. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  640. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  641. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  642. /package/{dist/components → components}/Flyout.d.ts +0 -0
  643. /package/{dist/components → components}/Gallery/Gallery.cjs +0 -0
  644. /package/{dist/components → components}/Gallery/Gallery.cjs.map +0 -0
  645. /package/{dist/components → components}/Gallery/Gallery.d.ts +0 -0
  646. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  647. /package/{dist/components → components}/Gallery/Gallery.js +0 -0
  648. /package/{dist/components → components}/Gallery/Gallery.js.map +0 -0
  649. /package/{dist/components → components}/Gallery/GalleryLightbox.d.ts +0 -0
  650. /package/{dist/components → components}/Gallery/GalleryMain.d.ts +0 -0
  651. /package/{dist/components → components}/Gallery/GalleryThumbnails.d.ts +0 -0
  652. /package/{dist/components → components}/Gallery/index.d.ts +0 -0
  653. /package/{dist/components → components}/Gallery.d.ts +0 -0
  654. /package/{dist/components → components}/Icon/Icon.cjs +0 -0
  655. /package/{dist/components → components}/Icon/Icon.cjs.map +0 -0
  656. /package/{dist/components → components}/Icon/Icon.d.ts +0 -0
  657. /package/{dist/components → components}/Icon/Icon.js +0 -0
  658. /package/{dist/components → components}/Icon/Icon.js.map +0 -0
  659. /package/{dist/components → components}/Icon/index.d.ts +0 -0
  660. /package/{dist/components → components}/Icon.d.ts +0 -0
  661. /package/{dist/components → components}/Input/Input.d.ts +0 -0
  662. /package/{dist/components → components}/Input/Input.definitions.d.ts +0 -0
  663. /package/{dist/components → components}/Input/Input.helpers.d.ts +0 -0
  664. /package/{dist/components → components}/Input/Input.sx.d.ts +0 -0
  665. /package/{dist/components → components}/Input/Input.types.d.ts +0 -0
  666. /package/{dist/components → components}/Input/index.d.ts +0 -0
  667. /package/{dist/components → components}/Input.d.ts +0 -0
  668. /package/{dist/components → components}/InputGroup/InputGroup.cjs +0 -0
  669. /package/{dist/components → components}/InputGroup/InputGroup.cjs.map +0 -0
  670. /package/{dist/components → components}/InputGroup/InputGroup.d.ts +0 -0
  671. /package/{dist/components → components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  672. /package/{dist/components → components}/InputGroup/InputGroup.js +0 -0
  673. /package/{dist/components → components}/InputGroup/InputGroup.js.map +0 -0
  674. /package/{dist/components → components}/InputGroup/index.d.ts +0 -0
  675. /package/{dist/components → components}/InputGroup.d.ts +0 -0
  676. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  677. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  678. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  679. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  680. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  681. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  682. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  683. /package/{dist/components → components}/Modal/Modal.d.ts +0 -0
  684. /package/{dist/components → components}/Modal/ModalBody.d.ts +0 -0
  685. /package/{dist/components → components}/Modal/ModalFooter.d.ts +0 -0
  686. /package/{dist/components → components}/Modal/ModalHeader.d.ts +0 -0
  687. /package/{dist/components → components}/PageLoader/PageLoader.cjs +0 -0
  688. /package/{dist/components → components}/PageLoader/PageLoader.cjs.map +0 -0
  689. /package/{dist/components → components}/PageLoader/PageLoader.d.ts +0 -0
  690. /package/{dist/components → components}/PageLoader/PageLoader.js +0 -0
  691. /package/{dist/components → components}/PageLoader/PageLoader.js.map +0 -0
  692. /package/{dist/components → components}/PageLoader/index.d.ts +0 -0
  693. /package/{dist/components → components}/PageLoader.d.ts +0 -0
  694. /package/{dist/components → components}/RadioGroup/RadioGroup.d.ts +0 -0
  695. /package/{dist/components → components}/RadioGroup/RadioGroup.definitions.d.ts +0 -0
  696. /package/{dist/components → components}/RadioGroup/RadioGroup.sx.d.ts +0 -0
  697. /package/{dist/components → components}/RadioGroup/RadioGroup.types.d.ts +0 -0
  698. /package/{dist/components → components}/RadioGroup/index.d.ts +0 -0
  699. /package/{dist/components → components}/RadioGroup.d.ts +0 -0
  700. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.cjs.map +0 -0
  701. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.d.ts +0 -0
  702. /package/{dist/components → components}/ScrollTopButton/ScrollTopButton.js.map +0 -0
  703. /package/{dist/components → components}/ScrollTopButton/index.d.ts +0 -0
  704. /package/{dist/components → components}/ScrollTopButton/scrollToTop.d.ts +0 -0
  705. /package/{dist/components → components}/ScrollTopButton.d.ts +0 -0
  706. /package/{dist/components → components}/Select/Select.d.ts +0 -0
  707. /package/{dist/components → components}/Select/Select.definitions.d.ts +0 -0
  708. /package/{dist/components → components}/Select/Select.helpers.d.ts +0 -0
  709. /package/{dist/components → components}/Select/Select.sx.d.ts +0 -0
  710. /package/{dist/components → components}/Select/Select.types.d.ts +0 -0
  711. /package/{dist/components → components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  712. /package/{dist/components → components}/Select/_parts/SelectSearchHeader.d.ts +0 -0
  713. /package/{dist/components → components}/Select/_parts/SelectValue.d.ts +0 -0
  714. /package/{dist/components → components}/Select/index.d.ts +0 -0
  715. /package/{dist/components → components}/Select.d.ts +0 -0
  716. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  717. /package/{dist/components → components}/Stat/index.d.ts +0 -0
  718. /package/{dist/components → components}/Stat.d.ts +0 -0
  719. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  720. /package/{dist/components → components}/Stepper/Stepper.d.ts +0 -0
  721. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  722. /package/{dist/components → components}/Stepper/index.d.ts +0 -0
  723. /package/{dist/components → components}/Stepper.d.ts +0 -0
  724. /package/{dist/components → components}/Switch/Switch.d.ts +0 -0
  725. /package/{dist/components → components}/Switch/Switch.definitions.d.ts +0 -0
  726. /package/{dist/components → components}/Switch/Switch.sx.d.ts +0 -0
  727. /package/{dist/components → components}/Switch/Switch.types.d.ts +0 -0
  728. /package/{dist/components → components}/Switch/index.d.ts +0 -0
  729. /package/{dist/components → components}/Switch.d.ts +0 -0
  730. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  731. /package/{dist/components → components}/Table/data.d.ts +0 -0
  732. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  733. /package/{dist/components → components}/Table/index.d.ts +0 -0
  734. /package/{dist/components → components}/Table/types.d.ts +0 -0
  735. /package/{dist/components → components}/Table.d.ts +0 -0
  736. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  737. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  738. /package/{dist/components → components}/Tabs/Tabs.d.ts +0 -0
  739. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  740. /package/{dist/components → components}/Tabs/index.d.ts +0 -0
  741. /package/{dist/components → components}/Tabs.d.ts +0 -0
  742. /package/{dist/components → components}/Timeline/Timeline.cjs +0 -0
  743. /package/{dist/components → components}/Timeline/Timeline.cjs.map +0 -0
  744. /package/{dist/components → components}/Timeline/Timeline.d.ts +0 -0
  745. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  746. /package/{dist/components → components}/Timeline/Timeline.js +0 -0
  747. /package/{dist/components → components}/Timeline/Timeline.js.map +0 -0
  748. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  749. /package/{dist/components → components}/Timeline/index.d.ts +0 -0
  750. /package/{dist/components → components}/Timeline.d.ts +0 -0
  751. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  752. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  753. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  754. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  755. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  756. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  757. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  758. /package/{dist/components → components}/_shared/formField.sx.d.ts +0 -0
  759. /package/{dist/components → components}/_shared/resolvePreset.d.ts +0 -0
  760. /package/{dist/formField.sx-CQ1mbk9M.cjs → formField.sx-CQ1mbk9M.cjs} +0 -0
  761. /package/{dist/formField.sx-CQ1mbk9M.cjs.map → formField.sx-CQ1mbk9M.cjs.map} +0 -0
  762. /package/{dist/formField.sx-DfVbMe0V.js → formField.sx-DfVbMe0V.js} +0 -0
  763. /package/{dist/formField.sx-DfVbMe0V.js.map → formField.sx-DfVbMe0V.js.map} +0 -0
  764. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  765. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  766. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  767. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  768. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  769. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  770. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  771. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  772. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs +0 -0
  773. /package/{dist/hooks → hooks}/Wizard/Wizard.cjs.map +0 -0
  774. /package/{dist/hooks → hooks}/Wizard/Wizard.js +0 -0
  775. /package/{dist/hooks → hooks}/Wizard/Wizard.js.map +0 -0
  776. /package/{dist/hooks → hooks}/Wizard/index.d.ts +0 -0
  777. /package/{dist/hooks → hooks}/Wizard/useWizard.d.ts +0 -0
  778. /package/{dist/hooks → hooks}/Wizard.d.ts +0 -0
  779. /package/{dist/mui.d.ts → mui.d.ts} +0 -0
  780. /package/{dist/styles.css → styles.css} +0 -0
  781. /package/{dist/theme → theme}/componentStyles.d.ts +0 -0
  782. /package/{dist/theme → theme}/tokens.d.ts +0 -0
  783. /package/{dist/useWizard-CWdIxZzX.cjs → useWizard-CWdIxZzX.cjs} +0 -0
  784. /package/{dist/useWizard-CWq--C3o.js → useWizard-CWq--C3o.js} +0 -0
package/Readme.md DELETED
@@ -1,243 +0,0 @@
1
- # @soyfri/shared-library
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.
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
28
-
29
- ```bash
30
- npm install @soyfri/shared-library
31
- ```
32
-
33
- ## 🚀 Uso
34
-
35
- ```tsx
36
- import { Button, Table, Select } from '@soyfri/shared-library';
37
- import '@soyfri/shared-library/dist/styles.css';
38
-
39
- function App() {
40
- return (
41
- <div>
42
- <Button variant="contained" color="primary">
43
- Mi Botón
44
- </Button>
45
- </div>
46
- );
47
- }
48
- ```
49
-
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.
54
-
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
61
-
62
- ### Table
63
- Componente de tabla flexible con paginación interna y externa, ordenamiento y renderizado personalizado de columnas.
64
-
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
71
-
72
- ### Select
73
- Componente select avanzado con soporte para selección múltiple, filtros, agrupación y renderizado personalizado.
74
-
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
81
-
82
- ### Avatar
83
- Componente para mostrar avatares de usuarios con soporte para imágenes y texto.
84
-
85
- ### Icon
86
- Wrapper para iconos de Material-UI con propiedades consistentes.
87
-
88
- ### Stat
89
- Componente para mostrar estadísticas con diferentes plantillas de visualización.
90
-
91
- **Características:**
92
- - Plantilla simple
93
- - Plantilla con chip
94
- - Plantilla con lista de chips
95
- - Colores personalizables
96
-
97
- ### Column
98
- Componente auxiliar para definir columnas en el componente Table.
99
-
100
- ## 🛠️ Desarrollo
101
-
102
- ### Prerrequisitos
103
-
104
- - Node.js (versión 18 o superior)
105
- - npm o yarn
106
-
107
- ### Configuración del entorno de desarrollo
108
-
109
- 1. Clona el repositorio:
110
- ```bash
111
- git clone <repository-url>
112
- cd shared-library
113
- ```
114
-
115
- 2. Instala las dependencias:
116
- ```bash
117
- npm install
118
- ```
119
-
120
- 3. Inicia el entorno de desarrollo:
121
- ```bash
122
- npm run dev
123
- ```
124
-
125
- ## 📜 Scripts Disponibles
126
-
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
136
-
137
- ## 📚 Storybook
138
-
139
- La librería incluye Storybook para documentación interactiva y desarrollo de componentes.
140
-
141
- ### Iniciar Storybook
142
-
143
- ```bash
144
- npm run storybook
145
- ```
146
-
147
- Esto abrirá Storybook en `http://localhost:6006` donde podrás:
148
-
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
153
-
154
- ### Construir Storybook
155
-
156
- ```bash
157
- npm run build-storybook
158
- ```
159
-
160
- ## 🧪 Testing
161
-
162
- La librería está configurada con Vitest y Playwright para testing de componentes.
163
-
164
- ### Configuración de Testing
165
-
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
169
-
170
- ## 🔧 Tecnologías
171
-
172
- ### Dependencias Principales
173
-
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
178
-
179
- ### Herramientas de Desarrollo
180
-
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
-
187
- ## 📁 Estructura del Proyecto
188
-
189
- ```
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
209
- ```
210
-
211
- ### Estructura de Componentes
212
-
213
- Cada componente sigue una estructura consistente:
214
-
215
- ```
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)
222
- ```
223
-
224
- ## 🤝 Contribución
225
-
226
- Para contribuir al proyecto:
227
-
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
233
-
234
- ## 📄 Licencia
235
-
236
- ISC License
237
-
238
- ---
239
-
240
- **Versión actual:** 1.0.1
241
-
242
- Para más información y ejemplos detallados, consulta la documentación en Storybook ejecutando `npm run storybook`.
243
-
package/build.js DELETED
@@ -1,102 +0,0 @@
1
- import { readFileSync, existsSync, mkdirSync, writeFileSync, copyFileSync } from 'fs';
2
- import { join, basename } from 'path';
3
- import { sync } from 'glob';
4
-
5
- const projectRoot = process.cwd();
6
- const srcComponentsDir = join(projectRoot, 'src', 'components');
7
- const srcHooksDir = join(projectRoot, 'src', 'hooks');
8
- const distDir = join(projectRoot, 'dist');
9
- const distComponentsDir = join(distDir, 'components');
10
- const distHooksDir = join(distDir, 'hooks');
11
- const originalPackageJsonPath = join(projectRoot, 'package.json');
12
- const distPackageJsonPath = join(distDir, 'package.json');
13
- const readmePath = join(projectRoot, 'README.md');
14
-
15
- // Leer el package.json original
16
- const originalPackageJson = JSON.parse(readFileSync(originalPackageJsonPath, 'utf8'));
17
-
18
- // Inicializar el nuevo objeto exports
19
- let newExports = {
20
- ".": {
21
- "import": "./index.js",
22
- "require": "./index.cjs",
23
- "types": "./index.d.ts"
24
- },
25
- "./package.json": "./package.json"
26
- };
27
-
28
- // Función para procesar directorios de forma condicional y crear entradas en exports
29
- const processDirectories = (sourceDir, distDir, exportPrefix) => {
30
- if (!existsSync(sourceDir)) {
31
- console.log(`Directorio no encontrado: ${sourceDir}. Saltando.`);
32
- return;
33
- }
34
-
35
- if (!existsSync(distDir)) {
36
- mkdirSync(distDir, { recursive: true });
37
- }
38
-
39
- const componentDirs = sync(`${sourceDir}/*/`);
40
-
41
- console.log(`Buscando módulos en: ${sourceDir}`);
42
-
43
- componentDirs.forEach(componentDirPath => {
44
- const componentName = basename(componentDirPath);
45
-
46
- // Verificar si el nombre de la carpeta tiene la inicial en mayúscula
47
- if (!/^[A-Z]/.test(componentName)) {
48
- console.log(` - Saltando '${componentName}' porque su carpeta no empieza con mayúscula.`);
49
- return; // Saltar este componente
50
- }
51
-
52
- console.log(` - Módulo encontrado: ${componentName}`);
53
-
54
- // Crear carpeta en dist
55
- const distModuleFolder = join(distDir, componentName);
56
- if (!existsSync(distModuleFolder)) {
57
- mkdirSync(distModuleFolder, { recursive: true });
58
- }
59
-
60
- // Agregar entrada al objeto exports
61
- const exportPath = `./${exportPrefix}/${componentName}`;
62
- newExports[exportPath] = {
63
- "import": `./${exportPrefix}/${componentName}/${componentName}.js`,
64
- "require": `./${exportPrefix}/${componentName}/${componentName}.cjs`,
65
- "types": `./${exportPrefix}/${componentName}/${componentName}.d.ts`
66
- };
67
- });
68
- };
69
-
70
- // Procesar componentes
71
- processDirectories(srcComponentsDir, distComponentsDir, 'components');
72
-
73
- // Procesar hooks
74
- processDirectories(srcHooksDir, distHooksDir, 'hooks');
75
-
76
- // Crear una copia del package.json original para dist
77
- const distPackageJson = { ...originalPackageJson };
78
- distPackageJson.exports = newExports;
79
-
80
- // Eliminar propiedades innecesarias
81
- delete distPackageJson.scripts;
82
- delete distPackageJson.devDependencies;
83
- delete distPackageJson.private;
84
-
85
- // Asegurarse de que el directorio 'dist' exista
86
- if (!existsSync(distDir)) {
87
- mkdirSync(distDir, { recursive: true });
88
- }
89
-
90
- // Copiar README.md a la carpeta dist
91
- if (existsSync(readmePath)) {
92
- copyFileSync(readmePath, join(distDir, 'README.md'));
93
- console.log('Copiando README.md a la carpeta dist.');
94
- } else {
95
- console.log('No se encontró README.md en la raíz del proyecto. Saltando.');
96
- }
97
-
98
- // Escribir el nuevo package.json en dist/
99
- writeFileSync(distPackageJsonPath, JSON.stringify(distPackageJson, null, 2), 'utf8');
100
-
101
- console.log(`\n'package.json' generado exitosamente en: ${distPackageJsonPath}`);
102
- console.log('Contenido de la propiedad "exports":', JSON.stringify(newExports, null, 2));
@@ -1,5 +0,0 @@
1
- {
2
- "onlyChanged": true,
3
- "projectId": "Project:6836406d3794ebfc4012fb25",
4
- "zip": true
5
- }
@@ -1,40 +0,0 @@
1
- import { promises as fs } from 'fs';
2
- import { join } from 'path';
3
-
4
- // Define the folders to be cleaned (sub-folders will be deleted)
5
- const foldersToClean = ['components', 'hooks'];
6
- const srcPath = join(process.cwd(), 'src');
7
-
8
- const deleteLowercaseFolders = async () => {
9
- console.log('Iniciando el proceso de eliminación de carpetas...');
10
-
11
- for (const parentFolder of foldersToClean) {
12
- const parentPath = join(srcPath, parentFolder);
13
-
14
- if (!await fs.stat(parentPath).catch(() => false)) {
15
- console.log(`Directorio padre no encontrado: ${parentPath}. Saltando.`);
16
- continue;
17
- }
18
-
19
- try {
20
- // Leer el contenido del directorio padre y obtener información de los archivos
21
- const entries = await fs.readdir(parentPath, { withFileTypes: true });
22
-
23
- for (const entry of entries) {
24
- // Check if the entry is a directory and its name starts with a lowercase letter.
25
- if (entry.isDirectory() && /^[a-z]/.test(entry.name)) {
26
- const folderPath = join(parentPath, entry.name);
27
- await fs.rm(folderPath, { recursive: true, force: true });
28
- console.log(`- Carpeta eliminada: ${folderPath}`);
29
- }
30
- }
31
- } catch (error) {
32
- console.error(`Error al procesar el directorio ${parentPath}:`, error);
33
- }
34
- }
35
-
36
- console.log('Proceso de limpieza completado.');
37
- };
38
-
39
- // Execute the main function
40
- deleteLowercaseFolders();
@@ -1 +0,0 @@
1
- {"version":3,"file":"Autocomplete.cjs","sources":["../../../src/components/Autocomplete/Autocomplete.sx.ts","../../../src/components/Autocomplete/Autocomplete.helpers.ts","../../../src/components/Autocomplete/_parts/AutocompleteOption.tsx","../../../src/components/Autocomplete/_parts/AutocompleteChips.tsx","../../../src/components/Autocomplete/_parts/AutocompleteLoader.tsx","../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport type { LabelPosition } from './Autocomplete';\n\n/**\n * Builder del sx del Autocomplete. Reutiliza `buildFormFieldSx` y añade\n * los paddings propios del Autocomplete (chips + input interno).\n */\nexport const buildAutocompleteSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): SxProps<Theme> =>\n buildFormFieldSx({\n borderRadius,\n labelPosition,\n extraOutsideSx: {\n // El input interno del Autocomplete.\n '& .MuiAutocomplete-input': {\n paddingTop: '4px',\n paddingBottom: '4px',\n },\n\n // Contenedor del input (donde viven los chips en modo multiple).\n '& .MuiAutocomplete-inputRoot': {\n paddingTop: '4px',\n paddingBottom: '4px',\n },\n },\n });\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport type { SelectOption } from './Autocomplete';\n\n/** Resuelve un value único a su SelectOption dentro del pool. */\nexport const resolveSingleValue = (\n options: SelectOption[],\n value: SelectOption['value'] | null | undefined,\n): SelectOption | null => options.find((o) => o.value === value) ?? null;\n\n/** Resuelve un array de values a sus SelectOption dentro del pool. */\nexport const resolveMultipleValue = (\n options: SelectOption[],\n value: SelectOption['value'][] | null | undefined,\n): SelectOption[] => {\n if (!Array.isArray(value)) return [];\n return options.filter((o) => value.includes(o.value));\n};\n\n/** Merge de sx base + extra del consumer, respetando el contrato de MUI. */\nexport const mergeSx = (\n base: SxProps<Theme>,\n extra?: SxProps<Theme>,\n): SxProps<Theme> => {\n if (!extra) return base;\n return [base, ...(Array.isArray(extra) ? extra : [extra])] as SxProps<Theme>;\n};\n\n/**\n * Compara dos valores resueltos (single o multiple) por value para decidir\n * si son estructuralmente iguales. Se usa para estabilizar la referencia que\n * se pasa a MUI Autocomplete (MUI compara value por referencia con `!==`,\n * y una nueva referencia — aunque el contenido sea igual — dispara\n * `resetInputValue` y borra el texto mientras el usuario tipea).\n */\nexport const areResolvedValuesEqual = (\n prev: SelectOption | SelectOption[] | null,\n next: SelectOption | SelectOption[] | null,\n multiple: boolean,\n): boolean => {\n if (multiple) {\n if (!Array.isArray(prev) || !Array.isArray(next)) return false;\n if (prev.length !== next.length) return false;\n return prev.every((o, i) => o.value === next[i]?.value);\n }\n return (\n (prev as SelectOption | null)?.value ===\n (next as SelectOption | null)?.value\n );\n};\n\n/** Determina si un valor resuelto está vacío (para placeholder/shrink). */\nexport const isResolvedValueEmpty = (\n resolvedValue: unknown,\n multiple: boolean,\n): boolean => {\n if (multiple) {\n return !Array.isArray(resolvedValue) || resolvedValue.length === 0;\n }\n return !resolvedValue;\n};\n","import React from 'react';\nimport type { SelectOption, RenderOptionItem } from '../Autocomplete';\n\ninterface AutocompleteOptionProps {\n liProps: React.HTMLAttributes<HTMLLIElement> & { key?: React.Key };\n option: SelectOption;\n customRender?: RenderOptionItem;\n}\n\n/**\n * Render por defecto de un <li> del dropdown del Autocomplete.\n * Se expone como componente para testear y extender fácilmente, pero MUI\n * lo llama desde `renderOption={(props, option) => ...}` en el padre.\n *\n * El `key` lo manejamos nosotros (no spreadeamos junto al resto) porque MUI\n * lo inyecta como parte de `propsLi` y React exige que sea prop directo.\n */\nexport const AutocompleteOption: React.FC<AutocompleteOptionProps> = ({\n liProps,\n option,\n customRender,\n}) => {\n const { key: _ignored, ...liRest } = liProps;\n return (\n <li key={option.value} {...liRest}>\n {customRender ? customRender(option) : option.label}\n </li>\n );\n};\n\nexport default AutocompleteOption;\n","import React from 'react';\nimport { Avatar, Chip } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport type {\n SelectOption,\n RenderChipLabel,\n AutocompleteSize,\n} from '../Autocomplete';\n\ninterface AutocompleteChipsProps {\n value: SelectOption[];\n getTagProps: (args: { index: number }) => Record<string, any>;\n size: AutocompleteSize;\n maxChipsToShow: number;\n renderChipLabel?: RenderChipLabel;\n}\n\n/**\n * Render de los chips del Autocomplete en modo multiple.\n * Trunca después de `maxChipsToShow` con un chip \"+N más\".\n * El `getTagProps({ index })` viene de MUI y contiene el handler de delete,\n * la key, etc. — se spreadea tal cual al Chip.\n */\nexport const AutocompleteChips: React.FC<AutocompleteChipsProps> = ({\n value,\n getTagProps,\n size,\n maxChipsToShow,\n renderChipLabel,\n}) => {\n const displayed = value.slice(0, maxChipsToShow);\n const hidden = value.length - maxChipsToShow;\n\n return (\n <>\n {displayed.map((option, index) => {\n const tagProps = getTagProps({ index });\n return (\n <Chip\n {...tagProps}\n key={option.value}\n size={size}\n label={renderChipLabel ? renderChipLabel(option) : option.label}\n avatar={option.img ? <Avatar src={option.img} /> : undefined}\n deleteIcon={<ClearIcon />}\n />\n );\n })}\n {hidden > 0 && <Chip size={size} label={`+${hidden} más`} />}\n </>\n );\n};\n\nexport default AutocompleteChips;\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\n\n/**\n * Loader por defecto para el `loadingText` del Autocomplete.\n * El consumer puede sobrescribirlo pasando `loadingText` al componente padre.\n */\nexport const AutocompleteLoader: React.FC<{ text?: string }> = ({\n text = 'Cargando...',\n}) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <CircularProgress size={16} />\n <Typography variant=\"body2\">{text}</Typography>\n </Box>\n);\n\nexport default AutocompleteLoader;\n","import React, {\n useMemo,\n useRef,\n useState,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport {\n Autocomplete as MuiAutocomplete,\n TextField,\n type TextFieldProps,\n} from '@mui/material';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildAutocompleteSx } from './Autocomplete.sx';\nimport {\n areResolvedValuesEqual,\n isResolvedValueEmpty,\n resolveMultipleValue,\n resolveSingleValue,\n} from './Autocomplete.helpers';\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport { AutocompleteOption } from './_parts/AutocompleteOption';\nimport { AutocompleteChips } from './_parts/AutocompleteChips';\nimport { AutocompleteLoader } from './_parts/AutocompleteLoader';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface SelectOption {\n value: string | number;\n label: string;\n img?: string;\n disabled?: boolean;\n group?: string;\n [key: string]: any;\n}\n\nexport type LabelPosition = 'outside' | 'floating';\nexport type AutocompleteSize = 'small' | 'medium';\n\n// ── Render slots ─────────────────────────────────────────────────────────\nexport type RenderOptionItem = (item: SelectOption) => ReactNode;\nexport type RenderChipLabel = (item: SelectOption) => ReactNode;\n\n// ── Props base ───────────────────────────────────────────────────────────\nexport type BaseAutocompleteProps<\n _TValue extends SelectOption['value'] = SelectOption['value'],\n> = {\n label?: string;\n options: SelectOption[];\n placeholder?: string;\n multiple?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n loading?: boolean;\n error?: boolean;\n helperText?: string;\n maxChipsToShow?: number;\n renderOptionItem?: RenderOptionItem;\n renderChipLabel?: RenderChipLabel;\n /** Border radius del input. Default: 10. */\n borderRadius?: number | string;\n /** \"outside\" (default) = label arriba del input; \"floating\" = comportamiento nativo MUI. */\n labelPosition?: LabelPosition;\n /** Tamaño del TextField. Default: 'small'. */\n size?: AutocompleteSize;\n /** Texto cuando no hay coincidencias. */\n noOptionsText?: ReactNode;\n /** Texto cuando está cargando. */\n loadingText?: ReactNode;\n sx?: SxProps<Theme>;\n className?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Autocomplete`.\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 /** Props para el TextField subyacente. */\n textFieldProps?: Partial<TextFieldProps>;\n\n // ── Búsqueda asíncrona / remota ──────────────────────────────────────\n /** Se dispara cada vez que el usuario escribe. Útil para llamadas a servicios\n * (debounce recomendado en el consumer). */\n onInputChange?: (\n event: SyntheticEvent,\n value: string,\n reason: 'input' | 'reset' | 'clear' | 'blur' | 'selectOption' | 'removeOption',\n ) => void;\n /** Valor controlado del texto de búsqueda. */\n inputValue?: string;\n /** Filtro custom. Para búsqueda remota pasar `(x) => x` y confiar sólo en el servicio. */\n filterOptions?: (options: SelectOption[], state: any) => SelectOption[];\n /** Permite valores arbitrarios (no solo de la lista). */\n freeSolo?: boolean;\n open?: boolean;\n onOpen?: (event: SyntheticEvent) => void;\n onClose?: (event: SyntheticEvent, reason: string) => void;\n};\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface ControlledAutocompleteProps<\n TValue extends SelectOption['value'] = SelectOption['value'],\n> extends BaseAutocompleteProps<TValue> {\n value: TValue | TValue[] | null;\n onChange: (val: TValue | TValue[] | null) => void;\n name?: string;\n control?: never;\n validation?: never;\n}\n\nexport interface RHFAutocompleteProps<\n TValue extends SelectOption['value'] = SelectOption['value'],\n> extends BaseAutocompleteProps<TValue> {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: never;\n onChange?: never;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type AutocompleteProps<\n TValue extends SelectOption['value'] = SelectOption['value'],\n> = ControlledAutocompleteProps<TValue> | RHFAutocompleteProps<TValue>;\n\nexport function Autocomplete<\n TValue extends SelectOption['value'] = SelectOption['value'],\n>(props: AutocompleteProps<TValue>) {\n const {\n label,\n options,\n placeholder,\n multiple = false,\n disabled = false,\n readOnly = false,\n loading = false,\n error: errorProp = false,\n helperText,\n maxChipsToShow = 3,\n renderOptionItem,\n renderChipLabel,\n borderRadius = 10,\n labelPosition = 'outside',\n size = 'small',\n noOptionsText = 'No hay opciones',\n loadingText,\n sx,\n className,\n preset,\n textFieldProps,\n onInputChange,\n inputValue,\n filterOptions,\n freeSolo,\n open,\n onOpen,\n onClose,\n } = props as BaseAutocompleteProps<TValue>;\n\n // Focus tracking para mostrar placeholder solo cuando el label sube.\n const [isFocused, setIsFocused] = useState(false);\n\n // Cache interno de opciones vistas (indexado por value). Crítico para async\n // multiple: cuando `options` cambian por un nuevo search, los items ya\n // seleccionados no desaparecen de los chips porque los recordamos acá.\n const seenOptionsRef = useRef<Map<SelectOption['value'], SelectOption>>(\n new Map(),\n );\n for (const opt of options) {\n seenOptionsRef.current.set(opt.value, opt);\n }\n\n // Pool de opciones para resolver values (merge de options + vistas).\n const resolvePool = useMemo<SelectOption[]>(() => {\n const merged = new Map(seenOptionsRef.current);\n for (const opt of options) merged.set(opt.value, opt);\n return Array.from(merged.values());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n // Estabiliza la referencia del resolvedValue que pasamos a MUI Autocomplete.\n // MUI compara value con `!==`: una referencia nueva con mismo contenido\n // dispara resetInputValue() y borra el texto que el usuario está escribiendo.\n const prevResolvedRef = useRef<SelectOption[] | SelectOption | null>(\n multiple ? [] : null,\n );\n\n const stabilizeResolved = (\n newVal: SelectOption[] | SelectOption | null,\n ): any => {\n if (areResolvedValuesEqual(prevResolvedRef.current, newVal, multiple)) {\n return prevResolvedRef.current;\n }\n prevResolvedRef.current = newVal;\n return newVal;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('Autocomplete', preset, theme);\n\n const mergedSx = [\n buildAutocompleteSx(borderRadius, labelPosition),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderAutocomplete = (\n resolvedValue: any,\n handleChange: (event: any, newValue: any) => void,\n onBlur?: () => void,\n inputRef?: React.Ref<any>,\n rhfError?: boolean,\n rhfHelperText?: string,\n ) => {\n const finalError = !!rhfError || !!errorProp;\n const finalHelperText = rhfHelperText || helperText;\n\n const isEmpty = isResolvedValueEmpty(resolvedValue, multiple);\n const showPlaceholder = isEmpty && isFocused && !!placeholder;\n\n return (\n <MuiAutocomplete\n multiple={multiple}\n options={options}\n value={resolvedValue}\n disabled={disabled}\n readOnly={readOnly}\n loading={loading}\n className={className}\n sx={mergedSx}\n freeSolo={freeSolo as any}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n inputValue={inputValue}\n onInputChange={onInputChange}\n filterOptions={filterOptions as any}\n getOptionLabel={(opt) =>\n typeof opt === 'string' ? opt : (opt?.label ?? '')\n }\n isOptionEqualToValue={(a, b) => a?.value === b?.value}\n getOptionDisabled={(opt) => !!opt?.disabled}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n renderOption={(liProps, option) => (\n <AutocompleteOption\n liProps={liProps as any}\n option={option}\n customRender={renderOptionItem}\n />\n )}\n renderTags={\n multiple\n ? (value, getTagProps) => (\n <AutocompleteChips\n value={value}\n getTagProps={getTagProps}\n size={size}\n maxChipsToShow={maxChipsToShow}\n renderChipLabel={renderChipLabel}\n />\n )\n : undefined\n }\n noOptionsText={noOptionsText}\n loadingText={loadingText ?? <AutocompleteLoader />}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n size={size}\n variant=\"outlined\"\n placeholder={showPlaceholder ? placeholder : undefined}\n error={finalError}\n helperText={finalHelperText}\n inputRef={inputRef}\n {...textFieldProps}\n InputLabelProps={{\n ...(params.InputLabelProps as Record<string, any>),\n ...(textFieldProps?.InputLabelProps as Record<string, any> | undefined),\n shrink:\n labelPosition === 'outside'\n ? !isEmpty || isFocused\n : (params.InputLabelProps as any)?.shrink,\n }}\n />\n )}\n />\n );\n };\n\n const handleControlledChange = (_event: any, newValue: any) => {\n const onChange = (props as ControlledAutocompleteProps<TValue>).onChange;\n if (multiple) {\n const values = (newValue ?? []).map((opt: SelectOption) => opt.value as TValue);\n onChange(values);\n } else {\n onChange((newValue?.value ?? null) as TValue | null);\n }\n };\n\n // --- RHF mode ---\n if ('control' in props && props.control) {\n const { name, control, validation } = props as RHFAutocompleteProps<TValue>;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error: fieldError } }) => {\n const resolvedValue = stabilizeResolved(\n multiple\n ? resolveMultipleValue(resolvePool, field.value)\n : resolveSingleValue(resolvePool, field.value),\n );\n\n const handleChange = (_event: any, newValue: any) => {\n if (multiple) {\n field.onChange(\n (newValue ?? []).map((opt: SelectOption) => opt.value),\n );\n } else {\n field.onChange(newValue?.value ?? null);\n }\n };\n\n return renderAutocomplete(\n resolvedValue,\n handleChange,\n field.onBlur,\n field.ref,\n !!fieldError,\n fieldError?.message,\n );\n }}\n />\n );\n }\n\n // --- Controlled mode ---\n const controlledValue = (props as ControlledAutocompleteProps<TValue>).value;\n const resolvedValue = stabilizeResolved(\n multiple\n ? resolveMultipleValue(resolvePool, controlledValue as SelectOption['value'][])\n : resolveSingleValue(resolvePool, controlledValue as SelectOption['value']),\n );\n\n return renderAutocomplete(resolvedValue, handleControlledChange);\n}\n\n/**\n * @deprecated Usar `Autocomplete` en su lugar. Alias mantenido para retro-compatibilidad.\n */\nexport const AutocompleteSelect = Autocomplete;\n\nexport default Autocomplete;\n"],"names":["buildFormFieldSx","jsx","jsxs","Fragment","createElement","Chip","Avatar","Box","CircularProgress","Typography","useState","useRef","useMemo","useTheme","resolvePreset","resolvedValue","MuiAutocomplete","TextField","Controller"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,sBAAsB,CACjC,cACA,kBAEAA,8BAAiB;AAAA,EACf;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA;AAAA,IAEd,4BAA4B;AAAA,MAC1B,YAAY;AAAA,MACZ,eAAe;AAAA,IAAA;AAAA;AAAA,IAIjB,gCAAgC;AAAA,MAC9B,YAAY;AAAA,MACZ,eAAe;AAAA,IAAA;AAAA,EACjB;AAEJ,CAAC;ACzBI,MAAM,qBAAqB,CAChC,SACA,UAAA;;AACwB,uBAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,MAArC,YAA0C;AAAA;AAG7D,MAAM,uBAAuB,CAClC,SACA,UACmB;AACnB,MAAI,CAAC,MAAM,QAAQ,KAAK,UAAU,CAAA;AAClC,SAAO,QAAQ,OAAO,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,CAAC;AACtD;AAkBO,MAAM,yBAAyB,CACpC,MACA,MACA,aACY;AACZ,MAAI,UAAU;AACZ,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,QAAQ,IAAI,EAAG,QAAO;AACzD,QAAI,KAAK,WAAW,KAAK,OAAQ,QAAO;AACxC,WAAO,KAAK,MAAM,CAAC,GAAG,MAAA;;AAAM,eAAE,YAAU,UAAK,CAAC,MAAN,mBAAS;AAAA,KAAK;AAAA,EACxD;AACA,UACG,6BAA8B,YAC9B,6BAA8B;AAEnC;AAGO,MAAM,uBAAuB,CAClC,eACA,aACY;AACZ,MAAI,UAAU;AACZ,WAAO,CAAC,MAAM,QAAQ,aAAa,KAAK,cAAc,WAAW;AAAA,EACnE;AACA,SAAO,CAAC;AACV;AC1CO,MAAM,qBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAqC,cAA7B,OAAK,aAAwB,IAAX,mBAAW,IAAX,CAAlB;AACR,SACEC,2BAAAA,IAAC,MAAA,iCAA0B,SAA1B,EACE,UAAA,eAAe,aAAa,MAAM,IAAI,OAAO,MAAA,IADvC,OAAO,KAEhB;AAEJ;ACJO,MAAM,oBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,YAAY,MAAM,MAAM,GAAG,cAAc;AAC/C,QAAM,SAAS,MAAM,SAAS;AAE9B,SACEC,2BAAAA,KAAAC,qBAAA,EACG,UAAA;AAAA,IAAA,UAAU,IAAI,CAAC,QAAQ,UAAU;AAChC,YAAM,WAAW,YAAY,EAAE,OAAO;AACtC,aACEC,sBAAAA;AAAAA,QAACC,SAAAA;AAAAA,QAAA,iCACK,WADL;AAAA,UAEC,KAAK,OAAO;AAAA,UACZ;AAAA,UACA,OAAO,kBAAkB,gBAAgB,MAAM,IAAI,OAAO;AAAA,UAC1D,QAAQ,OAAO,MAAMJ,+BAACK,SAAAA,UAAO,KAAK,OAAO,KAAK,IAAK;AAAA,UACnD,2CAAa,WAAA,CAAA,CAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAG7B,CAAC;AAAA,IACA,SAAS,KAAKL,+BAACI,SAAAA,MAAA,EAAK,MAAY,OAAO,IAAI,MAAM,OAAA,CAAQ;AAAA,EAAA,GAC5D;AAEJ;AC7CO,MAAM,qBAAkD,CAAC;AAAA,EAC9D,OAAO;AACT,MACEH,gCAACK,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAA,GACrD,UAAA;AAAA,EAAAN,2BAAAA,IAACO,SAAAA,kBAAA,EAAiB,MAAM,GAAA,CAAI;AAAA,EAC5BP,2BAAAA,IAACQ,SAAAA,YAAA,EAAW,SAAQ,SAAS,UAAA,KAAA,CAAK;AAAA,GACpC;ACiHK,SAAS,aAEd,OAAkC;AAClC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO,YAAY;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAGJ,QAAM,CAAC,WAAW,YAAY,IAAIC,MAAAA,SAAS,KAAK;AAKhD,QAAM,iBAAiBC,MAAAA;AAAAA,wBACjB,IAAA;AAAA,EAAI;AAEV,aAAW,OAAO,SAAS;AACzB,mBAAe,QAAQ,IAAI,IAAI,OAAO,GAAG;AAAA,EAC3C;AAGA,QAAM,cAAcC,MAAAA,QAAwB,MAAM;AAChD,UAAM,SAAS,IAAI,IAAI,eAAe,OAAO;AAC7C,eAAW,OAAO,QAAS,QAAO,IAAI,IAAI,OAAO,GAAG;AACpD,WAAO,MAAM,KAAK,OAAO,OAAA,CAAQ;AAAA,EAEnC,GAAG,CAAC,OAAO,CAAC;AAKZ,QAAM,kBAAkBD,MAAAA;AAAAA,IACtB,WAAW,CAAA,IAAK;AAAA,EAAA;AAGlB,QAAM,oBAAoB,CACxB,WACQ;AACR,QAAI,uBAAuB,gBAAgB,SAAS,QAAQ,QAAQ,GAAG;AACrE,aAAO,gBAAgB;AAAA,IACzB;AACA,oBAAgB,UAAU;AAC1B,WAAO;AAAA,EACT;AAEA,QAAM,QAAQE,OAAAA,SAAA;AACd,QAAM,WAAWC,cAAAA,cAAc,gBAAgB,QAAQ,KAAK;AAE5D,QAAM,WAAW;AAAA,IACf,oBAAoB,cAAc,aAAa;AAAA,IAC/C,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,qBAAqB,CACzBC,gBACA,cACA,QACA,UACA,UACA,kBACG;AACH,UAAM,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC;AACnC,UAAM,kBAAkB,iBAAiB;AAEzC,UAAM,UAAU,qBAAqBA,gBAAe,QAAQ;AAC5D,UAAM,kBAAkB,WAAW,aAAa,CAAC,CAAC;AAElD,WACEd,2BAAAA;AAAAA,MAACe,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,OAAOD;AAAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB,CAAC,QAAA;;AACf,wBAAO,QAAQ,WAAW,OAAO,gCAAK,UAAL,YAAc;AAAA;AAAA,QAEjD,sBAAsB,CAAC,GAAG,OAAM,uBAAG,YAAU,uBAAG;AAAA,QAChD,mBAAmB,CAAC,QAAQ,CAAC,EAAC,2BAAK;AAAA,QACnC,UAAU;AAAA,QACV,SAAS,MAAM,aAAa,IAAI;AAAA,QAChC,QAAQ,MAAM;AACZ,uBAAa,KAAK;AAClB;AAAA,QACF;AAAA,QACA,cAAc,CAAC,SAAS,WACtBd,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA,cAAc;AAAA,UAAA;AAAA,QAAA;AAAA,QAGlB,YACE,WACI,CAAC,OAAO,gBACNA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAAA,IAGJ;AAAA,QAEN;AAAA,QACA,aAAa,oCAAeA,+BAAC,oBAAA,CAAA,CAAmB;AAAA,QAChD,aAAa,CAAC;;AACZA,4CAAAA;AAAAA,YAACgB,SAAAA;AAAAA,YAAA,8DACK,SADL;AAAA,cAEC;AAAA,cACA;AAAA,cACA,SAAQ;AAAA,cACR,aAAa,kBAAkB,cAAc;AAAA,cAC7C,OAAO;AAAA,cACP,YAAY;AAAA,cACZ;AAAA,gBACI,iBATL;AAAA,cAUC,iBAAiB,gDACX,OAAO,kBACP,iDAAgB,kBAFL;AAAA,gBAGf,QACE,kBAAkB,YACd,CAAC,WAAW,aACX,YAAO,oBAAP,mBAAgC;AAAA,cAAA;AAAA,YACzC;AAAA,UAAA;AAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAIR;AAEA,QAAM,yBAAyB,CAAC,QAAa,aAAkB;;AAC7D,UAAM,WAAY,MAA8C;AAChE,QAAI,UAAU;AACZ,YAAM,UAAU,8BAAY,CAAA,GAAI,IAAI,CAAC,QAAsB,IAAI,KAAe;AAC9E,eAAS,MAAM;AAAA,IACjB,OAAO;AACL,gBAAU,0CAAU,UAAV,YAAmB,IAAsB;AAAA,IACrD;AAAA,EACF;AAGA,MAAI,aAAa,SAAS,MAAM,SAAS;AACvC,UAAM,EAAE,MAAM,SAAS,WAAA,IAAe;AACtC,WACEhB,2BAAAA;AAAAA,MAACiB,cAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,OAAO,WAAA,QAAmB;AACxD,gBAAMH,iBAAgB;AAAA,YACpB,WACI,qBAAqB,aAAa,MAAM,KAAK,IAC7C,mBAAmB,aAAa,MAAM,KAAK;AAAA,UAAA;AAGjD,gBAAM,eAAe,CAAC,QAAa,aAAkB;;AACnD,gBAAI,UAAU;AACZ,oBAAM;AAAA,iBACH,8BAAY,CAAA,GAAI,IAAI,CAAC,QAAsB,IAAI,KAAK;AAAA,cAAA;AAAA,YAEzD,OAAO;AACL,oBAAM,UAAS,0CAAU,UAAV,YAAmB,IAAI;AAAA,YACxC;AAAA,UACF;AAEA,iBAAO;AAAA,YACLA;AAAAA,YACA;AAAA,YACA,MAAM;AAAA,YACN,MAAM;AAAA,YACN,CAAC,CAAC;AAAA,YACF,yCAAY;AAAA,UAAA;AAAA,QAEhB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AAGA,QAAM,kBAAmB,MAA8C;AACvE,QAAM,gBAAgB;AAAA,IACpB,WACI,qBAAqB,aAAa,eAA0C,IAC5E,mBAAmB,aAAa,eAAwC;AAAA,EAAA;AAG9E,SAAO,mBAAmB,eAAe,sBAAsB;AACjE;AAKO,MAAM,qBAAqB;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Autocomplete.js","sources":["../../../src/components/Autocomplete/Autocomplete.sx.ts","../../../src/components/Autocomplete/Autocomplete.helpers.ts","../../../src/components/Autocomplete/_parts/AutocompleteOption.tsx","../../../src/components/Autocomplete/_parts/AutocompleteChips.tsx","../../../src/components/Autocomplete/_parts/AutocompleteLoader.tsx","../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport type { LabelPosition } from './Autocomplete';\n\n/**\n * Builder del sx del Autocomplete. Reutiliza `buildFormFieldSx` y añade\n * los paddings propios del Autocomplete (chips + input interno).\n */\nexport const buildAutocompleteSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): SxProps<Theme> =>\n buildFormFieldSx({\n borderRadius,\n labelPosition,\n extraOutsideSx: {\n // El input interno del Autocomplete.\n '& .MuiAutocomplete-input': {\n paddingTop: '4px',\n paddingBottom: '4px',\n },\n\n // Contenedor del input (donde viven los chips en modo multiple).\n '& .MuiAutocomplete-inputRoot': {\n paddingTop: '4px',\n paddingBottom: '4px',\n },\n },\n });\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport type { SelectOption } from './Autocomplete';\n\n/** Resuelve un value único a su SelectOption dentro del pool. */\nexport const resolveSingleValue = (\n options: SelectOption[],\n value: SelectOption['value'] | null | undefined,\n): SelectOption | null => options.find((o) => o.value === value) ?? null;\n\n/** Resuelve un array de values a sus SelectOption dentro del pool. */\nexport const resolveMultipleValue = (\n options: SelectOption[],\n value: SelectOption['value'][] | null | undefined,\n): SelectOption[] => {\n if (!Array.isArray(value)) return [];\n return options.filter((o) => value.includes(o.value));\n};\n\n/** Merge de sx base + extra del consumer, respetando el contrato de MUI. */\nexport const mergeSx = (\n base: SxProps<Theme>,\n extra?: SxProps<Theme>,\n): SxProps<Theme> => {\n if (!extra) return base;\n return [base, ...(Array.isArray(extra) ? extra : [extra])] as SxProps<Theme>;\n};\n\n/**\n * Compara dos valores resueltos (single o multiple) por value para decidir\n * si son estructuralmente iguales. Se usa para estabilizar la referencia que\n * se pasa a MUI Autocomplete (MUI compara value por referencia con `!==`,\n * y una nueva referencia — aunque el contenido sea igual — dispara\n * `resetInputValue` y borra el texto mientras el usuario tipea).\n */\nexport const areResolvedValuesEqual = (\n prev: SelectOption | SelectOption[] | null,\n next: SelectOption | SelectOption[] | null,\n multiple: boolean,\n): boolean => {\n if (multiple) {\n if (!Array.isArray(prev) || !Array.isArray(next)) return false;\n if (prev.length !== next.length) return false;\n return prev.every((o, i) => o.value === next[i]?.value);\n }\n return (\n (prev as SelectOption | null)?.value ===\n (next as SelectOption | null)?.value\n );\n};\n\n/** Determina si un valor resuelto está vacío (para placeholder/shrink). */\nexport const isResolvedValueEmpty = (\n resolvedValue: unknown,\n multiple: boolean,\n): boolean => {\n if (multiple) {\n return !Array.isArray(resolvedValue) || resolvedValue.length === 0;\n }\n return !resolvedValue;\n};\n","import React from 'react';\nimport type { SelectOption, RenderOptionItem } from '../Autocomplete';\n\ninterface AutocompleteOptionProps {\n liProps: React.HTMLAttributes<HTMLLIElement> & { key?: React.Key };\n option: SelectOption;\n customRender?: RenderOptionItem;\n}\n\n/**\n * Render por defecto de un <li> del dropdown del Autocomplete.\n * Se expone como componente para testear y extender fácilmente, pero MUI\n * lo llama desde `renderOption={(props, option) => ...}` en el padre.\n *\n * El `key` lo manejamos nosotros (no spreadeamos junto al resto) porque MUI\n * lo inyecta como parte de `propsLi` y React exige que sea prop directo.\n */\nexport const AutocompleteOption: React.FC<AutocompleteOptionProps> = ({\n liProps,\n option,\n customRender,\n}) => {\n const { key: _ignored, ...liRest } = liProps;\n return (\n <li key={option.value} {...liRest}>\n {customRender ? customRender(option) : option.label}\n </li>\n );\n};\n\nexport default AutocompleteOption;\n","import React from 'react';\nimport { Avatar, Chip } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport type {\n SelectOption,\n RenderChipLabel,\n AutocompleteSize,\n} from '../Autocomplete';\n\ninterface AutocompleteChipsProps {\n value: SelectOption[];\n getTagProps: (args: { index: number }) => Record<string, any>;\n size: AutocompleteSize;\n maxChipsToShow: number;\n renderChipLabel?: RenderChipLabel;\n}\n\n/**\n * Render de los chips del Autocomplete en modo multiple.\n * Trunca después de `maxChipsToShow` con un chip \"+N más\".\n * El `getTagProps({ index })` viene de MUI y contiene el handler de delete,\n * la key, etc. — se spreadea tal cual al Chip.\n */\nexport const AutocompleteChips: React.FC<AutocompleteChipsProps> = ({\n value,\n getTagProps,\n size,\n maxChipsToShow,\n renderChipLabel,\n}) => {\n const displayed = value.slice(0, maxChipsToShow);\n const hidden = value.length - maxChipsToShow;\n\n return (\n <>\n {displayed.map((option, index) => {\n const tagProps = getTagProps({ index });\n return (\n <Chip\n {...tagProps}\n key={option.value}\n size={size}\n label={renderChipLabel ? renderChipLabel(option) : option.label}\n avatar={option.img ? <Avatar src={option.img} /> : undefined}\n deleteIcon={<ClearIcon />}\n />\n );\n })}\n {hidden > 0 && <Chip size={size} label={`+${hidden} más`} />}\n </>\n );\n};\n\nexport default AutocompleteChips;\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\n\n/**\n * Loader por defecto para el `loadingText` del Autocomplete.\n * El consumer puede sobrescribirlo pasando `loadingText` al componente padre.\n */\nexport const AutocompleteLoader: React.FC<{ text?: string }> = ({\n text = 'Cargando...',\n}) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <CircularProgress size={16} />\n <Typography variant=\"body2\">{text}</Typography>\n </Box>\n);\n\nexport default AutocompleteLoader;\n","import React, {\n useMemo,\n useRef,\n useState,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport {\n Autocomplete as MuiAutocomplete,\n TextField,\n type TextFieldProps,\n} from '@mui/material';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildAutocompleteSx } from './Autocomplete.sx';\nimport {\n areResolvedValuesEqual,\n isResolvedValueEmpty,\n resolveMultipleValue,\n resolveSingleValue,\n} from './Autocomplete.helpers';\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport { AutocompleteOption } from './_parts/AutocompleteOption';\nimport { AutocompleteChips } from './_parts/AutocompleteChips';\nimport { AutocompleteLoader } from './_parts/AutocompleteLoader';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface SelectOption {\n value: string | number;\n label: string;\n img?: string;\n disabled?: boolean;\n group?: string;\n [key: string]: any;\n}\n\nexport type LabelPosition = 'outside' | 'floating';\nexport type AutocompleteSize = 'small' | 'medium';\n\n// ── Render slots ─────────────────────────────────────────────────────────\nexport type RenderOptionItem = (item: SelectOption) => ReactNode;\nexport type RenderChipLabel = (item: SelectOption) => ReactNode;\n\n// ── Props base ───────────────────────────────────────────────────────────\nexport type BaseAutocompleteProps<\n _TValue extends SelectOption['value'] = SelectOption['value'],\n> = {\n label?: string;\n options: SelectOption[];\n placeholder?: string;\n multiple?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n loading?: boolean;\n error?: boolean;\n helperText?: string;\n maxChipsToShow?: number;\n renderOptionItem?: RenderOptionItem;\n renderChipLabel?: RenderChipLabel;\n /** Border radius del input. Default: 10. */\n borderRadius?: number | string;\n /** \"outside\" (default) = label arriba del input; \"floating\" = comportamiento nativo MUI. */\n labelPosition?: LabelPosition;\n /** Tamaño del TextField. Default: 'small'. */\n size?: AutocompleteSize;\n /** Texto cuando no hay coincidencias. */\n noOptionsText?: ReactNode;\n /** Texto cuando está cargando. */\n loadingText?: ReactNode;\n sx?: SxProps<Theme>;\n className?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Autocomplete`.\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 /** Props para el TextField subyacente. */\n textFieldProps?: Partial<TextFieldProps>;\n\n // ── Búsqueda asíncrona / remota ──────────────────────────────────────\n /** Se dispara cada vez que el usuario escribe. Útil para llamadas a servicios\n * (debounce recomendado en el consumer). */\n onInputChange?: (\n event: SyntheticEvent,\n value: string,\n reason: 'input' | 'reset' | 'clear' | 'blur' | 'selectOption' | 'removeOption',\n ) => void;\n /** Valor controlado del texto de búsqueda. */\n inputValue?: string;\n /** Filtro custom. Para búsqueda remota pasar `(x) => x` y confiar sólo en el servicio. */\n filterOptions?: (options: SelectOption[], state: any) => SelectOption[];\n /** Permite valores arbitrarios (no solo de la lista). */\n freeSolo?: boolean;\n open?: boolean;\n onOpen?: (event: SyntheticEvent) => void;\n onClose?: (event: SyntheticEvent, reason: string) => void;\n};\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface ControlledAutocompleteProps<\n TValue extends SelectOption['value'] = SelectOption['value'],\n> extends BaseAutocompleteProps<TValue> {\n value: TValue | TValue[] | null;\n onChange: (val: TValue | TValue[] | null) => void;\n name?: string;\n control?: never;\n validation?: never;\n}\n\nexport interface RHFAutocompleteProps<\n TValue extends SelectOption['value'] = SelectOption['value'],\n> extends BaseAutocompleteProps<TValue> {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: never;\n onChange?: never;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type AutocompleteProps<\n TValue extends SelectOption['value'] = SelectOption['value'],\n> = ControlledAutocompleteProps<TValue> | RHFAutocompleteProps<TValue>;\n\nexport function Autocomplete<\n TValue extends SelectOption['value'] = SelectOption['value'],\n>(props: AutocompleteProps<TValue>) {\n const {\n label,\n options,\n placeholder,\n multiple = false,\n disabled = false,\n readOnly = false,\n loading = false,\n error: errorProp = false,\n helperText,\n maxChipsToShow = 3,\n renderOptionItem,\n renderChipLabel,\n borderRadius = 10,\n labelPosition = 'outside',\n size = 'small',\n noOptionsText = 'No hay opciones',\n loadingText,\n sx,\n className,\n preset,\n textFieldProps,\n onInputChange,\n inputValue,\n filterOptions,\n freeSolo,\n open,\n onOpen,\n onClose,\n } = props as BaseAutocompleteProps<TValue>;\n\n // Focus tracking para mostrar placeholder solo cuando el label sube.\n const [isFocused, setIsFocused] = useState(false);\n\n // Cache interno de opciones vistas (indexado por value). Crítico para async\n // multiple: cuando `options` cambian por un nuevo search, los items ya\n // seleccionados no desaparecen de los chips porque los recordamos acá.\n const seenOptionsRef = useRef<Map<SelectOption['value'], SelectOption>>(\n new Map(),\n );\n for (const opt of options) {\n seenOptionsRef.current.set(opt.value, opt);\n }\n\n // Pool de opciones para resolver values (merge de options + vistas).\n const resolvePool = useMemo<SelectOption[]>(() => {\n const merged = new Map(seenOptionsRef.current);\n for (const opt of options) merged.set(opt.value, opt);\n return Array.from(merged.values());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n // Estabiliza la referencia del resolvedValue que pasamos a MUI Autocomplete.\n // MUI compara value con `!==`: una referencia nueva con mismo contenido\n // dispara resetInputValue() y borra el texto que el usuario está escribiendo.\n const prevResolvedRef = useRef<SelectOption[] | SelectOption | null>(\n multiple ? [] : null,\n );\n\n const stabilizeResolved = (\n newVal: SelectOption[] | SelectOption | null,\n ): any => {\n if (areResolvedValuesEqual(prevResolvedRef.current, newVal, multiple)) {\n return prevResolvedRef.current;\n }\n prevResolvedRef.current = newVal;\n return newVal;\n };\n\n const theme = useTheme();\n const presetSx = resolvePreset('Autocomplete', preset, theme);\n\n const mergedSx = [\n buildAutocompleteSx(borderRadius, labelPosition),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderAutocomplete = (\n resolvedValue: any,\n handleChange: (event: any, newValue: any) => void,\n onBlur?: () => void,\n inputRef?: React.Ref<any>,\n rhfError?: boolean,\n rhfHelperText?: string,\n ) => {\n const finalError = !!rhfError || !!errorProp;\n const finalHelperText = rhfHelperText || helperText;\n\n const isEmpty = isResolvedValueEmpty(resolvedValue, multiple);\n const showPlaceholder = isEmpty && isFocused && !!placeholder;\n\n return (\n <MuiAutocomplete\n multiple={multiple}\n options={options}\n value={resolvedValue}\n disabled={disabled}\n readOnly={readOnly}\n loading={loading}\n className={className}\n sx={mergedSx}\n freeSolo={freeSolo as any}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n inputValue={inputValue}\n onInputChange={onInputChange}\n filterOptions={filterOptions as any}\n getOptionLabel={(opt) =>\n typeof opt === 'string' ? opt : (opt?.label ?? '')\n }\n isOptionEqualToValue={(a, b) => a?.value === b?.value}\n getOptionDisabled={(opt) => !!opt?.disabled}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n renderOption={(liProps, option) => (\n <AutocompleteOption\n liProps={liProps as any}\n option={option}\n customRender={renderOptionItem}\n />\n )}\n renderTags={\n multiple\n ? (value, getTagProps) => (\n <AutocompleteChips\n value={value}\n getTagProps={getTagProps}\n size={size}\n maxChipsToShow={maxChipsToShow}\n renderChipLabel={renderChipLabel}\n />\n )\n : undefined\n }\n noOptionsText={noOptionsText}\n loadingText={loadingText ?? <AutocompleteLoader />}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n size={size}\n variant=\"outlined\"\n placeholder={showPlaceholder ? placeholder : undefined}\n error={finalError}\n helperText={finalHelperText}\n inputRef={inputRef}\n {...textFieldProps}\n InputLabelProps={{\n ...(params.InputLabelProps as Record<string, any>),\n ...(textFieldProps?.InputLabelProps as Record<string, any> | undefined),\n shrink:\n labelPosition === 'outside'\n ? !isEmpty || isFocused\n : (params.InputLabelProps as any)?.shrink,\n }}\n />\n )}\n />\n );\n };\n\n const handleControlledChange = (_event: any, newValue: any) => {\n const onChange = (props as ControlledAutocompleteProps<TValue>).onChange;\n if (multiple) {\n const values = (newValue ?? []).map((opt: SelectOption) => opt.value as TValue);\n onChange(values);\n } else {\n onChange((newValue?.value ?? null) as TValue | null);\n }\n };\n\n // --- RHF mode ---\n if ('control' in props && props.control) {\n const { name, control, validation } = props as RHFAutocompleteProps<TValue>;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error: fieldError } }) => {\n const resolvedValue = stabilizeResolved(\n multiple\n ? resolveMultipleValue(resolvePool, field.value)\n : resolveSingleValue(resolvePool, field.value),\n );\n\n const handleChange = (_event: any, newValue: any) => {\n if (multiple) {\n field.onChange(\n (newValue ?? []).map((opt: SelectOption) => opt.value),\n );\n } else {\n field.onChange(newValue?.value ?? null);\n }\n };\n\n return renderAutocomplete(\n resolvedValue,\n handleChange,\n field.onBlur,\n field.ref,\n !!fieldError,\n fieldError?.message,\n );\n }}\n />\n );\n }\n\n // --- Controlled mode ---\n const controlledValue = (props as ControlledAutocompleteProps<TValue>).value;\n const resolvedValue = stabilizeResolved(\n multiple\n ? resolveMultipleValue(resolvePool, controlledValue as SelectOption['value'][])\n : resolveSingleValue(resolvePool, controlledValue as SelectOption['value']),\n );\n\n return renderAutocomplete(resolvedValue, handleControlledChange);\n}\n\n/**\n * @deprecated Usar `Autocomplete` en su lugar. Alias mantenido para retro-compatibilidad.\n */\nexport const AutocompleteSelect = Autocomplete;\n\nexport default Autocomplete;\n"],"names":["resolvedValue","MuiAutocomplete"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Avatar.cjs","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Avatar as MuiAvatar,\n Box,\n Tooltip,\n Typography,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\n\nexport interface AvatarItem {\n text?: string;\n imageUrl?: string;\n badge?: string;\n color?: string;\n backgroundColor?: string;\n}\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport interface AvatarProps {\n type?: string;\n items: AvatarItem[];\n displayedAvatars?: number;\n size?: AvatarSize;\n showText?: boolean;\n showTooltip?: boolean;\n /**\n * sx aplicado al contenedor raíz.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada MuiAvatar individual (se mergea sobre los defaults).\n */\n avatarSx?: SxProps<Theme>;\n className?: string;\n /**\n * Overlap (px) entre avatares cuando hay varios. Default depende del tamaño.\n */\n overlap?: number;\n}\n\n// Escala alineada con la escala de MUI (sm=32, md=40, lg=56, xl=96) con borde\n// proporcional para el efecto stacked.\nconst sizeMap: Record<\n Exclude<AvatarSize, number>,\n { px: number; border: number; font: number; overlap: number }\n> = {\n sm: { px: 32, border: 2, font: 14, overlap: 8 },\n md: { px: 40, border: 2, font: 16, overlap: 10 },\n lg: { px: 56, border: 3, font: 22, overlap: 14 },\n xl: { px: 96, border: 4, font: 36, overlap: 20 },\n};\n\nconst resolveSize = (size: AvatarSize) => {\n if (typeof size === 'number') {\n return {\n px: size,\n border: Math.max(2, Math.round(size * 0.05)),\n font: Math.round(size * 0.4),\n overlap: Math.round(size * 0.25),\n };\n }\n return sizeMap[size];\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\nexport const Avatar: React.FC<AvatarProps> = ({\n items,\n type,\n displayedAvatars = 4,\n size = 'sm',\n showText = true,\n showTooltip = false,\n sx,\n avatarSx,\n className,\n overlap,\n}) => {\n const [errorIndex, setErrorIndex] = useState<Set<number>>(new Set());\n\n const handleImageError = (index: number) => {\n setErrorIndex((prev) => {\n const next = new Set(prev);\n next.add(index);\n return next;\n });\n };\n\n if (!items || items.length === 0) {\n return null;\n }\n\n const s = resolveSize(size);\n const effectiveOverlap = overlap ?? s.overlap;\n const visibleItems = items.slice(0, displayedAvatars);\n\n const baseAvatarSx: SxProps<Theme> = {\n width: s.px,\n height: s.px,\n fontSize: s.font,\n fontWeight: 700,\n border: (theme) => `${s.border}px solid ${theme.palette.background.paper}`,\n boxSizing: 'content-box',\n };\n\n const renderSingleAvatar = (item: AvatarItem, i: number) => {\n const hasImage = !!item.imageUrl && !errorIndex.has(i);\n const showBadgeFallback = !!item.badge;\n\n // Defaults tirando al theme; item.color / item.backgroundColor tienen prioridad.\n const itemSx: SxProps<Theme> = {\n bgcolor: item.backgroundColor ?? 'action.selected',\n color: item.color ?? 'text.secondary',\n // Stacking manual: margen negativo al segundo avatar en adelante.\n ...(i > 0 && { marginLeft: `-${effectiveOverlap}px` }),\n zIndex: visibleItems.length - i,\n };\n\n const finalSx = mergeSx(mergeSx(baseAvatarSx, itemSx), avatarSx);\n\n const avatarEl = (\n <MuiAvatar\n data-testid=\"avatar\"\n alt={item.text || 'User avatar'}\n src={hasImage ? item.imageUrl : undefined}\n imgProps={{\n 'data-testid': 'image',\n onError: () => handleImageError(i),\n } as React.ImgHTMLAttributes<HTMLImageElement>}\n sx={finalSx}\n >\n {!hasImage && showBadgeFallback ? (\n <span data-testid=\"badge\" aria-label={item.text}>\n {item.badge}\n </span>\n ) : !hasImage ? (\n <AccountCircleIcon\n data-testid=\"icon\"\n aria-label={item.text}\n sx={{ width: '100%', height: '100%' }}\n />\n ) : null}\n </MuiAvatar>\n );\n\n if (showTooltip && item.text) {\n return (\n <Tooltip key={i} title={item.text}>\n {avatarEl}\n </Tooltip>\n );\n }\n return <React.Fragment key={i}>{avatarEl}</React.Fragment>;\n };\n\n return (\n <Box\n data-testid=\"avatar-container\"\n className={className}\n sx={mergeSx(\n {\n display: 'flex',\n alignItems: 'center',\n lineHeight: 1,\n width: 'fit-content',\n },\n sx,\n )}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {visibleItems.map((item, i) => renderSingleAvatar(item, i))}\n </Box>\n\n {showText && items[0]?.text && (\n <Typography\n data-testid=\"text\"\n variant=\"caption\"\n sx={{\n ml: 1,\n fontSize: '0.75rem',\n fontWeight: 400,\n color: 'text.primary',\n }}\n >\n {type && items.length === 1 && (\n <Box component=\"span\" data-testid=\"type\" sx={{ mr: 0.5 }}>\n {type}:\n </Box>\n )}\n {items[0].text}\n {items.length > 1 && ` +${items.length - 1}`}\n </Typography>\n )}\n </Box>\n );\n};\n\nexport default Avatar;\n"],"names":["useState","_a","jsx","MuiAvatar","Tooltip","jsxs","Box","Typography"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Avatar.js","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Avatar as MuiAvatar,\n Box,\n Tooltip,\n Typography,\n type SxProps,\n type Theme,\n} from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\n\nexport interface AvatarItem {\n text?: string;\n imageUrl?: string;\n badge?: string;\n color?: string;\n backgroundColor?: string;\n}\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport interface AvatarProps {\n type?: string;\n items: AvatarItem[];\n displayedAvatars?: number;\n size?: AvatarSize;\n showText?: boolean;\n showTooltip?: boolean;\n /**\n * sx aplicado al contenedor raíz.\n */\n sx?: SxProps<Theme>;\n /**\n * sx aplicado a cada MuiAvatar individual (se mergea sobre los defaults).\n */\n avatarSx?: SxProps<Theme>;\n className?: string;\n /**\n * Overlap (px) entre avatares cuando hay varios. Default depende del tamaño.\n */\n overlap?: number;\n}\n\n// Escala alineada con la escala de MUI (sm=32, md=40, lg=56, xl=96) con borde\n// proporcional para el efecto stacked.\nconst sizeMap: Record<\n Exclude<AvatarSize, number>,\n { px: number; border: number; font: number; overlap: number }\n> = {\n sm: { px: 32, border: 2, font: 14, overlap: 8 },\n md: { px: 40, border: 2, font: 16, overlap: 10 },\n lg: { px: 56, border: 3, font: 22, overlap: 14 },\n xl: { px: 96, border: 4, font: 36, overlap: 20 },\n};\n\nconst resolveSize = (size: AvatarSize) => {\n if (typeof size === 'number') {\n return {\n px: size,\n border: Math.max(2, Math.round(size * 0.05)),\n font: Math.round(size * 0.4),\n overlap: Math.round(size * 0.25),\n };\n }\n return sizeMap[size];\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\nexport const Avatar: React.FC<AvatarProps> = ({\n items,\n type,\n displayedAvatars = 4,\n size = 'sm',\n showText = true,\n showTooltip = false,\n sx,\n avatarSx,\n className,\n overlap,\n}) => {\n const [errorIndex, setErrorIndex] = useState<Set<number>>(new Set());\n\n const handleImageError = (index: number) => {\n setErrorIndex((prev) => {\n const next = new Set(prev);\n next.add(index);\n return next;\n });\n };\n\n if (!items || items.length === 0) {\n return null;\n }\n\n const s = resolveSize(size);\n const effectiveOverlap = overlap ?? s.overlap;\n const visibleItems = items.slice(0, displayedAvatars);\n\n const baseAvatarSx: SxProps<Theme> = {\n width: s.px,\n height: s.px,\n fontSize: s.font,\n fontWeight: 700,\n border: (theme) => `${s.border}px solid ${theme.palette.background.paper}`,\n boxSizing: 'content-box',\n };\n\n const renderSingleAvatar = (item: AvatarItem, i: number) => {\n const hasImage = !!item.imageUrl && !errorIndex.has(i);\n const showBadgeFallback = !!item.badge;\n\n // Defaults tirando al theme; item.color / item.backgroundColor tienen prioridad.\n const itemSx: SxProps<Theme> = {\n bgcolor: item.backgroundColor ?? 'action.selected',\n color: item.color ?? 'text.secondary',\n // Stacking manual: margen negativo al segundo avatar en adelante.\n ...(i > 0 && { marginLeft: `-${effectiveOverlap}px` }),\n zIndex: visibleItems.length - i,\n };\n\n const finalSx = mergeSx(mergeSx(baseAvatarSx, itemSx), avatarSx);\n\n const avatarEl = (\n <MuiAvatar\n data-testid=\"avatar\"\n alt={item.text || 'User avatar'}\n src={hasImage ? item.imageUrl : undefined}\n imgProps={{\n 'data-testid': 'image',\n onError: () => handleImageError(i),\n } as React.ImgHTMLAttributes<HTMLImageElement>}\n sx={finalSx}\n >\n {!hasImage && showBadgeFallback ? (\n <span data-testid=\"badge\" aria-label={item.text}>\n {item.badge}\n </span>\n ) : !hasImage ? (\n <AccountCircleIcon\n data-testid=\"icon\"\n aria-label={item.text}\n sx={{ width: '100%', height: '100%' }}\n />\n ) : null}\n </MuiAvatar>\n );\n\n if (showTooltip && item.text) {\n return (\n <Tooltip key={i} title={item.text}>\n {avatarEl}\n </Tooltip>\n );\n }\n return <React.Fragment key={i}>{avatarEl}</React.Fragment>;\n };\n\n return (\n <Box\n data-testid=\"avatar-container\"\n className={className}\n sx={mergeSx(\n {\n display: 'flex',\n alignItems: 'center',\n lineHeight: 1,\n width: 'fit-content',\n },\n sx,\n )}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {visibleItems.map((item, i) => renderSingleAvatar(item, i))}\n </Box>\n\n {showText && items[0]?.text && (\n <Typography\n data-testid=\"text\"\n variant=\"caption\"\n sx={{\n ml: 1,\n fontSize: '0.75rem',\n fontWeight: 400,\n color: 'text.primary',\n }}\n >\n {type && items.length === 1 && (\n <Box component=\"span\" data-testid=\"type\" sx={{ mr: 0.5 }}>\n {type}:\n </Box>\n )}\n {items[0].text}\n {items.length > 1 && ` +${items.length - 1}`}\n </Typography>\n )}\n </Box>\n );\n};\n\nexport default Avatar;\n"],"names":["_a","MuiAvatar","React"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.cjs","sources":["../../../src/components/Card/Card.sx.ts","../../../src/components/Card/Card.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport type CardVariant = 'elevated' | 'outlined' | 'plain';\nexport type CardPadding = 'none' | 'dense' | 'normal' | 'loose';\n\nexport interface BuildCardSxArgs {\n variant: CardVariant;\n padding: CardPadding;\n clickable: boolean;\n}\n\nconst paddingMap: Record<CardPadding, number> = {\n none: 0,\n dense: 1.5,\n normal: 2.5,\n loose: 4,\n};\n\n/**\n * Estilo base del Card (root). La props `sx` del consumer se compone encima\n * junto al preset resuelto (en Card.tsx). Este builder solo se ocupa del\n * variant + padding, para que siga siendo predecible.\n */\nexport function buildCardSx({\n variant,\n padding,\n clickable,\n}: BuildCardSxArgs): SxProps<Theme> {\n return (theme) => ({\n borderRadius: 2,\n backgroundColor: 'background.paper',\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[1]\n : 'none',\n border:\n variant === 'outlined'\n ? `1px solid ${theme.palette.divider}`\n : 'none',\n transition: theme.transitions.create(\n ['box-shadow', 'transform', 'border-color'],\n { duration: theme.transitions.duration.shorter },\n ),\n cursor: clickable ? 'pointer' : 'default',\n ...(clickable && {\n '&:hover': {\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[3]\n : variant === 'outlined'\n ? theme.shadows[1]\n : 'none',\n transform: variant !== 'plain' ? 'translateY(-1px)' : 'none',\n },\n '&:active': {\n transform: 'translateY(0)',\n },\n }),\n // Body padding (cuando no hay header/footer envolventes). Para el caso\n // compuesto los slots manejan su propio padding, dejamos el root en 0.\n p: paddingMap[padding],\n });\n}\n\nexport function buildCardHeaderSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 2.5,\n py: 1.75,\n borderBottom: `1px solid ${theme.palette.divider}`,\n '& .card-header-text': {\n flex: 1,\n minWidth: 0,\n },\n '& .card-header-actions': {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n flexShrink: 0,\n },\n });\n}\n\nexport function buildCardBodySx(padding: CardPadding): SxProps<Theme> {\n return {\n px: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n py: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n };\n}\n\nexport function buildCardFooterSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 1,\n px: 2.5,\n py: 1.5,\n borderTop: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.action.hover,\n });\n}\n","import React, { type ReactNode } from 'react';\nimport { Box, Card as MuiCard, Typography, useTheme } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport {\n buildCardSx,\n buildCardHeaderSx,\n buildCardBodySx,\n buildCardFooterSx,\n type CardVariant,\n type CardPadding,\n} from './Card.sx';\n\nexport interface CardProps {\n /** Contenido principal. */\n children?: ReactNode;\n /**\n * Título del Card. Si se provee, renderiza un header con separador. Puede\n * ser string o cualquier ReactNode para permitir iconos / chips.\n */\n title?: ReactNode;\n /** Texto secundario debajo del título. */\n subtitle?: ReactNode;\n /**\n * Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas\n * a la derecha.\n */\n actions?: ReactNode;\n /**\n * Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`\n * y toma control del slot entero.\n */\n header?: ReactNode;\n /** Footer custom (botones, mensajes, etc). */\n footer?: ReactNode;\n /**\n * Variante visual.\n * - `elevated` (default): sombra sutil.\n * - `outlined`: borde sin sombra.\n * - `plain`: sin borde ni sombra, útil para layouts con nesting.\n */\n variant?: CardVariant;\n /**\n * Densidad del padding interno. Solo aplica al body cuando hay header/footer;\n * cuando no hay slots, aplica al root.\n */\n padding?: CardPadding;\n /** Si `true`, muestra feedback de hover/active (cursor, sombra). */\n clickable?: boolean;\n /**\n * Preset registrado en `theme.styles.Card`. `\"default\"` usa el estilo\n * built-in sin preset extra.\n */\n preset?: string;\n /**\n * MUI `raised` legacy — mantenido por backward-compat. Equivale a\n * `variant=\"elevated\"` con sombra mayor. Ignora `variant` si se usa.\n */\n raised?: boolean;\n /** sx del root. Se compone sobre el base + preset. */\n sx?: SxProps<Theme>;\n /** sx custom del slot body. */\n bodySx?: SxProps<Theme>;\n /** sx custom del slot header. */\n headerSx?: SxProps<Theme>;\n /** sx custom del slot footer. */\n footerSx?: SxProps<Theme>;\n onClick?: () => void;\n onBlur?: () => void;\n className?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Card semántico con slots `title` / `subtitle` / `actions` / `footer`.\n * Reemplaza el patrón `<div class=\"card\"><div class=\"card-header\">...</div>...`\n * de Metronic/Bootstrap con composición declarativa.\n *\n * Backward-compat: si solo se pasa `children`, se comporta como el Card\n * original (MUI Card + body padding).\n *\n * ```tsx\n * <Card\n * title=\"Datos del cliente\"\n * subtitle=\"Última actualización: hace 2h\"\n * actions={<ActionMenu items={menuItems} />}\n * footer={<Button>Guardar</Button>}\n * >\n * <CustomerForm />\n * </Card>\n * ```\n */\nexport function Card({\n children,\n title,\n subtitle,\n actions,\n header,\n footer,\n variant,\n padding = 'normal',\n clickable = false,\n preset,\n raised,\n sx,\n bodySx,\n headerSx,\n footerSx,\n onClick,\n onBlur,\n className,\n 'data-testid': dataTestId,\n}: CardProps) {\n const theme = useTheme();\n\n // Back-compat: `raised` legacy => elevated. Si no vienen ni `raised` ni\n // `variant`, default a 'elevated'.\n const resolvedVariant: CardVariant = raised\n ? 'elevated'\n : (variant ?? 'elevated');\n\n const hasHeader = Boolean(header || title || subtitle || actions);\n const hasFooter = Boolean(footer);\n const isCompound = hasHeader || hasFooter;\n\n // Cuando hay slots, el root no lleva padding (lo llevan los slots).\n const rootPadding: CardPadding = isCompound ? 'none' : padding;\n\n const presetSx = resolvePreset('Card', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n buildCardSx({\n variant: resolvedVariant,\n padding: rootPadding,\n clickable: clickable || Boolean(onClick),\n }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderHeader = () => {\n if (header) return <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>{header}</Box>;\n if (!title && !subtitle && !actions) return null;\n return (\n <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>\n <Box className=\"card-header-text\">\n {title && (\n <Typography\n variant=\"subtitle1\"\n component=\"div\"\n sx={{ fontWeight: 600, lineHeight: 1.3 }}\n noWrap\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n noWrap\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n {actions && <Box className=\"card-header-actions\">{actions}</Box>}\n </Box>\n );\n };\n\n return (\n <MuiCard\n sx={rootSx}\n className={className}\n data-testid={dataTestId}\n onClick={onClick}\n onBlur={onBlur}\n elevation={0} // sombra la maneja buildCardSx\n >\n {renderHeader()}\n {isCompound ? (\n <Box sx={[buildCardBodySx(padding), ...(Array.isArray(bodySx) ? bodySx : bodySx ? [bodySx] : [])]}>\n {children}\n </Box>\n ) : (\n children\n )}\n {hasFooter && (\n <Box sx={[buildCardFooterSx(), ...(Array.isArray(footerSx) ? footerSx : footerSx ? [footerSx] : [])]}>\n {footer}\n </Box>\n )}\n </MuiCard>\n );\n}\n\nexport default Card;\n"],"names":["useTheme","resolvePreset","jsx","Box","jsxs","Typography","MuiCard"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.js","sources":["../../../src/components/Card/Card.sx.ts","../../../src/components/Card/Card.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles';\n\nexport type CardVariant = 'elevated' | 'outlined' | 'plain';\nexport type CardPadding = 'none' | 'dense' | 'normal' | 'loose';\n\nexport interface BuildCardSxArgs {\n variant: CardVariant;\n padding: CardPadding;\n clickable: boolean;\n}\n\nconst paddingMap: Record<CardPadding, number> = {\n none: 0,\n dense: 1.5,\n normal: 2.5,\n loose: 4,\n};\n\n/**\n * Estilo base del Card (root). La props `sx` del consumer se compone encima\n * junto al preset resuelto (en Card.tsx). Este builder solo se ocupa del\n * variant + padding, para que siga siendo predecible.\n */\nexport function buildCardSx({\n variant,\n padding,\n clickable,\n}: BuildCardSxArgs): SxProps<Theme> {\n return (theme) => ({\n borderRadius: 2,\n backgroundColor: 'background.paper',\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[1]\n : 'none',\n border:\n variant === 'outlined'\n ? `1px solid ${theme.palette.divider}`\n : 'none',\n transition: theme.transitions.create(\n ['box-shadow', 'transform', 'border-color'],\n { duration: theme.transitions.duration.shorter },\n ),\n cursor: clickable ? 'pointer' : 'default',\n ...(clickable && {\n '&:hover': {\n boxShadow:\n variant === 'elevated'\n ? theme.shadows[3]\n : variant === 'outlined'\n ? theme.shadows[1]\n : 'none',\n transform: variant !== 'plain' ? 'translateY(-1px)' : 'none',\n },\n '&:active': {\n transform: 'translateY(0)',\n },\n }),\n // Body padding (cuando no hay header/footer envolventes). Para el caso\n // compuesto los slots manejan su propio padding, dejamos el root en 0.\n p: paddingMap[padding],\n });\n}\n\nexport function buildCardHeaderSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 2.5,\n py: 1.75,\n borderBottom: `1px solid ${theme.palette.divider}`,\n '& .card-header-text': {\n flex: 1,\n minWidth: 0,\n },\n '& .card-header-actions': {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n flexShrink: 0,\n },\n });\n}\n\nexport function buildCardBodySx(padding: CardPadding): SxProps<Theme> {\n return {\n px: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n py: padding === 'none' ? 0 : padding === 'dense' ? 1.5 : padding === 'loose' ? 4 : 2.5,\n };\n}\n\nexport function buildCardFooterSx(): SxProps<Theme> {\n return (theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 1,\n px: 2.5,\n py: 1.5,\n borderTop: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.action.hover,\n });\n}\n","import React, { type ReactNode } from 'react';\nimport { Box, Card as MuiCard, Typography, useTheme } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\nimport {\n buildCardSx,\n buildCardHeaderSx,\n buildCardBodySx,\n buildCardFooterSx,\n type CardVariant,\n type CardPadding,\n} from './Card.sx';\n\nexport interface CardProps {\n /** Contenido principal. */\n children?: ReactNode;\n /**\n * Título del Card. Si se provee, renderiza un header con separador. Puede\n * ser string o cualquier ReactNode para permitir iconos / chips.\n */\n title?: ReactNode;\n /** Texto secundario debajo del título. */\n subtitle?: ReactNode;\n /**\n * Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas\n * a la derecha.\n */\n actions?: ReactNode;\n /**\n * Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`\n * y toma control del slot entero.\n */\n header?: ReactNode;\n /** Footer custom (botones, mensajes, etc). */\n footer?: ReactNode;\n /**\n * Variante visual.\n * - `elevated` (default): sombra sutil.\n * - `outlined`: borde sin sombra.\n * - `plain`: sin borde ni sombra, útil para layouts con nesting.\n */\n variant?: CardVariant;\n /**\n * Densidad del padding interno. Solo aplica al body cuando hay header/footer;\n * cuando no hay slots, aplica al root.\n */\n padding?: CardPadding;\n /** Si `true`, muestra feedback de hover/active (cursor, sombra). */\n clickable?: boolean;\n /**\n * Preset registrado en `theme.styles.Card`. `\"default\"` usa el estilo\n * built-in sin preset extra.\n */\n preset?: string;\n /**\n * MUI `raised` legacy — mantenido por backward-compat. Equivale a\n * `variant=\"elevated\"` con sombra mayor. Ignora `variant` si se usa.\n */\n raised?: boolean;\n /** sx del root. Se compone sobre el base + preset. */\n sx?: SxProps<Theme>;\n /** sx custom del slot body. */\n bodySx?: SxProps<Theme>;\n /** sx custom del slot header. */\n headerSx?: SxProps<Theme>;\n /** sx custom del slot footer. */\n footerSx?: SxProps<Theme>;\n onClick?: () => void;\n onBlur?: () => void;\n className?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Card semántico con slots `title` / `subtitle` / `actions` / `footer`.\n * Reemplaza el patrón `<div class=\"card\"><div class=\"card-header\">...</div>...`\n * de Metronic/Bootstrap con composición declarativa.\n *\n * Backward-compat: si solo se pasa `children`, se comporta como el Card\n * original (MUI Card + body padding).\n *\n * ```tsx\n * <Card\n * title=\"Datos del cliente\"\n * subtitle=\"Última actualización: hace 2h\"\n * actions={<ActionMenu items={menuItems} />}\n * footer={<Button>Guardar</Button>}\n * >\n * <CustomerForm />\n * </Card>\n * ```\n */\nexport function Card({\n children,\n title,\n subtitle,\n actions,\n header,\n footer,\n variant,\n padding = 'normal',\n clickable = false,\n preset,\n raised,\n sx,\n bodySx,\n headerSx,\n footerSx,\n onClick,\n onBlur,\n className,\n 'data-testid': dataTestId,\n}: CardProps) {\n const theme = useTheme();\n\n // Back-compat: `raised` legacy => elevated. Si no vienen ni `raised` ni\n // `variant`, default a 'elevated'.\n const resolvedVariant: CardVariant = raised\n ? 'elevated'\n : (variant ?? 'elevated');\n\n const hasHeader = Boolean(header || title || subtitle || actions);\n const hasFooter = Boolean(footer);\n const isCompound = hasHeader || hasFooter;\n\n // Cuando hay slots, el root no lleva padding (lo llevan los slots).\n const rootPadding: CardPadding = isCompound ? 'none' : padding;\n\n const presetSx = resolvePreset('Card', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n buildCardSx({\n variant: resolvedVariant,\n padding: rootPadding,\n clickable: clickable || Boolean(onClick),\n }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const renderHeader = () => {\n if (header) return <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>{header}</Box>;\n if (!title && !subtitle && !actions) return null;\n return (\n <Box sx={[buildCardHeaderSx(), ...(Array.isArray(headerSx) ? headerSx : headerSx ? [headerSx] : [])]}>\n <Box className=\"card-header-text\">\n {title && (\n <Typography\n variant=\"subtitle1\"\n component=\"div\"\n sx={{ fontWeight: 600, lineHeight: 1.3 }}\n noWrap\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n noWrap\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n {actions && <Box className=\"card-header-actions\">{actions}</Box>}\n </Box>\n );\n };\n\n return (\n <MuiCard\n sx={rootSx}\n className={className}\n data-testid={dataTestId}\n onClick={onClick}\n onBlur={onBlur}\n elevation={0} // sombra la maneja buildCardSx\n >\n {renderHeader()}\n {isCompound ? (\n <Box sx={[buildCardBodySx(padding), ...(Array.isArray(bodySx) ? bodySx : bodySx ? [bodySx] : [])]}>\n {children}\n </Box>\n ) : (\n children\n )}\n {hasFooter && (\n <Box sx={[buildCardFooterSx(), ...(Array.isArray(footerSx) ? footerSx : footerSx ? [footerSx] : [])]}>\n {footer}\n </Box>\n )}\n </MuiCard>\n );\n}\n\nexport default Card;\n"],"names":["MuiCard"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chip.cjs","sources":["../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import React from 'react';\nimport { Chip as MuiChip, ChipProps as MuiChipProps, Avatar } from '@mui/material';\n\n// Define las props para el componente Chip personalizado\n// Omitimos algunas props de MuiChipProps que redefiniremos para mayor claridad\nexport interface ChipProps extends Omit<MuiChipProps, 'onClick' | 'onDelete' | 'avatar' | 'icon' | 'label' | 'variant' | 'color' | 'size'> {\n // Contenido principal del chip\n label: React.ReactNode;\n // Handler para el evento click del chip\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n // Handler para el evento delete del chip (muestra un botón de borrar)\n onDelete?: (event: React.MouseEvent<HTMLDivElement>) => void;\n // Elemento Avatar a mostrar al inicio del chip\n avatar?: React.ReactElement;\n // Icono a mostrar al inicio del chip (alternativa a avatar)\n icon?: React.ReactElement;\n // Si el chip está deshabilitado\n disabled?: boolean;\n // Variante visual del chip\n variant?: 'filled' | 'outlined';\n // Color del chip\n color?: 'default' | 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';\n // Tamaño del chip\n size?: 'small' | 'medium';\n}\n\n/**\n * Componente Chip personalizado de Material UI.\n * Proporciona una interfaz simplificada para el componente Chip de Material UI,\n * permitiendo una fácil personalización de etiquetas, avatares, iconos y acciones.\n */\nexport const Chip: React.FC<ChipProps> = ({\n label,\n onClick,\n onDelete,\n avatar,\n icon,\n disabled = false,\n variant = 'filled', // Default variant\n color = 'default', // Default color\n size = 'medium', // Default size\n ...rest // Permite pasar otras props de MuiChipProps (ej. sx, className)\n}) => {\n return (\n <MuiChip\n label={label}\n onClick={onClick}\n onDelete={onDelete}\n avatar={avatar}\n icon={icon}\n disabled={disabled}\n variant={variant}\n color={color}\n size={size}\n clickable={!!onClick} // Habilita el estilo clickable si se proporciona onClick\n {...rest}\n />\n );\n};\n\nexport default Chip;\n"],"names":["jsx","MuiChip"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BO,MAAM,OAA4B,CAAC,OAWpC;AAXoC,eACxC;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV,eAAQ;AAAA,IACR,aAAO;AAAA,MATiC,IAUrC,iBAVqC,IAUrC;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAGA,SACEA,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,CAAC,CAAC;AAAA,OACT;AAAA,EAAA;AAGV;;"}