Page History
(this page was created automatically. In case of formatting issues, please visit the official Wiki Page)
Tab panel
Link to Figma: tba
Overview
- The tab panel organizes content into multiple tabs on a single page.
- It lets users switch between different views without leaving the page.
- It provides an intuitive way to group related content while saving screen real estate.
- Each tab is a
DynamicTabComponentwith its own content.
...
- setActiveTab — Programmatically activates a specific tab by its ID. This action accepts a parameter with the key of the tab to activate. For example, calling
setActiveTabwith{"key":"detailsTabId"}will switch to the tab with that ID.
Guidelines
[NO DATA AVAILABLE]
Accessibility
...
Usage
- Group related views into switchable tabs by adding each view as an entry in
elements(each entry is a DynamicTabComponent). - Set an author-friendly internal name with
displayName(e.g., “ProductDetailsTabs”). - Hide the entire panel for restricted audiences using
visibilityPolicySetId.
Sizing & Layout
- Add internal spacing with
paddingClass. - Arrange content within each tab using
layout: "vertical"for stacked flows or"horizontal"for side-by-side items. - Keep the number of tabs focused by curating
elements. - Order tabs by importance by arranging the
elementsarray accordingly.
States & Feedback
- Select or change the active tab programmatically via
setActiveTab.
Visibility & Authorization
- Show or hide the entire tab panel using
visibilityPolicySetId.
Content & Localization
- Provide user-facing tab labels via each tab’s
tabNameTranslationsinsideelements. - Keep labels short and scannable; reserve
displayNamefor authoring only.
Dos & Don’st
| Do | Don’t | Article setting(s) |
|---|---|---|
| Set a deliberate default tab on mount. | Rely on whichever tab happens to be first. | events.ON_INIT, setActiveTab |
| Keep tab labels short and localized. | Use long sentences or English-only labels. | elements (per-tab tabNameTranslations) |
| Add only necessary tabs and split topics clearly. | Stuff unrelated content into one tab. | elements |
| Order tabs by importance/task flow. | Leave tabs in arbitrary creation order. | elements |
| Add internal spacing for readability. | Let content touch the panel edges. | paddingClass |
Arrange tab content with layout for readability. | Force dense side-by-side layouts for long text. | layout |
| Gate the entire panel by audience. | Show the panel and rely on empty/disabled inner content. | visibilityPolicySetId |
| Clean up on removal. | Leave timers/listeners running after navigation. | events.ON_DESTROY |
Accessibility
- Localize tab labels using each tab’s
tabNameTranslationsinsideelements.- Keep
tabNameTranslationsshort, plain-language, and avoid emoji-only labels. - Ensure all tabs include
tabNameTranslationsfor every supported locale.
- Keep
- Provide a predictable navigation order by arranging the
elementsarray and selecting the initial tab withsetActiveTabduringON_INIT. - Improve reading comfort using
paddingClassand an appropriatelayout. - Remove ineligible content from view by gating the panel with
visibilityPolicySetId.