Hero
Use a hero when you need a large top banner with imagery, headline, supporting line, and calls to action.
Live demo
Hero heading
Hero descriptive text
The hero is the first impression on many pages: it answers what this is about and what to do next (apply, learn more, register, watch). Authors shape message, media, and actions; designers shape height, contrast, and layout so text stays readable on photography or video. Some experiences rotate between more than one hero to highlight different stories while keeping the same pattern.
Behaviour
Height and media choices control how much of the viewport the banner uses and how strong the visual feels. Primary and secondary actions should feel distinct so people know which step matters most.
When multiple heroes sit in a rotating region, visitors may see one hero at a time with a predictable way to move between them (implementation varies; see Code). Always provide a usable experience when motion or script is not available.
Anatomy
- Banner region with background image or video and optional overlays to keep text legible.
- Text stack: title, short supporting line, optional credit line for photography.
- Actions: up to two buttons (primary and secondary roles).

Replace with image hero, video hero, and rotate context.
Content guidelines
- Keep the title specific to the page or campaign; avoid generic slogans that could apply anywhere.
- Keep the subtitle short; move long explanations into the body below the hero.
- Use photo credit as a light line; meaningful image description still belongs in alt text and DAM practices where applicable.
- Write button labels that match the destination or outcome; add a clearer accessible name only when the visible label is too short to stand alone.
When to use
- Top of section, program, or campaign pages where a strong visual and a clear primary action help people orient and act.
- Template-driven landing experiences that already use the hero pattern.
When not to use
- Pages that are dense with data or forms and do not need a large visual; consider a simpler Title or header only.
- Situations with several competing primary actions on one screen; narrow to one main CTA per view where possible.
Best practices
Do
- Check readability on both light and dark areas of the image; use overlays or gradients when needed.
- Give buttons specific, verb-led labels.
- Test on mobile so tall heroes do not push critical content too far down.
Don't
- Stack many full heroes in a row without a strong editorial reason; it hurts scanning on small screens.
- Rely on the background alone to carry meaning; the headline should still work without the image.
Related
| Resource | |
|---|---|
| Button | Primary and secondary actions in the hero. |
| Title | Lighter page header when a full hero is not needed. |
| Card | Supporting content patterns below the hero. |
Height, typography, and button treatment follow CDS and shared patterns. Photo credit and gradients are set through authoring options and styles in the hero clientlib (see Code for paths).
CRXDE Lite query
Use this query in CRXDE Lite to find instances of this component.
/jcr:root/content//*[@sling:resourceType = 'concordia/components/hero/hero.jsp']
Technical behaviour
hero.jsp renders a CDS hero block. Authors configure copy, image or video, button pairs, accessibility labels, and layout options through the dialog. When the hero sits under a hero rotate parent, the same script can output JSON for client-side rotation and a noscript fallback using the first child hero.
Edit mode loads apps.concordia.hero-author to fix Touch UI height behaviour.
Anatomy (implementation)
- Outer region: Landmark-style wrapper with background image or video, height class, and optional full-bleed link.
- Text stack: Title, subtitle, optional photo credit.
- Actions: Up to two buttons with styles, targets, and
aria-labeloverrides. - Optional elements: Video overlay, gradient, breadcrumb slot behaviour (per template).
Authoring
Authors set fields in the Hero dialog (title, subtitle, media, height, buttons, link behaviour, credits, advanced classes). Internal /content/ paths receive .html when missing.
Instances in the codebase
| Location | Notes |
|---|---|
apps/concordia/components/hero/hero.jsp | Primary implementation. |
| Hero rotate templates | Parent includes multiple hero children; JSON branch in hero.jsp. |
| Item | Location |
|---|---|
| Component | apps/concordia/components/hero/hero.jsp |
| Author clientlib | Category apps.concordia.hero-author (edit mode) |
Instance ids: Derived from the resource path for unique anchors and scripting hooks.