Tabs, Pills y Accordion para Angular | ng-hub-ui-panels

Componente de paneles de contenido para Angular que se renderiza como tabs, pills o accordion, con routing, formularios reactivos, navegación por teclado y variables CSS.

Ejemplos interactivos

Explora ejemplos en vivo que muestran cómo se comporta la librería en casos de uso habituales de Angular.

Visualizaciones

Un componente, tres vistas: tabs subrayadas clásicas, pills redondeadas y paneles de divulgación de acordeón apilados, intercambiables mediante un único input `type`.

Pestañas básicas

The first enabled panel is activated automatically.
Switch panels with a click or the arrow keys.
Each panel projects its own content.

Pills

Account settings live here.
Password and two-factor options.
Email and push preferences.

Vista de accordion

Tarjetas y slots de contenido

Project summary
No tabs, no pills — every panel is always visible and styled as a card.
Team
The same hubPanelHeader / hubPanelFooter slots work in tabs, pills and accordion too.

A single standalone <hub-panel> (no container):

Standalone card
Dropped on its own, a hub-panel renders as a card by itself.

Slots de card (variant, flush, fill)

Success
A plain card honours [variant] — one accent tints the whole frame.
Danger
No colour values added — derived by color-mix like the alert.
Info
Set --hub-panels-card-border-style: dashed for an empty-state look.
Normal padding
Padded body — there is a gap around this strip.
Flush
Flush body — this strip runs edge-to-edge to the card sides.
Fill + scroll

Row 1 — the body scrolls; the header stays put.

Row 2 — the body scrolls; the header stays put.

Row 3 — the body scrolls; the header stays put.

Row 4 — the body scrolls; the header stays put.

Row 5 — the body scrolls; the header stays put.

Row 6 — the body scrolls; the header stays put.

Row 7 — the body scrolls; the header stays put.

Row 8 — the body scrolls; the header stays put.

Row 9 — the body scrolls; the header stays put.

Row 10 — the body scrolls; the header stays put.

Row 11 — the body scrolls; the header stays put.

Row 12 — the body scrolls; the header stays put.

Row 13 — the body scrolls; the header stays put.

Row 14 — the body scrolls; the header stays put.

Row 15 — the body scrolls; the header stays put.

Row 16 — the body scrolls; the header stays put.

Row 17 — the body scrolls; the header stays put.

Row 18 — the body scrolls; the header stays put.

Row 19 — the body scrolls; the header stays put.

Row 20 — the body scrolls; the header stays put.

Alertas semánticas

Heads up — a new version is available.
Your changes were saved successfully.
Your trial ends in 3 days.
Something went wrong while saving.
Tip: you can pin panels for quick access.
A neutral notice with no semantic variant.

An alert can use the same header/footer slots as a card:

Payment failed
We couldn't process your card. Update your billing details to keep your subscription active.

Acento semántico del strip

The active tab follows the success accent.
Switch tabs to see the accent move.
No per-colour CSS — one accent drives it all.
The active pill fills with the danger accent.
Hover the inactive pills too.
Everything derives from a single token.
A custom or built-in variant works the same way.
Active pill uses the warning accent.

Tab nav (tira sin contenido)

Overview

The tab strip owns no content — this view is rendered by the host from active().

Selected value: overview

Disposición de la tira

Dispón la tira de cabeceras para adaptarse a cualquier shell: apílala verticalmente junto al contenido, estira las cabeceras para que ocupen todo el ancho, o haz que una tira que desborda sea desplazable.

Pestañas verticales

Your public profile information.
Invoices and payment methods.
Manage members and roles.

Pestañas justificadas

Today's agenda.
The seven-day view.
The full month at a glance.

Pestañas desplazables

Content for section 1.
Content for section 2.
Content for section 3.
Content for section 4.
Content for section 5.
Content for section 6.
Content for section 7.
Content for section 8.

Gestión de paneles

Deshabilita paneles individuales y permite a los usuarios añadir o eliminar paneles sobre la marcha con el control ✕ y la tecla Delete.

Paneles deshabilitados

This panel is selectable.
This panel is disabled.
Arrow keys skip the disabled panel.

Paneles eliminables y dinámicos

Content for Tab 1.
Content for Tab 2.
Content for Tab 3.

Plantillas personalizadas

Reemplaza la cabecera de texto plano con cualquier template de Angular —iconos, badges o controles interactivos— mediante la directiva `hubPanelHeading`.

Plantillas de cabecera personalizadas

Twelve unread messages.
Messages you have sent.
Recently deleted items.

Acciones de fila del acordeón

Integración con formularios

El soporte de primer nivel de ControlValueAccessor vincula el panel o paneles activos a los formularios reactivos y basados en template de Angular.

Integración con formularios reactivos

Light theme preview.
Dark theme preview.
Follows the OS setting.
Selected value: "dark"

Selección múltiple

Con `multiple`, varios paneles pueden estar abiertos a la vez. En la vista de acordeón todos se expanden; en las vistas de tabs/pills, cada cabecera activa inicia su propio panel visible, mientras que las cabeceras inactivas siguientes permanecen agrupadas por encima de ese panel hasta que la siguiente cabecera activa inicia un nuevo bloque.

Selección múltiple

Click an inactive tab to split the layout into a new panel block. Click an active tab to merge that block back.

Key metrics and a quick overview of the account.
Detailed statistics and charts for the period.
A chronological feed of recent activity.
Free-form notes shared with the team.
Open panels: [ "summary", "stats" ]

Múltiples cabeceras verticales

Each active header starts a new row-like vertical block. The blocks stack top-to-bottom, and the whole layout scrolls horizontally only when one row needs more width.

Tabs
Public profile details and biography.
Invoices, payment methods and VAT details.
Members, roles and access levels.
Shared internal notes for the account.
Open tabs: [ "profile", "team" ]
Pills
Open items waiting for review.
Approvals and pending checks.
Publication options and scheduling.
Historical records and exported snapshots.
Open pills: [ "inbox", "publish" ]

Opciones del acordeón

La vista de acordeón admite varios paneles expandidos simultáneamente y un layout `flush` de borde a borde sin marco exterior.

Acordeón múltiple y flush

Standard delivery in 3–5 business days.

Free returns within 30 days.

Accesibilidad

Navegación completa por teclado (flechas, Home, End, Delete), tabindex móvil y roles ARIA correctos tanto para el patrón de tablist como para el de divulgación de acordeón.

Navegación por teclado

Focus a tab, then use ← → Home End. Press Delete on a removable tab to close it.

Use the arrow keys to move focus between headers.
Home and End jump to the first and last enabled header.
Press Delete while focused to remove this panel.