[Composable] Tab Button Primary

Overview

Tab Button Primary is a single interactive element inside a primary tab list that, when activated, displays its associated content in the main content area, the tab panel. It includes a text label and may include a notification badge to indicate status.


Design

Tab Button Primary is one of three different components that make up the Tabs Pattern and is always shown inside the Tab List. By design the text label is emphasized with uppercase font styling to reinforce the high level of prominence.

  1. Tab Button: Each element that serves as a tab, and is contained within the tab list
 
 

Box Model

Dictated Region (always required):

  • Text Label
 
 

Design Notes

  • Text Label: "b2" Typography Variant, Font-Style: Uppercase
    The Text Label by design is an opinionated configuration and has forced styling and alignment. It has a center aligned placement inside of the rectangle container area.
  • Background: neutral-000 (#FFFFFF)
    The tab button background has a neutral color fill to provide sufficient contrast with the foreground content for proper presentation.
  • Margin/padding-left, right: 16px, top and bottom: 8px
    List does not come with pre-set spacing values in order to optimize the flexibility of content layout.
  • Width flexes based on label
    These dimensions guarantee that the list remains functional and aesthetically pleasing across different devices and screen sizes, adhering to the principles of responsive design.
  • Height fits content
    The list expands to fit the content, ensuring that the design adapts to content volume while maintaining the list's visual integrity.
 

Configurations

The Tab Button Primary includes pre-set configurations to seamlessly integrate with common scenarios. For example, incorporating a notification badge for status or quantity on the Tab Button helps notify and alert users when the tab panel content requires attention and action to be taken.

Notification Badge

  • Agnostic Region (optional), typically contains the notification badge (e.g., dot and count badge)
  • Comes with dictated spacing of 8px that appears in-between it and the text label
 
 

Design Notes

  • Height and Width: 16x16px RT
    Uses the standard design system sizing for visual consistency and alignment throughout applications.
  • Padding-x 8px (dictated)
    The agnostic region has a right placement in the tab button and appears after the text label. It has pre-built spacing to dictate the proper distance between the text label and maintains the padding on the right edge.
 

Required Indication

  • Dictated Region (always required), tab button has a dot badge to indicate "Required" content in the tab panel
  • Comes with dictated spacing of 2px that appears in-between it and the text label
 
 

Design Notes

  • Dot Badge "Required" Indication, Feedback-Error-900
    The dot is an opinionated configuration and has forced styling and alignment. It has a top-right side placement that follows the text label inside of the rectangle container area.
  • Height and Width: 6x6px RT
    Uses the standard design system sizing for visual consistency and alignment throughout applications.
  • Padding-x 2px (dictated)
    The agnostic region has a right placement in the tab button and appears after the text label. It has pre-built spacing to dictate the proper distance between the text label and maintains the padding on the right edge.
 

Responsive

Layout Provider

Validity Criteria:

  • Covers spacing and dimensions: Identifying spacing and dimensions to ensure pieces are A11Y compliant. Use min-width/min-height instead of height/width/max-height/max-width. Define padding/margins in PX, and min-width/min-height in relative measures.
  • Covers responsive/adaptive layout: Given the box models, clearly identify how the layout adapts to breakpoints and responsiveness.
SmallMediumLargeDescription
Add details
 

States

StateGraphicDefault Styling
Idletypography: b2
font-style: uppercase
Selected[vs idle]
font-weight: semi-bold

Underline:
color: brand-600
size: 3px
width: matches text label
position: vertical centered
on tab bar baseline
Focus[vs idle]
border: 2px solid brand-700
Focus + Selected[vs focus]
font-weight: semi-bold
underline size: 3px

Gap between focus border when
combined with selected underline:
gap-size: 4px
Disabled[vs idle]
font-color: neutral-500
Disabled + Hover[vs disabled]
cursor: disabled
Disabled + FocusNANA
Aria-Disabled[vs disabled]
no change
Aria-Disabled + Hover[vs aria-disabled]
font-color: neutral-600
cursor: disabled
Aria-Disabled + Focus[vs aria-disabled]
border: 2px solid brand-700
Hover[vs idle]
font-color: brand-600
cursor: pointer
Hover + Selected[vs selected]
font-color: brand-600
Required / Error[vs idle]
required-dot-size: 6x6px
dot-color: feedback-error-900
Read-onlyNANA
 

Use Cases

Original Scenario (Use Case)Dim Sum Version (Proposed Solution with DS Components)Scenario Description








Primary Tab Buttons:

Top scenario: shown at the top of the page, displays the full page content (page header, data table and filter pills). Used for navigation purpose.

Middle scenario: shown below the Page Header, displays only a portion of the content (data table and filter pills). Tab buttons showing numerical quantities within the text label. Used for progressive disclosure purpose.

Bottom scenario: shown within settings configuration, displays only a portion of the content (left side list and main details on the right side). Tab buttons showing required/error indication. Used for progressive disclosure purpose.
 

Examples

Scenario GraphicScenario Solution (100%)Text Resize and Reflow (200%)Scenario Description
Primary Button:

Tab buttons shown status indicated by a notification badge (e.g., count or dot badge) after the text label.
Text Label with Quantity:

shown below the Page Header, displays only a portion of the content (data table and filter pills). Tab buttons showing numerical quantities within the text label. Used for progressive disclosure purpose.
Configured with Notification Badge:

Tab buttons shown status indicated by a notification badge (e.g., count or dot badge) after the text label.
Required/Error Indication:

Digital Accessibility

The "Tab Button Primary" composable is one of three different components that makes up the Tabs Pattern, it use the following WAI ARIA Pattern and Role:

  • Tab: Each element that serves as a tab has role, and is contained within the element with role tablist.

For the Tab Pattern and keyboard Interaction, View the WAI-ARIA Pattern and Role for Tabs


Variants

Tabs offers one variant out-of-the-box that supports size difference, visual appearance, and intended use.

Scenario GraphicScenario Description
Tab Button Primary Small
Smaller variant of the primary tab button that offers a compact style for smaller spaces.
 

Usage Warnings

This component may have obvious potential to be used incorrectly by UX or product. It is possible there are common implementation pitfalls for app devs as well.

🚧

Pitfalls & Misconceptions

Disabled vs Aria-Disabled State When to Use Them

While these two states share the same visual styling, they have different behaviors and usage. Best practice is to avoid mixing disabled buttons and aria-disabled buttons together in a page UI. This can potentially cause confusing behaviors for the user.

Disabled: this state is used when a tab button needs to be skipped in the page UI. This state ensures the visual is still in place, but does not receive keyboard focus or announcement by a screen reader. It MUST never be used in the same context as the 'Aria-Disabled' state to avoid confusion for the user.

Aria-Disabled: this state is used to ensure a tab button receives tab focus order and has screen reader announcement in place to provide the user with proper context. This interaction state MUST never be used in the same context as the 'Disabled' state to avoid confusion for the user and a11y compliance.

 

Reference

Objective:List external references, guidelines, or documentation that provide further context or information about the component.