@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
@@ -30,46 +30,57 @@ var __objRest = (source, exclude) => {
30
30
  }
31
31
  return target;
32
32
  };
33
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
33
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
34
34
  const jsxRuntime = require("react/jsx-runtime");
35
35
  const React = require("react");
36
+ const styles = require("@mui/material/styles");
36
37
  const AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
37
38
  const LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
38
39
  const DateTimePicker$1 = require("@mui/x-date-pickers/DateTimePicker");
39
- const system = require("@mui/system");
40
- const material = require("@mui/material");
41
- const StyledTextField = system.styled(material.TextField)(({ theme }) => ({
42
- "& .MuiInputBase-root": {
43
- maxHeight: "34px",
44
- padding: "8px 10px",
45
- borderRadius: "10px",
46
- display: "flex",
47
- alignItems: "center",
48
- fontSize: "14px"
49
- },
50
- "& .MuiInputBase-input": {
51
- padding: "0 !important",
52
- height: "18px",
53
- display: "flex",
54
- alignItems: "center",
55
- marginTop: "-4px"
56
- },
57
- "& .MuiInputLabel-root": {
58
- top: "50%",
59
- transform: "translate(14px, -50%)",
60
- "&.MuiInputLabel-shrink": {
61
- transform: "translate(1px, -200%) scale(0.75)",
62
- fontSize: "16px !important",
63
- "> legend": {
64
- display: "none"
65
- }
40
+ const formField_sx = require("../../formField.sx-BAX7KwMR.cjs");
41
+ const tokens = require("../../tokens-jaWWNk39.cjs");
42
+ const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
43
+ const buildDateTimePickerSx = (borderRadius, labelPosition) => formField_sx.buildFormFieldSx({
44
+ borderRadius,
45
+ labelPosition,
46
+ includePickersApi: true,
47
+ extraOutsideSx: {
48
+ "& .MuiInputBase-input": {
49
+ paddingTop: tokens.FIELD_INPUT_PADDING_Y,
50
+ paddingBottom: tokens.FIELD_INPUT_PADDING_Y
51
+ },
52
+ "& .MuiPickersInputBase-sectionsContainer": {
53
+ paddingTop: tokens.FIELD_INPUT_PADDING_Y,
54
+ paddingBottom: tokens.FIELD_INPUT_PADDING_Y
66
55
  }
67
- },
68
- "& .MuiOutlinedInput-notchedOutline": {
69
- border: "0.7px solid",
70
- borderColor: "#e0e0e0"
71
56
  }
72
- }));
57
+ });
58
+ const getDateTimeValidationMessage = (error) => {
59
+ switch (error) {
60
+ case "minDate":
61
+ case "maxDate":
62
+ case "minTime":
63
+ case "maxTime":
64
+ return "Fecha/hora fuera del rango permitido";
65
+ case "invalidDate":
66
+ return "Formato de fecha/hora inválido";
67
+ case "disableFuture":
68
+ return "No se permiten fechas/horas futuras";
69
+ case "disablePast":
70
+ return "No se permiten fechas/horas pasadas";
71
+ case "minutesStep":
72
+ return "Minutos no válidos para el paso configurado";
73
+ default:
74
+ return "";
75
+ }
76
+ };
77
+ const buildLocaleText = (clearButtonText, cancelButtonText, acceptButtonText) => {
78
+ const text = {};
79
+ if (clearButtonText) text.clearButtonLabel = clearButtonText;
80
+ if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;
81
+ if (acceptButtonText) text.okButtonLabel = acceptButtonText;
82
+ return text;
83
+ };
73
84
  const DateTimePicker = (_a) => {
74
85
  var _b = _a, {
75
86
  label,
@@ -79,17 +90,27 @@ const DateTimePicker = (_a) => {
79
90
  maxDateTime,
80
91
  disabled,
81
92
  readOnly,
82
- customClass = "",
83
93
  inputFormat,
84
- slotProps,
94
+ borderRadius = 10,
95
+ labelPosition = "outside",
96
+ size = "small",
97
+ helperText,
98
+ error: errorProp,
99
+ sx,
100
+ className,
101
+ preset,
102
+ adapterLocale,
85
103
  clearButtonText,
86
104
  cancelButtonText,
87
105
  acceptButtonText,
88
106
  minutesStep,
89
107
  minTime,
108
+ ampm = false,
90
109
  viewRenderers,
91
110
  timeSteps,
92
- ampm
111
+ views,
112
+ textFieldProps,
113
+ slotProps: slotPropsProp
93
114
  } = _b, rest = __objRest(_b, [
94
115
  "label",
95
116
  "selectedDateTime",
@@ -98,111 +119,80 @@ const DateTimePicker = (_a) => {
98
119
  "maxDateTime",
99
120
  "disabled",
100
121
  "readOnly",
101
- "customClass",
102
122
  "inputFormat",
103
- "slotProps",
123
+ "borderRadius",
124
+ "labelPosition",
125
+ "size",
126
+ "helperText",
127
+ "error",
128
+ "sx",
129
+ "className",
130
+ "preset",
131
+ "adapterLocale",
104
132
  "clearButtonText",
105
133
  "cancelButtonText",
106
134
  "acceptButtonText",
107
135
  "minutesStep",
108
136
  "minTime",
137
+ "ampm",
109
138
  "viewRenderers",
110
139
  "timeSteps",
111
- "ampm"
140
+ "views",
141
+ "textFieldProps",
142
+ "slotProps"
112
143
  ]);
113
- var _a2, _b2, _c;
114
- const [error, setError] = React.useState(null);
115
- const errorMessage = React.useMemo(() => {
116
- switch (error) {
117
- case "minDate":
118
- case "maxDate":
119
- case "invalidDate": {
120
- return "Formato de fecha/hora inválido";
121
- }
122
- case "disableFuture": {
123
- return "No se permiten fechas/horas futuras";
124
- }
125
- case "disablePast": {
126
- return "No se permiten fechas/horas pasadas";
127
- }
128
- default: {
129
- return "";
130
- }
131
- }
132
- }, [error]);
133
- const customLocaleText = React.useMemo(() => {
134
- const text = {};
135
- if (clearButtonText) text.clearButtonLabel = clearButtonText;
136
- if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;
137
- if (acceptButtonText) text.okButtonLabel = acceptButtonText;
138
- return text;
139
- }, [clearButtonText, cancelButtonText, acceptButtonText]);
140
- return /* @__PURE__ */ jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, children: /* @__PURE__ */ jsxRuntime.jsx(
141
- material.Box,
142
- {
143
- sx: {
144
- width: "100%",
145
- display: "grid",
146
- marginBottom: "10px",
147
- marginTop: "10px"
148
- },
149
- children: /* @__PURE__ */ jsxRuntime.jsx(
150
- DateTimePicker$1.DateTimePicker,
151
- __spreadValues({
152
- className: customClass,
153
- label,
154
- value: selectedDateTime,
155
- onChange: onDateTimeChange,
156
- minDateTime,
157
- maxDateTime,
158
- minutesStep,
159
- disabled,
160
- readOnly,
161
- minTime,
162
- format: inputFormat ? inputFormat : "DD/MM/YYYY HH:mm",
163
- viewRenderers,
164
- timeSteps,
165
- sx: {
166
- "& .MuiPickersInputBase-root, .MuiPickersOutlinedInput-root": {
167
- maxHeight: "28px",
168
- borderRadius: "10px"
169
- },
170
- "& .MuiInputLabel-root": {
171
- // El label se alinea con el padding del input base.
172
- top: "50%",
173
- transform: "translate(14px, -50%)",
174
- // Estilo para el label "encogido" cuando el input está lleno o en foco
175
- "&.MuiInputLabel-shrink": {
176
- transform: "translate(1px, -200%) scale(0.75)",
177
- // Ajustar la posición para que se vea por encima del input
178
- fontSize: "16px !important",
179
- "> legend": {
180
- display: "none"
181
- // Ocultar el legend del outline
182
- }
183
- }
184
- },
185
- "& .MuiPickersInputBase-root > fieldset > legend": {
186
- display: "none"
187
- // Ocultar el legend del outline
188
- }
189
- },
190
- slotProps: __spreadProps(__spreadValues({}, slotProps), {
191
- // 2. Usar 'slotProps' para pasar el componente estilizado al TextField
192
- textField: __spreadProps(__spreadValues({}, slotProps == null ? void 0 : slotProps.textField), {
193
- helperText: errorMessage || ((_a2 = slotProps == null ? void 0 : slotProps.textField) == null ? void 0 : _a2.helperText),
194
- error: !!errorMessage || ((_b2 = slotProps == null ? void 0 : slotProps.textField) == null ? void 0 : _b2.error),
195
- InputProps: __spreadProps(__spreadValues({}, (_c = slotProps == null ? void 0 : slotProps.textField) == null ? void 0 : _c.InputProps), {
196
- inputComponent: StyledTextField
197
- })
198
- })
199
- }),
200
- localeText: __spreadValues({}, customLocaleText),
201
- ampm: false
202
- }, rest)
203
- )
204
- }
144
+ const [validationError, setValidationError] = React.useState(null);
145
+ const validationErrorMessage = React.useMemo(
146
+ () => getDateTimeValidationMessage(validationError),
147
+ [validationError]
148
+ );
149
+ const customLocaleText = React.useMemo(
150
+ () => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),
151
+ [clearButtonText, cancelButtonText, acceptButtonText]
152
+ );
153
+ const theme = styles.useTheme();
154
+ const presetSx = resolvePreset.resolvePreset("DateTimePicker", preset, theme);
155
+ const mergedSx = [
156
+ buildDateTimePickerSx(borderRadius, labelPosition),
157
+ ...presetSx ? [presetSx] : [],
158
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
159
+ ];
160
+ const finalError = !!validationErrorMessage || !!errorProp;
161
+ const finalHelperText = validationErrorMessage || helperText;
162
+ return /* @__PURE__ */ jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, adapterLocale, children: /* @__PURE__ */ jsxRuntime.jsx(
163
+ DateTimePicker$1.DateTimePicker,
164
+ __spreadValues({
165
+ className,
166
+ label,
167
+ value: selectedDateTime,
168
+ onChange: onDateTimeChange,
169
+ onError: setValidationError,
170
+ minDateTime,
171
+ maxDateTime,
172
+ minutesStep,
173
+ disabled,
174
+ readOnly,
175
+ minTime,
176
+ format: inputFormat != null ? inputFormat : "DD/MM/YYYY HH:mm",
177
+ ampm,
178
+ viewRenderers,
179
+ timeSteps,
180
+ views,
181
+ sx: mergedSx,
182
+ slotProps: __spreadProps(__spreadValues({}, slotPropsProp), {
183
+ textField: __spreadProps(__spreadValues(__spreadValues({
184
+ fullWidth: true,
185
+ size,
186
+ variant: "outlined"
187
+ }, slotPropsProp == null ? void 0 : slotPropsProp.textField), textFieldProps), {
188
+ error: !!finalError,
189
+ helperText: finalHelperText
190
+ })
191
+ }),
192
+ localeText: customLocaleText
193
+ }, rest)
205
194
  ) });
206
195
  };
207
196
  exports.DateTimePicker = DateTimePicker;
197
+ exports.default = DateTimePicker;
208
198
  //# sourceMappingURL=DateTimePicker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.cjs","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":["styled","TextField","useMemo","jsx","LocalizationProvider","AdapterDayjs","Box","MuiDateTimePicker","_a","_b"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimePicker.cjs","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":["buildFormFieldSx","FIELD_INPUT_PADDING_Y","useMemo","useTheme","resolvePreset","jsx","LocalizationProvider","AdapterDayjs","MuiDateTimePicker"],"mappings":"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"}
@@ -1,28 +1,57 @@
1
1
  import { default as React } from 'react';
2
+ import { SxProps, Theme } from '@mui/material';
3
+ import { DateTimePickerProps as MuiDateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';
2
4
  import { Dayjs } from 'dayjs';
3
- export interface DateTimePickerProps {
4
- label: string;
5
- selectedDateTime: Dayjs | null;
6
- onDateTimeChange: (dateTime: Dayjs | null) => void;
5
+ export type LabelPosition = 'outside' | 'floating';
6
+ export type DateTimePickerSize = 'small' | 'medium';
7
+ export interface BaseDateTimePickerProps extends Omit<MuiDateTimePickerProps, 'value' | 'onChange' | 'slotProps' | 'format'> {
8
+ label?: string;
7
9
  minDateTime?: Dayjs;
8
10
  maxDateTime?: Dayjs;
9
11
  disabled?: boolean;
10
12
  readOnly?: boolean;
13
+ /** Formato de la fecha/hora. Default: 'DD/MM/YYYY HH:mm'. */
11
14
  inputFormat?: string;
12
- slotProps?: any;
15
+ /** Border radius del input. Default: 10. */
16
+ borderRadius?: number | string;
17
+ /** "outside" (default) o "floating". */
18
+ labelPosition?: LabelPosition;
19
+ /** Tamaño del TextField. Default: 'small'. */
20
+ size?: DateTimePickerSize;
21
+ helperText?: string;
22
+ error?: boolean;
23
+ sx?: SxProps<Theme>;
24
+ className?: string;
25
+ /**
26
+ * Nombre del preset de estilo registrado en `theme.styles.DateTimePicker`.
27
+ * - `"default"` (o ausente) = estilo built-in del paquete.
28
+ * - Cualquier otro string = mergea el preset encima del estilo built-in.
29
+ */
30
+ preset?: string;
31
+ /** Locale del adaptador dayjs. */
32
+ adapterLocale?: string;
33
+ /** Textos de los botones del popover. */
13
34
  clearButtonText?: string;
14
35
  cancelButtonText?: string;
15
36
  acceptButtonText?: string;
16
37
  minutesStep?: number;
17
38
  minTime?: Dayjs;
18
- customClass?: string;
19
- viewRenderers?: any;
20
- timeSteps?: any;
39
+ /** Si es true usa formato 12h (AM/PM), false = 24h. Default: false. */
21
40
  ampm?: boolean;
41
+ viewRenderers?: MuiDateTimePickerProps['viewRenderers'];
42
+ timeSteps?: MuiDateTimePickerProps['timeSteps'];
43
+ /**
44
+ * Vistas a mostrar en el popover. Default: todas (year, month, day, hours, minutes).
45
+ * Ej: `['hours']` solo permite elegir la hora. `['hours','minutes']` oculta el calendar.
46
+ */
47
+ views?: MuiDateTimePickerProps['views'];
48
+ textFieldProps?: Record<string, any>;
49
+ /** Passthrough completo a slotProps del MuiDateTimePicker. */
50
+ slotProps?: MuiDateTimePickerProps['slotProps'];
51
+ }
52
+ export interface DateTimePickerProps extends BaseDateTimePickerProps {
53
+ selectedDateTime: Dayjs | null;
54
+ onDateTimeChange: (dateTime: Dayjs | null) => void;
22
55
  }
23
- /**
24
- * Custom Material UI DateTimePicker component.
25
- * Allows selecting a date and time, and updates a Dayjs state.
26
- */
27
56
  export declare const DateTimePicker: React.FC<DateTimePickerProps>;
28
57
  export default DateTimePicker;
@@ -6,4 +6,7 @@ export declare const DateTimePickerWithInitialNullDefinition = "\nimport React,
6
6
  export declare const DateTimePickerSmallSizeDefinition = "\nimport React, { useState } from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePickerSmallSizeExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState(dayjs());\n return (\n <Box sx={{ width: 250 }}>\n <DateTimePicker\n label=\"Fecha y Hora (Peque\u00F1o)\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n slotProps={{ textField: { size: 'small' } }}\n />\n <Typography sx={{ mt: 2 }}>\n Seleccionado: ${selectedDateTime ? selectedDateTime.format('YYYY-MM-DD HH:mm') : 'Ninguna'}\n </Typography>\n </Box>\n );\n};\n";
7
7
  export declare const DateTimePickerWithButtonsDefinition = "\nimport React, { useState } => from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePickerWithButtonsExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState(dayjs());\n return (\n <Box sx={{ width: 300 }}>\n <DateTimePicker\n label=\"Fecha y Hora (Con Botones por Defecto)\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n slotProps={{\n actionBar: {\n actions: ['clear', 'cancel', 'accept'],\n },\n }}\n />\n <Typography sx={{ mt: 2 }}>\n Seleccionado: ${selectedDateTime ? selectedDateTime.format('YYYY-MM-DD HH:mm') : 'Ninguna'}\n </Typography>\n </Box>\n );\n};\n";
8
8
  export declare const DateTimePickerWithCustomButtonTextDefinition = "\nimport React, { useState } from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePickerWithCustomButtonTextExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState(dayjs());\n return (\n <Box sx={{ width: 300 }}>\n <DateTimePicker\n label=\"Fecha y Hora (Botones Personalizados)\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n clearButtonText=\"Limpiar Todo\"\n cancelButtonText=\"Descartar\"\n acceptButtonText=\"Confirmar Selecci\u00F3n\"\n slotProps={{\n actionBar: {\n actions: ['clear', 'cancel', 'accept'],\n },\n }}\n />\n <Typography sx={{ mt: 2 }}>\n Seleccionado: ${selectedDateTime ? selectedDateTime.format('YYYY-MM-DD HH:mm') : 'Ninguna'}\n </Typography>\n </Box>\n );\n};\n";
9
+ export declare const DateTimePickerEmptyWithMaskDefinition = "\nimport React, { useState } from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport { Dayjs } from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePickerEmptyWithMaskExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState<Dayjs | null>(null);\n return (\n <Box sx={{ width: 300 }}>\n <DateTimePicker\n label=\"Fecha y Hora\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n inputFormat=\"DD/MM/YY HH:mm\"\n />\n <Typography sx={{ mt: 2 }} variant=\"caption\" color=\"text.secondary\">\n Al estar vac\u00EDo, el campo muestra la m\u00E1scara del formato (DD/MM/AA HH:MM).\n </Typography>\n </Box>\n );\n};\n";
10
+ export declare const DateTimePickerWithAllMinutesDefinition = "\nimport React, { useState } from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePickerWithAllMinutesExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState(dayjs('2023-06-15T10:00'));\n return (\n <Box sx={{ width: 300 }}>\n <DateTimePicker\n label=\"Fecha y Hora (Todos los minutos)\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n viewRenderers={{\n hours: renderMultiSectionDigitalClockTimeView,\n minutes: renderMultiSectionDigitalClockTimeView,\n }}\n minutesStep={1}\n timeSteps={{ minutes: 1 }}\n />\n <Typography sx={{ mt: 2 }}>\n Seleccionado: ${selectedDateTime ? selectedDateTime.format('YYYY-MM-DD HH:mm') : 'Ninguna'}\n </Typography>\n </Box>\n );\n};\n";
11
+ export declare const DateTimePicker24hDefinition = "\nimport React, { useState } from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePicker24hExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState(dayjs('2023-06-15T10:00'));\n return (\n <Box sx={{ width: 300 }}>\n <DateTimePicker\n label=\"Fecha y Hora (Formato 24h)\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n viewRenderers={{\n hours: renderMultiSectionDigitalClockTimeView,\n minutes: renderMultiSectionDigitalClockTimeView,\n }}\n minutesStep={1}\n timeSteps={{ minutes: 1 }}\n ampm={false}\n />\n <Typography sx={{ mt: 2 }}>\n Seleccionado: ${selectedDateTime ? selectedDateTime.format('YYYY-MM-DD HH:mm') : 'Ninguna'}\n </Typography>\n </Box>\n );\n};\n";
9
12
  export declare const DateTimePickerWithCustomInputFormatDefinition = "\nimport React, { useState } from 'react';\nimport { DateTimePicker } from './DateTimePicker'; // Ajusta la ruta si es necesario\nimport dayjs from 'dayjs';\nimport { Box, Typography } from '@mui/material';\n\nexport const DateTimePickerWithCustomInputFormatExample = () => {\n const [selectedDateTime, setSelectedDateTime] = useState(dayjs());\n return (\n <Box sx={{ width: 300 }}>\n <DateTimePicker\n label=\"Fecha y Hora (Formato dd/MM/YYYY)\"\n selectedDateTime={selectedDateTime}\n onDateTimeChange={setSelectedDateTime}\n inputFormat=\"DD/MM/YYYY HH:mm\" // Formato de fecha personalizado\n />\n <Typography sx={{ mt: 2 }}>\n Seleccionado: ${selectedDateTime ? selectedDateTime.format('YYYY-MM-DD HH:mm') : 'Ninguna'}\n </Typography>\n </Box>\n );\n};\n";
@@ -0,0 +1,13 @@
1
+ import { DateTimeValidationError } from '@mui/x-date-pickers/models';
2
+ /**
3
+ * Traduce el error del DateTimePicker a un mensaje en español. Se usa
4
+ * internamente para poblar `helperText` cuando hay error de validación.
5
+ * Cubre tanto errores de fecha (`minDate`, `maxDate`, etc.) como de hora
6
+ * (`minTime`, `maxTime`, `minutesStep`, etc.).
7
+ */
8
+ export declare const getDateTimeValidationMessage: (error: DateTimeValidationError | null) => string;
9
+ /**
10
+ * Construye el `localeText` que MUI acepta para overridear los labels de los
11
+ * botones del popover (Cancel / OK / Clear).
12
+ */
13
+ export declare const buildLocaleText: (clearButtonText?: string, cancelButtonText?: string, acceptButtonText?: string) => Record<string, string>;