{{- /* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Commercial */ -}} {{- /* SPDX-FileCopyrightText: 2025-2026 Christian Galo */ -}} {{/* Page anatomy: the page header (docs/design-system.md ยง6; spec page-anatomy "One title size and one header layout"). Pipeline: server.PageHeader. The only template that renders an

: one size (h1.h2), an optional location trail above it (chrome-conventions "One location trail": a Bootstrap breadcrumb rooted at the surface, the per-template-set surfaceRoot function first, then .Crumbs, then the current page appended as the unlinked aria-current crumb; the surface's own root page (PageHeader.NoTrail) carries none; design D18), an optional one-sentence lead below it, and one right-hand slot holding a muted count or one action control. Check() aborts the render when a page supplies both. Parsed into every set by web.ParseUIPartials. */}} {{ define "pageHeader" }}{{ .Check }}
{{ if not .NoTrail }}{{ end }}

{{ .Title }}

{{ if .Lead }}

{{ .Lead }}

{{ end }}
{{/* A page header's action navigates, so it is always outline-secondary (form-conventions "Button weight follows the button's role"; design D19). The filled weight belongs to a form's commit and to a list section header's "New ..." link, never here. */}} {{ if .Action }}{{ .Action.Label }}{{ else if .Count }}{{ .Count }}{{ end }}
{{ end }}