Skip to content

PageHeader

A semantic <header> element that arranges an optional leading icon, the title block (breadcrumbs + title + subtitle), and a right-aligned actions slot. Built for top-of-view headers inside a panel or page container, not for the application chrome — for that, use the components under Shell.

Live Preview

Import

import { PageHeader } from 'entangle-ui';

Usage

Basic

<PageHeader title="Project Assets" />

Anatomy

[ icon ] [ breadcrumbs ] [ actions ]
[ title ]
[ subtitle ]

The title block grows to fill available space; actions sit flush to the right.

With Actions

With actions

<PageHeader
icon={<FolderIcon />}
title="Project Assets"
subtitle="124 items"
actions={
<>
<Button>Import</Button>
<Button variant="filled">Upload</Button>
</>
}
/>

With Breadcrumbs

You can pass any ReactNode as breadcrumbs — typically your own breadcrumb component or a series of <a> tags.

With breadcrumbs

<PageHeader
breadcrumbs={<span>Workspace / Project / Assets</span>}
title="Textures"
subtitle="Baked PBR materials"
icon={<FolderIcon />}
actions={<Button variant="filled">New</Button>}
/>

Sizes

The size prop scales the title font size and outer padding.

Sizes

<PageHeader size="sm" title="Small" />
<PageHeader size="md" title="Medium" />
<PageHeader size="lg" title="Prominent" />
SizeTitle font sizePadding
smmd (12px)sm × md
mdlg (14px)md × lg (default)
lgxl (16px)lg × xl

Borderless

The bottom border is on by default. Pass bordered={false} when the header sits inside another bordered container.

Inside a bordered container

The header's own bottom border is hidden so the outer container's border reads as the boundary.

<div style={{ border: '1px solid var(--etui-color-border-default)' }}>
<PageHeader title="Settings" bordered={false} />
<div>panel body...</div>
</div>

Inside a PanelSurface

<PanelSurface>
<PageHeader title="Inspector" actions={<IconButton icon={<MoreIcon />} />} />
<PanelSurface.Body scroll>{/* content */}</PanelSurface.Body>
</PanelSurface>

Props

Prop Type Default Description
title * ReactNode Title — plain string or custom ReactNode.
icon ReactNode Icon rendered before the title.
subtitle ReactNode Optional subtitle below the title.
actions ReactNode Actions rendered on the right (buttons, menus, IconButtons).
breadcrumbs ReactNode Breadcrumb slot rendered above the title.
size 'sm' | 'md' | 'lg' 'md' Size scale.
bordered boolean true Render a bottom border separating the header from content.
className string Additional CSS class names.
style CSSProperties Inline styles.
testId string Test identifier for automated testing.
ref Ref<HTMLElement> Ref to the underlying header element.

Accessibility

  • Renders a semantic <header> element so assistive tech and search engines treat it as page-level metadata
  • Title is rendered as <h1> inside the title block — pair with aria-labelledby on the surrounding section if needed
  • Actions container is a plain <div> — wrap individual actions in <Button> or <IconButton> for proper button semantics and aria-label