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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/Button-C17mExpd.cjs.map +1 -1
  2. package/Button-UkkP-bNw.js.map +1 -1
  3. package/components/ActionMenu/ActionMenu.cjs +107 -0
  4. package/components/ActionMenu/ActionMenu.cjs.map +1 -0
  5. package/components/ActionMenu/ActionMenu.d.ts +44 -0
  6. package/components/ActionMenu/ActionMenu.js +107 -0
  7. package/components/ActionMenu/ActionMenu.js.map +1 -0
  8. package/components/ActionMenu/index.d.ts +2 -0
  9. package/components/ActionMenu.d.ts +6 -0
  10. package/components/AppBar/AppBar.cjs +129 -0
  11. package/components/AppBar/AppBar.cjs.map +1 -0
  12. package/components/AppBar/AppBar.d.ts +55 -0
  13. package/components/AppBar/AppBar.js +129 -0
  14. package/components/AppBar/AppBar.js.map +1 -0
  15. package/components/AppBar/AppBar.sx.d.ts +12 -0
  16. package/components/AppBar/AppBarContext.d.ts +18 -0
  17. package/components/AppBar/AppBarMenuToggle.d.ts +39 -0
  18. package/components/AppBar/index.d.ts +6 -0
  19. package/components/AppBar.d.ts +6 -0
  20. package/components/Autocomplete/Autocomplete.cjs +263 -82
  21. package/components/Autocomplete/Autocomplete.cjs.map +1 -1
  22. package/components/Autocomplete/Autocomplete.d.ts +71 -13
  23. package/components/Autocomplete/Autocomplete.definitions.d.ts +7 -0
  24. package/components/Autocomplete/Autocomplete.helpers.d.ts +22 -0
  25. package/components/Autocomplete/Autocomplete.js +264 -83
  26. package/components/Autocomplete/Autocomplete.js.map +1 -1
  27. package/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
  28. package/components/Autocomplete/_parts/AutocompleteChips.d.ts +20 -0
  29. package/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
  30. package/components/Autocomplete/_parts/AutocompleteOption.d.ts +16 -0
  31. package/components/Autocomplete/index.d.ts +2 -1
  32. package/components/Autocomplete.d.ts +4 -0
  33. package/components/Avatar/Avatar.cjs +117 -81
  34. package/components/Avatar/Avatar.cjs.map +1 -1
  35. package/components/Avatar/Avatar.d.ts +16 -2
  36. package/components/Avatar/Avatar.definitions.d.ts +11 -0
  37. package/components/Avatar/Avatar.js +118 -82
  38. package/components/Avatar/Avatar.js.map +1 -1
  39. package/components/Avatar/index.d.ts +1 -0
  40. package/components/Button/Button.d.ts +5 -5
  41. package/components/Button/index.d.ts +1 -0
  42. package/components/Card/Card.cjs +78 -7
  43. package/components/Card/Card.cjs.map +1 -1
  44. package/components/Card/Card.d.ts +31 -8
  45. package/components/Card/Card.js +79 -8
  46. package/components/Card/Card.js.map +1 -1
  47. package/components/Card/Card.sx.d.ts +14 -0
  48. package/components/Card/index.d.ts +4 -1
  49. package/components/Card.d.ts +4 -0
  50. package/components/Checkbox/Checkbox.cjs +189 -0
  51. package/components/Checkbox/Checkbox.cjs.map +1 -0
  52. package/components/Checkbox/Checkbox.d.ts +55 -0
  53. package/components/Checkbox/Checkbox.js +189 -0
  54. package/components/Checkbox/Checkbox.js.map +1 -0
  55. package/components/Checkbox/Checkbox.sx.d.ts +13 -0
  56. package/components/Checkbox/index.d.ts +2 -0
  57. package/components/Checkbox.d.ts +6 -0
  58. package/components/Chip/Chip.cjs +2 -1
  59. package/components/Chip/Chip.cjs.map +1 -1
  60. package/components/Chip/Chip.js +2 -1
  61. package/components/Chip/Chip.js.map +1 -1
  62. package/components/Chip/index.d.ts +2 -1
  63. package/components/Chip.d.ts +4 -0
  64. package/components/DatePicker/DatePicker.cjs +178 -3
  65. package/components/DatePicker/DatePicker.cjs.map +1 -1
  66. package/components/DatePicker/DatePicker.d.ts +35 -9
  67. package/components/DatePicker/DatePicker.definitions.d.ts +1 -0
  68. package/components/DatePicker/DatePicker.helpers.d.ts +7 -0
  69. package/components/DatePicker/DatePicker.js +177 -2
  70. package/components/DatePicker/DatePicker.js.map +1 -1
  71. package/components/DatePicker/DatePicker.sx.d.ts +9 -0
  72. package/components/DatePicker/index.d.ts +2 -1
  73. package/components/DatePicker.d.ts +4 -0
  74. package/components/DateTimePicker/DateTimePicker.cjs +121 -131
  75. package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  76. package/components/DateTimePicker/DateTimePicker.d.ts +41 -12
  77. package/components/DateTimePicker/DateTimePicker.definitions.d.ts +3 -0
  78. package/components/DateTimePicker/DateTimePicker.helpers.d.ts +13 -0
  79. package/components/DateTimePicker/DateTimePicker.js +121 -131
  80. package/components/DateTimePicker/DateTimePicker.js.map +1 -1
  81. package/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
  82. package/components/DateTimePicker/index.d.ts +2 -1
  83. package/components/DateTimePicker.d.ts +4 -0
  84. package/components/Drawer/Drawer.cjs +272 -0
  85. package/components/Drawer/Drawer.cjs.map +1 -0
  86. package/components/Drawer/Drawer.d.ts +58 -0
  87. package/components/Drawer/Drawer.js +272 -0
  88. package/components/Drawer/Drawer.js.map +1 -0
  89. package/components/Drawer/Drawer.sx.d.ts +23 -0
  90. package/components/Drawer/DrawerContext.d.ts +18 -0
  91. package/components/Drawer/DrawerItem.d.ts +40 -0
  92. package/components/Drawer/index.d.ts +6 -0
  93. package/components/Drawer.d.ts +6 -0
  94. package/components/Gallery/Gallery.cjs +154 -79
  95. package/components/Gallery/Gallery.cjs.map +1 -1
  96. package/components/Gallery/Gallery.d.ts +25 -9
  97. package/components/Gallery/Gallery.js +154 -79
  98. package/components/Gallery/Gallery.js.map +1 -1
  99. package/components/Gallery/GalleryLightbox.d.ts +6 -10
  100. package/components/Gallery/GalleryMain.d.ts +3 -7
  101. package/components/Gallery/GalleryThumbnails.d.ts +7 -11
  102. package/components/Gallery/index.d.ts +2 -1
  103. package/components/Gallery.d.ts +4 -0
  104. package/components/Icon/Icon.cjs +49 -10
  105. package/components/Icon/Icon.cjs.map +1 -1
  106. package/components/Icon/Icon.d.ts +29 -2
  107. package/components/Icon/Icon.js +49 -10
  108. package/components/Icon/Icon.js.map +1 -1
  109. package/components/Icon/index.d.ts +2 -1
  110. package/components/Icon.d.ts +4 -0
  111. package/components/Input/Input.cjs +186 -3
  112. package/components/Input/Input.cjs.map +1 -1
  113. package/components/Input/Input.d.ts +29 -17
  114. package/components/Input/Input.definitions.d.ts +6 -2
  115. package/components/Input/Input.helpers.d.ts +14 -0
  116. package/components/Input/Input.js +185 -2
  117. package/components/Input/Input.js.map +1 -1
  118. package/components/Input/Input.sx.d.ts +8 -0
  119. package/components/Input/index.d.ts +2 -1
  120. package/components/Input.d.ts +4 -0
  121. package/components/InputGroup/InputGroup.cjs +107 -93
  122. package/components/InputGroup/InputGroup.cjs.map +1 -1
  123. package/components/InputGroup/InputGroup.d.ts +38 -2
  124. package/components/InputGroup/InputGroup.definitions.d.ts +6 -0
  125. package/components/InputGroup/InputGroup.js +109 -95
  126. package/components/InputGroup/InputGroup.js.map +1 -1
  127. package/components/InputGroup/index.d.ts +2 -1
  128. package/components/InputGroup.d.ts +4 -0
  129. package/components/Modal/Modal.cjs +287 -148
  130. package/components/Modal/Modal.cjs.map +1 -1
  131. package/components/Modal/Modal.d.ts +57 -6
  132. package/components/Modal/Modal.js +289 -150
  133. package/components/Modal/Modal.js.map +1 -1
  134. package/components/Modal/ModalBody.d.ts +6 -1
  135. package/components/Modal/ModalFooter.d.ts +12 -4
  136. package/components/Modal/ModalHeader.d.ts +6 -1
  137. package/components/Modal/index.d.ts +8 -1
  138. package/components/Modal.d.ts +4 -0
  139. package/components/RadioGroup/RadioGroup.cjs +204 -0
  140. package/components/RadioGroup/RadioGroup.cjs.map +1 -0
  141. package/components/RadioGroup/RadioGroup.d.ts +59 -0
  142. package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  143. package/components/RadioGroup/RadioGroup.js +204 -0
  144. package/components/RadioGroup/RadioGroup.js.map +1 -0
  145. package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  146. package/components/RadioGroup/index.d.ts +2 -0
  147. package/components/RadioGroup.d.ts +6 -0
  148. package/components/Select/Select.cjs +311 -4
  149. package/components/Select/Select.cjs.map +1 -1
  150. package/components/Select/Select.d.ts +62 -27
  151. package/components/Select/Select.helpers.d.ts +15 -0
  152. package/components/Select/Select.js +310 -3
  153. package/components/Select/Select.js.map +1 -1
  154. package/components/Select/Select.sx.d.ts +7 -0
  155. package/components/Select/_parts/SelectMenuItem.d.ts +20 -0
  156. package/components/Select/index.d.ts +2 -1
  157. package/components/Select.d.ts +4 -0
  158. package/components/Stat/Stat.cjs +2 -2
  159. package/components/Stat/Stat.cjs.map +1 -1
  160. package/components/Stat/Stat.js +2 -2
  161. package/components/Stat/Stat.js.map +1 -1
  162. package/components/Stat/index.d.ts +2 -1
  163. package/components/Stat.d.ts +4 -0
  164. package/components/StatusMessage/StatusMessage.cjs +66 -55
  165. package/components/StatusMessage/StatusMessage.cjs.map +1 -1
  166. package/components/StatusMessage/StatusMessage.d.ts +20 -36
  167. package/components/StatusMessage/StatusMessage.js +68 -57
  168. package/components/StatusMessage/StatusMessage.js.map +1 -1
  169. package/components/StatusMessage/index.d.ts +2 -1
  170. package/components/StatusMessage.d.ts +4 -0
  171. package/components/Stepper/Stepper.cjs +285 -29
  172. package/components/Stepper/Stepper.cjs.map +1 -1
  173. package/components/Stepper/Stepper.d.ts +13 -7
  174. package/components/Stepper/Stepper.js +287 -31
  175. package/components/Stepper/Stepper.js.map +1 -1
  176. package/components/Stepper/StepperContext.d.ts +73 -0
  177. package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
  178. package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
  179. package/components/Stepper/index.d.ts +6 -2
  180. package/components/Stepper.d.ts +4 -0
  181. package/components/Switch/Switch.cjs +184 -0
  182. package/components/Switch/Switch.cjs.map +1 -0
  183. package/components/Switch/Switch.d.ts +48 -0
  184. package/components/Switch/Switch.definitions.d.ts +7 -0
  185. package/components/Switch/Switch.js +184 -0
  186. package/components/Switch/Switch.js.map +1 -0
  187. package/components/Switch/Switch.sx.d.ts +22 -0
  188. package/components/Switch/Switch.types.d.ts +1 -0
  189. package/components/Switch/index.d.ts +2 -0
  190. package/components/Switch.d.ts +6 -0
  191. package/components/Tabs/Tabs.cjs +45 -29
  192. package/components/Tabs/Tabs.cjs.map +1 -1
  193. package/components/Tabs/Tabs.d.ts +21 -16
  194. package/components/Tabs/Tabs.js +46 -30
  195. package/components/Tabs/Tabs.js.map +1 -1
  196. package/components/Tabs/index.d.ts +4 -2
  197. package/components/Tabs.d.ts +4 -0
  198. package/components/Timeline/Timeline.cjs +3 -2
  199. package/components/Timeline/Timeline.cjs.map +1 -1
  200. package/components/Timeline/Timeline.d.ts +4 -8
  201. package/components/Timeline/Timeline.js +3 -2
  202. package/components/Timeline/Timeline.js.map +1 -1
  203. package/components/Timeline/index.d.ts +4 -2
  204. package/components/Timeline.d.ts +4 -0
  205. package/components/_shared/formField.sx.d.ts +33 -0
  206. package/components/_shared/mergeSx.d.ts +7 -0
  207. package/components/_shared/resolvePreset.d.ts +18 -0
  208. package/formField.sx-8_QRnKxv.js +68 -0
  209. package/formField.sx-8_QRnKxv.js.map +1 -0
  210. package/formField.sx-BAX7KwMR.cjs +67 -0
  211. package/formField.sx-BAX7KwMR.cjs.map +1 -0
  212. package/index.cjs +144 -1
  213. package/index.cjs.map +1 -1
  214. package/index.d.ts +4 -0
  215. package/index.js +49 -2
  216. package/index.js.map +1 -1
  217. package/mergeSx-BXoNZjB_.js +10 -0
  218. package/mergeSx-BXoNZjB_.js.map +1 -0
  219. package/mergeSx-Dbccoo_H.cjs +9 -0
  220. package/mergeSx-Dbccoo_H.cjs.map +1 -0
  221. package/mui.d.ts +7 -0
  222. package/package.json +31 -1
  223. package/resolvePreset-B-IB0ehH.js +15 -0
  224. package/resolvePreset-B-IB0ehH.js.map +1 -0
  225. package/resolvePreset-CT3kU-K2.cjs +14 -0
  226. package/resolvePreset-CT3kU-K2.cjs.map +1 -0
  227. package/theme/componentStyles.d.ts +32 -0
  228. package/theme/tokens.d.ts +28 -0
  229. package/tokens-BRrcP_p_.js +21 -0
  230. package/tokens-BRrcP_p_.js.map +1 -0
  231. package/tokens-jaWWNk39.cjs +20 -0
  232. package/tokens-jaWWNk39.cjs.map +1 -0
  233. package/utils/index.d.ts +2 -0
  234. package/utils/scrollToTop.d.ts +28 -0
  235. package/DatePicker-BSNboVhN.js +0 -201
  236. package/DatePicker-BSNboVhN.js.map +0 -1
  237. package/DatePicker-BoqxWAhj.cjs +0 -200
  238. package/DatePicker-BoqxWAhj.cjs.map +0 -1
  239. package/Input-DFHs7cJ_.js +0 -171
  240. package/Input-DFHs7cJ_.js.map +0 -1
  241. package/Input-c8MwNNPg.cjs +0 -170
  242. package/Input-c8MwNNPg.cjs.map +0 -1
  243. package/Select-BO2N56sm.cjs +0 -411
  244. package/Select-BO2N56sm.cjs.map +0 -1
  245. package/Select-BcLkyHSE.js +0 -412
  246. package/Select-BcLkyHSE.js.map +0 -1
  247. package/components/Select/Select.definitions.d.ts +0 -14
