Usa un botón nativo para una acción inmediata. NeuButton añade inputs signal para tono, variante visual, tamaño, carga y posición del icono sin perder la semántica nativa. Usa un enlace para navegar y un control de selección para elecciones persistentes; este componente no gestiona estado de formulario ni selección.
Usa tone para el color semántico: neutral, success, info, warning o danger. brand sigue disponible para la acción principal. Los seis tonos admiten las variantes solid, outline y ghost. size cambia las dimensiones del control. El estado de carga impide la activación e informa de que la acción está en curso.
size elige las dimensiones sm, md o lg del control; no es un input de ancho. Un Button normal se ajusta al contenido. fullWidth=true hace que ocupe la superficie contenedora.
Para un ancho fijo o responsive de la aplicación, utiliza CSS como inline-size: min(100%, 240px). No existe un input width que conectar. iconOnly usa dimensiones cuadradas según size; separa ese modo de una acción de texto a ancho completo.
Elige una de dos formas de integración: asigna al input icon una clave de aplicación que resuelva provideNeuIconResolver, o coloca un componente de icono o un SVG directamente dentro del botón. La proyección no necesita el input icon ni un resolver de Core. Neural Icons es una opción, no un requisito; Core sigue siendo independiente de la librería de iconos.
Con el input icon, iconPosition selecciona start o end. Con contenido proyectado, coloca el icono antes o después del texto en el template. La clave add también tiene un dibujo de respaldo mínimo en Button que funciona sin resolver; las demás claves de aplicación necesitan un resolver y no cargan automáticamente un catálogo de iconos.
Para una acción solo con icono, usa iconOnly con cualquiera de las dos formas, omite el texto visible y proporciona ariaLabel. iconOnly aplica dimensiones cuadradas; no elimina el contenido proyectado. La demo muestra estas opciones y sus pestañas de TypeScript, HTML y provider contienen el código que las ejecuta.
Iconos
Icono mínimo de Core
La clave add tiene un dibujo de respaldo en Button y funciona sin resolver. No implica que Core incluya un catálogo de iconos.
Input icon y resolver de la aplicación
icon="save" es una clave que resuelve la aplicación. iconPosition coloca ese icono al inicio o al final. La pestaña del provider incluye el registro necesario.
Componente de icono dentro del botón
Aquí se proyecta Neural Icons directamente. También puedes proyectar un componente propio o de otra librería: no necesitas el input icon ni un resolver de Core. El orden del contenido determina la posición.
SVG dentro del botón, sin librería de iconos
El SVG forma parte del contenido del botón. Usa currentColor para heredar su color y aria-hidden="true" cuando el texto ya identifica la acción.
Solo icono: input o contenido proyectado
iconOnly aplica dimensiones cuadradas; no elimina el contenido. Omite el texto visible y proporciona ariaLabel. Estos tres botones usan, respectivamente, el input, Neural Icons proyectado y un SVG proyectado.
Cambia apariencia, texto, icono, ancho y estado de interacción, y copia el código del componente. El resultado utiliza los mismos valores que el template generado. Activa el botón habilitado para ver el contador de neuClick.
Las opciones de ancho distinguen el input fullWidth de Core de un inline-size CSS. Los iconos de aplicación muestran además los providers que necesitan; Add puede usar el fallback sin esa configuración.
Resultado
Código generado
El resultado y el código se actualizan al cambiar las opciones.
Core se encarga de la activación nativa por teclado, los estados deshabilitado/cargando y el atributo de estado ocupado.
Tu aplicación proporciona una etiqueta clara para la acción. En un botón solo con icono, define ariaLabel. Oculta los iconos decorativos proyectados a las tecnologías de asistencia.
Tecla
Acción
Enter
Activa el botón nativo enfocado.
Space
Activa el botón nativo enfocado.
Tab
Mueve el foco hacia o desde un botón habilitado según el orden del documento.
Los inputs configuran el estado aplicado: utiliza [propiedad]="valor" para un valor dinámico o un atributo literal para una cadena fija. Button tiene diez inputs y no mantiene un modelo de valor editable. Su texto visible se proyecta entre las etiquetas de apertura y cierre; no existe un input label.
El output neuClick emite un MouseEvent al activar un botón habilitado. Escúchalo con (neuClick)="save($event)". El evento no gobierna disabled ni loading: tu aplicación gestiona la operación y devuelve el estado actual a Button.
Inputs
Configura el componente con [propiedad]="valor". Tu aplicación proporciona estos valores; el componente no debe reemplazar el estado que le pasas.
Nombre
Tipo
Por defecto
Uso en el template
Descripción
ariaLabel
string
''
[ariaLabel]
Nombre accesible alternativo, obligatorio para una acción solo con icono.
disabled
boolean
false
[disabled]
Bloquea la activación nativa y neuClick.
fullWidth
boolean
false
[fullWidth]
Ajusta el botón al 100% de su contenedor. Para otro ancho, utiliza CSS; no existe un input width.
icon
string | null
null
[icon]
Clave de aplicación (string), no una definición ni un nombre de catálogo incluido. Resuelve claves propias con provideNeuIconResolver; add tiene un fallback mínimo en Button.
iconOnly
boolean
false
[iconOnly]
Utiliza dimensiones cuadradas con un icono del input o un icono proyectado. No elimina el contenido proyectado: omite el texto visible y proporciona un ariaLabel accesible.
Selecciona el tratamiento visual solid, outline o ghost.
Outputs
Escucha un evento con (evento)="handler($event)". La tabla indica qué datos recibe tu función y cómo utilizarlos.
Nombre
Valor emitido
Uso en el template
Descripción
neuClick
MouseEvent
(neuClick)="onNeuClick($event)"
Emite MouseEvent en una activación habilitada. Escúchalo con (neuClick); disabled o loading lo bloquea. Tu aplicación gestiona la acción.
Templates
ng-content proyecta contenido dentro del componente. Los inputs TemplateRef reciben un template; las directivas ng-template identifican templates con un contexto tipado. Una directiva compartida en el entrypoint no es necesariamente un slot de este componente.
Nombre
Mecanismo
Contrato
*
Contenido del botón
Proyección de contenido
El texto y el SVG se proyectan dentro del botón; no requieren un proveedor de iconos.
<ng-content />
Contexto utilizado: —
Ejemplo de uso
El contenido entre las etiquetas del botón es su contenido proyectado. Puedes colocar texto, un componente de icono o un SVG; la sección Iconos muestra esas variantes. Para iconOnly, omite el texto visible y proporciona ariaLabel: el contenido proyectado no se elimina automáticamente.
Personalizar contenido
Public Types
Abre un tipo para consultar su definición y los campos de sus interfaces.
NeuButtonIconPosition.d.ts
import type { NeuButtonIconPosition } from '@neural-ui/core/button';
// Declaración pública (solo referencia)
export type NeuButtonIconPosition = 'start' | 'end';
NeuButtonSize.d.ts
import type { NeuButtonSize } from '@neural-ui/core/button';
// Declaración pública (solo referencia)
export type NeuButtonSize = 'sm' | 'md' | 'lg';
NeuButtonTone.d.ts
import type { NeuButtonTone } from '@neural-ui/core/button';
// Declaración pública (solo referencia)
export type NeuButtonTone = 'neutral' | 'brand' | 'success' | 'info' | 'warning' | 'danger';
NeuButtonVariant.d.ts
import type { NeuButtonVariant } from '@neural-ui/core/button';
// Declaración pública (solo referencia)
export type NeuButtonVariant = 'solid' | 'outline' | 'ghost';
Usa los tokens públicos --neu-button-* siguientes o un preset reutilizable de la guía Temas. Limita los cambios locales a la superficie de la aplicación que quieras personalizar.
Tematización
Tema heredado
Cambio local
Tokens específicos
Token
Efecto
Estado / variante
Valor / origen
Alternativa
--neu-button-background
Fondo de Button con variant="solid" y tone="brand".
solid / brand
var(--neu-primary-solid)Alternativa del componente
--neu-primary-solid
--neu-button-background-hover
Fondo al pasar el puntero sobre Button solid/brand.
solid / brand / hover
var(--neu-primary-solid-hover)Alternativa del componente
--neu-primary-solid-hover
--neu-button-border
Color del borde de Button solid/brand.
solid / brand
var(--neu-primary-solid)Alternativa del componente
--neu-primary-solid
--neu-button-foreground
Color del texto y de los iconos que lo heredan en Button solid/brand.
solid / brand
var(--neu-primary-solid-fg)Alternativa del componente
--neu-primary-solid-fg
Tokens compartidos utilizados
Sobrescríbelos en un contenedor local para afectar a este ejemplo. Una modificación en :root afecta a los demás componentes que utilizan el mismo token.
Token
Efecto aquí
Otros efectos
Valor / alternativa
--neu-error
Color del campo no válido o de la acción de peligro
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#dc2626
--neu-error-bg
Fondo de estados de error o peligro
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#fee2e2
--neu-error-text
Texto de error y de Button danger outline/ghost en ambos temas
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#991b1b
--neu-focus-ring-strong
Tratamiento de foco destacado
Compartido con otros consumidores de Core; limita el cambio a un ámbito.