Instalación
Añade NeuralUI a tu proyecto Angular 19+ en 4 pasos. Antes, comprueba las dependencias que debe aportar tu aplicación.
Instalar el paquete
Instala el paquete principal. El siguiente paso explica las dependencias que tu aplicación debe tener.
npm install @neural-ui/coreConfiguració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.
# 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| Comando | Archivos o configuración generados | Opciones públicas | Cómo revertir |
|---|---|---|---|
ng add @neural-ui/core | Añade provideNeuralUI() a los providers raíz y registra el estilo global sin eliminar entradas existentes. | --project, --skip-styles | Elimina provideNeuralUI() y la entrada de estilos de Neural UI añadida por el comando. |
ng generate @neural-ui/core:theme | Crea src/styles/neural-ui-theme.scss por defecto con la densidad elegida y el preset opcional de alto contraste. | --name, --path, --density, --theme, --force | Elimina el archivo SCSS generado y cualquier import o atributo data-neu-* que hayas añadido. |
ng generate @neural-ui/core:layout NAME | Crea NAME.component.ts, .html y .scss en el directorio de páginas seleccionado con una base responsive de sidebar y toolbar. | --project, --path, --force | Elimina el directorio generado y cualquier ruta que hayas añadido. Las rutas existentes nunca se modifican automáticamente. |
ng generate @neural-ui/core:dashboard NAME | Crea NAME.component.ts, .html y .scss con bases responsive para métricas y tarjetas. | --project, --path, --force | Elimina 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 NAME | Crea NAME.component.ts, .html y .scss con Reactive Forms, input, tabla y acciones iniciales. | --project, --path, --force | Elimina 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.
| Paquete | Versión requerida | Cuándo se necesita |
|---|---|---|
@angular/cdk | >=19.0.0 <23.0.0 | |
@ng-icons/core | >=31.4.0 <34.0.0 | |
@ng-icons/lucide | >=31.4.0 <34.0.0 |
# Replace 21.2 with the major.minor used by your Angular app
npm install @angular/cdk@~21.2 @ng-icons/core @ng-icons/lucideConfigurar proveedores
Registra los iconos y configura los providers en app.config.ts.
// 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.
// 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 }),
],
};Importar estilos
Importa los design tokens (obligatorio) y los estilos de cada componente que uses.
/* styles.scss — one line to get all components and tokens */
@use '@neural-ui/core/styles' as *;Usar tu primer componente
Importa el componente en tu módulo standalone y úsalo en la plantilla.
// 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 {}<!-- app.component.html -->
<button neu-button variant="primary">
Hello NeuralUI!
</button>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.
| Angular | Estado | Notas |
|---|---|---|
22.x | npm puede instalar correctamente Angular 22 y @ng-icons 33.x; Chart no depende de un wrapper específico de Angular. | |
21.x | Major 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.x | npm puede instalar el conjunto de dependencias compatible. Alinea todos los paquetes @angular/* y @angular/cdk en la misma minor 20.x. | |
19.x | Versión mínima declarada. Requiere @ng-icons 31.4+; Chart no depende de un wrapper específico de Angular. | |
< 19 | No 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 navegadores | Estado | Notas |
|---|---|---|
| Chrome / Chromium | — | |
| Firefox | — | |
| Edge | — | |
| Safari 15+ | — | |
| Internet Explorer | No 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.
Error que aparece durante la build
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.
// 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.// 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 });
}