caliper uidocs

Page header

Block

A title with description, breadcrumbs and actions.

Installs components/ui/page-header.tsxDepends on @radix-ui/react-slot, lucide-reactMotion none in component source
pnpm dlx shadcn@latest add https://caliperui.site/r/page-header.json

Deployments

Production

Every build that has gone out, who shipped it, and whether it held.

When to use #

Use it for

  • The top of an application page.

Skip it when

  • A marketing page; use a hero.

Installation #

terminal
pnpm dlx shadcn@latest add https://caliperui.site/r/page-header.json

Adds its 3 files to components/ui/, each with its own stylesheet, and installs their packages. No account needed. The first part also adds Caliper UI’s tokens; import them once as in Installation.

Usage #

This is the code behind the preview above.

example.tsx
import { useState } from "react"
import { Badge } from "@/components/ui/badge"
import { Button } from "@/components/ui/button"
import { PageHeader } from "@/components/ui/page-header"
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"

export function PageHeaderDemo() {
  const [tab, setTab] = useState("overview");
  return (
    <PageHeader
              breadcrumb={[{ label: "Projects", href: "#" }, { label: "Atlas platform", href: "#" }, { label: "Deployments" }]}
              title="Deployments"
              meta={<Badge>Production</Badge>}
              description="Every build that has gone out, who shipped it, and whether it held."
              actions={
                <>
                  <Button variant="secondary" size="sm">Export</Button>
                  <Button size="sm">New deployment</Button>
                </>
              }
            >
              <Tabs value={tab} onValueChange={setTab}>
                <TabsList aria-label="Deployment views">
                  <TabsTrigger value="overview">Overview</TabsTrigger>
                  <TabsTrigger value="history">History</TabsTrigger>
                  <TabsTrigger value="settings">Settings</TabsTrigger>
                </TabsList>
              </Tabs>
            </PageHeader>
  );
}

API reference #

PageHeader

component
PropTypeDefaultDescription
title *string—
descriptionReactNode—
breadcrumbreadonly PageCrumb[]—Ancestors then the current page; the last item is the page itself.
metaReactNode—Status badges or small facts beside the title.
actionsReactNode—Buttons aligned to the end; they wrap under the title on narrow screens.
childrenReactNode—Anything that belongs to the header, such as tabs.
classNamestring—

Accessibility #

It is built on native elements, so roles and focus come from the browser.

No custom key handling; Tab and the native activation keys do the work.

Motion #

It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.