@soyfri/shared-library 1.5.0 → 1.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/Button-C17mExpd.cjs.map +1 -0
  2. package/Button-UkkP-bNw.js.map +1 -0
  3. package/components/ActionMenu/ActionMenu.cjs +107 -0
  4. package/components/ActionMenu/ActionMenu.cjs.map +1 -0
  5. package/components/ActionMenu/ActionMenu.d.ts +44 -0
  6. package/components/ActionMenu/ActionMenu.js +107 -0
  7. package/components/ActionMenu/ActionMenu.js.map +1 -0
  8. package/components/ActionMenu/index.d.ts +2 -0
  9. package/components/ActionMenu.d.ts +6 -0
  10. package/components/AppBar/AppBar.cjs +129 -0
  11. package/components/AppBar/AppBar.cjs.map +1 -0
  12. package/components/AppBar/AppBar.d.ts +55 -0
  13. package/components/AppBar/AppBar.js +129 -0
  14. package/components/AppBar/AppBar.js.map +1 -0
  15. package/components/AppBar/AppBar.sx.d.ts +12 -0
  16. package/components/AppBar/AppBarContext.d.ts +18 -0
  17. package/components/AppBar/AppBarMenuToggle.d.ts +39 -0
  18. package/components/AppBar/index.d.ts +6 -0
  19. package/components/AppBar.d.ts +6 -0
  20. package/components/Autocomplete/Autocomplete.cjs +313 -0
  21. package/components/Autocomplete/Autocomplete.cjs.map +1 -0
  22. package/components/Autocomplete/Autocomplete.d.ts +86 -0
  23. package/components/Autocomplete/Autocomplete.definitions.d.ts +16 -0
  24. package/components/Autocomplete/Autocomplete.helpers.d.ts +22 -0
  25. package/components/Autocomplete/Autocomplete.js +313 -0
  26. package/components/Autocomplete/Autocomplete.js.map +1 -0
  27. package/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
  28. package/components/Autocomplete/_parts/AutocompleteChips.d.ts +20 -0
  29. package/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
  30. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +16 -0
  31. package/components/Autocomplete/index.d.ts +2 -0
  32. package/components/Autocomplete.d.ts +6 -0
  33. package/components/Avatar/Avatar.cjs +162 -0
  34. package/components/Avatar/Avatar.cjs.map +1 -0
  35. package/components/Avatar/Avatar.d.ts +33 -0
  36. package/components/Avatar/Avatar.definitions.d.ts +11 -0
  37. package/components/Avatar/Avatar.js +162 -0
  38. package/components/Avatar/Avatar.js.map +1 -0
  39. package/components/Avatar/index.d.ts +2 -0
  40. package/{dist/components → components}/Button/Button.d.ts +5 -5
  41. package/{dist/components → components}/Button/index.d.ts +1 -0
  42. package/components/Card/Card.cjs +99 -0
  43. package/components/Card/Card.cjs.map +1 -0
  44. package/components/Card/Card.d.ts +36 -0
  45. package/components/Card/Card.js +99 -0
  46. package/components/Card/Card.js.map +1 -0
  47. package/components/Card/Card.sx.d.ts +14 -0
  48. package/components/Card/index.d.ts +4 -0
  49. package/components/Card.d.ts +6 -0
  50. package/components/Checkbox/Checkbox.cjs +189 -0
  51. package/components/Checkbox/Checkbox.cjs.map +1 -0
  52. package/components/Checkbox/Checkbox.d.ts +55 -0
  53. package/components/Checkbox/Checkbox.js +189 -0
  54. package/components/Checkbox/Checkbox.js.map +1 -0
  55. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  56. package/components/Checkbox/index.d.ts +2 -0
  57. package/components/Checkbox.d.ts +6 -0
  58. package/{dist/components → components}/Chip/Chip.cjs +2 -1
  59. package/components/Chip/Chip.cjs.map +1 -0
  60. package/{dist/components → components}/Chip/Chip.js +2 -1
  61. package/components/Chip/Chip.js.map +1 -0
  62. package/components/Chip/index.d.ts +2 -0
  63. package/components/Chip.d.ts +6 -0
  64. package/components/DatePicker/DatePicker.cjs +180 -0
  65. package/components/DatePicker/DatePicker.cjs.map +1 -0
  66. package/components/DatePicker/DatePicker.d.ts +44 -0
  67. package/{dist/components → components}/DatePicker/DatePicker.definitions.d.ts +1 -0
  68. package/components/DatePicker/DatePicker.helpers.d.ts +7 -0
  69. package/components/DatePicker/DatePicker.js +180 -0
  70. package/components/DatePicker/DatePicker.js.map +1 -0
  71. package/components/DatePicker/DatePicker.sx.d.ts +9 -0
  72. package/components/DatePicker/index.d.ts +2 -0
  73. package/components/DatePicker.d.ts +6 -0
  74. package/components/DateTimePicker/DateTimePicker.cjs +198 -0
  75. package/components/DateTimePicker/DateTimePicker.cjs.map +1 -0
  76. package/components/DateTimePicker/DateTimePicker.d.ts +57 -0
  77. package/{dist/components → components}/DateTimePicker/DateTimePicker.definitions.d.ts +3 -0
  78. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +13 -0
  79. package/components/DateTimePicker/DateTimePicker.js +198 -0
  80. package/components/DateTimePicker/DateTimePicker.js.map +1 -0
  81. package/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
  82. package/components/DateTimePicker/index.d.ts +2 -0
  83. package/components/DateTimePicker.d.ts +6 -0
  84. package/components/Drawer/Drawer.cjs +272 -0
  85. package/components/Drawer/Drawer.cjs.map +1 -0
  86. package/components/Drawer/Drawer.d.ts +58 -0
  87. package/components/Drawer/Drawer.js +272 -0
  88. package/components/Drawer/Drawer.js.map +1 -0
  89. package/components/Drawer/Drawer.sx.d.ts +23 -0
  90. package/components/Drawer/DrawerContext.d.ts +18 -0
  91. package/components/Drawer/DrawerItem.d.ts +40 -0
  92. package/components/Drawer/index.d.ts +6 -0
  93. package/components/Drawer.d.ts +6 -0
  94. package/{dist/components → components}/Gallery/Gallery.cjs +154 -79
  95. package/components/Gallery/Gallery.cjs.map +1 -0
  96. package/components/Gallery/Gallery.d.ts +28 -0
  97. package/{dist/components → components}/Gallery/Gallery.js +154 -79
  98. package/components/Gallery/Gallery.js.map +1 -0
  99. package/components/Gallery/GalleryLightbox.d.ts +16 -0
  100. package/{dist/components → components}/Gallery/GalleryMain.d.ts +3 -7
  101. package/components/Gallery/GalleryThumbnails.d.ts +13 -0
  102. package/components/Gallery/index.d.ts +2 -0
  103. package/components/Gallery.d.ts +6 -0
  104. package/{dist/components → components}/Icon/Icon.cjs +49 -10
  105. package/components/Icon/Icon.cjs.map +1 -0
  106. package/components/Icon/Icon.d.ts +48 -0
  107. package/{dist/components → components}/Icon/Icon.js +49 -10
  108. package/components/Icon/Icon.js.map +1 -0
  109. package/components/Icon/index.d.ts +2 -0
  110. package/components/Icon.d.ts +6 -0
  111. package/components/Input/Input.cjs +188 -0
  112. package/components/Input/Input.cjs.map +1 -0
  113. package/components/Input/Input.d.ts +44 -0
  114. package/{dist/components → components}/Input/Input.definitions.d.ts +6 -2
  115. package/components/Input/Input.helpers.d.ts +14 -0
  116. package/components/Input/Input.js +188 -0
  117. package/components/Input/Input.js.map +1 -0
  118. package/components/Input/Input.sx.d.ts +8 -0
  119. package/components/Input/index.d.ts +2 -0
  120. package/components/Input.d.ts +6 -0
  121. package/components/InputGroup/InputGroup.cjs +140 -0
  122. package/components/InputGroup/InputGroup.cjs.map +1 -0
  123. package/components/InputGroup/InputGroup.d.ts +42 -0
  124. package/components/InputGroup/InputGroup.definitions.d.ts +6 -0
  125. package/components/InputGroup/InputGroup.js +140 -0
  126. package/components/InputGroup/InputGroup.js.map +1 -0
  127. package/components/InputGroup/index.d.ts +2 -0
  128. package/components/InputGroup.d.ts +6 -0
  129. package/components/Modal/Modal.cjs +348 -0
  130. package/components/Modal/Modal.cjs.map +1 -0
  131. package/components/Modal/Modal.d.ts +80 -0
  132. package/components/Modal/Modal.js +348 -0
  133. package/components/Modal/Modal.js.map +1 -0
  134. package/components/Modal/ModalBody.d.ts +11 -0
  135. package/components/Modal/ModalFooter.d.ts +27 -0
  136. package/components/Modal/ModalHeader.d.ts +11 -0
  137. package/components/Modal/index.d.ts +8 -0
  138. package/components/Modal.d.ts +6 -0
  139. package/components/RadioGroup/RadioGroup.cjs +204 -0
  140. package/components/RadioGroup/RadioGroup.cjs.map +1 -0
  141. package/components/RadioGroup/RadioGroup.d.ts +59 -0
  142. package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  143. package/components/RadioGroup/RadioGroup.js +204 -0
  144. package/components/RadioGroup/RadioGroup.js.map +1 -0
  145. package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  146. package/components/RadioGroup/index.d.ts +2 -0
  147. package/components/RadioGroup.d.ts +6 -0
  148. package/components/Select/Select.cjs +313 -0
  149. package/components/Select/Select.cjs.map +1 -0
  150. package/components/Select/Select.d.ts +95 -0
  151. package/components/Select/Select.helpers.d.ts +15 -0
  152. package/components/Select/Select.js +313 -0
  153. package/components/Select/Select.js.map +1 -0
  154. package/components/Select/Select.sx.d.ts +7 -0
  155. package/components/Select/_parts/SelectMenuItem.d.ts +20 -0
  156. package/components/Select/index.d.ts +2 -0
  157. package/components/Select.d.ts +6 -0
  158. package/{dist/components → components}/Stat/Stat.cjs +2 -2
  159. package/{dist/components → components}/Stat/Stat.cjs.map +1 -1
  160. package/{dist/components → components}/Stat/Stat.js +2 -2
  161. package/{dist/components → components}/Stat/Stat.js.map +1 -1
  162. package/components/Stat/index.d.ts +2 -0
  163. package/components/Stat.d.ts +6 -0
  164. package/components/StatusMessage/StatusMessage.cjs +90 -0
  165. package/components/StatusMessage/StatusMessage.cjs.map +1 -0
  166. package/components/StatusMessage/StatusMessage.d.ts +28 -0
  167. package/components/StatusMessage/StatusMessage.js +90 -0
  168. package/components/StatusMessage/StatusMessage.js.map +1 -0
  169. package/components/StatusMessage/index.d.ts +2 -0
  170. package/components/StatusMessage.d.ts +6 -0
  171. package/components/Stepper/Stepper.cjs +302 -0
  172. package/components/Stepper/Stepper.cjs.map +1 -0
  173. package/components/Stepper/Stepper.d.ts +17 -0
  174. package/components/Stepper/Stepper.js +302 -0
  175. package/components/Stepper/Stepper.js.map +1 -0
  176. package/components/Stepper/StepperContext.d.ts +73 -0
  177. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  178. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  179. package/components/Stepper/index.d.ts +6 -0
  180. package/components/Stepper.d.ts +6 -0
  181. package/components/Switch/Switch.cjs +184 -0
  182. package/components/Switch/Switch.cjs.map +1 -0
  183. package/components/Switch/Switch.d.ts +48 -0
  184. package/components/Switch/Switch.definitions.d.ts +7 -0
  185. package/components/Switch/Switch.js +184 -0
  186. package/components/Switch/Switch.js.map +1 -0
  187. package/components/Switch/Switch.sx.d.ts +22 -0
  188. package/components/Switch/Switch.types.d.ts +1 -0
  189. package/components/Switch/index.d.ts +2 -0
  190. package/components/Switch.d.ts +6 -0
  191. package/components/Tabs/Tabs.cjs +112 -0
  192. package/components/Tabs/Tabs.cjs.map +1 -0
  193. package/components/Tabs/Tabs.d.ts +24 -0
  194. package/components/Tabs/Tabs.js +112 -0
  195. package/components/Tabs/Tabs.js.map +1 -0
  196. package/components/Tabs/index.d.ts +4 -0
  197. package/components/Tabs.d.ts +6 -0
  198. package/{dist/components → components}/Timeline/Timeline.cjs +3 -2
  199. package/components/Timeline/Timeline.cjs.map +1 -0
  200. package/components/Timeline/Timeline.d.ts +9 -0
  201. package/{dist/components → components}/Timeline/Timeline.js +3 -2
  202. package/components/Timeline/Timeline.js.map +1 -0
  203. package/components/Timeline/index.d.ts +4 -0
  204. package/components/Timeline.d.ts +6 -0
  205. package/components/_shared/formField.sx.d.ts +33 -0
  206. package/components/_shared/mergeSx.d.ts +7 -0
  207. package/components/_shared/resolvePreset.d.ts +18 -0
  208. package/formField.sx-8_QRnKxv.js +68 -0
  209. package/formField.sx-8_QRnKxv.js.map +1 -0
  210. package/formField.sx-BAX7KwMR.cjs +67 -0
  211. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  212. package/index.cjs +145 -0
  213. package/index.cjs.map +1 -0
  214. package/index.d.ts +4 -0
  215. package/index.js +49 -0
  216. package/index.js.map +1 -0
  217. package/mergeSx-BXoNZjB_.js +10 -0
  218. package/mergeSx-BXoNZjB_.js.map +1 -0
  219. package/mergeSx-Dbccoo_H.cjs +9 -0
  220. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  221. package/mui.d.ts +7 -0
  222. package/package.json +164 -43
  223. package/resolvePreset-B-IB0ehH.js +15 -0
  224. package/resolvePreset-B-IB0ehH.js.map +1 -0
  225. package/resolvePreset-CT3kU-K2.cjs +14 -0
  226. package/resolvePreset-CT3kU-K2.cjs.map +1 -0
  227. package/theme/componentStyles.d.ts +32 -0
  228. package/theme/tokens.d.ts +28 -0
  229. package/tokens-BRrcP_p_.js +21 -0
  230. package/tokens-BRrcP_p_.js.map +1 -0
  231. package/tokens-jaWWNk39.cjs +20 -0
  232. package/tokens-jaWWNk39.cjs.map +1 -0
  233. package/utils/index.d.ts +2 -0
  234. package/utils/scrollToTop.d.ts +28 -0
  235. package/.dockerignore +0 -8
  236. package/.github/workflows/publish.yml +0 -107
  237. package/.prettierrc +0 -3
  238. package/.storybook/main.ts +0 -19
  239. package/.storybook/preview.ts +0 -14
  240. package/.storybook/vitest.setup.ts +0 -9
  241. package/Dockerfile +0 -37
  242. package/build.js +0 -102
  243. package/chromatic.config.json +0 -5
  244. package/cleanDirectories.js +0 -40
  245. package/dist/Button-C17mExpd.cjs.map +0 -1
  246. package/dist/Button-UkkP-bNw.js.map +0 -1
  247. package/dist/DatePicker-BSNboVhN.js +0 -201
  248. package/dist/DatePicker-BSNboVhN.js.map +0 -1
  249. package/dist/DatePicker-BoqxWAhj.cjs +0 -200
  250. package/dist/DatePicker-BoqxWAhj.cjs.map +0 -1
  251. package/dist/Input-DFHs7cJ_.js +0 -171
  252. package/dist/Input-DFHs7cJ_.js.map +0 -1
  253. package/dist/Input-c8MwNNPg.cjs +0 -170
  254. package/dist/Input-c8MwNNPg.cjs.map +0 -1
  255. package/dist/Select-BO2N56sm.cjs +0 -411
  256. package/dist/Select-BO2N56sm.cjs.map +0 -1
  257. package/dist/Select-BcLkyHSE.js +0 -412
  258. package/dist/Select-BcLkyHSE.js.map +0 -1
  259. package/dist/components/Autocomplete/Autocomplete.cjs +0 -109
  260. package/dist/components/Autocomplete/Autocomplete.cjs.map +0 -1
  261. package/dist/components/Autocomplete/Autocomplete.d.ts +0 -28
  262. package/dist/components/Autocomplete/Autocomplete.definitions.d.ts +0 -9
  263. package/dist/components/Autocomplete/Autocomplete.js +0 -109
  264. package/dist/components/Autocomplete/Autocomplete.js.map +0 -1
  265. package/dist/components/Autocomplete/index.d.ts +0 -1
  266. package/dist/components/Autocomplete.d.ts +0 -2
  267. package/dist/components/Avatar/Avatar.cjs +0 -126
  268. package/dist/components/Avatar/Avatar.cjs.map +0 -1
  269. package/dist/components/Avatar/Avatar.d.ts +0 -19
  270. package/dist/components/Avatar/Avatar.js +0 -126
  271. package/dist/components/Avatar/Avatar.js.map +0 -1
  272. package/dist/components/Avatar/index.d.ts +0 -1
  273. package/dist/components/Card/Card.cjs +0 -28
  274. package/dist/components/Card/Card.cjs.map +0 -1
  275. package/dist/components/Card/Card.d.ts +0 -13
  276. package/dist/components/Card/Card.js +0 -28
  277. package/dist/components/Card/Card.js.map +0 -1
  278. package/dist/components/Card/index.d.ts +0 -1
  279. package/dist/components/Card.d.ts +0 -2
  280. package/dist/components/Chip/Chip.cjs.map +0 -1
  281. package/dist/components/Chip/Chip.js.map +0 -1
  282. package/dist/components/Chip/index.d.ts +0 -1
  283. package/dist/components/Chip.d.ts +0 -2
  284. package/dist/components/DatePicker/DatePicker.cjs +0 -5
  285. package/dist/components/DatePicker/DatePicker.cjs.map +0 -1
  286. package/dist/components/DatePicker/DatePicker.d.ts +0 -18
  287. package/dist/components/DatePicker/DatePicker.js +0 -5
  288. package/dist/components/DatePicker/DatePicker.js.map +0 -1
  289. package/dist/components/DatePicker/index.d.ts +0 -1
  290. package/dist/components/DatePicker.d.ts +0 -2
  291. package/dist/components/DateTimePicker/DateTimePicker.cjs +0 -208
  292. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
  293. package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -28
  294. package/dist/components/DateTimePicker/DateTimePicker.js +0 -208
  295. package/dist/components/DateTimePicker/DateTimePicker.js.map +0 -1
  296. package/dist/components/DateTimePicker/index.d.ts +0 -1
  297. package/dist/components/DateTimePicker.d.ts +0 -2
  298. package/dist/components/Gallery/Gallery.cjs.map +0 -1
  299. package/dist/components/Gallery/Gallery.d.ts +0 -12
  300. package/dist/components/Gallery/Gallery.js.map +0 -1
  301. package/dist/components/Gallery/GalleryLightbox.d.ts +0 -20
  302. package/dist/components/Gallery/GalleryThumbnails.d.ts +0 -17
  303. package/dist/components/Gallery/index.d.ts +0 -1
  304. package/dist/components/Gallery.d.ts +0 -2
  305. package/dist/components/Icon/Icon.cjs.map +0 -1
  306. package/dist/components/Icon/Icon.d.ts +0 -21
  307. package/dist/components/Icon/Icon.js.map +0 -1
  308. package/dist/components/Icon/index.d.ts +0 -1
  309. package/dist/components/Icon.d.ts +0 -2
  310. package/dist/components/Input/Input.cjs +0 -5
  311. package/dist/components/Input/Input.cjs.map +0 -1
  312. package/dist/components/Input/Input.d.ts +0 -32
  313. package/dist/components/Input/Input.js +0 -5
  314. package/dist/components/Input/Input.js.map +0 -1
  315. package/dist/components/Input/index.d.ts +0 -1
  316. package/dist/components/Input.d.ts +0 -2
  317. package/dist/components/InputGroup/InputGroup.cjs +0 -126
  318. package/dist/components/InputGroup/InputGroup.cjs.map +0 -1
  319. package/dist/components/InputGroup/InputGroup.d.ts +0 -6
  320. package/dist/components/InputGroup/InputGroup.js +0 -126
  321. package/dist/components/InputGroup/InputGroup.js.map +0 -1
  322. package/dist/components/InputGroup/index.d.ts +0 -1
  323. package/dist/components/InputGroup.d.ts +0 -2
  324. package/dist/components/Modal/Modal.cjs +0 -209
  325. package/dist/components/Modal/Modal.cjs.map +0 -1
  326. package/dist/components/Modal/Modal.d.ts +0 -29
  327. package/dist/components/Modal/Modal.js +0 -209
  328. package/dist/components/Modal/Modal.js.map +0 -1
  329. package/dist/components/Modal/ModalBody.d.ts +0 -6
  330. package/dist/components/Modal/ModalFooter.d.ts +0 -19
  331. package/dist/components/Modal/ModalHeader.d.ts +0 -6
  332. package/dist/components/Modal/index.d.ts +0 -1
  333. package/dist/components/Modal.d.ts +0 -2
  334. package/dist/components/Select/Select.cjs +0 -6
  335. package/dist/components/Select/Select.cjs.map +0 -1
  336. package/dist/components/Select/Select.d.ts +0 -60
  337. package/dist/components/Select/Select.definitions.d.ts +0 -14
  338. package/dist/components/Select/Select.js +0 -6
  339. package/dist/components/Select/Select.js.map +0 -1
  340. package/dist/components/Select/index.d.ts +0 -1
  341. package/dist/components/Select.d.ts +0 -2
  342. package/dist/components/Stat/index.d.ts +0 -1
  343. package/dist/components/Stat.d.ts +0 -2
  344. package/dist/components/StatusMessage/StatusMessage.cjs +0 -79
  345. package/dist/components/StatusMessage/StatusMessage.cjs.map +0 -1
  346. package/dist/components/StatusMessage/StatusMessage.d.ts +0 -44
  347. package/dist/components/StatusMessage/StatusMessage.js +0 -79
  348. package/dist/components/StatusMessage/StatusMessage.js.map +0 -1
  349. package/dist/components/StatusMessage/index.d.ts +0 -1
  350. package/dist/components/StatusMessage.d.ts +0 -2
  351. package/dist/components/Stepper/Stepper.cjs +0 -46
  352. package/dist/components/Stepper/Stepper.cjs.map +0 -1
  353. package/dist/components/Stepper/Stepper.d.ts +0 -11
  354. package/dist/components/Stepper/Stepper.js +0 -46
  355. package/dist/components/Stepper/Stepper.js.map +0 -1
  356. package/dist/components/Stepper/index.d.ts +0 -2
  357. package/dist/components/Stepper.d.ts +0 -2
  358. package/dist/components/Tabs/Tabs.cjs +0 -96
  359. package/dist/components/Tabs/Tabs.cjs.map +0 -1
  360. package/dist/components/Tabs/Tabs.d.ts +0 -19
  361. package/dist/components/Tabs/Tabs.js +0 -96
  362. package/dist/components/Tabs/Tabs.js.map +0 -1
  363. package/dist/components/Tabs/index.d.ts +0 -2
  364. package/dist/components/Tabs.d.ts +0 -2
  365. package/dist/components/Timeline/Timeline.cjs.map +0 -1
  366. package/dist/components/Timeline/Timeline.d.ts +0 -13
  367. package/dist/components/Timeline/Timeline.js.map +0 -1
  368. package/dist/components/Timeline/index.d.ts +0 -2
  369. package/dist/components/Timeline.d.ts +0 -2
  370. package/dist/index.cjs +0 -2
  371. package/dist/index.cjs.map +0 -1
  372. package/dist/index.d.ts +0 -0
  373. package/dist/index.js +0 -2
  374. package/dist/index.js.map +0 -1
  375. package/dist/styles.css +0 -112
  376. package/rollup.config.cjs +0 -87
  377. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -254
  378. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -387
  379. package/src/components/Autocomplete/Autocomplete.tsx +0 -139
  380. package/src/components/Autocomplete/index.ts +0 -1
  381. package/src/components/Avatar/Avatar.stories.tsx +0 -54
  382. package/src/components/Avatar/Avatar.tsx +0 -143
  383. package/src/components/Avatar/index.ts +0 -1
  384. package/src/components/Button/Button.definition.ts +0 -97
  385. package/src/components/Button/Button.stories.tsx +0 -285
  386. package/src/components/Button/Button.tsx +0 -67
  387. package/src/components/Button/index.ts +0 -1
  388. package/src/components/Card/Card.definition.ts +0 -5
  389. package/src/components/Card/Card.stories.tsx +0 -32
  390. package/src/components/Card/Card.tsx +0 -44
  391. package/src/components/Card/index.ts +0 -1
  392. package/src/components/Chip/Chip.definitions.ts +0 -167
  393. package/src/components/Chip/Chip.stories.tsx +0 -265
  394. package/src/components/Chip/Chip.tsx +0 -61
  395. package/src/components/Chip/index.ts +0 -1
  396. package/src/components/Column/Column.tsx +0 -29
  397. package/src/components/Column/index.ts +0 -1
  398. package/src/components/DatePicker/DatePicker.definitions.ts +0 -205
  399. package/src/components/DatePicker/DatePicker.stories.tsx +0 -282
  400. package/src/components/DatePicker/DatePicker.tsx +0 -165
  401. package/src/components/DatePicker/index.ts +0 -1
  402. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  403. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  404. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  405. package/src/components/DateRangePicker/index.ts +0 -1
  406. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -232
  407. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -390
  408. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -191
  409. package/src/components/DateTimePicker/index.ts +0 -1
  410. package/src/components/Flyout/Flyout.stories.tsx +0 -274
  411. package/src/components/Flyout/Flyout.tsx +0 -122
  412. package/src/components/Flyout/index.ts +0 -1
  413. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  414. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  415. package/src/components/Gallery/Gallery.tsx +0 -118
  416. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  417. package/src/components/Gallery/GalleryMain.tsx +0 -84
  418. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  419. package/src/components/Gallery/index.ts +0 -1
  420. package/src/components/Icon/Icon.stories.tsx +0 -54
  421. package/src/components/Icon/Icon.tsx +0 -94
  422. package/src/components/Icon/index.ts +0 -2
  423. package/src/components/Input/Input.definitions.ts +0 -252
  424. package/src/components/Input/Input.stories.tsx +0 -387
  425. package/src/components/Input/Input.tsx +0 -186
  426. package/src/components/Input/index.ts +0 -1
  427. package/src/components/InputGroup/InputGroup.stories.tsx +0 -136
  428. package/src/components/InputGroup/InputGroup.tsx +0 -136
  429. package/src/components/InputGroup/index.ts +0 -1
  430. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  431. package/src/components/MenuButton/MenuButton.tsx +0 -100
  432. package/src/components/MenuButton/index.ts +0 -1
  433. package/src/components/Modal/Modal.stories.tsx +0 -293
  434. package/src/components/Modal/Modal.tsx +0 -173
  435. package/src/components/Modal/ModalBody.tsx +0 -16
  436. package/src/components/Modal/ModalFooter.tsx +0 -61
  437. package/src/components/Modal/ModalHeader.tsx +0 -18
  438. package/src/components/Modal/index.ts +0 -1
  439. package/src/components/Select/Select.definitions.ts +0 -488
  440. package/src/components/Select/Select.stories.tsx +0 -569
  441. package/src/components/Select/Select.tsx +0 -468
  442. package/src/components/Select/index.ts +0 -1
  443. package/src/components/Stat/Stat.stories.tsx +0 -85
  444. package/src/components/Stat/Stat.tsx +0 -117
  445. package/src/components/Stat/index.ts +0 -2
  446. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  447. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  448. package/src/components/StatusMessage/index.ts +0 -2
  449. package/src/components/Stepper/Step.tsx +0 -21
  450. package/src/components/Stepper/Stepper.definition.ts +0 -75
  451. package/src/components/Stepper/Stepper.stories.tsx +0 -122
  452. package/src/components/Stepper/Stepper.tsx +0 -59
  453. package/src/components/Stepper/index.ts +0 -2
  454. package/src/components/Table/EmptyTable.png +0 -0
  455. package/src/components/Table/Table.definition.ts +0 -580
  456. package/src/components/Table/Table.stories.tsx +0 -853
  457. package/src/components/Table/Table.tsx +0 -495
  458. package/src/components/Table/data.ts +0 -134
  459. package/src/components/Table/exportsUtils.ts +0 -195
  460. package/src/components/Table/index.ts +0 -3
  461. package/src/components/Table/types.ts +0 -34
  462. package/src/components/Tabs/Tab.definition.ts +0 -53
  463. package/src/components/Tabs/Tab.tsx +0 -19
  464. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  465. package/src/components/Tabs/Tabs.tsx +0 -99
  466. package/src/components/Tabs/_tabUtils.tsx +0 -4
  467. package/src/components/Tabs/index.ts +0 -2
  468. package/src/components/Timeline/Timeline.definition.ts +0 -43
  469. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  470. package/src/components/Timeline/Timeline.tsx +0 -49
  471. package/src/components/Timeline/TimelineItem.tsx +0 -31
  472. package/src/components/Timeline/index.ts +0 -2
  473. package/src/components/Tooltip/Tooltip.stories.tsx +0 -117
  474. package/src/components/Tooltip/Tooltip.tsx +0 -58
  475. package/src/components/Tooltip/index.ts +0 -1
  476. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  477. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  478. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  479. package/src/hooks/ClipBoard/index.ts +0 -1
  480. package/src/index.ts +0 -1
  481. package/src/styles.css +0 -3
  482. package/tailwind.config.js +0 -10
  483. package/tsconfig.json +0 -48
  484. package/tsup.config.js +0 -41
  485. package/vite.config.js +0 -132
  486. package/vitest.config.ts +0 -35
  487. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  488. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  489. /package/{Readme.md → README.md} +0 -0
  490. /package/{dist/components → components}/Avatar.d.ts +0 -0
  491. /package/{dist/components → components}/Button/Button.cjs +0 -0
  492. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  493. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  494. /package/{dist/components → components}/Button/Button.js +0 -0
  495. /package/{dist/components → components}/Button/Button.js.map +0 -0
  496. /package/{dist/components → components}/Button.d.ts +0 -0
  497. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  498. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  499. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  500. /package/{dist/components → components}/Column/Column.cjs +0 -0
  501. /package/{dist/components → components}/Column/Column.cjs.map +0 -0
  502. /package/{dist/components → components}/Column/Column.d.ts +0 -0
  503. /package/{dist/components → components}/Column/Column.js +0 -0
  504. /package/{dist/components → components}/Column/Column.js.map +0 -0
  505. /package/{dist/components → components}/Column/index.d.ts +0 -0
  506. /package/{dist/components → components}/Column.d.ts +0 -0
  507. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
  508. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  509. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  510. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  511. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
  512. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
  513. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  514. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  515. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  516. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  517. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  518. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  519. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  520. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  521. /package/{dist/components → components}/Flyout.d.ts +0 -0
  522. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  523. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  524. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  525. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  526. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  527. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  528. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  529. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  530. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  531. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  532. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  533. /package/{dist/components → components}/Table/Table.cjs +0 -0
  534. /package/{dist/components → components}/Table/Table.cjs.map +0 -0
  535. /package/{dist/components → components}/Table/Table.d.ts +0 -0
  536. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  537. /package/{dist/components → components}/Table/Table.js +0 -0
  538. /package/{dist/components → components}/Table/Table.js.map +0 -0
  539. /package/{dist/components → components}/Table/data.d.ts +0 -0
  540. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  541. /package/{dist/components → components}/Table/index.d.ts +0 -0
  542. /package/{dist/components → components}/Table/types.d.ts +0 -0
  543. /package/{dist/components → components}/Table.d.ts +0 -0
  544. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  545. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  546. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  547. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  548. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  549. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  550. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  551. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  552. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  553. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  554. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  555. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  556. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  557. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  558. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  559. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  560. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  561. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  562. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  563. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  564. /package/{dist/index.css → index.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../../../src/components/Drawer/DrawerContext.ts","../../../src/components/Drawer/Drawer.sx.ts","../../../src/components/Drawer/Drawer.tsx","../../../src/components/Drawer/DrawerItem.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del Drawer. Permite que los sub-componentes (DrawerItem,\n * DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de\n * recibirlo por props explícitas.\n */\nexport interface DrawerContextValue {\n /** Si el drawer está en modo mini (solo iconos). */\n collapsed: boolean;\n /** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */\n width: number;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n\n/**\n * Hook para leer el estado del drawer desde cualquier sub-componente. Si se\n * llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)\n * para que los items renderizados sueltos no exploten.\n */\nexport function useDrawerContext(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (ctx) return ctx;\n return { collapsed: false, width: 260 };\n}\n","import { alpha, type SxProps, type Theme } from '@mui/material/styles';\n\nexport interface BuildDrawerSxArgs {\n /** Ancho actual del drawer (expanded o collapsed). */\n width: number;\n /** Duración de la transición de ancho en ms. */\n transitionDuration?: number;\n}\n\n/**\n * sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper\n * interno. Los estilos visuales del paper (background, border) se dejan en\n * manos del theme / preset.\n */\nexport function buildDrawerSx({\n width,\n transitionDuration = 200,\n}: BuildDrawerSxArgs): SxProps<Theme> {\n return {\n width,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n overflowX: 'hidden',\n transition: (theme) =>\n theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: transitionDuration,\n }),\n },\n };\n}\n\nexport interface BuildDrawerItemSxArgs {\n collapsed: boolean;\n active?: boolean;\n danger?: boolean;\n}\n\n/**\n * sx para un item del drawer. Centra el icono cuando está colapsado y\n * tiñe el fondo cuando el item está activo.\n */\nexport function buildDrawerItemSx({\n collapsed,\n active,\n danger,\n}: BuildDrawerItemSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: 44,\n px: collapsed ? 1 : 2,\n py: 1,\n mx: 1,\n my: 0.25,\n borderRadius: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: collapsed ? 'center' : 'flex-start',\n gap: collapsed ? 0 : 1.5,\n cursor: 'pointer',\n color: danger\n ? theme.palette.error.main\n : active\n ? theme.palette.primary.main\n : theme.palette.text.primary,\n backgroundColor: active\n ? theme.palette.action.selected\n : 'transparent',\n transition: theme.transitions.create(\n ['background-color', 'color', 'padding'],\n { duration: 150 },\n ),\n '&:hover': {\n backgroundColor: danger\n ? alpha(theme.palette.error.main, 0.08)\n : theme.palette.action.hover,\n },\n '& .drawer-item__icon': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n minWidth: 24,\n },\n '& .drawer-item__label': {\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n opacity: collapsed ? 0 : 1,\n width: collapsed ? 0 : 'auto',\n transition: theme.transitions.create(['opacity', 'width'], {\n duration: collapsed ? 100 : 200,\n }),\n },\n });\n}\n","import { useMemo, type ReactNode } from 'react';\nimport {\n Drawer as MuiDrawer,\n IconButton,\n Box,\n type DrawerProps as MuiDrawerProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nimport { DrawerContext } from './DrawerContext';\nimport { buildDrawerSx } from './Drawer.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos públicos ──────────────────────────────────────────────────────\nexport type DrawerVariant = 'permanent' | 'persistent' | 'temporary';\nexport type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps {\n /** Contenido del drawer (típicamente `<DrawerItem>`s). */\n children?: ReactNode;\n /**\n * Variante del drawer:\n * - `permanent` (default): siempre visible en desktop, soporta collapsed (mini).\n * - `persistent`: se oculta/muestra, empuja el contenido principal.\n * - `temporary`: flotante con backdrop (típico móvil).\n */\n variant?: DrawerVariant;\n /** Lado del viewport. Default: `'left'`. */\n anchor?: DrawerAnchor;\n /**\n * Estado mini (solo iconos). Solo se aplica con `variant=\"permanent\"` o\n * `\"persistent\"`. Si no se provee, el drawer está siempre expandido.\n */\n collapsed?: boolean;\n /** Callback del botón de toggle (chevron). */\n onToggleCollapse?: () => void;\n /** Estado abierto/cerrado (aplica a `temporary` y `persistent`). */\n open?: boolean;\n /** Callback de cierre (backdrop o ESC en temporary). */\n onClose?: MuiDrawerProps['onClose'];\n /** Ancho en estado expandido. Default: 260. */\n expandedWidth?: number;\n /** Ancho en estado colapsado (solo iconos). Default: 72. */\n collapsedWidth?: number;\n /** Muestra el botón chevron para toggle collapsed. Default: true si `onToggleCollapse` está definido. */\n showCollapseButton?: boolean;\n /** Contenido del header (por encima de los items). Típicamente logo/brand. */\n header?: ReactNode;\n /**\n * Logo/brand que se muestra junto al botón de toggle.\n * - Expandido: logo a la izquierda, toggle a la derecha en la misma fila.\n * - Colapsado: logo arriba centrado, toggle debajo centrado (stack vertical).\n * Siempre visible (a diferencia de `header`, que se oculta al colapsar).\n */\n logo?: ReactNode;\n /** Contenido del footer (por debajo de los items). Típicamente user profile. */\n footer?: ReactNode;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Drawer`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx aplicado al Drawer (root). Se mergea después del preset. */\n sx?: SxProps<Theme>;\n /** sx aplicado al Paper interno. */\n paperSx?: SxProps<Theme>;\n className?: string;\n}\n\nexport function Drawer({\n children,\n variant = 'permanent',\n anchor = 'left',\n collapsed = false,\n onToggleCollapse,\n open,\n onClose,\n expandedWidth = 260,\n collapsedWidth = 72,\n showCollapseButton,\n header,\n logo,\n footer,\n preset,\n sx,\n paperSx,\n className,\n}: DrawerProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('Drawer', preset, theme);\n\n // El mini-variant solo tiene sentido en permanent / persistent.\n const supportsCollapsed = variant !== 'temporary';\n const effectiveWidth =\n supportsCollapsed && collapsed ? collapsedWidth : expandedWidth;\n\n const contextValue = useMemo(\n () => ({\n collapsed: supportsCollapsed && collapsed,\n width: effectiveWidth,\n }),\n [supportsCollapsed, collapsed, effectiveWidth],\n );\n\n const rootSx: SxProps<Theme> = [\n buildDrawerSx({ width: effectiveWidth }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const shouldShowToggle =\n showCollapseButton ?? (supportsCollapsed && !!onToggleCollapse);\n\n const openProp =\n variant === 'permanent'\n ? true\n : open !== undefined\n ? open\n : false;\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <MuiDrawer\n variant={variant}\n anchor={anchor}\n open={openProp}\n onClose={onClose}\n className={className}\n sx={rootSx}\n slotProps={{\n paper: {\n sx: paperSx,\n },\n }}\n >\n {(logo || shouldShowToggle) && (\n <Box\n sx={{\n display: 'flex',\n flexDirection: contextValue.collapsed ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: contextValue.collapsed\n ? 'center'\n : logo\n ? 'space-between'\n : 'flex-end',\n gap: contextValue.collapsed ? 0.5 : 0,\n px: contextValue.collapsed ? 1 : 2,\n py: 1,\n minHeight: 64,\n flexShrink: 0,\n }}\n >\n {logo && (\n <Box sx={{ display: 'flex', alignItems: 'center', minWidth: 0 }}>\n {logo}\n </Box>\n )}\n {shouldShowToggle && (\n <IconButton\n size=\"small\"\n onClick={onToggleCollapse}\n aria-label={collapsed ? 'Expandir menú' : 'Colapsar menú'}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n )}\n </Box>\n )}\n\n {header && !contextValue.collapsed && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 1.5,\n minHeight: 56,\n flexShrink: 0,\n }}\n >\n <Box sx={{ flex: 1, minWidth: 0 }}>{header}</Box>\n </Box>\n )}\n\n <Box\n component=\"nav\"\n sx={{\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n py: 1,\n }}\n >\n {children}\n </Box>\n\n {footer && (\n <Box\n sx={{\n flexShrink: 0,\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n p: contextValue.collapsed ? 1 : 1.5,\n display: 'flex',\n justifyContent: contextValue.collapsed\n ? 'center'\n : 'flex-start',\n }}\n >\n {footer}\n </Box>\n )}\n </MuiDrawer>\n </DrawerContext.Provider>\n );\n}\n\nexport default Drawer;\n","import React, { type ReactNode, type MouseEvent } from 'react';\nimport { Box, Tooltip, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useDrawerContext } from './DrawerContext';\nimport { buildDrawerItemSx } from './Drawer.sx';\n\nexport interface DrawerItemProps {\n /** Icono del item. Se muestra siempre (expanded y collapsed). */\n icon?: ReactNode;\n /** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */\n label: ReactNode;\n /**\n * Texto del tooltip en modo collapsed. Si no se provee y `label` es string,\n * se usa `label`. Necesario cuando `label` es un ReactNode complejo.\n */\n tooltipText?: string;\n /** Handler de click. */\n onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n /** Marca el item como activo (destaca color y fondo). */\n active?: boolean;\n /** Marca el item como \"destructivo\" (p.ej. cerrar sesión): color error. */\n danger?: boolean;\n /** Deshabilita click + bajo opacidad. */\n disabled?: boolean;\n /** Contenido adicional a la derecha del label (badge, count, chevron). */\n endAdornment?: ReactNode;\n /** sx override del consumer, se mergea al final. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Item de un Drawer de shared-library. Lee el estado `collapsed` del\n * DrawerContext para adaptar layout y mostrar tooltip en modo mini.\n *\n * Uso típico:\n * ```tsx\n * <Drawer collapsed={collapsed} onToggleCollapse={toggle}>\n * <DrawerItem icon={<HomeIcon />} label=\"Inicio\" active />\n * <DrawerItem icon={<UserIcon />} label=\"Perfil\" />\n * </Drawer>\n * ```\n */\nexport function DrawerItem({\n icon,\n label,\n tooltipText,\n onClick,\n active = false,\n danger = false,\n disabled = false,\n endAdornment,\n sx,\n className,\n}: DrawerItemProps) {\n const { collapsed } = useDrawerContext();\n\n const baseSx = buildDrawerItemSx({ collapsed, active, danger });\n\n const mergedSx: SxProps<Theme> = [\n baseSx,\n disabled && { pointerEvents: 'none', opacity: 0.5 },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ].filter(Boolean) as SxProps<Theme>;\n\n const content = (\n <Box\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onClick?.(event as unknown as MouseEvent<HTMLDivElement>);\n }\n }}\n className={className}\n sx={mergedSx}\n >\n {icon && (\n <Box className=\"drawer-item__icon\" component=\"span\">\n {icon}\n </Box>\n )}\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"drawer-item__label\"\n sx={{ fontWeight: active ? 600 : 400 }}\n >\n {label}\n </Typography>\n {!collapsed && endAdornment && (\n <Box component=\"span\" sx={{ flexShrink: 0, ml: 'auto' }}>\n {endAdornment}\n </Box>\n )}\n </Box>\n );\n\n // Cuando está colapsado, envolvemos en tooltip para revelar el label al hover.\n // Prioriza `tooltipText` explícito; si no, cae al `label` si es string.\n const resolvedTooltip =\n tooltipText ?? (typeof label === 'string' ? label : undefined);\n\n if (collapsed && resolvedTooltip) {\n return (\n <Tooltip title={resolvedTooltip} placement=\"right\" arrow>\n {content}\n </Tooltip>\n );\n }\n\n return content;\n}\n\nexport default DrawerItem;\n"],"names":["MuiDrawer"],"mappings":";;;;;;;AAcO,MAAM,gBAAgB,cAAyC,IAAI;AAOnE,SAAS,mBAAuC;AACrD,QAAM,MAAM,WAAW,aAAa;AACpC,MAAI,IAAK,QAAO;AAChB,SAAO,EAAE,WAAW,OAAO,OAAO,IAAA;AACpC;ACXO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,qBAAqB;AACvB,GAAsC;AACpC,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY,CAAC,UACX,MAAM,YAAY,OAAO,SAAS;AAAA,MAChC,QAAQ,MAAM,YAAY,OAAO;AAAA,MACjC,UAAU;AAAA,IAAA,CACX;AAAA,IACH,sBAAsB;AAAA,MACpB;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY,CAAC,UACX,MAAM,YAAY,OAAO,SAAS;AAAA,QAChC,QAAQ,MAAM,YAAY,OAAO;AAAA,QACjC,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EACL;AAEJ;AAYO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAA0C;AACxC,SAAO,CAAC,WAAW;AAAA,IACjB,WAAW;AAAA,IACX,IAAI,YAAY,IAAI;AAAA,IACpB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,cAAc;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB,YAAY,WAAW;AAAA,IACvC,KAAK,YAAY,IAAI;AAAA,IACrB,QAAQ;AAAA,IACR,OAAO,SACH,MAAM,QAAQ,MAAM,OACpB,SACE,MAAM,QAAQ,QAAQ,OACtB,MAAM,QAAQ,KAAK;AAAA,IACzB,iBAAiB,SACb,MAAM,QAAQ,OAAO,WACrB;AAAA,IACJ,YAAY,MAAM,YAAY;AAAA,MAC5B,CAAC,oBAAoB,SAAS,SAAS;AAAA,MACvC,EAAE,UAAU,IAAA;AAAA,IAAI;AAAA,IAElB,WAAW;AAAA,MACT,iBAAiB,SACb,MAAM,MAAM,QAAQ,MAAM,MAAM,IAAI,IACpC,MAAM,QAAQ,OAAO;AAAA,IAAA;AAAA,IAE3B,wBAAwB;AAAA,MACtB,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA;AAAA,IAEZ,yBAAyB;AAAA,MACvB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,SAAS,YAAY,IAAI;AAAA,MACzB,OAAO,YAAY,IAAI;AAAA,MACvB,YAAY,MAAM,YAAY,OAAO,CAAC,WAAW,OAAO,GAAG;AAAA,QACzD,UAAU,YAAY,MAAM;AAAA,MAAA,CAC7B;AAAA,IAAA;AAAA,EACH;AAEJ;AC9BO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgB;AACd,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,UAAU,QAAQ,KAAK;AAGtD,QAAM,oBAAoB,YAAY;AACtC,QAAM,iBACJ,qBAAqB,YAAY,iBAAiB;AAEpD,QAAM,eAAe;AAAA,IACnB,OAAO;AAAA,MACL,WAAW,qBAAqB;AAAA,MAChC,OAAO;AAAA,IAAA;AAAA,IAET,CAAC,mBAAmB,WAAW,cAAc;AAAA,EAAA;AAG/C,QAAM,SAAyB;AAAA,IAC7B,cAAc,EAAE,OAAO,gBAAgB;AAAA,IACvC,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,mBACJ,kDAAuB,qBAAqB,CAAC,CAAC;AAEhD,QAAM,WACJ,YAAY,cACR,OACA,SAAS,SACP,OACA;AAER,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,UAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ,WAAW;AAAA,QACT,OAAO;AAAA,UACL,IAAI;AAAA,QAAA;AAAA,MACN;AAAA,MAGA,UAAA;AAAA,SAAA,QAAQ,qBACR;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,eAAe,aAAa,YAAY,WAAW;AAAA,cACnD,YAAY;AAAA,cACZ,gBAAgB,aAAa,YACzB,WACA,OACE,kBACA;AAAA,cACN,KAAK,aAAa,YAAY,MAAM;AAAA,cACpC,IAAI,aAAa,YAAY,IAAI;AAAA,cACjC,IAAI;AAAA,cACJ,WAAW;AAAA,cACX,YAAY;AAAA,YAAA;AAAA,YAGb,UAAA;AAAA,cAAA,QACC,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,UAAU,EAAA,GACzD,UAAA,KAAA,CACH;AAAA,cAED,oBACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAY,YAAY,kBAAkB;AAAA,kBAEzC,UAAA,YAAY,oBAAC,kBAAA,CAAA,CAAiB,wBAAM,iBAAA,CAAA,CAAgB;AAAA,gBAAA;AAAA,cAAA;AAAA,YACvD;AAAA,UAAA;AAAA,QAAA;AAAA,QAKL,UAAU,CAAC,aAAa,aACvB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,WAAW;AAAA,cACX,YAAY;AAAA,YAAA;AAAA,YAGd,UAAA,oBAAC,OAAI,IAAI,EAAE,MAAM,GAAG,UAAU,KAAM,UAAA,OAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAI/C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,MAAM;AAAA,cACN,WAAW;AAAA,cACX,WAAW;AAAA,cACX,IAAI;AAAA,YAAA;AAAA,YAGL;AAAA,UAAA;AAAA,QAAA;AAAA,QAGF,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,WAAW,CAAC,MAAM,aAAa,EAAE,QAAQ,OAAO;AAAA,cAChD,GAAG,aAAa,YAAY,IAAI;AAAA,cAChC,SAAS;AAAA,cACT,gBAAgB,aAAa,YACzB,WACA;AAAA,YAAA;AAAA,YAGL,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;ACjLO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,EAAE,UAAA,IAAc,iBAAA;AAEtB,QAAM,SAAS,kBAAkB,EAAE,WAAW,QAAQ,QAAQ;AAE9D,QAAM,WAA2B;AAAA,IAC/B;AAAA,IACA,YAAY,EAAE,eAAe,QAAQ,SAAS,IAAA;AAAA,IAC9C,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC,EAC1C,OAAO,OAAO;AAEhB,QAAM,UACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAU,WAAW,KAAK;AAAA,MAC1B,iBAAe;AAAA,MACf,SAAS,WAAW,SAAY;AAAA,MAChC,WAAW,CAAC,UAAU;AACpB,YAAI,SAAU;AACd,YAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,gBAAM,eAAA;AACN,6CAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MAEH,UAAA;AAAA,QAAA,4BACE,KAAA,EAAI,WAAU,qBAAoB,WAAU,QAC1C,UAAA,MACH;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,IAAI,EAAE,YAAY,SAAS,MAAM,IAAA;AAAA,YAEhC,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,CAAC,aAAa,gBACb,oBAAC,OAAI,WAAU,QAAO,IAAI,EAAE,YAAY,GAAG,IAAI,OAAA,GAC5C,UAAA,aAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAON,QAAM,kBACJ,oCAAgB,OAAO,UAAU,WAAW,QAAQ;AAEtD,MAAI,aAAa,iBAAiB;AAChC,WACE,oBAAC,WAAQ,OAAO,iBAAiB,WAAU,SAAQ,OAAK,MACrD,UAAA,QAAA,CACH;AAAA,EAEJ;AAEA,SAAO;AACT;"}
@@ -0,0 +1,23 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ export interface BuildDrawerSxArgs {
3
+ /** Ancho actual del drawer (expanded o collapsed). */
4
+ width: number;
5
+ /** Duración de la transición de ancho en ms. */
6
+ transitionDuration?: number;
7
+ }
8
+ /**
9
+ * sx aplicado al root del MuiDrawer. Controla el ancho animado y el paper
10
+ * interno. Los estilos visuales del paper (background, border) se dejan en
11
+ * manos del theme / preset.
12
+ */
13
+ export declare function buildDrawerSx({ width, transitionDuration, }: BuildDrawerSxArgs): SxProps<Theme>;
14
+ export interface BuildDrawerItemSxArgs {
15
+ collapsed: boolean;
16
+ active?: boolean;
17
+ danger?: boolean;
18
+ }
19
+ /**
20
+ * sx para un item del drawer. Centra el icono cuando está colapsado y
21
+ * tiñe el fondo cuando el item está activo.
22
+ */
23
+ export declare function buildDrawerItemSx({ collapsed, active, danger, }: BuildDrawerItemSxArgs): SxProps<Theme>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Context interno del Drawer. Permite que los sub-componentes (DrawerItem,
3
+ * DrawerSection, etc.) reaccionen al estado `collapsed` sin necesidad de
4
+ * recibirlo por props explícitas.
5
+ */
6
+ export interface DrawerContextValue {
7
+ /** Si el drawer está en modo mini (solo iconos). */
8
+ collapsed: boolean;
9
+ /** Ancho actual del drawer (útil para sub-componentes que necesiten layout). */
10
+ width: number;
11
+ }
12
+ export declare const DrawerContext: import('react').Context<DrawerContextValue | null>;
13
+ /**
14
+ * Hook para leer el estado del drawer desde cualquier sub-componente. Si se
15
+ * llama fuera de un `<Drawer>`, devuelve valores por defecto (collapsed=false)
16
+ * para que los items renderizados sueltos no exploten.
17
+ */
18
+ export declare function useDrawerContext(): DrawerContextValue;
@@ -0,0 +1,40 @@
1
+ import { ReactNode, MouseEvent } from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+ export interface DrawerItemProps {
4
+ /** Icono del item. Se muestra siempre (expanded y collapsed). */
5
+ icon?: ReactNode;
6
+ /** Texto del item. Se oculta cuando el drawer está colapsado (muestra tooltip). */
7
+ label: ReactNode;
8
+ /**
9
+ * Texto del tooltip en modo collapsed. Si no se provee y `label` es string,
10
+ * se usa `label`. Necesario cuando `label` es un ReactNode complejo.
11
+ */
12
+ tooltipText?: string;
13
+ /** Handler de click. */
14
+ onClick?: (event: MouseEvent<HTMLDivElement>) => void;
15
+ /** Marca el item como activo (destaca color y fondo). */
16
+ active?: boolean;
17
+ /** Marca el item como "destructivo" (p.ej. cerrar sesión): color error. */
18
+ danger?: boolean;
19
+ /** Deshabilita click + bajo opacidad. */
20
+ disabled?: boolean;
21
+ /** Contenido adicional a la derecha del label (badge, count, chevron). */
22
+ endAdornment?: ReactNode;
23
+ /** sx override del consumer, se mergea al final. */
24
+ sx?: SxProps<Theme>;
25
+ className?: string;
26
+ }
27
+ /**
28
+ * Item de un Drawer de shared-library. Lee el estado `collapsed` del
29
+ * DrawerContext para adaptar layout y mostrar tooltip en modo mini.
30
+ *
31
+ * Uso típico:
32
+ * ```tsx
33
+ * <Drawer collapsed={collapsed} onToggleCollapse={toggle}>
34
+ * <DrawerItem icon={<HomeIcon />} label="Inicio" active />
35
+ * <DrawerItem icon={<UserIcon />} label="Perfil" />
36
+ * </Drawer>
37
+ * ```
38
+ */
39
+ export declare function DrawerItem({ icon, label, tooltipText, onClick, active, danger, disabled, endAdornment, sx, className, }: DrawerItemProps): import("react/jsx-runtime").JSX.Element;
40
+ export default DrawerItem;
@@ -0,0 +1,6 @@
1
+ export { Drawer, default } from './Drawer';
2
+ export { DrawerItem } from './DrawerItem';
3
+ export { useDrawerContext } from './DrawerContext';
4
+ export type { DrawerProps, DrawerVariant, DrawerAnchor, } from './Drawer';
5
+ export type { DrawerItemProps } from './DrawerItem';
6
+ export type { DrawerContextValue } from './DrawerContext';
@@ -0,0 +1,6 @@
1
+ export * from './Drawer/index'
2
+ export {}
3
+ import _default from './Drawer/index'
4
+ export default _default
5
+ export * from './Drawer/index'
6
+ export {}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const material = require("@mui/material");
6
+ const styles = require("@mui/material/styles");
6
7
  const KeyboardArrowUpIcon = require("@mui/icons-material/KeyboardArrowUp");
7
8
  const KeyboardArrowDownIcon = require("@mui/icons-material/KeyboardArrowDown");
8
9
  const KeyboardArrowLeftIcon = require("@mui/icons-material/KeyboardArrowLeft");
@@ -17,14 +18,15 @@ const RotateRightIcon = require("@mui/icons-material/RotateRight");
17
18
  const RestartAltIcon = require("@mui/icons-material/RestartAlt");
18
19
  const CloseIcon = require("@mui/icons-material/Close");
19
20
  const Button = require("../../Button-C17mExpd.cjs");
21
+ const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
20
22
  const GalleryThumbnails = ({
21
23
  items,
22
24
  selectedIdx,
23
25
  onSelect,
24
26
  thumbStartIdx,
25
- THUMB_VISIBLE_COUNT,
26
- handleThumbUp,
27
- handleThumbDown,
27
+ visibleCount,
28
+ onThumbUp,
29
+ onThumbDown,
28
30
  isMobile
29
31
  }) => /* @__PURE__ */ jsxRuntime.jsxs(
30
32
  material.Box,
@@ -36,7 +38,7 @@ const GalleryThumbnails = ({
36
38
  minWidth: 70,
37
39
  width: 70,
38
40
  borderRadius: 1,
39
- bgcolor: "#f8f9fa",
41
+ bgcolor: "grey.100",
40
42
  boxSizing: "border-box",
41
43
  py: 1,
42
44
  mb: isMobile ? 2 : 0,
@@ -47,37 +49,55 @@ const GalleryThumbnails = ({
47
49
  material.IconButton,
48
50
  {
49
51
  size: "small",
50
- onClick: handleThumbUp,
52
+ onClick: onThumbUp,
51
53
  disabled: thumbStartIdx === 0,
54
+ "aria-label": isMobile ? "Miniatura anterior" : "Miniaturas arriba",
52
55
  sx: { mb: isMobile ? 0 : 1, mr: isMobile ? 1 : 0 },
53
56
  children: isMobile ? /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowLeftIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowUpIcon, {})
54
57
  }
55
58
  ),
56
- items.slice(thumbStartIdx, thumbStartIdx + THUMB_VISIBLE_COUNT).map((item, idx) => {
59
+ items.slice(thumbStartIdx, thumbStartIdx + visibleCount).map((item, idx) => {
60
+ var _a;
57
61
  const realIdx = thumbStartIdx + idx;
62
+ const isSelected = selectedIdx === realIdx;
63
+ const handleSelect = () => onSelect(realIdx);
58
64
  return /* @__PURE__ */ jsxRuntime.jsx(
59
65
  material.Box,
60
66
  {
61
- onClick: () => onSelect(realIdx),
67
+ role: "button",
68
+ tabIndex: 0,
69
+ "aria-label": item.title,
70
+ "aria-pressed": isSelected,
71
+ onClick: handleSelect,
72
+ onKeyDown: (e) => {
73
+ if (e.key === "Enter" || e.key === " ") {
74
+ e.preventDefault();
75
+ handleSelect();
76
+ }
77
+ },
62
78
  sx: {
63
79
  cursor: "pointer",
64
80
  width: 60,
65
81
  height: 60,
66
82
  borderRadius: 1,
67
- border: selectedIdx === realIdx ? "2px solid #1976d2" : "2px solid #eee",
83
+ border: (theme) => `2px solid ${isSelected ? theme.palette.primary.main : theme.palette.divider}`,
68
84
  overflow: "hidden",
69
- bgcolor: "#eee",
85
+ bgcolor: "action.hover",
70
86
  display: "flex",
71
87
  alignItems: "center",
72
88
  justifyContent: "center",
73
89
  flexShrink: 0,
74
- m: isMobile ? "0 4px" : "4px 0"
90
+ m: isMobile ? "0 4px" : "4px 0",
91
+ outline: "none",
92
+ "&:focus-visible": {
93
+ boxShadow: (theme) => `0 0 0 2px ${theme.palette.primary.main}`
94
+ }
75
95
  },
76
96
  children: /* @__PURE__ */ jsxRuntime.jsx(
77
97
  material.Box,
78
98
  {
79
99
  component: "img",
80
- src: item.thumbnail,
100
+ src: (_a = item.thumbnail) != null ? _a : item.url,
81
101
  alt: item.title,
82
102
  sx: {
83
103
  width: "100%",
@@ -87,15 +107,16 @@ const GalleryThumbnails = ({
87
107
  }
88
108
  )
89
109
  },
90
- realIdx
110
+ `${realIdx}-${item.url}`
91
111
  );
92
112
  }),
93
113
  /* @__PURE__ */ jsxRuntime.jsx(
94
114
  material.IconButton,
95
115
  {
96
116
  size: "small",
97
- onClick: handleThumbDown,
98
- disabled: thumbStartIdx + THUMB_VISIBLE_COUNT >= items.length,
117
+ onClick: onThumbDown,
118
+ disabled: thumbStartIdx + visibleCount >= items.length,
119
+ "aria-label": isMobile ? "Miniatura siguiente" : "Miniaturas abajo",
99
120
  sx: { mt: isMobile ? 0 : 1, ml: isMobile ? 1 : 0 },
100
121
  children: isMobile ? /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowRightIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(KeyboardArrowDownIcon, {})
101
122
  }
@@ -115,7 +136,7 @@ const GalleryMain = ({ item, onOpenLightbox, isMobile }) => /* @__PURE__ */ jsxR
115
136
  alignItems: "center",
116
137
  position: "relative",
117
138
  borderRadius: 1,
118
- bgcolor: "#f8f9fa",
139
+ bgcolor: "grey.100",
119
140
  overflow: "hidden",
120
141
  mx: "auto"
121
142
  },
@@ -142,7 +163,7 @@ const GalleryMain = ({ item, onOpenLightbox, isMobile }) => /* @__PURE__ */ jsxR
142
163
  width: "100%",
143
164
  height: "100%",
144
165
  objectFit: "contain",
145
- bgcolor: "#000",
166
+ bgcolor: "common.black",
146
167
  borderRadius: 1
147
168
  }
148
169
  }
@@ -165,27 +186,35 @@ const GalleryMain = ({ item, onOpenLightbox, isMobile }) => /* @__PURE__ */ jsxR
165
186
  /* @__PURE__ */ jsxRuntime.jsx(
166
187
  material.IconButton,
167
188
  {
168
- onClick: onOpenLightbox,
189
+ onClick: (e) => {
190
+ e.stopPropagation();
191
+ onOpenLightbox();
192
+ },
193
+ "aria-label": "Abrir en pantalla completa",
169
194
  sx: {
170
195
  position: "absolute",
171
196
  top: 16,
172
197
  right: 16,
173
- bgcolor: "#1976d2",
174
- "&:hover": { bgcolor: "#1565c0" },
198
+ bgcolor: "primary.main",
199
+ color: "primary.contrastText",
200
+ "&:hover": { bgcolor: "primary.dark" },
175
201
  boxShadow: 2
176
202
  },
177
- children: /* @__PURE__ */ jsxRuntime.jsx(FullscreenIcon, { sx: { color: "#fff" } })
203
+ children: /* @__PURE__ */ jsxRuntime.jsx(FullscreenIcon, {})
178
204
  }
179
205
  )
180
206
  ]
181
207
  }
182
208
  );
209
+ const ZOOM_MIN = 0.25;
210
+ const ZOOM_MAX = 5;
211
+ const ZOOM_STEP = 0.25;
183
212
  const GalleryLightbox = ({
184
213
  open,
185
214
  onClose,
186
215
  item,
187
- handlePrev,
188
- handleNext,
216
+ onPrev,
217
+ onNext,
189
218
  zoom,
190
219
  setZoom,
191
220
  rotation,
@@ -204,11 +233,28 @@ const GalleryLightbox = ({
204
233
  gap: 2
205
234
  },
206
235
  children: [
207
- /* @__PURE__ */ jsxRuntime.jsxs(material.Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", width: "100%", children: [
208
- /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { onClick: handlePrev, children: /* @__PURE__ */ jsxRuntime.jsx(ArrowBackIosNewIcon, {}) }),
209
- /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "subtitle1", fontWeight: 600, sx: { flex: 1, textAlign: "center" }, children: item.title }),
210
- /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { onClick: handleNext, children: /* @__PURE__ */ jsxRuntime.jsx(ArrowForwardIosIcon, {}) })
211
- ] }),
236
+ /* @__PURE__ */ jsxRuntime.jsxs(
237
+ material.Stack,
238
+ {
239
+ direction: "row",
240
+ justifyContent: "space-between",
241
+ alignItems: "center",
242
+ width: "100%",
243
+ children: [
244
+ /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { onClick: onPrev, "aria-label": "Anterior", children: /* @__PURE__ */ jsxRuntime.jsx(ArrowBackIosNewIcon, {}) }),
245
+ /* @__PURE__ */ jsxRuntime.jsx(
246
+ material.Typography,
247
+ {
248
+ variant: "subtitle1",
249
+ fontWeight: 600,
250
+ sx: { flex: 1, textAlign: "center" },
251
+ children: item.title
252
+ }
253
+ ),
254
+ /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { onClick: onNext, "aria-label": "Siguiente", children: /* @__PURE__ */ jsxRuntime.jsx(ArrowForwardIosIcon, {}) })
255
+ ]
256
+ }
257
+ ),
212
258
  item.type === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
