UNPKG

@shopify/polaris

Version:

Shopify’s product component library

142 lines (110 loc) 3.15 kB
--- name: Tabs category: Navigation keywords: - layout - navigate - organize - list views - list filters - fitted tabs --- # Tabs Use to alternate among related views within the same context. --- ## Purpose Think about the merchant problem this component solves when you’re using it: ### Problem Merchants benefit from several different views into the same or closely related content to accomplish different tasks. They also need to be able to navigate to sub-views inside their current view. ### Solution Tabs are a way to show related subsections of interface in relation to each other and allow merchants to move easily between them. --- ## Best practices Tabs should: - Represent the same kind of content, such as a list-view with different filters applied. Don’t use tabs to group content that is dissimilar. - Only be active one at a time. - Not force merchants to jump back and forth to do a single task. A merchant should be able to complete their work and find what they need under each tab. - Not be used for primary navigation. --- ## Content guidelines ### Tabs Tabs should: - Be clearly labeled to help differentiate the different sections beneath them. - Have short and scannable labels, generally kept to single word. - Relate to the section of Shopify they’re on. Imagine the page section title is an invisible noun after the tab. For example, the tabs for the orders section are: * All * Open * Unfulfilled * Unpaid The tabs for the gift cards section are: * All * New * Partially used * Used * Disabled And for the customers section, the tabs are: * All * New * Returning * Abandoned checkouts * Email subscribers Where possible, follow this pattern when writing tabs. | Prop | Type | Description | | ---- | ---- | ----------- | | children* | React.ReactNode | Content to display in tabs | | selected* | number | Index of selected tab | | tabs* | TabDescriptor[] | List of tabs | | fitted | boolean | Fit tabs to container | | onSelect | function(selectedTabIndex: number) | Callback when tab is selected | ## Examples ### Default tabs Use for most cases, especially when the number of tabs may be more than three. ```jsx <Tabs selected={0} tabs={[ { id: 'all-customers', title: 'All', accessibilityLabel: 'All customers', panelID: 'all-customers-content', }, { id: 'accepts-marketing', title: 'Accepts marketing', panelID: 'accepts-marketing-content', }, { id: 'repeat-customers', title: 'Repeat customers', panelID: 'repeat-customers-content', }, { id: 'prospects', title: 'Prospects', panelID: 'prospects-content', } ]} /> ``` ### Fitted tabs Use when tabs contain a few (2 or 3) items within a narrow column. ```jsx <Tabs fitted selected={0} tabs={[ { id: 'all-customers', title: 'All', accessibilityLabel: 'All customers', panelID: 'all-customers-content', }, { id: 'accepts-marketing', title: 'Accepts marketing', panelID: 'accepts-marketing-content', } ]} /> ```