Компонент Tabs, Pills и Accordion для Angular | ng-hub-ui-panels
Компонент панелей контента для Angular, который отображается как вкладки, pills или accordion, с маршрутизацией, реактивными формами, навигацией с клавиатуры и CSS-переменными.
Обзор
Почему команды ищут эту библиотеку
Используйте этот компонент панелей для Angular, когда нужны паттерны вкладок, pills и accordion из единого API, с маршрутизируемыми панелями, привязкой к реактивным формам, навигацией с клавиатуры и тематизацией через CSS-переменные.
Установка
npm install ng-hub-ui-panelsПерейти к
Идеально для
- страницы настроек
- вкладки деталей товара
- accordion для FAQ
- разделы дашборда
О библиотеке panels
ng-hub-ui-panels объединяет вкладки, pills и accordion в единый standalone-компонент Angular, построенный на Signals. Он поддерживает маршрутизируемые панели, привязку форм через ControlValueAccessor, прокручиваемые и вертикальные полосы, а также полную тематизацию через --hub-panels-*. Он заменяет ng-hub-ui-accordion, чьё представление accordion он замещает, сохраняя контракт токенов --hub-accordion-*.
Руководства по возможностям
Визуализации
Один компонент, три представления: классические подчёркнутые tabs, скруглённые pills и стекированные панели раскрытия accordion — переключаемые через один input `type`.
Примеры:
Базовые вкладки
Базовые вкладки
Pills
Pills
Режим accordion
Режим accordion
Карточки и слоты контента
Карточки и слоты контента
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. Семантические оповещения
Семантические оповещения
An alert can use the same header/footer slots as a card:
Семантический акцент панели
Семантический акцент панели
Компоновка полосы
Компонуйте полосу заголовков под любой shell: располагайте её вертикально рядом с содержимым, растягивайте заголовки на всю ширину или делайте переполненную полосу прокручиваемой.
Примеры:
Вертикальные вкладки
Вертикальные вкладки
Выровненные вкладки
Выровненные вкладки
Прокручиваемые вкладки
Прокручиваемые вкладки
Управление панелями
Отключайте отдельные панели и позволяйте пользователям добавлять или удалять панели на лету с помощью элемента ✕ и клавиши Delete.
Примеры:
Отключённые панели
Отключённые панели
Удаляемые и динамические панели
Удаляемые и динамические панели
Пользовательские шаблоны
Замените текстовый заголовок любым Angular-шаблоном — иконками, бейджами или интерактивными элементами управления — через директиву `hubPanelHeading`.
Примеры:
Пользовательские шаблоны заголовков
Пользовательские шаблоны заголовков
Интеграция с формами
Полноценная поддержка ControlValueAccessor привязывает активную панель(и) к реактивным и шаблонным формам Angular.
Примеры:
Интеграция с реактивными формами
Интеграция с реактивными формами
Множественный выбор
С `multiple` несколько панелей могут быть открыты одновременно. В представлении accordion все они разворачиваются; в представлениях tabs/pills каждый активный заголовок начинает собственную видимую панель, тогда как следующие неактивные заголовки остаются сгруппированными над этой панелью до тех пор, пока следующий активный заголовок не начнёт новый блок.
Примеры:
Множественный выбор
Множественный выбор
Click an inactive tab to split the layout into a new panel block. Click an active tab to merge that block back.
Несколько вертикальных заголовков
Несколько вертикальных заголовков
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
Опции accordion
Представление accordion поддерживает несколько одновременно развёрнутых панелей и компоновку `flush` от края до края без внешнего обрамления.
Примеры:
Аккордеон: множественный режим и без рамок
Аккордеон: множественный режим и без рамок
Доступность
Полная навигация с клавиатуры (стрелки, Home, End, Delete), roving tabindex и корректные ARIA-роли как для паттерна tablist, так и для паттерна раскрытия accordion.
Примеры:
Навигация с клавиатуры
Навигация с клавиатуры
Focus a tab, then use ← → Home End. Press Delete on a removable tab to close it.
Ключевые возможности
Последние изменения
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.