Skip to content
GetUrUI

Page Headers

6 variantsNewPro
.md

Six inner-page headers — simple, with actions, with search, with tabs, with breadcrumbs and meta, and centred with an email field — each in a default or volt-tinted brand tone, with titles that rise word by word.

headerpage headertitlebreadcrumbstabssearchinner pageapp

Simple

Newsimple.tsx

Eyebrow, a title that rises word by word and a supporting line.

$npx shadcn@latest add @geturui-pro/page-headers-simple
PropTypeDefaultDescription
eyebrowstring—Small label above the title.
titlestring—Page h1; words rise in one by one.
descriptionstring—Supporting line.
tone"default" | "brand""default"Brand tints the header volt with a faint grid and glow.
classNamestring—Classes for the outer element.

With actions

Newwith-actions.tsx

Title block with inline stats on the left and actions on the right; actions go full width when stacked.

$npx shadcn@latest add @geturui-pro/page-headers-with-actions
PropTypeDefaultDescription
eyebrowstring—Small label above the title.
titlestring—Page h1; words rise in one by one.
descriptionstring—Supporting line.
stats{ label; value }[]—Inline figures under the description.
actionsReactNode—Replaces the default buttons.
primaryLabel / onPrimarystring / () => void—Primary button.
secondaryLabel / onSecondarystring / () => void—Secondary button.
tone"default" | "brand""default"Brand tints the header volt with a faint grid and glow.
classNamestring—Classes for the outer element.

With tabs

Newwith-tabs.tsx

Title, actions and a row of section tabs with counts; the underline glides between tabs and the row scrolls on narrow screens.

$npx shadcn@latest add @geturui-pro/page-headers-with-tabs
PropTypeDefaultDescription
eyebrowstring—Small label above the title.
titlestring—Page h1; words rise in one by one.
descriptionstring—Supporting line.
tabs{ value; label; count?; href? }[]—Section tabs; href renders links.
value / defaultValuestring—Active tab id (controlled / uncontrolled).
onValueChange(id: string) => void—Called when a tab is chosen.
actionsReactNode | null—Replaces the default buttons; null hides them.
tabsLabelstring"Team sections"Accessible name of the tab nav.
tone"default" | "brand""default"Brand tints the header volt with a faint grid and glow.
classNamestring—Classes for the outer element.

Centred

Newcentered.tsx

Centred eyebrow pill, title and subtitle with either buttons or an inline email field that confirms with a blur swap.

$npx shadcn@latest add @geturui-pro/page-headers-centered
PropTypeDefaultDescription
eyebrowstring—Small label above the title.
titlestring—Page h1; words rise in one by one.
descriptionstring—Supporting line.
onSubscribe(email: string) => void | Promise<void>—Shows the email field. Throw an Error to show its message.
subscribeLabel / finePrintstring—Button label and line under the field.
actionsReactNode—Buttons shown when there is no email field.
tone"default" | "brand""default"Brand tints the header volt with a faint grid and glow.
classNamestring—Classes for the outer element.

Install the whole set

Installs every page headers variant at once. Each section above has its own command for a single variant.

Pro installs use your private registry token. Add the @geturui-pro registry once — setup guide. The command works after you get Pro.

$npx shadcn@latest add @geturui-pro/page-headers

Also installs: Button

Accessibility

  • Each header is a header element with a single h1; tabs are a nav with aria-current, breadcrumbs an ordered list in a Breadcrumb nav.
  • The search form has role=search, a hidden label, Escape to clear and a live result line.
  • Rising titles render as plain text under reduced motion; the star toggle uses aria-pressed.

Related