Saltar al contenido principal
NeuralUIv1.14.3Nuevo
GitHub
Componente

Instalación

Añade NeuralUI a tu proyecto Angular 19+ en 4 pasos. Antes, comprueba las dependencias que debe aportar tu aplicación.

1

Instalar el paquete

Instala el paquete principal. El siguiente paso explica las dependencias que tu aplicación debe tener.

Bash
npm install @neural-ui/core

Configuración automática y generadores

Los schematics de Angular son aditivos, idempotentes y compatibles con Angular 19 a 22. Conservan la configuración existente y generan bases standalone mobile-first.

Bash
# Add providers and global styles without removing existing configuration
ng add @neural-ui/core --project=my-app

# Generate an additive theme preset
ng generate @neural-ui/core:theme neural-ui-theme --path=src/styles --density=comfortable --theme=high-contrast

# Generate responsive standalone page foundations
ng generate @neural-ui/core:layout app-shell --project=my-app
ng generate @neural-ui/core:dashboard sales --project=my-app
ng generate @neural-ui/core:crud-page customers --project=my-app
Repetir un comando no modifica los archivos existentes. Usa --force únicamente después de revisar el archivo que se sustituirá. Los textos generados son contenido inicial y deben integrarse con el sistema de traducciones de tu aplicación.
ComandoArchivos o configuración generadosOpciones públicasCómo revertir
ng add @neural-ui/coreAñade provideNeuralUI() a los providers raíz y registra el estilo global sin eliminar entradas existentes.--project, --skip-stylesElimina provideNeuralUI() y la entrada de estilos de Neural UI añadida por el comando.
ng generate @neural-ui/core:themeCrea src/styles/neural-ui-theme.scss por defecto con la densidad elegida y el preset opcional de alto contraste.--name, --path, --density, --theme, --forceElimina el archivo SCSS generado y cualquier import o atributo data-neu-* que hayas añadido.
ng generate @neural-ui/core:layout NAMECrea NAME.component.ts, .html y .scss en el directorio de páginas seleccionado con una base responsive de sidebar y toolbar.--project, --path, --forceElimina el directorio generado y cualquier ruta que hayas añadido. Las rutas existentes nunca se modifican automáticamente.
ng generate @neural-ui/core:dashboard NAMECrea NAME.component.ts, .html y .scss con bases responsive para métricas y tarjetas.--project, --path, --forceElimina el directorio generado y cualquier ruta que hayas añadido. Las rutas existentes nunca se modifican automáticamente.
ng generate @neural-ui/core:crud-page NAMECrea NAME.component.ts, .html y .scss con Reactive Forms, input, tabla y acciones iniciales.--project, --path, --forceElimina el directorio generado y cualquier ruta que hayas añadido. Las rutas existentes nunca se modifican automáticamente.

Dependencias de tu aplicación (peer dependencies)

Son paquetes que NeuralUI utiliza, pero no incluye dentro de @neural-ui/core. Tu aplicación debe tenerlos instalados en versiones compatibles. Si ya usas Angular 19, 20, 21 o 22, no necesitas instalar Angular de nuevo.

Usa Angular 19, 20, 21 o 22. Mantén todos los paquetes @angular/* y @angular/cdk en la misma versión minor (por ejemplo, 21.2.x). Con Angular 19, usa @ng-icons 31.4+. Chart.js se incluye bajo MIT y no necesita peer dependencies de gráficas.
PaqueteVersión requeridaCuándo se necesita
@angular/cdk>=19.0.0 <23.0.0Siempre
@ng-icons/core>=31.4.0 <34.0.0Siempre
@ng-icons/lucide>=31.4.0 <34.0.0Siempre
Bash
# Replace 21.2 with the major.minor used by your Angular app
npm install @angular/cdk@~21.2 @ng-icons/core @ng-icons/lucide
2

Configurar proveedores

Registra los iconos y configura los providers en app.config.ts.

TypeScript
// app.config.ts
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { provideIcons } from '@ng-icons/core';
import { lucideCheck, lucideSearch } from '@ng-icons/lucide';
import { provideNeuralUI } from '@neural-ui/core';
import { routes } from './app.routes';

export const appConfig: ApplicationConfig = {
  providers: [
    provideRouter(routes),
    provideNeuralUI(),
    provideIcons({ lucideCheck, lucideSearch }),
  ],
};

Ejemplo de registro de iconos

NeuralUI renderiza los nombres de icono que le pasas, pero tu app sigue necesitando registrar esos iconos Lucide en los providers raíz.

Registra solo los iconos que realmente uses para mantener el bundle más pequeño y evitar avisos de iconos no registrados en runtime.
TypeScript
// Register only the icons you actually use
import { ApplicationConfig } from '@angular/core';
import { provideIcons } from '@ng-icons/core';
import { lucideDownload, lucideSearch } from '@ng-icons/lucide';

export const appConfig: ApplicationConfig = {
  providers: [
    provideIcons({ lucideDownload, lucideSearch }),
  ],
};
3

Importar estilos

Importa los design tokens (obligatorio) y los estilos de cada componente que uses.

SCSS
/* styles.scss — one line to get all components and tokens */
@use '@neural-ui/core/styles' as *;
4

