Componente de 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.
Visión General
Por qué los equipos buscan esta librería
Utiliza este componente de paneles para Angular cuando necesites patrones de tabs, pills y accordion desde una sola API, con paneles enrutados, binding con formularios reactivos, navegación por teclado y theming con variables CSS.
Instalación
npm install ng-hub-ui-panelsIr a
Ideal para
- páginas de ajustes
- tabs de detalle de producto
- accordions de FAQ
- secciones de dashboard
Sobre panels
ng-hub-ui-panels unifica tabs, pills y accordion en un único componente standalone de Angular construido sobre Signals. Soporta paneles enrutados, binding de formularios con ControlValueAccessor, tiras scrollables y verticales, y theming completo con --hub-panels-*. Sustituye a ng-hub-ui-accordion, cuya vista accordion reemplaza manteniendo el contrato de tokens --hub-accordion-*.
Guías de uso
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`.
Ejemplos:
Pestañas básicas
Pestañas básicas
Pills
Pills
Vista de accordion
Vista de accordion
Tarjetas y slots de contenido
Tarjetas y slots de contenido
hubPanelHeader / hubPanelFooter slots work in tabs, pills and accordion too. A single standalone <hub-panel> (no container):
hub-panel renders as a card by itself. Alertas semánticas
Alertas semánticas
An alert can use the same header/footer slots as a card:
Acento semántico del strip
Acento semántico del strip
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.
Ejemplos:
Pestañas verticales
Pestañas verticales
Pestañas justificadas
Pestañas justificadas
Pestañas desplazables
Pestañas desplazables
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.
Ejemplos:
Paneles deshabilitados
Paneles deshabilitados
Paneles eliminables y dinámicos
Paneles eliminables y dinámicos
Plantillas personalizadas
Reemplaza la cabecera de texto plano con cualquier template de Angular —iconos, badges o controles interactivos— mediante la directiva `hubPanelHeading`.
Ejemplos:
Plantillas de cabecera personalizadas
Plantillas de cabecera personalizadas
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.
Ejemplos:
Integración con formularios reactivos
Integración con formularios reactivos
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.
Ejemplos:
Selección múltiple
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.
Múltiples cabeceras verticales
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
Pills
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.
Ejemplos:
Acordeón múltiple y flush
Acordeón múltiple y flush
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.
Ejemplos:
Navegación por teclado
Navegación por teclado
Focus a tab, then use ← → Home End. Press Delete on a removable tab to close it.
Características clave
Cambios recientes
Version 22.1.0 - 6/22/26, 12:00 AM
added: New variant input on <hub-panels> selecting the semantic accent of the navigation strip (active/hover tab, active pill, active accordion header). Built-in variants (primary | success | danger | warning | info) use the exact design-system tints; any custom string is also accepted and derived with color-mix. Defaults to primary.
added: New group-accent tokens --hub-panels-accent, --hub-panels-accent-emphasis and --hub-panels-accent-subtle; the strip active/hover affordances now resolve through this single accent instead of being hard-wired to --hub-sys-color-primary*.
changed: The outer container chrome now inherits from the --hub-container-* base layer (re-base hook), so overriding a container token on a subtree re-bases the panels chrome. No visual change with default tokens.
Version 21.3.0 - 6/16/26, 12:00 AM
added: New alert appearance for a standalone <hub-panel>: appearance="alert" with a variant renders a semantic callout (role="alert").
added: New variant input (primary | success | danger | warning | info) selecting the alert colour; omit it for a neutral alert. Exported HubPanelAppearance and HubPanelVariant types.
added: New alert tokens (--hub-panels-alert-*); each variant re-points them at the --hub-sys-color-<variant>-{subtle,border-subtle,emphasis} family, so the alert inherits every theme and dark mode automatically.
Version 21.2.0 - 6/14/26, 12:00 AM
added: New card visualization (type="card"): a chromeless format with no navigation strip where every <hub-panel> is always visible and styled as a card.
added: A <hub-panel> can now be used standalone, outside any <hub-panels> container, rendering as a card on its own.
added: New content-slot directives hubPanelHeader and hubPanelFooter, rendering header/footer bands in every view, distinct from the navigational hubPanelHeading.
Version 21.1.1 - 6/12/26, 12:00 AM
added: New token: --hub-panels-header-bg, used by the tabs/pills strip background while defaulting to the panel surface.
added: New token: --hub-panels-pill-content-border-width, which controls the bordered card chrome in the pills content area.
changed: The active header background now defaults to --hub-panels-content-bg so the active tab/panel fusion stays aligned when themes retint the content surface.
changed: The pills content area is borderless by default; themes can opt back into a bordered card by overriding --hub-panels-pill-content-border-width.
Version 21.1.0 - 6/11/26, 12:00 AM
added: Multiple selection in the tabs/pills views: each open pane becomes its own bordered box placed next to the others (side by side when horizontal, stacked when vertical), with a per-pane minimum and scroll on overflow.
added: New tokens: --hub-panels-pane-min-width, --hub-panels-pane-min-height, --hub-panels-pane-gap, --hub-panels-nav-content-gap, --hub-panels-pill-gap.
fixed: Accordion content was always empty (two unselected ng-content slots); replaced with a single projection slot.
fixed: tabs and vertical tabs now render as a single bordered box around the strip and content together (not two boxes); pills gain spacing before a bordered content card.
changed: Smooth strip scrolling, not-allowed cursor on disabled headers, and full-width container.
Version 21.0.0 - 6/11/26, 12:00 AM
added: Initial release of ng-hub-ui-panels with tabs, pills and accordion visualizations.
added: ControlValueAccessor integration with single and multiple selection, bindValue and compareWith.
added: Routed panels via routerLink with route/full pathMatch and a <router-outlet> content area.
added: Keyboard navigation (arrows/Home/End/Delete), scrollable, vertical and justified strips.
added: Accordion view with multiple expansion, flush layout and an animated grid-based collapse.
added: Custom header templates through the hubPanelHeading directive and full --hub-panels-* theming.
changed: Supersedes ng-hub-ui-accordion; the accordion view honours the --hub-accordion-* token contract for theme compatibility.