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

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 (565) 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 +98 -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 +98 -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 +274 -0
  85. package/components/Drawer/Drawer.cjs.map +1 -0
  86. package/components/Drawer/Drawer.d.ts +60 -0
  87. package/components/Drawer/Drawer.js +274 -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 +108 -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 +108 -0
  168. package/components/StatusMessage/StatusMessage.js.map +1 -0
  169. package/components/StatusMessage/StatusMessageContext.d.ts +16 -0
  170. package/components/StatusMessage/index.d.ts +4 -0
  171. package/components/StatusMessage.d.ts +6 -0
  172. package/components/Stepper/Stepper.cjs +326 -0
  173. package/components/Stepper/Stepper.cjs.map +1 -0
  174. package/components/Stepper/Stepper.d.ts +17 -0
  175. package/components/Stepper/Stepper.js +326 -0
  176. package/components/Stepper/Stepper.js.map +1 -0
  177. package/components/Stepper/StepperContext.d.ts +73 -0
  178. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  179. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  180. package/components/Stepper/index.d.ts +6 -0
  181. package/components/Stepper.d.ts +6 -0
  182. package/components/Switch/Switch.cjs +184 -0
  183. package/components/Switch/Switch.cjs.map +1 -0
  184. package/components/Switch/Switch.d.ts +48 -0
  185. package/components/Switch/Switch.definitions.d.ts +7 -0
  186. package/components/Switch/Switch.js +184 -0
  187. package/components/Switch/Switch.js.map +1 -0
  188. package/components/Switch/Switch.sx.d.ts +22 -0
  189. package/components/Switch/Switch.types.d.ts +1 -0
  190. package/components/Switch/index.d.ts +2 -0
  191. package/components/Switch.d.ts +6 -0
  192. package/components/Tabs/Tabs.cjs +112 -0
  193. package/components/Tabs/Tabs.cjs.map +1 -0
  194. package/components/Tabs/Tabs.d.ts +24 -0
  195. package/components/Tabs/Tabs.js +112 -0
  196. package/components/Tabs/Tabs.js.map +1 -0
  197. package/components/Tabs/index.d.ts +4 -0
  198. package/components/Tabs.d.ts +6 -0
  199. package/{dist/components → components}/Timeline/Timeline.cjs +3 -2
  200. package/components/Timeline/Timeline.cjs.map +1 -0
  201. package/components/Timeline/Timeline.d.ts +9 -0
  202. package/{dist/components → components}/Timeline/Timeline.js +3 -2
  203. package/components/Timeline/Timeline.js.map +1 -0
  204. package/components/Timeline/index.d.ts +4 -0
  205. package/components/Timeline.d.ts +6 -0
  206. package/components/_shared/formField.sx.d.ts +33 -0
  207. package/components/_shared/mergeSx.d.ts +7 -0
  208. package/components/_shared/resolvePreset.d.ts +18 -0
  209. package/formField.sx-8_QRnKxv.js +68 -0
  210. package/formField.sx-8_QRnKxv.js.map +1 -0
  211. package/formField.sx-BAX7KwMR.cjs +67 -0
  212. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  213. package/index.cjs +153 -0
  214. package/index.cjs.map +1 -0
  215. package/index.d.ts +4 -0
  216. package/index.js +51 -0
  217. package/index.js.map +1 -0
  218. package/mergeSx-BXoNZjB_.js +10 -0
  219. package/mergeSx-BXoNZjB_.js.map +1 -0
  220. package/mergeSx-Dbccoo_H.cjs +9 -0
  221. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  222. package/mui.d.ts +7 -0
  223. package/package.json +164 -43
  224. package/resolvePreset-B-IB0ehH.js +15 -0
  225. package/resolvePreset-B-IB0ehH.js.map +1 -0
  226. package/resolvePreset-CT3kU-K2.cjs +14 -0
  227. package/resolvePreset-CT3kU-K2.cjs.map +1 -0
  228. package/theme/componentStyles.d.ts +32 -0
  229. package/theme/tokens.d.ts +28 -0
  230. package/tokens-BRrcP_p_.js +21 -0
  231. package/tokens-BRrcP_p_.js.map +1 -0
  232. package/tokens-jaWWNk39.cjs +20 -0
  233. package/tokens-jaWWNk39.cjs.map +1 -0
  234. package/utils/index.d.ts +2 -0
  235. package/utils/scrollToTop.d.ts +28 -0
  236. package/.dockerignore +0 -8
  237. package/.github/workflows/publish.yml +0 -107
  238. package/.prettierrc +0 -3
  239. package/.storybook/main.ts +0 -19
  240. package/.storybook/preview.ts +0 -14
  241. package/.storybook/vitest.setup.ts +0 -9
  242. package/Dockerfile +0 -37
  243. package/build.js +0 -102
  244. package/chromatic.config.json +0 -5
  245. package/cleanDirectories.js +0 -40
  246. package/dist/Button-C17mExpd.cjs.map +0 -1
  247. package/dist/Button-UkkP-bNw.js.map +0 -1
  248. package/dist/DatePicker-BSNboVhN.js +0 -201
  249. package/dist/DatePicker-BSNboVhN.js.map +0 -1
  250. package/dist/DatePicker-BoqxWAhj.cjs +0 -200
  251. package/dist/DatePicker-BoqxWAhj.cjs.map +0 -1
  252. package/dist/Input-DFHs7cJ_.js +0 -171
  253. package/dist/Input-DFHs7cJ_.js.map +0 -1
  254. package/dist/Input-c8MwNNPg.cjs +0 -170
  255. package/dist/Input-c8MwNNPg.cjs.map +0 -1
  256. package/dist/Select-BO2N56sm.cjs +0 -411
  257. package/dist/Select-BO2N56sm.cjs.map +0 -1
  258. package/dist/Select-BcLkyHSE.js +0 -412
  259. package/dist/Select-BcLkyHSE.js.map +0 -1
  260. package/dist/components/Autocomplete/Autocomplete.cjs +0 -109
  261. package/dist/components/Autocomplete/Autocomplete.cjs.map +0 -1
  262. package/dist/components/Autocomplete/Autocomplete.d.ts +0 -28
  263. package/dist/components/Autocomplete/Autocomplete.definitions.d.ts +0 -9
  264. package/dist/components/Autocomplete/Autocomplete.js +0 -109
  265. package/dist/components/Autocomplete/Autocomplete.js.map +0 -1
  266. package/dist/components/Autocomplete/index.d.ts +0 -1
  267. package/dist/components/Autocomplete.d.ts +0 -2
  268. package/dist/components/Avatar/Avatar.cjs +0 -126
  269. package/dist/components/Avatar/Avatar.cjs.map +0 -1
  270. package/dist/components/Avatar/Avatar.d.ts +0 -19
  271. package/dist/components/Avatar/Avatar.js +0 -126
  272. package/dist/components/Avatar/Avatar.js.map +0 -1
  273. package/dist/components/Avatar/index.d.ts +0 -1
  274. package/dist/components/Card/Card.cjs +0 -28
  275. package/dist/components/Card/Card.cjs.map +0 -1
  276. package/dist/components/Card/Card.d.ts +0 -13
  277. package/dist/components/Card/Card.js +0 -28
  278. package/dist/components/Card/Card.js.map +0 -1
  279. package/dist/components/Card/index.d.ts +0 -1
  280. package/dist/components/Card.d.ts +0 -2
  281. package/dist/components/Chip/Chip.cjs.map +0 -1
  282. package/dist/components/Chip/Chip.js.map +0 -1
  283. package/dist/components/Chip/index.d.ts +0 -1
  284. package/dist/components/Chip.d.ts +0 -2
  285. package/dist/components/DatePicker/DatePicker.cjs +0 -5
  286. package/dist/components/DatePicker/DatePicker.cjs.map +0 -1
  287. package/dist/components/DatePicker/DatePicker.d.ts +0 -18
  288. package/dist/components/DatePicker/DatePicker.js +0 -5
  289. package/dist/components/DatePicker/DatePicker.js.map +0 -1
  290. package/dist/components/DatePicker/index.d.ts +0 -1
  291. package/dist/components/DatePicker.d.ts +0 -2
  292. package/dist/components/DateTimePicker/DateTimePicker.cjs +0 -208
  293. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +0 -1
  294. package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -28
  295. package/dist/components/DateTimePicker/DateTimePicker.js +0 -208
  296. package/dist/components/DateTimePicker/DateTimePicker.js.map +0 -1
  297. package/dist/components/DateTimePicker/index.d.ts +0 -1
  298. package/dist/components/DateTimePicker.d.ts +0 -2
  299. package/dist/components/Gallery/Gallery.cjs.map +0 -1
  300. package/dist/components/Gallery/Gallery.d.ts +0 -12
  301. package/dist/components/Gallery/Gallery.js.map +0 -1
  302. package/dist/components/Gallery/GalleryLightbox.d.ts +0 -20
  303. package/dist/components/Gallery/GalleryThumbnails.d.ts +0 -17
  304. package/dist/components/Gallery/index.d.ts +0 -1
  305. package/dist/components/Gallery.d.ts +0 -2
  306. package/dist/components/Icon/Icon.cjs.map +0 -1
  307. package/dist/components/Icon/Icon.d.ts +0 -21
  308. package/dist/components/Icon/Icon.js.map +0 -1
  309. package/dist/components/Icon/index.d.ts +0 -1
  310. package/dist/components/Icon.d.ts +0 -2
  311. package/dist/components/Input/Input.cjs +0 -5
  312. package/dist/components/Input/Input.cjs.map +0 -1
  313. package/dist/components/Input/Input.d.ts +0 -32
  314. package/dist/components/Input/Input.js +0 -5
  315. package/dist/components/Input/Input.js.map +0 -1
  316. package/dist/components/Input/index.d.ts +0 -1
  317. package/dist/components/Input.d.ts +0 -2
  318. package/dist/components/InputGroup/InputGroup.cjs +0 -126
  319. package/dist/components/InputGroup/InputGroup.cjs.map +0 -1
  320. package/dist/components/InputGroup/InputGroup.d.ts +0 -6
  321. package/dist/components/InputGroup/InputGroup.js +0 -126
  322. package/dist/components/InputGroup/InputGroup.js.map +0 -1
  323. package/dist/components/InputGroup/index.d.ts +0 -1
  324. package/dist/components/InputGroup.d.ts +0 -2
  325. package/dist/components/Modal/Modal.cjs +0 -209
  326. package/dist/components/Modal/Modal.cjs.map +0 -1
  327. package/dist/components/Modal/Modal.d.ts +0 -29
  328. package/dist/components/Modal/Modal.js +0 -209
  329. package/dist/components/Modal/Modal.js.map +0 -1
  330. package/dist/components/Modal/ModalBody.d.ts +0 -6
  331. package/dist/components/Modal/ModalFooter.d.ts +0 -19
  332. package/dist/components/Modal/ModalHeader.d.ts +0 -6
  333. package/dist/components/Modal/index.d.ts +0 -1
  334. package/dist/components/Modal.d.ts +0 -2
  335. package/dist/components/Select/Select.cjs +0 -6
  336. package/dist/components/Select/Select.cjs.map +0 -1
  337. package/dist/components/Select/Select.d.ts +0 -60
  338. package/dist/components/Select/Select.definitions.d.ts +0 -14
  339. package/dist/components/Select/Select.js +0 -6
  340. package/dist/components/Select/Select.js.map +0 -1
  341. package/dist/components/Select/index.d.ts +0 -1
  342. package/dist/components/Select.d.ts +0 -2
  343. package/dist/components/Stat/index.d.ts +0 -1
  344. package/dist/components/Stat.d.ts +0 -2
  345. package/dist/components/StatusMessage/StatusMessage.cjs +0 -79
  346. package/dist/components/StatusMessage/StatusMessage.cjs.map +0 -1
  347. package/dist/components/StatusMessage/StatusMessage.d.ts +0 -44
  348. package/dist/components/StatusMessage/StatusMessage.js +0 -79
  349. package/dist/components/StatusMessage/StatusMessage.js.map +0 -1
  350. package/dist/components/StatusMessage/index.d.ts +0 -1
  351. package/dist/components/StatusMessage.d.ts +0 -2
  352. package/dist/components/Stepper/Stepper.cjs +0 -46
  353. package/dist/components/Stepper/Stepper.cjs.map +0 -1
  354. package/dist/components/Stepper/Stepper.d.ts +0 -11
  355. package/dist/components/Stepper/Stepper.js +0 -46
  356. package/dist/components/Stepper/Stepper.js.map +0 -1
  357. package/dist/components/Stepper/index.d.ts +0 -2
  358. package/dist/components/Stepper.d.ts +0 -2
  359. package/dist/components/Tabs/Tabs.cjs +0 -96
  360. package/dist/components/Tabs/Tabs.cjs.map +0 -1
  361. package/dist/components/Tabs/Tabs.d.ts +0 -19
  362. package/dist/components/Tabs/Tabs.js +0 -96
  363. package/dist/components/Tabs/Tabs.js.map +0 -1
  364. package/dist/components/Tabs/index.d.ts +0 -2
  365. package/dist/components/Tabs.d.ts +0 -2
  366. package/dist/components/Timeline/Timeline.cjs.map +0 -1
  367. package/dist/components/Timeline/Timeline.d.ts +0 -13
  368. package/dist/components/Timeline/Timeline.js.map +0 -1
  369. package/dist/components/Timeline/index.d.ts +0 -2
  370. package/dist/components/Timeline.d.ts +0 -2
  371. package/dist/index.cjs +0 -2
  372. package/dist/index.cjs.map +0 -1
  373. package/dist/index.d.ts +0 -0
  374. package/dist/index.js +0 -2
  375. package/dist/index.js.map +0 -1
  376. package/dist/styles.css +0 -112
  377. package/rollup.config.cjs +0 -87
  378. package/src/components/Autocomplete/Autocomplete.definitions.ts +0 -254
  379. package/src/components/Autocomplete/Autocomplete.stories.tsx +0 -387
  380. package/src/components/Autocomplete/Autocomplete.tsx +0 -139
  381. package/src/components/Autocomplete/index.ts +0 -1
  382. package/src/components/Avatar/Avatar.stories.tsx +0 -54
  383. package/src/components/Avatar/Avatar.tsx +0 -143
  384. package/src/components/Avatar/index.ts +0 -1
  385. package/src/components/Button/Button.definition.ts +0 -97
  386. package/src/components/Button/Button.stories.tsx +0 -285
  387. package/src/components/Button/Button.tsx +0 -67
  388. package/src/components/Button/index.ts +0 -1
  389. package/src/components/Card/Card.definition.ts +0 -5
  390. package/src/components/Card/Card.stories.tsx +0 -32
  391. package/src/components/Card/Card.tsx +0 -44
  392. package/src/components/Card/index.ts +0 -1
  393. package/src/components/Chip/Chip.definitions.ts +0 -167
  394. package/src/components/Chip/Chip.stories.tsx +0 -265
  395. package/src/components/Chip/Chip.tsx +0 -61
  396. package/src/components/Chip/index.ts +0 -1
  397. package/src/components/Column/Column.tsx +0 -29
  398. package/src/components/Column/index.ts +0 -1
  399. package/src/components/DatePicker/DatePicker.definitions.ts +0 -205
  400. package/src/components/DatePicker/DatePicker.stories.tsx +0 -282
  401. package/src/components/DatePicker/DatePicker.tsx +0 -165
  402. package/src/components/DatePicker/index.ts +0 -1
  403. package/src/components/DateRangePicker/DateRangePicker.definitions.ts +0 -191
  404. package/src/components/DateRangePicker/DateRangePicker.stories.tsx +0 -252
  405. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -56
  406. package/src/components/DateRangePicker/index.ts +0 -1
  407. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +0 -232
  408. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +0 -390
  409. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -191
  410. package/src/components/DateTimePicker/index.ts +0 -1
  411. package/src/components/Flyout/Flyout.stories.tsx +0 -274
  412. package/src/components/Flyout/Flyout.tsx +0 -122
  413. package/src/components/Flyout/index.ts +0 -1
  414. package/src/components/Gallery/Gallery.definition.tsx +0 -37
  415. package/src/components/Gallery/Gallery.stories.tsx +0 -82
  416. package/src/components/Gallery/Gallery.tsx +0 -118
  417. package/src/components/Gallery/GalleryLightbox.tsx +0 -170
  418. package/src/components/Gallery/GalleryMain.tsx +0 -84
  419. package/src/components/Gallery/GalleryThumbnails.tsx +0 -106
  420. package/src/components/Gallery/index.ts +0 -1
  421. package/src/components/Icon/Icon.stories.tsx +0 -54
  422. package/src/components/Icon/Icon.tsx +0 -94
  423. package/src/components/Icon/index.ts +0 -2
  424. package/src/components/Input/Input.definitions.ts +0 -252
  425. package/src/components/Input/Input.stories.tsx +0 -387
  426. package/src/components/Input/Input.tsx +0 -186
  427. package/src/components/Input/index.ts +0 -1
  428. package/src/components/InputGroup/InputGroup.stories.tsx +0 -136
  429. package/src/components/InputGroup/InputGroup.tsx +0 -136
  430. package/src/components/InputGroup/index.ts +0 -1
  431. package/src/components/MenuButton/MenuButton.stories.tsx +0 -197
  432. package/src/components/MenuButton/MenuButton.tsx +0 -100
  433. package/src/components/MenuButton/index.ts +0 -1
  434. package/src/components/Modal/Modal.stories.tsx +0 -293
  435. package/src/components/Modal/Modal.tsx +0 -173
  436. package/src/components/Modal/ModalBody.tsx +0 -16
  437. package/src/components/Modal/ModalFooter.tsx +0 -61
  438. package/src/components/Modal/ModalHeader.tsx +0 -18
  439. package/src/components/Modal/index.ts +0 -1
  440. package/src/components/Select/Select.definitions.ts +0 -488
  441. package/src/components/Select/Select.stories.tsx +0 -569
  442. package/src/components/Select/Select.tsx +0 -468
  443. package/src/components/Select/index.ts +0 -1
  444. package/src/components/Stat/Stat.stories.tsx +0 -85
  445. package/src/components/Stat/Stat.tsx +0 -117
  446. package/src/components/Stat/index.ts +0 -2
  447. package/src/components/StatusMessage/StatusMessage.stories.tsx +0 -130
  448. package/src/components/StatusMessage/StatusMessage.tsx +0 -162
  449. package/src/components/StatusMessage/index.ts +0 -2
  450. package/src/components/Stepper/Step.tsx +0 -21
  451. package/src/components/Stepper/Stepper.definition.ts +0 -75
  452. package/src/components/Stepper/Stepper.stories.tsx +0 -122
  453. package/src/components/Stepper/Stepper.tsx +0 -59
  454. package/src/components/Stepper/index.ts +0 -2
  455. package/src/components/Table/EmptyTable.png +0 -0
  456. package/src/components/Table/Table.definition.ts +0 -580
  457. package/src/components/Table/Table.stories.tsx +0 -853
  458. package/src/components/Table/Table.tsx +0 -495
  459. package/src/components/Table/data.ts +0 -134
  460. package/src/components/Table/exportsUtils.ts +0 -195
  461. package/src/components/Table/index.ts +0 -3
  462. package/src/components/Table/types.ts +0 -34
  463. package/src/components/Tabs/Tab.definition.ts +0 -53
  464. package/src/components/Tabs/Tab.tsx +0 -19
  465. package/src/components/Tabs/Tabs.stories.tsx +0 -118
  466. package/src/components/Tabs/Tabs.tsx +0 -99
  467. package/src/components/Tabs/_tabUtils.tsx +0 -4
  468. package/src/components/Tabs/index.ts +0 -2
  469. package/src/components/Timeline/Timeline.definition.ts +0 -43
  470. package/src/components/Timeline/Timeline.stories.tsx +0 -108
  471. package/src/components/Timeline/Timeline.tsx +0 -49
  472. package/src/components/Timeline/TimelineItem.tsx +0 -31
  473. package/src/components/Timeline/index.ts +0 -2
  474. package/src/components/Tooltip/Tooltip.stories.tsx +0 -117
  475. package/src/components/Tooltip/Tooltip.tsx +0 -58
  476. package/src/components/Tooltip/index.ts +0 -1
  477. package/src/hooks/ClipBoard/ClipBoard.stories.tsx +0 -168
  478. package/src/hooks/ClipBoard/ClipBoard.tsx +0 -131
  479. package/src/hooks/ClipBoard/ClipboardUnifiedDemo.tsx +0 -111
  480. package/src/hooks/ClipBoard/index.ts +0 -1
  481. package/src/index.ts +0 -1
  482. package/src/styles.css +0 -3
  483. package/tailwind.config.js +0 -10
  484. package/tsconfig.json +0 -48
  485. package/tsup.config.js +0 -41
  486. package/vite.config.js +0 -132
  487. package/vitest.config.ts +0 -35
  488. /package/{dist/Button-C17mExpd.cjs → Button-C17mExpd.cjs} +0 -0
  489. /package/{dist/Button-UkkP-bNw.js → Button-UkkP-bNw.js} +0 -0
  490. /package/{Readme.md → README.md} +0 -0
  491. /package/{dist/components → components}/Avatar.d.ts +0 -0
  492. /package/{dist/components → components}/Button/Button.cjs +0 -0
  493. /package/{dist/components → components}/Button/Button.cjs.map +0 -0
  494. /package/{dist/components → components}/Button/Button.definition.d.ts +0 -0
  495. /package/{dist/components → components}/Button/Button.js +0 -0
  496. /package/{dist/components → components}/Button/Button.js.map +0 -0
  497. /package/{dist/components → components}/Button.d.ts +0 -0
  498. /package/{dist/components → components}/Card/Card.definition.d.ts +0 -0
  499. /package/{dist/components → components}/Chip/Chip.d.ts +0 -0
  500. /package/{dist/components → components}/Chip/Chip.definitions.d.ts +0 -0
  501. /package/{dist/components → components}/Column/Column.cjs +0 -0
  502. /package/{dist/components → components}/Column/Column.cjs.map +0 -0
  503. /package/{dist/components → components}/Column/Column.d.ts +0 -0
  504. /package/{dist/components → components}/Column/Column.js +0 -0
  505. /package/{dist/components → components}/Column/Column.js.map +0 -0
  506. /package/{dist/components → components}/Column/index.d.ts +0 -0
  507. /package/{dist/components → components}/Column.d.ts +0 -0
  508. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs +0 -0
  509. /package/{dist/components → components}/DateRangePicker/DateRangePicker.cjs.map +0 -0
  510. /package/{dist/components → components}/DateRangePicker/DateRangePicker.d.ts +0 -0
  511. /package/{dist/components → components}/DateRangePicker/DateRangePicker.definitions.d.ts +0 -0
  512. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js +0 -0
  513. /package/{dist/components → components}/DateRangePicker/DateRangePicker.js.map +0 -0
  514. /package/{dist/components → components}/DateRangePicker/index.d.ts +0 -0
  515. /package/{dist/components → components}/DateRangePicker.d.ts +0 -0
  516. /package/{dist/components → components}/Flyout/Flyout.cjs +0 -0
  517. /package/{dist/components → components}/Flyout/Flyout.cjs.map +0 -0
  518. /package/{dist/components → components}/Flyout/Flyout.d.ts +0 -0
  519. /package/{dist/components → components}/Flyout/Flyout.js +0 -0
  520. /package/{dist/components → components}/Flyout/Flyout.js.map +0 -0
  521. /package/{dist/components → components}/Flyout/index.d.ts +0 -0
  522. /package/{dist/components → components}/Flyout.d.ts +0 -0
  523. /package/{dist/components → components}/Gallery/Gallery.definition.d.ts +0 -0
  524. /package/{dist/components → components}/MenuButton/MenuButton.cjs +0 -0
  525. /package/{dist/components → components}/MenuButton/MenuButton.cjs.map +0 -0
  526. /package/{dist/components → components}/MenuButton/MenuButton.d.ts +0 -0
  527. /package/{dist/components → components}/MenuButton/MenuButton.js +0 -0
  528. /package/{dist/components → components}/MenuButton/MenuButton.js.map +0 -0
  529. /package/{dist/components → components}/MenuButton/index.d.ts +0 -0
  530. /package/{dist/components → components}/MenuButton.d.ts +0 -0
  531. /package/{dist/components → components}/Stat/Stat.d.ts +0 -0
  532. /package/{dist/components → components}/Stepper/Step.d.ts +0 -0
  533. /package/{dist/components → components}/Stepper/Stepper.definition.d.ts +0 -0
  534. /package/{dist/components → components}/Table/Table.cjs +0 -0
  535. /package/{dist/components → components}/Table/Table.cjs.map +0 -0
  536. /package/{dist/components → components}/Table/Table.d.ts +0 -0
  537. /package/{dist/components → components}/Table/Table.definition.d.ts +0 -0
  538. /package/{dist/components → components}/Table/Table.js +0 -0
  539. /package/{dist/components → components}/Table/Table.js.map +0 -0
  540. /package/{dist/components → components}/Table/data.d.ts +0 -0
  541. /package/{dist/components → components}/Table/exportsUtils.d.ts +0 -0
  542. /package/{dist/components → components}/Table/index.d.ts +0 -0
  543. /package/{dist/components → components}/Table/types.d.ts +0 -0
  544. /package/{dist/components → components}/Table.d.ts +0 -0
  545. /package/{dist/components → components}/Tabs/Tab.d.ts +0 -0
  546. /package/{dist/components → components}/Tabs/Tab.definition.d.ts +0 -0
  547. /package/{dist/components → components}/Tabs/_tabUtils.d.ts +0 -0
  548. /package/{dist/components → components}/Timeline/Timeline.definition.d.ts +0 -0
  549. /package/{dist/components → components}/Timeline/TimelineItem.d.ts +0 -0
  550. /package/{dist/components → components}/Tooltip/Tooltip.cjs +0 -0
  551. /package/{dist/components → components}/Tooltip/Tooltip.cjs.map +0 -0
  552. /package/{dist/components → components}/Tooltip/Tooltip.d.ts +0 -0
  553. /package/{dist/components → components}/Tooltip/Tooltip.js +0 -0
  554. /package/{dist/components → components}/Tooltip/Tooltip.js.map +0 -0
  555. /package/{dist/components → components}/Tooltip/index.d.ts +0 -0
  556. /package/{dist/components → components}/Tooltip.d.ts +0 -0
  557. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs +0 -0
  558. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.cjs.map +0 -0
  559. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  560. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js +0 -0
  561. /package/{dist/hooks → hooks}/ClipBoard/ClipBoard.js.map +0 -0
  562. /package/{dist/hooks → hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  563. /package/{dist/hooks → hooks}/ClipBoard/index.d.ts +0 -0
  564. /package/{dist/hooks → hooks}/ClipBoard.d.ts +0 -0
  565. /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 /** Sombra del Paper interno (0-24). Default: MUI lo gestiona según variant. */\n elevation?: MuiDrawerProps['elevation'];\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 elevation,\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 elevation={elevation}\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":"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"}
@@ -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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"}