@@ -31,43 +31,54 @@ var __objRest = (source, exclude) => {
31
31
  };
32
32
  import { jsx } from "react/jsx-runtime";
33
33
  import React__default, { useMemo } from "react";
34
+ import { useTheme } from "@mui/material/styles";
34
35
  import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
35
36
  import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
36
37
  import { DateTimePicker as DateTimePicker$1 } from "@mui/x-date-pickers/DateTimePicker";
37
- import { styled } from "@mui/system";
38
- import { TextField, Box } from "@mui/material";
39
- const StyledTextField = styled(TextField)(({ theme }) => ({
40
- "& .MuiInputBase-root": {
41
- maxHeight: "34px",
42
- padding: "8px 10px",
43
- borderRadius: "10px",
44
- display: "flex",
45
- alignItems: "center",
46
- fontSize: "14px"
47
- },
48
- "& .MuiInputBase-input": {
49
- padding: "0 !important",
50
- height: "18px",
51
- display: "flex",
52
- alignItems: "center",
53
- marginTop: "-4px"
54
- },
55
- "& .MuiInputLabel-root": {
56
- top: "50%",
57
- transform: "translate(14px, -50%)",
58
- "&.MuiInputLabel-shrink": {
59
- transform: "translate(1px, -200%) scale(0.75)",
60
- fontSize: "16px !important",
61
- "> legend": {
62
- display: "none"
63
- }
38
+ import { b as buildFormFieldSx } from "../../formField.sx-8_QRnKxv.js";
39
+ import { F as FIELD_INPUT_PADDING_Y } from "../../tokens-BRrcP_p_.js";
40
+ import { r as resolvePreset } from "../../resolvePreset-B-IB0ehH.js";
41
+ const buildDateTimePickerSx = (borderRadius, labelPosition) => buildFormFieldSx({
42
+ borderRadius,
43
+ labelPosition,
44
+ includePickersApi: true,
45
+ extraOutsideSx: {
46
+ "& .MuiInputBase-input": {
47
+ paddingTop: FIELD_INPUT_PADDING_Y,
48
+ paddingBottom: FIELD_INPUT_PADDING_Y
49
+ },
50
+ "& .MuiPickersInputBase-sectionsContainer": {
51
+ paddingTop: FIELD_INPUT_PADDING_Y,
52
+ paddingBottom: FIELD_INPUT_PADDING_Y
64
53
  }
65
- },
66
- "& .MuiOutlinedInput-notchedOutline": {
67
- border: "0.7px solid",
68
- borderColor: "#e0e0e0"
69
54
  }
70
- }));
55
+ });
56
+ const getDateTimeValidationMessage = (error) => {
57
+ switch (error) {
58
+ case "minDate":
59
+ case "maxDate":
60
+ case "minTime":
61
+ case "maxTime":
62
+ return "Fecha/hora fuera del rango permitido";
63
+ case "invalidDate":
64
+ return "Formato de fecha/hora inválido";
65
+ case "disableFuture":
66
+ return "No se permiten fechas/horas futuras";
67
+ case "disablePast":
68
+ return "No se permiten fechas/horas pasadas";
69
+ case "minutesStep":
70
+ return "Minutos no válidos para el paso configurado";
71
+ default:
72
+ return "";
73
+ }
74
+ };
75
+ const buildLocaleText = (clearButtonText, cancelButtonText, acceptButtonText) => {
76
+ const text = {};
77
+ if (clearButtonText) text.clearButtonLabel = clearButtonText;
78
+ if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;
79
+ if (acceptButtonText) text.okButtonLabel = acceptButtonText;
80
+ return text;
81
+ };
71
82
  const DateTimePicker = (_a) => {
72
83
  var _b = _a, {
73
84
  label,
@@ -77,17 +88,27 @@ const DateTimePicker = (_a) => {
77
88
  maxDateTime,
78
89
  disabled,
79
90
  readOnly,
80
- customClass = "",
81
91
  inputFormat,
82
- slotProps,
92
+ borderRadius = 10,
93
+ labelPosition = "outside",
94
+ size = "small",
95
+ helperText,
96
+ error: errorProp,
97
+ sx,
98
+ className,
99
+ preset,
100
+ adapterLocale,
83
101
  clearButtonText,
84
102
  cancelButtonText,
85
103
  acceptButtonText,
86
104
  minutesStep,
87
105
  minTime,
106
+ ampm = false,
88
107
  viewRenderers,
89
108
  timeSteps,
90
- ampm
109
+ views,
110
+ textFieldProps,
111
+ slotProps: slotPropsProp
91
112
  } = _b, rest = __objRest(_b, [
92
113
  "label",
93
114
  "selectedDateTime",
@@ -96,113 +117,82 @@ const DateTimePicker = (_a) => {
96
117
  "maxDateTime",
97
118
  "disabled",
98
119
  "readOnly",
99
- "customClass",
100
120
  "inputFormat",
101
- "slotProps",
121
+ "borderRadius",
122
+ "labelPosition",
123
+ "size",
124
+ "helperText",
125
+ "error",
126
+ "sx",
127
+ "className",
128
+ "preset",
129
+ "adapterLocale",
102
130
  "clearButtonText",
103
131
  "cancelButtonText",
104
132
  "acceptButtonText",
105
133
  "minutesStep",
106
134
  "minTime",
135
+ "ampm",
107
136
  "viewRenderers",
108
137
  "timeSteps",
109
- "ampm"
138
+ "views",
139
+ "textFieldProps",
140
+ "slotProps"
110
141
  ]);
111
- var _a2, _b2, _c;
112
- const [error, setError] = React__default.useState(null);
113
- const errorMessage = useMemo(() => {
114
- switch (error) {
115
- case "minDate":
116
- case "maxDate":
117
- case "invalidDate": {
118
- return "Formato de fecha/hora inválido";
119
- }
120
- case "disableFuture": {
121
- return "No se permiten fechas/horas futuras";
122
- }
123
- case "disablePast": {
124
- return "No se permiten fechas/horas pasadas";
125
- }
126
- default: {
127
- return "";
128
- }
129
- }
130
- }, [error]);
131
- const customLocaleText = useMemo(() => {
132
- const text = {};
133
- if (clearButtonText) text.clearButtonLabel = clearButtonText;
134
- if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;
135
- if (acceptButtonText) text.okButtonLabel = acceptButtonText;
136
- return text;
137
- }, [clearButtonText, cancelButtonText, acceptButtonText]);
138
- return /* @__PURE__ */ jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: /* @__PURE__ */ jsx(
139
- Box,
140
- {
141
- sx: {
142
- width: "100%",
143
- display: "grid",
144
- marginBottom: "10px",
145
- marginTop: "10px"
146
- },
147
- children: /* @__PURE__ */ jsx(
148
- DateTimePicker$1,
149
- __spreadValues({
150
- className: customClass,
151
- label,
152
- value: selectedDateTime,
153
- onChange: onDateTimeChange,
154
- minDateTime,
155
- maxDateTime,
156
- minutesStep,
157
- disabled,
158
- readOnly,
159
- minTime,
160
- format: inputFormat ? inputFormat : "DD/MM/YYYY HH:mm",
161
- viewRenderers,
162
- timeSteps,
163
- sx: {
164
- "& .MuiPickersInputBase-root, .MuiPickersOutlinedInput-root": {
165
- maxHeight: "28px",
166
- borderRadius: "10px"
167
- },
168
- "& .MuiInputLabel-root": {
169
- // El label se alinea con el padding del input base.
170
- top: "50%",
171
- transform: "translate(14px, -50%)",
172
- // Estilo para el label "encogido" cuando el input está lleno o en foco
173
- "&.MuiInputLabel-shrink": {
174
- transform: "translate(1px, -200%) scale(0.75)",
175
- // Ajustar la posición para que se vea por encima del input
176
- fontSize: "16px !important",
177
- "> legend": {
178
- display: "none"
179
- // Ocultar el legend del outline
180
- }
181
- }
182
- },
183
- "& .MuiPickersInputBase-root > fieldset > legend": {
184
- display: "none"
185
- // Ocultar el legend del outline
186
- }
187
- },
188
- slotProps: __spreadProps(__spreadValues({}, slotProps), {
189
- // 2. Usar 'slotProps' para pasar el componente estilizado al TextField
190
- textField: __spreadProps(__spreadValues({}, slotProps == null ? void 0 : slotProps.textField), {
191
- helperText: errorMessage || ((_a2 = slotProps == null ? void 0 : slotProps.textField) == null ? void 0 : _a2.helperText),
192
- error: !!errorMessage || ((_b2 = slotProps == null ? void 0 : slotProps.textField) == null ? void 0 : _b2.error),
193
- InputProps: __spreadProps(__spreadValues({}, (_c = slotProps == null ? void 0 : slotProps.textField) == null ? void 0 : _c.InputProps), {
194
- inputComponent: StyledTextField
195
- })
196
- })
197
- }),
198
- localeText: __spreadValues({}, customLocaleText),
199
- ampm: false
200
- }, rest)
201
- )
202
- }
142
+ const [validationError, setValidationError] = React__default.useState(null);
143
+ const validationErrorMessage = useMemo(
144
+ () => getDateTimeValidationMessage(validationError),
145
+ [validationError]
146
+ );
147
+ const customLocaleText = useMemo(
148
+ () => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),
149
+ [clearButtonText, cancelButtonText, acceptButtonText]
150
+ );
151
+ const theme = useTheme();
152
+ const presetSx = resolvePreset("DateTimePicker", preset, theme);
153
+ const mergedSx = [
154
+ buildDateTimePickerSx(borderRadius, labelPosition),
155
+ ...presetSx ? [presetSx] : [],
156
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
157
+ ];
158
+ const finalError = !!validationErrorMessage || !!errorProp;
159
+ const finalHelperText = validationErrorMessage || helperText;
160
+ return /* @__PURE__ */ jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, adapterLocale, children: /* @__PURE__ */ jsx(
161
+ DateTimePicker$1,
162
+ __spreadValues({
163
+ className,
164
+ label,
165
+ value: selectedDateTime,
166
+ onChange: onDateTimeChange,
167
+ onError: setValidationError,
168
+ minDateTime,
169
+ maxDateTime,
170
+ minutesStep,
171
+ disabled,
172
+ readOnly,
173
+ minTime,
174
+ format: inputFormat != null ? inputFormat : "DD/MM/YYYY HH:mm",
175
+ ampm,
176
+ viewRenderers,
177
+ timeSteps,
178
+ views,
179
+ sx: mergedSx,
180
+ slotProps: __spreadProps(__spreadValues({}, slotPropsProp), {
181
+ textField: __spreadProps(__spreadValues(__spreadValues({
182
+ fullWidth: true,
183
+ size,
184
+ variant: "outlined"
185
+ }, slotPropsProp == null ? void 0 : slotPropsProp.textField), textFieldProps), {
186
+ error: !!finalError,
187
+ helperText: finalHelperText
188
+ })
189
+ }),
190
+ localeText: customLocaleText
191
+ }, rest)
203
192
  ) });
204
193
  };
205
194
  export {
206
- DateTimePicker
195
+ DateTimePicker,
196
+ DateTimePicker as default
207
197
  };
208
198
  //# sourceMappingURL=DateTimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.js","sources":["../../../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { DateTimePicker as MuiDateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport { DateValidationError } from '@mui/x-date-pickers/models';\nimport { Dayjs } from 'dayjs';\nimport { styled } from '@mui/system';\nimport { Box, TextField, TextFieldProps } from '@mui/material';\n\n// Define las props para el DateTimePicker\nexport interface DateTimePickerProps {\n label: string;\n selectedDateTime: Dayjs | null;\n onDateTimeChange: (dateTime: Dayjs | null) => void;\n minDateTime?: Dayjs;\n maxDateTime?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n inputFormat?: string;\n slotProps?: any;\n clearButtonText?: string;\n cancelButtonText?: string;\n acceptButtonText?: string;\n minutesStep?: number;\n minTime?: Dayjs;\n customClass?: string;\n viewRenderers?: any\n timeSteps?: any\n ampm?: boolean;\n}\n\n// 1. Crear un componente estilizado para el TextField\n// Este componente tendrá los mismos estilos de altura, padding y label que tu Input.tsx\nconst StyledTextField = styled(TextField)(({ theme }) => ({\n '& .MuiInputBase-root': {\n maxHeight: '34px',\n padding: '8px 10px',\n borderRadius: '10px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n },\n '& .MuiInputBase-input': {\n padding: '0 !important',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n marginTop: '-4px'\n },\n '& .MuiInputLabel-root': {\n top: '50%',\n transform: 'translate(14px, -50%)',\n '&.MuiInputLabel-shrink': {\n transform: 'translate(1px, -200%) scale(0.75)',\n fontSize: '16px !important',\n '> legend': {\n display: 'none',\n }\n },\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: '0.7px solid',\n borderColor: '#e0e0e0',\n },\n}));\n\n/**\n * Custom Material UI DateTimePicker component.\n * Allows selecting a date and time, and updates a Dayjs state.\n */\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n label,\n selectedDateTime,\n onDateTimeChange,\n minDateTime,\n maxDateTime,\n disabled,\n readOnly,\n customClass= '',\n inputFormat,\n slotProps,\n clearButtonText,\n cancelButtonText,\n acceptButtonText,\n minutesStep,\n minTime,\n viewRenderers,\n timeSteps,\n ampm,\n ...rest\n}) => {\n const [error, setError] = React.useState<DateValidationError | null>(null);\n\n const errorMessage = useMemo(() => {\n switch (error) {\n case 'minDate':\n case 'maxDate':\n case 'invalidDate': {\n return 'Formato de fecha/hora inválido';\n }\n case 'disableFuture': {\n return 'No se permiten fechas/horas futuras';\n }\n case 'disablePast': {\n return 'No se permiten fechas/horas pasadas';\n }\n default: {\n return '';\n }\n }\n }, [error]);\n\n const customLocaleText = useMemo(() => {\n const text: Record<string, string> = {};\n if (clearButtonText) text.clearButtonLabel = clearButtonText;\n if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;\n if (acceptButtonText) text.okButtonLabel = acceptButtonText;\n return text;\n }, [clearButtonText, cancelButtonText, acceptButtonText]);\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <Box\n sx={{\n width: '100%',\n display: 'grid',\n marginBottom: '10px',\n marginTop: '10px'\n }}\n\n >\n <MuiDateTimePicker\n className={customClass}\n label={label}\n value={selectedDateTime}\n onChange={onDateTimeChange}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n minutesStep={minutesStep}\n disabled={disabled}\n readOnly={readOnly}\n minTime={minTime}\n format={inputFormat ? inputFormat: 'DD/MM/YYYY HH:mm'}\n viewRenderers={viewRenderers}\n timeSteps={timeSteps}\n sx={{\n '& .MuiPickersInputBase-root, .MuiPickersOutlinedInput-root': {\n maxHeight: '28px',\n borderRadius: '10px',\n },\n '& .MuiInputLabel-root': {\n // El label se alinea con el padding del input base.\n top: '50%',\n transform: 'translate(14px, -50%)',\n \n // Estilo para el label \"encogido\" cuando el input está lleno o en foco\n '&.MuiInputLabel-shrink': {\n transform: 'translate(1px, -200%) scale(0.75)', // Ajustar la posición para que se vea por encima del input\n fontSize: '16px !important',\n '> legend': {\n display: 'none', // Ocultar el legend del outline\n }\n },\n },\n '& .MuiPickersInputBase-root > fieldset > legend':{\n display: 'none', // Ocultar el legend del outline\n },\n }}\n slotProps={{\n ...slotProps,\n // 2. Usar 'slotProps' para pasar el componente estilizado al TextField\n textField: {\n ...slotProps?.textField,\n helperText: errorMessage || slotProps?.textField?.helperText,\n error: !!errorMessage || slotProps?.textField?.error,\n InputProps: {\n ...slotProps?.textField?.InputProps,\n inputComponent: StyledTextField,\n },\n },\n }}\n localeText={{ ...customLocaleText }}\n ampm={false}\n {...rest}\n />\n </Box>\n </LocalizationProvider>\n );\n};\n\nexport default DateTimePicker;"],"names":["React","MuiDateTimePicker","_a","_b"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimePicker.js","sources":["../../../src/components/DateTimePicker/DateTimePicker.sx.ts","../../../src/components/DateTimePicker/DateTimePicker.helpers.ts","../../../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport { FIELD_INPUT_PADDING_Y } from '../../theme/tokens';\nimport type { LabelPosition } from './DateTimePicker';\n\n/**\n * Builder de sx para el DateTimePicker. Mismo patrón que DatePicker.\n * Usa `includePickersApi: true` para soportar la API nueva de MUI X v8.\n */\nexport const buildDateTimePickerSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): SxProps<Theme> =>\n buildFormFieldSx({\n borderRadius,\n labelPosition,\n includePickersApi: true,\n extraOutsideSx: {\n '& .MuiInputBase-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n\n '& .MuiPickersInputBase-sectionsContainer': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n },\n });\n","import type { DateTimeValidationError } from '@mui/x-date-pickers/models';\n\n/**\n * Traduce el error del DateTimePicker a un mensaje en español. Se usa\n * internamente para poblar `helperText` cuando hay error de validación.\n * Cubre tanto errores de fecha (`minDate`, `maxDate`, etc.) como de hora\n * (`minTime`, `maxTime`, `minutesStep`, etc.).\n */\nexport const getDateTimeValidationMessage = (\n error: DateTimeValidationError | null,\n): string => {\n switch (error) {\n case 'minDate':\n case 'maxDate':\n case 'minTime':\n case 'maxTime':\n return 'Fecha/hora fuera del rango permitido';\n case 'invalidDate':\n return 'Formato de fecha/hora inválido';\n case 'disableFuture':\n return 'No se permiten fechas/horas futuras';\n case 'disablePast':\n return 'No se permiten fechas/horas pasadas';\n case 'minutesStep':\n return 'Minutos no válidos para el paso configurado';\n default:\n return '';\n }\n};\n\n/**\n * Construye el `localeText` que MUI acepta para overridear los labels de los\n * botones del popover (Cancel / OK / Clear).\n */\nexport const buildLocaleText = (\n clearButtonText?: string,\n cancelButtonText?: string,\n acceptButtonText?: string,\n): Record<string, string> => {\n const text: Record<string, string> = {};\n if (clearButtonText) text.clearButtonLabel = clearButtonText;\n if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;\n if (acceptButtonText) text.okButtonLabel = acceptButtonText;\n return text;\n};\n","import React, { useMemo } from 'react';\nimport type { SxProps, Theme } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport {\n DateTimePicker as MuiDateTimePicker,\n type DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker';\nimport type { DateTimeValidationError } from '@mui/x-date-pickers/models';\nimport { Dayjs } from 'dayjs';\n\nimport { buildDateTimePickerSx } from './DateTimePicker.sx';\nimport {\n buildLocaleText,\n getDateTimeValidationMessage,\n} from './DateTimePicker.helpers';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport type LabelPosition = 'outside' | 'floating';\nexport type DateTimePickerSize = 'small' | 'medium';\n\n// ── Props base ───────────────────────────────────────────────────────────\nexport interface BaseDateTimePickerProps\n extends Omit<MuiDateTimePickerProps, 'value' | 'onChange' | 'slotProps' | 'format'> {\n label?: string;\n minDateTime?: Dayjs;\n maxDateTime?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n /** Formato de la fecha/hora. Default: 'DD/MM/YYYY HH:mm'. */\n inputFormat?: string;\n /** Border radius del input. Default: 10. */\n borderRadius?: number | string;\n /** \"outside\" (default) o \"floating\". */\n labelPosition?: LabelPosition;\n /** Tamaño del TextField. Default: 'small'. */\n size?: DateTimePickerSize;\n helperText?: string;\n error?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.DateTimePicker`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n /** Locale del adaptador dayjs. */\n adapterLocale?: string;\n /** Textos de los botones del popover. */\n clearButtonText?: string;\n cancelButtonText?: string;\n acceptButtonText?: string;\n minutesStep?: number;\n minTime?: Dayjs;\n /** Si es true usa formato 12h (AM/PM), false = 24h. Default: false. */\n ampm?: boolean;\n viewRenderers?: MuiDateTimePickerProps['viewRenderers'];\n timeSteps?: MuiDateTimePickerProps['timeSteps'];\n /**\n * Vistas a mostrar en el popover. Default: todas (year, month, day, hours, minutes).\n * Ej: `['hours']` solo permite elegir la hora. `['hours','minutes']` oculta el calendar.\n */\n views?: MuiDateTimePickerProps['views'];\n textFieldProps?: Record<string, any>;\n /** Passthrough completo a slotProps del MuiDateTimePicker. */\n slotProps?: MuiDateTimePickerProps['slotProps'];\n}\n\n// ── API pública ──────────────────────────────────────────────────────────\nexport interface DateTimePickerProps extends BaseDateTimePickerProps {\n selectedDateTime: Dayjs | null;\n onDateTimeChange: (dateTime: Dayjs | null) => void;\n}\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n label,\n selectedDateTime,\n onDateTimeChange,\n minDateTime,\n maxDateTime,\n disabled,\n readOnly,\n inputFormat,\n borderRadius = 10,\n labelPosition = 'outside',\n size = 'small',\n helperText,\n error: errorProp,\n sx,\n className,\n preset,\n adapterLocale,\n clearButtonText,\n cancelButtonText,\n acceptButtonText,\n minutesStep,\n minTime,\n ampm = false,\n viewRenderers,\n timeSteps,\n views,\n textFieldProps,\n slotProps: slotPropsProp,\n ...rest\n}) => {\n const [validationError, setValidationError] = React.useState<DateTimeValidationError | null>(null);\n\n const validationErrorMessage = useMemo(\n () => getDateTimeValidationMessage(validationError),\n [validationError],\n );\n\n const customLocaleText = useMemo(\n () => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),\n [clearButtonText, cancelButtonText, acceptButtonText],\n );\n\n const theme = useTheme();\n const presetSx = resolvePreset('DateTimePicker', preset, theme);\n\n const mergedSx = [\n buildDateTimePickerSx(borderRadius, labelPosition),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const finalError = !!validationErrorMessage || !!errorProp;\n const finalHelperText = validationErrorMessage || helperText;\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <MuiDateTimePicker\n className={className}\n label={label}\n value={selectedDateTime}\n onChange={onDateTimeChange}\n onError={setValidationError}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n minutesStep={minutesStep}\n disabled={disabled}\n readOnly={readOnly}\n minTime={minTime}\n format={inputFormat ?? 'DD/MM/YYYY HH:mm'}\n ampm={ampm}\n viewRenderers={viewRenderers}\n timeSteps={timeSteps}\n views={views}\n sx={mergedSx}\n slotProps={{\n ...slotPropsProp,\n textField: {\n fullWidth: true,\n size,\n variant: 'outlined',\n ...(slotPropsProp?.textField as Record<string, any> | undefined),\n ...textFieldProps,\n error: !!finalError,\n helperText: finalHelperText,\n } as any,\n }}\n localeText={customLocaleText}\n {...rest}\n />\n </LocalizationProvider>\n );\n};\n\nexport default DateTimePicker;\n"],"names":["React","MuiDateTimePicker"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ import { LabelPosition } from './DateTimePicker';
3
+ /**
4
+ * Builder de sx para el DateTimePicker. Mismo patrón que DatePicker.
5
+ * Usa `includePickersApi: true` para soportar la API nueva de MUI X v8.
6
+ */
7
+ export declare const buildDateTimePickerSx: (borderRadius: number | string, labelPosition: LabelPosition) => SxProps<Theme>;
@@ -1 +1,2 @@
1
- export { default as DateTimePicker } from './DateTimePicker';
1
+ export { DateTimePicker, default } from './DateTimePicker';
2
+ export type { DateTimePickerProps, BaseDateTimePickerProps, LabelPosition, DateTimePickerSize, } from './DateTimePicker';
@@ -1,2 +1,6 @@
1
1
  export * from './DateTimePicker/index'
2
2
  export {}
3
+ import _default from './DateTimePicker/index'
4
+ export default _default
5
+ export * from './DateTimePicker/index'
6
+ export {}
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const material = require("@mui/material");
6
+ const styles = require("@mui/material/styles");
7
+ const ChevronLeftIcon = require("@mui/icons-material/ChevronLeft");
8
+ const ChevronRightIcon = require("@mui/icons-material/ChevronRight");
9
+ const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
10
+ const DrawerContext = React.createContext(null);
11
+ function useDrawerContext() {
12
+ const ctx = React.useContext(DrawerContext);
13
+ if (ctx) return ctx;
14
+ return { collapsed: false, width: 260 };
15
+ }
16
+ function buildDrawerSx({
17
+ width,
18
+ transitionDuration = 200
19
+ }) {
20
+ return {
21
+ width,
22
+ flexShrink: 0,
23
+ whiteSpace: "nowrap",
24
+ boxSizing: "border-box",
25
+ transition: (theme) => theme.transitions.create("width", {
26
+ easing: theme.transitions.easing.sharp,
27
+ duration: transitionDuration
28
+ }),
29
+ "& .MuiDrawer-paper": {
30
+ width,
31
+ boxSizing: "border-box",
32
+ overflowX: "hidden",
33
+ transition: (theme) => theme.transitions.create("width", {
34
+ easing: theme.transitions.easing.sharp,
35
+ duration: transitionDuration
36
+ })
37
+ }
38
+ };
39
+ }
40
+ function buildDrawerItemSx({
41
+ collapsed,
42
+ active,
43
+ danger
44
+ }) {
45
+ return (theme) => ({
46
+ minHeight: 44,
47
+ px: collapsed ? 1 : 2,
48
+ py: 1,
49
+ mx: 1,
50
+ my: 0.25,
51
+ borderRadius: 1,
52
+ display: "flex",
53
+ alignItems: "center",
54
+ justifyContent: collapsed ? "center" : "flex-start",
55
+ gap: collapsed ? 0 : 1.5,
56
+ cursor: "pointer",
57
+ color: danger ? theme.palette.error.main : active ? theme.palette.primary.main : theme.palette.text.primary,
58
+ backgroundColor: active ? theme.palette.action.selected : "transparent",
59
+ transition: theme.transitions.create(
60
+ ["background-color", "color", "padding"],
61
+ { duration: 150 }
62
+ ),
63
+ "&:hover": {
64
+ backgroundColor: danger ? styles.alpha(theme.palette.error.main, 0.08) : theme.palette.action.hover
65
+ },
66
+ "& .drawer-item__icon": {
67
+ display: "flex",
68
+ alignItems: "center",
69
+ justifyContent: "center",
70
+ flexShrink: 0,
71
+ minWidth: 24
72
+ },
73
+ "& .drawer-item__label": {
74
+ flex: 1,
75
+ minWidth: 0,
76
+ overflow: "hidden",
77
+ textOverflow: "ellipsis",
78
+ whiteSpace: "nowrap",
79
+ opacity: collapsed ? 0 : 1,
80
+ width: collapsed ? 0 : "auto",
81
+ transition: theme.transitions.create(["opacity", "width"], {
82
+ duration: collapsed ? 100 : 200
83
+ })
84
+ }
85
+ });
86
+ }
87
+ function Drawer({
88
+ children,
89
+ variant = "permanent",
90
+ anchor = "left",
91
+ collapsed = false,
92
+ onToggleCollapse,
93
+ open,
94
+ onClose,
95
+ expandedWidth = 260,
96
+ collapsedWidth = 72,
97
+ showCollapseButton,
98
+ header,
99
+ logo,
100
+ footer,
101
+ preset,
102
+ sx,
103
+ paperSx,
104
+ className
105
+ }) {
106
+ const theme = styles.useTheme();
107
+ const presetSx = resolvePreset.resolvePreset("Drawer", preset, theme);
108
+ const supportsCollapsed = variant !== "temporary";
109
+ const effectiveWidth = supportsCollapsed && collapsed ? collapsedWidth : expandedWidth;
110
+ const contextValue = React.useMemo(
111
+ () => ({
112
+ collapsed: supportsCollapsed && collapsed,
113
+ width: effectiveWidth
114
+ }),
115
+ [supportsCollapsed, collapsed, effectiveWidth]
116
+ );
117
+ const rootSx = [
118
+ buildDrawerSx({ width: effectiveWidth }),
119
+ ...presetSx ? [presetSx] : [],
120
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
121
+ ];
122
+ const shouldShowToggle = showCollapseButton != null ? showCollapseButton : supportsCollapsed && !!onToggleCollapse;
123
+ const openProp = variant === "permanent" ? true : open !== void 0 ? open : false;
124
+ return /* @__PURE__ */ jsxRuntime.jsx(DrawerContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsxs(
125
+ material.Drawer,
126
+ {
127
+ variant,
128
+ anchor,
129
+ open: openProp,
130
+ onClose,
131
+ className,
132
+ sx: rootSx,
133
+ slotProps: {
134
+ paper: {
135
+ sx: paperSx
136
+ }
137
+ },
138
+ children: [
139
+ (logo || shouldShowToggle) && /* @__PURE__ */ jsxRuntime.jsxs(
140
+ material.Box,
141
+ {
142
+ sx: {
143
+ display: "flex",
144
+ flexDirection: contextValue.collapsed ? "column" : "row",
145
+ alignItems: "center",
146
+ justifyContent: contextValue.collapsed ? "center" : logo ? "space-between" : "flex-end",
147
+ gap: contextValue.collapsed ? 0.5 : 0,
148
+ px: contextValue.collapsed ? 1 : 2,
149
+ py: 1,
150
+ minHeight: 64,
151
+ flexShrink: 0
152
+ },
153
+ children: [
154
+ logo && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { display: "flex", alignItems: "center", minWidth: 0 }, children: logo }),
155
+ shouldShowToggle && /* @__PURE__ */ jsxRuntime.jsx(
156
+ material.IconButton,
157
+ {
158
+ size: "small",
159
+ onClick: onToggleCollapse,
160
+ "aria-label": collapsed ? "Expandir menú" : "Colapsar menú",
161
+ children: collapsed ? /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, {})
162
+ }
163
+ )
164
+ ]
165
+ }
166
+ ),
167
+ header && !contextValue.collapsed && /* @__PURE__ */ jsxRuntime.jsx(
168
+ material.Box,
169
+ {
170
+ sx: {
171
+ display: "flex",
172
+ alignItems: "center",
173
+ px: 2,
174
+ py: 1.5,
175
+ minHeight: 56,
176
+ flexShrink: 0
177
+ },
178
+ children: /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { flex: 1, minWidth: 0 }, children: header })
179
+ }
180
+ ),
181
+ /* @__PURE__ */ jsxRuntime.jsx(
182
+ material.Box,
183
+ {
184
+ component: "nav",
185
+ sx: {
186
+ flex: 1,
187
+ overflowY: "auto",
188
+ overflowX: "hidden",
189
+ py: 1
190
+ },
191
+ children
192
+ }
193
+ ),
194
+ footer && /* @__PURE__ */ jsxRuntime.jsx(
195
+ material.Box,
196
+ {
197
+ sx: {
198
+ flexShrink: 0,
199
+ borderTop: (t) => `1px solid ${t.palette.divider}`,
200
+ p: contextValue.collapsed ? 1 : 1.5,
201
+ display: "flex",
202
+ justifyContent: contextValue.collapsed ? "center" : "flex-start"
203
+ },
204
+ children: footer
205
+ }
206
+ )
207
+ ]
208
+ }
209
+ ) });
210
+ }
211
+ function DrawerItem({
212
+ icon,
213
+ label,
214
+ tooltipText,
215
+ onClick,
216
+ active = false,
217
+ danger = false,
218
+ disabled = false,
219
+ endAdornment,
220
+ sx,
221
+ className
222
+ }) {
223
+ const { collapsed } = useDrawerContext();
224
+ const baseSx = buildDrawerItemSx({ collapsed, active, danger });
225
+ const mergedSx = [
226
+ baseSx,
227
+ disabled && { pointerEvents: "none", opacity: 0.5 },
228
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
229
+ ].filter(Boolean);
230
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(
231
+ material.Box,
232
+ {
233
+ role: "button",
234
+ tabIndex: disabled ? -1 : 0,
235
+ "aria-disabled": disabled,
236
+ onClick: disabled ? void 0 : onClick,
237
+ onKeyDown: (event) => {
238
+ if (disabled) return;
239
+ if (event.key === "Enter" || event.key === " ") {
240
+ event.preventDefault();
241
+ onClick == null ? void 0 : onClick(event);
242
+ }
243
+ },
244
+ className,
245
+ sx: mergedSx,
246
+ children: [
247
+ icon && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { className: "drawer-item__icon", component: "span", children: icon }),
248
+ /* @__PURE__ */ jsxRuntime.jsx(
249
+ material.Typography,
250
+ {
251
+ component: "span",
252
+ variant: "body2",
253
+ className: "drawer-item__label",
254
+ sx: { fontWeight: active ? 600 : 400 },
255
+ children: label
256
+ }
257
+ ),
258
+ !collapsed && endAdornment && /* @__PURE__ */ jsxRuntime.jsx(material.Box, { component: "span", sx: { flexShrink: 0, ml: "auto" }, children: endAdornment })
259
+ ]
260
+ }
261
+ );
262
+ const resolvedTooltip = tooltipText != null ? tooltipText : typeof label === "string" ? label : void 0;
263
+ if (collapsed && resolvedTooltip) {
264
+ return /* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: resolvedTooltip, placement: "right", arrow: true, children: content });
265
+ }
266
+ return content;
267
+ }
268
+ exports.Drawer = Drawer;
269
+ exports.DrawerItem = DrawerItem;
270
+ exports.default = Drawer;
271
+ exports.useDrawerContext = useDrawerContext;
272
+ //# sourceMappingURL=Drawer.cjs.map