@soyfri/shared-library 2.0.0-beta.13 → 2.0.0-beta.16

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 (289) hide show
  1. package/{Autocomplete-C2x-lBvZ.cjs → Autocomplete-4i0dNDKr.cjs} +55 -33
  2. package/Autocomplete-4i0dNDKr.cjs.map +1 -0
  3. package/{Autocomplete-BA-cGASd.js → Autocomplete-i3-V38n1.js} +56 -34
  4. package/Autocomplete-i3-V38n1.js.map +1 -0
  5. package/{Avatar-BJTr-PBd.js → Avatar-CgT7955R.js} +18 -19
  6. package/Avatar-CgT7955R.js.map +1 -0
  7. package/{Avatar-9L7YMxya.cjs → Avatar-CuSrK8Wn.cjs} +18 -19
  8. package/Avatar-CuSrK8Wn.cjs.map +1 -0
  9. package/Button-C17mExpd.cjs.map +1 -1
  10. package/Button-UkkP-bNw.js.map +1 -1
  11. package/Card-B1wtavyl.js +98 -0
  12. package/Card-B1wtavyl.js.map +1 -0
  13. package/Card-DfdU610V.cjs +97 -0
  14. package/Card-DfdU610V.cjs.map +1 -0
  15. package/Checkbox-BCqMFWt4.cjs +187 -0
  16. package/Checkbox-BCqMFWt4.cjs.map +1 -0
  17. package/Checkbox-gB5YKkVo.js +188 -0
  18. package/Checkbox-gB5YKkVo.js.map +1 -0
  19. package/{DatePicker-DLSfkgGA.cjs → DatePicker-CtCFqXDw.cjs} +41 -64
  20. package/DatePicker-CtCFqXDw.cjs.map +1 -0
  21. package/{DatePicker-8f_9bwhS.js → DatePicker-D0Bz9Ryg.js} +37 -60
  22. package/DatePicker-D0Bz9Ryg.js.map +1 -0
  23. package/{DateTimePicker-D4L9GAod.js → DateTimePicker-77w-9TP5.js} +27 -17
  24. package/DateTimePicker-77w-9TP5.js.map +1 -0
  25. package/{DateTimePicker-CWNW09-O.cjs → DateTimePicker-CTnRQCZo.cjs} +31 -21
  26. package/DateTimePicker-CTnRQCZo.cjs.map +1 -0
  27. package/{Input-DI0jfq5X.cjs → Input-jYapjJYM.cjs} +27 -14
  28. package/Input-jYapjJYM.cjs.map +1 -0
  29. package/{Input-Cp911l23.js → Input-rVVhI_wk.js} +24 -11
  30. package/Input-rVVhI_wk.js.map +1 -0
  31. package/{Modal-Bm_HH9cv.cjs → Modal-BN5s-Tfk.cjs} +126 -98
  32. package/Modal-BN5s-Tfk.cjs.map +1 -0
  33. package/{Modal-Bnz6d9m9.js → Modal-BRZMPwDj.js} +134 -106
  34. package/Modal-BRZMPwDj.js.map +1 -0
  35. package/{RadioGroup-CxqDHap1.cjs → RadioGroup-Dd0rHXSX.cjs} +10 -8
  36. package/RadioGroup-Dd0rHXSX.cjs.map +1 -0
  37. package/{RadioGroup-DMi9FvMP.js → RadioGroup-bO-ahP9T.js} +10 -8
  38. package/RadioGroup-bO-ahP9T.js.map +1 -0
  39. package/Select-B6jE3WH_.cjs +253 -0
  40. package/Select-B6jE3WH_.cjs.map +1 -0
  41. package/Select-bSVQokFX.js +254 -0
  42. package/Select-bSVQokFX.js.map +1 -0
  43. package/StatusMessage-B3nXpuRl.cjs +88 -0
  44. package/StatusMessage-B3nXpuRl.cjs.map +1 -0
  45. package/StatusMessage-D0WgSBx7.js +89 -0
  46. package/StatusMessage-D0WgSBx7.js.map +1 -0
  47. package/Step-BArsou1V.js +301 -0
  48. package/Step-BArsou1V.js.map +1 -0
  49. package/Step-Nd7SJbRZ.cjs +300 -0
  50. package/Step-Nd7SJbRZ.cjs.map +1 -0
  51. package/{Switch-BIeobv6i.cjs → Switch-CQFOopYy.cjs} +6 -3
  52. package/Switch-CQFOopYy.cjs.map +1 -0
  53. package/{Switch-DQEOxM2R.js → Switch-D72dpkH2.js} +6 -3
  54. package/Switch-D72dpkH2.js.map +1 -0
  55. package/{Tab-Co31KY2k.cjs → Tab-BbP8jBcK.cjs} +43 -28
  56. package/Tab-BbP8jBcK.cjs.map +1 -0
  57. package/Tab-BxSxKJsP.js +111 -0
  58. package/Tab-BxSxKJsP.js.map +1 -0
  59. package/components/ActionMenu/ActionMenu.cjs +52 -52
  60. package/components/ActionMenu/ActionMenu.cjs.map +1 -1
  61. package/components/ActionMenu/ActionMenu.d.ts +20 -36
  62. package/components/ActionMenu/ActionMenu.js +55 -55
  63. package/components/ActionMenu/ActionMenu.js.map +1 -1
  64. package/components/ActionMenu/index.d.ts +2 -2
  65. package/components/AppBar/AppBar.cjs +2 -219
  66. package/components/AppBar/AppBar.cjs.map +1 -1
  67. package/components/AppBar/AppBar.d.ts +6 -6
  68. package/components/AppBar/AppBar.js +5 -222
  69. package/components/AppBar/AppBar.js.map +1 -1
  70. package/components/AppBar/index.d.ts +0 -6
  71. package/components/Autocomplete/Autocomplete.cjs +1 -1
  72. package/components/Autocomplete/Autocomplete.d.ts +8 -6
  73. package/components/Autocomplete/Autocomplete.helpers.d.ts +8 -4
  74. package/components/Autocomplete/Autocomplete.js +1 -1
  75. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +5 -8
  76. package/components/Autocomplete/index.d.ts +1 -1
  77. package/components/Avatar/Avatar.cjs +1 -1
  78. package/components/Avatar/Avatar.js +1 -1
  79. package/components/Avatar/index.d.ts +1 -0
  80. package/components/Button/Button.d.ts +5 -5
  81. package/components/Button/index.d.ts +1 -0
  82. package/components/Card/Card.cjs +1 -4
  83. package/components/Card/Card.cjs.map +1 -1
  84. package/components/Card/Card.d.ts +3 -50
  85. package/components/Card/Card.js +1 -4
  86. package/components/Card/Card.sx.d.ts +3 -6
  87. package/components/Card/index.d.ts +1 -1
  88. package/components/Checkbox/Checkbox.cjs +6 -0
  89. package/components/Checkbox/Checkbox.cjs.map +1 -0
  90. package/components/Checkbox/Checkbox.d.ts +55 -0
  91. package/components/Checkbox/Checkbox.js +6 -0
  92. package/components/Checkbox/Checkbox.js.map +1 -0
  93. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  94. package/components/Checkbox/index.d.ts +2 -0
  95. package/components/Checkbox.d.ts +6 -0
  96. package/components/Chip/Chip.cjs +2 -1
  97. package/components/Chip/Chip.cjs.map +1 -1
  98. package/components/Chip/Chip.js +3 -2
  99. package/components/Chip/index.d.ts +2 -1
  100. package/components/Chip.d.ts +4 -0
  101. package/components/DatePicker/DatePicker.cjs +1 -1
  102. package/components/DatePicker/DatePicker.d.ts +1 -13
  103. package/components/DatePicker/DatePicker.js +1 -1
  104. package/components/DatePicker/index.d.ts +1 -1
  105. package/components/DateTimePicker/DateTimePicker.cjs +1 -1
  106. package/components/DateTimePicker/DateTimePicker.d.ts +10 -6
  107. package/components/DateTimePicker/DateTimePicker.definitions.d.ts +2 -0
  108. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +4 -2
  109. package/components/DateTimePicker/DateTimePicker.js +1 -1
  110. package/components/DateTimePicker/index.d.ts +1 -1
  111. package/components/Drawer/Drawer.cjs +10 -6
  112. package/components/Drawer/Drawer.cjs.map +1 -1
  113. package/components/Drawer/Drawer.js +11 -7
  114. package/components/Drawer/Drawer.js.map +1 -1
  115. package/components/Drawer/DrawerItem.d.ts +6 -1
  116. package/components/Gallery/Gallery.cjs +154 -79
  117. package/components/Gallery/Gallery.cjs.map +1 -1
  118. package/components/Gallery/Gallery.d.ts +25 -9
  119. package/components/Gallery/Gallery.js +154 -79
  120. package/components/Gallery/Gallery.js.map +1 -1
  121. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  122. package/components/Gallery/GalleryMain.d.ts +3 -7
  123. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  124. package/components/Gallery/index.d.ts +2 -1
  125. package/components/Gallery.d.ts +4 -0
  126. package/components/Icon/Icon.cjs +6 -8
  127. package/components/Icon/Icon.cjs.map +1 -1
  128. package/components/Icon/Icon.d.ts +11 -17
  129. package/components/Icon/Icon.js +6 -8
  130. package/components/Icon/Icon.js.map +1 -1
  131. package/components/Icon/index.d.ts +2 -1
  132. package/components/Icon.d.ts +4 -0
  133. package/components/Input/Input.cjs +1 -1
  134. package/components/Input/Input.d.ts +9 -2
  135. package/components/Input/Input.helpers.d.ts +3 -3
  136. package/components/Input/Input.js +1 -1
  137. package/components/Input/index.d.ts +1 -1
  138. package/components/InputGroup/InputGroup.cjs +23 -22
  139. package/components/InputGroup/InputGroup.cjs.map +1 -1
  140. package/components/InputGroup/InputGroup.d.ts +4 -4
  141. package/components/InputGroup/InputGroup.js +22 -21
  142. package/components/InputGroup/InputGroup.js.map +1 -1
  143. package/components/InputGroup/index.d.ts +2 -1
  144. package/components/InputGroup.d.ts +4 -0
  145. package/components/Modal/Modal.cjs +1 -1
  146. package/components/Modal/Modal.d.ts +20 -5
  147. package/components/Modal/Modal.js +6 -6
  148. package/components/Modal/ModalBody.d.ts +6 -1
  149. package/components/Modal/ModalFooter.d.ts +4 -4
  150. package/components/Modal/ModalHeader.d.ts +6 -1
  151. package/components/Modal/index.d.ts +2 -0
  152. package/components/RadioGroup/RadioGroup.cjs +1 -1
  153. package/components/RadioGroup/RadioGroup.d.ts +9 -3
  154. package/components/RadioGroup/RadioGroup.js +1 -1
  155. package/components/RadioGroup/index.d.ts +1 -1
  156. package/components/Select/Select.cjs +1 -1
  157. package/components/Select/Select.d.ts +13 -18
  158. package/components/Select/Select.helpers.d.ts +5 -19
  159. package/components/Select/Select.js +1 -1
  160. package/components/Select/index.d.ts +1 -1
  161. package/components/Stat/Stat.cjs +2 -2
  162. package/components/Stat/Stat.js +3 -3
  163. package/components/Stat/Stat.js.map +1 -1
  164. package/components/Stat/index.d.ts +2 -1
  165. package/components/Stat.d.ts +4 -0
  166. package/components/StatusMessage/StatusMessage.cjs +1 -1
  167. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  168. package/components/StatusMessage/StatusMessage.js +1 -1
  169. package/components/Stepper/Stepper.cjs +6 -2
  170. package/components/Stepper/Stepper.cjs.map +1 -1
  171. package/components/Stepper/Stepper.d.ts +9 -8
  172. package/components/Stepper/Stepper.js +6 -2
  173. package/{hooks/Wizard/WizardContext.d.ts → components/Stepper/StepperContext.d.ts} +28 -22
  174. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  175. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  176. package/components/Stepper/index.d.ts +6 -2
  177. package/components/Stepper.d.ts +4 -0
  178. package/components/Switch/Switch.cjs +1 -1
  179. package/components/Switch/Switch.d.ts +7 -2
  180. package/components/Switch/Switch.js +1 -1
  181. package/components/Tabs/Tabs.cjs +3 -2
  182. package/components/Tabs/Tabs.cjs.map +1 -1
  183. package/components/Tabs/Tabs.d.ts +21 -16
  184. package/components/Tabs/Tabs.js +3 -2
  185. package/components/Tabs/index.d.ts +4 -2
  186. package/components/Tabs.d.ts +4 -0
  187. package/components/Timeline/Timeline.cjs +3 -3
  188. package/components/Timeline/Timeline.cjs.map +1 -1
  189. package/components/Timeline/Timeline.d.ts +4 -8
  190. package/components/Timeline/Timeline.js +2 -2
  191. package/components/Timeline/Timeline.js.map +1 -1
  192. package/components/Timeline/index.d.ts +4 -3
  193. package/components/Timeline.d.ts +4 -0
  194. package/components/_shared/mergeSx.d.ts +7 -0
  195. package/{formField.sx-DfVbMe0V.js → formField.sx-8_QRnKxv.js} +2 -11
  196. package/formField.sx-8_QRnKxv.js.map +1 -0
  197. package/{formField.sx-CQ1mbk9M.cjs → formField.sx-BAX7KwMR.cjs} +10 -19
  198. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  199. package/index.cjs +38 -15
  200. package/index.cjs.map +1 -1
  201. package/index.d.ts +3 -0
  202. package/index.js +33 -19
  203. package/index.js.map +1 -1
  204. package/mergeSx-BXoNZjB_.js +10 -0
  205. package/mergeSx-BXoNZjB_.js.map +1 -0
  206. package/mergeSx-Dbccoo_H.cjs +9 -0
  207. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  208. package/mui.d.ts +2 -1
  209. package/package.json +28 -42
  210. package/theme/componentStyles.d.ts +1 -1
  211. package/tokens-BRrcP_p_.js +21 -0
  212. package/tokens-BRrcP_p_.js.map +1 -0
  213. package/tokens-jaWWNk39.cjs +20 -0
  214. package/tokens-jaWWNk39.cjs.map +1 -0
  215. package/utils/index.d.ts +2 -0
  216. package/{components/ScrollTopButton → utils}/scrollToTop.d.ts +6 -7
  217. package/Autocomplete-BA-cGASd.js.map +0 -1
  218. package/Autocomplete-C2x-lBvZ.cjs.map +0 -1
  219. package/Avatar-9L7YMxya.cjs.map +0 -1
  220. package/Avatar-BJTr-PBd.js.map +0 -1
  221. package/Card-DG_crfkK.cjs +0 -185
  222. package/Card-DG_crfkK.cjs.map +0 -1
  223. package/Card-Ug-ttVSh.js +0 -186
  224. package/Card-Ug-ttVSh.js.map +0 -1
  225. package/DatePicker-8f_9bwhS.js.map +0 -1
  226. package/DatePicker-DLSfkgGA.cjs.map +0 -1
  227. package/DateTimePicker-CWNW09-O.cjs.map +0 -1
  228. package/DateTimePicker-D4L9GAod.js.map +0 -1
  229. package/Input-Cp911l23.js.map +0 -1
  230. package/Input-DI0jfq5X.cjs.map +0 -1
  231. package/Modal-Bm_HH9cv.cjs.map +0 -1
  232. package/Modal-Bnz6d9m9.js.map +0 -1
  233. package/RadioGroup-CxqDHap1.cjs.map +0 -1
  234. package/RadioGroup-DMi9FvMP.js.map +0 -1
  235. package/Select-3CBOfM2H.js +0 -447
  236. package/Select-3CBOfM2H.js.map +0 -1
  237. package/Select-Bku4f4f8.cjs +0 -446
  238. package/Select-Bku4f4f8.cjs.map +0 -1
  239. package/StatusMessage-C5B6oGZ_.cjs +0 -78
  240. package/StatusMessage-C5B6oGZ_.cjs.map +0 -1
  241. package/StatusMessage-D1GlfQdz.js +0 -79
  242. package/StatusMessage-D1GlfQdz.js.map +0 -1
  243. package/Step-Dq0N72YB.js +0 -49
  244. package/Step-Dq0N72YB.js.map +0 -1
  245. package/Step-a8U8O-91.cjs +0 -48
  246. package/Step-a8U8O-91.cjs.map +0 -1
  247. package/Switch-BIeobv6i.cjs.map +0 -1
  248. package/Switch-DQEOxM2R.js.map +0 -1
  249. package/Tab-Co31KY2k.cjs.map +0 -1
  250. package/Tab-DiK62gRz.js +0 -96
  251. package/Tab-DiK62gRz.js.map +0 -1
  252. package/components/AppBar/AppBarBrand.d.ts +0 -31
  253. package/components/AppBar/AppBarUserMenu.d.ts +0 -65
  254. package/components/Autocomplete/Autocomplete.types.d.ts +0 -1
  255. package/components/DatePicker/DatePicker.types.d.ts +0 -1
  256. package/components/DateTimePicker/DateTimePicker.types.d.ts +0 -1
  257. package/components/Input/Input.types.d.ts +0 -1
  258. package/components/PageLoader/PageLoader.cjs +0 -61
  259. package/components/PageLoader/PageLoader.cjs.map +0 -1
  260. package/components/PageLoader/PageLoader.d.ts +0 -38
  261. package/components/PageLoader/PageLoader.js +0 -61
  262. package/components/PageLoader/PageLoader.js.map +0 -1
  263. package/components/PageLoader/index.d.ts +0 -2
  264. package/components/PageLoader.d.ts +0 -6
  265. package/components/RadioGroup/RadioGroup.types.d.ts +0 -1
  266. package/components/ScrollTopButton/ScrollTopButton.cjs +0 -79
  267. package/components/ScrollTopButton/ScrollTopButton.cjs.map +0 -1
  268. package/components/ScrollTopButton/ScrollTopButton.d.ts +0 -48
  269. package/components/ScrollTopButton/ScrollTopButton.js +0 -79
  270. package/components/ScrollTopButton/ScrollTopButton.js.map +0 -1
  271. package/components/ScrollTopButton/index.d.ts +0 -4
  272. package/components/ScrollTopButton.d.ts +0 -6
  273. package/components/Select/Select.definitions.d.ts +0 -17
  274. package/components/Select/Select.types.d.ts +0 -1
  275. package/components/Select/_parts/SelectSearchHeader.d.ts +0 -15
  276. package/formField.sx-CQ1mbk9M.cjs.map +0 -1
  277. package/formField.sx-DfVbMe0V.js.map +0 -1
  278. package/hooks/Wizard/Wizard.cjs +0 -7
  279. package/hooks/Wizard/Wizard.cjs.map +0 -1
  280. package/hooks/Wizard/Wizard.js +0 -7
  281. package/hooks/Wizard/Wizard.js.map +0 -1
  282. package/hooks/Wizard/index.d.ts +0 -3
  283. package/hooks/Wizard/useWizard.d.ts +0 -9
  284. package/hooks/Wizard.d.ts +0 -2
  285. package/useWizard-CWdIxZzX.cjs +0 -94
  286. package/useWizard-CWdIxZzX.cjs.map +0 -1
  287. package/useWizard-CWq--C3o.js +0 -95
  288. package/useWizard-CWq--C3o.js.map +0 -1
  289. /package/{styles.css → index.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"AppBar.js","sources":["../../../src/components/AppBar/AppBarContext.ts","../../../src/components/AppBar/AppBar.sx.ts","../../../src/components/AppBar/AppBar.tsx","../../../src/components/AppBar/AppBarBrand.tsx","../../../src/components/AppBar/AppBarMenuToggle.tsx","../../../src/components/AppBar/AppBarUserMenu.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del AppBar. Permite que sub-componentes (MenuToggle, etc.)\n * consuman callbacks registrados en el AppBar padre sin tener que pasarlos\n * por props explícitas.\n */\nexport interface AppBarContextValue {\n /** Handler del botón hamburguesa. Si es undefined, el toggle se oculta. */\n onMenuToggle?: () => void;\n /** Estado actual del drawer asociado (usado por el icono del toggle). */\n menuOpen?: boolean;\n}\n\nexport const AppBarContext = createContext<AppBarContextValue | null>(null);\n\n/**\n * Hook para leer el contexto del AppBar. Si se llama fuera de un `<AppBar>`,\n * devuelve un objeto vacío — los sub-componentes caen en modo \"standalone\"\n * con sus defaults en lugar de romper.\n */\nexport function useAppBarContext(): AppBarContextValue {\n const ctx = useContext(AppBarContext);\n return ctx ?? {};\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildAppBarSxArgs {\n /** Altura en px. Default: 64. */\n height?: number;\n /** Color del AppBar (se pasa al MuiAppBar). */\n transparent?: boolean;\n}\n\n/**\n * sx del root del MuiAppBar. Define altura fija y layout flex del Toolbar\n * interno. El color/elevación se dejan a las props nativas de MuiAppBar.\n */\nexport function buildAppBarSx({\n height = 64,\n transparent = false,\n}: BuildAppBarSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: height,\n justifyContent: 'center',\n backgroundImage: 'none',\n ...(transparent && {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n '& .MuiToolbar-root': {\n minHeight: height,\n gap: 1.5,\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n AppBar as MuiAppBar,\n Toolbar,\n type AppBarProps as MuiAppBarProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\n\nimport { AppBarContext } from './AppBarContext';\nimport { buildAppBarSx } from './AppBar.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\nexport type AppBarPosition = 'fixed' | 'sticky' | 'static' | 'absolute' | 'relative';\nexport type AppBarColor =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'transparent'\n | 'inherit';\n\nexport interface AppBarProps {\n /** Contenido del AppBar (típicamente sub-componentes + acciones custom). */\n children?: ReactNode;\n /** Posicionamiento. Default: `'sticky'`. */\n position?: AppBarPosition;\n /** Color. Default: `'default'`. */\n color?: AppBarColor;\n /** Nivel de sombra. Default: 1. */\n elevation?: number;\n /** Altura en px. Default: 64. */\n height?: number;\n /**\n * Handler del botón hamburguesa. Se expone vía AppBarContext para que el\n * sub-componente `<AppBarMenuToggle>` lo consuma sin prop drilling.\n */\n onMenuToggle?: () => void;\n /** Estado del drawer asociado (para que el icono del toggle cambie). */\n menuOpen?: boolean;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.AppBar`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx del root (se mergea después del preset). */\n sx?: SxProps<Theme>;\n /** sx del Toolbar interno. */\n toolbarSx?: SxProps<Theme>;\n className?: string;\n /** Otras props nativas del MuiAppBar (ej. `enableColorOnDark`). */\n appBarProps?: Omit<\n MuiAppBarProps,\n 'position' | 'color' | 'elevation' | 'sx' | 'children' | 'className'\n >;\n}\n\n/**\n * AppBar (header superior) del paquete. Se diseñó como un shell compositivo\n * — el consumer arma el contenido con los sub-componentes que exporta el\n * paquete (`AppBarBrand`, `AppBarMenuToggle`, `AppBarUserMenu`) + cualquier\n * otra cosa custom.\n *\n * Patrón recomendado para navegación en dashboards:\n *\n * ```tsx\n * <AppBar onMenuToggle={toggleDrawer}>\n * <AppBarMenuToggle />\n * <AppBarBrand logo={<Logo />} title=\"Afiliaciones\" />\n * <Box sx={{ flex: 1 }} />\n * <AppBarUserMenu user={user} items={menuItems} />\n * </AppBar>\n * ```\n */\nexport function AppBar({\n children,\n position = 'sticky',\n color = 'default',\n elevation = 1,\n height = 64,\n onMenuToggle,\n menuOpen,\n preset,\n sx,\n toolbarSx,\n className,\n appBarProps,\n}: AppBarProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('AppBar', preset, theme);\n\n const transparent = color === 'transparent';\n\n const rootSx: SxProps<Theme> = [\n buildAppBarSx({ height, transparent }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const contextValue = useMemo(\n () => ({ onMenuToggle, menuOpen }),\n [onMenuToggle, menuOpen],\n );\n\n return (\n <AppBarContext.Provider value={contextValue}>\n <MuiAppBar\n position={position}\n color={color === 'transparent' ? 'transparent' : color}\n elevation={elevation}\n className={className}\n sx={rootSx}\n {...appBarProps}\n >\n <Toolbar sx={toolbarSx}>{children}</Toolbar>\n </MuiAppBar>\n </AppBarContext.Provider>\n );\n}\n\nexport default AppBar;\n","import React, { type ReactNode, type MouseEvent } from 'react';\nimport { Box, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface AppBarBrandProps {\n /** Logo (img, svg, componente). Se muestra a la izquierda del título. */\n logo?: ReactNode;\n /** Título del sistema. */\n title?: ReactNode;\n /** Subtítulo opcional (p.ej. nombre de módulo actual). */\n subtitle?: ReactNode;\n /** Handler de click sobre todo el brand (típicamente navega al home). */\n onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n /** Oculta solo el título en viewports pequeños (mantiene el logo). Default: true. */\n hideTitleOnMobile?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Brand del AppBar: combina logo + título + subtítulo opcional con un\n * click handler global (típicamente para navegar al home).\n *\n * ```tsx\n * <AppBarBrand\n * logo={<img src={logo} alt=\"\" height={32} />}\n * title=\"Afiliaciones\"\n * subtitle=\"Panel administrativo\"\n * onClick={() => navigate('/')}\n * />\n * ```\n */\nexport function AppBarBrand({\n logo,\n title,\n subtitle,\n onClick,\n hideTitleOnMobile = true,\n sx,\n className,\n}: AppBarBrandProps) {\n const clickable = !!onClick;\n\n const rootSx: SxProps<Theme> = [\n {\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n cursor: clickable ? 'pointer' : 'default',\n userSelect: 'none',\n minWidth: 0,\n },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n return (\n <Box\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n onClick={onClick}\n onKeyDown={(event) => {\n if (!clickable) 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={rootSx}\n >\n {logo && (\n <Box\n component=\"span\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n }}\n >\n {logo}\n </Box>\n )}\n {(title || subtitle) && (\n <Box\n sx={{\n display: hideTitleOnMobile\n ? { xs: 'none', sm: 'flex' }\n : 'flex',\n flexDirection: 'column',\n minWidth: 0,\n lineHeight: 1.2,\n }}\n >\n {title && (\n <Typography\n component=\"span\"\n variant=\"subtitle1\"\n noWrap\n sx={{ fontWeight: 700 }}\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n component=\"span\"\n variant=\"caption\"\n color=\"text.secondary\"\n noWrap\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default AppBarBrand;\n","import React, { type ReactNode } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport MenuOpenIcon from '@mui/icons-material/MenuOpen';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useAppBarContext } from './AppBarContext';\n\nexport interface AppBarMenuToggleProps {\n /**\n * Callback explícito. Si se omite, se consume del `AppBarContext`. Útil para\n * usar el toggle fuera de un `<AppBar>` (p.ej. en un header custom).\n */\n onClick?: () => void;\n /** Estado del drawer asociado. Si se omite, se lee del `AppBarContext`. */\n menuOpen?: boolean;\n /** Icono custom cuando el drawer está cerrado. Default: `<MenuIcon />`. */\n closedIcon?: ReactNode;\n /** Icono custom cuando el drawer está abierto. Default: `<MenuOpenIcon />`. */\n openIcon?: ReactNode;\n /** Texto de tooltip. Default: \"Menú\". */\n tooltip?: string;\n /** aria-label del botón. Default: el mismo tooltip. */\n ariaLabel?: string;\n /** Tamaño del IconButton. Default: `'medium'`. */\n size?: 'small' | 'medium' | 'large';\n /** Oculta el botón cuando no hay handler disponible. Default: true. */\n hideIfNoHandler?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Botón hamburguesa del AppBar. Por default consume `onMenuToggle` y\n * `menuOpen` del `AppBarContext` (pattern composicional), pero permite\n * overrides explícitos si se usa fuera de un `<AppBar>`.\n *\n * ```tsx\n * <AppBar onMenuToggle={toggleDrawer} menuOpen={open}>\n * <AppBarMenuToggle />\n * ...\n * </AppBar>\n * ```\n */\nexport function AppBarMenuToggle({\n onClick,\n menuOpen,\n closedIcon,\n openIcon,\n tooltip = 'Menú',\n ariaLabel,\n size = 'medium',\n hideIfNoHandler = true,\n sx,\n className,\n}: AppBarMenuToggleProps) {\n const ctx = useAppBarContext();\n\n const handler = onClick ?? ctx.onMenuToggle;\n const open = menuOpen ?? ctx.menuOpen ?? false;\n\n if (!handler && hideIfNoHandler) {\n return null;\n }\n\n const icon = open\n ? (openIcon ?? <MenuOpenIcon />)\n : (closedIcon ?? <MenuIcon />);\n\n return (\n <Tooltip title={tooltip} arrow>\n <span>\n <IconButton\n size={size}\n edge=\"start\"\n color=\"inherit\"\n aria-label={ariaLabel ?? tooltip}\n onClick={handler}\n disabled={!handler}\n className={className}\n sx={sx}\n >\n {icon}\n </IconButton>\n </span>\n </Tooltip>\n );\n}\n\nexport default AppBarMenuToggle;\n","import React, { useState, type ReactNode, type MouseEvent } from 'react';\nimport {\n Avatar,\n Box,\n Divider,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface AppBarUserMenuItem {\n /** Key única. Si no se provee, se usa el label. */\n key?: string;\n /** Texto del item. */\n label: ReactNode;\n /** Icono opcional a la izquierda. */\n icon?: ReactNode;\n /** Handler de click. */\n onClick?: (event: MouseEvent<HTMLLIElement>) => void;\n /** Deshabilita el item. */\n disabled?: boolean;\n /** Pinta el item en color error (típico para \"Cerrar sesión\"). */\n danger?: boolean;\n /** Inserta un `<Divider />` ANTES de este item. */\n dividerBefore?: boolean;\n}\n\nexport interface AppBarUserMenuUser {\n /** Nombre a mostrar en el header del menú. */\n name?: ReactNode;\n /** Email / subtítulo secundario. */\n email?: ReactNode;\n /** URL del avatar. Si se omite, se muestran iniciales del `name`. */\n avatarUrl?: string;\n /** Iniciales custom. Si se omite, se calculan del `name`. */\n initials?: string;\n}\n\nexport interface AppBarUserMenuProps {\n /** Datos del usuario a mostrar. */\n user?: AppBarUserMenuUser;\n /** Items del menú. */\n items: AppBarUserMenuItem[];\n /**\n * Si `true`, oculta la fila con nombre + email en el tope del menú.\n * Default: `false`.\n */\n hideUserHeader?: boolean;\n /** Tooltip del trigger. Default: \"Cuenta\". */\n triggerTooltip?: string;\n /** Tamaño del Avatar en px. Default: 36. */\n avatarSize?: number;\n /** sx del Paper del Menu. */\n menuSx?: SxProps<Theme>;\n /** sx del trigger (IconButton). */\n triggerSx?: SxProps<Theme>;\n className?: string;\n}\n\nfunction computeInitials(name?: ReactNode): string {\n if (typeof name !== 'string') return '?';\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return '?';\n const first = parts[0]?.charAt(0) ?? '';\n const last = parts.length > 1 ? (parts[parts.length - 1]?.charAt(0) ?? '') : '';\n return (first + last).toUpperCase();\n}\n\n/**\n * Menú de usuario del AppBar: avatar clickable que despliega un menú con la\n * info del usuario (nombre + email) y una lista de acciones (perfil, cerrar\n * sesión, etc).\n *\n * ```tsx\n * <AppBarUserMenu\n * user={{ name: 'Andrea', email: 'a@soyfri.com' }}\n * items={[\n * { label: 'Perfil', icon: <PersonIcon />, onClick: goToProfile },\n * { label: 'Cerrar sesión', icon: <LogoutIcon />, onClick: logout, danger: true, dividerBefore: true },\n * ]}\n * />\n * ```\n */\nexport function AppBarUserMenu({\n user,\n items,\n hideUserHeader = false,\n triggerTooltip = 'Cuenta',\n avatarSize = 36,\n menuSx,\n triggerSx,\n className,\n}: AppBarUserMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = () => setAnchorEl(null);\n\n const handleItemClick = (\n event: MouseEvent<HTMLLIElement>,\n item: AppBarUserMenuItem,\n ) => {\n event.stopPropagation();\n item.onClick?.(event);\n handleClose();\n };\n\n const initials = user?.initials ?? computeInitials(user?.name);\n const showUserHeader = !hideUserHeader && (user?.name || user?.email);\n\n return (\n <Box component=\"span\" className={className}>\n <Tooltip title={triggerTooltip} arrow>\n <IconButton\n onClick={handleOpen}\n size=\"small\"\n aria-label={triggerTooltip}\n aria-haspopup=\"menu\"\n aria-expanded={open || undefined}\n sx={[{ p: 0.5 }, ...(Array.isArray(triggerSx) ? triggerSx : triggerSx ? [triggerSx] : [])]}\n >\n <Avatar\n src={user?.avatarUrl}\n sx={{\n width: avatarSize,\n height: avatarSize,\n fontSize: avatarSize * 0.4,\n fontWeight: 600,\n }}\n >\n {!user?.avatarUrl && initials}\n </Avatar>\n </IconButton>\n </Tooltip>\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: { minWidth: 240, ...(menuSx as any) },\n },\n }}\n >\n {showUserHeader && (\n <Box\n sx={{\n px: 2,\n py: 1.25,\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n }}\n >\n {user?.name && (\n <Typography variant=\"subtitle2\" noWrap sx={{ fontWeight: 700 }}>\n {user.name}\n </Typography>\n )}\n {user?.email && (\n <Typography variant=\"caption\" color=\"text.secondary\" noWrap>\n {user.email}\n </Typography>\n )}\n </Box>\n )}\n {showUserHeader && <Divider />}\n\n {items.map((item, idx) => {\n const key = item.key ?? `${String(item.label)}-${idx}`;\n const node = (\n <MenuItem\n key={key}\n disabled={item.disabled}\n onClick={(event) => handleItemClick(event, item)}\n sx={(theme) => ({\n color: item.danger ? theme.palette.error.main : 'inherit',\n '& .MuiListItemIcon-root': {\n color: item.danger\n ? theme.palette.error.main\n : 'inherit',\n minWidth: 32,\n },\n })}\n >\n {item.icon && <ListItemIcon>{item.icon}</ListItemIcon>}\n <ListItemText primary={item.label} />\n </MenuItem>\n );\n\n if (item.dividerBefore && idx > 0) {\n return (\n <React.Fragment key={`${key}-frag`}>\n <Divider />\n {node}\n </React.Fragment>\n );\n }\n return node;\n })}\n </Menu>\n </Box>\n );\n}\n\nexport default AppBarUserMenu;\n"],"names":["MuiAppBar","_a","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,gBAAgB,cAAyC,IAAI;AAOnE,SAAS,mBAAuC;AACrD,QAAM,MAAM,WAAW,aAAa;AACpC,SAAO,oBAAO,CAAA;AAChB;ACXO,SAAS,cAAc;AAAA,EAC5B,SAAS;AAAA,EACT,cAAc;AAChB,GAAsC;AACpC,SAAO,CAAC,UAAW;AAAA,IACjB,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,KACb,eAAe;AAAA,IACjB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,cAAc,aAAa,MAAM,QAAQ,OAAO;AAAA,EAAA,IAPjC;AAAA,IASjB,sBAAsB;AAAA,MACpB,WAAW;AAAA,MACX,KAAK;AAAA,IAAA;AAAA,EACP;AAEJ;AC6CO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;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;AAEtD,QAAM,cAAc,UAAU;AAE9B,QAAM,SAAyB;AAAA,IAC7B,cAAc,EAAE,QAAQ,aAAa;AAAA,IACrC,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,eAAe;AAAA,IACnB,OAAO,EAAE,cAAc;IACvB,CAAC,cAAc,QAAQ;AAAA,EAAA;AAGzB,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,UAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAO,UAAU,gBAAgB,gBAAgB;AAAA,MACjD;AAAA,MACA;AAAA,MACA,IAAI;AAAA,OACA,cANL;AAAA,MAQC,UAAA,oBAAC,SAAA,EAAQ,IAAI,WAAY,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA,GAEtC;AAEJ;ACxFO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,YAAY,CAAC,CAAC;AAEpB,QAAM,SAAyB;AAAA,IAC7B;AAAA,MACE,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,QAAQ,YAAY,YAAY;AAAA,MAChC,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA;AAAA,IAEZ,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM,YAAY,WAAW;AAAA,MAC7B,UAAU,YAAY,IAAI;AAAA,MAC1B;AAAA,MACA,WAAW,CAAC,UAAU;AACpB,YAAI,CAAC,UAAW;AAChB,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,QACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,YAAY;AAAA,YAAA;AAAA,YAGb,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,SAGH,SAAS,aACT;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS,oBACL,EAAE,IAAI,QAAQ,IAAI,WAClB;AAAA,cACJ,eAAe;AAAA,cACf,UAAU;AAAA,cACV,YAAY;AAAA,YAAA;AAAA,YAGb,UAAA;AAAA,cAAA,SACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,QAAM;AAAA,kBACN,IAAI,EAAE,YAAY,IAAA;AAAA,kBAEjB,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGJ,YACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,QAAM;AAAA,kBAEL,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAIR;ACzEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB;AAAA,EACA;AACF,GAA0B;;AACxB,QAAM,MAAM,iBAAA;AAEZ,QAAM,UAAU,4BAAW,IAAI;AAC/B,QAAM,QAAO,mCAAY,IAAI,aAAhB,YAA4B;AAEzC,MAAI,CAAC,WAAW,iBAAiB;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,OACR,8BAAY,oBAAC,gBAAa,IAC1B,sDAAe,UAAA,CAAA,CAAS;AAE7B,6BACG,SAAA,EAAQ,OAAO,SAAS,OAAK,MAC5B,8BAAC,QAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,cAAY,gCAAa;AAAA,MACzB,SAAS;AAAA,MACT,UAAU,CAAC;AAAA,MACX;AAAA,MACA;AAAA,MAEC,UAAA;AAAA,IAAA;AAAA,EAAA,GAEL,EAAA,CACF;AAEJ;ACvBA,SAAS,gBAAgB,MAA0B;;AACjD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,QAAM,QAAQ,KAAK,KAAA,EAAO,MAAM,KAAK,EAAE,OAAO,OAAO;AACrD,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,QAAM,SAAQ,iBAAM,CAAC,MAAP,mBAAU,OAAO,OAAjB,YAAuB;AACrC,QAAM,OAAO,MAAM,SAAS,KAAK,iBAAM,MAAM,SAAS,CAAC,MAAtB,mBAAyB,OAAO,OAAhC,YAAsC,KAAM;AAC7E,UAAQ,QAAQ,MAAM,YAAA;AACxB;AAiBO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,GAAwB;;AACtB,QAAM,CAAC,UAAU,WAAW,IAAI,SAA6B,IAAI;AACjE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,aAAa,CAAC,UAAmC;AACrD,gBAAY,MAAM,aAAa;AAAA,EACjC;AACA,QAAM,cAAc,MAAM,YAAY,IAAI;AAE1C,QAAM,kBAAkB,CACtB,OACA,SACG;;AACH,UAAM,gBAAA;AACN,KAAAC,MAAA,KAAK,YAAL,gBAAAA,IAAA,WAAe;AACf,gBAAA;AAAA,EACF;AAEA,QAAM,YAAW,kCAAM,aAAN,YAAkB,gBAAgB,6BAAM,IAAI;AAC7D,QAAM,iBAAiB,CAAC,oBAAmB,6BAAM,UAAQ,6BAAM;AAE/D,SACE,qBAAC,KAAA,EAAI,WAAU,QAAO,WACpB,UAAA;AAAA,IAAA,oBAAC,SAAA,EAAQ,OAAO,gBAAgB,OAAK,MACnC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAK;AAAA,QACL,cAAY;AAAA,QACZ,iBAAc;AAAA,QACd,iBAAe,QAAQ;AAAA,QACvB,IAAI,CAAC,EAAE,GAAG,IAAA,GAAO,GAAI,MAAM,QAAQ,SAAS,IAAI,YAAY,YAAY,CAAC,SAAS,IAAI,CAAA,CAAG;AAAA,QAEzF,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK,6BAAM;AAAA,YACX,IAAI;AAAA,cACF,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,UAAU,aAAa;AAAA,cACvB,YAAY;AAAA,YAAA;AAAA,YAGb,UAAA,EAAC,6BAAM,cAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MACvB;AAAA,IAAA,GAEJ;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,cAAc,EAAE,UAAU,UAAU,YAAY,QAAA;AAAA,QAChD,iBAAiB,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,QAChD,WAAW;AAAA,UACT,OAAO;AAAA,YACL,IAAI,iBAAE,UAAU,OAAS;AAAA,UAAe;AAAA,QAC1C;AAAA,QAGD,UAAA;AAAA,UAAA,kBACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,SAAS;AAAA,gBACT,eAAe;AAAA,gBACf,KAAK;AAAA,cAAA;AAAA,cAGN,UAAA;AAAA,iBAAA,6BAAM,SACL,oBAAC,YAAA,EAAW,SAAQ,aAAY,QAAM,MAAC,IAAI,EAAE,YAAY,IAAA,GACtD,eAAK,MACR;AAAA,iBAED,6BAAM,UACL,oBAAC,YAAA,EAAW,SAAQ,WAAU,OAAM,kBAAiB,QAAM,MACxD,UAAA,KAAK,MAAA,CACR;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIL,sCAAmB,SAAA,EAAQ;AAAA,UAE3B,MAAM,IAAI,CAAC,MAAM,QAAQ;;AACxB,kBAAM,OAAMA,MAAA,KAAK,QAAL,OAAAA,MAAY,GAAG,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG;AACpD,kBAAM,OACJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,UAAU,KAAK;AAAA,gBACf,SAAS,CAAC,UAAU,gBAAgB,OAAO,IAAI;AAAA,gBAC/C,IAAI,CAAC,WAAW;AAAA,kBACd,OAAO,KAAK,SAAS,MAAM,QAAQ,MAAM,OAAO;AAAA,kBAChD,2BAA2B;AAAA,oBACzB,OAAO,KAAK,SACR,MAAM,QAAQ,MAAM,OACpB;AAAA,oBACJ,UAAU;AAAA,kBAAA;AAAA,gBACZ;AAAA,gBAGD,UAAA;AAAA,kBAAA,KAAK,QAAQ,oBAAC,cAAA,EAAc,UAAA,KAAK,MAAK;AAAA,kBACvC,oBAAC,cAAA,EAAa,SAAS,KAAK,MAAA,CAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,cAd9B;AAAA,YAAA;AAkBT,gBAAI,KAAK,iBAAiB,MAAM,GAAG;AACjC,qBACE,qBAACC,eAAM,UAAN,EACC,UAAA;AAAA,gBAAA,oBAAC,SAAA,EAAQ;AAAA,gBACR;AAAA,cAAA,EAAA,GAFkB,GAAG,GAAG,OAG3B;AAAA,YAEJ;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
1
+ {"version":3,"file":"AppBar.js","sources":["../../../src/components/AppBar/AppBarContext.ts","../../../src/components/AppBar/AppBar.sx.ts","../../../src/components/AppBar/AppBar.tsx","../../../src/components/AppBar/AppBarMenuToggle.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del AppBar. Permite que sub-componentes (MenuToggle, etc.)\n * consuman callbacks registrados en el AppBar padre sin tener que pasarlos\n * por props explícitas.\n */\nexport interface AppBarContextValue {\n /** Handler del botón hamburguesa. Si es undefined, el toggle se oculta. */\n onMenuToggle?: () => void;\n /** Estado actual del drawer asociado (usado por el icono del toggle). */\n menuOpen?: boolean;\n}\n\nexport const AppBarContext = createContext<AppBarContextValue | null>(null);\n\n/**\n * Hook para leer el contexto del AppBar. Si se llama fuera de un `<AppBar>`,\n * devuelve un objeto vacío — los sub-componentes caen en modo \"standalone\"\n * con sus defaults en lugar de romper.\n */\nexport function useAppBarContext(): AppBarContextValue {\n const ctx = useContext(AppBarContext);\n return ctx ?? {};\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildAppBarSxArgs {\n /** Altura en px. Default: 64. */\n height?: number;\n /** Color del AppBar (se pasa al MuiAppBar). */\n transparent?: boolean;\n}\n\n/**\n * sx del root del MuiAppBar. Define altura fija y layout flex del Toolbar\n * interno. El color/elevación se dejan a las props nativas de MuiAppBar.\n */\nexport function buildAppBarSx({\n height = 64,\n transparent = false,\n}: BuildAppBarSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: height,\n justifyContent: 'center',\n backgroundImage: 'none',\n ...(transparent && {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n '& .MuiToolbar-root': {\n minHeight: height,\n gap: 1.5,\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n AppBar as MuiAppBar,\n Toolbar,\n type AppBarProps as MuiAppBarProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\n\nimport { AppBarContext } from './AppBarContext';\nimport { buildAppBarSx } from './AppBar.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\nexport type AppBarPosition = 'fixed' | 'sticky' | 'static' | 'absolute' | 'relative';\nexport type AppBarColor =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'transparent'\n | 'inherit';\n\nexport interface AppBarProps {\n /** Contenido del AppBar (típicamente sub-componentes + acciones custom). */\n children?: ReactNode;\n /** Posicionamiento. Default: `'sticky'`. */\n position?: AppBarPosition;\n /** Color. Default: `'default'`. */\n color?: AppBarColor;\n /** Nivel de sombra. Default: 1. */\n elevation?: number;\n /** Altura en px. Default: 64. */\n height?: number;\n /**\n * Handler del botón hamburguesa. Se expone vía AppBarContext para que el\n * sub-componente `<AppBarMenuToggle>` lo consuma sin prop drilling.\n */\n onMenuToggle?: () => void;\n /** Estado del drawer asociado (para que el icono del toggle cambie). */\n menuOpen?: boolean;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.AppBar`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx del root (se mergea después del preset). */\n sx?: SxProps<Theme>;\n /** sx del Toolbar interno. */\n toolbarSx?: SxProps<Theme>;\n className?: string;\n /** Otras props nativas del MuiAppBar (ej. `enableColorOnDark`). */\n appBarProps?: Omit<\n MuiAppBarProps,\n 'position' | 'color' | 'elevation' | 'sx' | 'children' | 'className'\n >;\n}\n\n/**\n * AppBar (header superior) del paquete. Se diseñó como un shell compositivo\n * — el consumer arma el contenido libremente (logo, título, menú de usuario,\n * etc.) y puede usar `<AppBarMenuToggle>` para el botón hamburguesa\n * integrado con el contexto.\n *\n * Patrón recomendado para navegación en dashboards:\n *\n * ```tsx\n * <AppBar onMenuToggle={toggleDrawer}>\n * <AppBarMenuToggle />\n * <MyBrand />\n * <Box sx={{ flex: 1 }} />\n * <MyUserMenu />\n * </AppBar>\n * ```\n */\nexport function AppBar({\n children,\n position = 'sticky',\n color = 'default',\n elevation = 1,\n height = 64,\n onMenuToggle,\n menuOpen,\n preset,\n sx,\n toolbarSx,\n appBarProps,\n}: AppBarProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('AppBar', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n buildAppBarSx({ height, transparent: color === 'transparent' }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const contextValue = useMemo(\n () => ({ onMenuToggle, menuOpen }),\n [onMenuToggle, menuOpen],\n );\n\n return (\n <AppBarContext.Provider value={contextValue}>\n <MuiAppBar\n position={position}\n color={color}\n elevation={elevation}\n sx={rootSx}\n {...appBarProps}\n >\n <Toolbar sx={toolbarSx}>{children}</Toolbar>\n </MuiAppBar>\n </AppBarContext.Provider>\n );\n}\n\nexport default AppBar;\n","import { type ReactNode } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport MenuOpenIcon from '@mui/icons-material/MenuOpen';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useAppBarContext } from './AppBarContext';\n\nexport interface AppBarMenuToggleProps {\n /**\n * Callback explícito. Si se omite, se consume del `AppBarContext`. Útil para\n * usar el toggle fuera de un `<AppBar>` (p.ej. en un header custom).\n */\n onClick?: () => void;\n /** Estado del drawer asociado. Si se omite, se lee del `AppBarContext`. */\n menuOpen?: boolean;\n /** Icono custom cuando el drawer está cerrado. Default: `<MenuIcon />`. */\n closedIcon?: ReactNode;\n /** Icono custom cuando el drawer está abierto. Default: `<MenuOpenIcon />`. */\n openIcon?: ReactNode;\n /** Texto de tooltip. Default: \"Menú\". */\n tooltip?: string;\n /** aria-label del botón. Default: el mismo tooltip. */\n ariaLabel?: string;\n /** Tamaño del IconButton. Default: `'medium'`. */\n size?: 'small' | 'medium' | 'large';\n /** Oculta el botón cuando no hay handler disponible. Default: true. */\n hideIfNoHandler?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Botón hamburguesa del AppBar. Por default consume `onMenuToggle` y\n * `menuOpen` del `AppBarContext` (pattern composicional), pero permite\n * overrides explícitos si se usa fuera de un `<AppBar>`.\n *\n * ```tsx\n * <AppBar onMenuToggle={toggleDrawer} menuOpen={open}>\n * <AppBarMenuToggle />\n * ...\n * </AppBar>\n * ```\n */\nexport function AppBarMenuToggle({\n onClick,\n menuOpen,\n closedIcon,\n openIcon,\n tooltip = 'Menú',\n ariaLabel,\n size = 'medium',\n hideIfNoHandler = true,\n sx,\n className,\n}: AppBarMenuToggleProps) {\n const ctx = useAppBarContext();\n\n const handler = onClick ?? ctx.onMenuToggle;\n const open = menuOpen ?? ctx.menuOpen ?? false;\n\n if (!handler && hideIfNoHandler) {\n return null;\n }\n\n const icon = open\n ? (openIcon ?? <MenuOpenIcon />)\n : (closedIcon ?? <MenuIcon />);\n\n return (\n <Tooltip title={tooltip} arrow>\n <span>\n <IconButton\n size={size}\n edge=\"start\"\n color=\"inherit\"\n aria-label={ariaLabel ?? tooltip}\n onClick={handler}\n disabled={!handler}\n className={className}\n sx={sx}\n >\n {icon}\n </IconButton>\n </span>\n </Tooltip>\n );\n}\n\nexport default AppBarMenuToggle;\n"],"names":["MuiAppBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,gBAAgB,cAAyC,IAAI;AAOnE,SAAS,mBAAuC;AACrD,QAAM,MAAM,WAAW,aAAa;AACpC,SAAO,oBAAO,CAAA;AAChB;ACXO,SAAS,cAAc;AAAA,EAC5B,SAAS;AAAA,EACT,cAAc;AAChB,GAAsC;AACpC,SAAO,CAAC,UAAW;AAAA,IACjB,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,KACb,eAAe;AAAA,IACjB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,cAAc,aAAa,MAAM,QAAQ,OAAO;AAAA,EAAA,IAPjC;AAAA,IASjB,sBAAsB;AAAA,MACpB,WAAW;AAAA,MACX,KAAK;AAAA,IAAA;AAAA,EACP;AAEJ;AC6CO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgB;AACd,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,UAAU,QAAQ,KAAK;AAEtD,QAAM,SAAyB;AAAA,IAC7B,cAAc,EAAE,QAAQ,aAAa,UAAU,eAAe;AAAA,IAC9D,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,eAAe;AAAA,IACnB,OAAO,EAAE,cAAc;IACvB,CAAC,cAAc,QAAQ;AAAA,EAAA;AAGzB,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,UAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI;AAAA,OACA,cALL;AAAA,MAOC,UAAA,oBAAC,SAAA,EAAQ,IAAI,WAAY,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA,GAEtC;AAEJ;ACxEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB;AAAA,EACA;AACF,GAA0B;;AACxB,QAAM,MAAM,iBAAA;AAEZ,QAAM,UAAU,4BAAW,IAAI;AAC/B,QAAM,QAAO,mCAAY,IAAI,aAAhB,YAA4B;AAEzC,MAAI,CAAC,WAAW,iBAAiB;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,OACR,8BAAY,oBAAC,gBAAa,IAC1B,sDAAe,UAAA,CAAA,CAAS;AAE7B,6BACG,SAAA,EAAQ,OAAO,SAAS,OAAK,MAC5B,8BAAC,QAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,cAAY,gCAAa;AAAA,MACzB,SAAS;AAAA,MACT,UAAU,CAAC;AAAA,MACX;AAAA,MACA;AAAA,MAEC,UAAA;AAAA,IAAA;AAAA,EAAA,GAEL,EAAA,CACF;AAEJ;"}
@@ -1,12 +1,6 @@
1
1
  export { AppBar, default } from './AppBar';
2
2
  export type { AppBarProps, AppBarPosition, AppBarColor, } from './AppBar';
3
- export { AppBarBrand } from './AppBarBrand';
4
- export type { AppBarBrandProps } from './AppBarBrand';
5
3
  export { AppBarMenuToggle } from './AppBarMenuToggle';
6
4
  export type { AppBarMenuToggleProps } from './AppBarMenuToggle';
7
- export { AppBarUserMenu } from './AppBarUserMenu';
8
- export type { AppBarUserMenuProps, AppBarUserMenuItem, AppBarUserMenuUser, } from './AppBarUserMenu';
9
5
  export { AppBarContext, useAppBarContext } from './AppBarContext';
10
6
  export type { AppBarContextValue } from './AppBarContext';
11
- export { buildAppBarSx } from './AppBar.sx';
12
- export type { BuildAppBarSxArgs } from './AppBar.sx';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const Autocomplete = require("../../Autocomplete-C2x-lBvZ.cjs");
3
+ const Autocomplete = require("../../Autocomplete-4i0dNDKr.cjs");
4
4
  exports.Autocomplete = Autocomplete.Autocomplete;
5
5
  exports.AutocompleteSelect = Autocomplete.AutocompleteSelect;
6
6
  exports.default = Autocomplete.Autocomplete;
@@ -1,7 +1,7 @@
1
1
  import { ReactNode, SyntheticEvent } from 'react';
2
2
  import { TextFieldProps } from '@mui/material';
3
3
  import { SxProps, Theme } from '@mui/material/styles';
4
- import { Control, RegisterOptions } from 'react-hook-form';
4
+ import { RegisterOptions } from 'react-hook-form';
5
5
  export interface SelectOption {
6
6
  value: string | number;
7
7
  label: string;
@@ -38,7 +38,6 @@ export type BaseAutocompleteProps<_TValue extends SelectOption['value'] = Select
38
38
  /** Texto cuando está cargando. */
39
39
  loadingText?: ReactNode;
40
40
  sx?: SxProps<Theme>;
41
- className?: string;
42
41
  /**
43
42
  * Nombre del preset de estilo registrado en `theme.styles.Autocomplete`.
44
43
  * - `"default"` (o ausente) = estilo built-in del paquete.
@@ -69,15 +68,18 @@ export interface ControlledAutocompleteProps<TValue extends SelectOption['value'
69
68
  }
70
69
  export interface RHFAutocompleteProps<TValue extends SelectOption['value'] = SelectOption['value']> extends BaseAutocompleteProps<TValue> {
71
70
  name: string;
72
- control: Control<any>;
71
+ control: any;
73
72
  validation?: RegisterOptions;
73
+ /**
74
+ * Side-effect que corre después de que RHF actualiza el form state.
75
+ * Útil para cascadas entre campos. NO reemplaza al handler de RHF.
76
+ */
77
+ onValueChange?: (val: TValue | TValue[] | null) => void;
74
78
  value?: never;
75
79
  onChange?: never;
76
80
  }
77
81
  export type AutocompleteProps<TValue extends SelectOption['value'] = SelectOption['value']> = ControlledAutocompleteProps<TValue> | RHFAutocompleteProps<TValue>;
78
82
  export declare function Autocomplete<TValue extends SelectOption['value'] = SelectOption['value']>(props: AutocompleteProps<TValue>): import("react/jsx-runtime").JSX.Element;
79
- /**
80
- * @deprecated Usar `Autocomplete` en su lugar. Alias mantenido para retro-compatibilidad.
81
- */
83
+ /** Alias de `Autocomplete`. Ambos nombres son equivalentes. */
82
84
  export declare const AutocompleteSelect: typeof Autocomplete;
83
85
  export default Autocomplete;
@@ -7,11 +7,15 @@ export declare const resolveMultipleValue: (options: SelectOption[], value: Sele
7
7
  /** Merge de sx base + extra del consumer, respetando el contrato de MUI. */
8
8
  export declare const mergeSx: (base: SxProps<Theme>, extra?: SxProps<Theme>) => SxProps<Theme>;
9
9
  /**
10
- * Compara dos valores resueltos (single o multiple) por value para decidir
11
- * si son estructuralmente iguales. Se usa para estabilizar la referencia que
12
- * se pasa a MUI Autocomplete (MUI compara value por referencia con `!==`,
13
- * y una nueva referencia — aunque el contenido sea igual — dispara
10
+ * Compara dos valores resueltos (single o multiple) estructuralmente para
11
+ * decidir si se puede reusar la referencia previa. Se usa para estabilizar la
12
+ * referencia que se pasa a MUI Autocomplete (MUI compara value por referencia
13
+ * con `!==`, y una nueva referencia — aunque el contenido sea igual — dispara
14
14
  * `resetInputValue` y borra el texto mientras el usuario tipea).
15
+ *
16
+ * Comparamos todas las props del SelectOption, no solo `value`, para que un
17
+ * refresh de metadata (label/img/etc.) invalide la referencia estabilizada
18
+ * y la UI muestre los datos actualizados.
15
19
  */
16
20
  export declare const areResolvedValuesEqual: (prev: SelectOption | SelectOption[] | null, next: SelectOption | SelectOption[] | null, multiple: boolean) => boolean;
17
21
  /** Determina si un valor resuelto está vacío (para placeholder/shrink). */
@@ -1,4 +1,4 @@
1
- import { A, a, A as A2 } from "../../Autocomplete-BA-cGASd.js";
1
+ import { A, a, A as A2 } from "../../Autocomplete-i3-V38n1.js";
2
2
  export {
3
3
  A as Autocomplete,
4
4
  a as AutocompleteSelect,
@@ -1,19 +1,16 @@
1
1
  import { default as React } from 'react';
2
2
  import { SelectOption, RenderOptionItem } from '../Autocomplete';
3
3
  interface AutocompleteOptionProps {
4
- liProps: React.HTMLAttributes<HTMLLIElement> & {
5
- key?: React.Key;
6
- };
4
+ liProps: React.HTMLAttributes<HTMLLIElement>;
7
5
  option: SelectOption;
8
6
  customRender?: RenderOptionItem;
9
7
  }
10
8
  /**
11
- * Render por defecto de un <li> del dropdown del Autocomplete.
12
- * Se expone como componente para testear y extender fácilmente, pero MUI
13
- * lo llama desde `renderOption={(props, option) => ...}` en el padre.
9
+ * Render por defecto de un `<li>` del dropdown del Autocomplete.
10
+ * MUI lo invoca desde `renderOption={(props, option) => ...}` en el padre.
14
11
  *
15
- * El `key` lo manejamos nosotros (no spreadeamos junto al resto) porque MUI
16
- * lo inyecta como parte de `propsLi` y React exige que sea prop directo.
12
+ * La `key` la maneja el padre (`renderOption` en Autocomplete.tsx). Este
13
+ * componente solo recibe los props restantes del `<li>` para spread.
17
14
  */
18
15
  export declare const AutocompleteOption: React.FC<AutocompleteOptionProps>;
19
16
  export default AutocompleteOption;
@@ -1,2 +1,2 @@
1
1
  export { Autocomplete, AutocompleteSelect, default } from './Autocomplete';
2
- export type { AutocompleteProps, SelectOption, BaseAutocompleteProps, ControlledAutocompleteProps, RHFAutocompleteProps, RenderOptionItem, RenderChipLabel, LabelPosition, AutocompleteSize, } from './Autocomplete.types';
2
+ export type { AutocompleteProps, SelectOption, BaseAutocompleteProps, ControlledAutocompleteProps, RHFAutocompleteProps, RenderOptionItem, RenderChipLabel, LabelPosition, AutocompleteSize, } from './Autocomplete';
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Avatar = require("../../Avatar-9L7YMxya.cjs");
3
+ const Avatar = require("../../Avatar-CuSrK8Wn.cjs");
4
4
  exports.Avatar = Avatar.Avatar;
5
5
  //# sourceMappingURL=Avatar.cjs.map
@@ -1,4 +1,4 @@
1
- import { A } from "../../Avatar-BJTr-PBd.js";
1
+ import { A } from "../../Avatar-CgT7955R.js";
2
2
  export {
3
3
  A as Avatar
4
4
  };
@@ -1 +1,2 @@
1
1
  export { default as Avatar } from './Avatar';
2
+ export type { AvatarItem, AvatarProps, AvatarSize } from './Avatar';
@@ -1,7 +1,6 @@
1
- import { ButtonProps } from '@mui/material/Button';
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
2
  import { default as React } from 'react';
3
- type PickButtonProps = Pick<ButtonProps, "href" | "children" | "onClick" | "color" | "disabled" | "className" | "endIcon" | "startIcon" | "loading" | "loadingIndicator" | "variant" | "size" | "loadingPosition" | "type" | "sx">;
4
- export interface MyButtonProps extends PickButtonProps {
3
+ export interface ButtonProps {
5
4
  children?: React.ReactNode;
6
5
  variant?: "text" | "outlined" | "contained";
7
6
  disabled?: boolean;
@@ -13,10 +12,11 @@ export interface MyButtonProps extends PickButtonProps {
13
12
  loading?: boolean;
14
13
  loadingIndicator?: React.ReactNode;
15
14
  loadingPosition?: "start" | "end" | "center";
16
- color?: "primary" | "success" | "error" | "info" | "warning";
15
+ color?: "inherit" | "primary" | "secondary" | "success" | "error" | "info" | "warning";
17
16
  href?: string;
18
17
  "data-testid"?: string;
19
18
  type?: "button" | "submit";
19
+ sx?: SxProps<Theme>;
20
20
  }
21
- export declare const Button: React.FC<MyButtonProps>;
21
+ export declare const Button: React.FC<ButtonProps>;
22
22
  export default Button;
@@ -1 +1,2 @@
1
1
  export { default as Button } from './Button';
2
+ export type { ButtonProps } from './Button';
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const Card = require("../../Card-DG_crfkK.cjs");
3
+ const Card = require("../../Card-DfdU610V.cjs");
4
4
  exports.Card = Card.Card;
5
- exports.buildCardBodySx = Card.buildCardBodySx;
6
- exports.buildCardFooterSx = Card.buildCardFooterSx;
7
- exports.buildCardHeaderSx = Card.buildCardHeaderSx;
8
5
  exports.buildCardSx = Card.buildCardSx;
9
6
  exports.default = Card.Card;
10
7
  //# sourceMappingURL=Card.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"Card.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -2,27 +2,8 @@ import { ReactNode } from 'react';
2
2
  import { SxProps, Theme } from '@mui/material/styles';
3
3
  import { CardVariant, CardPadding } from './Card.sx';
4
4
  export interface CardProps {
5
- /** Contenido principal. */
5
+ /** Contenido del Card. */
6
6
  children?: ReactNode;
7
- /**
8
- * Título del Card. Si se provee, renderiza un header con separador. Puede
9
- * ser string o cualquier ReactNode para permitir iconos / chips.
10
- */
11
- title?: ReactNode;
12
- /** Texto secundario debajo del título. */
13
- subtitle?: ReactNode;
14
- /**
15
- * Acciones del header (botones, ActionMenu, etc). Se renderizan alineadas
16
- * a la derecha.
17
- */
18
- actions?: ReactNode;
19
- /**
20
- * Header totalmente custom. Si se provee, ignora `title`/`subtitle`/`actions`
21
- * y toma control del slot entero.
22
- */
23
- header?: ReactNode;
24
- /** Footer custom (botones, mensajes, etc). */
25
- footer?: ReactNode;
26
7
  /**
27
8
  * Variante visual.
28
9
  * - `elevated` (default): sombra sutil.
@@ -30,10 +11,7 @@ export interface CardProps {
30
11
  * - `plain`: sin borde ni sombra, útil para layouts con nesting.
31
12
  */
32
13
  variant?: CardVariant;
33
- /**
34
- * Densidad del padding interno. Solo aplica al body cuando hay header/footer;
35
- * cuando no hay slots, aplica al root.
36
- */
14
+ /** Densidad del padding interno. */
37
15
  padding?: CardPadding;
38
16
  /** Si `true`, muestra feedback de hover/active (cursor, sombra). */
39
17
  clickable?: boolean;
@@ -49,35 +27,10 @@ export interface CardProps {
49
27
  raised?: boolean;
50
28
  /** sx del root. Se compone sobre el base + preset. */
51
29
  sx?: SxProps<Theme>;
52
- /** sx custom del slot body. */
53
- bodySx?: SxProps<Theme>;
54
- /** sx custom del slot header. */
55
- headerSx?: SxProps<Theme>;
56
- /** sx custom del slot footer. */
57
- footerSx?: SxProps<Theme>;
58
30
  onClick?: () => void;
59
31
  onBlur?: () => void;
60
32
  className?: string;
61
33
  'data-testid'?: string;
62
34
  }
63
- /**
64
- * Card semántico con slots `title` / `subtitle` / `actions` / `footer`.
65
- * Reemplaza el patrón `<div class="card"><div class="card-header">...</div>...`
66
- * de Metronic/Bootstrap con composición declarativa.
67
- *
68
- * Backward-compat: si solo se pasa `children`, se comporta como el Card
69
- * original (MUI Card + body padding).
70
- *
71
- * ```tsx
72
- * <Card
73
- * title="Datos del cliente"
74
- * subtitle="Última actualización: hace 2h"
75
- * actions={<ActionMenu items={menuItems} />}
76
- * footer={<Button>Guardar</Button>}
77
- * >
78
- * <CustomerForm />
79
- * </Card>
80
- * ```
81
- */
82
- export declare function Card({ children, title, subtitle, actions, header, footer, variant, padding, clickable, preset, raised, sx, bodySx, headerSx, footerSx, onClick, onBlur, className, 'data-testid': dataTestId, }: CardProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function Card({ children, variant, padding, clickable, preset, raised, sx, onClick, onBlur, className, 'data-testid': dataTestId, }: CardProps): import("react/jsx-runtime").JSX.Element;
83
36
  export default Card;
@@ -1,9 +1,6 @@
1
- import { C, c, d, a, b, C as C2 } from "../../Card-Ug-ttVSh.js";
1
+ import { C, b, C as C2 } from "../../Card-B1wtavyl.js";
2
2
  export {
3
3
  C as Card,
4
- c as buildCardBodySx,
5
- d as buildCardFooterSx,
6
- a as buildCardHeaderSx,
7
4
  b as buildCardSx,
8
5
  C2 as default
9
6
  };
@@ -7,11 +7,8 @@ export interface BuildCardSxArgs {
7
7
  clickable: boolean;
8
8
  }
9
9
  /**
10
- * Estilo base del Card (root). La props `sx` del consumer se compone encima
11
- * junto al preset resuelto (en Card.tsx). Este builder solo se ocupa del
12
- * variant + padding, para que siga siendo predecible.
10
+ * Estilo base del Card. La prop `sx` del consumer se compone encima junto al
11
+ * preset resuelto (en Card.tsx). Este builder solo se ocupa de variant +
12
+ * padding para que siga siendo predecible.
13
13
  */
14
14
  export declare function buildCardSx({ variant, padding, clickable, }: BuildCardSxArgs): SxProps<Theme>;
15
- export declare function buildCardHeaderSx(): SxProps<Theme>;
16
- export declare function buildCardBodySx(padding: CardPadding): SxProps<Theme>;
17
- export declare function buildCardFooterSx(): SxProps<Theme>;
@@ -1,4 +1,4 @@
1
1
  export { Card, default } from './Card';
2
2
  export type { CardProps } from './Card';
3
3
  export type { CardVariant, CardPadding } from './Card.sx';
4
- export { buildCardSx, buildCardHeaderSx, buildCardBodySx, buildCardFooterSx, } from './Card.sx';
4
+ export { buildCardSx } from './Card.sx';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const Checkbox = require("../../Checkbox-BCqMFWt4.cjs");
4
+ exports.Checkbox = Checkbox.Checkbox;
5
+ exports.default = Checkbox.Checkbox;
6
+ //# sourceMappingURL=Checkbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,55 @@
1
+ import { FC } from 'react';
2
+ import { CheckboxProps as MuiCheckboxProps, SxProps, Theme } from '@mui/material';
3
+ import { RegisterOptions } from 'react-hook-form';
4
+ export type CheckboxSize = 'small' | 'medium';
5
+ export type CheckboxLabelPlacement = 'start' | 'end' | 'top' | 'bottom';
6
+ export type CheckboxColor = 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'info' | 'warning';
7
+ export interface BaseCheckboxProps extends Omit<MuiCheckboxProps, 'value' | 'onChange' | 'checked' | 'defaultChecked' | 'size' | 'color'> {
8
+ /** Texto al lado del checkbox. Si está ausente, se renderiza solo el control. */
9
+ label?: string;
10
+ size?: CheckboxSize;
11
+ /** Color del checkbox. Default: `'primary'`. */
12
+ color?: CheckboxColor;
13
+ /** Posición del label respecto al checkbox. Default: `'end'`. */
14
+ labelPlacement?: CheckboxLabelPlacement;
15
+ /** Estado indeterminate (tri-state). Típico para "select all" parcial. */
16
+ indeterminate?: boolean;
17
+ disabled?: boolean;
18
+ error?: boolean;
19
+ helperText?: string;
20
+ /** Renderiza un contenedor con borde alrededor del checkbox + label. Default: false. */
21
+ bordered?: boolean;
22
+ /** Border radius del contenedor (cuando bordered). Default: 10. */
23
+ borderRadius?: number | string;
24
+ /** Valor inicial del checkbox en modo RHF. */
25
+ defaultChecked?: boolean;
26
+ /**
27
+ * Nombre del preset de estilo registrado en `theme.styles.Checkbox`.
28
+ * - `"default"` (o ausente) = estilo built-in del paquete.
29
+ * - Cualquier otro string = mergea el preset encima del estilo built-in.
30
+ */
31
+ preset?: string;
32
+ sx?: SxProps<Theme>;
33
+ }
34
+ export interface RHFCheckboxProps extends BaseCheckboxProps {
35
+ name: string;
36
+ control: any;
37
+ validation?: RegisterOptions;
38
+ /**
39
+ * Side-effect que corre después de que RHF actualiza el form state.
40
+ * Útil para cascadas entre campos. NO reemplaza al handler de RHF.
41
+ */
42
+ onValueChange?: (checked: boolean) => void;
43
+ checked?: never;
44
+ onChange?: never;
45
+ }
46
+ export interface ControlledCheckboxProps extends BaseCheckboxProps {
47
+ name?: string;
48
+ control?: never;
49
+ validation?: never;
50
+ checked: boolean;
51
+ onChange: (checked: boolean) => void;
52
+ }
53
+ export type CheckboxProps = RHFCheckboxProps | ControlledCheckboxProps;
54
+ export declare const Checkbox: FC<CheckboxProps>;
55
+ export default Checkbox;
@@ -0,0 +1,6 @@
1
+ import { C, C as C2 } from "../../Checkbox-gB5YKkVo.js";
2
+ export {
3
+ C as Checkbox,
4
+ C2 as default
5
+ };
6
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,13 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ export interface BuildCheckboxSxOptions {
3
+ bordered: boolean;
4
+ borderRadius: number | string;
5
+ hasLabel: boolean;
6
+ error: boolean;
7
+ }
8
+ /**
9
+ * Builder de sx para Checkbox. Cuando `bordered=true`, el contenedor del
10
+ * `FormControlLabel` gana un borde estilo "form field" con focus ring y
11
+ * estado de error (matchea InputGroup / Switch / RadioGroup).
12
+ */
13
+ export declare const buildCheckboxSx: ({ bordered, borderRadius, hasLabel, error, }: BuildCheckboxSxOptions) => SxProps<Theme>;
@@ -0,0 +1,2 @@
1
+ export { Checkbox, default } from './Checkbox';
2
+ export type { CheckboxProps, BaseCheckboxProps, RHFCheckboxProps, ControlledCheckboxProps, CheckboxSize, CheckboxLabelPlacement, CheckboxColor, } from './Checkbox';
@@ -0,0 +1,6 @@
1
+ export * from './Checkbox/index'
2
+ export {}
3
+ import _default from './Checkbox/index'
4
+ export default _default
5
+ export * from './Checkbox/index'
6
+ export {}
@@ -1,5 +1,6 @@
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 Chip = require("../../Chip-qoJLDiva.cjs");
4
4
  exports.Chip = Chip.Chip;
5
+ exports.default = Chip.Chip;
5
6
  //# sourceMappingURL=Chip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"Chip.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,5 +1,6 @@
1
- import { C } from "../../Chip-OPYQ1uQ_.js";
1
+ import { C, C as C2 } from "../../Chip-OPYQ1uQ_.js";
2
2
  export {
3
- C as Chip
3
+ C as Chip,
4
+ C2 as default
4
5
  };
5
6
  //# sourceMappingURL=Chip.js.map
@@ -1 +1,2 @@
1
- export { default as Chip } from './Chip';
1
+ export { Chip, default } from './Chip';
2
+ export type { ChipProps } from './Chip';
@@ -1,2 +1,6 @@
1
1
  export * from './Chip/index'
2
2
  export {}
3
+ import _default from './Chip/index'
4
+ export default _default
5
+ export * from './Chip/index'
6
+ export {}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const DatePicker = require("../../DatePicker-DLSfkgGA.cjs");
3
+ const DatePicker = require("../../DatePicker-CtCFqXDw.cjs");
4
4
  exports.DatePicker = DatePicker.DatePicker;
5
5
  exports.default = DatePicker.DatePicker;
6
6
  //# sourceMappingURL=DatePicker.cjs.map
@@ -2,7 +2,6 @@ import { default as React } from 'react';
2
2
  import { SxProps, Theme } from '@mui/material';
3
3
  import { DatePickerProps as MuiDatePickerProps } from '@mui/x-date-pickers/DatePicker';
4
4
  import { Dayjs } from 'dayjs';
5
- import { Control, RegisterOptions } from 'react-hook-form';
6
5
  export type LabelPosition = 'outside' | 'floating';
7
6
  export type DatePickerSize = 'small' | 'medium';
8
7
  export interface BaseDatePickerProps extends Omit<MuiDatePickerProps, 'value' | 'onChange' | 'slotProps'> {
@@ -37,20 +36,9 @@ export interface BaseDatePickerProps extends Omit<MuiDatePickerProps, 'value' |
37
36
  /** Passthrough completo a slotProps del MuiDatePicker. */
38
37
  slotProps?: MuiDatePickerProps['slotProps'];
39
38
  }
40
- export interface RHFDatePickerProps extends BaseDatePickerProps {
41
- name: string;
42
- control: Control<any>;
43
- validation?: RegisterOptions;
44
- selectedDate?: never;
45
- onDateChange?: never;
46
- }
47
- export interface ControlledDatePickerProps extends BaseDatePickerProps {
48
- name?: string;
49
- control?: never;
50
- validation?: never;
39
+ export interface DatePickerProps extends BaseDatePickerProps {
51
40
  selectedDate: Dayjs | null;
52
41
  onDateChange: (date: Dayjs | null) => void;
53
42
  }
54
- export type DatePickerProps = RHFDatePickerProps | ControlledDatePickerProps;
55
43
  export declare const DatePicker: React.FC<DatePickerProps>;
56
44
  export default DatePicker;
@@ -1,4 +1,4 @@
1
- import { D, D as D2 } from "../../DatePicker-8f_9bwhS.js";
1
+ import { D, D as D2 } from "../../DatePicker-D0Bz9Ryg.js";
2
2
  export {
3
3
  D as DatePicker,
4
4
  D2 as default
@@ -1,2 +1,2 @@
1
1
  export { DatePicker, default } from './DatePicker';
2
- export type { DatePickerProps, BaseDatePickerProps, RHFDatePickerProps, ControlledDatePickerProps, LabelPosition, DatePickerSize, } from './DatePicker.types';
2
+ export type { DatePickerProps, BaseDatePickerProps, LabelPosition, DatePickerSize, } from './DatePicker';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const DateTimePicker = require("../../DateTimePicker-CWNW09-O.cjs");
3
+ const DateTimePicker = require("../../DateTimePicker-CTnRQCZo.cjs");
4
4
  exports.DateTimePicker = DateTimePicker.DateTimePicker;
5
5
  exports.default = DateTimePicker.DateTimePicker;
6
6
  //# sourceMappingURL=DateTimePicker.cjs.map