@neural-ui/core 1.1.2 → 1.2.1

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.
@@ -7,9 +7,9 @@ import { SafeHtml } from '@angular/platform-browser';
7
7
  import { DialogRef } from '@angular/cdk/dialog';
8
8
 
9
9
  interface NeuralUIConfig {
10
- /** Tamaño por defecto de los iconos. Por defecto: '1.25rem' */
10
+ /** Tamaño por defecto de los iconos. Por defecto: '1.25rem' / Default icon size. Default: '1.25rem' */
11
11
  iconSize?: string;
12
- /** Grosor de trazo de los iconos. Por defecto: '2' */
12
+ /** Grosor de trazo de los iconos. Por defecto: '2' / Icon stroke width. Default: '2' */
13
13
  iconStrokeWidth?: string;
14
14
  }
15
15
  /**
@@ -86,13 +86,13 @@ declare class NeuUrlStateService {
86
86
  type NeuToastType = 'success' | 'error' | 'info' | 'warning';
87
87
  type NeuToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
88
88
  interface NeuToastOptions {
89
- /** Mensaje del toast */
89
+ /** Mensaje del toast / Toast message */
90
90
  message: string;
91
- /** Tipo semántico — controla color e icono */
91
+ /** Tipo semántico — controla color e icono / Semantic type — controls color and icon */
92
92
  type?: NeuToastType;
93
- /** Duración en ms antes de ocultarse automáticamente. 0 = sin auto-hide */
93
+ /** Duración en ms antes de ocultarse automáticamente. 0 = sin auto-hide / Duration in ms before auto-hiding. 0 = no auto-hide */
94
94
  duration?: number;
95
- /** Título opcional */
95
+ /** Título opcional / Optional title */
96
96
  title?: string;
97
97
  }
