Page headers
The top of a page: title and supporting text, a trail that becomes a Back button, actions, search, and an optional banner the avatar sinks into.
Page headers
The top of a page: title and supporting text, a trail that becomes a Back button, actions, search, and an optional banner the avatar sinks into.
Contextual demo
This page has no in-column demo on purpose: a page header wants the whole viewport. The preview carries the full control set instead.
Why the demo lives in the preview
md:hidden against the browser window, and the search swaps to its 40px, 16px-text form via useBreakpoint("md"). A demo well in this docs column can show neither honestly, so the controls moved to the preview: the six styles ride its example select (URL-synced, so a style deep-links), and the title, supporting text, trail, actions, search, and divider live in its control bar’s panel. Resizing the preview window is the component’s real breakpoint behavior.The family
Two exports from one module: the stateless PageHeader surface and the live PageHeaderSearch field.
| Component | Description | Import from |
|---|---|---|
| PageHeader | The whole surface: title over supporting text, a breadcrumbs slot that gives way to a Back button below md, an actions slot, a search slot, an optional avatar, an optional banner the avatar sinks into, and the bottom rule. Stateless — every part is a prop, and the mobile Back renders only when it is wired. | @/components/application/page-header/page-header |
| PageHeaderSearch | The sheet’s search field, live: the kit Input with the search icon, sm with the ⌘K shortcut chip from md up and md with 16px text below it — the sheet’s own iOS-zoom annotation made real. Named “Search” by default so it is never an unlabelled control. | @/components/application/page-header/page-header |
Built from
Seven layers make up the family; five have their own docs page.
Component | Where it’s used here |
|---|---|
| Button | The mobile Back control: link-gray at size sm with the arrow forced to 16px. The action buttons are the caller’s own — the sheet draws two secondary and one primary sm. |
| Avatar | The plain styles’ 56px identity: size xl with border, statusless, beside the title at 12px. |
| @untitledui/icons | ArrowLeft on the Back control and SearchLg in the search field; the fixture trail’s Home01 is the caller’s. |
The six styles
One component, three props. banner decides the shell, avatar decides the identity, centered decides the axis — the sheet’s six styles are the reachable combinations.
Team members
Manage your team members and their account permissions here.
The three actions, the search field, and the mobile Back are wired — activate one.
Olivia Rhye
olivia@untitledui.com
The trail is a slot, and the Back control is a prop
breadcrumbs slot expects the breadcrumbs family’s type="button", and these specimens pass five crumbs whose middle two collapse into the ellipsis the sheet draws. Below md the slot never renders; the Back button takes its place, and only when onBack or backHref is supplied — a named, focusable control that does nothing is a defect, not a placeholder (CL-K4).Team members
Manage your team members and their account permissions here.
Olivia Rhye
olivia@untitledui.com
Olivia Rhye
olivia@untitledui.com
Olivia Rhye
olivia@untitledui.com
The banner is a box the artwork fills
banner node just fills it. These specimens pass the sheet’s own placeholder, a literal #a5c0ee → #fbc5ec gradient; a real page passes an img with size-full object-cover and empty alt, because the artwork is decoration — anything it says is invisible to assistive tech and doomed on contrast.