@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
@@ -1,412 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __objRest = (source, exclude) => {
21
- var target = {};
22
- for (var prop in source)
23
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
- target[prop] = source[prop];
25
- if (source != null && __getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(source)) {
27
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
- target[prop] = source[prop];
29
- }
30
- return target;
31
- };
32
- import { jsx, jsxs } from "react/jsx-runtime";
33
- import React__default, { useMemo, isValidElement, useState, useRef, useEffect } from "react";
34
- import { Select as Select$1, InputLabel, OutlinedInput, ListSubheader, TextField, MenuItem, Box, CircularProgress, Typography, ListItemIcon, FormControl, Chip, Avatar } from "@mui/material";
35
- import { styled } from "@mui/system";
36
- import ClearIcon from "@mui/icons-material/Clear";
37
- import CheckIcon from "@mui/icons-material/Check";
38
- import { Controller } from "react-hook-form";
39
- function Option(_props) {
40
- return null;
41
- }
42
- Option.displayName = "Option";
43
- const StyledSelect = styled(Select$1)(({ theme }) => ({
44
- "& .MuiInputBase-root": {
45
- maxHeight: "4px",
46
- padding: "8px 10px",
47
- borderRadius: "10px",
48
- display: "flex",
49
- alignItems: "center",
50
- fontSize: "14px"
51
- },
52
- "& .MuiSelect-select": {
53
- padding: "0 !important",
54
- height: "28px !important",
55
- display: "flex",
56
- alignItems: "center",
57
- marginLeft: "8px"
58
- },
59
- "& .MuiOutlinedInput-notchedOutline": {
60
- marginBottom: "-4px !important",
61
- borderRadius: "10px"
62
- },
63
- "& .MuiSelect-icon": {
64
- top: "50%",
65
- transform: "translateY(-50%)"
66
- },
67
- "& .MuiOutlinedInput-notchedOutline > legend": {
68
- display: "none"
69
- }
70
- }));
71
- const StyledLabel = styled(InputLabel)(({ theme }) => ({
72
- "&.MuiInputLabel-root": {
73
- top: "50%",
74
- transform: "translate(14px, -50%)"
75
- },
76
- "&.MuiInputLabel-shrink": {
77
- transform: "translate(1px, -200%) scale(0.75)",
78
- fontSize: "16px",
79
- "> legend": {
80
- display: "none"
81
- }
82
- },
83
- "&.MuiInputLabel-animated": {
84
- "&.MuiInputLabel-shrink": {
85
- display: "block"
86
- }
87
- }
88
- }));
89
- const StyledOutlinedInput = styled(OutlinedInput)(({ theme }) => ({
90
- "& .MuiInputBase-root": {
91
- maxHeight: "34px",
92
- padding: "8px 10px",
93
- borderRadius: "10px",
94
- display: "flex",
95
- alignItems: "center",
96
- fontSize: "14px",
97
- " & > .MuiAvatar-img": {
98
- width: "14px",
99
- height: "14px"
100
- }
101
- },
102
- "& .MuiInputBase-input": {
103
- padding: "0 !important",
104
- height: "18px",
105
- display: "flex",
106
- alignItems: "center"
107
- },
108
- "& .MuiOutlinedInput-notchedOutline": {
109
- border: "0.7px solid",
110
- borderColor: "#e0e0e0"
111
- }
112
- }));
113
- function Select(props) {
114
- const _a = props, {
115
- label,
116
- options = [],
117
- value,
118
- onChange,
119
- defaultValue,
120
- size = "medium",
121
- multiple = false,
122
- filterable = false,
123
- placeholder,
124
- children,
125
- maxHeight = 300,
126
- maxWidth,
127
- maxChipsToShow = 3,
128
- renderChipLabel,
129
- chipVariant = "outlined",
130
- loadOptions,
131
- loadingMessage = "Cargando opciones...",
132
- noOptionsMessage = "No hay opciones",
133
- debounceTimeout = 300,
134
- disabled = false,
135
- error = false,
136
- helperText
137
- } = _a, rest = __objRest(_a, [
138
- "label",
139
- "options",
140
- "value",
141
- "onChange",
142
- "defaultValue",
143
- "size",
144
- "multiple",
145
- "filterable",
146
- "placeholder",
147
- "children",
148
- "maxHeight",
149
- "maxWidth",
150
- "maxChipsToShow",
151
- "renderChipLabel",
152
- "chipVariant",
153
- "loadOptions",
154
- "loadingMessage",
155
- "noOptionsMessage",
156
- "debounceTimeout",
157
- "disabled",
158
- "error",
159
- "helperText"
160
- ]);
161
- const isRHFMode = "control" in rest && rest.control !== void 0;
162
- const customRender = useMemo(() => {
163
- var _a2;
164
- if (React__default.Children.count(children) === 1) {
165
- const child = React__default.Children.only(children);
166
- if (isValidElement(child) && ((_a2 = child.type) == null ? void 0 : _a2.displayName) === "Option") {
167
- return child.props.children;
168
- }
169
- }
170
- return null;
171
- }, [children]);
172
- const [search, setSearch] = useState("");
173
- const [asyncOptions, setAsyncOptions] = useState([]);
174
- const [loading, setLoading] = useState(false);
175
- const debounceTimerRef = useRef(null);
176
- const searchInputRef = useRef(null);
177
- const isAsync = typeof loadOptions === "function";
178
- const currentOptions = isAsync ? asyncOptions : options;
179
- useEffect(() => {
180
- if (isAsync) {
181
- if (debounceTimerRef.current) {
182
- clearTimeout(debounceTimerRef.current);
183
- }
184
- if (search) {
185
- setLoading(true);
186
- debounceTimerRef.current = window.setTimeout(() => {
187
- loadOptions(search).then((loadedOpts) => {
188
- setAsyncOptions(loadedOpts);
189
- }).finally(() => {
190
- setLoading(false);
191
- if (searchInputRef.current) {
192
- searchInputRef.current.focus();
193
- }
194
- });
195
- }, debounceTimeout);
196
- } else {
197
- setAsyncOptions([]);
198
- setLoading(false);
199
- if (searchInputRef.current) {
200
- searchInputRef.current.focus();
201
- }
202
- }
203
- }
204
- }, [search, isAsync, loadOptions, debounceTimeout]);
205
- const filteredOptions = useMemo(() => {
206
- if (isAsync) {
207
- return currentOptions;
208
- }
209
- if (!filterable || !search) return currentOptions;
210
- return currentOptions.filter(
211
- (opt) => opt.label.toLowerCase().includes(search.toLowerCase())
212
- );
213
- }, [search, filterable, currentOptions, isAsync]);
214
- const groupedOptions = useMemo(() => {
215
- const groups = {};
216
- filteredOptions.forEach((opt) => {
217
- const group = opt.group || "__default";
218
- if (!groups[group]) groups[group] = [];
219
- groups[group].push(opt);
220
- });
221
- return groups;
222
- }, [filteredOptions]);
223
- const renderValue = (selected) => {
224
- var _a2;
225
- if (!selected || Array.isArray(selected) && selected.length === 0) {
226
- return /* @__PURE__ */ jsx(Typography, { sx: { color: "text.disabled" }, children: placeholder || "" });
227
- }
228
- if (!multiple) {
229
- const item = currentOptions.find((opt) => opt.value === selected);
230
- return renderChipLabel && item ? renderChipLabel(item) : (_a2 = item == null ? void 0 : item.label) != null ? _a2 : String(selected);
231
- }
232
- const selectedValuesArray = selected;
233
- const displayedChips = selectedValuesArray.slice(0, maxChipsToShow);
234
- const hiddenChipsCount = selectedValuesArray.length - maxChipsToShow;
235
- return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", flexWrap: "wrap", gap: 0.5 }, children: [
236
- displayedChips.map((val) => {
237
- const item = currentOptions.find((o) => o.value === val);
238
- if (!item) return null;
239
- const handleDelete = (chipValue) => {
240
- const newSelected = value.filter((v) => v !== chipValue);
241
- onChange == null ? void 0 : onChange(newSelected);
242
- };
243
- return /* @__PURE__ */ jsx(
244
- Chip,
245
- {
246
- variant: chipVariant,
247
- color: "primary",
248
- label: renderChipLabel ? renderChipLabel(item) : item.label,
249
- avatar: item.img ? /* @__PURE__ */ jsx(
250
- Avatar,
251
- {
252
- sx: {
253
- "& > .MuiAvatar-root, .MuiChip-avatar": {
254
- backgroundColor: "red"
255
- }
256
- },
257
- src: item.img
258
- }
259
- ) : void 0,
260
- onDelete: () => handleDelete(val),
261
- deleteIcon: /* @__PURE__ */ jsx(ClearIcon, { sx: { fontSize: "12px !important" } }),
262
- sx: {
263
- height: "27px",
264
- marginTop: "1px"
265
- }
266
- },
267
- val
268
- );
269
- }),
270
- hiddenChipsCount > 0 && /* @__PURE__ */ jsx(
271
- Chip,
272
- {
273
- sx: {
274
- height: "27px",
275
- marginTop: "0px"
276
- },
277
- label: `+${hiddenChipsCount} más`,
278
- variant: chipVariant
279
- }
280
- )
281
- ] });
282
- };
283
- const menuItems = useMemo(() => {
284
- const items = [];
285
- if (filterable || isAsync) {
286
- items.push(
287
- /* @__PURE__ */ jsx(ListSubheader, { sx: { px: 2, pt: 1, pb: 1, backgroundColor: "background.paper", zIndex: 1, position: "sticky", top: 0 }, children: /* @__PURE__ */ jsx(
288
- TextField,
289
- {
290
- inputRef: searchInputRef,
291
- placeholder: "Buscar...",
292
- variant: "standard",
293
- size: "small",
294
- fullWidth: true,
295
- value: search,
296
- onChange: (e) => setSearch(e.target.value),
297
- inputProps: { autoFocus: true },
298
- onClick: (e) => e.stopPropagation(),
299
- onKeyDown: (e) => e.stopPropagation()
300
- }
301
- ) }, "search-header")
302
- );
303
- }
304
- if (loading) {
305
- items.push(
306
- /* @__PURE__ */ jsx(MenuItem, { disabled: true, children: /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
307
- /* @__PURE__ */ jsx(CircularProgress, { size: 20 }),
308
- /* @__PURE__ */ jsx(Typography, { children: loadingMessage })
309
- ] }) }, "loading-message")
310
- );
311
- } else if (Object.keys(groupedOptions).length === 0 || Object.keys(groupedOptions).length === 1 && groupedOptions["__default"] && groupedOptions["__default"].length === 0) {
312
- items.push(
313
- /* @__PURE__ */ jsx(MenuItem, { disabled: true, children: /* @__PURE__ */ jsx(Typography, { children: noOptionsMessage }) }, "no-options-message")
314
- );
315
- } else {
316
- Object.entries(groupedOptions).forEach(([group, opts]) => {
317
- if (group !== "__default") {
318
- items.push(
319
- /* @__PURE__ */ jsx(ListSubheader, { disableSticky: true, children: group }, group)
320
- );
321
- }
322
- opts.forEach((opt) => {
323
- const isSelected = multiple ? value == null ? void 0 : value.includes(opt.value) : value === opt.value;
324
- items.push(
325
- /* @__PURE__ */ jsxs(MenuItem, { value: opt.value, disabled: opt.disabled, selected: isSelected, children: [
326
- /* @__PURE__ */ jsx(ListItemIcon, { sx: { minWidth: 32 }, children: isSelected && /* @__PURE__ */ jsx(CheckIcon, { sx: { color: "green" } }) }),
327
- customRender ? customRender(opt) : opt.label
328
- ] }, opt.value)
329
- );
330
- });
331
- });
332
- }
333
- return items;
334
- }, [groupedOptions, customRender, filterable, isAsync, search, loading, loadingMessage, noOptionsMessage, multiple, value]);
335
- const showLabel = label && !placeholder;
336
- const handleChangeInternal = (event, rhfOnChange) => {
337
- const newValue = event.target.value;
338
- if (isRHFMode) {
339
- rhfOnChange == null ? void 0 : rhfOnChange(newValue);
340
- } else {
341
- onChange == null ? void 0 : onChange(newValue);
342
- }
343
- };
344
- const isRHFModeRender = "control" in rest && rest.control !== void 0;
345
- const renderSelect = (selectValue, selectOnChange, onBlur, inputRef) => /* @__PURE__ */ jsxs(FormControl, { fullWidth: true, size, error, disabled, children: [
346
- showLabel && /* @__PURE__ */ jsx(StyledLabel, { children: label }),
347
- /* @__PURE__ */ jsxs(
348
- Box,
349
- {
350
- sx: {
351
- width: "100%",
352
- display: "grid",
353
- marginBottom: "10px",
354
- marginTop: "10px"
355
- },
356
- children: [
357
- /* @__PURE__ */ jsx(
358
- StyledSelect,
359
- __spreadProps(__spreadValues({
360
- label,
361
- value: selectValue != null ? selectValue : multiple ? [] : "",
362
- defaultValue,
363
- multiple,
364
- onChange: selectOnChange,
365
- onBlur,
366
- renderValue,
367
- displayEmpty: true,
368
- input: /* @__PURE__ */ jsx(StyledOutlinedInput, { label }),
369
- disabled,
370
- MenuProps: {
371
- PaperProps: {
372
- style: {
373
- maxHeight,
374
- maxWidth
375
- }
376
- }
377
- },
378
- inputRef
379
- }, rest), {
380
- children: menuItems
381
- })
382
- ),
383
- helperText && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "error", sx: { mt: 1 }, children: helperText })
384
- ]
385
- }
386
- )
387
- ] });
388
- if (isRHFModeRender) {
389
- const rhfProps = rest;
390
- return /* @__PURE__ */ jsx(
391
- Controller,
392
- {
393
- name: rhfProps.name,
394
- control: rhfProps.control,
395
- rules: rhfProps.validation,
396
- render: ({ field, fieldState: { error: error2 } }) => renderSelect(
397
- field.value,
398
- (e) => handleChangeInternal(e, field.onChange),
399
- field.onBlur,
400
- field.ref
401
- )
402
- }
403
- );
404
- } else {
405
- return renderSelect(value, (e) => handleChangeInternal(e));
406
- }
407
- }
408
- export {
409
- Option as O,
410
- Select as S
411
- };
412
- //# sourceMappingURL=Select-BcLkyHSE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select-BcLkyHSE.js","sources":["../src/components/Select/Select.tsx"],"sourcesContent":["import React, { ReactElement, useMemo, useState, Children, isValidElement, useEffect, useRef } from 'react';\nimport {\n FormControl,\n InputLabel,\n MenuItem,\n Select as MuiSelect,\n Chip,\n Avatar,\n Box,\n Typography,\n OutlinedInput,\n TextField,\n ListSubheader,\n CircularProgress,\n ListItemIcon,\n SelectChangeEvent,\n} from '@mui/material';\nimport { styled } from '@mui/system';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { Controller, Control, RegisterOptions } from 'react-hook-form';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n img?: string;\n disabled?: boolean;\n group?: string;\n [key: string]: any;\n}\n\ntype RenderOptionItem = (item: SelectOption) => React.ReactNode;\ntype RenderChipLabel = (item: SelectOption) => React.ReactNode;\n\n// --- Definición de Props con Union Type ---\n\n// Props comunes para ambos modos\ninterface BaseSelectProps<TValue extends SelectOption['value'] = SelectOption['value']> {\n label?: string;\n options?: SelectOption[];\n defaultValue?: TValue | TValue[];\n size?: 'small' | 'medium';\n multiple?: boolean;\n filterable?: boolean;\n placeholder?: string;\n children?: ReactElement<{ children: RenderOptionItem }>;\n maxHeight?: number | string;\n maxWidth?: number | string;\n maxChipsToShow?: number;\n renderChipLabel?: RenderChipLabel;\n chipVariant?: 'outlined' | 'filled';\n loadOptions?: (inputValue: string) => Promise<SelectOption[]>;\n loadingMessage?: React.ReactNode;\n noOptionsMessage?: React.ReactNode;\n debounceTimeout?: number;\n disabled?: boolean;\n error?: boolean;\n helperText?: string;\n}\n\n// Props para el modo React Hook Form\ninterface RHFSelectProps<TValue extends SelectOption['value'] = SelectOption['value']> extends BaseSelectProps<TValue> {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n value?: TValue | TValue[];\n onChange?: (val: TValue | TValue[]) => void;\n}\n\n// Props para el modo controlado estándar\ninterface StandardSelectProps<TValue extends SelectOption['value'] = SelectOption['value']> extends BaseSelectProps<TValue> {\n name?: string;\n control?: never;\n validation?: never;\n value: TValue | TValue[];\n onChange: (val: TValue | TValue[]) => void;\n}\n\nexport type SelectProps<TValue extends SelectOption['value'] = SelectOption['value']> = RHFSelectProps<TValue> | StandardSelectProps<TValue>;\n\nexport interface OptionProps {\n children: RenderOptionItem;\n}\n\nexport function Option(_props: OptionProps) {\n return null;\n}\nOption.displayName = 'Option';\n\nconst StyledSelect = styled(MuiSelect)(({ theme }) => ({\n '& .MuiInputBase-root': {\n maxHeight: '4px',\n padding: '8px 10px',\n borderRadius: '10px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n },\n '& .MuiSelect-select': {\n padding: '0 !important',\n height: '28px !important',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '8px'\n },\n '& .MuiOutlinedInput-notchedOutline': {\n marginBottom: '-4px !important',\n borderRadius: '10px',\n },\n '& .MuiSelect-icon': {\n top: '50%',\n transform: 'translateY(-50%)',\n },\n '& .MuiOutlinedInput-notchedOutline > legend':{\n display: 'none',\n },\n}));\n\nconst StyledLabel = styled(InputLabel)(({theme}) =>({\n '&.MuiInputLabel-root': {\n top: '50%',\n transform: 'translate(14px, -50%)',\n },\n '&.MuiInputLabel-shrink': {\n transform: 'translate(1px, -200%) scale(0.75)',\n fontSize: '16px',\n '> legend': {\n display: 'none',\n }\n },\n '&.MuiInputLabel-animated': {\n '&.MuiInputLabel-shrink': {\n display: 'block'\n }\n }\n}));\n\nconst StyledOutlinedInput = styled(OutlinedInput)(({ theme }) => ({\n '& .MuiInputBase-root': {\n maxHeight: '34px',\n padding: '8px 10px',\n borderRadius: '10px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '14px',\n ' & > .MuiAvatar-img': {\n width: '14px',\n height: '14px',\n }\n },\n '& .MuiInputBase-input': {\n padding: '0 !important',\n height: '18px',\n display: 'flex',\n alignItems: 'center',\n },\n '& .MuiOutlinedInput-notchedOutline': {\n border: '0.7px solid',\n borderColor: '#e0e0e0',\n },\n}));\n\nexport function Select<TValue extends SelectOption['value'] = SelectOption['value']>(props: SelectProps<TValue>) {\n const {\n label,\n options = [],\n value,\n onChange,\n defaultValue,\n size = 'medium',\n multiple = false,\n filterable = false,\n placeholder,\n children,\n maxHeight = 300,\n maxWidth,\n maxChipsToShow = 3,\n renderChipLabel,\n chipVariant = 'outlined',\n loadOptions,\n loadingMessage = 'Cargando opciones...',\n noOptionsMessage = 'No hay opciones',\n debounceTimeout = 300,\n disabled = false,\n error = false,\n helperText,\n ...rest\n } = props;\n\n const isRHFMode = 'control' in rest && rest.control !== undefined;\n\n const customRender: RenderOptionItem | null = useMemo(() => {\n if (React.Children.count(children) === 1) {\n const child = React.Children.only(children);\n if (isValidElement(child) && (child.type as any)?.displayName === 'Option') {\n return (child.props as OptionProps).children;\n }\n }\n return null;\n }, [children]);\n\n const [search, setSearch] = useState('');\n const [asyncOptions, setAsyncOptions] = useState<SelectOption[]>([]);\n const [loading, setLoading] = useState(false);\n const debounceTimerRef = useRef<number | null>(null);\n\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const isAsync = typeof loadOptions === 'function';\n const currentOptions = isAsync ? asyncOptions : options;\n\n useEffect(() => {\n if (isAsync) {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n\n if (search) {\n setLoading(true);\n debounceTimerRef.current = window.setTimeout(() => {\n loadOptions(search)\n .then(loadedOpts => {\n setAsyncOptions(loadedOpts);\n })\n .finally(() => {\n setLoading(false);\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n });\n }, debounceTimeout);\n } else {\n setAsyncOptions([]);\n setLoading(false);\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n }\n }, [search, isAsync, loadOptions, debounceTimeout]);\n\n const filteredOptions = useMemo(() => {\n if (isAsync) {\n return currentOptions;\n }\n if (!filterable || !search) return currentOptions;\n return currentOptions.filter(opt =>\n opt.label.toLowerCase().includes(search.toLowerCase())\n );\n }, [search, filterable, currentOptions, isAsync]);\n\n const groupedOptions = useMemo(() => {\n const groups: Record<string, SelectOption[]> = {};\n filteredOptions.forEach(opt => {\n const group = opt.group || '__default';\n if (!groups[group]) groups[group] = [];\n groups[group].push(opt);\n });\n return groups;\n }, [filteredOptions]);\n\n const renderValue = (selected: any) => {\n if (!selected || (Array.isArray(selected) && selected.length === 0)) {\n return <Typography sx={{ color: 'text.disabled' }}>{placeholder || ''}</Typography>;\n }\n\n if (!multiple) {\n const item = currentOptions.find((opt) => opt.value === selected);\n return renderChipLabel && item ? renderChipLabel(item) : (item?.label ?? String(selected));\n }\n\n const selectedValuesArray = selected as TValue[];\n const displayedChips = selectedValuesArray.slice(0, maxChipsToShow);\n const hiddenChipsCount = selectedValuesArray.length - maxChipsToShow;\n\n return (\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n {displayedChips.map((val) => {\n const item = currentOptions.find((o) => o.value === val);\n if (!item) return null;\n\n const handleDelete = (chipValue: TValue) => {\n const newSelected = (value as TValue[]).filter(v => v !== chipValue);\n (onChange as (val: TValue | TValue[]) => void)?.(newSelected);\n };\n\n return (\n <Chip\n variant={chipVariant}\n color=\"primary\"\n key={val}\n label={renderChipLabel ? renderChipLabel(item) : item.label}\n avatar={item.img ?\n <Avatar\n sx={\n {\n '& > .MuiAvatar-root, .MuiChip-avatar': {\n backgroundColor: 'red',\n }\n }\n }\n src={item.img}\n /> : undefined}\n onDelete={() => handleDelete(val)}\n deleteIcon={<ClearIcon sx={{ fontSize: '12px !important' }} />}\n sx={\n {\n height: '27px',\n marginTop: '1px',\n }\n }\n />\n );\n })}\n {hiddenChipsCount > 0 && (\n <Chip\n sx={{\n height: '27px',\n marginTop: '0px',\n }}\n label={`+${hiddenChipsCount} más`} variant={chipVariant} />\n )}\n </Box>\n );\n };\n\n const menuItems = useMemo(() => {\n const items: React.ReactNode[] = [];\n\n if (filterable || isAsync) {\n items.push(\n <ListSubheader key=\"search-header\" sx={{ px: 2, pt: 1, pb: 1, backgroundColor: 'background.paper', zIndex: 1, position: 'sticky', top: 0 }}>\n <TextField\n inputRef={searchInputRef}\n placeholder=\"Buscar...\"\n variant=\"standard\"\n size=\"small\"\n fullWidth\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n inputProps={{ autoFocus: true }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n />\n </ListSubheader>\n );\n }\n\n if (loading) {\n items.push(\n <MenuItem key=\"loading-message\" disabled>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <CircularProgress size={20} />\n <Typography>{loadingMessage}</Typography>\n </Box>\n </MenuItem>\n );\n } else if (Object.keys(groupedOptions).length === 0 || (Object.keys(groupedOptions).length === 1 && groupedOptions['__default'] && groupedOptions['__default'].length === 0)) {\n items.push(\n <MenuItem key=\"no-options-message\" disabled>\n <Typography>{noOptionsMessage}</Typography>\n </MenuItem>\n );\n } else {\n Object.entries(groupedOptions).forEach(([group, opts]) => {\n if (group !== '__default') {\n items.push(\n <ListSubheader key={group} disableSticky>{group}</ListSubheader>\n );\n }\n opts.forEach((opt) => {\n const isSelected = multiple\n ? (value as TValue[] | undefined)?.includes(opt.value as TValue)\n : value === opt.value;\n\n items.push(\n <MenuItem key={opt.value} value={opt.value} disabled={opt.disabled} selected={isSelected}>\n <ListItemIcon sx={{ minWidth: 32 }}>\n {isSelected && (\n <CheckIcon sx={{ color: 'green' }} />\n )}\n </ListItemIcon>\n {customRender ? customRender(opt) : opt.label}\n </MenuItem>\n );\n });\n });\n }\n return items;\n }, [groupedOptions, customRender, filterable, isAsync, search, loading, loadingMessage, noOptionsMessage, multiple, value]);\n\n const showLabel = label && !placeholder;\n\n // Lógica para manejar el cambio de valor\n const handleChangeInternal = (event: SelectChangeEvent<any>, rhfOnChange?: (...event: any[]) => void) => {\n const newValue = event.target.value;\n if (isRHFMode) {\n rhfOnChange?.(newValue);\n } else {\n (onChange as (val: TValue | TValue[]) => void)?.(newValue);\n }\n };\n\n // Renderizado condicional basado en el modo\n const isRHFModeRender = 'control' in rest && rest.control !== undefined;\n\n const renderSelect = (selectValue: any, selectOnChange: any, onBlur?: any, inputRef?: any) => (\n <FormControl fullWidth size={size} error={error} disabled={disabled}>\n {showLabel && <StyledLabel>{label}</StyledLabel>}\n <Box\n sx={{\n width: '100%',\n display: 'grid',\n marginBottom: '10px',\n marginTop: '10px'\n }}>\n <StyledSelect\n label={label}\n value={selectValue ?? (multiple ? [] : '')}\n defaultValue={defaultValue}\n multiple={multiple}\n onChange={selectOnChange}\n onBlur={onBlur}\n renderValue={renderValue}\n displayEmpty\n input={<StyledOutlinedInput label={label} />}\n disabled={disabled}\n MenuProps={{\n PaperProps: {\n style: {\n maxHeight: maxHeight,\n maxWidth: maxWidth,\n },\n },\n }}\n inputRef={inputRef}\n {...rest}\n >\n {menuItems}\n </StyledSelect>\n {helperText && <Typography variant=\"caption\" color=\"error\" sx={{ mt: 1 }}>{helperText}</Typography>}\n </Box>\n </FormControl>\n );\n\n if (isRHFModeRender) {\n const rhfProps = rest as RHFSelectProps<TValue>;\n return (\n <Controller\n name={rhfProps.name}\n control={rhfProps.control}\n rules={rhfProps.validation}\n render={({ field, fieldState: { error } }) => (\n renderSelect(\n field.value,\n (e: SelectChangeEvent<any>) => handleChangeInternal(e, field.onChange),\n field.onBlur,\n field.ref\n )\n )}\n />\n );\n } else {\n return renderSelect(value, (e: SelectChangeEvent<any>) => handleChangeInternal(e));\n }\n}\n\nexport default Select;"],"names":["MuiSelect","React","_a","error"],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export declare const SimpleSelectDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst basicOptions = [\n { value: '10', label: '10' },\n { value: '25', label: '25' },\n { value: '50', label: '50' },\n { value: '100', label: '100' },\n];\n\nexport const SimpleSelectExample = () => {\n const [value, setValue] = useState<string>('25');\n return (\n <Box sx={{ width: 200 }}>\n <Select\n label=\"Registros por p\u00E1gina\"\n options={basicOptions}\n value={value}\n onChange={(val) => setValue(val as string)}\n maxWidth={150}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";
2
- export declare const MultiSelectDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nexport const MultiSelectExample = () => {\n const [value, setValue] = useState<string[]>([]);\n return (\n <Box sx={{ width: 400 }}>\n <Select\n label=\"Seleccionar estados\"\n multiple\n maxChipsToShow={2}\n options={[\n { value: 'pending', label: 'Pendiente' },\n { value: 'approved', label: 'Aprobado' },\n { value: 'rejected', label: 'Rechazado' },\n { value: 'canceled', label: 'Cancelado' },\n { value: 'completed', label: 'Completado' },\n { value: 'invoiced', label: 'Facturado' },\n ]}\n value={value}\n onChange={(val) => setValue(val as string[])}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {JSON.stringify(value)}</Typography>\n </Box>\n );\n};\n";
3
- export declare const WithPlaceholderDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst basicOptions = [\n { value: '10', label: '10' },\n { value: '25', label: '25' },\n { value: '50', label: '50' },\n { value: '100', label: '100' },\n];\n\nexport const WithPlaceholderExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Seleccione una opci\u00F3n\"\n options={basicOptions}\n value={value}\n onChange={(val) => setValue(val as string)}\n placeholder=\"Ninguna opci\u00F3n seleccionada\"\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value || 'Ninguno'}</Typography>\n </Box>\n );\n};\n";
4
- export declare const WithFilterDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst groupedOptions = [\n { value: 'gt', label: 'Guatemala', group: 'Centroam\u00E9rica' },\n { value: 'sv', label: 'El Salvador', group: 'Centroam\u00E9rica' },\n { value: 'mx', label: 'M\u00E9xico', group: 'Norteam\u00E9rica' },\n { value: 'us', label: 'EE.UU.', group: 'Norteam\u00E9rica' },\n];\n\nexport const WithFilterExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Buscar pa\u00EDs\"\n filterable\n options={groupedOptions}\n value={value}\n onChange={(val) => setValue(val as string)}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";
5
- export declare const WithGroupDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst groupedOptions = [\n { value: 'gt', label: 'Guatemala', group: 'Centroam\u00E9rica' },\n { value: 'sv', label: 'El Salvador', group: 'Centroam\u00E9rica' },\n { value: 'mx', label: 'M\u00E9xico', group: 'Norteam\u00E9rica' },\n { value: 'us', label: 'EE.UU.', group: 'Norteam\u00E9rica' },\n];\n\nexport const WithGroupExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Pa\u00EDs por regi\u00F3n\"\n options={groupedOptions}\n value={value}\n onChange={(val) => setValue(val as string)}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";
6
- export declare const CustomRenderWithAvatarDefinition = "\nimport React, { useState } from 'react';\nimport { Select, Option } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Avatar, Box, Typography } from '@mui/material';\n\nconst userOptions = [\n { value: 'admin', label: 'Administrador', img: 'https://placehold.co/40x40?text=A' },\n { value: 'user', label: 'Usuario', img: 'https://placehold.co/40x40?text=U' },\n];\n\nexport const CustomRenderWithAvatarExample = () => {\n const [value, setValue] = useState<string[]>([]);\n return (\n <Box sx={{ width: 300 }}>\n <Select\n options={userOptions}\n multiple\n value={value}\n onChange={(val) => setValue(val as string[])}\n label=\"Usuarios\"\n placeholder=\"Selecciona usuarios\"\n >\n <Option>\n {({ img, label }) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Avatar src={img} sx={{ width: 24, height: 24 }} />\n <Typography variant=\"body2\">{label}</Typography>\n </Box>\n )}\n </Option>\n </Select>\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {JSON.stringify(value)}</Typography>\n </Box>\n );\n};\n";
7
- export declare const MultiSelectCustomChipRenderDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography, Chip } from '@mui/material';\n\nconst transactionStatuses = [\n { value: 'PENDING', label: 'Pendiente' },\n { value: 'REJECTED', label: 'Rechazado' },\n { value: 'CANCELED', label: 'Cancelado' },\n { value: 'REFUNDED', label: 'Reembolsado' },\n { value: 'COMPLETED', label: 'Completado' },\n { value: 'EXPIRED', label: 'Expirado' },\n];\n\nexport const MultiSelectCustomChipRenderExample = () => {\n const [value, setValue] = useState<string[]>(['pending', 'approved', 'rejected', 'canceled']);\n return (\n <Box sx={{ width: 400 }}>\n <Select\n label=\"Estados de Transacci\u00F3n\"\n multiple\n maxChipsToShow={3}\n options={transactionStatuses}\n value={value}\n onChange={(val) => setValue(val as string[])}\n placeholder=\"Selecciona estados\"\n renderChipLabel={(item) => (\n <Typography variant=\"caption\" sx={{ fontWeight: 'bold' }}>\n {item.label.charAt(0).toUpperCase()}\n </Typography>\n )}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {JSON.stringify(value)}</Typography>\n </Box>\n );\n};\n";
8
- export declare const MultiSelectCustomChipRenderFullLabelDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Avatar, Box, Typography } from '@mui/material';\n\nconst groupedOptions = [\n { value: 'gt', label: 'Guatemala', group: 'Centroam\u00E9rica' },\n { value: 'sv', label: 'El Salvador', group: 'Centroam\u00E9rica' },\n { value: 'mx', label: 'M\u00E9xico', group: 'Norteam\u00E9rica' },\n { value: 'us', label: 'EE.UU.', group: 'Norteam\u00E9rica' },\n { value: 'ca', label: 'Canad\u00E1', group: 'Norteam\u00E9rica' },\n { value: 'br', label: 'Brasil', group: 'Sudam\u00E9rica' },\n { value: 'ar', label: 'Argentina', group: 'Sudam\u00E9rica' },\n];\n\nexport const MultiSelectCustomChipRenderFullLabelExample = () => {\n const [value, setValue] = useState<string[]>(['gt', 'mx', 'us', 'ca', 'br']);\n return (\n <Box sx={{ width: 400 }}>\n <Select\n label=\"Pa\u00EDses seleccionados\"\n multiple\n maxChipsToShow={3}\n options={groupedOptions}\n value={value}\n onChange={(val) => setValue(val as string[])}\n placeholder=\"Selecciona pa\u00EDses\"\n renderChipLabel={(item) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n {item.img && <Avatar src={item.img} sx={{ width: 18, height: 18 }} />}\n <Typography variant=\"caption\" sx={{ fontWeight: 'medium' }}>\n {item.label}\n </Typography>\n </Box>\n )}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {JSON.stringify(value)}</Typography>\n </Box>\n );\n};\n";
9
- export declare const ConstrainedHeightDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst optionsWithManyItems = [\n { value: 'gt', label: 'Guatemala' }, { value: 'sv', label: 'El Salvador' },\n { value: 'mx', label: 'M\u00E9xico' }, { value: 'us', label: 'EE.UU.' },\n { value: 'ca', label: 'Canad\u00E1' }, { value: 'br', label: 'Brasil' },\n { value: 'ar', label: 'Argentina' }, { value: 'cl', label: 'Chile' },\n { value: 'co', label: 'Colombia' }, { value: 'pe', label: 'Per\u00FA' },\n { value: 'ec', label: 'Ecuador' }, { value: 've', label: 'Venezuela' },\n { value: 'py', label: 'Paraguay' }, { value: 'uy', label: 'Uruguay' },\n { value: 'bo', label: 'Bolivia' }, { value: 'cr', label: 'Costa Rica' },\n { value: 'pa', label: 'Panam\u00E1' }, { value: 'hn', label: 'Honduras' },\n { value: 'ni', label: 'Nicaragua' }, { value: 'do', label: 'Rep. Dominicana' },\n { value: 'cu', label: 'Cuba' }, { value: 'pr', label: 'Puerto Rico' },\n { value: 'es', label: 'Espa\u00F1a' }, { value: 'fr', label: 'Francia' },\n { value: 'de', label: 'Alemania' }, { value: 'it', label: 'Italia' },\n];\n\nexport const ConstrainedHeightExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Opciones (Altura Limitada)\"\n options={optionsWithManyItems}\n value={value}\n onChange={(val) => setValue(val as string)}\n maxHeight={150}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";
10
- export declare const ConstrainedWidthDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst basicOptions = [\n { value: '10', label: '10' },\n { value: '25', label: '25' },\n];\nconst groupedOptions = [\n { value: 'gt', label: 'Guatemala', group: 'Centroam\u00E9rica' },\n { value: 'sv', label: 'El Salvador', group: 'Centroam\u00E9rica' },\n];\n\nexport const ConstrainedWidthExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 200 }}>\n <Select\n label=\"Opciones (Ancho Limitado)\"\n options={basicOptions.concat(groupedOptions)}\n value={value}\n onChange={(val) => setValue(val as string)}\n maxWidth={100}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";
11
- export declare const AllFeaturesCombinedDefinition = "\nimport React, { useState } from 'react';\nimport { Select, Option } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Avatar, Box, Typography, Chip } from '@mui/material';\n\nconst allOptions = [\n { value: 'gt', label: 'Guatemala', group: 'Centroam\u00E9rica' },\n { value: 'admin', label: 'Administrador', img: 'https://placehold.co/40x40?text=A' },\n { value: 'PENDING', label: 'Pendiente' },\n { value: 'ca', label: 'Canad\u00E1', group: 'Norteam\u00E9rica' },\n { value: 'user', label: 'Usuario', img: 'https://placehold.co/40x40?text=U' },\n { value: 'COMPLETED', label: 'Completado' },\n];\n\nexport const AllFeaturesCombinedExample = () => {\n const [value, setValue] = useState<string[]>(['gt', 'admin', 'PENDING', 'ca', 'user', 'COMPLETED']);\n return (\n <Box sx={{ width: 500 }}>\n <Select\n label=\"Selecci\u00F3n Completa\"\n multiple\n filterable\n maxChipsToShow={3}\n maxHeight={250}\n maxWidth=\"400px\"\n options={allOptions}\n value={value}\n onChange={(val) => setValue(val as string[])}\n placeholder=\"Busca y selecciona todo tipo de elementos\"\n renderChipLabel={(item) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n {item.img && <Avatar src={item.img} sx={{ width: 16, height: 16 }} />}\n <Typography variant=\"caption\" sx={{ fontWeight: 'bold' }}>\n {item.label.length > 10 ? item.label.substring(0, 7) + '...' : item.label}\n </Typography>\n </Box>\n )}\n >\n <Option>\n {(item) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, my: 0.5 }}>\n {item.img && <Avatar src={item.img} sx={{ width: 28, height: 28 }} />}\n <Box>\n <Typography variant=\"body2\" fontWeight=\"medium\">{item.label}</Typography>\n {item.group && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n Grupo: {item.group}\n </Typography>\n )}\n {item.disabled && <Chip label=\"No disponible\" size=\"small\" color=\"warning\" sx={{ ml: 1 }} />}\n </Box>\n </Box>\n )}\n </Option>\n </Select>\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {JSON.stringify(value)}</Typography>\n </Box>\n );\n};\n";
12
- export declare const EmptyOptionsDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nexport const EmptyOptionsExample = () => {\n const [value, setValue] = useState(null);\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Seleccionar (Vac\u00EDo)\"\n options={[]}\n value={value}\n onChange={setValue}\n placeholder=\"No hay opciones disponibles\"\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value || 'Ninguno'}</Typography>\n </Box>\n );\n};\n";
13
- export declare const SelectWithManyOptionsDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select'; // Asumiendo que Select.tsx est\u00E1 en el mismo directorio\nimport { Box, Typography } from '@mui/material';\n\nconst manyOptions = Array.from({ length: 50 }, (_, i) => ({\n value: `option-${i}`,\n label: `Opci\u00F3n ${i + 1}`,\n group: i < 25 ? 'Grupo A' : 'Grupo B',\n}));\n\nexport const SelectWithManyOptionsExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Muchas Opciones\"\n options={manyOptions}\n value={value}\n onChange={(val) => setValue(val as string)}\n filterable\n maxHeight={200}\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";
14
- export declare const AsyncSelectDefinition = "\nimport React, { useState } from 'react';\nimport { Select } from './Select';\nimport { Box, Typography } from '@mui/material';\n\nconst mockAsyncOptions = [\n { value: 'apple', label: 'Apple' },\n { value: 'banana', label: 'Banana' },\n { value: 'orange', label: 'Orange' },\n { value: 'grape', label: 'Grape' },\n { value: 'strawberry', label: 'Strawberry' },\n { value: 'blueberry', label: 'Blueberry' },\n { value: 'pineapple', label: 'Pineapple' },\n];\n\n// Simulate an API call\nconst simulatedLoadOptions = (inputValue: string): Promise<any[]> => {\n return new Promise((resolve) => {\n setTimeout(() => {\n const filtered = mockAsyncOptions.filter(option =>\n option.label.toLowerCase().includes(inputValue.toLowerCase())\n );\n resolve(filtered);\n }, 800); // Simulate network delay\n });\n};\n\nexport const AsyncSelectExample = () => {\n const [value, setValue] = useState('');\n return (\n <Box sx={{ width: 300 }}>\n <Select\n label=\"Buscar Frutas\"\n loadOptions={simulatedLoadOptions}\n value={value}\n onChange={(val) => setValue(val as string)}\n placeholder=\"Escribe para buscar...\"\n loadingMessage=\"Buscando frutas...\"\n noOptionsMessage=\"No se encontraron frutas.\"\n />\n <Typography sx={{ mt: 2 }}>Valor seleccionado: {value}</Typography>\n </Box>\n );\n};\n";