ng-comps 0.2.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.
@@ -0,0 +1,917 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { PageEvent } from '@angular/material/paginator';
3
+ import { MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';
4
+ import { Sort } from '@angular/material/sort';
5
+
6
+ interface MfAccordionPanel {
7
+ title: string;
8
+ description?: string;
9
+ content: string;
10
+ expanded?: boolean;
11
+ disabled?: boolean;
12
+ }
13
+ /**
14
+ * Accordion de la librería ng-comps.
15
+ * Envuelve Angular Material `mat-accordion` / `mat-expansion-panel` y expone
16
+ * una API uniforme con look and feel de marca.
17
+ */
18
+ declare class MfAccordionComponent {
19
+ /** Paneles del accordion */
20
+ readonly panels: _angular_core.InputSignal<MfAccordionPanel[]>;
21
+ /** Permite múltiples paneles abiertos */
22
+ readonly multi: _angular_core.InputSignal<boolean>;
23
+ readonly hostClasses: _angular_core.Signal<string>;
24
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfAccordionComponent, never>;
25
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfAccordionComponent, "mf-accordion", never, { "panels": { "alias": "panels"; "required": true; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
26
+ }
27
+
28
+ type MfAlertSeverity = 'info' | 'success' | 'warning' | 'error';
29
+ /**
30
+ * Alerta de la librería ng-comps.
31
+ * Componente de banner para mensajes de sistema, alertas y notificaciones.
32
+ * Ideal para dashboards y paneles administrativos.
33
+ */
34
+ declare class MfAlertComponent {
35
+ /** Mensaje principal */
36
+ readonly message: _angular_core.InputSignal<string>;
37
+ /** Título opcional */
38
+ readonly title: _angular_core.InputSignal<string>;
39
+ /** Severidad de la alerta */
40
+ readonly severity: _angular_core.InputSignal<MfAlertSeverity>;
41
+ /** Se puede cerrar */
42
+ readonly dismissible: _angular_core.InputSignal<boolean>;
43
+ readonly mfDismiss: _angular_core.OutputEmitterRef<void>;
44
+ readonly iconName: _angular_core.Signal<string>;
45
+ readonly hostClasses: _angular_core.Signal<string>;
46
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfAlertComponent, never>;
47
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfAlertComponent, "mf-alert", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "mfDismiss": "mfDismiss"; }, never, never, true, never>;
48
+ }
49
+
50
+ interface MfAutocompleteOption {
51
+ value: string | number;
52
+ label: string;
53
+ disabled?: boolean;
54
+ }
55
+ type MfAutocompleteSize = 'sm' | 'md' | 'lg';
56
+ /**
57
+ * Autocompletar de la librería ng-comps.
58
+ * Envuelve Angular Material `mat-autocomplete` y expone una API uniforme
59
+ * con look and feel de marca.
60
+ *
61
+ * El panel desplegable se estiliza con la clase global `mf-autocomplete-panel`.
62
+ * Puedes añadir clases adicionales con `panelClass`.
63
+ */
64
+ declare class MfAutocompleteComponent {
65
+ /** Lista completa de opciones */
66
+ readonly options: _angular_core.InputSignal<MfAutocompleteOption[]>;
67
+ /** Etiqueta flotante del campo */
68
+ readonly label: _angular_core.InputSignal<string>;
69
+ /** Placeholder del input */
70
+ readonly placeholder: _angular_core.InputSignal<string>;
71
+ /** Valor actual (texto en el campo) */
72
+ readonly value: _angular_core.InputSignal<string>;
73
+ /** Deshabilitado */
74
+ readonly disabled: _angular_core.InputSignal<boolean>;
75
+ /** Tamaño del campo */
76
+ readonly size: _angular_core.InputSignal<MfAutocompleteSize>;
77
+ /** Ancho completo */
78
+ readonly fullWidth: _angular_core.InputSignal<boolean>;
79
+ /** Texto de ayuda debajo del campo */
80
+ readonly hint: _angular_core.InputSignal<string>;
81
+ /** Mensaje de error */
82
+ readonly error: _angular_core.InputSignal<string>;
83
+ /** Icono al inicio del campo */
84
+ readonly leadingIcon: _angular_core.InputSignal<string>;
85
+ /** Icono al final del campo */
86
+ readonly trailingIcon: _angular_core.InputSignal<string>;
87
+ /**
88
+ * Ancho del panel del autocomplete.
89
+ * Por defecto `''`: el panel toma el mismo ancho que el campo.
90
+ * Acepta cualquier valor CSS válido ('300px', '80vw', etc.) para sobreescribirlo.
91
+ */
92
+ readonly panelWidth: _angular_core.InputSignal<string | number>;
93
+ /**
94
+ * Clases extra que se añaden al panel del autocomplete (overlay).
95
+ * La clase `mf-autocomplete-panel` siempre está presente.
96
+ */
97
+ readonly panelClass: _angular_core.InputSignal<string | string[]>;
98
+ /** Emite el texto escrito en el campo */
99
+ readonly mfInput: _angular_core.OutputEmitterRef<string>;
100
+ /** Emite el valor de la opción seleccionada */
101
+ readonly mfOptionSelected: _angular_core.OutputEmitterRef<MfAutocompleteOption>;
102
+ readonly mfBlur: _angular_core.OutputEmitterRef<void>;
103
+ inputValue: string;
104
+ readonly hostClasses: _angular_core.Signal<string>;
105
+ readonly autocompletePanelClasses: _angular_core.Signal<string>;
106
+ readonly filteredOptions: _angular_core.Signal<MfAutocompleteOption[]>;
107
+ constructor();
108
+ onInputChange(value: string): void;
109
+ onOptionSelected(event: {
110
+ option: {
111
+ value: string;
112
+ };
113
+ }): void;
114
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfAutocompleteComponent, never>;
115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfAutocompleteComponent, "mf-autocomplete", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; }, { "mfInput": "mfInput"; "mfOptionSelected": "mfOptionSelected"; "mfBlur": "mfBlur"; }, never, never, true, never>;
116
+ }
117
+
118
+ type MfAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
119
+ type MfAvatarVariant = 'circle' | 'rounded';
120
+ /**
121
+ * Avatar de la librería ng-comps.
122
+ * Muestra una imagen de perfil, iniciales o un icono.
123
+ * Componente puro sin dependencia de Angular Material.
124
+ */
125
+ declare class MfAvatarComponent {
126
+ /** URL de la imagen */
127
+ readonly src: _angular_core.InputSignal<string>;
128
+ /** Texto alternativo */
129
+ readonly alt: _angular_core.InputSignal<string>;
130
+ /** Nombre completo para generar iniciales */
131
+ readonly name: _angular_core.InputSignal<string>;
132
+ /** Tamaño */
133
+ readonly size: _angular_core.InputSignal<MfAvatarSize>;
134
+ /** Forma */
135
+ readonly variant: _angular_core.InputSignal<MfAvatarVariant>;
136
+ readonly initials: _angular_core.Signal<string>;
137
+ readonly hostClasses: _angular_core.Signal<string>;
138
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfAvatarComponent, never>;
139
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfAvatarComponent, "mf-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
140
+ }
141
+
142
+ type MfBadgeColor = 'brand' | 'accent' | 'error' | 'neutral';
143
+ type MfBadgeSize = 'sm' | 'md' | 'lg';
144
+ type MfBadgePosition = 'above-after' | 'above-before' | 'below-after' | 'below-before';
145
+ /**
146
+ * Badge de la librería ng-comps.
147
+ * Envuelve Angular Material `matBadge` y expone una API uniforme
148
+ * con look and feel de marca.
149
+ */
150
+ declare class MfBadgeComponent {
151
+ /** Contenido del badge (texto o número) */
152
+ readonly content: _angular_core.InputSignal<string | number>;
153
+ /** Color semántico */
154
+ readonly color: _angular_core.InputSignal<MfBadgeColor>;
155
+ /** Tamaño del badge */
156
+ readonly size: _angular_core.InputSignal<MfBadgeSize>;
157
+ /** Posición del badge */
158
+ readonly position: _angular_core.InputSignal<MfBadgePosition>;
159
+ /** Ocultar el badge */
160
+ readonly hidden: _angular_core.InputSignal<boolean>;
161
+ /** Deshabilitado */
162
+ readonly disabled: _angular_core.InputSignal<boolean>;
163
+ /** Superponer sobre el contenido */
164
+ readonly overlap: _angular_core.InputSignal<boolean>;
165
+ readonly matPosition: _angular_core.Signal<"above after" | "above before" | "below after" | "below before">;
166
+ readonly matSize: _angular_core.Signal<"small" | "medium" | "large">;
167
+ readonly hostClasses: _angular_core.Signal<string>;
168
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfBadgeComponent, never>;
169
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfBadgeComponent, "mf-badge", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "overlap": { "alias": "overlap"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
170
+ }
171
+
172
+ interface MfBreadcrumbItem {
173
+ label: string;
174
+ href?: string;
175
+ icon?: string;
176
+ }
177
+ /**
178
+ * Breadcrumb de la librería ng-comps.
179
+ * Componente de navegación jerárquica para indicar la ubicación
180
+ * del usuario en la aplicación.
181
+ */
182
+ declare class MfBreadcrumbComponent {
183
+ /** Items del breadcrumb */
184
+ readonly items: _angular_core.InputSignal<MfBreadcrumbItem[]>;
185
+ /** Icono separador */
186
+ readonly separator: _angular_core.InputSignal<string>;
187
+ /** Label de accesibilidad */
188
+ readonly ariaLabel: _angular_core.InputSignal<string>;
189
+ readonly mfItemClick: _angular_core.OutputEmitterRef<MfBreadcrumbItem>;
190
+ readonly hostClasses: _angular_core.Signal<string>;
191
+ onItemClick(event: Event, item: MfBreadcrumbItem): void;
192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfBreadcrumbComponent, never>;
193
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfBreadcrumbComponent, "mf-breadcrumb", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "mfItemClick": "mfItemClick"; }, never, never, true, never>;
194
+ }
195
+
196
+ type MfButtonVariant = 'filled' | 'outlined' | 'text';
197
+ type MfButtonSize = 'sm' | 'md' | 'lg';
198
+ /**
199
+ * Botón de la librería ng-comps.
200
+ * Envuelve Angular Material `mat-button` / `mat-flat-button` / `mat-stroked-button`
201
+ * y expone una API uniforme con look and feel de marca.
202
+ */
203
+ declare class MfButtonComponent {
204
+ readonly label: _angular_core.InputSignal<string>;
205
+ readonly variant: _angular_core.InputSignal<MfButtonVariant>;
206
+ readonly size: _angular_core.InputSignal<MfButtonSize>;
207
+ readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
208
+ readonly disabled: _angular_core.InputSignal<boolean>;
209
+ readonly leadingIcon: _angular_core.InputSignal<string>;
210
+ readonly trailingIcon: _angular_core.InputSignal<string>;
211
+ readonly fullWidth: _angular_core.InputSignal<boolean>;
212
+ readonly mfClick: _angular_core.OutputEmitterRef<MouseEvent>;
213
+ readonly hostClasses: _angular_core.Signal<string>;
214
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfButtonComponent, never>;
215
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfButtonComponent, "mf-button", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, { "mfClick": "mfClick"; }, never, never, true, never>;
216
+ }
217
+
218
+ type MfCardVariant = 'elevated' | 'outlined' | 'flat';
219
+ /**
220
+ * Card de la librería ng-comps.
221
+ * Envuelve Angular Material `mat-card` y expone una API uniforme
222
+ * con look and feel de marca. Admite contenido proyectado mediante slots.
223
+ */
224
+ declare class MfCardComponent {
225
+ /** Título de la card */
226
+ readonly title: _angular_core.InputSignal<string>;
227
+ /** Subtítulo de la card */
228
+ readonly subtitle: _angular_core.InputSignal<string>;
229
+ /** Variante visual */
230
+ readonly variant: _angular_core.InputSignal<MfCardVariant>;
231
+ /** Padding interno */
232
+ readonly padding: _angular_core.InputSignal<"sm" | "md" | "lg" | "none">;
233
+ /** Interactiva (hover effect) */
234
+ readonly interactive: _angular_core.InputSignal<boolean>;
235
+ readonly hasHeader: _angular_core.Signal<boolean>;
236
+ readonly hostClasses: _angular_core.Signal<string>;
237
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfCardComponent, never>;
238
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfCardComponent, "mf-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[mfCardFooter]"], true, never>;
239
+ }
240
+
241
+ /**
242
+ * Checkbox de la librería ng-comps.
243
+ * Envuelve Angular Material `mat-checkbox` y expone una API uniforme
244
+ * con look and feel de marca.
245
+ */
246
+ declare class MfCheckboxComponent {
247
+ /** Texto del checkbox */
248
+ readonly label: _angular_core.InputSignal<string>;
249
+ /** Estado marcado */
250
+ readonly checked: _angular_core.InputSignal<boolean>;
251
+ /** Estado indeterminado */
252
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
253
+ /** Deshabilitado */
254
+ readonly disabled: _angular_core.InputSignal<boolean>;
255
+ readonly mfChange: _angular_core.OutputEmitterRef<boolean>;
256
+ readonly hostClasses: _angular_core.Signal<string>;
257
+ onChange(event: {
258
+ checked: boolean;
259
+ }): void;
260
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfCheckboxComponent, never>;
261
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfCheckboxComponent, "mf-checkbox", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "mfChange": "mfChange"; }, never, never, true, never>;
262
+ }
263
+
264
+ type MfChipVariant = 'filled' | 'outlined';
265
+ type MfChipColor = 'brand' | 'accent' | 'error' | 'neutral';
266
+ /**
267
+ * Chip de la librería ng-comps.
268
+ * Envuelve Angular Material `mat-chip` y expone una API uniforme
269
+ * con look and feel de marca. Ideal para tags, filtros y etiquetas.
270
+ */
271
+ declare class MfChipComponent {
272
+ /** Texto del chip */
273
+ readonly label: _angular_core.InputSignal<string>;
274
+ /** Variante visual */
275
+ readonly variant: _angular_core.InputSignal<MfChipVariant>;
276
+ /** Color semántico */
277
+ readonly color: _angular_core.InputSignal<MfChipColor>;
278
+ /** Seleccionado */
279
+ readonly selected: _angular_core.InputSignal<boolean>;
280
+ /** Puede ser removido */
281
+ readonly removable: _angular_core.InputSignal<boolean>;
282
+ /** Deshabilitado */
283
+ readonly disabled: _angular_core.InputSignal<boolean>;
284
+ /** Icono inicial */
285
+ readonly leadingIcon: _angular_core.InputSignal<string>;
286
+ readonly mfRemoved: _angular_core.OutputEmitterRef<void>;
287
+ readonly hostClasses: _angular_core.Signal<string>;
288
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfChipComponent, never>;
289
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfChipComponent, "mf-chip", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; }, { "mfRemoved": "mfRemoved"; }, never, never, true, never>;
290
+ }
291
+
292
+ type MfDatepickerSize = 'sm' | 'md' | 'lg';
293
+ /**
294
+ * Selector de fecha de la librería ng-comps.
295
+ * Envuelve Angular Material `mat-datepicker` y expone una API uniforme
296
+ * con look and feel de marca.
297
+ */
298
+ declare class MfDatepickerComponent {
299
+ /** Etiqueta flotante del campo */
300
+ readonly label: _angular_core.InputSignal<string>;
301
+ /** Placeholder del input */
302
+ readonly placeholder: _angular_core.InputSignal<string>;
303
+ /** Tamaño del campo */
304
+ readonly size: _angular_core.InputSignal<MfDatepickerSize>;
305
+ /** Deshabilitado */
306
+ readonly disabled: _angular_core.InputSignal<boolean>;
307
+ /** Valor inicial del datepicker */
308
+ readonly value: _angular_core.InputSignal<Date>;
309
+ /** Texto de ayuda debajo del campo */
310
+ readonly hint: _angular_core.InputSignal<string>;
311
+ /** Mensaje de error */
312
+ readonly error: _angular_core.InputSignal<string>;
313
+ /** Fecha mínima seleccionable */
314
+ readonly min: _angular_core.InputSignal<Date>;
315
+ /** Fecha máxima seleccionable */
316
+ readonly max: _angular_core.InputSignal<Date>;
317
+ /** Ancho completo */
318
+ readonly fullWidth: _angular_core.InputSignal<boolean>;
319
+ readonly mfChange: _angular_core.OutputEmitterRef<Date>;
320
+ readonly mfBlur: _angular_core.OutputEmitterRef<void>;
321
+ protected readonly currentValue: _angular_core.WritableSignal<Date>;
322
+ constructor();
323
+ readonly hostClasses: _angular_core.Signal<string>;
324
+ onDateChange(event: {
325
+ value: Date | null;
326
+ }): void;
327
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfDatepickerComponent, never>;
328
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfDatepickerComponent, "mf-datepicker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, { "mfChange": "mfChange"; "mfBlur": "mfBlur"; }, never, never, true, never>;
329
+ }
330
+
331
+ /**
332
+ * Contenido de diálogo de la librería ng-comps.
333
+ * Envuelve las directivas de Angular Material `mat-dialog-*` y expone
334
+ * una API uniforme con look and feel de marca.
335
+ *
336
+ * Uso:
337
+ * ```
338
+ * dialog.open(MfDialogComponent, {
339
+ * data: { title: 'Confirmar', message: '¿Deseas continuar?' }
340
+ * });
341
+ * ```
342
+ */
343
+ declare class MfDialogComponent {
344
+ private readonly dialogRef;
345
+ /** Título del diálogo */
346
+ readonly title: _angular_core.InputSignal<string>;
347
+ /** Mensaje descriptivo */
348
+ readonly message: _angular_core.InputSignal<string>;
349
+ /** Mostrar botón de cerrar */
350
+ readonly showClose: _angular_core.InputSignal<boolean>;
351
+ /** Mostrar área de acciones (footer) */
352
+ readonly showActions: _angular_core.InputSignal<boolean>;
353
+ readonly mfClose: _angular_core.OutputEmitterRef<void>;
354
+ readonly hostClasses: _angular_core.Signal<string>;
355
+ onClose(): void;
356
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfDialogComponent, never>;
357
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfDialogComponent, "mf-dialog", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; }, { "mfClose": "mfClose"; }, never, ["*", "[mfDialogActions]"], true, never>;
358
+ }
359
+
360
+ type MfDividerVariant = 'full' | 'inset' | 'middle';
361
+ /**
362
+ * Divider de la librería ng-comps.
363
+ * Envuelve Angular Material `mat-divider` y expone una API uniforme
364
+ * con look and feel de marca.
365
+ */
366
+ declare class MfDividerComponent {
367
+ /** Orientación vertical */
368
+ readonly vertical: _angular_core.InputSignal<boolean>;
369
+ /** Variante visual */
370
+ readonly variant: _angular_core.InputSignal<MfDividerVariant>;
371
+ /** Espaciado extra arriba y abajo */
372
+ readonly spacing: _angular_core.InputSignal<"sm" | "md" | "lg" | "none">;
373
+ readonly insetValue: _angular_core.Signal<boolean>;
374
+ readonly hostClasses: _angular_core.Signal<string>;
375
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfDividerComponent, never>;
376
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfDividerComponent, "mf-divider", never, { "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
377
+ }
378
+
379
+ /**
380
+ * Contenedor de campo de formulario de la librería ng-comps.
381
+ * Proporciona estructura de layout consistente con label, contenido proyectado,
382
+ * y mensajes opcionales de ayuda o error.
383
+ */
384
+ declare class MfFormFieldComponent {
385
+ /** Etiqueta del campo */
386
+ readonly label: _angular_core.InputSignal<string>;
387
+ /** ID para asociar el label con el control */
388
+ readonly fieldId: _angular_core.InputSignal<string>;
389
+ /** Texto de ayuda */
390
+ readonly hint: _angular_core.InputSignal<string>;
391
+ /** Mensaje de error */
392
+ readonly error: _angular_core.InputSignal<string>;
393
+ /** Campo requerido (muestra asterisco) */
394
+ readonly required: _angular_core.InputSignal<boolean>;
395
+ readonly labelClasses: _angular_core.Signal<string>;
396
+ readonly hostClasses: _angular_core.Signal<string>;
397
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfFormFieldComponent, never>;
398
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfFormFieldComponent, "mf-form-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
399
+ }
400
+
401
+ interface MfGridTile {
402
+ /** Título de la tile */
403
+ title?: string;
404
+ /** Subtítulo de la tile */
405
+ subtitle?: string;
406
+ /** Número de columnas que ocupa */
407
+ colspan?: number;
408
+ /** Número de filas que ocupa */
409
+ rowspan?: number;
410
+ /** Color de fondo */
411
+ background?: string;
412
+ }
413
+ /**
414
+ * Lista en cuadrícula de la librería ng-comps.
415
+ * Envuelve Angular Material `mat-grid-list` y expone una API uniforme
416
+ * con look and feel de marca. Soporta tiles estáticas y content projection.
417
+ */
418
+ declare class MfGridListComponent {
419
+ /** Número de columnas */
420
+ readonly cols: _angular_core.InputSignal<number>;
421
+ /** Altura de cada fila */
422
+ readonly rowHeight: _angular_core.InputSignal<string | number>;
423
+ /** Espacio entre tiles */
424
+ readonly gutterSize: _angular_core.InputSignal<string>;
425
+ /** Tiles a renderizar */
426
+ readonly tiles: _angular_core.InputSignal<MfGridTile[]>;
427
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfGridListComponent, never>;
428
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfGridListComponent, "mf-grid-list", never, { "cols": { "alias": "cols"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "gutterSize": { "alias": "gutterSize"; "required": false; "isSignal": true; }; "tiles": { "alias": "tiles"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
429
+ }
430
+
431
+ type MfIconSize = 'sm' | 'md' | 'lg' | 'xl';
432
+ type MfIconColor = 'default' | 'brand' | 'muted' | 'error' | 'inherit';
433
+ /**
434
+ * Icono de la librería ng-comps.
435
+ * Envuelve Angular Material `mat-icon` y expone una API uniforme
436
+ * con tamaños y colores de marca.
437
+ */
438
+ declare class MfIconComponent {
439
+ /** Nombre del icono de Material Symbols / Material Icons */
440
+ readonly name: _angular_core.InputSignal<string>;
441
+ /** Tamaño visual del icono */
442
+ readonly size: _angular_core.InputSignal<MfIconSize>;
443
+ /** Color semántico del icono */
444
+ readonly color: _angular_core.InputSignal<MfIconColor>;
445
+ /** Etiqueta accesible. Si se omite, el icono será decorativo (aria-hidden) */
446
+ readonly label: _angular_core.InputSignal<string>;
447
+ readonly ariaHidden: _angular_core.Signal<"false" | "true">;
448
+ readonly hostClasses: _angular_core.Signal<string>;
449
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfIconComponent, never>;
450
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfIconComponent, "mf-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
451
+ }
452
+
453
+ type MfInputSize = 'sm' | 'md' | 'lg';
454
+ /**
455
+ * Campo de texto de la librería ng-comps.
456
+ * Envuelve Angular Material `mat-form-field` + `matInput`
457
+ * y expone una API uniforme con look and feel de marca.
458
+ */
459
+ declare class MfInputComponent {
460
+ /** Etiqueta flotante del campo */
461
+ readonly label: _angular_core.InputSignal<string>;
462
+ /** Placeholder del input */
463
+ readonly placeholder: _angular_core.InputSignal<string>;
464
+ /** Tipo de input HTML */
465
+ readonly type: _angular_core.InputSignal<"number" | "text" | "email" | "password" | "search" | "tel" | "url">;
466
+ /** Tamaño del campo */
467
+ readonly size: _angular_core.InputSignal<MfInputSize>;
468
+ /** Valor actual del campo */
469
+ readonly value: _angular_core.InputSignal<string>;
470
+ /** Deshabilitado */
471
+ readonly disabled: _angular_core.InputSignal<boolean>;
472
+ /** Solo lectura */
473
+ readonly readonly: _angular_core.InputSignal<boolean>;
474
+ /** Texto de ayuda debajo del campo */
475
+ readonly hint: _angular_core.InputSignal<string>;
476
+ /** Mensaje de error */
477
+ readonly error: _angular_core.InputSignal<string>;
478
+ /** Icono al inicio */
479
+ readonly leadingIcon: _angular_core.InputSignal<string>;
480
+ /** Icono al final */
481
+ readonly trailingIcon: _angular_core.InputSignal<string>;
482
+ /** Ancho completo */
483
+ readonly fullWidth: _angular_core.InputSignal<boolean>;
484
+ readonly mfInput: _angular_core.OutputEmitterRef<string>;
485
+ readonly mfBlur: _angular_core.OutputEmitterRef<void>;
486
+ readonly hostClasses: _angular_core.Signal<string>;
487
+ onInput(event: Event): void;
488
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfInputComponent, never>;
489
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfInputComponent, "mf-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, { "mfInput": "mfInput"; "mfBlur": "mfBlur"; }, never, never, true, never>;
490
+ }
491
+
492
+ interface MfMenuItem {
493
+ label: string;
494
+ icon?: string;
495
+ disabled?: boolean;
496
+ value: string;
497
+ }
498
+ /**
499
+ * Menu de la librería ng-comps.
500
+ * Envuelve Angular Material `mat-menu` y expone una API uniforme
501
+ * con look and feel de marca.
502
+ */
503
+ declare class MfMenuComponent {
504
+ /** Items del menú */
505
+ readonly items: _angular_core.InputSignal<MfMenuItem[]>;
506
+ /** Icono del trigger */
507
+ readonly triggerIcon: _angular_core.InputSignal<string>;
508
+ /** Label accesible del trigger */
509
+ readonly triggerLabel: _angular_core.InputSignal<string>;
510
+ readonly mfItemClick: _angular_core.OutputEmitterRef<string>;
511
+ readonly hostClasses: _angular_core.Signal<string>;
512
+ readonly triggerClasses: _angular_core.Signal<string>;
513
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfMenuComponent, never>;
514
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfMenuComponent, "mf-menu", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "triggerIcon": { "alias": "triggerIcon"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; }, { "mfItemClick": "mfItemClick"; }, never, never, true, never>;
515
+ }
516
+
517
+ /**
518
+ * Paginator de la librería ng-comps.
519
+ * Envuelve Angular Material `mat-paginator` y expone una API uniforme
520
+ * con look and feel de marca.
521
+ */
522
+ declare class MfPaginatorComponent {
523
+ /** Total de elementos */
524
+ readonly length: _angular_core.InputSignal<number>;
525
+ /** Tamaño de página */
526
+ readonly pageSize: _angular_core.InputSignal<number>;
527
+ /** Índice de página actual */
528
+ readonly pageIndex: _angular_core.InputSignal<number>;
529
+ /** Opciones de tamaño de página */
530
+ readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
531
+ /** Mostrar botones de primera/última página */
532
+ readonly showFirstLastButtons: _angular_core.InputSignal<boolean>;
533
+ /** Ocultar selector de tamaño de página */
534
+ readonly hidePageSize: _angular_core.InputSignal<boolean>;
535
+ readonly mfPageChange: _angular_core.OutputEmitterRef<PageEvent>;
536
+ readonly hostClasses: _angular_core.Signal<string>;
537
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfPaginatorComponent, never>;
538
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfPaginatorComponent, "mf-paginator", never, { "length": { "alias": "length"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showFirstLastButtons": { "alias": "showFirstLastButtons"; "required": false; "isSignal": true; }; "hidePageSize": { "alias": "hidePageSize"; "required": false; "isSignal": true; }; }, { "mfPageChange": "mfPageChange"; }, never, never, true, never>;
539
+ }
540
+
541
+ type MfProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';
542
+ type MfProgressBarColor = 'brand' | 'accent' | 'warn';
543
+ /**
544
+ * Barra de progreso de la librería ng-comps.
545
+ * Envuelve Angular Material `mat-progress-bar` y expone una API uniforme
546
+ * con look and feel de marca.
547
+ */
548
+ declare class MfProgressBarComponent {
549
+ /** Modo de la barra de progreso */
550
+ readonly mode: _angular_core.InputSignal<MfProgressBarMode>;
551
+ /** Valor actual (0–100) */
552
+ readonly value: _angular_core.InputSignal<number>;
553
+ /** Valor del buffer (0–100, solo en modo buffer) */
554
+ readonly bufferValue: _angular_core.InputSignal<number>;
555
+ /** Color de la barra */
556
+ readonly color: _angular_core.InputSignal<MfProgressBarColor>;
557
+ /** Etiqueta accesible */
558
+ readonly label: _angular_core.InputSignal<string>;
559
+ /** Muestra el porcentaje junto a la barra */
560
+ readonly showValue: _angular_core.InputSignal<boolean>;
561
+ /** Altura de la barra en px */
562
+ readonly height: _angular_core.InputSignal<number>;
563
+ readonly hostClasses: _angular_core.Signal<string>;
564
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfProgressBarComponent, never>;
565
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfProgressBarComponent, "mf-progress-bar", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "bufferValue": { "alias": "bufferValue"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
566
+ }
567
+
568
+ type MfProgressSpinnerMode = 'determinate' | 'indeterminate';
569
+ type MfProgressSpinnerColor = 'brand' | 'accent' | 'warn';
570
+ /**
571
+ * Spinner de progreso de la librería ng-comps.
572
+ * Envuelve Angular Material `mat-progress-spinner` y expone una API uniforme
573
+ * con look and feel de marca.
574
+ */
575
+ declare class MfProgressSpinnerComponent {
576
+ /** Modo del spinner */
577
+ readonly mode: _angular_core.InputSignal<MfProgressSpinnerMode>;
578
+ /** Valor actual (0–100, solo en modo determinate) */
579
+ readonly value: _angular_core.InputSignal<number>;
580
+ /** Diámetro en px */
581
+ readonly diameter: _angular_core.InputSignal<number>;
582
+ /** Grosor del trazo en px */
583
+ readonly strokeWidth: _angular_core.InputSignal<number>;
584
+ /** Color del spinner */
585
+ readonly color: _angular_core.InputSignal<MfProgressSpinnerColor>;
586
+ /** Etiqueta accesible y visible */
587
+ readonly label: _angular_core.InputSignal<string>;
588
+ readonly hostClasses: _angular_core.Signal<string>;
589
+ readonly wrapperClasses: _angular_core.Signal<string>;
590
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfProgressSpinnerComponent, never>;
591
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfProgressSpinnerComponent, "mf-progress-spinner", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
592
+ }
593
+
594
+ interface MfRadioOption {
595
+ /** Valor de la opción */
596
+ value: string;
597
+ /** Texto visible */
598
+ label: string;
599
+ /** Deshabilitada individualmente */
600
+ disabled?: boolean;
601
+ }
602
+ type MfRadioDirection = 'horizontal' | 'vertical';
603
+ /**
604
+ * Grupo de radio buttons de la librería ng-comps.
605
+ * Envuelve Angular Material `mat-radio-group` + `mat-radio-button`
606
+ * y expone una API uniforme con look and feel de marca.
607
+ */
608
+ declare class MfRadioButtonComponent {
609
+ /** Opciones del grupo */
610
+ readonly options: _angular_core.InputSignal<MfRadioOption[]>;
611
+ /** Valor seleccionado */
612
+ readonly value: _angular_core.InputSignal<string>;
613
+ /** Deshabilitado */
614
+ readonly disabled: _angular_core.InputSignal<boolean>;
615
+ /** Dirección del grupo */
616
+ readonly direction: _angular_core.InputSignal<MfRadioDirection>;
617
+ /** Etiqueta accesible para el grupo */
618
+ readonly ariaLabel: _angular_core.InputSignal<string>;
619
+ readonly mfChange: _angular_core.OutputEmitterRef<string>;
620
+ protected readonly currentValue: _angular_core.WritableSignal<string>;
621
+ constructor();
622
+ readonly hostClasses: _angular_core.Signal<string>;
623
+ onChange(event: {
624
+ value: string;
625
+ }): void;
626
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfRadioButtonComponent, never>;
627
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfRadioButtonComponent, "mf-radio-button", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "mfChange": "mfChange"; }, never, never, true, never>;
628
+ }
629
+
630
+ interface MfSelectOption {
631
+ value: string | number;
632
+ label: string;
633
+ disabled?: boolean;
634
+ }
635
+ type MfSelectSize = 'sm' | 'md' | 'lg';
636
+ /**
637
+ * Select de la librería ng-comps.
638
+ * Envuelve Angular Material `mat-select` y expone una API uniforme
639
+ * con look and feel de marca.
640
+ *
641
+ * El dropdown se estiliza mediante la clase global `mf-select-panel` que se
642
+ * inserta en el overlay. Puedes añadir clases adicionales con `panelClass`.
643
+ */
644
+ declare class MfSelectComponent {
645
+ /** Opciones del select */
646
+ readonly options: _angular_core.InputSignal<MfSelectOption[]>;
647
+ /** Etiqueta flotante */
648
+ readonly label: _angular_core.InputSignal<string>;
649
+ /** Placeholder */
650
+ readonly placeholder: _angular_core.InputSignal<string>;
651
+ /** Valor actual */
652
+ readonly value: _angular_core.InputSignal<string | number | (string | number)[]>;
653
+ /** Selección múltiple */
654
+ readonly multiple: _angular_core.InputSignal<boolean>;
655
+ /** Deshabilitado */
656
+ readonly disabled: _angular_core.InputSignal<boolean>;
657
+ /** Texto de ayuda */
658
+ readonly hint: _angular_core.InputSignal<string>;
659
+ /** Mensaje de error */
660
+ readonly error: _angular_core.InputSignal<string>;
661
+ /** Tamaño del campo */
662
+ readonly size: _angular_core.InputSignal<MfSelectSize>;
663
+ /** Ancho completo */
664
+ readonly fullWidth: _angular_core.InputSignal<boolean>;
665
+ /** Icono al inicio del campo */
666
+ readonly leadingIcon: _angular_core.InputSignal<string>;
667
+ /** Icono al final del campo */
668
+ readonly trailingIcon: _angular_core.InputSignal<string>;
669
+ /**
670
+ * Clases extra que se añaden al panel del dropdown (overlay).
671
+ * La clase `mf-select-panel` siempre está presente para los estilos base.
672
+ */
673
+ readonly panelClass: _angular_core.InputSignal<string | string[]>;
674
+ readonly mfSelectionChange: _angular_core.OutputEmitterRef<string | number | (string | number)[]>;
675
+ readonly hostClasses: _angular_core.Signal<string>;
676
+ readonly panelClasses: _angular_core.Signal<string[]>;
677
+ onSelectionChange(event: {
678
+ value: string | number | (string | number)[];
679
+ }): void;
680
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfSelectComponent, never>;
681
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfSelectComponent, "mf-select", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; }, { "mfSelectionChange": "mfSelectionChange"; }, never, never, true, never>;
682
+ }
683
+
684
+ type MfSidenavMode = 'over' | 'push' | 'side';
685
+ type MfSidenavPosition = 'start' | 'end';
686
+ interface MfSidenavNavItem {
687
+ /** Nombre del icono Material (e.g. 'home', 'dashboard') */
688
+ icon: string;
689
+ /** Texto de la etiqueta */
690
+ label: string;
691
+ /** Identificador único del ítem */
692
+ id: string;
693
+ /** Ítem activo/seleccionado */
694
+ active?: boolean;
695
+ /** Deshabilitar el ítem */
696
+ disabled?: boolean;
697
+ /** Número de badge (0 oculta el badge) */
698
+ badge?: number;
699
+ }
700
+ /**
701
+ * Panel lateral de la librería ng-comps.
702
+ * Envuelve Angular Material `mat-sidenav-container` y expone una API uniforme
703
+ * con look and feel de marca.
704
+ *
705
+ * Dos formas de uso:
706
+ * 1. **Navitems declarativos** — Proporciona `navItems`, `headerTitle` e icono.
707
+ * 2. **Content projection** — Proyecta `[mfSidenavContent]` para control total.
708
+ *
709
+ * El contenido principal se proyecta sin atributo.
710
+ */
711
+ declare class MfSidenavComponent {
712
+ /** Abierto o cerrado */
713
+ readonly opened: _angular_core.InputSignal<boolean>;
714
+ /** Modo de apertura */
715
+ readonly mode: _angular_core.InputSignal<MfSidenavMode>;
716
+ /** Posición del panel */
717
+ readonly position: _angular_core.InputSignal<MfSidenavPosition>;
718
+ /** Muestra backdrop al abrir */
719
+ readonly hasBackdrop: _angular_core.InputSignal<boolean>;
720
+ /** Ancho del panel lateral */
721
+ readonly sidenavWidth: _angular_core.InputSignal<string>;
722
+ /** Ítems de navegación declarativos */
723
+ readonly navItems: _angular_core.InputSignal<MfSidenavNavItem[]>;
724
+ /** Título de la cabecera del sidenav */
725
+ readonly headerTitle: _angular_core.InputSignal<string>;
726
+ /** Icono Material de la cabecera */
727
+ readonly headerIcon: _angular_core.InputSignal<string>;
728
+ /** Aria-label del elemento nav */
729
+ readonly navAriaLabel: _angular_core.InputSignal<string>;
730
+ readonly mfOpenedChange: _angular_core.OutputEmitterRef<boolean>;
731
+ /** Emite el ítem de navegación pulsado */
732
+ readonly mfNavItemClick: _angular_core.OutputEmitterRef<MfSidenavNavItem>;
733
+ readonly containerClasses: _angular_core.Signal<string>;
734
+ readonly sidenavClasses: _angular_core.Signal<string>;
735
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfSidenavComponent, never>;
736
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfSidenavComponent, "mf-sidenav", never, { "opened": { "alias": "opened"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "sidenavWidth": { "alias": "sidenavWidth"; "required": false; "isSignal": true; }; "navItems": { "alias": "navItems"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerIcon": { "alias": "headerIcon"; "required": false; "isSignal": true; }; "navAriaLabel": { "alias": "navAriaLabel"; "required": false; "isSignal": true; }; }, { "mfOpenedChange": "mfOpenedChange"; "mfNavItemClick": "mfNavItemClick"; }, never, ["[mfSidenavContent]", "*"], true, never>;
737
+ }
738
+
739
+ /**
740
+ * Slide Toggle de la librería ng-comps.
741
+ * Envuelve Angular Material `mat-slide-toggle` y expone una API uniforme
742
+ * con look and feel de marca.
743
+ */
744
+ declare class MfSlideToggleComponent {
745
+ /** Texto descriptivo */
746
+ readonly label: _angular_core.InputSignal<string>;
747
+ /** Estado activado */
748
+ readonly checked: _angular_core.InputSignal<boolean>;
749
+ /** Deshabilitado */
750
+ readonly disabled: _angular_core.InputSignal<boolean>;
751
+ readonly mfChange: _angular_core.OutputEmitterRef<boolean>;
752
+ readonly hostClasses: _angular_core.Signal<string>;
753
+ onChange(event: {
754
+ checked: boolean;
755
+ }): void;
756
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfSlideToggleComponent, never>;
757
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfSlideToggleComponent, "mf-slide-toggle", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "mfChange": "mfChange"; }, never, never, true, never>;
758
+ }
759
+
760
+ type MfSnackbarType = 'info' | 'success' | 'warning' | 'error';
761
+ interface MfSnackbarConfig {
762
+ message: string;
763
+ action?: string;
764
+ type?: MfSnackbarType;
765
+ duration?: number;
766
+ horizontalPosition?: 'start' | 'center' | 'end';
767
+ verticalPosition?: 'top' | 'bottom';
768
+ }
769
+ /**
770
+ * Servicio de Snackbar de la librería ng-comps.
771
+ * Envuelve Angular Material `MatSnackBar` y expone una API uniforme
772
+ * con estilos de marca y tipos semánticos.
773
+ */
774
+ declare class MfSnackbarService {
775
+ private readonly matSnackBar;
776
+ open(config: MfSnackbarConfig): MatSnackBarRef<TextOnlySnackBar>;
777
+ info(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar>;
778
+ success(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar>;
779
+ warning(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar>;
780
+ error(message: string, action?: string): MatSnackBarRef<TextOnlySnackBar>;
781
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfSnackbarService, never>;
782
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<MfSnackbarService>;
783
+ }
784
+
785
+ interface MfTableColumn {
786
+ key: string;
787
+ header: string;
788
+ sortable?: boolean;
789
+ }
790
+ type MfTableVariant = 'default' | 'striped' | 'bordered';
791
+ /**
792
+ * Table de la librería ng-comps.
793
+ * Envuelve Angular Material `mat-table` y expone una API uniforme
794
+ * con look and feel de marca. Ideal para dashboards y paneles de datos.
795
+ */
796
+ declare class MfTableComponent {
797
+ /** Columnas de la tabla */
798
+ readonly columns: _angular_core.InputSignal<MfTableColumn[]>;
799
+ /** Datos de la tabla */
800
+ readonly data: _angular_core.InputSignal<Record<string, unknown>[]>;
801
+ /** Variante visual */
802
+ readonly variant: _angular_core.InputSignal<MfTableVariant>;
803
+ readonly mfSortChange: _angular_core.OutputEmitterRef<Sort>;
804
+ readonly mfRowClick: _angular_core.OutputEmitterRef<Record<string, unknown>>;
805
+ readonly displayedColumns: _angular_core.Signal<string[]>;
806
+ readonly hostClasses: _angular_core.Signal<string>;
807
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfTableComponent, never>;
808
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfTableComponent, "mf-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "mfSortChange": "mfSortChange"; "mfRowClick": "mfRowClick"; }, never, never, true, never>;
809
+ }
810
+
811
+ interface MfTab {
812
+ label: string;
813
+ icon?: string;
814
+ disabled?: boolean;
815
+ }
816
+ type MfTabsVariant = 'default' | 'stretched';
817
+ /**
818
+ * Tabs de la librería ng-comps.
819
+ * Envuelve Angular Material `mat-tab-group` y expone una API uniforme
820
+ * con look and feel de marca.
821
+ */
822
+ declare class MfTabsComponent {
823
+ /** Pestañas */
824
+ readonly tabs: _angular_core.InputSignal<MfTab[]>;
825
+ /** Índice seleccionado */
826
+ readonly selectedIndex: _angular_core.InputSignal<number>;
827
+ /** Variante visual */
828
+ readonly variant: _angular_core.InputSignal<MfTabsVariant>;
829
+ readonly mfSelectedIndexChange: _angular_core.OutputEmitterRef<number>;
830
+ readonly hostClasses: _angular_core.Signal<string>;
831
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfTabsComponent, never>;
832
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfTabsComponent, "mf-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "mfSelectedIndexChange": "mfSelectedIndexChange"; }, never, never, true, never>;
833
+ }
834
+
835
+ type MfTextareaSize = 'sm' | 'md' | 'lg';
836
+ type MfTextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
837
+ /**
838
+ * Textarea de la librería ng-comps.
839
+ * Envuelve Angular Material `matInput` con textarea y expone una API uniforme
840
+ * con look and feel de marca.
841
+ */
842
+ declare class MfTextareaComponent {
843
+ /** Etiqueta */
844
+ readonly label: _angular_core.InputSignal<string>;
845
+ /** Placeholder */
846
+ readonly placeholder: _angular_core.InputSignal<string>;
847
+ /** Valor */
848
+ readonly value: _angular_core.InputSignal<string>;
849
+ /** Filas visibles */
850
+ readonly rows: _angular_core.InputSignal<number>;
851
+ /** Tamaño */
852
+ readonly size: _angular_core.InputSignal<MfTextareaSize>;
853
+ /** Máximo de caracteres */
854
+ readonly maxLength: _angular_core.InputSignal<number>;
855
+ /** Deshabilitado */
856
+ readonly disabled: _angular_core.InputSignal<boolean>;
857
+ /** Solo lectura */
858
+ readonly readonly: _angular_core.InputSignal<boolean>;
859
+ /** Texto de ayuda */
860
+ readonly hint: _angular_core.InputSignal<string>;
861
+ /** Resize */
862
+ readonly resize: _angular_core.InputSignal<MfTextareaResize>;
863
+ readonly mfInput: _angular_core.OutputEmitterRef<string>;
864
+ readonly mfBlur: _angular_core.OutputEmitterRef<void>;
865
+ readonly currentLength: _angular_core.Signal<number>;
866
+ readonly hostClasses: _angular_core.Signal<string>;
867
+ onInput(event: Event): void;
868
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfTextareaComponent, never>;
869
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfTextareaComponent, "mf-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; }, { "mfInput": "mfInput"; "mfBlur": "mfBlur"; }, never, never, true, never>;
870
+ }
871
+
872
+ type MfToolbarVariant = 'surface' | 'brand' | 'transparent';
873
+ /**
874
+ * Toolbar de la librería ng-comps.
875
+ * Envuelve Angular Material `mat-toolbar` y expone una API uniforme
876
+ * con look and feel de marca. Usa content projection para acciones.
877
+ */
878
+ declare class MfToolbarComponent {
879
+ /** Título que se muestra en la toolbar */
880
+ readonly title: _angular_core.InputSignal<string>;
881
+ /** Variante visual */
882
+ readonly variant: _angular_core.InputSignal<MfToolbarVariant>;
883
+ /** Muestra borde inferior */
884
+ readonly bordered: _angular_core.InputSignal<boolean>;
885
+ /** Toolbar fija en la parte superior */
886
+ readonly sticky: _angular_core.InputSignal<boolean>;
887
+ /** Elevación sutil */
888
+ readonly elevated: _angular_core.InputSignal<boolean>;
889
+ readonly hostClasses: _angular_core.Signal<string>;
890
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfToolbarComponent, never>;
891
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfToolbarComponent, "mf-toolbar", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; }, {}, never, ["[mfToolbarStart]", "[mfToolbarEnd]", "*"], true, never>;
892
+ }
893
+
894
+ type MfTooltipPosition = 'above' | 'below' | 'left' | 'right';
895
+ /**
896
+ * Tooltip de la librería ng-comps.
897
+ * Envuelve Angular Material `matTooltip` y expone una API uniforme
898
+ * con look and feel de marca.
899
+ */
900
+ declare class MfTooltipComponent {
901
+ /** Texto del tooltip */
902
+ readonly text: _angular_core.InputSignal<string>;
903
+ /** Posición del tooltip */
904
+ readonly position: _angular_core.InputSignal<MfTooltipPosition>;
905
+ /** Deshabilitado */
906
+ readonly disabled: _angular_core.InputSignal<boolean>;
907
+ /** Delay para mostrar (ms) */
908
+ readonly showDelay: _angular_core.InputSignal<number>;
909
+ /** Delay para ocultar (ms) */
910
+ readonly hideDelay: _angular_core.InputSignal<number>;
911
+ readonly hostClasses: _angular_core.Signal<string>;
912
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfTooltipComponent, never>;
913
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfTooltipComponent, "mf-tooltip", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showDelay": { "alias": "showDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
914
+ }
915
+
916
+ export { MfAccordionComponent, MfAlertComponent, MfAutocompleteComponent, MfAvatarComponent, MfBadgeComponent, MfBreadcrumbComponent, MfButtonComponent, MfCardComponent, MfCheckboxComponent, MfChipComponent, MfDatepickerComponent, MfDialogComponent, MfDividerComponent, MfFormFieldComponent, MfGridListComponent, MfIconComponent, MfInputComponent, MfMenuComponent, MfPaginatorComponent, MfProgressBarComponent, MfProgressSpinnerComponent, MfRadioButtonComponent, MfSelectComponent, MfSidenavComponent, MfSlideToggleComponent, MfSnackbarService, MfTableComponent, MfTabsComponent, MfTextareaComponent, MfToolbarComponent, MfTooltipComponent };
917
+ export type { MfAccordionPanel, MfAlertSeverity, MfAutocompleteOption, MfAutocompleteSize, MfAvatarSize, MfAvatarVariant, MfBadgeColor, MfBadgePosition, MfBadgeSize, MfBreadcrumbItem, MfButtonSize, MfButtonVariant, MfCardVariant, MfChipColor, MfChipVariant, MfDatepickerSize, MfDividerVariant, MfGridTile, MfIconColor, MfIconSize, MfInputSize, MfMenuItem, MfProgressBarColor, MfProgressBarMode, MfProgressSpinnerColor, MfProgressSpinnerMode, MfRadioDirection, MfRadioOption, MfSelectOption, MfSelectSize, MfSidenavMode, MfSidenavNavItem, MfSidenavPosition, MfSnackbarConfig, MfSnackbarType, MfTab, MfTableColumn, MfTableVariant, MfTabsVariant, MfTextareaResize, MfTextareaSize, MfToolbarVariant, MfTooltipPosition };