Layout contract

PageLayout, ToolbarRow, ListPageFooter — enforced Workshop page grammar from hq-ui-full remediation.

Foundations · fixture-only

List page footer anchor

Every list/index page pairs ListSurface with ListPageFooter to prevent orphan whitespace.

Workshop: /objects, /projects, /inbox, /files
Avoid: Short list floating mid-column with >25% dead canvas below.

Fixture data only — behaviour matches production chrome

Toolbar gap-2

Filter/search strips use ToolbarRow (gap-2) — no mixed 4px/12px clusters.

Workshop: /objects/Customer filter bar, /projects search row.

Fixture data only — behaviour matches production chrome

Detail hero scale

RecordHero on detail pages — 20px title + caption line, not 15px list-scale h1.

Workshop: Customer detail, new record forms.

Fixture data only — behaviour matches production chrome

PageLayout

Main column + optional aside; data-page-kind drives mechanical h1 bands on list pages.

List surface

15px tool-scale title on list pages
Bordered list shell — no orphan canvas below

1 row

View all →

ToolbarRow

Single gap-2 filter strip — layout contract §3.

Anti-pattern: orphan whitespace

List without footer anchor leaves dead canvas — always pair ListSurface + ListPageFooter.

Without footer anchor

specimen only

Short list floating mid-column — Workshop review flags >25% dead whitespace.