Toolbar

Bottom bar of contextual actions in edge-to-edge, docked-button or floating capsule styles. When the context changes, the old actions fade out and the new ones appear left to right.

Preview

Installation

npx @lumioui/cli add toolbar

Usage

import { Toolbar } from "@/components/ui/toolbar/toolbar";
<Toolbar />

Examples

Mail

The bottom toolbar of a mail inbox.

Bottom app bar

A notes app's bottom app bar with a docked FAB.

Selection mode

A test kitchen's menu-shoot library.

API reference

Toolbar

Prop Type Default
variant ToolbarVariant | "ios" | "material"

"edge" edge-to-edge bar · "docked" taller bar with a docked FAB · "floating" capsule. Default "edge". "ios" and "material" are deprecated aliases — use "edge" and "docked".

—
material "solid" | "glass"

Surface. "solid" (default) or "glass" — glass only when content scrolls under the bar.

—
labels boolean

Show text labels under item glyphs (tablet style). Default false.

—
safeArea boolean

Pad the bottom safe-area inset into the bar. Default false.

—
hidden boolean

Dim and lower the bar off-screen (scroll-to-hide).

—
contentKey string | number

Change this to swap the bar's contents in place — e.g. "browse" → "select".

—
className string —
children React.ReactNode —

ToolbarItem

Prop Type Default
icon* IconName | React.ReactElement

Glyph name, or a custom element.

—
label* string

Accessibility label, and the visible label when the bar has labels.

—
onPress () => void —
active boolean

Toggle state (bookmark, flag). Filled glyph + selected state.

—
disabled boolean —
badge number

Count badge on the glyph.

—
tone "default" | "primary" | "destructive"

"default" ink, "primary" accent tint, "destructive". Default "default".

—
className string —

ToolbarTextButton

Prop Type Default
children* string

Visible label — "Select", "Done", "Edit".

—
onPress () => void —
emphasized boolean

Bold the label (confirm actions like Done).

—
disabled boolean —
tone "primary" | "destructive" | "default" —
className string —

ToolbarStatus

Prop Type Default
title* string

Main line — "Updated just now", "3 Photos Selected".

—
subtitle string

Second line — "12 unread".

—
trend "up" | "down"

Direction of a count in the title. When set, the new line arrives from that side (≤4pt) as it swaps in; omit for a pure in-place swap.

—
className string —

ToolbarFab

Prop Type Default
icon* IconName —
label* string

Accessibility label.

—
onPress () => void —
className string —