siesa-ui-kit 1.0.24 → 1.0.25
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.
- package/dist/components/MasterCrud/MasterCRUDCard.d.ts +19 -0
- package/dist/components/MasterCrud/MasterCRUDCard.d.ts.map +1 -0
- package/dist/components/MasterCrud/MasterCrud.d.ts +43 -0
- package/dist/components/MasterCrud/MasterCrud.d.ts.map +1 -0
- package/dist/components/MasterCrud/MasterCrud.types.d.ts +594 -0
- package/dist/components/MasterCrud/MasterCrud.types.d.ts.map +1 -0
- package/dist/components/MasterCrud/MasterCrudForm.d.ts +20 -0
- package/dist/components/MasterCrud/MasterCrudForm.d.ts.map +1 -0
- package/dist/components/MasterCrud/MasterCrudTable.d.ts +17 -0
- package/dist/components/MasterCrud/MasterCrudTable.d.ts.map +1 -0
- package/dist/components/MasterCrud/MasterCrudToolbar.d.ts +36 -0
- package/dist/components/MasterCrud/MasterCrudToolbar.d.ts.map +1 -0
- package/dist/components/MasterCrud/icons.d.ts +64 -0
- package/dist/components/MasterCrud/icons.d.ts.map +1 -0
- package/dist/components/MasterCrud/index.d.ts +8 -0
- package/dist/components/MasterCrud/index.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.types.d.ts +4 -0
- package/dist/components/Select/Select.types.d.ts.map +1 -1
- package/dist/siesa-ui-kit.cjs +34 -34
- package/dist/siesa-ui-kit.cjs.map +1 -1
- package/dist/siesa-ui-kit.mjs +718 -716
- package/dist/siesa-ui-kit.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { MasterCrudField } from './MasterCrud.types';
|
|
3
|
+
interface MasterCRUDCardProps<T> {
|
|
4
|
+
data: T;
|
|
5
|
+
fields: MasterCrudField<T>[];
|
|
6
|
+
onEdit?: (record: T) => void;
|
|
7
|
+
onDelete?: (record: T) => void;
|
|
8
|
+
rowActions?: (record: T, index: number) => React.ReactNode;
|
|
9
|
+
index?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* MasterCRUDCard - Componente de tarjeta para la vista de grid
|
|
13
|
+
*
|
|
14
|
+
* Basado en el diseño de Figma (node 1250:20110)
|
|
15
|
+
* Adapta los campos del MasterCrud a las secciones de la tarjeta.
|
|
16
|
+
*/
|
|
17
|
+
export declare const MasterCRUDCard: <T extends Record<string, unknown>>({ data, fields, onEdit, onDelete, rowActions, index, }: MasterCRUDCardProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=MasterCRUDCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MasterCRUDCard.d.ts","sourceRoot":"","sources":["../../../src/components/MasterCrud/MasterCRUDCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,UAAU,mBAAmB,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,wDAO/D,mBAAmB,CAAC,CAAC,CAAC,4CA8JxB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { MasterCrudProps } from './MasterCrud.types';
|
|
2
|
+
/**
|
|
3
|
+
* MasterCrud - Componente genérico para gestión de entidades (CRUD)
|
|
4
|
+
*
|
|
5
|
+
* Proporciona una solución declarativa y reutilizable para la gestión
|
|
6
|
+
* de datos con vistas de listado y formulario.
|
|
7
|
+
*
|
|
8
|
+
* Características:
|
|
9
|
+
* - Orquestación automática entre vistas (LIST, CREATE, EDIT)
|
|
10
|
+
* - Integración con APIs mediante contrato de servicio
|
|
11
|
+
* - Renderizado dinámico basado en metadatos
|
|
12
|
+
* - Dark mode completo
|
|
13
|
+
* - Accesibilidad
|
|
14
|
+
*
|
|
15
|
+
* Mejores prácticas implementadas:
|
|
16
|
+
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
17
|
+
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
18
|
+
* - Tokens de color consistentes con la documentación
|
|
19
|
+
* - Type safety con TypeScript estricto
|
|
20
|
+
* - Reutiliza componentes existentes del sistema
|
|
21
|
+
*
|
|
22
|
+
* @see docs/colors.md - Sistema de colores
|
|
23
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
24
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* const camposClientes = [
|
|
29
|
+
* { accessorKey: 'nombre', header: 'Cliente', type: 'text', config: { required: true } },
|
|
30
|
+
* { accessorKey: 'email', header: 'Correo', type: 'email' },
|
|
31
|
+
* { accessorKey: 'activo', header: 'Estado', type: 'boolean' }
|
|
32
|
+
* ];
|
|
33
|
+
*
|
|
34
|
+
* <MasterCrud
|
|
35
|
+
* title="Gestión de Clientes"
|
|
36
|
+
* entityName="Cliente"
|
|
37
|
+
* fields={camposClientes}
|
|
38
|
+
* service={clientesApiService}
|
|
39
|
+
* />
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare const MasterCrud: <T extends Record<string, any>>({ title, entityName, fields, service, idField, pageSize, showCreateButton, showSearch, showRowActions, allowDelete, onCreateSuccess, onUpdateSuccess, onDeleteSuccess, onError, createButtonText, saveButtonText, cancelButtonText, emptyMessage, className, id, renderToolbar, rowActions, formWidth, formColumns, showViewToggle, sortOptions, filterOptions, filterableFields, useToolbar, onViewChange, enableGridInfiniteScroll, onBeforeCreate, onBeforeUpdate, onBeforeDelete, locale, permissions, }: MasterCrudProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=MasterCrud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MasterCrud.d.ts","sourceRoot":"","sources":["../../../src/components/MasterCrud/MasterCrud.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAuC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,8eAqCvD,eAAe,CAAC,CAAC,CAAC,4CAsepB,CAAC"}
|
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Tipos de campo soportados por MasterCrud
|
|
4
|
+
* Define cómo se renderiza cada campo en el formulario
|
|
5
|
+
*/
|
|
6
|
+
export type FieldType = 'text' | 'number' | 'email' | 'date' | 'boolean' | 'select' | 'lookup';
|
|
7
|
+
/**
|
|
8
|
+
* Estado de la vista actual del MasterCrud
|
|
9
|
+
*/
|
|
10
|
+
export type ViewState = 'LIST' | 'CREATE' | 'EDIT';
|
|
11
|
+
/**
|
|
12
|
+
* Opción para campos de tipo 'select'
|
|
13
|
+
*/
|
|
14
|
+
export interface SelectFieldOption {
|
|
15
|
+
/** Valor de la opción */
|
|
16
|
+
value: string | number;
|
|
17
|
+
/** Etiqueta visible */
|
|
18
|
+
label: string;
|
|
19
|
+
/** Icono opcional */
|
|
20
|
+
icon?: ReactNode;
|
|
21
|
+
/** Si la opción está deshabilitada */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Configuración extendida para cada campo
|
|
26
|
+
*/
|
|
27
|
+
export interface FieldConfig {
|
|
28
|
+
/** Si el campo es obligatorio */
|
|
29
|
+
required?: boolean;
|
|
30
|
+
/** Si el campo está deshabilitado (solo lectura) */
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Use `showInList` en su lugar
|
|
34
|
+
* Si se muestra en la tabla/grilla
|
|
35
|
+
*/
|
|
36
|
+
visibleInTable?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use `showInCreate` y `showInEdit` en su lugar
|
|
39
|
+
* Si se muestra en el formulario
|
|
40
|
+
*/
|
|
41
|
+
visibleInForm?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Visible en la vista de tabla (List View)
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
46
|
+
showInList?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Visible en la vista de tarjetas (Grid View)
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
showInGrid?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Visible en el formulario de creación
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
56
|
+
showInCreate?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Visible en el formulario de edición
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
61
|
+
showInEdit?: boolean;
|
|
62
|
+
/** Si se puede buscar por este campo */
|
|
63
|
+
searchable?: boolean;
|
|
64
|
+
/** Si se puede ordenar por este campo */
|
|
65
|
+
sortable?: boolean;
|
|
66
|
+
/** Ancho de la columna en la tabla (CSS width) */
|
|
67
|
+
columnWidth?: string;
|
|
68
|
+
/** Alineación del contenido en la tabla */
|
|
69
|
+
align?: 'left' | 'center' | 'right';
|
|
70
|
+
/** Placeholder para el input */
|
|
71
|
+
placeholder?: string;
|
|
72
|
+
/** Texto de ayuda debajo del input */
|
|
73
|
+
helperText?: string;
|
|
74
|
+
/** Mensaje de error de validación */
|
|
75
|
+
errorMessage?: string;
|
|
76
|
+
/** Función de validación personalizada */
|
|
77
|
+
validate?: (value: any, formData: Record<string, any>) => string | undefined;
|
|
78
|
+
/** Valor mínimo (para number) */
|
|
79
|
+
min?: number;
|
|
80
|
+
/** Valor máximo (para number) */
|
|
81
|
+
max?: number;
|
|
82
|
+
/** Paso (para number) */
|
|
83
|
+
step?: number;
|
|
84
|
+
/** Formato de fecha (para date) */
|
|
85
|
+
dateFormat?: string;
|
|
86
|
+
/** Posición en la tarjeta (Grid View) */
|
|
87
|
+
cardPosition?: 'title' | 'subtitle' | 'body' | 'footer' | 'status';
|
|
88
|
+
/**
|
|
89
|
+
* Callback ejecutado cuando el campo pierde el foco (blur).
|
|
90
|
+
* Útil para validaciones, cálculos o efectos secundarios.
|
|
91
|
+
*/
|
|
92
|
+
onBlur?: (value: any, name: string, formData: Record<string, any>) => void;
|
|
93
|
+
/**
|
|
94
|
+
* Callback ejecutado cuando el campo se monta en el formulario.
|
|
95
|
+
* Útil para inicialización dinámica o carga de datos.
|
|
96
|
+
* @param setValue Función para actualizar el valor de este campo
|
|
97
|
+
* @param formData Datos actuales del formulario
|
|
98
|
+
*/
|
|
99
|
+
onMount?: (setValue: (value: any) => void, formData: Record<string, any>) => void;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Definición de un campo del MasterCrud
|
|
103
|
+
* Controla tanto la tabla como el formulario
|
|
104
|
+
*/
|
|
105
|
+
export interface MasterCrudField<T = any> {
|
|
106
|
+
/**
|
|
107
|
+
* Key del objeto JSON que contiene el valor
|
|
108
|
+
* @example 'nombre', 'cliente.direccion'
|
|
109
|
+
*/
|
|
110
|
+
accessorKey: keyof T | string;
|
|
111
|
+
/**
|
|
112
|
+
* Etiqueta visible en español
|
|
113
|
+
* Se usa tanto en el header de la tabla como en el label del formulario
|
|
114
|
+
*/
|
|
115
|
+
header: string;
|
|
116
|
+
/**
|
|
117
|
+
* Tipo de componente a renderizar
|
|
118
|
+
*/
|
|
119
|
+
type: FieldType;
|
|
120
|
+
/**
|
|
121
|
+
* Configuración adicional del campo
|
|
122
|
+
*/
|
|
123
|
+
config?: FieldConfig;
|
|
124
|
+
/**
|
|
125
|
+
* Opciones para campos de tipo 'select'
|
|
126
|
+
*/
|
|
127
|
+
options?: SelectFieldOption[];
|
|
128
|
+
/**
|
|
129
|
+
* Servicio de lookup para campos tipo 'lookup'
|
|
130
|
+
* Debe implementar la interfaz del LookupField existente
|
|
131
|
+
*/
|
|
132
|
+
lookupService?: any;
|
|
133
|
+
/**
|
|
134
|
+
* Función de render personalizada para la tabla
|
|
135
|
+
* Si se provee, sobrescribe el render automático
|
|
136
|
+
*/
|
|
137
|
+
renderCell?: (value: any, row: T, index: number) => ReactNode;
|
|
138
|
+
/**
|
|
139
|
+
* Función de render personalizada para el formulario
|
|
140
|
+
* Si se provee, sobrescribe el render automático
|
|
141
|
+
*/
|
|
142
|
+
renderInput?: (value: any, onChange: (value: any) => void, field: MasterCrudField<T>, formData: Record<string, any>) => ReactNode;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Parámetros para la consulta de listado
|
|
146
|
+
*/
|
|
147
|
+
export interface GetAllParams {
|
|
148
|
+
/** Número de página (1-indexed) */
|
|
149
|
+
page: number;
|
|
150
|
+
/** Cantidad de registros por página */
|
|
151
|
+
limit: number;
|
|
152
|
+
/** Término de búsqueda global */
|
|
153
|
+
search?: string;
|
|
154
|
+
/** Campo específico donde buscar (si no se define, es global) */
|
|
155
|
+
searchField?: string;
|
|
156
|
+
/** Campo por el cual ordenar */
|
|
157
|
+
sortBy?: string;
|
|
158
|
+
/** Dirección del ordenamiento */
|
|
159
|
+
sortDirection?: 'asc' | 'desc';
|
|
160
|
+
/** Filtros adicionales */
|
|
161
|
+
filters?: Record<string, any>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Respuesta del servicio de listado
|
|
165
|
+
*/
|
|
166
|
+
export interface GetAllResponse<T> {
|
|
167
|
+
/** Array de datos */
|
|
168
|
+
data: T[];
|
|
169
|
+
/** Total de registros (para paginación) */
|
|
170
|
+
total: number;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Contrato que debe implementar el servicio de datos
|
|
174
|
+
* Permite al MasterCrud interactuar con cualquier backend
|
|
175
|
+
*/
|
|
176
|
+
export interface CrudService<T> {
|
|
177
|
+
/**
|
|
178
|
+
* Obtener listado paginado de registros
|
|
179
|
+
*/
|
|
180
|
+
getAll: (params: GetAllParams) => Promise<GetAllResponse<T>>;
|
|
181
|
+
/**
|
|
182
|
+
* Obtener un registro por su ID
|
|
183
|
+
*/
|
|
184
|
+
getById?: (id: string | number) => Promise<T>;
|
|
185
|
+
/**
|
|
186
|
+
* Crear un nuevo registro
|
|
187
|
+
*/
|
|
188
|
+
create: (data: Partial<T>) => Promise<T>;
|
|
189
|
+
/**
|
|
190
|
+
* Actualizar un registro existente
|
|
191
|
+
*/
|
|
192
|
+
update: (id: string | number, data: Partial<T>) => Promise<T>;
|
|
193
|
+
/**
|
|
194
|
+
* Eliminar un registro
|
|
195
|
+
*/
|
|
196
|
+
delete: (id: string | number) => Promise<void>;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Definición de permisos para operaciones CRUD
|
|
200
|
+
*/
|
|
201
|
+
export interface CrudPermissions {
|
|
202
|
+
/** Permite crear nuevos registros */
|
|
203
|
+
canCreate?: boolean;
|
|
204
|
+
/** Permite editar registros existentes */
|
|
205
|
+
canUpdate?: boolean;
|
|
206
|
+
/** Permite eliminar registros */
|
|
207
|
+
canDelete?: boolean;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Props del componente MasterCrud
|
|
211
|
+
*/
|
|
212
|
+
export interface MasterCrudProps<T = any> {
|
|
213
|
+
/**
|
|
214
|
+
* Título del módulo (se muestra en el header)
|
|
215
|
+
* @example "Gestión de Clientes"
|
|
216
|
+
*/
|
|
217
|
+
title: string;
|
|
218
|
+
/**
|
|
219
|
+
* Nombre de la entidad en singular (para mensajes)
|
|
220
|
+
* @example "Cliente"
|
|
221
|
+
*/
|
|
222
|
+
entityName: string;
|
|
223
|
+
/**
|
|
224
|
+
* Idioma para la localización de textos y formatos.
|
|
225
|
+
* Sigue el estándar ISO 639-1.
|
|
226
|
+
* @default 'es'
|
|
227
|
+
* @example 'en', 'fr'
|
|
228
|
+
*/
|
|
229
|
+
locale?: string;
|
|
230
|
+
/**
|
|
231
|
+
* Definición de los campos de la entidad
|
|
232
|
+
*/
|
|
233
|
+
fields: MasterCrudField<T>[];
|
|
234
|
+
/**
|
|
235
|
+
* Lista de accessorKeys de los campos que se pueden usar para filtrar/buscar.
|
|
236
|
+
* Si no se provee, se usan todos los campos visibles.
|
|
237
|
+
*/
|
|
238
|
+
filterableFields?: string[];
|
|
239
|
+
/**
|
|
240
|
+
* Habilitar scroll infinito en la vista de tarjetas (Grid)
|
|
241
|
+
* Si es true, la vista de grid usará scroll infinito en lugar de paginación
|
|
242
|
+
* @default true
|
|
243
|
+
*/
|
|
244
|
+
enableGridInfiniteScroll?: boolean;
|
|
245
|
+
/**
|
|
246
|
+
* Servicio que implementa las operaciones CRUD
|
|
247
|
+
*/
|
|
248
|
+
service: CrudService<T>;
|
|
249
|
+
/**
|
|
250
|
+
* Campo que contiene el ID único de cada registro
|
|
251
|
+
* @default 'id'
|
|
252
|
+
*/
|
|
253
|
+
idField?: keyof T | string;
|
|
254
|
+
/**
|
|
255
|
+
* Registros por página
|
|
256
|
+
* @default 10
|
|
257
|
+
*/
|
|
258
|
+
pageSize?: number;
|
|
259
|
+
/**
|
|
260
|
+
* Si se muestra el botón de crear
|
|
261
|
+
* @default true
|
|
262
|
+
*/
|
|
263
|
+
showCreateButton?: boolean;
|
|
264
|
+
/**
|
|
265
|
+
* Si se muestra el campo de búsqueda
|
|
266
|
+
* @default true
|
|
267
|
+
*/
|
|
268
|
+
showSearch?: boolean;
|
|
269
|
+
/**
|
|
270
|
+
* Si se muestran acciones de edición/eliminar por fila
|
|
271
|
+
* @default true
|
|
272
|
+
*/
|
|
273
|
+
showRowActions?: boolean;
|
|
274
|
+
/**
|
|
275
|
+
* Si se permite eliminar registros
|
|
276
|
+
* @default true
|
|
277
|
+
*/
|
|
278
|
+
allowDelete?: boolean;
|
|
279
|
+
/**
|
|
280
|
+
* Configuración de permisos granulada.
|
|
281
|
+
* Si se define, tiene precedencia sobre `showCreateButton`, `showRowActions` y `allowDelete`.
|
|
282
|
+
*/
|
|
283
|
+
permissions?: CrudPermissions;
|
|
284
|
+
/**
|
|
285
|
+
* Callback ejecutado antes de crear un registro.
|
|
286
|
+
* Si retorna false (o promesa false), cancela la operación.
|
|
287
|
+
*/
|
|
288
|
+
onBeforeCreate?: (data: Partial<T>) => Promise<boolean> | boolean;
|
|
289
|
+
/**
|
|
290
|
+
* Callback ejecutado antes de actualizar un registro.
|
|
291
|
+
* Si retorna false (o promesa false), cancela la operación.
|
|
292
|
+
*/
|
|
293
|
+
onBeforeUpdate?: (id: string | number, data: Partial<T>) => Promise<boolean> | boolean;
|
|
294
|
+
/**
|
|
295
|
+
* Callback ejecutado antes de iniciar el proceso de eliminación.
|
|
296
|
+
* Si retorna false (o promesa false), cancela la operación (no muestra confirmación).
|
|
297
|
+
*/
|
|
298
|
+
onBeforeDelete?: (record: T) => Promise<boolean> | boolean;
|
|
299
|
+
/**
|
|
300
|
+
* Callback cuando se crea un registro exitosamente
|
|
301
|
+
*/
|
|
302
|
+
onCreateSuccess?: (record: T) => void;
|
|
303
|
+
/**
|
|
304
|
+
* Callback cuando se actualiza un registro exitosamente
|
|
305
|
+
*/
|
|
306
|
+
onUpdateSuccess?: (record: T) => void;
|
|
307
|
+
/**
|
|
308
|
+
* Callback cuando se elimina un registro exitosamente
|
|
309
|
+
*/
|
|
310
|
+
onDeleteSuccess?: (id: string | number) => void;
|
|
311
|
+
/**
|
|
312
|
+
* Callback cuando ocurre un error
|
|
313
|
+
*/
|
|
314
|
+
onError?: (error: Error, action: 'create' | 'update' | 'delete' | 'fetch') => void;
|
|
315
|
+
/**
|
|
316
|
+
* Texto del botón crear
|
|
317
|
+
* @default 'Crear {entityName}'
|
|
318
|
+
*/
|
|
319
|
+
createButtonText?: string;
|
|
320
|
+
/**
|
|
321
|
+
* Texto del botón guardar en el formulario
|
|
322
|
+
* @default 'Guardar'
|
|
323
|
+
*/
|
|
324
|
+
saveButtonText?: string;
|
|
325
|
+
/**
|
|
326
|
+
* Texto del botón cancelar en el formulario
|
|
327
|
+
* @default 'Cancelar'
|
|
328
|
+
*/
|
|
329
|
+
cancelButtonText?: string;
|
|
330
|
+
/**
|
|
331
|
+
* Mensaje cuando no hay datos
|
|
332
|
+
* @default 'No hay registros disponibles'
|
|
333
|
+
*/
|
|
334
|
+
emptyMessage?: string;
|
|
335
|
+
/**
|
|
336
|
+
* Clases CSS adicionales para el contenedor
|
|
337
|
+
*/
|
|
338
|
+
className?: string;
|
|
339
|
+
/**
|
|
340
|
+
* ID único para accesibilidad
|
|
341
|
+
*/
|
|
342
|
+
id?: string;
|
|
343
|
+
/**
|
|
344
|
+
* Renderizado personalizado para la toolbar
|
|
345
|
+
*/
|
|
346
|
+
renderToolbar?: (props: {
|
|
347
|
+
onSearch: (term: string) => void;
|
|
348
|
+
onCreate: () => void;
|
|
349
|
+
searchTerm: string;
|
|
350
|
+
}) => ReactNode;
|
|
351
|
+
/**
|
|
352
|
+
* Acciones adicionales por fila
|
|
353
|
+
*/
|
|
354
|
+
rowActions?: (row: T, index: number) => ReactNode;
|
|
355
|
+
/**
|
|
356
|
+
* Ancho del contenedor del formulario
|
|
357
|
+
* @default '600px'
|
|
358
|
+
*/
|
|
359
|
+
formWidth?: string;
|
|
360
|
+
/**
|
|
361
|
+
* Número de columnas del grid del formulario
|
|
362
|
+
* @default 2
|
|
363
|
+
*/
|
|
364
|
+
formColumns?: number;
|
|
365
|
+
/**
|
|
366
|
+
* Si se muestra el toggle de vista (grid/list) en la toolbar
|
|
367
|
+
* @default false
|
|
368
|
+
*/
|
|
369
|
+
showViewToggle?: boolean;
|
|
370
|
+
/**
|
|
371
|
+
* Opciones de ordenamiento para el dropdown
|
|
372
|
+
*/
|
|
373
|
+
sortOptions?: SortOption[];
|
|
374
|
+
/**
|
|
375
|
+
* Opciones de filtro para el dropdown
|
|
376
|
+
*/
|
|
377
|
+
filterOptions?: FilterOption[];
|
|
378
|
+
/**
|
|
379
|
+
* Si se usa el nuevo MasterCrudToolbar
|
|
380
|
+
* @default true
|
|
381
|
+
*/
|
|
382
|
+
useToolbar?: boolean;
|
|
383
|
+
/**
|
|
384
|
+
* Callback cuando cambia la vista
|
|
385
|
+
*/
|
|
386
|
+
onViewChange?: (view: ToolbarViewType) => void;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Props del componente MasterCrudTable
|
|
390
|
+
*/
|
|
391
|
+
export interface MasterCrudTableProps<T = any> {
|
|
392
|
+
/** Definición de campos */
|
|
393
|
+
fields: MasterCrudField<T>[];
|
|
394
|
+
/** Datos a mostrar */
|
|
395
|
+
data: T[];
|
|
396
|
+
/** Si está cargando */
|
|
397
|
+
loading?: boolean;
|
|
398
|
+
/** Mensaje cuando no hay datos */
|
|
399
|
+
emptyMessage?: string;
|
|
400
|
+
/** Callback para ordenar */
|
|
401
|
+
onSort?: (column: string, direction: 'asc' | 'desc' | null) => void;
|
|
402
|
+
/** Columna actual de ordenamiento */
|
|
403
|
+
sortColumn?: string;
|
|
404
|
+
/** Dirección actual de ordenamiento */
|
|
405
|
+
sortDirection?: 'asc' | 'desc' | null;
|
|
406
|
+
/** Configuración de paginación */
|
|
407
|
+
pagination?: {
|
|
408
|
+
currentPage: number;
|
|
409
|
+
totalPages: number;
|
|
410
|
+
onPageChange: (page: number) => void;
|
|
411
|
+
};
|
|
412
|
+
/** Si se muestran acciones por fila */
|
|
413
|
+
showRowActions?: boolean;
|
|
414
|
+
/** Callback para editar */
|
|
415
|
+
onEdit?: (row: T, index: number) => void;
|
|
416
|
+
/** Callback para eliminar */
|
|
417
|
+
onDelete?: (row: T, index: number) => void;
|
|
418
|
+
/** Acciones personalizadas por fila */
|
|
419
|
+
rowActions?: (row: T, index: number) => ReactNode;
|
|
420
|
+
/** Clases CSS adicionales */
|
|
421
|
+
className?: string;
|
|
422
|
+
/** Idioma para formatos (ISO 639-1) */
|
|
423
|
+
locale?: string;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Props del componente MasterCrudForm
|
|
427
|
+
*/
|
|
428
|
+
export interface MasterCrudFormProps<T = any> {
|
|
429
|
+
/** Definición de campos */
|
|
430
|
+
fields: MasterCrudField<T>[];
|
|
431
|
+
/** Datos iniciales del formulario (para edición) */
|
|
432
|
+
initialData?: Partial<T>;
|
|
433
|
+
/** Si está en modo edición */
|
|
434
|
+
isEditing?: boolean;
|
|
435
|
+
/** Si está cargando/guardando */
|
|
436
|
+
loading?: boolean;
|
|
437
|
+
/** Callback al enviar el formulario */
|
|
438
|
+
onSubmit: (data: Partial<T>) => void;
|
|
439
|
+
/** Callback al cancelar */
|
|
440
|
+
onCancel: () => void;
|
|
441
|
+
/** Texto del botón guardar */
|
|
442
|
+
saveButtonText?: string;
|
|
443
|
+
/** Texto del botón cancelar */
|
|
444
|
+
cancelButtonText?: string;
|
|
445
|
+
/** Número de columnas del grid */
|
|
446
|
+
columns?: number;
|
|
447
|
+
/** Ancho del formulario */
|
|
448
|
+
width?: string;
|
|
449
|
+
/** Clases CSS adicionales */
|
|
450
|
+
className?: string;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Estado interno del formulario
|
|
454
|
+
*/
|
|
455
|
+
export interface FormState<T = any> {
|
|
456
|
+
/** Valores del formulario */
|
|
457
|
+
values: Partial<T>;
|
|
458
|
+
/** Errores de validación por campo */
|
|
459
|
+
errors: Record<string, string>;
|
|
460
|
+
/** Si el formulario ha sido tocado */
|
|
461
|
+
touched: Record<string, boolean>;
|
|
462
|
+
/** Si el formulario está siendo enviado */
|
|
463
|
+
isSubmitting: boolean;
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Tipo de vista para el toggle de la toolbar
|
|
467
|
+
*/
|
|
468
|
+
export type ToolbarViewType = 'grid' | 'list';
|
|
469
|
+
/**
|
|
470
|
+
* Opción de ordenamiento para el dropdown de la toolbar
|
|
471
|
+
*/
|
|
472
|
+
export interface SortOption {
|
|
473
|
+
/** Valor único de la opción */
|
|
474
|
+
value: string;
|
|
475
|
+
/** Etiqueta visible */
|
|
476
|
+
label: string;
|
|
477
|
+
/** Campo por el cual ordenar */
|
|
478
|
+
field: string;
|
|
479
|
+
/** Dirección del ordenamiento */
|
|
480
|
+
direction: 'asc' | 'desc';
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Opción de filtro para el dropdown de la toolbar
|
|
484
|
+
*/
|
|
485
|
+
export interface FilterOption {
|
|
486
|
+
/** Valor único del filtro */
|
|
487
|
+
value: string;
|
|
488
|
+
/** Etiqueta visible */
|
|
489
|
+
label: string;
|
|
490
|
+
/** Icono opcional */
|
|
491
|
+
icon?: ReactNode;
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Props del componente MasterCrudToolbar
|
|
495
|
+
*/
|
|
496
|
+
export interface MasterCrudToolbarProps {
|
|
497
|
+
/**
|
|
498
|
+
* Título que se muestra a la izquierda
|
|
499
|
+
*/
|
|
500
|
+
title: string;
|
|
501
|
+
/**
|
|
502
|
+
* Placeholder del input de búsqueda
|
|
503
|
+
* @default 'Buscar'
|
|
504
|
+
*/
|
|
505
|
+
searchPlaceholder?: string;
|
|
506
|
+
/**
|
|
507
|
+
* Valor actual de la búsqueda
|
|
508
|
+
*/
|
|
509
|
+
searchValue?: string;
|
|
510
|
+
/**
|
|
511
|
+
* Callback cuando cambia el valor de búsqueda
|
|
512
|
+
*/
|
|
513
|
+
onSearchChange?: (value: string) => void;
|
|
514
|
+
/**
|
|
515
|
+
* Si se muestra el campo de búsqueda
|
|
516
|
+
* @default true
|
|
517
|
+
*/
|
|
518
|
+
showSearch?: boolean;
|
|
519
|
+
/**
|
|
520
|
+
* Opciones del dropdown de filtros
|
|
521
|
+
*/
|
|
522
|
+
filterOptions?: FilterOption[];
|
|
523
|
+
/**
|
|
524
|
+
* Filtro seleccionado actualmente
|
|
525
|
+
*/
|
|
526
|
+
selectedFilter?: string;
|
|
527
|
+
/**
|
|
528
|
+
* Callback cuando cambia el filtro
|
|
529
|
+
*/
|
|
530
|
+
onFilterChange?: (value: string) => void;
|
|
531
|
+
/**
|
|
532
|
+
* Si se muestra el dropdown de filtros
|
|
533
|
+
* @default true
|
|
534
|
+
*/
|
|
535
|
+
showFilter?: boolean;
|
|
536
|
+
/**
|
|
537
|
+
* Texto del botón de filtros
|
|
538
|
+
* @default 'Filtrar'
|
|
539
|
+
*/
|
|
540
|
+
filterButtonText?: string;
|
|
541
|
+
/**
|
|
542
|
+
* Opciones del dropdown de ordenamiento
|
|
543
|
+
*/
|
|
544
|
+
sortOptions?: SortOption[];
|
|
545
|
+
/**
|
|
546
|
+
* Ordenamiento seleccionado actualmente (nombre del campo)
|
|
547
|
+
*/
|
|
548
|
+
selectedSort?: string;
|
|
549
|
+
/**
|
|
550
|
+
* Dirección del ordenamiento actual
|
|
551
|
+
*/
|
|
552
|
+
sortDirection?: 'asc' | 'desc';
|
|
553
|
+
/**
|
|
554
|
+
* Callback cuando cambia el ordenamiento (campo)
|
|
555
|
+
*/
|
|
556
|
+
onSortChange?: (value: string) => void;
|
|
557
|
+
/**
|
|
558
|
+
* Callback cuando cambia la dirección del ordenamiento
|
|
559
|
+
*/
|
|
560
|
+
onSortDirectionChange?: (direction: 'asc' | 'desc') => void;
|
|
561
|
+
/**
|
|
562
|
+
* Si se muestra el dropdown de ordenamiento
|
|
563
|
+
* @default true
|
|
564
|
+
*/
|
|
565
|
+
showSort?: boolean;
|
|
566
|
+
/**
|
|
567
|
+
* Texto del botón de ordenamiento
|
|
568
|
+
* @default 'Ordenar'
|
|
569
|
+
*/
|
|
570
|
+
sortButtonText?: string;
|
|
571
|
+
/**
|
|
572
|
+
* Vista actual (grid o list)
|
|
573
|
+
* @default 'list'
|
|
574
|
+
*/
|
|
575
|
+
viewType?: ToolbarViewType;
|
|
576
|
+
/**
|
|
577
|
+
* Callback cuando cambia la vista
|
|
578
|
+
*/
|
|
579
|
+
onViewChange?: (view: ToolbarViewType) => void;
|
|
580
|
+
/**
|
|
581
|
+
* Si se muestra el toggle de vista
|
|
582
|
+
* @default true
|
|
583
|
+
*/
|
|
584
|
+
showViewToggle?: boolean;
|
|
585
|
+
/**
|
|
586
|
+
* Contenido adicional a renderizar en la toolbar
|
|
587
|
+
*/
|
|
588
|
+
extraContent?: ReactNode;
|
|
589
|
+
/**
|
|
590
|
+
* Clases CSS adicionales
|
|
591
|
+
*/
|
|
592
|
+
className?: string;
|
|
593
|
+
}
|
|
594
|
+
//# sourceMappingURL=MasterCrud.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MasterCrud.types.d.ts","sourceRoot":"","sources":["../../../src/components/MasterCrud/MasterCrud.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAMnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7E,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAGnE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAE3E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACnF;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAE9B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAE9D;;;OAGG;IACH,WAAW,CAAC,EAAE,CACZ,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC9B,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC1B,SAAS,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,qBAAqB;IACrB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B;;OAEG;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9C;;OAEG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzC;;OAEG;IACH,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9D;;OAEG;IACH,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAG9B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAElE;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAEvF;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAG3D;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IAEnF;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,SAAS,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAElD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAE/B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAChD;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,GAAG;IAC3C,2BAA2B;IAC3B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,sBAAsB;IACtB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpE,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IACtC,kCAAkC;IAClC,UAAU,CAAC,EAAE;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,uCAAuC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,uCAAuC;IACvC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAClD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC1C,2BAA2B;IAC3B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACrC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,6BAA6B;IAC7B,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,2CAA2C;IAC3C,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAE5D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|