TabBar

UI Components

The TabBar gives direct access to the key sections of the app, as a bottom bar on mobile and tablet, and as a side rail on desktop.

Introduction

The TabBar is a new generation of navigation. It is not a set of fixed templates: it is a system of structured elements described by a single configuration. Each layout is generated by changing a few key properties, so every variation shares the same structure and behaves consistently on every device.

In the GoodBarber design system, the TabBar is the component users interact with the most. It is designed to stay clear and reachable in every context: anchored at the bottom of the screen on mobile and tablet, and displayed as a vertical rail on desktop.

Anatomy

The TabBar is built on three levels. Each level has its own role, and together they are described by one configuration.

The three levels of the TabBar, and the distinct tab

The three levels of the TabBar, and the distinct tab

Container

The Container is the outer layer. It sets the position of the TabBar on the screen, carries the background and its effects, such as blur or gradient, defines the scroll behavior, and manages the spacing with surrounding components like the mini player or the floating button.

The Container: the outer layer and the spacing it manages

The Container: the outer layer and the spacing it manages

Bar

The Bar is the structure. It holds and distributes the navigation entries, and carries the surface of the component: background, border, shape and shadow. The indicator that marks the selected entry is also carried at the Bar level.

The Bar: the structure and its surface

The Bar: the structure and its surface

Item

The Item is the interactive unit of the navigation: an icon, a label, or both, with an indicator when the item is selected. Each part of the Item is an element of its own and is described separately.

The Item: its parts, spacing and orientation

The Item: its parts, spacing and orientation

Distinct tab

The distinct tab is an Item moved outside the Bar: a highlighted entry, rendered with the button palette of the app theme. It always matches the height of the Bar, and sits next to it on mobile, or above it on desktop.

The distinct tab: a highlighted entry, always at the height of the Bar

The distinct tab: a highlighted entry, always at the height of the Bar

Properties

Shape

The Shape atom applies to the whole component, consistently: the Bar, the items and the distinct tab share the same corner style, from Sharp to Full-round.

The corner styles applied to the TabBar

The corner styles applied to the TabBar

Border

The Bar can draw a border around its surface, following the Border atom. Its color is configurable, to detach the navigation from the content behind it.

The Border atom on the Bar

The Border atom on the Bar

Shadow

The shadow lifts the Bar above the content and anchors the navigation visually. It follows the Shadow atom, consistently with the other floating components of the app.

The Shadow atom on the Bar

The Shadow atom on the Bar

Size

The element size comes in three values: Compact, Standard and Large. The size sets the scale of the whole component: icons, labels and the height of the Bar adapt together, per device.

The three element sizes

The three element sizes

Background effects

The background of the TabBar can detach the navigation from the content, at two levels: the Container behind the whole component, and the Bar itself.

On the Container — a solid color, a gradient, or a blur that lets the content show through. Blur effects are available on every app output.

Solid color, gradient and blur on the Container

Solid color, gradient and blur on the Container

On the Bar — the surface of the Bar takes the same effects: solid, gradient, or blur, revealing the content behind the pill.

Solid color, gradient and blur on the Bar

Solid color, gradient and blur on the Bar

On-scroll behavior

The TabBar can stay fixed and always visible, or hide when the user scrolls down and reappear when scrolling back up.

Fixed, or hidden on scroll

Fixed, or hidden on scroll

Layout

Filling

The filling defines how the Bar occupies the width of its container. With fit, the Bar hugs its content and each item takes its own width. With stretch, the Bar fills the whole width and every item shares it equally. Edge to edge, the Bar spans the screen from side to side.

Fit, stretch and edge to edge

Fit, stretch and edge to edge

By device

On mobile and tablet, the TabBar is anchored at the bottom of the screen. On desktop, it becomes a vertical rail on the left side of the navigation area, with the distinct tab above the Bar.

The TabBar by device: bottom bar and side rail

The TabBar by device: bottom bar and side rail

With other components

The Container manages the spacing between the TabBar and the transversal components of the app, such as the mini player or the floating button, so the navigation stays stable whatever the page shows.

Overflow

On mobile, the TabBar shows up to four entries, the distinct tab included. When the app has more sections, the extra entries move to the More menu, the natural extension of the TabBar, which is described separately.