Usar tu primer componente

Importa el componente en tu módulo standalone y úsalo en la plantilla.

TypeScript
// my.component.ts
import { NeuButtonComponent } from '@neural-ui/core/button';

@Component({
  standalone: true,
  imports: [NeuButtonComponent],
  template: `<button neu-button variant="primary">Click me</button>`,
})
export class MyComponent {}
HTML
<!-- app.component.html -->
<button neu-button variant="primary">
  Hello NeuralUI!
</button>
5

Compatibilidad con versiones de Angular

NeuralUI admite Angular 19 a 22 (>=19 y <23). La librería y esta showcase se compilan y prueban habitualmente con Angular 21.2.x; para las demás versiones comprobamos que npm puede instalar un conjunto de dependencias compatible.

AngularEstadoNotas
22.xInstalación verificadanpm puede instalar correctamente Angular 22 y @ng-icons 33.x; Chart no depende de un wrapper específico de Angular.
21.xProbadoMajor usada por la showcase y por la suite principal de build/tests. El entorno actual resuelve Angular 21.2.18 en la showcase y 21.2.17 en el workspace de ui-core.
20.xInstalación verificadanpm puede instalar el conjunto de dependencias compatible. Alinea todos los paquetes @angular/* y @angular/cdk en la misma minor 20.x.
19.xInstalación verificadaVersión mínima declarada. Requiere @ng-icons 31.4+; Chart no depende de un wrapper específico de Angular.
< 19No compatibleNo soportado. Requiere la API de signals completa y compatibilidad zoneless.

Compatibilidad con navegadores

NeuralUI usa solo APIs web estándar y funciona en todos los navegadores modernos evergreen.

Compatibilidad con navegadoresEstadoNotas
Chrome / ChromiumCompatible
FirefoxCompatible
EdgeCompatible
Safari 15+Compatible
Internet ExplorerNo compatibleNo compatible. Angular eliminó el soporte de IE en la v13.

Nota histórica: Angular 21.2.x y FormsModule

Algunas patch releases antiguas de Angular 21.2.x podían romper importaciones de formularios template-driven y mostrar NG3004 en proyectos que usaban FormsModule. No es un problema activo en el entorno actual.

Afectó a Angular 21.2.0 a 21.2.7. El entorno actual usa patches posteriores y ɵNgNoValidate está exportado en @angular/forms.

Error que aparece durante la build

TEXT
NG3004: Unable to import directive ɵNgNoValidate.
The symbol is not exported from @angular/forms/types/forms.d.ts (module '@angular/forms').

Causa raíz

En esas patch releases faltaba exportar ɵNgNoValidate desde @angular/forms/types/forms.d.ts, lo que rompía plantillas basadas en FormsModule.

Arreglo recomendado

Si un consumidor aún ve NG3004, debe actualizar Angular a 21.2.8 o superior dentro de la misma major. En NeuralUI y en la showcase seguimos usando ReactiveFormsModule + FormControl para los ejemplos de formularios.

TypeScript
// Historical: Angular 21.2.0 - 21.2.7 could trigger NG3004
// in legacy template-driven forms. Upgrade to 21.2.8+ or use Reactive Forms.
TypeScript
// After: use ReactiveFormsModule + FormControl
import { FormControl, ReactiveFormsModule } from '@angular/forms';

@Component({
  standalone: true,
  imports: [ReactiveFormsModule],
  template: `<neu-checkbox [formControl]="isChecked" label="Accept"></neu-checkbox>`,
})
export class MyComponent {
  readonly isChecked = new FormControl(false, { nonNullable: true });
}

Siguientes pasos