flysoft-react-ui 0.5.0 → 0.5.3

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 (206) hide show
  1. package/dist/App.d.ts.map +1 -1
  2. package/dist/App.js +19 -7
  3. package/dist/components/form-controls/AutocompleteInput.d.ts +11 -3
  4. package/dist/components/form-controls/AutocompleteInput.d.ts.map +1 -1
  5. package/dist/components/form-controls/AutocompleteInput.js +411 -31
  6. package/dist/components/form-controls/Button.d.ts +3 -0
  7. package/dist/components/form-controls/Button.d.ts.map +1 -1
  8. package/dist/components/form-controls/Button.js +160 -19
  9. package/dist/components/form-controls/Checkbox.d.ts +14 -0
  10. package/dist/components/form-controls/Checkbox.d.ts.map +1 -0
  11. package/dist/components/form-controls/Checkbox.js +79 -0
  12. package/dist/components/form-controls/DateInput.d.ts +24 -4
  13. package/dist/components/form-controls/DateInput.d.ts.map +1 -1
  14. package/dist/components/form-controls/DateInput.js +492 -70
  15. package/dist/components/form-controls/DatePicker.d.ts +4 -3
  16. package/dist/components/form-controls/DatePicker.d.ts.map +1 -1
  17. package/dist/components/form-controls/DatePicker.js +26 -30
  18. package/dist/components/form-controls/Input.d.ts +10 -1
  19. package/dist/components/form-controls/Input.d.ts.map +1 -1
  20. package/dist/components/form-controls/Input.js +17 -10
  21. package/dist/components/form-controls/LinkButton.d.ts +15 -0
  22. package/dist/components/form-controls/LinkButton.d.ts.map +1 -0
  23. package/dist/components/form-controls/LinkButton.js +248 -0
  24. package/dist/components/form-controls/Pagination.d.ts +1 -0
  25. package/dist/components/form-controls/Pagination.d.ts.map +1 -1
  26. package/dist/components/form-controls/Pagination.js +3 -40
  27. package/dist/components/form-controls/RadioButtonGroup.d.ts +62 -0
  28. package/dist/components/form-controls/RadioButtonGroup.d.ts.map +1 -0
  29. package/dist/components/form-controls/RadioButtonGroup.js +220 -0
  30. package/dist/components/form-controls/SearchSelectInput-OLD.d.ts +68 -0
  31. package/dist/components/form-controls/SearchSelectInput-OLD.d.ts.map +1 -0
  32. package/dist/components/form-controls/SearchSelectInput-OLD.js +963 -0
  33. package/dist/components/form-controls/SearchSelectInput.d.ts +70 -0
  34. package/dist/components/form-controls/SearchSelectInput.d.ts.map +1 -0
  35. package/dist/components/form-controls/SearchSelectInput.js +336 -0
  36. package/dist/components/form-controls/index.d.ts +9 -1
  37. package/dist/components/form-controls/index.d.ts.map +1 -1
  38. package/dist/components/form-controls/index.js +4 -0
  39. package/dist/components/layout/Accordion.d.ts +13 -0
  40. package/dist/components/layout/Accordion.d.ts.map +1 -0
  41. package/dist/components/layout/Accordion.js +67 -0
  42. package/dist/components/layout/AppLayout.d.ts +3 -2
  43. package/dist/components/layout/AppLayout.d.ts.map +1 -1
  44. package/dist/components/layout/AppLayout.js +104 -31
  45. package/dist/components/layout/Card.d.ts +8 -3
  46. package/dist/components/layout/Card.d.ts.map +1 -1
  47. package/dist/components/layout/Card.js +18 -19
  48. package/dist/components/layout/Collection.js +1 -1
  49. package/dist/components/layout/DataTable.d.ts +3 -1
  50. package/dist/components/layout/DataTable.d.ts.map +1 -1
  51. package/dist/components/layout/DataTable.js +34 -29
  52. package/dist/components/layout/index.d.ts +2 -0
  53. package/dist/components/layout/index.d.ts.map +1 -1
  54. package/dist/components/layout/index.js +1 -0
  55. package/dist/components/utils/Avatar.d.ts +49 -0
  56. package/dist/components/utils/Avatar.d.ts.map +1 -0
  57. package/dist/components/utils/Avatar.js +93 -0
  58. package/dist/components/utils/Badge.d.ts +3 -0
  59. package/dist/components/utils/Badge.d.ts.map +1 -1
  60. package/dist/components/utils/Badge.js +131 -26
  61. package/dist/components/utils/Dialog.d.ts.map +1 -1
  62. package/dist/components/utils/Dialog.js +6 -1
  63. package/dist/components/utils/Filter.d.ts +57 -0
  64. package/dist/components/utils/Filter.d.ts.map +1 -0
  65. package/dist/components/utils/Filter.js +581 -0
  66. package/dist/components/utils/FiltersDialog.d.ts +21 -0
  67. package/dist/components/utils/FiltersDialog.d.ts.map +1 -0
  68. package/dist/components/utils/FiltersDialog.js +104 -0
  69. package/dist/components/utils/Loader.js +2 -2
  70. package/dist/components/utils/RoadMap.d.ts +59 -0
  71. package/dist/components/utils/RoadMap.d.ts.map +1 -0
  72. package/dist/components/utils/RoadMap.js +139 -0
  73. package/dist/components/utils/Snackbar.d.ts +13 -0
  74. package/dist/components/utils/Snackbar.d.ts.map +1 -0
  75. package/dist/components/utils/Snackbar.js +122 -0
  76. package/dist/components/utils/SnackbarContainer.d.ts +7 -0
  77. package/dist/components/utils/SnackbarContainer.d.ts.map +1 -0
  78. package/dist/components/utils/SnackbarContainer.js +25 -0
  79. package/dist/components/utils/iconUtils.d.ts +16 -0
  80. package/dist/components/utils/iconUtils.d.ts.map +1 -0
  81. package/dist/components/utils/iconUtils.js +40 -0
  82. package/dist/components/utils/index.d.ts +12 -0
  83. package/dist/components/utils/index.d.ts.map +1 -1
  84. package/dist/components/utils/index.js +6 -0
  85. package/dist/contexts/AppLayoutContext.d.ts +40 -0
  86. package/dist/contexts/AppLayoutContext.d.ts.map +1 -0
  87. package/dist/contexts/AppLayoutContext.js +98 -0
  88. package/dist/contexts/ListCrudContext.d.ts +50 -0
  89. package/dist/contexts/ListCrudContext.d.ts.map +1 -0
  90. package/dist/contexts/ListCrudContext.js +253 -0
  91. package/dist/contexts/SnackbarContext.d.ts +26 -0
  92. package/dist/contexts/SnackbarContext.d.ts.map +1 -0
  93. package/dist/contexts/SnackbarContext.js +34 -0
  94. package/dist/contexts/index.d.ts +6 -0
  95. package/dist/contexts/index.d.ts.map +1 -1
  96. package/dist/contexts/index.js +6 -0
  97. package/dist/contexts/presets.js +6 -6
  98. package/dist/docs/AccordionDocs.d.ts +4 -0
  99. package/dist/docs/AccordionDocs.d.ts.map +1 -0
  100. package/dist/docs/AccordionDocs.js +21 -0
  101. package/dist/docs/AuthDocs.tsx/AuthDocsContent.js +3 -5
  102. package/dist/docs/AutocompleteInputDocs.js +1 -1
  103. package/dist/docs/AvatarDocs.d.ts +4 -0
  104. package/dist/docs/AvatarDocs.d.ts.map +1 -0
  105. package/dist/docs/AvatarDocs.js +7 -0
  106. package/dist/docs/BadgeDocs.d.ts.map +1 -1
  107. package/dist/docs/BadgeDocs.js +4 -2
  108. package/dist/docs/ButtonDocs.d.ts.map +1 -1
  109. package/dist/docs/ButtonDocs.js +1 -1
  110. package/dist/docs/CardDocs.d.ts.map +1 -1
  111. package/dist/docs/CardDocs.js +17 -8
  112. package/dist/docs/CheckboxDocs.d.ts +4 -0
  113. package/dist/docs/CheckboxDocs.d.ts.map +1 -0
  114. package/dist/docs/CheckboxDocs.js +7 -0
  115. package/dist/docs/DataTableDocs.d.ts.map +1 -1
  116. package/dist/docs/DataTableDocs.js +9 -5
  117. package/dist/docs/DateInputDocs.d.ts +1 -0
  118. package/dist/docs/DateInputDocs.d.ts.map +1 -1
  119. package/dist/docs/DateInputDocs.js +7 -9
  120. package/dist/docs/DatePickerDocs.d.ts +1 -0
  121. package/dist/docs/DatePickerDocs.d.ts.map +1 -1
  122. package/dist/docs/DatePickerDocs.js +6 -8
  123. package/dist/docs/DialogDocs.js +1 -1
  124. package/dist/docs/DocAdmin.d.ts +4 -0
  125. package/dist/docs/DocAdmin.d.ts.map +1 -0
  126. package/dist/docs/DocAdmin.js +68 -0
  127. package/dist/docs/DocsMenu.d.ts.map +1 -1
  128. package/dist/docs/DocsMenu.js +3 -3
  129. package/dist/docs/DocsRouter.d.ts.map +1 -1
  130. package/dist/docs/DocsRouter.js +13 -1
  131. package/dist/docs/DropdownMenuDocs.js +1 -1
  132. package/dist/docs/ExampleFormDocs.d.ts +4 -0
  133. package/dist/docs/ExampleFormDocs.d.ts.map +1 -0
  134. package/dist/docs/ExampleFormDocs.js +148 -0
  135. package/dist/docs/FilterDocs.d.ts +4 -0
  136. package/dist/docs/FilterDocs.d.ts.map +1 -0
  137. package/dist/docs/FilterDocs.js +112 -0
  138. package/dist/docs/InputDocs.d.ts.map +1 -1
  139. package/dist/docs/InputDocs.js +11 -1
  140. package/dist/docs/LinkButtonDocs.d.ts +4 -0
  141. package/dist/docs/LinkButtonDocs.d.ts.map +1 -0
  142. package/dist/docs/LinkButtonDocs.js +7 -0
  143. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts +2 -0
  144. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts.map +1 -0
  145. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.js +29 -0
  146. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentEmpresas.d.ts +2 -0
  147. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentEmpresas.d.ts.map +1 -0
  148. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentEmpresas.js +7 -0
  149. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts +2 -0
  150. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts.map +1 -0
  151. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.js +57 -0
  152. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsEditDialog.d.ts +9 -0
  153. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsEditDialog.d.ts.map +1 -0
  154. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsEditDialog.js +30 -0
  155. package/dist/docs/PaginationDocs.js +6 -6
  156. package/dist/docs/RadioButtonGroupDocs.d.ts +4 -0
  157. package/dist/docs/RadioButtonGroupDocs.d.ts.map +1 -0
  158. package/dist/docs/RadioButtonGroupDocs.js +46 -0
  159. package/dist/docs/RoadMapDocs.d.ts +4 -0
  160. package/dist/docs/RoadMapDocs.d.ts.map +1 -0
  161. package/dist/docs/RoadMapDocs.js +171 -0
  162. package/dist/docs/SearchSelectInputDocs.d.ts +4 -0
  163. package/dist/docs/SearchSelectInputDocs.d.ts.map +1 -0
  164. package/dist/docs/SearchSelectInputDocs.js +168 -0
  165. package/dist/docs/SnackbarDocs.d.ts +4 -0
  166. package/dist/docs/SnackbarDocs.d.ts.map +1 -0
  167. package/dist/docs/SnackbarDocs.js +50 -0
  168. package/dist/docs/TabsGroupDocs.d.ts.map +1 -1
  169. package/dist/docs/TabsGroupDocs.js +12 -1
  170. package/dist/docs/docMockServices/empresaService.d.ts +38 -0
  171. package/dist/docs/docMockServices/empresaService.d.ts.map +1 -0
  172. package/dist/docs/docMockServices/empresaService.js +117 -0
  173. package/dist/docs/docMockServices/index.d.ts +9 -0
  174. package/dist/docs/docMockServices/index.d.ts.map +1 -0
  175. package/dist/docs/docMockServices/index.js +8 -0
  176. package/dist/docs/docMockServices/initialData.d.ts +6 -0
  177. package/dist/docs/docMockServices/initialData.d.ts.map +1 -0
  178. package/dist/docs/docMockServices/initialData.js +132 -0
  179. package/dist/docs/docMockServices/interfaces.d.ts +26 -0
  180. package/dist/docs/docMockServices/interfaces.d.ts.map +1 -0
  181. package/dist/docs/docMockServices/interfaces.js +1 -0
  182. package/dist/docs/docMockServices/personaEmpresaService.d.ts +43 -0
  183. package/dist/docs/docMockServices/personaEmpresaService.d.ts.map +1 -0
  184. package/dist/docs/docMockServices/personaEmpresaService.js +113 -0
  185. package/dist/docs/docMockServices/personaService.d.ts +39 -0
  186. package/dist/docs/docMockServices/personaService.d.ts.map +1 -0
  187. package/dist/docs/docMockServices/personaService.js +181 -0
  188. package/dist/hooks/index.d.ts +2 -0
  189. package/dist/hooks/index.d.ts.map +1 -1
  190. package/dist/hooks/index.js +1 -0
  191. package/dist/hooks/useAsyncRequest.d.ts +17 -0
  192. package/dist/hooks/useAsyncRequest.d.ts.map +1 -0
  193. package/dist/hooks/useAsyncRequest.js +70 -0
  194. package/dist/index.css +1 -1
  195. package/dist/index.d.ts +23 -1
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +11 -0
  198. package/dist/index.js.map +1 -1
  199. package/dist/templates/forms/ContactForm.js +2 -2
  200. package/dist/templates/forms/LoginForm.js +1 -1
  201. package/dist/templates/forms/RegistrationForm.js +1 -1
  202. package/dist/templates/layouts/SidebarLayout.d.ts.map +1 -1
  203. package/dist/templates/layouts/SidebarLayout.js +3 -2
  204. package/dist/templates/patterns/FormPattern.d.ts.map +1 -1
  205. package/dist/templates/patterns/FormPattern.js +4 -3
  206. package/package.json +5 -2