98
98
  interface NeuToastItem extends Required<Omit<NeuToastOptions, 'title'>> {
@@ -112,9 +112,9 @@ interface NeuToastItem extends Required<Omit<NeuToastOptions, 'title'>> {
112
112
  * toast.error('Ha ocurrido un error', { title: 'Error', duration: 8000 });
113
113
  */
114
114
  declare class NeuToastService {
115
- /** Lista reactiva de toasts activos */
115
+ /** Lista reactiva de toasts activos / Reactive list of active toasts */
116
116
  readonly toasts: _angular_core.WritableSignal<NeuToastItem[]>;
117
- /** Posición del contenedor de toasts */
117
+ /** Posición del contenedor de toasts / Toast container position */
118
118
  readonly position: _angular_core.WritableSignal<NeuToastPosition>;
119
119
  setPosition(position: NeuToastPosition): void;
120
120
  show(options: NeuToastOptions): string;
@@ -142,7 +142,7 @@ declare class NeuCheckboxComponent implements ControlValueAccessor {
142
142
  readonly disabled: _angular_core.InputSignal<boolean>;
143
143
  readonly _id: string;
144
144
  protected readonly _checked: _angular_core.WritableSignal<boolean>;
145
- /** Estado disabled interno — combina el input `disabled` con el CVA setDisabledState */
145
+ /** Estado disabled interno — combina el input `disabled` con el CVA setDisabledState / Internal disabled state — combines the `disabled` input with CVA setDisabledState */
146
146
  private readonly _cvaDisabled;
147
147
  protected readonly _isDisabled: _angular_core.Signal<boolean>;
148
148
  private _onChange;
@@ -170,29 +170,29 @@ interface DrumSlot {
170
170
  }
171
171
  declare class NeuDateInputComponent implements ControlValueAccessor {
172
172
  private readonly el;
173
- /** Tipo: date | time | datetime-local */
173
+ /** Tipo: date | time | datetime-local / Type: date | time | datetime-local */
174
174
  type: _angular_core.InputSignal<"date" | "time" | "datetime-local">;
175
- /** Etiqueta del campo */
175
+ /** Etiqueta del campo / Field label */
176
176
  label: _angular_core.InputSignal<string>;
177
- /** Texto de ayuda */
177
+ /** Texto de ayuda / Help text */
178
178
  hint: _angular_core.InputSignal<string>;
179
- /** Mensaje de error */
179
+ /** Mensaje de error / Error message */
180
180
  errorMessage: _angular_core.InputSignal<string>;
181
- /** Deshabilita el campo */
181
+ /** Deshabilita el campo / Disables the field */
182
182
  disabled: _angular_core.InputSignal<boolean>;
183
- /** Solo lectura */
183
+ /** Solo lectura / Read only */
184
184
  readonly: _angular_core.InputSignal<boolean>;
185
- /** Nombre del campo (formularios nativos) */
185
+ /** Nombre del campo (formularios nativos) / Field name (native forms) */
186
186
  name: _angular_core.InputSignal<string>;
187
- /** ID accesible */
187
+ /** ID accesible / Accessible ID */
188
188
  inputId: _angular_core.InputSignal<string>;
189
- /** Requerido */
189
+ /** Requerido / Required */
190
190
  required: _angular_core.InputSignal<boolean>;
191
- /** Mínimo (no implementado visualmente en v1) */
191
+ /** Mínimo (no implementado visualmente en v1) / Minimum (not visually implemented in v1) */
192
192
  min: _angular_core.InputSignal<string | null>;
193
- /** Máximo (no implementado visualmente en v1) */
193
+ /** Máximo (no implementado visualmente en v1) / Maximum (not visually implemented in v1) */
194
194
  max: _angular_core.InputSignal<string | null>;
195
- /** Paso */
195
+ /** Paso / Step */
196
196
  step: _angular_core.InputSignal<number | null>;
197
197
  protected readonly _id: string;
198
198
  readonly isOpen: _angular_core.WritableSignal<boolean>;
@@ -253,47 +253,47 @@ type NeuInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | '
253
253
  * <neu-input label="Correo" [formControl]="emailCtrl" [errorMessage]="emailError()" />
254
254
  */
255
255
  declare class NeuInputComponent implements ControlValueAccessor {
256
- /** Tipo de input HTML */
256
+ /** Tipo de input HTML / HTML input type */
257
257
  type: _angular_core.InputSignal<NeuInputType>;
258
- /** Texto del floating label */
258
+ /** Texto del floating label / Floating label text */
259
259
  label: _angular_core.InputSignal<string>;
260
- /** Placeholder visible cuando floatingLabel=false */
260
+ /** Placeholder visible cuando floatingLabel=false / Visible placeholder when floatingLabel=false */
261
261
  placeholder: _angular_core.InputSignal<string>;
262
- /** Muestra el label como flotante (true) o estático encima del campo (false) */
262
+ /** Muestra el label como flotante (true) o estático encima del campo (false) / Shows the label as floating (true) or static above the field (false) */
263
263
  floatingLabel: _angular_core.InputSignal<boolean>;
264
- /** Hint de ayuda (visible cuando no hay error) */
264
+ /** Hint de ayuda (visible cuando no hay error) / Help hint (visible when there is no error) */
265
265
  hint: _angular_core.InputSignal<string>;
266
- /** Mensaje de error (activa el estado de error) */
266
+ /** Mensaje de error (activa el estado de error) / Error message (activates the error state) */
267
267
  errorMessage: _angular_core.InputSignal<string>;
268
- /** Deshabilita el campo */
268
+ /** Deshabilita el campo / Disables the field */
269
269
  disabled: _angular_core.InputSignal<boolean>;
270
- /** Atributo autocomplete HTML */
270
+ /** Atributo autocomplete HTML / HTML autocomplete attribute */
271
271
  autocomplete: _angular_core.InputSignal<string>;
272
- /** Muestra zona para icono al inicio */
272
+ /** Muestra zona para icono al inicio / Shows icon slot at the start */
273
273
  startIcon: _angular_core.InputSignal<boolean>;
274
- /** Muestra zona para icono al final */
274
+ /** Muestra zona para icono al final / Shows icon slot at the end */
275
275
  endIcon: _angular_core.InputSignal<boolean>;
276
- /** Nombre del icono lucide a renderizar dentro del campo */
276
+ /** Nombre del icono lucide a renderizar dentro del campo / Lucide icon name to render inside the field */
277
277
  icon: _angular_core.InputSignal<string>;
278
- /** Posición del icono cuando se usa `icon` */
278
+ /** Posición del icono cuando se usa `icon` / Icon position when using `icon` */
279
279
  iconPosition: _angular_core.InputSignal<"left" | "right">;
280
- /** ID accesible para el input — generado con contador estable (seguro en SSR) */
280
+ /** ID accesible para el input — generado con contador estable (seguro en SSR) / Accessible ID for the input — generated with stable counter (SSR-safe) */
281
281
  inputId: _angular_core.InputSignal<string>;
282
- /** Nombre del campo para formularios nativos */
282
+ /** Nombre del campo para formularios nativos / Field name for native forms */
283
283
  name: _angular_core.InputSignal<string>;
284
- /** Marca el campo como requerido */
284
+ /** Marca el campo como requerido / Marks the field as required */
285
285
  required: _angular_core.InputSignal<boolean>;
286
- /** Hace el campo de solo lectura */
286
+ /** Hace el campo de solo lectura / Makes the field read-only */
287
287
  readonly: _angular_core.InputSignal<boolean>;
288
- /** Longitud máxima de caracteres */
288
+ /** Longitud máxima de caracteres / Maximum character length */
289
289
  maxlength: _angular_core.InputSignal<number | null>;
290
- /** Longitud mínima de caracteres */
290
+ /** Longitud mínima de caracteres / Minimum character length */
291
291
  minlength: _angular_core.InputSignal<number | null>;
292
- /** Valor mínimo (para type=number/date) */
292
+ /** Valor mínimo (para type=number/date) / Minimum value (for type=number/date) */
293
293
  min: _angular_core.InputSignal<string | null>;
294
- /** Valor máximo (para type=number/date) */
294
+ /** Valor máximo (para type=number/date) / Maximum value (for type=number/date) */
295
295
  max: _angular_core.InputSignal<string | null>;
296
- /** Patrón de validación HTML5 */
296
+ /** Patrón de validación HTML5 / HTML5 validation pattern */
297
297
  pattern: _angular_core.InputSignal<string | null>;
298
298
  protected readonly _value: _angular_core.WritableSignal<string>;
299
299
  protected readonly _focused: _angular_core.WritableSignal<boolean>;
@@ -323,6 +323,8 @@ interface NeuSelectOption {
323
323
  label: string;
324
324
  disabled?: boolean;
325
325
  group?: string;
326
+ /** Objeto de origen para adjuntar sin transformación (p.ej. entidad de la API). Accesible vía (selectionChange). / Origin object to attach without transformation (e.g. API entity). Accessible via (selectionChange). */
327
+ data?: unknown;
326
328
  }
327
329
  interface NeuSelectGroup {
328
330
  label: string;
@@ -330,7 +332,7 @@ interface NeuSelectGroup {
330
332
  }
331
333
 
332
334
  /**
333
- * Directiva para personalizar el template de cada ítem del dropdown de Multiselect.
335
+ * Directiva para personalizar el template de cada ítem del dropdown de Multiselect. / Directive to customize the template of each Multiselect dropdown item.
334
336
  *
335
337
  * Uso:
336
338
  * ```html
@@ -353,42 +355,56 @@ declare class NeuMultiselectItemDirective {
353
355
  /**
354
356
  * NeuralUI Multiselect Component
355
357
  *
356
- * Dropdown de selección múltiple con chips, búsqueda integrada y soporte
357
- * completo para Angular Forms (ngModel y Reactive Forms).
358
+ * Dropdown de selección múltiple con chips, búsqueda integrada y soporte / Multiple selection dropdown with chips, integrated search and support
359
+ * completo para Angular Forms (ngModel y Reactive Forms). / for Angular Forms (ngModel and Reactive Forms).
358
360
  *
359
361
  * Uso:
360
362
  * <neu-multiselect label="Tecnologías" [options]="opts" [(ngModel)]="selected" />
361
363
  */
362
364
  declare class NeuMultiselectComponent implements ControlValueAccessor {
363
365
  private readonly elementRef;
366
+ private readonly _urlState;
367
+ constructor();
364
368
  /** @internal */
365
369
  readonly _triggerId: string;
366
- /** Template personalizado para cada opción del dropdown */
370
+ /** Template personalizado para cada opción del dropdown / Custom template for each dropdown option */
367
371
  readonly itemTpl: _angular_core.Signal<NeuMultiselectItemDirective | undefined>;
368
- /** Opciones del dropdown */
372
+ /** Opciones del dropdown / Dropdown options */
369
373
  options: _angular_core.InputSignal<NeuSelectOption[]>;
370
- /** Etiqueta del componente */
374
+ /** Etiqueta del componente / Component label */
371
375
  label: _angular_core.InputSignal<string>;
372
- /** Muestra el label como flotante dentro del campo (true) o estático encima (false) */
376
+ /** Muestra el label como flotante dentro del campo (true) o estático encima (false) / Shows the label as floating inside the field (true) or static above (false) */
373
377
  floatingLabel: _angular_core.InputSignal<boolean>;
374
- /** Placeholder cuando no hay selección */
378
+ /** Placeholder cuando no hay selección / Placeholder when there is no selection */
375
379
  placeholder: _angular_core.InputSignal<string>;
376
- /** Mensaje de error */
380
+ /** Mensaje de error / Error message */
377
381
  errorMessage: _angular_core.InputSignal<string>;
378
- /** Deshabilita el componente */
382
+ /** Deshabilita el componente / Disables the component */
379
383
  disabled: _angular_core.InputSignal<boolean>;
380
- /** Activa input de búsqueda/filtro en el panel */
384
+ /** Activa input de búsqueda/filtro en el panel / Activates the search/filter input in the panel */
381
385
  searchable: _angular_core.InputSignal<boolean>;
382
- /** Placeholder del input de búsqueda */
386
+ /** Placeholder del input de búsqueda / Search input placeholder */
383
387
  searchPlaceholder: _angular_core.InputSignal<string>;
384
- /** Texto cuando no hay opciones tras filtrar */
388
+ /** Texto cuando no hay opciones tras filtrar / Text when no options remain after filtering */
385
389
  noResultsMessage: _angular_core.InputSignal<string>;
386
- /** Texto del botón de limpiar todas las selecciones */
390
+ /** Texto del botón de limpiar todas las selecciones / Button text to clear all selections */
387
391
  clearAllLabel: _angular_core.InputSignal<string>;
388
- /** Muestra un botón × en el trigger para limpiar la selección de una vez */
392
+ /** Muestra un botón × en el trigger para limpiar la selección de una vez / Shows a × button in the trigger to clear the selection at once */
389
393
  clearable: _angular_core.InputSignal<boolean>;
390
- /** Aria-label del botón clear que aparece en el trigger */
394
+ /** Aria-label del botón clear que aparece en el trigger / Aria-label for the clear button shown in the trigger */
391
395
  clearAriaLabel: _angular_core.InputSignal<string>;
396
+ /**
397
+ * Sincroniza los valores seleccionados con este query param de la URL.
398
+ * Los valores se codifican como lista separada por comas: `?{urlParam}=a,b,c`.
399
+ * Pasar `null` (default) deshabilita la sincronización.
400
+ */
401
+ urlParam: _angular_core.InputSignal<string | null>;
402
+ /**
403
+ * Emite el array de NeuSelectOption completo (incluyendo data) al cambiar la selección.
404
+ * Emite [] al limpiar toda la selección.
405
+ * Los valores de ngModel / formControl siguen siendo string[].
406
+ */
407
+ readonly selectionChange: _angular_core.OutputEmitterRef<NeuSelectOption[]>;
392
408
  protected readonly _values: _angular_core.WritableSignal<string[]>;
393
409
  readonly isOpen: _angular_core.WritableSignal<boolean>;
394
410
  readonly searchQuery: _angular_core.WritableSignal<string>;
@@ -407,9 +423,9 @@ declare class NeuMultiselectComponent implements ControlValueAccessor {
407
423
  protected labelFor(value: string): string;
408
424
  protected isSelected(value: string): boolean;
409
425
  protected toggle(): void;
410
- /** Abre el panel y mueve el foco al primer item */
426
+ /** Abre el panel y mueve el foco al primer item / Opens the panel and moves focus to the first item */
411
427
  onTriggerKey(event: Event): void;
412
- /** Navega entre opciones con flechas */
428
+ /** Navega entre opciones con flechas / Navigates between options with arrows */
413
429
  focusOptionByIndex(event: Event, current: NeuSelectOption, dir: 1 | -1): void;
414
430
  protected close(): void;
415
431
  protected toggleOption(option: NeuSelectOption): void;
@@ -418,16 +434,16 @@ declare class NeuMultiselectComponent implements ControlValueAccessor {
418
434
  protected toggleChipMode(event: MouseEvent): void;
419
435
  protected onDocumentClick(event: MouseEvent): void;
420
436
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuMultiselectComponent, never>;
421
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuMultiselectComponent, "neu-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; }, {}, ["itemTpl"], never, true, never>;
437
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuMultiselectComponent, "neu-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl"], never, true, never>;
422
438
  }
423
439
 
424
- /** Token para que neu-radio encuentre a su grupo padre */
440
+ /** Token para que neu-radio encuentre a su grupo padre / Token for neu-radio to find its parent group */
425
441
  declare const NEU_RADIO_GROUP: InjectionToken<NeuRadioGroupComponent>;
426
442
  declare class NeuRadioGroupComponent implements ControlValueAccessor {
427
443
  readonly direction: _angular_core.InputSignal<"row" | "column">;
428
- /** Etiqueta accesible del grupo (WCAG 4.1.2). Usar cuando no hay <legend> visible. */
444
+ /** Etiqueta accesible del grupo (WCAG 4.1.2). Usar cuando no hay <legend> visible. / Accessible label for the group (WCAG 4.1.2). Use when there is no visible <legend>. */
429
445
  readonly ariaLabel: _angular_core.InputSignal<string>;
430
- /** Nombre HTML compartido por todos los neu-radio hijos — garantiza la exclusión mutua nativa */
446
+ /** Nombre HTML compartido por todos los neu-radio hijos — garantiza la exclusión mutua nativa / HTML name shared by all child neu-radio — guarantees native mutual exclusion */
431
447
  readonly _name: string;
432
448
  readonly _value: _angular_core.WritableSignal<unknown>;
433
449
  readonly _isDisabled: _angular_core.WritableSignal<boolean>;
@@ -456,7 +472,7 @@ declare class NeuRadioComponent {
456
472
  readonly disabled: _angular_core.InputSignal<boolean>;
457
473
  readonly group: _neural_ui_core.NeuRadioGroupComponent;
458
474
  readonly _id: string;
459
- /** Toma el nombre del grupo padre — así todos los radios del grupo comparten el mismo `name` nativo */
475
+ /** Toma el nombre del grupo padre — así todos los radios del grupo comparten el mismo `name` nativo / Takes the parent group name — so all radios in the group share the same native `name` */
460
476
  readonly _groupName: string;
461
477
  readonly isChecked: _angular_core.Signal<boolean>;
462
478
  readonly isDisabled: _angular_core.Signal<boolean>;
@@ -520,34 +536,48 @@ declare class NeuSelectSelectedDirective {
520
536
  */
521
537
  declare class NeuSelectComponent implements ControlValueAccessor {
522
538
  private readonly elementRef;
539
+ private readonly _urlState;
540
+ constructor();
523
541
  /** @internal — ID \u00fanico para asociar label con trigger */
524
542
  readonly _triggerId: string;
525
- /** Template personalizado para cada opción del dropdown */
543
+ /** Template personalizado para cada opción del dropdown / Custom template for each dropdown option */
526
544
  readonly itemTpl: _angular_core.Signal<NeuSelectItemDirective | undefined>;
527
- /** Template personalizado para el valor seleccionado en el trigger */
545
+ /** Template personalizado para el valor seleccionado en el trigger / Custom template for the selected value in the trigger */
528
546
  readonly selectedItemTpl: _angular_core.Signal<NeuSelectSelectedDirective | undefined>;
529
- /** Opciones del dropdown */
547
+ /** Opciones del dropdown / Dropdown options */
530
548
  options: _angular_core.InputSignal<NeuSelectOption[]>;
531
- /** Texto del floating label */
549
+ /** Texto del floating label / Floating label text */
532
550
  label: _angular_core.InputSignal<string>;
533
- /** Placeholder cuando no hay selección */
551
+ /** Placeholder cuando no hay selección / Placeholder when there is no selection */
534
552
  placeholder: _angular_core.InputSignal<string>;
535
- /** Mensaje de error */
553
+ /** Mensaje de error / Error message */
536
554
  errorMessage: _angular_core.InputSignal<string>;
537
- /** Deshabilita el select */
555
+ /** Deshabilita el select / Disables the select */
538
556
  disabled: _angular_core.InputSignal<boolean>;
539
- /** Muestra el label como flotante (true) o como label estático encima (false, por defecto) */
557
+ /** Muestra el label como flotante (true) o como label estático encima (false, por defecto) / Shows the label as floating (true) or static above (false, default) */
540
558
  floatingLabel: _angular_core.InputSignal<boolean>;
541
- /** Activa input de búsqueda/filtro en el panel */
559
+ /** Activa input de búsqueda/filtro en el panel / Activates the search/filter input in the panel */
542
560
  searchable: _angular_core.InputSignal<boolean>;
543
- /** Placeholder del input de búsqueda */
561
+ /** Placeholder del input de búsqueda / Search input placeholder */
544
562
  searchPlaceholder: _angular_core.InputSignal<string>;
545
- /** Muestra un botón para limpiar la selección */
563
+ /** Muestra un botón para limpiar la selección / Shows a button to clear the selection */
546
564
  clearable: _angular_core.InputSignal<boolean>;
547
- /** Texto cuando no hay opciones tras filtrar */
565
+ /** Texto cuando no hay opciones tras filtrar / Text when no options remain after filtering */
548
566
  noResultsMessage: _angular_core.InputSignal<string>;
549
- /** Aria-label del botón de limpiar */
567
+ /** Aria-label del botón de limpiar / Aria-label for the clear button */
550
568
  clearAriaLabel: _angular_core.InputSignal<string>;
569
+ /**
570
+ * Sincroniza el valor seleccionado con este query param de la URL.
571
+ * Al seleccionar una opción se añade `?{urlParam}=value` a la URL.
572
+ * Pasar `null` (default) deshabilita la sincronización.
573
+ */
574
+ urlParam: _angular_core.InputSignal<string | null>;
575
+ /**
576
+ * Emite el objeto NeuSelectOption completo (incluyendo data) al seleccionar una opción.
577
+ * Emite null al limpiar la selección.
578
+ * El valor de ngModel / formControl sigue siendo string.
579
+ */
580
+ readonly selectionChange: _angular_core.OutputEmitterRef<NeuSelectOption | null>;
551
581
  protected readonly _value: _angular_core.WritableSignal<string | null>;
552
582
  readonly isOpen: _angular_core.WritableSignal<boolean>;
553
583
  readonly searchQuery: _angular_core.WritableSignal<string>;
@@ -565,15 +595,15 @@ declare class NeuSelectComponent implements ControlValueAccessor {
565
595
  readonly isDisabledFinal: _angular_core.Signal<boolean>;
566
596
  toggle(): void;
567
597
  close(): void;
568
- /** Abre el panel y navega con flechas desde el trigger */
598
+ /** Abre el panel y navega con flechas desde el trigger / Opens the panel and navigates with arrows from the trigger */
569
599
  onTriggerKey(event: Event): void;
570
- /** Navega entre opciones con flechas */
600
+ /** Navega entre opciones con flechas / Navigates between options with arrows */
571
601
  focusOptionByIndex(event: Event, current: NeuSelectOption, dir: 1 | -1): void;
572
602
  clearValue(event: MouseEvent): void;
573
603
  selectOption(option: NeuSelectOption): void;
574
604
  onDocumentClick(event: MouseEvent): void;
575
605
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSelectComponent, never>;
576
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSelectComponent, "neu-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; }, {}, ["itemTpl", "selectedItemTpl"], never, true, never>;
606
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSelectComponent, "neu-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "floatingLabel": { "alias": "floatingLabel"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["itemTpl", "selectedItemTpl"], never, true, never>;
577
607
  }
578
608
 
579
609
  /**
@@ -589,25 +619,25 @@ declare class NeuSelectComponent implements ControlValueAccessor {
589
619
  declare class NeuSliderComponent {
590
620
  private static _idCounter;
591
621
  protected readonly sliderId: string;
592
- /** Valor actual */
622
+ /** Valor actual / Current value */
593
623
  value: _angular_core.InputSignal<number>;
594
- /** Valor mínimo */
624
+ /** Valor mínimo / Minimum value */
595
625
  min: _angular_core.InputSignal<number>;
596
- /** Valor máximo */
626
+ /** Valor máximo / Maximum value */
597
627
  max: _angular_core.InputSignal<number>;
598
- /** Paso */
628
+ /** Paso / Step */
599
629
  step: _angular_core.InputSignal<number>;
600
- /** Etiqueta */
630
+ /** Etiqueta / Label */
601
631
  label: _angular_core.InputSignal<string>;
602
- /** Muestra el valor numerico */
632
+ /** Muestra el valor numerico / Shows the numeric value */
603
633
  showValue: _angular_core.InputSignal<boolean>;
604
- /** Muestra min/mid/max bajo la barra */
634
+ /** Muestra min/mid/max bajo la barra / Shows min/mid/max below the bar */
605
635
  showTicks: _angular_core.InputSignal<boolean>;
606
- /** Unidad a mostrar junto al valor */
636
+ /** Unidad a mostrar junto al valor / Unit to display next to the value */
607
637
  unit: _angular_core.InputSignal<string>;
608
- /** Deshabilitado */
638
+ /** Deshabilitado / Disabled */
609
639
  disabled: _angular_core.InputSignal<boolean>;
610
- /** Emite al mover el slider */
640
+ /** Emite al mover el slider / Emits when the slider moves */
611
641
  valueChange: _angular_core.OutputEmitterRef<number>;
612
642
  readonly fillPercent: _angular_core.Signal<number>;
613
643
  onInput(event: Event): void;
@@ -630,7 +660,7 @@ declare class NeuSwitchComponent implements ControlValueAccessor {
630
660
  readonly disabled: _angular_core.InputSignal<boolean>;
631
661
  readonly _id: string;
632
662
  protected readonly _checked: _angular_core.WritableSignal<boolean>;
633
- /** Estado disabled interno — combina el input `disabled` con el CVA setDisabledState */
663
+ /** Estado disabled interno — combina el input `disabled` con el CVA setDisabledState / Internal disabled state — combines the `disabled` input with CVA setDisabledState */
634
664
  private readonly _cvaDisabled;
635
665
  protected readonly _isDisabled: _angular_core.Signal<boolean>;
636
666
  private _onChange;
@@ -659,7 +689,7 @@ declare class NeuTextareaComponent implements ControlValueAccessor {
659
689
  readonly label: _angular_core.InputSignal<string>;
660
690
  readonly rows: _angular_core.InputSignal<number>;
661
691
  readonly autoResize: _angular_core.InputSignal<boolean>;
662
- /** Permite al usuario redimensionar el campo manualmente (por defecto: true) */
692
+ /** Permite al usuario redimensionar el campo manualmente (por defecto: true) / Allows the user to manually resize the field (default: true) */
663
693
  readonly resizable: _angular_core.InputSignal<boolean>;
664
694
  readonly errorMessage: _angular_core.InputSignal<string>;
665
695
  readonly hint: _angular_core.InputSignal<string>;
@@ -705,27 +735,27 @@ type NeuButtonIconPosition = 'left' | 'right';
705
735
  * son inputs reactivos. El estado se computa automáticamente con computed().
706
736
  */
707
737
  declare class NeuButtonComponent {
708
- /** Variante visual del botón */
738
+ /** Variante visual del botón / Visual button variant */
709
739
  variant: _angular_core.InputSignal<NeuButtonVariant>;
710
- /** Tamaño del botón */
740
+ /** Tamaño del botón / Button size */
711
741
  size: _angular_core.InputSignal<NeuButtonSize>;
712
- /** Deshabilita el botón y bloquea la interacción */
742
+ /** Deshabilita el botón y bloquea la interacción / Disables the button and blocks interaction */
713
743
  disabled: _angular_core.InputSignal<boolean>;
714
- /** Muestra un spinner y deshabilita mientras se procesa */
744
+ /** Muestra un spinner y deshabilita mientras se procesa / Shows a spinner and disables while processing */
715
745
  loading: _angular_core.InputSignal<boolean>;
716
- /** Ocupa el 100% del ancho de su contenedor */
746
+ /** Ocupa el 100% del ancho de su contenedor / Takes up 100% of its container width */
717
747
  fullWidth: _angular_core.InputSignal<boolean>;
718
- /** Nombre del icono Lucide (ej: 'lucideSave', 'lucidePlus') */
748
+ /** Nombre del icono Lucide (ej: 'lucideSave', 'lucidePlus') / Lucide icon name (e.g. 'lucideSave', 'lucidePlus') */
719
749
  icon: _angular_core.InputSignal<string>;
720
750
  /** Posición del icono respecto al texto */
721
751
  iconPosition: _angular_core.InputSignal<NeuButtonIconPosition>;
722
- /** Modo solo-icono: aplica padding cuadrado y oculta el ng-content */
752
+ /** Modo solo-icono: aplica padding cuadrado y oculta el ng-content / Icon-only mode: applies square padding and hides ng-content */
723
753
  iconOnly: _angular_core.InputSignal<boolean>;
724
- /** Etiqueta accesible obligatoria cuando se usa iconOnly (WCAG 4.1.2) */
754
+ /** Etiqueta accesible obligatoria cuando se usa iconOnly (WCAG 4.1.2) / Required accessible label when using iconOnly (WCAG 4.1.2) */
725
755
  ariaLabel: _angular_core.InputSignal<string>;
726
- /** Emite el evento de click cuando el botón está activo */
756
+ /** Emite el evento de click cuando el botón está activo / Emits the click event when the button is active */
727
757
  neuClick: _angular_core.OutputEmitterRef<MouseEvent>;
728
- /** @internal — reenvía el click nativo al output Angular */
758
+ /** @internal — reenvía el click nativo al output Angular / forwards the native click to the Angular output */
729
759
  _onHostClick(event: MouseEvent): void;
730
760
  readonly isDisabled: _angular_core.Signal<boolean>;
731
761
  readonly hasIcon: _angular_core.Signal<boolean>;
@@ -743,20 +773,20 @@ declare class NeuButtonComponent {
743
773
  }
744
774
 
745
775
  interface NeuToggleOption<T = unknown> {
746
- /** Texto visible del botón */
776
+ /** Texto visible del botón / Visible button text */
747
777
  label: string;
748
- /** Valor asociado a esta opción */
778
+ /** Valor asociado a esta opción / Value associated with this option */
749
779
  value: T;
750
- /** Nombre de icono Lucide (opcional) */
780
+ /** Nombre de icono Lucide (opcional) / Lucide icon name (optional) */
751
781
  icon?: string;
752
- /** Deshabilita solo esta opción */
782
+ /** Deshabilita solo esta opción / Disables this option only */
753
783
  disabled?: boolean;
754
784
  }
755
785
  /**
756
786
  * NeuralUI ToggleButtonGroup Component
757
787
  *
758
- * Grupo de botones de selección (single o múltiple).
759
- * Equivalente técnicamente superior al SelectButton de PrimeNG.
788
+ * Grupo de botones de selección (single o múltiple). / Selection button group (single or multiple).
789
+ * Equivalente técnicamente superior al SelectButton de PrimeNG. / Technically superior equivalent to PrimeNG's SelectButton.
760
790
  *
761
791
  * Uso (single):
762
792
  * <neu-toggle-button-group [options]="opts" [(ngModel)]="value" />
@@ -765,7 +795,7 @@ interface NeuToggleOption<T = unknown> {
765
795
  * <neu-toggle-button-group [options]="opts" [multiple]="true" [(ngModel)]="values" />
766
796
  */
767
797
  declare class NeuToggleButtonGroupComponent<T = unknown> implements ControlValueAccessor {
768
- /** Lista de opciones del grupo */
798
+ /** Lista de opciones del grupo / Group option list */
769
799
  options: _angular_core.InputSignal<NeuToggleOption<T>[]>;
770
800
  /**
771
801
  * Permite seleccionar múltiples opciones.
@@ -773,11 +803,11 @@ declare class NeuToggleButtonGroupComponent<T = unknown> implements ControlValue
773
803
  * - true: valor es `T[]`
774
804
  */
775
805
  multiple: _angular_core.InputSignal<boolean>;
776
- /** Tamaño visual */
806
+ /** Tamaño visual / Visual size */
777
807
  size: _angular_core.InputSignal<NeuButtonSize>;
778
- /** Deshabilita todo el grupo */
808
+ /** Deshabilita todo el grupo / Disables the entire group */
779
809
  disabled: _angular_core.InputSignal<boolean>;
780
- /** Emite el nuevo valor al cambiar (útil sin formControl) */
810
+ /** Emite el nuevo valor al cambiar (útil sin formControl) / Emits the new value on change (useful without formControl) */
781
811
  neuChange: _angular_core.OutputEmitterRef<T | T[] | null>;
782
812
  readonly _value: _angular_core.WritableSignal<T | T[] | null>;
783
813
  readonly _isDisabled: _angular_core.WritableSignal<boolean>;
@@ -800,13 +830,13 @@ declare class NeuToggleButtonGroupComponent<T = unknown> implements ControlValue
800
830
  }
801
831
 
802
832
  interface NeuBreadcrumbItem {
803
- /** Etiqueta visible */
833
+ /** Etiqueta visible / Visible label */
804
834
  label: string;
805
- /** Ruta interna (RouterLink) */
835
+ /** Ruta interna (RouterLink) / Internal route (RouterLink) */
806
836
  route?: string | string[];
807
- /** URL externa */
837
+ /** URL externa / External URL */
808
838
  url?: string;
809
- /** Icono Lucide opcional */
839
+ /** Icono Lucide opcional / Optional Lucide icon */
810
840
  icon?: string;
811
841
  }
812
842
  /**
@@ -825,9 +855,9 @@ interface NeuBreadcrumbItem {
825
855
  * ];
826
856
  */
827
857
  declare class NeuBreadcrumbComponent {
828
- /** Lista de ítems de navegación */
858
+ /** Lista de ítems de navegación / Navigation item list */
829
859
  items: _angular_core.InputSignal<NeuBreadcrumbItem[]>;
830
- /** Separador personalizable */
860
+ /** Separador personalizable / Customizable separator */
831
861
  separator: _angular_core.InputSignal<string>;
832
862
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuBreadcrumbComponent, never>;
833
863
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuBreadcrumbComponent, "neu-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -848,11 +878,11 @@ interface NeuNavItem {
848
878
  id: string;
849
879
  label: string;
850
880
  icon: string;
851
- /** Ruta Angular interna (RouterLink). Excluye `href`. */
881
+ /** Ruta Angular interna (RouterLink). Excluye `href`. / Internal Angular route (RouterLink). Excludes `href`. */
852
882
  route?: string;
853
- /** URL externa. Se abre en nueva pestaña. Excluye `route`. */
883
+ /** URL externa. Se abre en nueva pestaña. Excluye `route`. / External URL. Opens in a new tab. Excludes `route`. */
854
884
  href?: string;
855
- /** Ítems hijo (nivel 2). Cada hijo puede tener sus propios `children` (nivel 3). */
885
+ /** Ítems hijo (nivel 2). Cada hijo puede tener sus propios `children` (nivel 3). / Child items (level 2). Each child can have its own `children` (level 3). */
856
886
  children?: NeuNavItem[];
857
887
  badge?: string;
858
888
  badgeVariant?: 'default' | 'success' | 'warning' | 'danger' | 'info';
@@ -861,19 +891,19 @@ interface NeuNavItem {
861
891
  declare class NeuNavComponent {
862
892
  private readonly router;
863
893
  private readonly currentUrl;
864
- /** Lista de ítems de navegación */
894
+ /** Lista de ítems de navegación / Navigation item list */
865
895
  items: _angular_core.InputSignal<NeuNavItem[]>;
866
- /** Estado inicial colapsado */
896
+ /** Estado inicial colapsado / Initial collapsed state */
867
897
  collapsed: _angular_core.InputSignal<boolean>;
868
- /** Muestra el botón de colapsar/expandir */
898
+ /** Muestra el botón de colapsar/expandir / Shows the collapse/expand button */
869
899
  collapsible: _angular_core.InputSignal<boolean>;
870
- /** Etiqueta accesible del <nav> */
900
+ /** Etiqueta accesible del <nav> / Accessible label for the <nav> */
871
901
  ariaLabel: _angular_core.InputSignal<string>;
872
- /** Aria-label del botón cuando el nav está colapsado */
902
+ /** Aria-label del botón cuando el nav está colapsado / Aria-label for the button when the nav is collapsed */
873
903
  expandLabel: _angular_core.InputSignal<string>;
874
- /** Aria-label del botón cuando el nav está expandido */
904
+ /** Aria-label del botón cuando el nav está expandido / Aria-label for the button when the nav is expanded */
875
905
  collapseLabel: _angular_core.InputSignal<string>;
876
- /** Emite cuando cambia el estado colapsado */
906
+ /** Emite cuando cambia el estado colapsado / Emits when the collapsed state changes */
877
907
  collapsedChange: _angular_core.OutputEmitterRef<boolean>;
878
908
  readonly isCollapsed: _angular_core.WritableSignal<boolean>;
879
909
  private readonly openGroups;
@@ -908,15 +938,15 @@ declare class NeuNavComponent {
908
938
  * (pageChange)="currentPage = $event" />
909
939
  */
910
940
  declare class NeuPaginationComponent {
911
- /** Página actual (1-indexed) */
941
+ /** Página actual (1-indexed) / Current page (1-indexed) */
912
942
  page: _angular_core.InputSignal<number>;
913
- /** Total de ítems */
943
+ /** Total de ítems / Total items */
914
944
  total: _angular_core.InputSignal<number>;
915
- /** Ítems por página */
945
+ /** Ítems por página / Items per page */
916
946
  pageSize: _angular_core.InputSignal<number>;
917
- /** Número máximo de botones de página visibles (sin contar anterior/siguiente) */
947
+ /** Número máximo de botones de página visibles (sin contar anterior/siguiente) / Maximum number of visible page buttons (not counting prev/next) */
918
948
  maxVisible: _angular_core.InputSignal<number>;
919
- /** Emite la nueva página al hacer click */
949
+ /** Emite la nueva página al hacer click / Emits the new page on click */
920
950
  pageChange: _angular_core.OutputEmitterRef<number>;
921
951
  readonly totalPages: _angular_core.Signal<number>;
922
952
  readonly pages: _angular_core.Signal<number[]>;
@@ -928,12 +958,12 @@ declare class NeuPaginationComponent {
928
958
  /**
929
959
  * NeuralUI Sidebar Component
930
960
  *
931
- * El estado abierto/cerrado se gestiona automáticamente desde la URL
932
- * via NeuUrlStateService (?menu=open por defecto).
961
+ * El estado abierto/cerrado se gestiona automáticamente desde la URL / The open/closed state is automatically managed from the URL
962
+ * via NeuUrlStateService (?menu=open por defecto). / via NeuUrlStateService (?menu=open by default).
933
963
  *
934
964
  * Modos:
935
- * - overlay (default): panel flotante sobre el contenido con backdrop
936
- * - persistent: sidebar fijo integrado en el layout (desktop)
965
+ * - overlay (default): panel flotante sobre el contenido con backdrop / floating panel above content with backdrop
966
+ * - persistent: sidebar fijo integrado en el layout (desktop) / fixed sidebar integrated in the layout (desktop)
937
967
  *
938
968
  * Uso:
939
969
  * <neu-sidebar urlParam="menu" [persistent]="isDesktop()">
@@ -942,14 +972,14 @@ declare class NeuPaginationComponent {
942
972
  * <div neu-sidebar-footer>...</div>
943
973
  * </neu-sidebar>
944
974
  *
945
- * Abrir desde cualquier parte:
975
+ * Abrir desde cualquier parte: / Open from anywhere:
946
976
  * inject(NeuUrlStateService).setParam('menu', 'open', false);
947
977
  */
948
978
  declare class NeuSidebarComponent {
949
979
  private readonly urlState;
950
- /** Posición del sidebar: izquierda o derecha de la pantalla */
980
+ /** Posición del sidebar: izquierda o derecha de la pantalla / Sidebar position: left or right of the screen */
951
981
  side: _angular_core.InputSignal<"left" | "right">;
952
- /** QueryParam que controla el estado. Default: 'menu' (?menu=open) */
982
+ /** QueryParam que controla el estado. Default: 'menu' (?menu=open) / QueryParam that controls the state. Default: 'menu' (?menu=open) */
953
983
  urlParam: _angular_core.InputSignal<string>;
954
984
  /**
955
985
  * Modo persistente: el sidebar está siempre visible como parte del layout.
@@ -961,30 +991,30 @@ declare class NeuSidebarComponent {
961
991
  * principal y el sidebar persistente no necesita su propio header.
962
992
  */
963
993
  hideHeader: _angular_core.InputSignal<boolean>;
964
- /** Etiqueta accesible para el <aside> */
994
+ /** Etiqueta accesible para el <aside> / Accessible label for the <aside> */
965
995
  ariaLabel: _angular_core.InputSignal<string>;
966
- /** Etiqueta accesible para el botón cerrar */
996
+ /** Etiqueta accesible para el botón cerrar / Accessible label for the close button */
967
997
  closeLabel: _angular_core.InputSignal<string>;
968
- /** Emite cuando el usuario cierra el sidebar (overlay click o botón) */
998
+ /** Emite cuando el usuario cierra el sidebar (overlay click o botón) / Emits when the user closes the sidebar (overlay click or button) */
969
999
  closeRequested: _angular_core.OutputEmitterRef<void>;
970
- /** Signal reactivo: true si el sidebar debe mostrarse */
1000
+ /** Signal reactivo: true si el sidebar debe mostrarse / Reactive signal: true if the sidebar should be shown */
971
1001
  readonly isOpen: _angular_core.Signal<boolean>;
972
- /** Abre el sidebar — añade ?{urlParam}=open a la URL */
1002
+ /** Abre el sidebar — añade ?{urlParam}=open a la URL / Opens the sidebar — adds ?{urlParam}=open to the URL */
973
1003
  open(replaceUrl?: boolean): void;
974
- /** Cierra el sidebar — elimina el parámetro de la URL */
1004
+ /** Cierra el sidebar — elimina el parámetro de la URL / Closes the sidebar — removes the URL parameter */
975
1005
  close(): void;
976
1006
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSidebarComponent, never>;
977
1007
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSidebarComponent, "neu-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; "persistent": { "alias": "persistent"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; }, never, ["[neu-sidebar-header]", "*", "[neu-sidebar-footer]"], true, never>;
978
1008
  }
979
1009
 
980
1010
  interface NeuStepperStep {
981
- /** Etiqueta del paso */
1011
+ /** Etiqueta del paso / Step label */
982
1012
  label: string;
983
- /** Descripción corta opcional */
1013
+ /** Descripción corta opcional / Optional short description */
984
1014
  description?: string;
985
- /** Marca el paso como completado externamente */
1015
+ /** Marca el paso como completado externamente / Marks the step as completed externally */
986
1016
  completed?: boolean;
987
- /** Desactiva el paso */
1017
+ /** Desactiva el paso / Disables the step */
988
1018
  disabled?: boolean;
989
1019
  }
990
1020
  /**
@@ -1000,19 +1030,19 @@ interface NeuStepperStep {
1000
1030
  * </neu-stepper>
1001
1031
  */
1002
1032
  declare class NeuStepperComponent {
1003
- /** Pasos del wizard */
1033
+ /** Pasos del wizard / Wizard steps */
1004
1034
  steps: _angular_core.InputSignal<NeuStepperStep[]>;
1005
- /** Índice del paso activo (0-based) */
1035
+ /** Índice del paso activo (0-based) / Active step index (0-based) */
1006
1036
  activeStep: _angular_core.InputSignal<number>;
1007
- /** Si true, solo permite ir hacia adelante secuencialmente */
1037
+ /** Si true, solo permite ir hacia adelante secuencialmente / If true, only allows moving forward sequentially */
1008
1038
  linear: _angular_core.InputSignal<boolean>;
1009
- /** Emite el nuevo índice al cambiar */
1039
+ /** Emite el nuevo índice al cambiar / Emits the new index on change */
1010
1040
  stepChange: _angular_core.OutputEmitterRef<number>;
1011
- /** Set de pasos completados */
1041
+ /** Set de pasos completados / Set of completed steps */
1012
1042
  private readonly _completed;
1013
1043
  readonly isCompleted: (i: number) => boolean;
1014
1044
  goTo(i: number): void;
1015
- /** Marca el paso actual como completado y avanza al siguiente */
1045
+ /** Marca el paso actual como completado y avanza al siguiente / Marks the current step as completed and advances to the next */
1016
1046
  next(): void;
1017
1047
  prev(): void;
1018
1048
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuStepperComponent, never>;
@@ -1021,20 +1051,20 @@ declare class NeuStepperComponent {
1021
1051
 
1022
1052
  declare const NEU_TABS_CONTEXT: InjectionToken<NeuTabsComponent>;
1023
1053
  interface NeuTab {
1024
- /** ID único de la pestaña — se usa como valor en la URL */
1054
+ /** ID único de la pestaña — se usa como valor en la URL / Unique tab ID — used as the URL value */
1025
1055
  id: string;
1026
- /** Etiqueta visible */
1056
+ /** Etiqueta visible / Visible label */
1027
1057
  label: string;
1028
- /** Badge opcional junto al label */
1058
+ /** Badge opcional junto al label / Optional badge next to the label */
1029
1059
  badge?: string;
1030
- /** Deshabilita la pestaña sin ocultarla */
1060
+ /** Deshabilita la pestaña sin ocultarla / Disables the tab without hiding it */
1031
1061
  disabled?: boolean;
1032
1062
  }
1033
1063
  /**
1034
1064
  * NeuralUI Tabs Component
1035
1065
  *
1036
- * Sistema de pestañas con estado sincronizado a la URL via NeuUrlStateService.
1037
- * El panel activo se determina por ?{tabParam}={tabId}.
1066
+ * Sistema de pestañas con estado sincronizado a la URL via NeuUrlStateService. / Tab system with state synchronized to the URL via NeuUrlStateService.
1067
+ * El panel activo se determina por ?{tabParam}={tabId}. / The active panel is determined by ?{tabParam}={tabId}.
1038
1068
  *
1039
1069
  * Uso:
1040
1070
  * <neu-tabs [tabs]="tabs" tabParam="tab">
@@ -1047,19 +1077,19 @@ declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
1047
1077
  private readonly elRef;
1048
1078
  private resizeObserver?;
1049
1079
  constructor();
1050
- /** Definición de pestañas */
1080
+ /** Definición de pestañas / Tab definitions */
1051
1081
  tabs: _angular_core.InputSignal<NeuTab[]>;
1052
- /** QueryParam que almacena la pestaña activa */
1082
+ /** QueryParam que almacena la pestaña activa / QueryParam that stores the active tab */
1053
1083
  tabParam: _angular_core.InputSignal<string>;
1054
- /** Si true, elimina el padding interno de los paneles */
1084
+ /** Si true, elimina el padding interno de los paneles / If true, removes the internal padding from panels */
1055
1085
  flush: _angular_core.InputSignal<boolean>;
1056
- /** Etiqueta accesible del rol tablist */
1086
+ /** Etiqueta accesible del rol tablist / Accessible label for the tablist role */
1057
1087
  ariaLabel: _angular_core.InputSignal<string>;
1058
- /** Emite al cambiar de pestaña */
1088
+ /** Emite al cambiar de pestaña / Emits when the tab changes */
1059
1089
  tabChange: _angular_core.OutputEmitterRef<string>;
1060
- /** ID de la pestaña activa (de la URL o la primera disponible) */
1090
+ /** ID de la pestaña activa (de la URL o la primera disponible) / Active tab ID (from the URL or the first available) */
1061
1091
  readonly activeTabId: _angular_core.Signal<string>;
1062
- /** Posición del indicador calculada mediante medición DOM */
1092
+ /** Posición del indicador calculada mediante medición DOM / Indicator position calculated via DOM measurement */
1063
1093
  private readonly _indicatorLeft;
1064
1094
  private readonly _indicatorWidth;
1065
1095
  readonly indicatorStyle: _angular_core.Signal<string>;
@@ -1067,7 +1097,7 @@ declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
1067
1097
  ngOnDestroy(): void;
1068
1098
  private _updateIndicator;
1069
1099
  selectTab(tab: NeuTab): void;
1070
- /** Mueve el foco entre tabs con flechas (roving tabindex — WAI-ARIA Tabs Pattern) */
1100
+ /** Mueve el foco entre tabs con flechas (roving tabindex — WAI-ARIA Tabs Pattern) / Moves focus between tabs with arrows (roving tabindex — WAI-ARIA Tabs Pattern) */
1071
1101
  focusTab(event: Event, dir: 1 | -1 | 'first' | 'last'): void;
1072
1102
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTabsComponent, never>;
1073
1103
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTabsComponent, "neu-tabs", never, { "tabs": { "alias": "tabs"; "required": false; "isSignal": true; }; "tabParam": { "alias": "tabParam"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "tabChange": "tabChange"; }, never, ["*"], true, never>;
@@ -1075,15 +1105,15 @@ declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
1075
1105
  /**
1076
1106
  * NeuralUI Tab Panel
1077
1107
  *
1078
- * Panel de contenido asociado a una pestaña de NeuTabsComponent.
1079
- * Solo se renderiza (no oculta con CSS) cuando la pestaña está activa.
1108
+ * Panel de contenido asociado a una pestaña de NeuTabsComponent. / Content panel associated with a NeuTabsComponent tab.
1109
+ * Solo se renderiza (no oculta con CSS) cuando la pestaña está activa. / Only rendered (not hidden with CSS) when the tab is active.
1080
1110
  *
1081
1111
  * Uso: hijo directo de <neu-tabs>
1082
1112
  * <neu-tab-panel tabId="api">...</neu-tab-panel>
1083
1113
  */
1084
1114
  declare class NeuTabPanelComponent {
1085
1115
  private readonly tabs;
1086
- /** ID que debe coincidir con NeuTab.id del padre */
1116
+ /** ID que debe coincidir con NeuTab.id del padre / ID that must match the parent NeuTab.id */
1087
1117
  tabId: _angular_core.InputSignal<string>;
1088
1118
  readonly isActive: _angular_core.Signal<boolean>;
1089
1119
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTabPanelComponent, never>;
@@ -1091,22 +1121,22 @@ declare class NeuTabPanelComponent {
1091
1121
  }
1092
1122
 
1093
1123
  interface NeuAccordionItem {
1094
- /** ID único del panel */
1124
+ /** ID único del panel / Unique panel ID */
1095
1125
  id: string;
1096
- /** Título del encabezado */
1126
+ /** Título del encabezado / Header title */
1097
1127
  title: string;
1098
- /** Contenido del cuerpo (HTML o texto plano) */
1128
+ /** Contenido del cuerpo (HTML o texto plano) / Body content (HTML or plain text) */
1099
1129
  content: string;
1100
- /** Inicia expandido */
1130
+ /** Inicia expandido / Starts expanded */
1101
1131
  expanded?: boolean;
1102
- /** Deshabilita este panel */
1132
+ /** Deshabilita este panel / Disables this panel */
1103
1133
  disabled?: boolean;
1104
1134
  }
1105
1135
  /**
1106
1136
  * NeuralUI Accordion Component
1107
1137
  *
1108
1138
  * Paneles expandibles / colapsables con animación suave.
1109
- * Soporta modo múltiple (varios abiertos a la vez) o exclusivo.
1139
+ * Soporta modo múltiple (varios abiertos a la vez) o exclusivo. / Supports multiple (several open at once) or exclusive mode.
1110
1140
  *
1111
1141
  * Uso:
1112
1142
  * <neu-accordion [items]="items" />
@@ -1114,13 +1144,13 @@ interface NeuAccordionItem {
1114
1144
  */
1115
1145
  declare class NeuAccordionComponent {
1116
1146
  private readonly _sanitizer;
1117
- /** Lista de paneles */
1147
+ /** Lista de paneles / Panel list */
1118
1148
  items: _angular_core.InputSignal<NeuAccordionItem[]>;
1119
- /** Permite varios paneles abiertos a la vez */
1149
+ /** Permite varios paneles abiertos a la vez / Allows multiple panels open at once */
1120
1150
  multiple: _angular_core.InputSignal<boolean>;
1121
- /** Borde exterior alrededor del accordion */
1151
+ /** Borde exterior alrededor del accordion / Outer border around the accordion */
1122
1152
  bordered: _angular_core.InputSignal<boolean>;
1123
- /** Emite el id del panel al abrirse/cerrarse */
1153
+ /** Emite el id del panel al abrirse/cerrarse / Emits the panel id on open/close */
1124
1154
  panelToggle: _angular_core.OutputEmitterRef<{
1125
1155
  id: string;
1126
1156
  expanded: boolean;
@@ -1155,13 +1185,13 @@ type NeuCardPadding = 'none' | 'sm' | 'md' | 'lg';
1155
1185
  * </neu-card>
1156
1186
  */
1157
1187
  declare class NeuCardComponent {
1158
- /** Espaciado interior del cuerpo */
1188
+ /** Espaciado interior del cuerpo / Inner body padding */
1159
1189
  padding: _angular_core.InputSignal<NeuCardPadding>;
1160
- /** Efecto hover con elevación de sombra */
1190
+ /** Efecto hover con elevación de sombra / Hover effect with shadow elevation */
1161
1191
  hoverable: _angular_core.InputSignal<boolean>;
1162
- /** Borde con acento de color primario */
1192
+ /** Borde con acento de color primario / Border with primary color accent */
1163
1193
  bordered: _angular_core.InputSignal<boolean>;
1164
- /** Card compacta sin bordes ni sombras */
1194
+ /** Card compacta sin bordes ni sombras / Compact card without borders or shadows */
1165
1195
  flat: _angular_core.InputSignal<boolean>;
1166
1196
  readonly hostClasses: _angular_core.Signal<{
1167
1197
  'neu-card': boolean;
@@ -1191,7 +1221,7 @@ declare class NeuDividerComponent {
1191
1221
  }
1192
1222
 
1193
1223
  type NeuDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
1194
- /** Datos que se inyectan en el componente del diálogo */
1224
+ /** Datos que se inyectan en el componente del diálogo / Data injected into the dialog component */
1195
1225
  interface NeuDialogData<T = unknown> {
1196
1226
  title?: string;
1197
1227
  data?: T;
@@ -1208,8 +1238,8 @@ declare class NeuDialogService {
1208
1238
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<NeuDialogService>;
1209
1239
  }
1210
1240
  /**
1211
- * NeuDialogComponent — Diálogo accesible con header, body y footer.
1212
- * Úsalo directamente como componente declarativo pasando `open` como signal.
1241
+ * NeuDialogComponent — Diálogo accesible con header, body y footer. / Accessible dialog with header, body and footer.
1242
+ * Úsalo directamente como componente declarativo pasando `open` como signal. / Use it directly as a declarative component passing `open` as a signal.
1213
1243
  *
1214
1244
  * Para uso programático, utiliza NeuDialogService.open().
1215
1245
  *
@@ -1222,17 +1252,17 @@ declare class NeuDialogService {
1222
1252
  * </neu-dialog>
1223
1253
  */
1224
1254
  declare class NeuDialogComponent {
1225
- /** Controla la visibilidad del diálogo. */
1255
+ /** Controla la visibilidad del diálogo. / Controls dialog visibility. */
1226
1256
  open: _angular_core.InputSignal<boolean>;
1227
- /** Título que aparece en el header. */
1257
+ /** Título que aparece en el header. / Title shown in the header. */
1228
1258
  title: _angular_core.InputSignal<string>;
1229
- /** Tamaño del panel: sm | md | lg | xl | full. */
1259
+ /** Tamaño del panel: sm | md | lg | xl | full. / Panel size: sm | md | lg | xl | full. */
1230
1260
  size: _angular_core.InputSignal<NeuDialogSize>;
1231
- /** Si es true, el backdrop y el botón cerrar no funcionan. */
1261
+ /** Si es true, el backdrop y el botón cerrar no funcionan. / If true, the backdrop and close button do not work. */
1232
1262
  disableClose: _angular_core.InputSignal<boolean>;
1233
- /** Emite cuando el usuario cierra el diálogo. */
1263
+ /** Emite cuando el usuario cierra el diálogo. / Emits when the user closes the dialog. */
1234
1264
  closed: _angular_core.OutputEmitterRef<void>;
1235
- /** @internal — ID único para aria-labelledby */
1265
+ /** @internal — ID único para aria-labelledby / Unique ID for aria-labelledby */
1236
1266
  readonly _uid: string;
1237
1267
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuDialogComponent, never>;
1238
1268
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuDialogComponent, "neu-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*", "[neu-dialog-footer]"], true, never>;
@@ -1260,24 +1290,24 @@ declare class NeuTableExpandDirective {
1260
1290
 
1261
1291
  type NeuTableBadgeVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default';
1262
1292
  interface NeuTableBadgeConfig {
1263
- /** Etiqueta a mostrar (si omit, usa el valor bruto) */
1293
+ /** Etiqueta a mostrar (si omit, usa el valor bruto) / Label to display (if omitted, uses the raw value) */
1264
1294
  label?: string;
1265
1295
  variant: NeuTableBadgeVariant;
1266
1296
  }
1267
1297
  interface NeuTableColumn<T = Record<string, unknown>> {
1268
- /** Clave del campo en el objeto de datos */
1298
+ /** Clave del campo en el objeto de datos / Field key in the data object */
1269
1299
  key: string;
1270
- /** Texto del encabezado de columna */
1300
+ /** Texto del encabezado de columna / Column header text */
1271
1301
  header: string;
1272
- /** Ancho fijo (CSS: '120px', '20%', etc.) */
1302
+ /** Ancho fijo (CSS: '120px', '20%', etc.) / Fixed width (CSS: '120px', '20%', etc.) */
1273
1303
  width?: string;
1274
- /** Alineación del contenido */
1304
+ /** Alineación del contenido / Content alignment */
1275
1305
  align?: 'left' | 'center' | 'right';
1276
- /** Renderer personalizado: recibe la fila completa y devuelve texto */
1306
+ /** Renderer personalizado: recibe la fila completa y devuelve texto / Custom renderer: receives the full row and returns text */
1277
1307
  cell?: (row: T) => string;
1278
- /** Clases CSS adicionales para las celdas de esta columna */
1308
+ /** Clases CSS adicionales para las celdas de esta columna / Additional CSS classes for cells in this column */
1279
1309
  cellClass?: string;
1280
- /** Esta columna es ordenable (requiere [sortable]=true en la tabla) */
1310
+ /** Esta columna es ordenable (requiere [sortable]=true en la tabla) / This column is sortable (requires [sortable]=true on the table) */
1281
1311
  sortable?: boolean;
1282
1312
  /**
1283
1313
  * Tipo de renderizado de la celda.
@@ -1337,15 +1367,15 @@ declare class NeuTableComponent {
1337
1367
  searchPlaceholder: _angular_core.InputSignal<string>;
1338
1368
  exactMatchable: _angular_core.InputSignal<boolean>;
1339
1369
  exactMatchLabel: _angular_core.InputSignal<string>;
1340
- /** Aria-label del input de búsqueda */
1370
+ /** Aria-label del input de búsqueda / Aria-label for the search input */
1341
1371
  searchAriaLabel: _angular_core.InputSignal<string>;
1342
- /** Aria-label del botón de limpiar búsqueda */
1372
+ /** Aria-label del botón de limpiar búsqueda / Aria-label for the search clear button */
1343
1373
  clearSearchAriaLabel: _angular_core.InputSignal<string>;
1344
- /** Texto del botón que elimina el filtro activo */
1374
+ /** Texto del botón que elimina el filtro activo / Button text that removes the active filter */
1345
1375
  clearFilterLabel: _angular_core.InputSignal<string>;
1346
- /** Aria-label del botón de página anterior */
1376
+ /** Aria-label del botón de página anterior / Aria-label for the previous page button */
1347
1377
  previousPageAriaLabel: _angular_core.InputSignal<string>;
1348
- /** Aria-label del botón de página siguiente */
1378
+ /** Aria-label del botón de página siguiente / Aria-label for the next page button */
1349
1379
  nextPageAriaLabel: _angular_core.InputSignal<string>;
1350
1380
  sortable: _angular_core.InputSignal<boolean>;
1351
1381
  selectable: _angular_core.InputSignal<boolean>;
@@ -1354,7 +1384,7 @@ declare class NeuTableComponent {
1354
1384
  exportFileName: _angular_core.InputSignal<string>;
1355
1385
  pageSizeOptions: _angular_core.InputSignal<number[]>;
1356
1386
  stickyHeader: _angular_core.InputSignal<boolean>;
1357
- /** Clave del campo que identifica de forma única cada fila */
1387
+ /** Clave del campo que identifica de forma única cada fila / Field key that uniquely identifies each row */
1358
1388
  rowKey: _angular_core.InputSignal<string>;
1359
1389
  pageParam: _angular_core.InputSignal<string>;
1360
1390
  searchParam: _angular_core.InputSignal<string>;
@@ -1413,21 +1443,21 @@ type NeuAvatarStatus = 'online' | 'offline' | 'busy' | 'away' | '';
1413
1443
  * <neu-avatar name="PM" size="lg" color="blue" status="online" />
1414
1444
  */
1415
1445
  declare class NeuAvatarComponent {
1416
- /** URL de la imagen. Si falla la carga, muestra las iniciales. */
1446
+ /** URL de la imagen. Si falla la carga, muestra las iniciales. / Image URL. If loading fails, shows the initials. */
1417
1447
  src: _angular_core.InputSignal<string>;
1418
- /** Texto alternativo de la imagen. */
1448
+ /** Texto alternativo de la imagen. / Image alternative text. */
1419
1449
  alt: _angular_core.InputSignal<string>;
1420
- /** Nombre completo — se usan las iniciales como fallback. */
1450
+ /** Nombre completo — se usan las iniciales como fallback. / Full name — initials are used as fallback. */
1421
1451
  name: _angular_core.InputSignal<string>;
1422
- /** Tamaño: xs (24) | sm (32) | md (40) | lg (48) | xl (64). Por defecto 'md'. */
1452
+ /** Tamaño: xs (24) | sm (32) | md (40) | lg (48) | xl (64). Por defecto 'md'. / Size: xs (24) | sm (32) | md (40) | lg (48) | xl (64). Default 'md'. */
1423
1453
  size: _angular_core.InputSignal<NeuAvatarSize>;
1424
- /** Forma: 'circle' (default) o 'square'. */
1454
+ /** Forma: 'circle' (default) o 'square'. / Shape: 'circle' (default) or 'square'. */
1425
1455
  shape: _angular_core.InputSignal<NeuAvatarShape>;
1426
- /** Color de fondo para iniciales. */
1456
+ /** Color de fondo para iniciales. / Background color for initials. */
1427
1457
  color: _angular_core.InputSignal<NeuAvatarColor>;
1428
- /** Indicador de presencia. */
1458
+ /** Indicador de presencia. / Presence indicator. */
1429
1459
  status: _angular_core.InputSignal<NeuAvatarStatus>;
1430
- /** @internal Imagen fallida */
1460
+ /** @internal Imagen fallida / Failed image */
1431
1461
  protected readonly imgError: _angular_core.WritableSignal<boolean>;
1432
1462
  protected readonly initials: _angular_core.Signal<string>;
1433
1463
  protected readonly hostClasses: _angular_core.Signal<string[]>;
@@ -1440,21 +1470,21 @@ type NeuBadgeSize = 'sm' | 'md';
1440
1470
  /**
1441
1471
  * NeuralUI Badge Component
1442
1472
  *
1443
- * Etiqueta de estado compacta y semántica.
1473
+ * Etiqueta de estado compacta y semántica. / Compact and semantic status label.
1444
1474
  *
1445
1475
  * Uso: <neu-badge variant="success">Activo</neu-badge>
1446
1476
  * <neu-badge variant="danger" [dot]="true">Error</neu-badge>
1447
1477
  */
1448
1478
  declare class NeuBadgeComponent {
1449
- /** Variante semántica */
1479
+ /** Variante semántica / Semantic variant */
1450
1480
  variant: _angular_core.InputSignal<NeuBadgeVariant>;
1451
- /** Tamaño */
1481
+ /** Tamaño / Size */
1452
1482
  size: _angular_core.InputSignal<NeuBadgeSize>;
1453
- /** Muestra un punto de color a la izquierda */
1483
+ /** Muestra un punto de color a la izquierda / Shows a colored dot on the left */
1454
1484
  dot: _angular_core.InputSignal<boolean>;
1455
- /** Estilo con solo borde (outline) sin relleno */
1485
+ /** Estilo con solo borde (outline) sin relleno / Border-only style (outline) without fill */
1456
1486
  outline: _angular_core.InputSignal<boolean>;
1457
- /** Estilo completamente redondeado (pill) */
1487
+ /** Estilo completamente redondeado (pill) / Fully rounded style (pill) */
1458
1488
  pill: _angular_core.InputSignal<boolean>;
1459
1489
  readonly hostClasses: _angular_core.Signal<{
1460
1490
  [x: string]: boolean;
@@ -1487,23 +1517,23 @@ interface NeuChartSeries {
1487
1517
  * />
1488
1518
  */
1489
1519
  declare class NeuChartComponent {
1490
- /** Tipo de gráfica. */
1520
+ /** Tipo de gráfica. / Chart type. */
1491
1521
  type: _angular_core.InputSignal<NeuChartType>;
1492
- /** Series para gráficas de ejes (line, area, bar, pareto…). */
1522
+ /** Series para gráficas de ejes (line, area, bar, pareto…). / Series for axis-based charts (line, area, bar, pareto…). */
1493
1523
  series: _angular_core.InputSignal<NeuChartSeries[]>;
1494
- /** Series para gráficas sin ejes (donut, pie). */
1524
+ /** Series para gráficas sin ejes (donut, pie). / Series for non-axis charts (donut, pie). */
1495
1525
  pieSeries: _angular_core.InputSignal<number[]>;
1496
- /** Etiquetas del eje X. */
1526
+ /** Etiquetas del eje X. / X-axis labels. */
1497
1527
  categories: _angular_core.InputSignal<string[]>;
1498
- /** Etiquetas para donut/pie. */
1528
+ /** Etiquetas para donut/pie. / Labels for donut/pie. */
1499
1529
  labels: _angular_core.InputSignal<string[]>;
1500
- /** Altura en px. */
1530
+ /** Altura en px. / Height in px. */
1501
1531
  height: _angular_core.InputSignal<number>;
1502
- /** Colores custom. Si no se proveen, usa la paleta Neural-Blue. */
1532
+ /** Colores custom. Si no se proveen, usa la paleta Neural-Blue. / Custom colors. If not provided, uses the Neural-Blue palette. */
1503
1533
  colors: _angular_core.InputSignal<string[]>;
1504
- /** Muestra/oculta las etiquetas de datos. */
1534
+ /** Muestra/oculta las etiquetas de datos. / Shows/hides data labels. */
1505
1535
  showDataLabels: _angular_core.InputSignal<boolean>;
1506
- /** Título de la gráfica. */
1536
+ /** Título de la gráfica. / Chart title. */
1507
1537
  title: _angular_core.InputSignal<string>;
1508
1538
  private get _isBar();
1509
1539
  private get _isStacked();
@@ -1672,21 +1702,21 @@ type NeuChipSize = 'sm' | 'md';
1672
1702
  * <neu-chip [selected]="true" (selectedChange)="toggle()">TypeScript</neu-chip>
1673
1703
  */
1674
1704
  declare class NeuChipComponent {
1675
- /** Variante de color */
1705
+ /** Variante de color / Color variant */
1676
1706
  variant: _angular_core.InputSignal<NeuChipVariant>;
1677
- /** Tamaño */
1707
+ /** Tamaño / Size */
1678
1708
  size: _angular_core.InputSignal<NeuChipSize>;
1679
- /** Estado seleccionado */
1709
+ /** Estado seleccionado / Selected state */
1680
1710
  selected: _angular_core.InputSignal<boolean>;
1681
- /** Muestra botón de cierre */
1711
+ /** Muestra botón de cierre / Shows close button */
1682
1712
  removable: _angular_core.InputSignal<boolean>;
1683
- /** Deshabilitado */
1713
+ /** Deshabilitado / Disabled */
1684
1714
  disabled: _angular_core.InputSignal<boolean>;
1685
- /** Aria-label del botón de eliminar */
1715
+ /** Aria-label del botón de eliminar / Aria-label for the delete button */
1686
1716
  removeAriaLabel: _angular_core.InputSignal<string>;
1687
- /** Emite al hacer clic o pulsar espacio/enter */
1717
+ /** Emite al hacer clic o pulsar espacio/enter / Emits on click or space/enter press */
1688
1718
  selectedChange: _angular_core.OutputEmitterRef<boolean>;
1689
- /** Emite al pulsar el botón de cierre */
1719
+ /** Emite al pulsar el botón de cierre / Emits when the close button is pressed */
1690
1720
  removed: _angular_core.OutputEmitterRef<void>;
1691
1721
  readonly hostClasses: _angular_core.Signal<{
1692
1722
  [x: string]: boolean;
@@ -1716,17 +1746,17 @@ declare class NeuChipComponent {
1716
1746
  */
1717
1747
  declare class NeuCodeBlockComponent {
1718
1748
  private readonly doc;
1719
- /** Código fuente a mostrar */
1749
+ /** Código fuente a mostrar / Source code to display */
1720
1750
  code: _angular_core.InputSignal<string>;
1721
- /** Nombre del lenguaje (decorativo) */
1751
+ /** Nombre del lenguaje (decorativo) / Language name (decorative) */
1722
1752
  lang: _angular_core.InputSignal<string>;
1723
- /** Texto del botón cuando no se ha copiado */
1753
+ /** Texto del botón cuando no se ha copiado / Button text when not yet copied */
1724
1754
  copyLabel: _angular_core.InputSignal<string>;
1725
- /** Texto del botón tras copiar */
1755
+ /** Texto del botón tras copiar / Button text after copying */
1726
1756
  copiedLabel: _angular_core.InputSignal<string>;
1727
- /** Aria-label del botón copiar */
1757
+ /** Aria-label del botón copiar / Aria-label for the copy button */
1728
1758
  copyAriaLabel: _angular_core.InputSignal<string>;
1729
- /** Aria-label del botón tras copiar */
1759
+ /** Aria-label del botón tras copiar / Aria-label for the button after copying */
1730
1760
  copiedAriaLabel: _angular_core.InputSignal<string>;
1731
1761
  protected readonly copied: _angular_core.WritableSignal<boolean>;
1732
1762
  private _copyTimer?;
@@ -1749,17 +1779,17 @@ declare class NeuCodeBlockComponent {
1749
1779
  * />
1750
1780
  */
1751
1781
  declare class NeuEmptyStateComponent {
1752
- /** Nombre del icono Lucide registrado con provideIcons(). */
1782
+ /** Nombre del icono Lucide registrado con provideIcons(). / Lucide icon name registered with provideIcons(). */
1753
1783
  icon: _angular_core.InputSignal<string>;
1754
- /** Tamaño del icono. Por defecto 3rem. */
1784
+ /** Tamaño del icono. Por defecto 3rem. / Icon size. Default 3rem. */
1755
1785
  iconSize: _angular_core.InputSignal<string>;
1756
- /** Título principal del estado vacío. */
1786
+ /** Título principal del estado vacío. / Main title of the empty state. */
1757
1787
  title: _angular_core.InputSignal<string>;
1758
- /** Descripción secundaria opcional. */
1788
+ /** Descripción secundaria opcional. / Optional secondary description. */
1759
1789
  description: _angular_core.InputSignal<string>;
1760
- /** Texto del botón de acción. Si está vacío, no se muestra el botón. */
1790
+ /** Texto del botón de acción. Si está vacío, no se muestra el botón. / Action button text. If empty, the button is not shown. */
1761
1791
  actionLabel: _angular_core.InputSignal<string>;
1762
- /** Emite cuando el usuario hace clic en el botón de acción. */
1792
+ /** Emite cuando el usuario hace clic en el botón de acción. / Emits when the user clicks the action button. */
1763
1793
  action: _angular_core.OutputEmitterRef<void>;
1764
1794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuEmptyStateComponent, never>;
1765
1795
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuEmptyStateComponent, "neu-empty-state", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; }, { "action": "action"; }, never, never, true, never>;
@@ -1777,7 +1807,7 @@ declare class NeuEmptyStateComponent {
1777
1807
  * <neu-icon name="lucideAlertCircle" size="1rem" />
1778
1808
  */
1779
1809
  declare class NeuIconComponent {
1780
- /** Nombre del icono registrado con provideIcons() */
1810
+ /** Nombre del icono registrado con provideIcons() / Icon name registered with provideIcons() */
1781
1811
  name: _angular_core.InputSignal<string>;
1782
1812
  /**
1783
1813
  * Grosor del trazo. Default '2' para estética fina y técnica.
@@ -1789,7 +1819,7 @@ declare class NeuIconComponent {
1789
1819
  * Si no se especifica, usa la variable CSS `--neu-icon-size` (1.25rem por defecto).
1790
1820
  */
1791
1821
  size: _angular_core.InputSignal<string>;
1792
- /** Tamaño resuelto: usa el input `size` o cae al token CSS. */
1822
+ /** Tamaño resuelto: usa el input `size` o cae al token CSS. / Resolved size: uses the `size` input or falls back to the CSS token. */
1793
1823
  readonly resolvedSize: _angular_core.Signal<string>;
1794
1824
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuIconComponent, never>;
1795
1825
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuIconComponent, "neu-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -1808,17 +1838,17 @@ type NeuProgressVariant = 'primary' | 'success' | 'warning' | 'danger';
1808
1838
  * <neu-progress-bar [indeterminate]="true" />
1809
1839
  */
1810
1840
  declare class NeuProgressBarComponent {
1811
- /** Valor de 0 a 100 */
1841
+ /** Valor de 0 a 100 / Value from 0 to 100 */
1812
1842
  value: _angular_core.InputSignal<number>;
1813
- /** Variante de color */
1843
+ /** Variante de color / Color variant */
1814
1844
  variant: _angular_core.InputSignal<NeuProgressVariant>;
1815
- /** Etiqueta descriptiva sobre la barra */
1845
+ /** Etiqueta descriptiva sobre la barra / Descriptive label above the bar */
1816
1846
  label: _angular_core.InputSignal<string>;
1817
- /** Muestra el % a la derecha */
1847
+ /** Muestra el % a la derecha / Shows the % on the right */
1818
1848
  showValue: _angular_core.InputSignal<boolean>;
1819
- /** Modo indeterminado (animación continua) */
1849
+ /** Modo indeterminado (animación continua) / Indeterminate mode (continuous animation) */
1820
1850
  indeterminate: _angular_core.InputSignal<boolean>;
1821
- /** Altura de la barra */
1851
+ /** Altura de la barra / Bar height */
1822
1852
  size: _angular_core.InputSignal<"sm" | "md" | "lg">;
1823
1853
  readonly clampedValue: _angular_core.Signal<number>;
1824
1854
  readonly hostClasses: _angular_core.Signal<string>;
@@ -1838,13 +1868,13 @@ declare class NeuProgressBarComponent {
1838
1868
  */
1839
1869
  declare class NeuRatingComponent {
1840
1870
  protected readonly Math: Math;
1841
- /** Valor actual (1 a stars) */
1871
+ /** Valor actual (1 a stars) / Current value (1 to stars) */
1842
1872
  value: _angular_core.InputSignal<number>;
1843
- /** Número de estrellas */
1873
+ /** Número de estrellas / Number of stars */
1844
1874
  stars: _angular_core.InputSignal<number>;
1845
- /** Modo solo lectura */
1875
+ /** Modo solo lectura / Read-only mode */
1846
1876
  readonly: _angular_core.InputSignal<boolean>;
1847
- /** Emite el nuevo valor al seleccionar */
1877
+ /** Emite el nuevo valor al seleccionar / Emits the new value on selection */
1848
1878
  valueChange: _angular_core.OutputEmitterRef<number>;
1849
1879
  protected readonly hovered: _angular_core.WritableSignal<number | null>;
1850
1880
  readonly starsArray: _angular_core.Signal<number[]>;
@@ -1893,17 +1923,17 @@ type NeuSpinnerSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info';
1893
1923
  * <neu-spinner color="#ff6b35" strokeWidth="6" />
1894
1924
  */
1895
1925
  declare class NeuSpinnerComponent {
1896
- /** Variante de color semántica */
1926
+ /** Variante de color semántica / Semantic color variant */
1897
1927
  severity: _angular_core.InputSignal<NeuSpinnerSeverity>;
1898
- /** Color CSS directo — sobreescribe severity */
1928
+ /** Color CSS directo — sobreescribe severity / Direct CSS color — overrides severity */
1899
1929
  color: _angular_core.InputSignal<string>;
1900
- /** Grosor del trazo SVG (unidades SVG) */
1930
+ /** Grosor del trazo SVG (unidades SVG) / SVG stroke width (SVG units) */
1901
1931
  strokeWidth: _angular_core.InputSignal<string>;
1902
- /** Tamaño del spinner (CSS: '40px', '2rem', etc.) */
1932
+ /** Tamaño del spinner (CSS: '40px', '2rem', etc.) / Spinner size (CSS: '40px', '2rem', etc.) */
1903
1933
  size: _angular_core.InputSignal<string>;
1904
- /** Duración de la animación de rotación */
1934
+ /** Duración de la animación de rotación / Rotation animation duration */
1905
1935
  animationDuration: _angular_core.InputSignal<string>;
1906
- /** Texto accesible para lectores de pantalla */
1936
+ /** Texto accesible para lectores de pantalla / Accessible text for screen readers */
1907
1937
  ariaLabel: _angular_core.InputSignal<string>;
1908
1938
  readonly _severityColor: _angular_core.Signal<string>;
1909
1939
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSpinnerComponent, never>;
@@ -1911,21 +1941,21 @@ declare class NeuSpinnerComponent {
1911
1941
  }
1912
1942
 
1913
1943
  interface NeuSplitButtonAction {
1914
- /** Identificador único de la acción */
1944
+ /** Identificador único de la acción / Unique action identifier */
1915
1945
  id: string;
1916
- /** Texto visible */
1946
+ /** Texto visible / Visible text */
1917
1947
  label: string;
1918
- /** Icono opcional (SVG string o nombre) */
1948
+ /** Icono opcional (SVG string o nombre) / Optional icon (SVG string or name) */
1919
1949
  icon?: string;
1920
- /** Deshabilita esta acción individualmente */
1950
+ /** Deshabilita esta acción individualmente / Disables this action individually */
1921
1951
  disabled?: boolean;
1922
- /** Separador visual encima de este item */
1952
+ /** Separador visual encima de este item / Visual separator above this item */
1923
1953
  divider?: boolean;
1924
1954
  }
1925
1955
  /**
1926
1956
  * NeuralUI SplitButton Component
1927
1957
  *
1928
- * Botón principal con un dropdown de acciones adicionales.
1958
+ * Botón principal con un dropdown de acciones adicionales. / Primary button with a dropdown of additional actions.
1929
1959
  *
1930
1960
  * Uso:
1931
1961
  * <neu-split-button
@@ -1937,25 +1967,25 @@ interface NeuSplitButtonAction {
1937
1967
  */
1938
1968
  declare class NeuSplitButtonComponent {
1939
1969
  private readonly el;
1940
- /** Texto del botón principal */
1970
+ /** Texto del botón principal / Primary button text */
1941
1971
  label: _angular_core.InputSignal<string>;
1942
- /** Variante visual */
1972
+ /** Variante visual / Visual variant */
1943
1973
  variant: _angular_core.InputSignal<NeuButtonVariant>;
1944
- /** Tamaño */
1974
+ /** Tamaño / Size */
1945
1975
  size: _angular_core.InputSignal<NeuButtonSize>;
1946
- /** Deshabilita todo el componente */
1976
+ /** Deshabilita todo el componente / Disables the entire component */
1947
1977
  disabled: _angular_core.InputSignal<boolean>;
1948
- /** Muestra spinner en el botón principal */
1978
+ /** Muestra spinner en el botón principal / Shows spinner on the primary button */
1949
1979
  loading: _angular_core.InputSignal<boolean>;
1950
- /** Acciones del dropdown */
1980
+ /** Acciones del dropdown / Dropdown actions */
1951
1981
  actions: _angular_core.InputSignal<NeuSplitButtonAction[]>;
1952
- /** Aria-label del botón de desplegable */
1982
+ /** Aria-label del botón de desplegable / Aria-label for the dropdown button */
1953
1983
  moreActionsAriaLabel: _angular_core.InputSignal<string>;
1954
- /** Aria-label del menú desplegable */
1984
+ /** Aria-label del menú desplegable / Aria-label for the dropdown menu */
1955
1985
  actionsAriaLabel: _angular_core.InputSignal<string>;
1956
- /** Emite al hacer click en el botón principal */
1986
+ /** Emite al hacer click en el botón principal / Emits on primary button click */
1957
1987
  primaryClick: _angular_core.OutputEmitterRef<MouseEvent>;
1958
- /** Emite al seleccionar una acción del dropdown */
1988
+ /** Emite al seleccionar una acción del dropdown / Emits when a dropdown action is selected */
1959
1989
  actionClick: _angular_core.OutputEmitterRef<NeuSplitButtonAction>;
1960
1990
  readonly isOpen: _angular_core.WritableSignal<boolean>;
1961
1991
  readonly isDisabled: _angular_core.Signal<boolean>;
@@ -1985,21 +2015,21 @@ type NeuStatsTrend = 'up' | 'down' | 'neutral';
1985
2015
  * />
1986
2016
  */
1987
2017
  declare class NeuStatsCardComponent {
1988
- /** Título o etiqueta de la métrica. */
2018
+ /** Título o etiqueta de la métrica. / Metric title or label. */
1989
2019
  title: _angular_core.InputSignal<string>;
1990
- /** Valor principal formateado (p.ej. "$12,450" o "98.2%"). */
2020
+ /** Valor principal formateado (p.ej. "$12,450" o "98.2%"). / Main formatted value (e.g. "$12,450" or "98.2%"). */
1991
2021
  value: _angular_core.InputSignal<string>;
1992
- /** Cambio porcentual o absoluto (p.ej. "+12.5%" o "-3"). */
2022
+ /** Cambio porcentual o absoluto (p.ej. "+12.5%" o "-3"). / Percentage or absolute change (e.g. "+12.5%" or "-3"). */
1993
2023
  change: _angular_core.InputSignal<string>;
1994
- /** Dirección del cambio. Afecta el color del change. */
2024
+ /** Dirección del cambio. Afecta el color del change. / Change direction. Affects the change color. */
1995
2025
  trend: _angular_core.InputSignal<NeuStatsTrend>;
1996
- /** Texto auxiliar bajo el cambio (p.ej. "vs. mes anterior"). */
2026
+ /** Texto auxiliar bajo el cambio (p.ej. "vs. mes anterior"). / Auxiliary text below the change (e.g. "vs. previous month"). */
1997
2027
  label: _angular_core.InputSignal<string>;
1998
- /** Nombre del icono Lucide para el encabezado. */
2028
+ /** Nombre del icono Lucide para el encabezado. / Lucide icon name for the header. */
1999
2029
  icon: _angular_core.InputSignal<string>;
2000
- /** Array de valores numéricos para la sparkline. Mín. 2 puntos. */
2030
+ /** Array de valores numéricos para la sparkline. Mín. 2 puntos. / Array of numeric values for the sparkline. Min. 2 points. */
2001
2031
  sparkData: _angular_core.InputSignal<number[]>;
2002
- /** @internal Genera los puntos SVG de la sparkline */
2032
+ /** @internal Genera los puntos SVG de la sparkline / Generates the SVG sparkline points */
2003
2033
  protected readonly sparkPoints: _angular_core.Signal<string>;
2004
2034
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuStatsCardComponent, never>;
2005
2035
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuStatsCardComponent, "neu-stats-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "change": { "alias": "change"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "sparkData": { "alias": "sparkData"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -2007,28 +2037,28 @@ declare class NeuStatsCardComponent {
2007
2037
 
2008
2038
  type NeuTimelineItemVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';
2009
2039
  interface NeuTimelineItem {
2010
- /** Etiqueta de tiempo (ej. "Hace 2h", "12 Mar") */
2040
+ /** Etiqueta de tiempo (ej. "Hace 2h", "12 Mar") / Time label (e.g. "2h ago", "Mar 12") */
2011
2041
  time?: string;
2012
- /** Título del evento */
2042
+ /** Título del evento / Event title */
2013
2043
  title: string;
2014
- /** Descripción opcional */
2044
+ /** Descripción opcional / Optional description */
2015
2045
  description?: string;
2016
- /** Variante de color del punto */
2046
+ /** Variante de color del punto / Dot color variant */
2017
2047
  variant?: NeuTimelineItemVariant;
2018
- /** Icono SVG path opcional */
2048
+ /** Icono SVG path opcional / Optional SVG path icon */
2019
2049
  icon?: string;
2020
2050
  }
2021
2051
  /**
2022
2052
  * NeuralUI Timeline Component
2023
2053
  *
2024
- * Lista vertical de eventos cronológicos con línea conectora.
2054
+ * Lista vertical de eventos cronológicos con línea conectora. / Vertical list of chronological events with a connector line.
2025
2055
  *
2026
2056
  * Uso:
2027
2057
  * <neu-timeline [items]="events" />
2028
2058
  * <neu-timeline [items]="events" align="right" />
2029
2059
  */
2030
2060
  declare class NeuTimelineComponent {
2031
- /** Eventos a mostrar */
2061
+ /** Eventos a mostrar / Events to display */
2032
2062
  items: _angular_core.InputSignal<NeuTimelineItem[]>;
2033
2063
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTimelineComponent, never>;
2034
2064
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTimelineComponent, "neu-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -2055,7 +2085,7 @@ declare class NeuToastContainerComponent {
2055
2085
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuToastContainerComponent, "neu-toast-container", never, {}, {}, never, never, true, never>;
2056
2086
  }
2057
2087
 
2058
- /** @internal — componente flotante del tooltip, renderizado vía CDK Portal */
2088
+ /** @internal — componente flotante del tooltip, renderizado vía CDK Portal / floating tooltip component, rendered via CDK Portal */
2059
2089
  declare class NeuTooltipOverlayComponent {
2060
2090
  readonly text: _angular_core.InputSignal<string>;
2061
2091
  readonly tooltipId: _angular_core.InputSignal<string>;
@@ -2082,7 +2112,7 @@ declare class NeuTooltipDirective implements OnDestroy {
2082
2112
  private readonly _elementRef;
2083
2113
  private readonly _injector;
2084
2114
  readonly _tooltipId: string;
2085
- /** Elementos HTML nativamente focusables que no necesitan tabindex extra */
2115
+ /** Elementos HTML nativamente focusables que no necesitan tabindex extra / Natively focusable HTML elements that don't need extra tabindex */
2086
2116
  private readonly _NATIVE_FOCUSABLE;
2087
2117
  protected readonly _needsTabindex: () => boolean;
2088
2118
  private _overlayRef;