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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/dist/components/ActionMenu/ActionMenu.cjs +107 -0
  2. package/dist/components/ActionMenu/ActionMenu.cjs.map +1 -0
  3. package/dist/components/ActionMenu/ActionMenu.d.ts +60 -0
  4. package/dist/components/ActionMenu/ActionMenu.js +107 -0
  5. package/dist/components/ActionMenu/ActionMenu.js.map +1 -0
  6. package/dist/components/ActionMenu/index.d.ts +2 -0
  7. package/dist/components/ActionMenu.d.ts +6 -0
  8. package/dist/components/AppBar/AppBar.cjs +346 -0
  9. package/dist/components/AppBar/AppBar.cjs.map +1 -0
  10. package/dist/components/AppBar/AppBar.d.ts +55 -0
  11. package/dist/components/AppBar/AppBar.js +346 -0
  12. package/dist/components/AppBar/AppBar.js.map +1 -0
  13. package/dist/components/AppBar/AppBar.sx.d.ts +12 -0
  14. package/dist/components/AppBar/AppBarBrand.d.ts +31 -0
  15. package/dist/components/AppBar/AppBarContext.d.ts +18 -0
  16. package/dist/components/AppBar/AppBarMenuToggle.d.ts +39 -0
  17. package/dist/components/AppBar/AppBarUserMenu.d.ts +65 -0
  18. package/dist/components/AppBar/index.d.ts +12 -0
  19. package/dist/components/AppBar.d.ts +6 -0
  20. package/dist/components/Autocomplete/Autocomplete.cjs +259 -54
  21. package/dist/components/Autocomplete/Autocomplete.cjs.map +1 -1
  22. package/dist/components/Autocomplete/Autocomplete.d.ts +64 -9
  23. package/dist/components/Autocomplete/Autocomplete.definitions.d.ts +6 -0
  24. package/dist/components/Autocomplete/Autocomplete.helpers.d.ts +18 -0
  25. package/dist/components/Autocomplete/Autocomplete.js +261 -56
  26. package/dist/components/Autocomplete/Autocomplete.js.map +1 -1
  27. package/dist/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
  28. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -0
  29. package/dist/components/Autocomplete/_parts/AutocompleteChips.d.ts +19 -0
  30. package/dist/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
  31. package/dist/components/Autocomplete/_parts/AutocompleteOption.d.ts +19 -0
  32. package/dist/components/Autocomplete/index.d.ts +2 -1
  33. package/dist/components/Autocomplete.d.ts +4 -0
  34. package/dist/components/Avatar/Avatar.cjs +116 -79
  35. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  36. package/dist/components/Avatar/Avatar.d.ts +16 -2
  37. package/dist/components/Avatar/Avatar.definitions.d.ts +11 -0
  38. package/dist/components/Avatar/Avatar.js +117 -80
  39. package/dist/components/Avatar/Avatar.js.map +1 -1
  40. package/dist/components/Card/Card.cjs +168 -9
  41. package/dist/components/Card/Card.cjs.map +1 -1
  42. package/dist/components/Card/Card.d.ts +78 -8
  43. package/dist/components/Card/Card.js +170 -11
  44. package/dist/components/Card/Card.js.map +1 -1
  45. package/dist/components/Card/Card.sx.d.ts +17 -0
  46. package/dist/components/Card/index.d.ts +4 -1
  47. package/dist/components/Card.d.ts +4 -0
  48. package/dist/components/DatePicker/DatePicker.cjs +201 -3
  49. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  50. package/dist/components/DatePicker/DatePicker.d.ts +47 -9
  51. package/dist/components/DatePicker/DatePicker.definitions.d.ts +1 -0
  52. package/dist/components/DatePicker/DatePicker.helpers.d.ts +7 -0
  53. package/dist/components/DatePicker/DatePicker.js +200 -2
  54. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  55. package/dist/components/DatePicker/DatePicker.sx.d.ts +9 -0
  56. package/dist/components/DatePicker/DatePicker.types.d.ts +1 -0
  57. package/dist/components/DatePicker/index.d.ts +2 -1
  58. package/dist/components/DatePicker.d.ts +4 -0
  59. package/dist/components/DateTimePicker/DateTimePicker.cjs +152 -138
  60. package/dist/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  61. package/dist/components/DateTimePicker/DateTimePicker.d.ts +46 -9
  62. package/dist/components/DateTimePicker/DateTimePicker.definitions.d.ts +1 -0
  63. package/dist/components/DateTimePicker/DateTimePicker.helpers.d.ts +11 -0
  64. package/dist/components/DateTimePicker/DateTimePicker.js +152 -138
  65. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  66. package/dist/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
  67. package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +1 -0
  68. package/dist/components/DateTimePicker/index.d.ts +2 -1
  69. package/dist/components/DateTimePicker.d.ts +4 -0
  70. package/dist/components/Drawer/Drawer.cjs +271 -0
  71. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  72. package/dist/components/Drawer/Drawer.d.ts +51 -0
  73. package/dist/components/Drawer/Drawer.js +271 -0
  74. package/dist/components/Drawer/Drawer.js.map +1 -0
  75. package/dist/components/Drawer/Drawer.sx.d.ts +23 -0
  76. package/dist/components/Drawer/DrawerContext.d.ts +18 -0
  77. package/dist/components/Drawer/DrawerItem.d.ts +35 -0
  78. package/dist/components/Drawer/index.d.ts +6 -0
  79. package/dist/components/Drawer.d.ts +6 -0
  80. package/dist/components/Icon/Icon.cjs +44 -3
  81. package/dist/components/Icon/Icon.cjs.map +1 -1
  82. package/dist/components/Icon/Icon.d.ts +34 -1
  83. package/dist/components/Icon/Icon.js +44 -3
  84. package/dist/components/Icon/Icon.js.map +1 -1
  85. package/dist/components/Input/Input.cjs +173 -3
  86. package/dist/components/Input/Input.cjs.map +1 -1
  87. package/dist/components/Input/Input.d.ts +20 -15
  88. package/dist/components/Input/Input.definitions.d.ts +5 -2
  89. package/dist/components/Input/Input.helpers.d.ts +14 -0
  90. package/dist/components/Input/Input.js +172 -2
  91. package/dist/components/Input/Input.js.map +1 -1
  92. package/dist/components/Input/Input.sx.d.ts +8 -0
  93. package/dist/components/Input/Input.types.d.ts +1 -0
  94. package/dist/components/Input/index.d.ts +2 -1
  95. package/dist/components/Input.d.ts +4 -0
  96. package/dist/components/InputGroup/InputGroup.cjs +104 -91
  97. package/dist/components/InputGroup/InputGroup.cjs.map +1 -1
  98. package/dist/components/InputGroup/InputGroup.d.ts +37 -1
  99. package/dist/components/InputGroup/InputGroup.definitions.d.ts +6 -0
  100. package/dist/components/InputGroup/InputGroup.js +106 -93
  101. package/dist/components/InputGroup/InputGroup.js.map +1 -1
  102. package/dist/components/Modal/Modal.cjs +226 -116
  103. package/dist/components/Modal/Modal.cjs.map +1 -1
  104. package/dist/components/Modal/Modal.d.ts +38 -2
  105. package/dist/components/Modal/Modal.js +227 -117
  106. package/dist/components/Modal/Modal.js.map +1 -1
  107. package/dist/components/Modal/ModalFooter.d.ts +9 -1
  108. package/dist/components/Modal/index.d.ts +5 -0
  109. package/dist/components/PageLoader/PageLoader.cjs +61 -0
  110. package/dist/components/PageLoader/PageLoader.cjs.map +1 -0
  111. package/dist/components/PageLoader/PageLoader.d.ts +38 -0
  112. package/dist/components/PageLoader/PageLoader.js +61 -0
  113. package/dist/components/PageLoader/PageLoader.js.map +1 -0
  114. package/dist/components/PageLoader/index.d.ts +2 -0
  115. package/dist/components/PageLoader.d.ts +6 -0
  116. package/dist/components/ScrollTopButton/ScrollTopButton.cjs +79 -0
  117. package/dist/components/ScrollTopButton/ScrollTopButton.cjs.map +1 -0
  118. package/dist/components/ScrollTopButton/ScrollTopButton.d.ts +48 -0
  119. package/dist/components/ScrollTopButton/ScrollTopButton.js +79 -0
  120. package/dist/components/ScrollTopButton/ScrollTopButton.js.map +1 -0
  121. package/dist/components/ScrollTopButton/index.d.ts +4 -0
  122. package/dist/components/ScrollTopButton/scrollToTop.d.ts +29 -0
  123. package/dist/components/ScrollTopButton.d.ts +6 -0
  124. package/dist/components/Select/Select.cjs +446 -4
  125. package/dist/components/Select/Select.cjs.map +1 -1
  126. package/dist/components/Select/Select.d.ts +33 -13
  127. package/dist/components/Select/Select.definitions.d.ts +3 -0
  128. package/dist/components/Select/Select.helpers.d.ts +28 -0
  129. package/dist/components/Select/Select.js +445 -3
  130. package/dist/components/Select/Select.js.map +1 -1
  131. package/dist/components/Select/Select.sx.d.ts +7 -0
  132. package/dist/components/Select/Select.types.d.ts +1 -0
  133. package/dist/components/Select/_parts/SelectMenuItem.d.ts +20 -0
  134. package/dist/components/Select/_parts/SelectSearchHeader.d.ts +15 -0
  135. package/dist/components/Select/_parts/SelectValue.d.ts +22 -0
  136. package/dist/components/Select/index.d.ts +2 -1
  137. package/dist/components/Select.d.ts +4 -0
  138. package/dist/components/Stat/Stat.cjs +1 -1
  139. package/dist/components/Stat/Stat.js +1 -1
  140. package/dist/components/Stepper/Stepper.cjs +4 -1
  141. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  142. package/dist/components/Stepper/Stepper.d.ts +5 -0
  143. package/dist/components/Stepper/Stepper.js +4 -1
  144. package/dist/components/Stepper/Stepper.js.map +1 -1
  145. package/dist/components/_shared/formField.sx.d.ts +33 -0
  146. package/dist/components/_shared/resolvePreset.d.ts +18 -0
  147. package/dist/formField.sx-CQ1mbk9M.cjs +76 -0
  148. package/dist/formField.sx-CQ1mbk9M.cjs.map +1 -0
  149. package/dist/formField.sx-DfVbMe0V.js +77 -0
  150. package/dist/formField.sx-DfVbMe0V.js.map +1 -0
  151. package/dist/hooks/Wizard/Wizard.cjs +7 -0
  152. package/dist/hooks/Wizard/Wizard.cjs.map +1 -0
  153. package/dist/hooks/Wizard/Wizard.js +7 -0
  154. package/dist/hooks/Wizard/Wizard.js.map +1 -0
  155. package/dist/hooks/Wizard/WizardContext.d.ts +67 -0
  156. package/dist/hooks/Wizard/index.d.ts +3 -0
  157. package/dist/hooks/Wizard/useWizard.d.ts +9 -0
  158. package/dist/hooks/Wizard.d.ts +2 -0
  159. package/dist/index.cjs +99 -1
  160. package/dist/index.cjs.map +1 -1
  161. package/dist/index.d.ts +3 -0
  162. package/dist/index.js +31 -2
  163. package/dist/index.js.map +1 -1
  164. package/dist/mui.d.ts +5 -0
  165. package/dist/resolvePreset-B-IB0ehH.js +15 -0
  166. package/dist/resolvePreset-B-IB0ehH.js.map +1 -0
  167. package/dist/resolvePreset-CT3kU-K2.cjs +14 -0
  168. package/dist/resolvePreset-CT3kU-K2.cjs.map +1 -0
  169. package/dist/styles.css +3 -112
  170. package/dist/theme/componentStyles.d.ts +32 -0
  171. package/dist/theme/tokens.d.ts +28 -0
  172. package/dist/useWizard-CWdIxZzX.cjs +94 -0
  173. package/dist/useWizard-CWdIxZzX.cjs.map +1 -0
  174. package/dist/useWizard-CWq--C3o.js +95 -0
  175. package/dist/useWizard-CWq--C3o.js.map +1 -0
  176. package/package.json +1 -1
  177. package/src/components/ActionMenu/ActionMenu.stories.tsx +230 -0
  178. package/src/components/ActionMenu/ActionMenu.tsx +174 -0
  179. package/src/components/ActionMenu/index.ts +2 -0
  180. package/src/components/AppBar/AppBar.stories.tsx +272 -0
  181. package/src/components/AppBar/AppBar.sx.ts +32 -0
  182. package/src/components/AppBar/AppBar.tsx +123 -0
  183. package/src/components/AppBar/AppBarBrand.tsx +120 -0
  184. package/src/components/AppBar/AppBarContext.ts +25 -0
  185. package/src/components/AppBar/AppBarMenuToggle.tsx +90 -0
  186. package/src/components/AppBar/AppBarUserMenu.tsx +217 -0
  187. package/src/components/AppBar/index.ts +25 -0
  188. package/src/components/Autocomplete/Autocomplete.definitions.ts +223 -0
  189. package/src/components/Autocomplete/Autocomplete.helpers.ts +60 -0
  190. package/src/components/Autocomplete/Autocomplete.stories.tsx +363 -2
  191. package/src/components/Autocomplete/Autocomplete.sx.ts +30 -0
  192. package/src/components/Autocomplete/Autocomplete.tsx +312 -90
  193. package/src/components/Autocomplete/Autocomplete.types.ts +13 -0
  194. package/src/components/Autocomplete/_parts/AutocompleteChips.tsx +55 -0
  195. package/src/components/Autocomplete/_parts/AutocompleteLoader.tsx +17 -0
  196. package/src/components/Autocomplete/_parts/AutocompleteOption.tsx +31 -0
  197. package/src/components/Autocomplete/index.ts +12 -1
  198. package/src/components/Avatar/Avatar.definitions.ts +162 -0
  199. package/src/components/Avatar/Avatar.stories.tsx +205 -1
  200. package/src/components/Avatar/Avatar.tsx +166 -103
  201. package/src/components/Card/Card.stories.tsx +205 -16
  202. package/src/components/Card/Card.sx.ts +104 -0
  203. package/src/components/Card/Card.tsx +191 -35
  204. package/src/components/Card/index.ts +9 -1
  205. package/src/components/DatePicker/DatePicker.definitions.ts +24 -1
  206. package/src/components/DatePicker/DatePicker.helpers.ts +24 -0
  207. package/src/components/DatePicker/DatePicker.stories.tsx +29 -2
  208. package/src/components/DatePicker/DatePicker.sx.ts +33 -0
  209. package/src/components/DatePicker/DatePicker.tsx +163 -139
  210. package/src/components/DatePicker/DatePicker.types.ts +10 -0
  211. package/src/components/DatePicker/index.ts +9 -1
  212. package/src/components/DateTimePicker/DateTimePicker.definitions.ts +24 -0
  213. package/src/components/DateTimePicker/DateTimePicker.helpers.ts +38 -0
  214. package/src/components/DateTimePicker/DateTimePicker.stories.tsx +29 -1
  215. package/src/components/DateTimePicker/DateTimePicker.sx.ts +30 -0
  216. package/src/components/DateTimePicker/DateTimePicker.tsx +200 -166
  217. package/src/components/DateTimePicker/DateTimePicker.types.ts +10 -0
  218. package/src/components/DateTimePicker/index.ts +9 -1
  219. package/src/components/Drawer/Drawer.stories.tsx +270 -0
  220. package/src/components/Drawer/Drawer.sx.ts +106 -0
  221. package/src/components/Drawer/Drawer.tsx +214 -0
  222. package/src/components/Drawer/DrawerContext.ts +26 -0
  223. package/src/components/Drawer/DrawerItem.tsx +110 -0
  224. package/src/components/Drawer/index.ts +10 -0
  225. package/src/components/Flyout/Flyout.stories.tsx +26 -18
  226. package/src/components/Icon/Icon.stories.tsx +68 -1
  227. package/src/components/Icon/Icon.tsx +87 -6
  228. package/src/components/Input/Input.definitions.ts +74 -2
  229. package/src/components/Input/Input.helpers.ts +49 -0
  230. package/src/components/Input/Input.stories.tsx +116 -4
  231. package/src/components/Input/Input.sx.ts +42 -0
  232. package/src/components/Input/Input.tsx +117 -162
  233. package/src/components/Input/Input.types.ts +10 -0
  234. package/src/components/Input/index.ts +9 -1
  235. package/src/components/InputGroup/InputGroup.definitions.ts +158 -0
  236. package/src/components/InputGroup/InputGroup.stories.tsx +159 -28
  237. package/src/components/InputGroup/InputGroup.tsx +159 -116
  238. package/src/components/Modal/Modal.stories.tsx +434 -6
  239. package/src/components/Modal/Modal.tsx +303 -121
  240. package/src/components/Modal/ModalFooter.tsx +22 -12
  241. package/src/components/Modal/index.ts +6 -1
  242. package/src/components/PageLoader/PageLoader.stories.tsx +217 -0
  243. package/src/components/PageLoader/PageLoader.tsx +96 -0
  244. package/src/components/PageLoader/index.ts +2 -0
  245. package/src/components/ScrollTopButton/ScrollTopButton.stories.tsx +158 -0
  246. package/src/components/ScrollTopButton/ScrollTopButton.tsx +135 -0
  247. package/src/components/ScrollTopButton/index.ts +8 -0
  248. package/src/components/ScrollTopButton/scrollToTop.ts +37 -0
  249. package/src/components/Select/Select.definitions.ts +114 -0
  250. package/src/components/Select/Select.helpers.ts +71 -0
  251. package/src/components/Select/Select.stories.tsx +126 -8
  252. package/src/components/Select/Select.sx.ts +14 -0
  253. package/src/components/Select/Select.tsx +246 -285
  254. package/src/components/Select/Select.types.ts +15 -0
  255. package/src/components/Select/_parts/SelectMenuItem.tsx +40 -0
  256. package/src/components/Select/_parts/SelectSearchHeader.tsx +51 -0
  257. package/src/components/Select/_parts/SelectValue.tsx +96 -0
  258. package/src/components/Select/index.ts +14 -1
  259. package/src/components/Stepper/Stepper.tsx +17 -1
  260. package/src/components/Tooltip/Tooltip.stories.tsx +15 -3
  261. package/src/components/_shared/formField.sx.ts +118 -0
  262. package/src/components/_shared/resolvePreset.ts +35 -0
  263. package/src/hooks/Wizard/Wizard.stories.tsx +301 -0
  264. package/src/hooks/Wizard/WizardContext.tsx +166 -0
  265. package/src/hooks/Wizard/index.ts +6 -0
  266. package/src/hooks/Wizard/useWizard.ts +13 -0
  267. package/src/index.ts +17 -1
  268. package/src/mui.ts +44 -0
  269. package/src/theme/componentStyles.ts +47 -0
  270. package/src/theme/tokens.ts +43 -0
  271. package/dist/DatePicker-BSNboVhN.js +0 -201
  272. package/dist/DatePicker-BSNboVhN.js.map +0 -1
  273. package/dist/DatePicker-BoqxWAhj.cjs +0 -200
  274. package/dist/DatePicker-BoqxWAhj.cjs.map +0 -1
  275. package/dist/Input-DFHs7cJ_.js +0 -171
  276. package/dist/Input-DFHs7cJ_.js.map +0 -1
  277. package/dist/Input-c8MwNNPg.cjs +0 -170
  278. package/dist/Input-c8MwNNPg.cjs.map +0 -1
  279. package/dist/Select-BO2N56sm.cjs +0 -411
  280. package/dist/Select-BO2N56sm.cjs.map +0 -1
  281. package/dist/Select-BcLkyHSE.js +0 -412
  282. package/dist/Select-BcLkyHSE.js.map +0 -1
  283. package/dist/index.css +0 -3
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __spreadValues = (a, b) => {
8
+ for (var prop in b || (b = {}))
9
+ if (__hasOwnProp.call(b, prop))
10
+ __defNormalProp(a, prop, b[prop]);
11
+ if (__getOwnPropSymbols)
12
+ for (var prop of __getOwnPropSymbols(b)) {
13
+ if (__propIsEnum.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ }
16
+ return a;
17
+ };
18
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
19
+ const jsxRuntime = require("react/jsx-runtime");
20
+ const React = require("react");
21
+ const material = require("@mui/material");
22
+ const MoreVertIcon = require("@mui/icons-material/MoreVert");
23
+ function ActionMenu({
24
+ items,
25
+ trigger,
26
+ triggerTooltip = "Acciones",
27
+ anchorOrigin = { vertical: "bottom", horizontal: "right" },
28
+ transformOrigin = { vertical: "top", horizontal: "right" },
29
+ menuSx,
30
+ disabled = false,
31
+ className
32
+ }) {
33
+ const [anchorEl, setAnchorEl] = React.useState(null);
34
+ const open = Boolean(anchorEl);
35
+ const handleOpen = (event) => {
36
+ if (disabled) return;
37
+ event.stopPropagation();
38
+ setAnchorEl(event.currentTarget);
39
+ };
40
+ const handleClose = () => setAnchorEl(null);
41
+ const handleItemClick = (event, item) => {
42
+ var _a;
43
+ event.stopPropagation();
44
+ (_a = item.onClick) == null ? void 0 : _a.call(item, event);
45
+ handleClose();
46
+ };
47
+ const triggerElement = trigger ? React.isValidElement(trigger) ? React.cloneElement(trigger, {
48
+ onClick: handleOpen,
49
+ disabled
50
+ }) : /* @__PURE__ */ jsxRuntime.jsx("span", { onClick: handleOpen, children: trigger }) : /* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: triggerTooltip, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(
51
+ material.IconButton,
52
+ {
53
+ size: "small",
54
+ onClick: handleOpen,
55
+ disabled,
56
+ "aria-label": triggerTooltip,
57
+ children: /* @__PURE__ */ jsxRuntime.jsx(MoreVertIcon, { fontSize: "small" })
58
+ }
59
+ ) }) });
60
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className, children: [
61
+ triggerElement,
62
+ /* @__PURE__ */ jsxRuntime.jsx(
63
+ material.Menu,
64
+ {
65
+ anchorEl,
66
+ open,
67
+ onClose: handleClose,
68
+ anchorOrigin,
69
+ transformOrigin,
70
+ slotProps: { paper: { sx: __spreadValues({ minWidth: 180 }, menuSx) } },
71
+ children: items.map((item, idx) => {
72
+ var _a;
73
+ const key = (_a = item.key) != null ? _a : `${String(item.label)}-${idx}`;
74
+ const node = /* @__PURE__ */ jsxRuntime.jsxs(
75
+ material.MenuItem,
76
+ {
77
+ disabled: item.disabled,
78
+ onClick: (event) => handleItemClick(event, item),
79
+ sx: (theme) => ({
80
+ color: item.danger ? theme.palette.error.main : "inherit",
81
+ "& .MuiListItemIcon-root": {
82
+ color: item.danger ? theme.palette.error.main : "inherit",
83
+ minWidth: 32
84
+ }
85
+ }),
86
+ children: [
87
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx(material.ListItemIcon, { children: item.icon }),
88
+ /* @__PURE__ */ jsxRuntime.jsx(material.ListItemText, { primary: item.label })
89
+ ]
90
+ },
91
+ key
92
+ );
93
+ if (item.dividerBefore && idx > 0) {
94
+ return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
95
+ /* @__PURE__ */ jsxRuntime.jsx(material.Divider, {}),
96
+ node
97
+ ] }, `${key}-frag`);
98
+ }
99
+ return node;
100
+ })
101
+ }
102
+ )
103
+ ] });
104
+ }
105
+ exports.ActionMenu = ActionMenu;
106
+ exports.default = ActionMenu;
107
+ //# sourceMappingURL=ActionMenu.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenu.cjs","sources":["../../../src/components/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, { useState, type ReactNode, type MouseEvent } from 'react';\nimport {\n IconButton,\n Menu,\n MenuItem,\n ListItemIcon,\n ListItemText,\n Divider,\n Tooltip,\n} from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface ActionMenuItem {\n /** Key única para React. 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. Recibe el evento del MenuItem. */\n onClick?: (event: MouseEvent<HTMLLIElement>) => void;\n /** Deshabilita el item. */\n disabled?: boolean;\n /** Marca el item como destructivo (pinta color error). */\n danger?: boolean;\n /** Inserta un `<Divider />` ANTES de este item. */\n dividerBefore?: boolean;\n}\n\nexport interface ActionMenuProps {\n /** Lista de items del menú. */\n items: ActionMenuItem[];\n /**\n * Elemento trigger. Si no se provee, se renderiza un IconButton con icono\n * de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.\n */\n trigger?: ReactNode;\n /** Texto de tooltip sobre el trigger default. Default: \"Acciones\". */\n triggerTooltip?: string;\n /** Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }. */\n anchorOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }. */\n transformOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** sx del Menu (Paper interno). */\n menuSx?: SxProps<Theme>;\n /** Deshabilita el trigger entero. */\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Menú de acciones compacto, pensado para celdas de tabla y cabeceras.\n * Reemplaza los patrones `<Dropdown>` de react-bootstrap.\n *\n * ```tsx\n * <ActionMenu\n * items={[\n * { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },\n * { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },\n * { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },\n * ]}\n * />\n * ```\n */\nexport function ActionMenu({\n items,\n trigger,\n triggerTooltip = 'Acciones',\n anchorOrigin = { vertical: 'bottom', horizontal: 'right' },\n transformOrigin = { vertical: 'top', horizontal: 'right' },\n menuSx,\n disabled = false,\n className,\n}: ActionMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleOpen = (event: MouseEvent<HTMLElement>) => {\n if (disabled) return;\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => setAnchorEl(null);\n\n const handleItemClick = (\n event: MouseEvent<HTMLLIElement>,\n item: ActionMenuItem,\n ) => {\n event.stopPropagation();\n item.onClick?.(event);\n handleClose();\n };\n\n const triggerElement = trigger ? (\n React.isValidElement(trigger) ? (\n React.cloneElement(trigger as React.ReactElement<any>, {\n onClick: handleOpen,\n disabled,\n })\n ) : (\n <span onClick={handleOpen}>{trigger}</span>\n )\n ) : (\n <Tooltip title={triggerTooltip} arrow>\n <span>\n <IconButton\n size=\"small\"\n onClick={handleOpen}\n disabled={disabled}\n aria-label={triggerTooltip}\n >\n <MoreVertIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n );\n\n return (\n <span className={className}>\n {triggerElement}\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{ paper: { sx: { minWidth: 180, ...(menuSx as any) } } }}\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 </span>\n );\n}\n\nexport default ActionMenu;\n"],"names":["useState","jsx","Tooltip","IconButton","jsxs","Menu","MenuItem","ListItemIcon","ListItemText","Divider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,eAAe,EAAE,UAAU,UAAU,YAAY,QAAA;AAAA,EACjD,kBAAkB,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,EACjD;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAAoB;AAClB,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAA6B,IAAI;AACjE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,aAAa,CAAC,UAAmC;AACrD,QAAI,SAAU;AACd,UAAM,gBAAA;AACN,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,QAAM,cAAc,MAAM,YAAY,IAAI;AAE1C,QAAM,kBAAkB,CACtB,OACA,SACG;;AACH,UAAM,gBAAA;AACN,eAAK,YAAL,8BAAe;AACf,gBAAA;AAAA,EACF;AAEA,QAAM,iBAAiB,UACrB,MAAM,eAAe,OAAO,IAC1B,MAAM,aAAa,SAAoC;AAAA,IACrD,SAAS;AAAA,IACT;AAAA,EAAA,CACD,IAEDC,2BAAAA,IAAC,QAAA,EAAK,SAAS,YAAa,UAAA,QAAA,CAAQ,IAGtCA,2BAAAA,IAACC,SAAAA,WAAQ,OAAO,gBAAgB,OAAK,MACnC,yCAAC,QAAA,EACC,UAAAD,2BAAAA;AAAAA,IAACE,SAAAA;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,cAAY;AAAA,MAEZ,UAAAF,2BAAAA,IAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,IAAA;AAAA,EAAA,GAEnC,EAAA,CACF;AAGF,SACEG,gCAAC,UAAK,WACH,UAAA;AAAA,IAAA;AAAA,IACDH,2BAAAA;AAAAA,MAACI,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,WAAW,EAAE,OAAO,EAAE,IAAI,iBAAE,UAAU,OAAS,UAAiB;AAAA,QAE/D,UAAA,MAAM,IAAI,CAAC,MAAM,QAAQ;;AACxB,gBAAM,OAAM,UAAK,QAAL,YAAY,GAAG,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG;AACpD,gBAAM,OACJD,2BAAAA;AAAAA,YAACE,SAAAA;AAAAA,YAAA;AAAA,cAEC,UAAU,KAAK;AAAA,cACf,SAAS,CAAC,UAAU,gBAAgB,OAAO,IAAI;AAAA,cAC/C,IAAI,CAAC,WAAW;AAAA,gBACd,OAAO,KAAK,SAAS,MAAM,QAAQ,MAAM,OAAO;AAAA,gBAChD,2BAA2B;AAAA,kBACzB,OAAO,KAAK,SACR,MAAM,QAAQ,MAAM,OACpB;AAAA,kBACJ,UAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,cAGD,UAAA;AAAA,gBAAA,KAAK,QAAQL,+BAACM,SAAAA,cAAA,EAAc,UAAA,KAAK,MAAK;AAAA,gBACvCN,2BAAAA,IAACO,SAAAA,cAAA,EAAa,SAAS,KAAK,MAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAd9B;AAAA,UAAA;AAkBT,cAAI,KAAK,iBAAiB,MAAM,GAAG;AACjC,mBACEJ,gCAAC,MAAM,UAAN,EACC,UAAA;AAAA,cAAAH,2BAAAA,IAACQ,SAAAA,SAAA,EAAQ;AAAA,cACR;AAAA,YAAA,EAAA,GAFkB,GAAG,GAAG,OAG3B;AAAA,UAEJ;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;;;"}
@@ -0,0 +1,60 @@
1
+ import { ReactNode, MouseEvent } from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+ export interface ActionMenuItem {
4
+ /** Key única para React. Si no se provee, se usa el label. */
5
+ key?: string;
6
+ /** Texto del item. */
7
+ label: ReactNode;
8
+ /** Icono opcional a la izquierda. */
9
+ icon?: ReactNode;
10
+ /** Handler de click. Recibe el evento del MenuItem. */
11
+ onClick?: (event: MouseEvent<HTMLLIElement>) => void;
12
+ /** Deshabilita el item. */
13
+ disabled?: boolean;
14
+ /** Marca el item como destructivo (pinta color error). */
15
+ danger?: boolean;
16
+ /** Inserta un `<Divider />` ANTES de este item. */
17
+ dividerBefore?: boolean;
18
+ }
19
+ export interface ActionMenuProps {
20
+ /** Lista de items del menú. */
21
+ items: ActionMenuItem[];
22
+ /**
23
+ * Elemento trigger. Si no se provee, se renderiza un IconButton con icono
24
+ * de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.
25
+ */
26
+ trigger?: ReactNode;
27
+ /** Texto de tooltip sobre el trigger default. Default: "Acciones". */
28
+ triggerTooltip?: string;
29
+ /** Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }. */
30
+ anchorOrigin?: {
31
+ vertical: 'top' | 'center' | 'bottom';
32
+ horizontal: 'left' | 'center' | 'right';
33
+ };
34
+ /** Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }. */
35
+ transformOrigin?: {
36
+ vertical: 'top' | 'center' | 'bottom';
37
+ horizontal: 'left' | 'center' | 'right';
38
+ };
39
+ /** sx del Menu (Paper interno). */
40
+ menuSx?: SxProps<Theme>;
41
+ /** Deshabilita el trigger entero. */
42
+ disabled?: boolean;
43
+ className?: string;
44
+ }
45
+ /**
46
+ * Menú de acciones compacto, pensado para celdas de tabla y cabeceras.
47
+ * Reemplaza los patrones `<Dropdown>` de react-bootstrap.
48
+ *
49
+ * ```tsx
50
+ * <ActionMenu
51
+ * items={[
52
+ * { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },
53
+ * { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },
54
+ * { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },
55
+ * ]}
56
+ * />
57
+ * ```
58
+ */
59
+ export declare function ActionMenu({ items, trigger, triggerTooltip, anchorOrigin, transformOrigin, menuSx, disabled, className, }: ActionMenuProps): import("react/jsx-runtime").JSX.Element;
60
+ export default ActionMenu;
@@ -0,0 +1,107 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import { jsx, jsxs } from "react/jsx-runtime";
18
+ import React__default, { useState } from "react";
19
+ import { Tooltip, IconButton, Menu, MenuItem, ListItemIcon, ListItemText, Divider } from "@mui/material";
20
+ import MoreVertIcon from "@mui/icons-material/MoreVert";
21
+ function ActionMenu({
22
+ items,
23
+ trigger,
24
+ triggerTooltip = "Acciones",
25
+ anchorOrigin = { vertical: "bottom", horizontal: "right" },
26
+ transformOrigin = { vertical: "top", horizontal: "right" },
27
+ menuSx,
28
+ disabled = false,
29
+ className
30
+ }) {
31
+ const [anchorEl, setAnchorEl] = useState(null);
32
+ const open = Boolean(anchorEl);
33
+ const handleOpen = (event) => {
34
+ if (disabled) return;
35
+ event.stopPropagation();
36
+ setAnchorEl(event.currentTarget);
37
+ };
38
+ const handleClose = () => setAnchorEl(null);
39
+ const handleItemClick = (event, item) => {
40
+ var _a;
41
+ event.stopPropagation();
42
+ (_a = item.onClick) == null ? void 0 : _a.call(item, event);
43
+ handleClose();
44
+ };
45
+ const triggerElement = trigger ? React__default.isValidElement(trigger) ? React__default.cloneElement(trigger, {
46
+ onClick: handleOpen,
47
+ disabled
48
+ }) : /* @__PURE__ */ jsx("span", { onClick: handleOpen, children: trigger }) : /* @__PURE__ */ jsx(Tooltip, { title: triggerTooltip, arrow: true, children: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
49
+ IconButton,
50
+ {
51
+ size: "small",
52
+ onClick: handleOpen,
53
+ disabled,
54
+ "aria-label": triggerTooltip,
55
+ children: /* @__PURE__ */ jsx(MoreVertIcon, { fontSize: "small" })
56
+ }
57
+ ) }) });
58
+ return /* @__PURE__ */ jsxs("span", { className, children: [
59
+ triggerElement,
60
+ /* @__PURE__ */ jsx(
61
+ Menu,
62
+ {
63
+ anchorEl,
64
+ open,
65
+ onClose: handleClose,
66
+ anchorOrigin,
67
+ transformOrigin,
68
+ slotProps: { paper: { sx: __spreadValues({ minWidth: 180 }, menuSx) } },
69
+ children: items.map((item, idx) => {
70
+ var _a;
71
+ const key = (_a = item.key) != null ? _a : `${String(item.label)}-${idx}`;
72
+ const node = /* @__PURE__ */ jsxs(
73
+ MenuItem,
74
+ {
75
+ disabled: item.disabled,
76
+ onClick: (event) => handleItemClick(event, item),
77
+ sx: (theme) => ({
78
+ color: item.danger ? theme.palette.error.main : "inherit",
79
+ "& .MuiListItemIcon-root": {
80
+ color: item.danger ? theme.palette.error.main : "inherit",
81
+ minWidth: 32
82
+ }
83
+ }),
84
+ children: [
85
+ item.icon && /* @__PURE__ */ jsx(ListItemIcon, { children: item.icon }),
86
+ /* @__PURE__ */ jsx(ListItemText, { primary: item.label })
87
+ ]
88
+ },
89
+ key
90
+ );
91
+ if (item.dividerBefore && idx > 0) {
92
+ return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
93
+ /* @__PURE__ */ jsx(Divider, {}),
94
+ node
95
+ ] }, `${key}-frag`);
96
+ }
97
+ return node;
98
+ })
99
+ }
100
+ )
101
+ ] });
102
+ }
103
+ export {
104
+ ActionMenu,
105
+ ActionMenu as default
106
+ };
107
+ //# sourceMappingURL=ActionMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenu.js","sources":["../../../src/components/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, { useState, type ReactNode, type MouseEvent } from 'react';\nimport {\n IconButton,\n Menu,\n MenuItem,\n ListItemIcon,\n ListItemText,\n Divider,\n Tooltip,\n} from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface ActionMenuItem {\n /** Key única para React. 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. Recibe el evento del MenuItem. */\n onClick?: (event: MouseEvent<HTMLLIElement>) => void;\n /** Deshabilita el item. */\n disabled?: boolean;\n /** Marca el item como destructivo (pinta color error). */\n danger?: boolean;\n /** Inserta un `<Divider />` ANTES de este item. */\n dividerBefore?: boolean;\n}\n\nexport interface ActionMenuProps {\n /** Lista de items del menú. */\n items: ActionMenuItem[];\n /**\n * Elemento trigger. Si no se provee, se renderiza un IconButton con icono\n * de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.\n */\n trigger?: ReactNode;\n /** Texto de tooltip sobre el trigger default. Default: \"Acciones\". */\n triggerTooltip?: string;\n /** Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }. */\n anchorOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }. */\n transformOrigin?: {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n /** sx del Menu (Paper interno). */\n menuSx?: SxProps<Theme>;\n /** Deshabilita el trigger entero. */\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Menú de acciones compacto, pensado para celdas de tabla y cabeceras.\n * Reemplaza los patrones `<Dropdown>` de react-bootstrap.\n *\n * ```tsx\n * <ActionMenu\n * items={[\n * { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },\n * { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },\n * { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },\n * ]}\n * />\n * ```\n */\nexport function ActionMenu({\n items,\n trigger,\n triggerTooltip = 'Acciones',\n anchorOrigin = { vertical: 'bottom', horizontal: 'right' },\n transformOrigin = { vertical: 'top', horizontal: 'right' },\n menuSx,\n disabled = false,\n className,\n}: ActionMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleOpen = (event: MouseEvent<HTMLElement>) => {\n if (disabled) return;\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => setAnchorEl(null);\n\n const handleItemClick = (\n event: MouseEvent<HTMLLIElement>,\n item: ActionMenuItem,\n ) => {\n event.stopPropagation();\n item.onClick?.(event);\n handleClose();\n };\n\n const triggerElement = trigger ? (\n React.isValidElement(trigger) ? (\n React.cloneElement(trigger as React.ReactElement<any>, {\n onClick: handleOpen,\n disabled,\n })\n ) : (\n <span onClick={handleOpen}>{trigger}</span>\n )\n ) : (\n <Tooltip title={triggerTooltip} arrow>\n <span>\n <IconButton\n size=\"small\"\n onClick={handleOpen}\n disabled={disabled}\n aria-label={triggerTooltip}\n >\n <MoreVertIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n );\n\n return (\n <span className={className}>\n {triggerElement}\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{ paper: { sx: { minWidth: 180, ...(menuSx as any) } } }}\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 </span>\n );\n}\n\nexport default ActionMenu;\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,eAAe,EAAE,UAAU,UAAU,YAAY,QAAA;AAAA,EACjD,kBAAkB,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,EACjD;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAAoB;AAClB,QAAM,CAAC,UAAU,WAAW,IAAI,SAA6B,IAAI;AACjE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,aAAa,CAAC,UAAmC;AACrD,QAAI,SAAU;AACd,UAAM,gBAAA;AACN,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,QAAM,cAAc,MAAM,YAAY,IAAI;AAE1C,QAAM,kBAAkB,CACtB,OACA,SACG;;AACH,UAAM,gBAAA;AACN,eAAK,YAAL,8BAAe;AACf,gBAAA;AAAA,EACF;AAEA,QAAM,iBAAiB,UACrBA,eAAM,eAAe,OAAO,IAC1BA,eAAM,aAAa,SAAoC;AAAA,IACrD,SAAS;AAAA,IACT;AAAA,EAAA,CACD,IAED,oBAAC,QAAA,EAAK,SAAS,YAAa,UAAA,QAAA,CAAQ,IAGtC,oBAAC,WAAQ,OAAO,gBAAgB,OAAK,MACnC,8BAAC,QAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,cAAY;AAAA,MAEZ,UAAA,oBAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,IAAA;AAAA,EAAA,GAEnC,EAAA,CACF;AAGF,SACE,qBAAC,UAAK,WACH,UAAA;AAAA,IAAA;AAAA,IACD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,WAAW,EAAE,OAAO,EAAE,IAAI,iBAAE,UAAU,OAAS,UAAiB;AAAA,QAE/D,UAAA,MAAM,IAAI,CAAC,MAAM,QAAQ;;AACxB,gBAAM,OAAM,UAAK,QAAL,YAAY,GAAG,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG;AACpD,gBAAM,OACJ;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,UAAU,KAAK;AAAA,cACf,SAAS,CAAC,UAAU,gBAAgB,OAAO,IAAI;AAAA,cAC/C,IAAI,CAAC,WAAW;AAAA,gBACd,OAAO,KAAK,SAAS,MAAM,QAAQ,MAAM,OAAO;AAAA,gBAChD,2BAA2B;AAAA,kBACzB,OAAO,KAAK,SACR,MAAM,QAAQ,MAAM,OACpB;AAAA,kBACJ,UAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,cAGD,UAAA;AAAA,gBAAA,KAAK,QAAQ,oBAAC,cAAA,EAAc,UAAA,KAAK,MAAK;AAAA,gBACvC,oBAAC,cAAA,EAAa,SAAS,KAAK,MAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAd9B;AAAA,UAAA;AAkBT,cAAI,KAAK,iBAAiB,MAAM,GAAG;AACjC,mBACE,qBAACA,eAAM,UAAN,EACC,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAQ;AAAA,cACR;AAAA,YAAA,EAAA,GAFkB,GAAG,GAAG,OAG3B;AAAA,UAEJ;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ export { ActionMenu, default } from './ActionMenu';
2
+ export type { ActionMenuProps, ActionMenuItem } from './ActionMenu';
@@ -0,0 +1,6 @@
1
+ export * from './ActionMenu/index'
2
+ export {}
3
+ import _default from './ActionMenu/index'
4
+ export default _default
5
+ export * from './ActionMenu/index'
6
+ export {}
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
22
+ const jsxRuntime = require("react/jsx-runtime");
23
+ const React = require("react");
24
+ const material = require("@mui/material");
25
+ const styles = require("@mui/material/styles");
26
+ const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
27
+ const MenuIcon = require("@mui/icons-material/Menu");
28
+ const MenuOpenIcon = require("@mui/icons-material/MenuOpen");
29
+ const AppBarContext = React.createContext(null);
30
+ function useAppBarContext() {
31
+ const ctx = React.useContext(AppBarContext);
32
+ return ctx != null ? ctx : {};
33
+ }
34
+ function buildAppBarSx({
35
+ height = 64,
36
+ transparent = false
37
+ }) {
38
+ return (theme) => __spreadProps(__spreadValues({
39
+ minHeight: height,
40
+ justifyContent: "center",
41
+ backgroundImage: "none"
42
+ }, transparent && {
43
+ backgroundColor: "transparent",
44
+ boxShadow: "none",
45
+ borderBottom: `1px solid ${theme.palette.divider}`
46
+ }), {
47
+ "& .MuiToolbar-root": {
48
+ minHeight: height,
49
+ gap: 1.5
50
+ }
51
+ });
52
+ }
53
+ function AppBar({
54
+ children,
55
+ position = "sticky",
56
+ color = "default",
57
+ elevation = 1,
58
+ height = 64,
59
+ onMenuToggle,
60
+ menuOpen,
61
+ preset,
62
+ sx,
63
+ toolbarSx,
64
+ className,
65
+ appBarProps
66
+ }) {
67
+ const theme = styles.useTheme();
68
+ const presetSx = resolvePreset.resolvePreset("AppBar", preset, theme);
69
+ const transparent = color === "transparent";
70
+ const rootSx = [
71
+ buildAppBarSx({ height, transparent }),
72
+ ...presetSx ? [presetSx] : [],
73
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
74
+ ];
75
+ const contextValue = React.useMemo(
76
+ () => ({ onMenuToggle, menuOpen }),
77
+ [onMenuToggle, menuOpen]
78
+ );
79
+ return /* @__PURE__ */ jsxRuntime.jsx(AppBarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
80
+ material.AppBar,
81
+ __spreadProps(__spreadValues({
82
+ position,
83
+ color: color === "transparent" ? "transparent" : color,
84
+ elevation,
85
+ className,
86
+ sx: rootSx
87
+ }, appBarProps), {
88
+ children: /* @__PURE__ */ jsxRuntime.jsx(material.Toolbar, { sx: toolbarSx, children })
89
+ })
90
+ ) });
91
+ }
92
+ function AppBarBrand({
93
+ logo,
94
+ title,
95
+ subtitle,
96
+ onClick,
97
+ hideTitleOnMobile = true,
98
+ sx,
99
+ className
100
+ }) {
101
+ const clickable = !!onClick;
102
+ const rootSx = [
103
+ {
104
+ display: "flex",
105
+ alignItems: "center",
106
+ gap: 1.25,
107
+ cursor: clickable ? "pointer" : "default",
108
+ userSelect: "none",
109
+ minWidth: 0
110
+ },
111
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
112
+ ];
113
+ return /* @__PURE__ */ jsxRuntime.jsxs(
114
+ material.Box,
115
+ {
116
+ role: clickable ? "button" : void 0,
117
+ tabIndex: clickable ? 0 : void 0,
118
+ onClick,
119
+ onKeyDown: (event) => {
120
+ if (!clickable) return;
121
+ if (event.key === "Enter" || event.key === " ") {
122
+ event.preventDefault();
123
+ onClick == null ? void 0 : onClick(event);
124
+ }
125
+ },
126
+ className,
127
+ sx: rootSx,
128
+ children: [
129
+ logo && /* @__PURE__ */ jsxRuntime.jsx(
130
+ material.Box,
131
+ {
132
+ component: "span",
133
+ sx: {
134
+ display: "flex",
135
+ alignItems: "center",
136
+ flexShrink: 0
137
+ },
138
+ children: logo
139
+ }
140
+ ),
141
+ (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs(
142
+ material.Box,
143
+ {
144
+ sx: {
145
+ display: hideTitleOnMobile ? { xs: "none", sm: "flex" } : "flex",
146
+ flexDirection: "column",
147
+ minWidth: 0,
148
+ lineHeight: 1.2
149
+ },
150
+ children: [
151
+ title && /* @__PURE__ */ jsxRuntime.jsx(
152
+ material.Typography,
153
+ {
154
+ component: "span",
155
+ variant: "subtitle1",
156
+ noWrap: true,
157
+ sx: { fontWeight: 700 },
158
+ children: title
159
+ }
160
+ ),
161
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(
162
+ material.Typography,
163
+ {
164
+ component: "span",
165
+ variant: "caption",
166
+ color: "text.secondary",
167
+ noWrap: true,
168
+ children: subtitle
169
+ }
170
+ )
171
+ ]
172
+ }
173
+ )
174
+ ]
175
+ }
176
+ );
177
+ }
178
+ function AppBarMenuToggle({
179
+ onClick,
180
+ menuOpen,
181
+ closedIcon,
182
+ openIcon,
183
+ tooltip = "Menú",
184
+ ariaLabel,
185
+ size = "medium",
186
+ hideIfNoHandler = true,
187
+ sx,
188
+ className
189
+ }) {
190
+ var _a;
191
+ const ctx = useAppBarContext();
192
+ const handler = onClick != null ? onClick : ctx.onMenuToggle;
193
+ const open = (_a = menuOpen != null ? menuOpen : ctx.menuOpen) != null ? _a : false;
194
+ if (!handler && hideIfNoHandler) {
195
+ return null;
196
+ }
197
+ const icon = open ? openIcon != null ? openIcon : /* @__PURE__ */ jsxRuntime.jsx(MenuOpenIcon, {}) : closedIcon != null ? closedIcon : /* @__PURE__ */ jsxRuntime.jsx(MenuIcon, {});
198
+ return /* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: tooltip, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(
199
+ material.IconButton,
200
+ {
201
+ size,
202
+ edge: "start",
203
+ color: "inherit",
204
+ "aria-label": ariaLabel != null ? ariaLabel : tooltip,
205
+ onClick: handler,
206
+ disabled: !handler,
207
+ className,
208
+ sx,
209
+ children: icon
210
+ }
211
+ ) }) });
212
+ }
213
+ function computeInitials(name) {
214
+ var _a, _b, _c, _d;
215
+ if (typeof name !== "string") return "?";
216
+ const parts = name.trim().split(/\s+/).filter(Boolean);
217
+ if (parts.length === 0) return "?";
218
+ const first = (_b = (_a = parts[0]) == null ? void 0 : _a.charAt(0)) != null ? _b : "";
219
+ const last = parts.length > 1 ? (_d = (_c = parts[parts.length - 1]) == null ? void 0 : _c.charAt(0)) != null ? _d : "" : "";
220
+ return (first + last).toUpperCase();
221
+ }
222
+ function AppBarUserMenu({
223
+ user,
224
+ items,
225
+ hideUserHeader = false,
226
+ triggerTooltip = "Cuenta",
227
+ avatarSize = 36,
228
+ menuSx,
229
+ triggerSx,
230
+ className
231
+ }) {
232
+ var _a;
233
+ const [anchorEl, setAnchorEl] = React.useState(null);
234
+ const open = Boolean(anchorEl);
235
+ const handleOpen = (event) => {
236
+ setAnchorEl(event.currentTarget);
237
+ };
238
+ const handleClose = () => setAnchorEl(null);
239
+ const handleItemClick = (event, item) => {
240
+ var _a2;
241
+ event.stopPropagation();
242
+ (_a2 = item.onClick) == null ? void 0 : _a2.call(item, event);
243
+ handleClose();
244
+ };
245
+ const initials = (_a = user == null ? void 0 : user.initials) != null ? _a : computeInitials(user == null ? void 0 : user.name);
246
+ const showUserHeader = !hideUserHeader && ((user == null ? void 0 : user.name) || (user == null ? void 0 : user.email));
247
+ return /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { component: "span", className, children: [
248
+ /* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: triggerTooltip, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(
249
+ material.IconButton,
250
+ {
251
+ onClick: handleOpen,
252
+ size: "small",
253
+ "aria-label": triggerTooltip,
254
+ "aria-haspopup": "menu",
255
+ "aria-expanded": open || void 0,
256
+ sx: [{ p: 0.5 }, ...Array.isArray(triggerSx) ? triggerSx : triggerSx ? [triggerSx] : []],
257
+ children: /* @__PURE__ */ jsxRuntime.jsx(
258
+ material.Avatar,
259
+ {
260
+ src: user == null ? void 0 : user.avatarUrl,
261
+ sx: {
262
+ width: avatarSize,
263
+ height: avatarSize,
264
+ fontSize: avatarSize * 0.4,
265
+ fontWeight: 600
266
+ },
267
+ children: !(user == null ? void 0 : user.avatarUrl) && initials
268
+ }
269
+ )
270
+ }
271
+ ) }),
272
+ /* @__PURE__ */ jsxRuntime.jsxs(
273
+ material.Menu,
274
+ {
275
+ anchorEl,
276
+ open,
277
+ onClose: handleClose,
278
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
279
+ transformOrigin: { vertical: "top", horizontal: "right" },
280
+ slotProps: {
281
+ paper: {
282
+ sx: __spreadValues({ minWidth: 240 }, menuSx)
283
+ }
284
+ },
285
+ children: [
286
+ showUserHeader && /* @__PURE__ */ jsxRuntime.jsxs(
287
+ material.Box,
288
+ {
289
+ sx: {
290
+ px: 2,
291
+ py: 1.25,
292
+ display: "flex",
293
+ flexDirection: "column",
294
+ gap: 0.25
295
+ },
296
+ children: [
297
+ (user == null ? void 0 : user.name) && /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "subtitle2", noWrap: true, sx: { fontWeight: 700 }, children: user.name }),
298
+ (user == null ? void 0 : user.email) && /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "caption", color: "text.secondary", noWrap: true, children: user.email })
299
+ ]
300
+ }
301
+ ),
302
+ showUserHeader && /* @__PURE__ */ jsxRuntime.jsx(material.Divider, {}),
303
+ items.map((item, idx) => {
304
+ var _a2;
305
+ const key = (_a2 = item.key) != null ? _a2 : `${String(item.label)}-${idx}`;
306
+ const node = /* @__PURE__ */ jsxRuntime.jsxs(
307
+ material.MenuItem,
308
+ {
309
+ disabled: item.disabled,
310
+ onClick: (event) => handleItemClick(event, item),
311
+ sx: (theme) => ({
312
+ color: item.danger ? theme.palette.error.main : "inherit",
313
+ "& .MuiListItemIcon-root": {
314
+ color: item.danger ? theme.palette.error.main : "inherit",
315
+ minWidth: 32
316
+ }
317
+ }),
318
+ children: [
319
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx(material.ListItemIcon, { children: item.icon }),
320
+ /* @__PURE__ */ jsxRuntime.jsx(material.ListItemText, { primary: item.label })
321
+ ]
322
+ },
323
+ key
324
+ );
325
+ if (item.dividerBefore && idx > 0) {
326
+ return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
327
+ /* @__PURE__ */ jsxRuntime.jsx(material.Divider, {}),
328
+ node
329
+ ] }, `${key}-frag`);
330
+ }
331
+ return node;
332
+ })
333
+ ]
334
+ }
335
+ )
336
+ ] });
337
+ }
338
+ exports.AppBar = AppBar;
339
+ exports.AppBarBrand = AppBarBrand;
340
+ exports.AppBarContext = AppBarContext;
341
+ exports.AppBarMenuToggle = AppBarMenuToggle;
342
+ exports.AppBarUserMenu = AppBarUserMenu;
343
+ exports.buildAppBarSx = buildAppBarSx;
344
+ exports.default = AppBar;
345
+ exports.useAppBarContext = useAppBarContext;
346
+ //# sourceMappingURL=AppBar.cjs.map