Page header
Usage
Every Fleetline page opens with a page header: where you are (breadcrumbs), what this is (title + status), and what you can do (actions). It sits at the top of <main>, below the top nav.
- The title is the page's only
<h1>and matches the last breadcrumb and the document<title>. (Demos below useh2so this docs page keeps one h1.) - Meta: status (dot + word), place, owner, last update as relative time with the exact time in
datetime. - One primary action. Two or three visible actions at most; the rest go into "More actions".
- Use tabs underneath only when the object has several sections with their own URLs.
Anatomy
- Breadcrumbs (optional) —
.page-header__breadcrumbs - Title —
h1.page-header__title - Description (optional) —
.page-header__description - Meta —
ul.page-header__metawith.page-header__status[data-tone] - Actions —
.page-header__actions: buttons + overflow menu button - Section tabs (optional) —
nav.tabs.page-header__tabs
Examples
The overflow menu is live (js/menu.js). Narrow the window: actions wrap under the title (container query at 40rem).
Page header
Depots
6 depots · 128 vehicles · 41 mechanics
Van KX-219
One primary action; secondary actions in a button and the overflow menu.
Van KX-219
Van KX-219
Each tab is its own URL, so these are links with aria-current, not ARIA tabs.
<main id="main" tabindex="-1">
<header class="page-header">
<nav class="breadcrumbs page-header__breadcrumbs" aria-label="Breadcrumb">…</nav>
<div class="page-header__main">
<div class="page-header__heading">
<h1 class="page-header__title">Van KX-219</h1>
<ul class="page-header__meta">
<li class="page-header__meta-item"><span class="page-header__status" data-tone="success">In service</span></li>
<li class="page-header__meta-item">…North Yard depot</li>
<li class="page-header__meta-item">…Updated <time datetime="2026-10-08T09:40">2 hours ago</time></li>
</ul>
</div>
<div class="page-header__actions">
<button type="button" class="btn btn--secondary">Print job sheet</button>
<button type="button" class="btn btn--primary">New work order</button>
<!-- overflow: icon-btn menu button, see menu.html -->
</div>
</div>
<nav class="tabs tabs--underline page-header__tabs" aria-label="Van KX-219 sections">
<ul class="tabs__list"><li><a class="tabs__tab" href="/vehicles/KX-219" aria-current="page">Overview</a></li>…</ul>
</nav>
</header>
…
</main>
API
| Hook | Values | Purpose |
|---|---|---|
.page-header | block class | <header> inside <main>; inline-size container |
.page-header__breadcrumbs | __main | __heading | __title | __description | __meta | __meta-item | __meta-icon | __actions | __tabs | parts | See anatomy |
.page-header__status[data-tone] | part + attribute | success | warning | danger | info dot next to the status word |
Do and don't
Title "Van KX-219" · status "In service" · actions "Print job sheet", "New work order", "More actions"
Title "Details" · five primary buttons
Accessibility
| Key | Behavior |
|---|---|
| Tab | Breadcrumb links → actions → overflow menu → section tabs |
| ↓ / Enter (More actions) | Opens the overflow menu (see Menu button) |
- Inside
<main>,<header>has no landmark role — the page's banner is the top nav. - Status is a word plus a colored dot, never the dot alone (principle: status is never color alone).
<time datetime>carries the absolute time; show it in a tooltip on hover/focus where it matters.- Section tabs that change the URL are links with
aria-current="page".
Tokens
| Custom property | Purpose |
|---|---|
--typography-h1-font-family | -weight | -line-height, --typography-h2-font-size | Title |
--color-text-muted | Description and meta |
--color-feedback-{success|warning|danger|info}-icon | Status dot |
--space-* | Rhythm between rows |
--size-measure | Description line length |