Saltar al contenido principal
Neural UIv2.0.0Documentación
Ver v1 GitHub

Tabs

Alterna entre paneles de contenido relacionados sin salir de la página.

Categoría
Navegación
Import
@neural-ui/core/tabs
Selector
neu-tabs
import { NeuTabsComponent } from '@neural-ui/core/tabs';

Uso

Proporciona tabs con ids estables, etiquetas y, opcionalmente, badge o disabled. Proyecta un neu-tab-panel con un tabId correspondiente por cada pestaña. activeId junto con activeIdChange permite que la aplicación controle la selección; si se omite, initialActiveId es un valor inicial y el componente gestiona la selección. null deja expresamente todos los paneles sin seleccionar. NeuTabLabel personaliza la etiqueta de la pestaña, no el panel.

Ejemplos

Prueba el comportamiento y consulta el código ejecutable en Código.

Ejemplos

Hay tres actualizaciones disponibles.

Usa las flechas para mover el foco. Intro o Espacio activa la pestaña enfocada.

Prueba y configura

Cambia las opciones, prueba el resultado y consulta su template generado. Abre Código para ver la implementación completa.

Prueba y configura

Revisa los datos del pedido antes de continuar.

activeId: summary

template.html
<neu-tabs
  [tabs]="tabs()"
  [activeId]="active()"
  (activeIdChange)="active.set($event)"
  [flush]="false"
  ariaLabel="Secciones del pedido"
>
  <neu-tab-panel tabId="summary">
    <p>Revisa los datos del pedido antes de continuar.</p>
  </neu-tab-panel>
  <neu-tab-panel tabId="activity">
    <p>Hay tres actualizaciones disponibles.</p>
  </neu-tab-panel>
  <neu-tab-panel tabId="archive">
    <p>Contenido archivado</p>
  </neu-tab-panel>
</neu-tabs>

Datos y contenido

activeIdChange propone una clave de pestaña o null. En modo controlado, actualiza activeId para aceptar la propuesta. No cambies entre el modo controlado y el no controlado en la misma instancia.

Accesibilidad y teclado

Las flechas izquierda/derecha, Inicio y Fin mueven el foco entre las pestañas habilitadas. Intro o Espacio activa la pestaña enfocada; mover el foco no cambia la selección. Proporciona un ariaLabel significativo. Las barras estrechas permiten desplazamiento horizontal.

Tecla
Acción
Tab Entra en la lista de pestañas o accede a los controles del panel activo.
ArrowLeft / ArrowRight Mueve el foco entre pestañas habilitadas sin cambiar la selección.
Home Enfoca la primera pestaña habilitada.
End Enfoca la última pestaña habilitada.
Enter Activa la pestaña enfocada.
Space Activa la pestaña enfocada.

API

Los Inputs y Outputs corresponden al paquete Core fijado. Los tipos con nombre enlazan a sus definiciones. Templates incluye ejemplos ejecutables de cada zona disponible.

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
activeIdK | null | undefinedundefined[activeId]ID aplicado; null no selecciona ninguno, undefined habilita el modo no controlado.
ariaLabelstring'Content tabs'[ariaLabel]Nombre accesible de la lista de pestañas.
flushbooleanfalse[flush]Elimina el espacio superior por defecto de los paneles proyectados.
initialActiveIdK | nullnull[initialActiveId]Selección inicial si se omite activeId; null utiliza la primera pestaña habilitada.
tabsreadonly T[][][tabs]Definiciones de pestañas: id único, label, badge y disabled opcionales.

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
activeIdChangeK | null(activeIdChange)="onActiveIdChange($event)"Propone la siguiente clave activa o null; se acepta actualizando activeId.

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
*

Paneles de contenido

Ver ejemplo
Proyección de contenido

Proyecta un TabPanel por cada ID de pestaña.

<ng-content />

Contexto utilizado: —

NeuTabLabelDirective

Etiqueta de pestaña

Ver ejemplo
Directiva pública de template

Usa let-tab y let-active="active" para personalizar la etiqueta; no añadas controles interactivos dentro del botón.

ng-template[neuTabLabel]

Contexto utilizado: $implicit: tab, active: boolean

Cada ejemplo muestra un template diferente. Alterna entre Demo y Código para consultar su implementación, imports y estado.

Paneles de contenido

*

Paneles de contenido

Revisa los datos del pedido antes de continuar.

Etiqueta de pestaña

NeuTabLabelDirective

Etiqueta de pestaña

Revisa los datos del pedido antes de continuar.

Public Types

Abre un tipo para consultar su definición y los campos de sus interfaces.

Estilos y tokens

Utiliza los tokens públicos de superficie, texto, espaciado y foco. Comprueba el contenido en ambos temas y con anchos reducidos.

Tokens específicos

Este componente utiliza tokens compartidos del tema en lugar de tokens específicos.

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-border Bordes normales de controles y celdas Compartido con otros consumidores de Core; limita el cambio a un ámbito. rgba(15, 23, 42, 0.08)
--neu-primary Color de marca en controles activos y énfasis Compartido con otros consumidores de Core; limita el cambio a un ámbito. #007aff
--neu-primary-dark Tono oscuro de marca; texto de Button outline y ghost en el tema claro Compartido con otros consumidores de Core; limita el cambio a un ámbito. #005fcc
--neu-primary-light Tono claro de marca; texto de Button outline y ghost en el tema oscuro Compartido con otros consumidores de Core; limita el cambio a un ámbito. #339dff
--neu-surface Superficie principal del campo, cabecera o control Compartido con otros consumidores de Core; limita el cambio a un ámbito. #ffffff
--neu-surface-2 Superficies secundarias y filas alternas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #f1f5f9
--neu-text Color del texto principal y de los iconos que lo heredan Compartido con otros consumidores de Core; limita el cambio a un ámbito. #0f172a
--neu-font-sans Tipografía del texto Compartido con otros consumidores de Core; limita el cambio a un ámbito. 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif