Get GliaKit

Navigation

Page header

The top of a screen: a mono eyebrow or breadcrumb, the page title, an optional status badge and description, and the primary actions.

Source
src/components/app/page-header.tsx
Figma
PageHeader · type (default, detail).

Usage

Included in the GliaKit boilerplate. Import it where you need it:

tsx
import { PageHeader } from "@/components/app/page-header";

When to use

  • At the top of every app screen, so the title and main actions sit in the same place on each page.
  • Use the default type (eyebrow, title, action) for top-level sections like Projects or Billing.
  • Use the detail type (breadcrumb, badge, description) for a single record, so people can see where they are and get back up a level.
  • Inside cards, dialogs or sheets: it renders an h1, which should appear once per page. Use the card or dialog title instead.
  • For marketing page heroes, which need larger type and more space.

Examples

Detail

For a single record: a breadcrumb replaces the eyebrow, with a status badge, a description and two actions.

Title and description

Every prop but title is optional. Leave out the action on read-only pages.

With tabs

A common screen top: the header, then line tabs for the page's sections.

API reference

PageHeader

Stacks on small screens and lays out in a row from sm up, with actions aligned to the bottom right. Does not spread other HTML attributes.

PropTypeDefaultDescription
titlestring-Page title, rendered as an h1. Required.
eyebrowstring-Small uppercase mono label above the title. Ignored when breadcrumb is set.
breadcrumbReact.ReactNode-Usually a <Breadcrumb />. Shown above the title in place of the eyebrow.
badgeReact.ReactNode-Status element, such as a <Badge />, shown next to the title.
descriptionstring-One line of supporting text under the title.
actionReact.ReactNode-Buttons on the right. Pass a fragment for several; they are spaced with a gap.
classNamestring-Extra classes for the outer container.

Accessibility

  • The title renders as an h1, giving each page a single top-level heading for screen reader navigation.
  • The breadcrumb slot keeps its own nav landmark and aria-current on the last item when you pass a Breadcrumb.
  • Actions keep their native button semantics; icon-only actions need an aria-label.

Related