Hero
A hero is a large, prominent section typically placed at the top of a page, featuring a title, description, and optionally a background image or call-to-action. Heroes are used to create a strong visual introduction and draw attention to key content.
This headless component uses a <section> element with an aria-label to create a labeled landmark region for the hero content.
Implementation Notes
- Uses
<section>element for landmark semantics aria-labeldescribes the hero section for screen readers- Contains slots for title, description, image, and call-to-action
- Consumer controls the visual presentation via CSS
Props
label: string (required) -- accessible label for the hero sectionchildren: slot (required) -- hero content including title, description, and CTA...restProps: Any additional HTML attributes
Usage
<Hero label="Welcome to our platform">
<h1>Build Something Amazing</h1>
<p>The fastest way to create beautiful, accessible web applications.</p>
<Button>Get Started</Button>
</Hero>
<Hero label="Register for a GP">
<h1>Register with a GP surgery</h1>
<p>Everyone in England can register with a GP surgery. It is free to register.</p>
<ActionLink href="/register">Register now</ActionLink>
</Hero>
<Hero label="Lily Design System">
<h1>Lily Design System</h1>
<p>Headless, accessible components for healthcare and government services.</p>
<Button>View components</Button>
<Button>Read the docs</Button>
</Hero>
Keyboard Interactions
- None at the section level -- interactive children handle their own keyboard interactions
ARIA
- Implicit
regionrole from<section>element witharia-label aria-label-- describes the hero section for screen readers
When to Use
- Use at the top of a landing page to introduce the service with a prominent heading, description, and optional background image
- Use when you need a large visual introduction that sets the context for the page
- Use on marketing or public-facing pages where a strong first impression matters
- Use to combine a headline, supporting text, and a primary call-to-action in a single prominent section
When Not to Use
- Do not use on transactional pages -- keep forms focused without large visual elements
- Do not use multiple heroes on one page -- use Card or Panel for secondary content blocks
- Do not use for repeated content sections within a page -- use Card, Tile, or Panel instead
Headless
This component provides a <section> element with aria-label for landmark navigation, with zero visual styling. The consumer is responsible for all CSS including background image, overlay, text alignment, padding, responsive sizing, and CTA button placement.
Styles
The consumer provides all CSS styling. The component renders with a .hero class for targeting. No default styles are included -- this is a fully headless component.
Testing
- Verify the component renders a
<section>element with classhero - Verify
aria-labelis applied - Verify child content slots are rendered correctly
- Verify pass-through attributes are applied
Advice
- Designers: Keep hero content concise and focused. Use high-contrast text over images. Ensure text is readable at all viewport sizes. Include a clear call-to-action.
- Developers: Always provide a descriptive
labelprop for screen reader landmark navigation. Use responsive images and consider lazy loading for hero backgrounds.
Related components
feature-card— a large content card with a prominent image positioned alongside or above the textcall-to-action— a prominent prompt encouraging user action