Section Header

Header row that opens a content section, with a title, count, subtitle and a “See all” style action. Includes inline text tabs and a count that can update digit by digit.

Preview

Installation

npx @lumioui/cli add section-header

Usage

import { SectionHeaderAction, SectionHeaderFilterTabs, SectionHeader } from "@/components/ui/section-header/section-header";
<SectionHeader />

Also exported: SectionHeaderAction, SectionHeaderFilterTabs.

Examples

Editorial

A recipe app's home feed: large editorial openers with a one-line subtitle and a chevron "See all", each introducing a photo rail.

Grouped

A banking app's accounts screen: compact 13pt sentence-case labels with a muted count above inset grouped lists, the label carrying a quiet trailing action.

Media

A stay listing's detail page: section titles carry their media and review counts in muted numerals, with "See all" leading to the full set.

Tabs

A running club's weekly leaderboard: the header leads the switch-on and the ranking follows a band later, row by row.

API reference

SectionHeader

Prop Type Default
title* string

Section title, sentence case.

—
subtitle string

One quiet line under the title (truncates).

—
count number | string

Figure set after the title in muted tabular numerals ("Reviews 214").

—
size SectionHeaderSize

Visual weight. Default "default".

—
action string

Trailing text action, e.g. "See all".

—
onAction () => void

Called when the action is pressed.

—
chevron boolean

Show a chevron after the action label. Default true for "large".

—
trailing React.ReactNode

Custom trailing slot (filter button, segmented control). Replaces action.

—
accessory React.ReactNode

Rendered under the title row (inline tabs, chips).

—
switchOn boolean | number

Lead the section's switch-on: the header starts dim and lights with a small rise on mount. Pass a number to wait that many ms. Default off.

—
animateCount boolean

Swap the count in place digit by digit when it changes. Default false.

—
className string —
titleClassName string —

SectionHeaderAction

Prop Type Default
label* string —
onPress () => void —
chevron boolean —
muted boolean

Muted ink (compact headers) instead of the accent text colour.

—
contextLabel string

Section title, read after the label ("See all, Weeknight dinners").

—
className string —

SectionHeaderFilterTabs

Prop Type Default
options* string[]

Tab labels. Values are the labels themselves.

—
value* string —
onValueChange* (value: string) => void —
className string —