@@ -0,0 +1,220 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { useFormContext } from "react-hook-form";
4
+ export const RadioButtonGroup = React.forwardRef(({ options, value, onChange, labelPosition = "right", size = "md", error, direction = "vertical", gap = "md", className = "", name, disabled, onBlur, readOnly = false, ...props }, ref) => {
5
+ // useFormContext debe llamarse incondicionalmente (regla de hooks)
6
+ // Si no hay FormProvider, esto lanzará un error
7
+ // Para modo controlado sin FormProvider, necesitamos envolver los ejemplos
8
+ // en un FormProvider mínimo o usar una detección diferente
9
+ // Por ahora, llamamos useFormContext incondicionalmente
10
+ const formContext = useFormContext();
11
+ const setValue = formContext?.setValue;
12
+ // Detectar si estamos en modo register
13
+ // Modo register: formContext existe (hay FormProvider) Y name está definido
14
+ // Modo controlado: no hay formContext (no hay FormProvider) o no hay name
15
+ // Nota: Si no hay FormProvider, useFormContext lanzará error, pero esto es esperado
16
+ // cuando se usa register. Para modo controlado, el componente puede funcionar
17
+ // si simplemente no usamos el contexto cuando no está disponible
18
+ const isRegisterMode = React.useMemo(() => {
19
+ // Si no hay formContext, definitivamente es modo controlado
20
+ if (!formContext)
21
+ return false;
22
+ // Si hay formContext pero no hay name, es modo controlado
23
+ if (!name)
24
+ return false;
25
+ // Si hay formContext y name, es modo register
26
+ return true;
27
+ }, [formContext, name]);
28
+ // Usar el valor proporcionado solo en modo controlado (no register)
29
+ // En modo register, react-hook-form maneja el valor automáticamente
30
+ const currentValue = !isRegisterMode ? value : undefined;
31
+ // Input hidden para compatibilidad con react-hook-form
32
+ const hiddenInputRef = React.useRef(null);
33
+ // Combinar el ref del forwardRef (de register) con el ref interno del input hidden
34
+ const combinedRef = React.useCallback((node) => {
35
+ hiddenInputRef.current = node;
36
+ if (typeof ref === "function") {
37
+ ref(node);
38
+ }
39
+ else if (ref) {
40
+ ref.current = node;
41
+ }
42
+ }, [ref]);
43
+ // Obtener el valor actual desde react-hook-form en modo register
44
+ const watchValue = formContext?.watch(name || "");
45
+ const actualValue = isRegisterMode
46
+ ? watchValue !== undefined
47
+ ? watchValue
48
+ : currentValue
49
+ : currentValue;
50
+ const gapClasses = {
51
+ sm: "gap-2",
52
+ md: "gap-3",
53
+ lg: "gap-4",
54
+ };
55
+ const directionClasses = {
56
+ vertical: "flex-col",
57
+ horizontal: "flex-row flex-wrap",
58
+ };
59
+ const containerClasses = `
60
+ flex ${directionClasses[direction]} ${gapClasses[gap]}
61
+ ${className}
62
+ `;
63
+ const sizeClasses = {
64
+ sm: "w-4 h-4",
65
+ md: "w-5 h-5",
66
+ lg: "w-6 h-6",
67
+ };
68
+ const labelSizeClasses = {
69
+ sm: "text-sm",
70
+ md: "text-base",
71
+ lg: "text-lg",
72
+ };
73
+ const handleOptionClick = (optionValue) => {
74
+ if (disabled || readOnly)
75
+ return;
76
+ const valueString = String(optionValue);
77
+ if (isRegisterMode && name) {
78
+ // En modo register, actualizar el input hidden y usar setValue
79
+ if (hiddenInputRef.current) {
80
+ const nativeInput = hiddenInputRef.current;
81
+ const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set;
82
+ if (nativeInputValueSetter) {
83
+ nativeInputValueSetter.call(nativeInput, valueString);
84
+ }
85
+ else {
86
+ nativeInput.value = valueString;
87
+ }
88
+ // Disparar evento change para react-hook-form
89
+ const changeEvent = {
90
+ target: nativeInput,
91
+ currentTarget: nativeInput,
92
+ };
93
+ if (onChange) {
94
+ // En modo register, siempre usar formato de evento
95
+ onChange(changeEvent);
96
+ }
97
+ // Disparar eventos nativos
98
+ const inputEvent = new Event("input", {
99
+ bubbles: true,
100
+ cancelable: true,
101
+ });
102
+ nativeInput.dispatchEvent(inputEvent);
103
+ const changeEventNative = new Event("change", {
104
+ bubbles: true,
105
+ cancelable: true,
106
+ });
107
+ nativeInput.dispatchEvent(changeEventNative);
108
+ }
109
+ // También usar setValue directamente como respaldo
110
+ if (setValue) {
111
+ setValue(name, optionValue, {
112
+ shouldValidate: true,
113
+ shouldDirty: true,
114
+ shouldTouch: true,
115
+ });
116
+ }
117
+ }
118
+ else {
119
+ // Modo controlado - llamar onChange con valor directo
120
+ if (onChange) {
121
+ // Verificar si onChange es una función de valor directo o ChangeEventHandler
122
+ // Intentar primero como función de valor directo (modo controlado típico)
123
+ const onChangeAsValueFn = onChange;
124
+ // Si la función tiene la firma correcta, llamarla directamente
125
+ if (typeof onChangeAsValueFn === "function") {
126
+ onChangeAsValueFn(optionValue);
127
+ }
128
+ else {
129
+ // Si no, intentar como ChangeEventHandler (por compatibilidad)
130
+ const syntheticEvent = {
131
+ target: { value: String(optionValue) },
132
+ currentTarget: { value: String(optionValue) },
133
+ };
134
+ onChange(syntheticEvent);
135
+ }
136
+ }
137
+ }
138
+ };
139
+ const handleBlur = (event) => {
140
+ if (onBlur) {
141
+ if (isRegisterMode && hiddenInputRef.current) {
142
+ // En modo register, crear un evento de blur para react-hook-form
143
+ const blurEvent = event ||
144
+ {
145
+ target: hiddenInputRef.current,
146
+ currentTarget: hiddenInputRef.current,
147
+ };
148
+ onBlur(blurEvent);
149
+ }
150
+ else {
151
+ // En modo controlado, llamar como función sin parámetros
152
+ onBlur();
153
+ }
154
+ }
155
+ // También disparar blur en el input hidden si existe
156
+ if (hiddenInputRef.current) {
157
+ hiddenInputRef.current.blur();
158
+ }
159
+ };
160
+ return (_jsxs("div", { className: "w-full", children: [_jsx("input", { ref: combinedRef, type: "hidden", name: name, value: actualValue !== undefined ? String(actualValue) : "", readOnly: true, tabIndex: -1, "aria-hidden": "true" }), _jsx("div", { className: containerClasses, role: "radiogroup", "aria-label": name, "aria-invalid": error ? "true" : "false", "aria-errormessage": error ? `${name}-error` : undefined, ...props, children: options.map((option, index) => {
161
+ const optionValue = String(option.value);
162
+ const isSelected = actualValue !== undefined && String(actualValue) === optionValue;
163
+ // En modo readOnly, las opciones no seleccionadas se ven deshabilitadas
164
+ const isDisabled = disabled || option.disabled || (readOnly && !isSelected);
165
+ const radioId = `${name || "radio"}-${index}-${option.value}`;
166
+ const radioClasses = `
167
+ ${sizeClasses[size]}
168
+ rounded-full border-2 transition-all duration-200
169
+ flex items-center justify-center
170
+ ${isSelected
171
+ ? "border-[var(--color-primary)]"
172
+ : "border-[var(--color-border-default)]"}
173
+ ${isSelected ? "bg-[var(--color-primary)]" : "bg-transparent"}
174
+ ${isDisabled
175
+ ? "opacity-50 cursor-not-allowed"
176
+ : "cursor-pointer hover:border-[var(--color-primary)]"}
177
+ focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-[var(--color-primary)]
178
+ `;
179
+ const labelClasses = `
180
+ ${labelSizeClasses[size]}
181
+ font-[var(--font-default)] select-none
182
+ ${isDisabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}
183
+ text-[var(--color-text-primary)]
184
+ `;
185
+ const optionContainerClasses = `
186
+ flex items-center
187
+ ${labelPosition === "left" ? "flex-row-reverse" : "flex-row"}
188
+ ${gapClasses[gap]}
189
+ `;
190
+ return (_jsxs("div", { className: optionContainerClasses, onClick: () => !isDisabled && handleOptionClick(option.value), onBlur: index === options.length - 1
191
+ ? () => {
192
+ handleBlur();
193
+ }
194
+ : undefined, role: "radio", "aria-checked": isSelected, "aria-disabled": isDisabled, tabIndex: isDisabled ? -1 : 0, onKeyDown: (e) => {
195
+ if (isDisabled || readOnly)
196
+ return;
197
+ if (e.key === "Enter" || e.key === " ") {
198
+ e.preventDefault();
199
+ handleOptionClick(option.value);
200
+ }
201
+ }, children: [_jsx("div", { className: radioClasses, children: isSelected && (_jsx("div", { className: "rounded-full bg-white", style: {
202
+ width: size === "sm"
203
+ ? "8px"
204
+ : size === "md"
205
+ ? "10px"
206
+ : "12px",
207
+ height: size === "sm"
208
+ ? "8px"
209
+ : size === "md"
210
+ ? "10px"
211
+ : "12px",
212
+ } })) }), option.label && (_jsx("label", { htmlFor: radioId, className: labelClasses, onClick: (e) => {
213
+ e.preventDefault();
214
+ if (!isDisabled) {
215
+ handleOptionClick(option.value);
216
+ }
217
+ }, children: option.label }))] }, radioId));
218
+ }) }), error && (_jsx("p", { id: name ? `${name}-error` : undefined, className: "mt-1 text-sm text-[var(--color-danger)] font-[var(--font-default)]", children: error }))] }));
219
+ });
220
+ RadioButtonGroup.displayName = "RadioButtonGroup";
@@ -0,0 +1,68 @@
1
+ import React from "react";
2
+ import type { InputProps } from "./Input";
3
+ import type { PaginationInterface } from "./Pagination";
4
+ export interface SearchSelectOption {
5
+ label: string;
6
+ value?: string;
7
+ description?: string | number;
8
+ icon?: string;
9
+ }
10
+ export interface SearchSelectInputProps<T = SearchSelectOption, K = string> extends Omit<InputProps, "onChange" | "value" | "ref"> {
11
+ /**
12
+ * Valor del input (controlado).
13
+ * Puede ser la opción completa (T), el valor extraído (K si hay getOptionValue), o un string (para compatibilidad con react-hook-form).
14
+ */
15
+ value?: T | K | string;
16
+ /**
17
+ * Callback cuando cambia el valor del input.
18
+ * Recibe la opción completa (T) si no hay getOptionValue, o el valor extraído (K) si hay getOptionValue.
19
+ * También es compatible con react-hook-form: acepta el onChange estándar de HTML.
20
+ */
21
+ onChange?: ((value: T | K) => void) | React.ChangeEventHandler<HTMLInputElement>;
22
+ /**
23
+ * Función que realiza la búsqueda y devuelve un Promise con los resultados
24
+ */
25
+ onSearchPromiseFn: (text: string) => Promise<Array<T> | PaginationInterface<T>>;
26
+ /**
27
+ * Función que busca un elemento individual usando su valor (K).
28
+ * Se usa cuando hay un valor por defecto que no está presente en las opciones cargadas.
29
+ * Recibe el valor (K) y devuelve una Promise con el objeto completo (T) o undefined si no se encuentra.
30
+ */
31
+ onSingleSearchPromiseFn: (value: K) => Promise<T | undefined>;
32
+ /**
33
+ * Callback al seleccionar una opción. Devuelve el item completo (T) y el valor mapeado (K)
34
+ */
35
+ onSelectOption?: (option: T, value: K) => void;
36
+ /**
37
+ * Título del dialog de selección. Por defecto "Seleccione una opción"
38
+ */
39
+ dialogTitle?: string;
40
+ /**
41
+ * Posición del botón de búsqueda. Por defecto "right"
42
+ */
43
+ searchButtonPosition?: "left" | "right";
44
+ /**
45
+ * Texto a mostrar cuando no hay resultados
46
+ */
47
+ noResultsText?: string;
48
+ /**
49
+ * Obtiene el label que se muestra para cada opción. Por defecto usa la propiedad "label".
50
+ */
51
+ getOptionLabel?: (item: T) => string;
52
+ /**
53
+ * Obtiene el valor que se devuelve al seleccionar una opción. Por defecto usa la propiedad "value".
54
+ */
55
+ getOptionValue?: (item: T) => K;
56
+ /**
57
+ * Obtiene la descripción opcional para cada opción. Por defecto usa la propiedad "description".
58
+ */
59
+ getOptionDescription?: (item: T) => string | number | undefined;
60
+ /**
61
+ * Renderizado personalizado de cada opción. Si se define, se ignora el render por defecto.
62
+ */
63
+ renderOption?: (item: T) => React.ReactNode;
64
+ }
65
+ export declare const SearchSelectInput: <T = SearchSelectOption, K = string>(props: SearchSelectInputProps<T, K> & {
66
+ ref?: React.ForwardedRef<HTMLInputElement>;
67
+ }) => React.ReactElement;
68
+ //# sourceMappingURL=SearchSelectInput-OLD.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchSelectInput-OLD.d.ts","sourceRoot":"","sources":["../../../src/components/form-controls/SearchSelectInput-OLD.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,kBAAkB,EAAE,CAAC,GAAG,MAAM,CACxE,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EACL,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GACxB,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC/C;;OAEG;IACH,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD;;;;OAIG;IACH,uBAAuB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9D;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IACrC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAChC;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAChE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7C;AA6sCD,eAAO,MAAM,iBAAiB,EAAiC,CAC7D,CAAC,GAAG,kBAAkB,EACtB,CAAC,GAAG,MAAM,EAEV,KAAK,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IACpC,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;CAC5C,KACE,KAAK,CAAC,YAAY,CAAC"}