Page Header
@cloudflare/kumo
<PageHeader
className="w-full"
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link icon={<HouseIcon size={16} />} href="#">
      Workers & Pages
    </Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>cloudflare-dev-platform</Breadcrumbs.Current>
  </Breadcrumbs>
}
tabs={[
  { label: "Overview", value: "overview" },
  { label: "Metrics", value: "metrics" },
  { label: "Deployments", value: "deployments" },
  { label: "Bindings", value: "bindings" },
  { label: "Observability", value: "observability" },
  { label: "Settings", value: "settings" },
]}
defaultTab="overview"
onValueChange={(v) => console.log(v)}
>
<Button icon={<CodeIcon />} className="h-8">Edit code</Button>
<Button icon={<GlobeIcon />} variant="primary" className="h-8">Visit</Button>
</PageHeader>

Installation

PageHeader is a block - a CLI-installed component that you own and can customize. Unlike regular components, blocks are copied into your project so you have full control over the code.

1. Initialize Kumo config (first time only)

npx @cloudflare/kumo init

2. Install the block

npx @cloudflare/kumo add PageHeader

3. Import from your local path

// The path depends on your kumo.json blocksDir setting
// Default: src/components/kumo/
import { PageHeader } from "./components/kumo/page-header/page-header";

Usage

import { PageHeader } from "./components/kumo/page-header/page-header";
import { Breadcrumbs } from "@cloudflare/kumo";

export default function Example() {
return (
  <PageHeader
    breadcrumbs={
      <Breadcrumbs>
        <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
        <Breadcrumbs.Separator />
        <Breadcrumbs.Link href="#">Projects</Breadcrumbs.Link>
        <Breadcrumbs.Separator />
        <Breadcrumbs.Current>My Project</Breadcrumbs.Current>
      </Breadcrumbs>
    }
    tabs={[
      { label: "Overview", value: "overview" },
      { label: "Settings", value: "settings" }
    ]}
    defaultTab="overview"
    onValueChange={(value) => {
      console.log(value);
    }}
  />
);
}

Examples

Basic

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>Dashboard</Breadcrumbs.Current>
  </Breadcrumbs>
}
/>

With Icons

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link icon={<HouseIcon size={16} />} href="#">
      Home
    </Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current icon={<GearIcon size={16} />}>
      Settings
    </Breadcrumbs.Current>
  </Breadcrumbs>
}
/>

With Tabs

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>Settings</Breadcrumbs.Current>
  </Breadcrumbs>
}
tabs={[
  { label: "General", value: "general" },
  { label: "Security", value: "security" },
  { label: "Notifications", value: "notifications" },
]}
defaultTab="general"
/>

With Actions

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Link href="#">Projects</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>My Project</Breadcrumbs.Current>
  </Breadcrumbs>
}
tabs={[
  { label: "Overview", value: "overview" },
  { label: "Settings", value: "settings" }
]}
defaultTab="overview"
>
<Button variant="primary" size="base">
  Deploy
</Button>
</PageHeader>

With Title

Page title

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Link href="#">Products</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>Page title</Breadcrumbs.Current>
  </Breadcrumbs>
}
title="Page title"
/>

With Title and Description

Page title

Action-led, value-oriented description of what this page does. Optional second sentence with use cases or prerequisites.

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Link href="#">Products</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>Page title</Breadcrumbs.Current>
  </Breadcrumbs>
}
title="Page title"
description="Action-led, value-oriented description of what this page does. Optional second sentence with use cases or prerequisites."
/>

Complete Example

Combining breadcrumbs, title, description, tabs, and actions.

Page title

Action-led, value-oriented description of what this page does.

<PageHeader
breadcrumbs={
  <Breadcrumbs>
    <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Link href="#">Products</Breadcrumbs.Link>
    <Breadcrumbs.Separator />
    <Breadcrumbs.Current>Page title</Breadcrumbs.Current>
  </Breadcrumbs>
}
title="Page title"
description="Action-led, value-oriented description of what this page does."
tabs={[
  { label: "Overview", value: "overview" },
  { label: "Analytics", value: "analytics" },
  { label: "Settings", value: "settings" },
]}
defaultTab="overview"
>
<Button variant="outline" size="sm">Export</Button>
<Button variant="primary" size="sm" icon={<PlusIcon />}>New Item</Button>
</PageHeader>

API Reference

PropTypeDefaultDescription
spacing"compact" | "base" | "relaxed""base"-
breadcrumbsReactNode--
titlestring--
descriptionstring--
tabsTabsItem[]--
defaultTabstring--
classNamestring--
childrenReactNode--

TabsItem

PropertyType
labelstring
valuestring