213
259
  material.Box,
214
260
  {
@@ -219,10 +265,10 @@ const GalleryLightbox = ({
219
265
  autoPlay: true,
220
266
  sx: {
221
267
  width: "100%",
222
- maxWidth: "900px",
268
+ maxWidth: 900,
223
269
  maxHeight: "70vh",
224
270
  objectFit: "contain",
225
- bgcolor: "#000",
271
+ bgcolor: "common.black",
226
272
  borderRadius: 1
227
273
  }
228
274
  },
@@ -237,7 +283,7 @@ const GalleryLightbox = ({
237
283
  transform: `scale(${zoom}) rotate(${rotation}deg)`,
238
284
  transition: "transform 0.2s ease",
239
285
  width: "100%",
240
- maxWidth: "900px",
286
+ maxWidth: 900,
241
287
  maxHeight: "70vh",
242
288
  objectFit: "contain",
243
289
  borderRadius: 1
@@ -264,7 +310,8 @@ const GalleryLightbox = ({
264
310
  {
265
311
  variant: "outlined",
266
312
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(ZoomInIcon, {}),
267
- onClick: () => setZoom((z) => z + 0.25),
313
+ onClick: () => setZoom((z) => Math.min(ZOOM_MAX, z + ZOOM_STEP)),
314
+ disabled: zoom >= ZOOM_MAX,
268
315
  children: "Zoom +"
269
316
  }
270
317
  ),
@@ -273,7 +320,8 @@ const GalleryLightbox = ({
273
320
  {
274
321
  variant: "outlined",
275
322
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(ZoomOutIcon, {}),
276
- onClick: () => setZoom((z) => Math.max(0.25, z - 0.25)),
323
+ onClick: () => setZoom((z) => Math.max(ZOOM_MIN, z - ZOOM_STEP)),
324
+ disabled: zoom <= ZOOM_MIN,
277
325
  children: "Zoom −"
278
326
  }
279
327
  )
@@ -283,7 +331,8 @@ const GalleryLightbox = ({
283
331
  Button.Button,
284
332
  {
285
333
  variant: "outlined",
286
- onClick: () => setRotation((r) => r - 90),
334
+ "aria-label": "Rotar a la izquierda",
335
+ onClick: () => setRotation((r) => (r - 90) % 360),
287
336
  children: /* @__PURE__ */ jsxRuntime.jsx(RotateLeftIcon, {})
288
337
  }
289
338
  ),
@@ -291,7 +340,8 @@ const GalleryLightbox = ({
291
340
  Button.Button,
292
341
  {
293
342
  variant: "outlined",
294
- onClick: () => setRotation((r) => r + 90),
343
+ "aria-label": "Rotar a la derecha",
344
+ onClick: () => setRotation((r) => (r + 90) % 360),
295
345
  children: /* @__PURE__ */ jsxRuntime.jsx(RotateRightIcon, {})
296
346
  }
297
347
  )
@@ -322,7 +372,14 @@ const GalleryLightbox = ({
322
372
  }
323
373
  )
324
374
  ] });
325
- const Gallery = ({ items, maxWidth = "600px" }) => {
375
+ const Gallery = ({
376
+ items,
377
+ maxWidth = "600px",
378
+ preset,
379
+ sx,
380
+ className
381
+ }) => {
382
+ const theme = styles.useTheme();
326
383
  const isMobile = material.useMediaQuery("(max-width:700px)");
327
384
  const [selectedIdx, setSelectedIdx] = React.useState(0);
328
385
  const [openLightbox, setOpenLightbox] = React.useState(false);
@@ -336,16 +393,14 @@ const Gallery = ({ items, maxWidth = "600px" }) => {
336
393
  };
337
394
  const handleThumbDown = () => {
338
395
  setThumbStartIdx(
339
- (prev) => Math.min(items.length - THUMB_VISIBLE_COUNT, prev + 1)
396
+ (prev) => Math.max(0, Math.min(items.length - THUMB_VISIBLE_COUNT, prev + 1))
340
397
  );
341
398
  };
342
399
  const handlePrev = () => {
343
400
  setSelectedIdx((idx) => idx === 0 ? items.length - 1 : idx - 1);
344
401
  };
345
402
  const handleNext = () => {
346
- setSelectedIdx(
347
- (idx) => idx === items.length - 1 ? 0 : idx + 1
348
- );
403
+ setSelectedIdx((idx) => idx === items.length - 1 ? 0 : idx + 1);
349
404
  };
350
405
  React.useEffect(() => {
351
406
  if (!openLightbox) return;
@@ -369,49 +424,69 @@ const Gallery = ({ items, maxWidth = "600px" }) => {
369
424
  var _a;
370
425
  if (openLightbox && ((_a = items[selectedIdx]) == null ? void 0 : _a.type) === "video" && videoRef.current) {
371
426
  videoRef.current.currentTime = 0;
372
- videoRef.current.play();
427
+ videoRef.current.play().catch(() => {
428
+ });
373
429
  }
374
430
  setZoom(1);
375
431
  setRotation(0);
376
432
  }, [openLightbox, selectedIdx, items]);
377
- return /* @__PURE__ */ jsxRuntime.jsxs(material.Stack, { direction: isMobile ? "column" : "row", gap: 3, sx: { maxWidth, mx: "auto", minHeight: 300 }, children: [
378
- /* @__PURE__ */ jsxRuntime.jsx(
379
- GalleryThumbnails,
380
- {
381
- items,
382
- selectedIdx,
383
- onSelect: setSelectedIdx,
384
- thumbStartIdx,
385
- THUMB_VISIBLE_COUNT,
386
- handleThumbUp,
387
- handleThumbDown,
388
- isMobile
389
- }
390
- ),
391
- /* @__PURE__ */ jsxRuntime.jsx(
392
- GalleryMain,
393
- {
394
- item: items[selectedIdx],
395
- onOpenLightbox: () => setOpenLightbox(true),
396
- isMobile
397
- }
398
- ),
399
- /* @__PURE__ */ jsxRuntime.jsx(
400
- GalleryLightbox,
401
- {
402
- open: openLightbox,
403
- onClose: () => setOpenLightbox(false),
404
- item: items[selectedIdx],
405
- handlePrev,
406
- handleNext,
407
- zoom,
408
- setZoom,
409
- rotation,
410
- setRotation,
411
- videoRef
412
- }
413
- )
414
- ] });
433
+ if (!items || items.length === 0) return null;
434
+ const safeSelectedIdx = Math.max(0, Math.min(selectedIdx, items.length - 1));
435
+ const currentItem = items[safeSelectedIdx];
436
+ const presetSx = resolvePreset.resolvePreset("Gallery", preset, theme);
437
+ const rootSx = [
438
+ { maxWidth, mx: "auto", minHeight: 300 },
439
+ ...presetSx ? [presetSx] : [],
440
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
441
+ ];
442
+ return /* @__PURE__ */ jsxRuntime.jsxs(
443
+ material.Stack,
444
+ {
445
+ direction: isMobile ? "column" : "row",
446
+ gap: 3,
447
+ className,
448
+ sx: rootSx,
449
+ children: [
450
+ /* @__PURE__ */ jsxRuntime.jsx(
451
+ GalleryThumbnails,
452
+ {
453
+ items,
454
+ selectedIdx: safeSelectedIdx,
455
+ onSelect: setSelectedIdx,
456
+ thumbStartIdx,
457
+ visibleCount: THUMB_VISIBLE_COUNT,
458
+ onThumbUp: handleThumbUp,
459
+ onThumbDown: handleThumbDown,
460
+ isMobile
461
+ }
462
+ ),
463
+ /* @__PURE__ */ jsxRuntime.jsx(
464
+ GalleryMain,
465
+ {
466
+ item: currentItem,
467
+ onOpenLightbox: () => setOpenLightbox(true),
468
+ isMobile
469
+ }
470
+ ),
471
+ /* @__PURE__ */ jsxRuntime.jsx(
472
+ GalleryLightbox,
473
+ {
474
+ open: openLightbox,
475
+ onClose: () => setOpenLightbox(false),
476
+ item: currentItem,
477
+ onPrev: handlePrev,
478
+ onNext: handleNext,
479
+ zoom,
480
+ setZoom,
481
+ rotation,
482
+ setRotation,
483
+ videoRef
484
+ }
485
+ )
486
+ ]
487
+ }
488
+ );
415
489
  };
416
490
  exports.Gallery = Gallery;
491
+ exports.default = Gallery;
417
492
  //# sourceMappingURL=Gallery.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gallery.cjs","sources":["../../../src/components/Gallery/GalleryThumbnails.tsx","../../../src/components/Gallery/GalleryMain.tsx","../../../src/components/Gallery/GalleryLightbox.tsx","../../../src/components/Gallery/Gallery.tsx"],"sourcesContent":["import { Box, IconButton } from '@mui/material';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\n\nimport type { GalleryItem } from './Gallery';\n\ninterface Props {\n items: GalleryItem[];\n selectedIdx: number;\n onSelect: (idx: number) => void;\n thumbStartIdx: number;\n visibleCount: number;\n onThumbUp: () => void;\n onThumbDown: () => void;\n isMobile: boolean;\n}\n\nexport const GalleryThumbnails = ({\n items,\n selectedIdx,\n onSelect,\n thumbStartIdx,\n visibleCount,\n onThumbUp,\n onThumbDown,\n isMobile,\n}: Props) => (\n <Box\n sx={{\n display: 'flex',\n flexDirection: isMobile ? 'row' : 'column',\n alignItems: 'center',\n minWidth: 70,\n width: 70,\n borderRadius: 1,\n bgcolor: 'grey.100',\n boxSizing: 'border-box',\n py: 1,\n mb: isMobile ? 2 : 0,\n px: isMobile ? 1 : 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={onThumbUp}\n disabled={thumbStartIdx === 0}\n aria-label={isMobile ? 'Miniatura anterior' : 'Miniaturas arriba'}\n sx={{ mb: isMobile ? 0 : 1, mr: isMobile ? 1 : 0 }}\n >\n {isMobile ? <KeyboardArrowLeftIcon /> : <KeyboardArrowUpIcon />}\n </IconButton>\n {items\n .slice(thumbStartIdx, thumbStartIdx + visibleCount)\n .map((item, idx) => {\n const realIdx = thumbStartIdx + idx;\n const isSelected = selectedIdx === realIdx;\n const handleSelect = () => onSelect(realIdx);\n return (\n <Box\n key={`${realIdx}-${item.url}`}\n role=\"button\"\n tabIndex={0}\n aria-label={item.title}\n aria-pressed={isSelected}\n onClick={handleSelect}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleSelect();\n }\n }}\n sx={{\n cursor: 'pointer',\n width: 60,\n height: 60,\n borderRadius: 1,\n border: (theme) =>\n `2px solid ${\n isSelected ? theme.palette.primary.main : theme.palette.divider\n }`,\n overflow: 'hidden',\n bgcolor: 'action.hover',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n m: isMobile ? '0 4px' : '4px 0',\n outline: 'none',\n '&:focus-visible': {\n boxShadow: (theme) =>\n `0 0 0 2px ${theme.palette.primary.main}`,\n },\n }}\n >\n <Box\n component=\"img\"\n src={item.thumbnail ?? item.url}\n alt={item.title}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }}\n />\n </Box>\n );\n })}\n <IconButton\n size=\"small\"\n onClick={onThumbDown}\n disabled={thumbStartIdx + visibleCount >= items.length}\n aria-label={isMobile ? 'Miniatura siguiente' : 'Miniaturas abajo'}\n sx={{ mt: isMobile ? 0 : 1, ml: isMobile ? 1 : 0 }}\n >\n {isMobile ? <KeyboardArrowRightIcon /> : <KeyboardArrowDownIcon />}\n </IconButton>\n </Box>\n);\n\nexport default GalleryThumbnails;\n","import { Box, IconButton } from '@mui/material';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\n\nimport type { GalleryItem } from './Gallery';\n\ninterface Props {\n item: GalleryItem;\n onOpenLightbox: () => void;\n isMobile: boolean;\n}\n\nexport const GalleryMain = ({ item, onOpenLightbox, isMobile }: Props) => (\n <Box\n sx={{\n width: isMobile ? '80%' : '100%',\n maxHeight: 431,\n maxWidth: isMobile ? '80%' : '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n borderRadius: 1,\n bgcolor: 'grey.100',\n overflow: 'hidden',\n mx: 'auto',\n }}\n >\n <Box\n sx={{\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onClick={onOpenLightbox}\n >\n {item.type === 'video' ? (\n <Box\n component=\"video\"\n controls\n src={item.url}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n bgcolor: 'common.black',\n borderRadius: 1,\n }}\n />\n ) : (\n <Box\n component=\"img\"\n src={item.url}\n alt={item.title}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n borderRadius: 1,\n }}\n />\n )}\n </Box>\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n onOpenLightbox();\n }}\n aria-label=\"Abrir en pantalla completa\"\n sx={{\n position: 'absolute',\n top: 16,\n right: 16,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n '&:hover': { bgcolor: 'primary.dark' },\n boxShadow: 2,\n }}\n >\n <FullscreenIcon />\n </IconButton>\n </Box>\n);\n\nexport default GalleryMain;\n","import React from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogActions,\n Stack,\n IconButton,\n Box,\n Typography,\n} from '@mui/material';\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\nimport RotateLeftIcon from '@mui/icons-material/RotateLeft';\nimport RotateRightIcon from '@mui/icons-material/RotateRight';\nimport RestartAltIcon from '@mui/icons-material/RestartAlt';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { Button } from '../Button';\nimport type { GalleryItem } from './Gallery';\n\nconst ZOOM_MIN = 0.25;\nconst ZOOM_MAX = 5;\nconst ZOOM_STEP = 0.25;\n\ninterface Props {\n open: boolean;\n onClose: () => void;\n item: GalleryItem;\n onPrev: () => void;\n onNext: () => void;\n zoom: number;\n setZoom: React.Dispatch<React.SetStateAction<number>>;\n rotation: number;\n setRotation: React.Dispatch<React.SetStateAction<number>>;\n videoRef?: React.RefObject<HTMLVideoElement | null>;\n}\n\nexport const GalleryLightbox = ({\n open,\n onClose,\n item,\n onPrev,\n onNext,\n zoom,\n setZoom,\n rotation,\n setRotation,\n videoRef,\n}: Props) => (\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"lg\">\n <DialogContent\n sx={{\n minHeight: 431,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 2,\n }}\n >\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <IconButton onClick={onPrev} aria-label=\"Anterior\">\n <ArrowBackIosNewIcon />\n </IconButton>\n <Typography\n variant=\"subtitle1\"\n fontWeight={600}\n sx={{ flex: 1, textAlign: 'center' }}\n >\n {item.title}\n </Typography>\n <IconButton onClick={onNext} aria-label=\"Siguiente\">\n <ArrowForwardIosIcon />\n </IconButton>\n </Stack>\n\n {item.type === 'video' ? (\n <Box\n component=\"video\"\n key={item.url}\n ref={videoRef}\n src={item.url}\n controls\n autoPlay\n sx={{\n width: '100%',\n maxWidth: 900,\n maxHeight: '70vh',\n objectFit: 'contain',\n bgcolor: 'common.black',\n borderRadius: 1,\n }}\n />\n ) : (\n <Box\n component=\"img\"\n src={item.url}\n alt={item.title}\n sx={{\n transform: `scale(${zoom}) rotate(${rotation}deg)`,\n transition: 'transform 0.2s ease',\n width: '100%',\n maxWidth: 900,\n maxHeight: '70vh',\n objectFit: 'contain',\n borderRadius: 1,\n }}\n />\n )}\n </DialogContent>\n\n <DialogActions\n sx={{\n display: 'flex',\n justifyContent: item.type === 'image' ? 'space-between' : 'end',\n flexWrap: 'wrap',\n gap: 1,\n }}\n >\n {item.type === 'image' && (\n <>\n <Stack direction=\"row\" spacing={1}>\n <Button\n variant=\"outlined\"\n startIcon={<ZoomInIcon />}\n onClick={() => setZoom((z) => Math.min(ZOOM_MAX, z + ZOOM_STEP))}\n disabled={zoom >= ZOOM_MAX}\n >\n Zoom +\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<ZoomOutIcon />}\n onClick={() => setZoom((z) => Math.max(ZOOM_MIN, z - ZOOM_STEP))}\n disabled={zoom <= ZOOM_MIN}\n >\n Zoom −\n </Button>\n </Stack>\n <Stack direction=\"row\" spacing={1}>\n <Button\n variant=\"outlined\"\n aria-label=\"Rotar a la izquierda\"\n onClick={() => setRotation((r) => (r - 90) % 360)}\n >\n <RotateLeftIcon />\n </Button>\n <Button\n variant=\"outlined\"\n aria-label=\"Rotar a la derecha\"\n onClick={() => setRotation((r) => (r + 90) % 360)}\n >\n <RotateRightIcon />\n </Button>\n </Stack>\n <Button\n variant=\"outlined\"\n startIcon={<RestartAltIcon />}\n onClick={() => {\n setZoom(1);\n setRotation(0);\n }}\n >\n Reset\n </Button>\n </>\n )}\n <Button\n variant=\"contained\"\n startIcon={<CloseIcon />}\n onClick={onClose}\n >\n Cerrar\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nexport default GalleryLightbox;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Stack, useMediaQuery } from '@mui/material';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles';\n\nimport { GalleryThumbnails } from './GalleryThumbnails';\nimport { GalleryMain } from './GalleryMain';\nimport { GalleryLightbox } from './GalleryLightbox';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport interface GalleryItem {\n url: string;\n /**\n * Tipo del item. Los literales `\"image\"` / `\"video\"` activan el render\n * específico; cualquier otro string se trata como imagen por default.\n */\n type: 'image' | 'video' | (string & {});\n title: string;\n /** Si no se provee, se usa `url` como thumbnail. */\n thumbnail?: string;\n}\n\nexport interface GalleryProps {\n items: GalleryItem[];\n /** Ancho máximo del contenedor. Default: `'600px'`. */\n maxWidth?: string | number;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.Gallery`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx del contenedor raíz. Se mergea después del preset. */\n sx?: SxProps<Theme>;\n className?: string;\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n items,\n maxWidth = '600px',\n preset,\n sx,\n className,\n}) => {\n const theme = useTheme();\n const isMobile = useMediaQuery('(max-width:700px)');\n const [selectedIdx, setSelectedIdx] = useState(0);\n const [openLightbox, setOpenLightbox] = useState(false);\n const [zoom, setZoom] = useState(1);\n const [rotation, setRotation] = useState(0);\n const videoRef = useRef<HTMLVideoElement | null>(null);\n\n const [thumbStartIdx, setThumbStartIdx] = useState(0);\n const THUMB_VISIBLE_COUNT = isMobile ? 3 : 5;\n\n const handleThumbUp = () => {\n setThumbStartIdx((prev) => Math.max(0, prev - 1));\n };\n const handleThumbDown = () => {\n setThumbStartIdx((prev) =>\n Math.max(0, Math.min(items.length - THUMB_VISIBLE_COUNT, prev + 1)),\n );\n };\n\n const handlePrev = () => {\n setSelectedIdx((idx) => (idx === 0 ? items.length - 1 : idx - 1));\n };\n const handleNext = () => {\n setSelectedIdx((idx) => (idx === items.length - 1 ? 0 : idx + 1));\n };\n\n useEffect(() => {\n if (!openLightbox) return;\n const handleKey = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowLeft':\n handlePrev();\n break;\n case 'ArrowRight':\n handleNext();\n break;\n case 'Escape':\n setOpenLightbox(false);\n break;\n }\n };\n window.addEventListener('keydown', handleKey);\n return () => window.removeEventListener('keydown', handleKey);\n }, [openLightbox, items.length]);\n\n // Reset zoom/rotación al navegar o abrir. Autoplay del video con catch\n // para evitar unhandled rejections por políticas de autoplay del browser.\n useEffect(() => {\n if (\n openLightbox &&\n items[selectedIdx]?.type === 'video' &&\n videoRef.current\n ) {\n videoRef.current.currentTime = 0;\n videoRef.current.play().catch(() => {\n /* autoplay bloqueado — el usuario puede dar play manualmente */\n });\n }\n setZoom(1);\n setRotation(0);\n }, [openLightbox, selectedIdx, items]);\n\n if (!items || items.length === 0) return null;\n\n const safeSelectedIdx = Math.max(0, Math.min(selectedIdx, items.length - 1));\n const currentItem = items[safeSelectedIdx];\n\n const presetSx = resolvePreset('Gallery', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n { maxWidth, mx: 'auto', minHeight: 300 },\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n return (\n <Stack\n direction={isMobile ? 'column' : 'row'}\n gap={3}\n className={className}\n sx={rootSx}\n >\n <GalleryThumbnails\n items={items}\n selectedIdx={safeSelectedIdx}\n onSelect={setSelectedIdx}\n thumbStartIdx={thumbStartIdx}\n visibleCount={THUMB_VISIBLE_COUNT}\n onThumbUp={handleThumbUp}\n onThumbDown={handleThumbDown}\n isMobile={isMobile}\n />\n <GalleryMain\n item={currentItem}\n onOpenLightbox={() => setOpenLightbox(true)}\n isMobile={isMobile}\n />\n <GalleryLightbox\n open={openLightbox}\n onClose={() => setOpenLightbox(false)}\n item={currentItem}\n onPrev={handlePrev}\n onNext={handleNext}\n zoom={zoom}\n setZoom={setZoom}\n rotation={rotation}\n setRotation={setRotation}\n videoRef={videoRef}\n />\n </Stack>\n );\n};\n\nexport default Gallery;\n"],"names":["jsxs","Box","jsx","IconButton","Dialog","DialogContent","Stack","Typography","DialogActions","Fragment","Button","useTheme","useMediaQuery","useState","useRef","useEffect","resolvePreset"],"mappings":"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"}