Page Hero
<al-page-hero>betaSouthleft's INTERIOR-page hero band — an eyebrow, a display heading, a lead paragraph, and whatever the page adds below. Appears on 19 of the site's 24 pages.
CODE — HTML
Guidance
The title band an interior page opens with: an optional label, the page heading, and a short dek. It owns its vertical rhythm and nothing else, so the page's own stack starts immediately underneath it.
WHEN TO USE
- The page is an interior one (a work index, an article listing, a service page) and needs a heading band before its content.
- You want the page title and its one-line explanation to share a consistent measure and spacing across every route.
WHEN NOT TO USE
- This is the homepage's first screen and the composition needs the texture, the two-column split and a supporting panel.USE HERO →
- The heading opens a section inside a page rather than the page itself, and wants the numbered rule treatment.USE SECTION-HEADER →
DO
- Let the band own its block padding through
--al-page-hero-padding-blockrather than adding margin to whatever follows it. - Set
heading-tagwhen the band is not the page'sh1, so the outline stays correct on a page that already has one.
DON’T
- Do not use it as a section divider repeatedly down a page; its padding is tuned for one appearance at the top.
- Do not put actions inside it. A title band that also carries buttons becomes a hero without the composition to support them.
ACCESSIBILITY IN PRACTICE
heading-tagexists so the rendered element matches the document outline rather than the visual rank. Set it deliberately instead of accepting the default on a page that already has anh1.
CONTENT GUIDELINES
- The label is a category, not a sentence: one or two words saying what kind of page this is.
WHERE THIS CAME FROM
libs/sl-web-components/components/page-hero/page-hero.tsThe component this guidance describes.
Each line above names a file and a literal string that must still appear in it.pnpm gate:guidance re-reads them from this built page, so guidance that has stopped being true fails a check rather than misleading you.
FIGMA PARITY
The Figma set changed since the last confirmed sync — the code is behind.
- DECIDED BY
- CONTRACT DIFF
- FIGMA SIDE
- OBSERVED
- LAST CONFIRMED SYNC
- 2026-08-28
- PUBLIC SURFACE
- 6 ATTR · 1 SLOT · 0 EVENT · 4 PART
The component’s public surface — attributes and their value sets, slots, events, CSS parts and custom properties, from the manifest — compared against the Figma set’s property definitions.
ACCESSIBILITY
Measured by axe on this documentation site’s own preview of the default story — @southleft/sl-web-components has no Storybook in the measured set.
The CI gate disables color-contrast globally (libs/al-web-components/story-fixture/src/main.ts), so its result never reaches a test run. It is enabled for this measurement, and reported here whichever way it comes out.
NO CONTRAST VIOLATIONS ACROSS THIS COMPONENT’S 1 STORIES.
INSTALL
import '@southleft/sl-web-components/components/page-hero';
API — 6 PROPS
SLOTS
EVENTS
THIS COMPONENT DECLARES NO EVENTS IN THE MANIFEST.
CSS PARTS
CSS CUSTOM PROPERTIES
SOURCE — components/page-hero/page-hero.ts · Organisms/Page Hero