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.