Summary
Hero creates a prominent introductory section that pairs a headline, supporting text and a call-to-action with a media asset. It adapts to the viewport: on small screens (xs) content stacks vertically with the asset on top; on wider screens (md) content sits on the left and the asset on the right. Three optional slots (slotContent, slotAsset, slotEnd) let teams extend it without breaking the layout.
Anatomy
- 1Hero — root container. Radius 20; drop shadow shadow-bevel (card appearance).
- 2slotAsset — media/image slot. On
mdto the right; onxsstacked above content. - 3Badge — optional status badge above the heading (variant neutral / appearance default).
- 4Heading — primary title / value proposition.
- 5subHeading — supporting text below the heading.
- 6slotContent — slot for inputs, search fields or other components.
- 7Stack — inner content column (max-width 320).
- 8Button — primary CTA (variant accent / appearance fill / size lg).
- 9slotEnd — optional slot below the button.
Properties / API
| Property | Type / values | Default | Description |
|---|---|---|---|
appearance | default · card | default | New in v1.3. card = white card surface (bg-secondary), radius 20, shadow-bevel. default = transparent, no surface/shadow. |
breakpoint | xs · md | driven by viewport | Layout direction — xs stacks asset above content (320 / max 400); md places content left / asset right (800+). |
slotAsset | slot | — | Media or image slot (size sm). |
slotContent | slot | — | Inputs, search fields or other components, between subheading and button. |
slotEnd | slot | — | Optional slot below the button. |
Heading / subHeading | text | — | Title and supporting text. |
Status (Badge) | text + visibility | optional | Optional status badge above the heading. |
| Button text | text | — | Label of the primary CTA. |
disabled/loading on Hero itself — those live on the nested Button.Variants
Two variant axes ship in v1.3: breakpoint (xs / md — layout direction) and appearance (default / card — surface treatment).
States
Hero is a layout/composition component and exposes no interactive states of its own. Interactive state lives in nested components (Button, slotContent inputs).
Sizes
No discrete size token — footprint is governed by breakpoint: xs width 320 (max 400); md width 800. The nested Button is fixed at size lg; slots are size sm.
Breakpoints
Two breakpoint variants control layout direction (only xs and md — no separate sm/lg/xl).
| xs (mobile) | md (desktop / tablet) | |
|---|---|---|
| Direction | Vertical, top-center | Horizontal, middle-left |
| Width | 320 (max 400) | 800 |
| Item spacing | 28 | 48 (content ↔ asset) |
| Padding | 24 top/bottom · 16 left/right | 32 top/bottom · 32 left · 48 right |
| Order | asset → badge → heading → subheading → slotContent → button → slotEnd | content column (max-width 320) left · asset right |
Design tokens
- Surface: bg-secondary = #FFFFFF (card appearance background).
- Radius: border-radius-lg = 20.
- Spacing: 16 · 24 · 28.
- Elevation: shadow-bevel — drop
#0000000a0/2/8 + inner#ffffff000/0.5.
Accessibility
- Use semantic HTML; the heading establishes the page’s primary content hierarchy.
- Provide descriptive alt text for all
slotAssetmedia. - The CTA must carry a context-independent accessible label — avoid “Click here” / “Learn more” without supporting text.
- Keyboard: Tab moves to interactive elements; Enter activates the primary CTA.
- Screen readers announce the heading level and the button label in document order.
Usage
✓ Do
- Use the
mdbreakpoint on desktop/tablet for side-by-side content + asset. - Use a single, clear CTA to guide users to the page’s primary goal.
✕ Don't
- Don’t apply the
xsstacked layout on wide viewports. - Don’t overload Hero with competing actions or dense content.
- Don’t place multiple competing Hero sections on one page.
Implementation status
Implemented at v1.2 on the platforms below; the v1.3 appearance property and Supernova adjustments are pending. macOS not started.
appearance = default / card property on every implemented platform; verify Supernova sub-page spacing.Changelog
- v1.323.6.2026
- Adjustments for Supernova sub-pages.
- Added property
appearance = default / card.
- v1.29.4.2026
- Adjusted elements and spacings.
- v1.15.2.2026
md: increased asset spacing to 80px for better subheading line length; asset margin-right 48→24px.- (12.3.)
mdchanged to also use Button sizelg.
- v1.016.1.2026
- Initial release.
Ticket scaffold
Title: Hero v1.3 — add appearance (default / card) + Supernova adjustments [PLATFORM]
Acceptance criteria
- Adds
appearanceproperty:default(transparent, no surface) andcard(white surface, radius 20, shadow-bevel). - Existing usages default to
default(backwards compatible) — or migrate per Supernova sub-page intent. - Breakpoint layout verified:
xsstacked (asset top);mdside-by-side (content left, asset right). - Card surface bound to bg-secondary; light + dark verified.
- Asset has alt text; CTA has a context-independent label.
- Visual diff against the Figma v1.3 Specification frame.
Jira ticket template
Jira wiki-markup. Copy into a new issue, replace every [PLACEHOLDER], and duplicate one per platform.
h2. [PLATFORM] · Hero v1.3 — add appearance (default / card) + Supernova adjustments
*Project / Epic* : [EPIC-KEY] Aurora AppKit · Supernova
*Issue type* : Story
*Components* : Hero · [PLATFORM]
*Labels* : aurora-appkit, supernova, design-system, hero
*Priority* : [Medium]
*Story points* : [estimate]
*Fix version* : Hero v1.3
*Sprint* : [sprint]
*Assignee* : [assignee]
h3. Background
Hero is the page-level intro (heading + supporting text + CTA + asset). v1.3 adds an {{appearance}} property for Supernova sub-pages so Hero can render on a contained card or directly on the page.
h3. Objective
Implement Hero v1.3 on [PLATFORM]: add {{appearance}} (default | card) and apply the Supernova spacing adjustments, mapped to [PLATFORM] conventions.
h3. Design source
* Figma — "Aurora AppKit · Components" -> Hero page (v1.3 Specification, Changelog frames)
* Handover spec — supernova-handover/hero.html
* [paste the platform-specific Figma frame link]
h3. Spec (platform-agnostic — map to [PLATFORM] idioms)
* New property {{appearance}} : {{default}} (transparent, no surface/shadow) | {{card}} (surface {{bg-secondary}}, radius {{border-radius-lg}} 20, {{shadow-bevel}})
* {{breakpoint}} : xs (vertical, asset on top, width 320 / max 400) | md (horizontal, content left / asset right, width 800)
* Slots : {{slotAsset}} · {{slotContent}} · {{slotEnd}} · optional status Badge · primary Button (accent / fill / lg)
* Inner spacing (both breakpoints) : stack 16 · text block 12 · heading-to-sub 4 · badge-to-text 8 · slotContent-to-button 10
* xs padding 24 (v) / 16 (h), item spacing 28 · md padding 32 (v) / 32 left / 48 right, item spacing 48
h3. Scope
In scope : {{appearance}} + Supernova spacing at xs / md; existing usages default to {{default}}.
Out of scope : nested Button/Badge internals; other platforms.
h3. Dependencies
* Button + Badge components on [PLATFORM]
h3. Acceptance criteria
# {{appearance = card}} renders a {{bg-secondary}} surface with radius 20 and {{shadow-bevel}}; {{default}} renders transparent with no surface/shadow.
# Existing Hero usages default to {{default}} (backwards compatible) or migrate per the Supernova sub-page intent.
# {{breakpoint = xs}} stacks asset above content; {{md}} places content left / asset right.
# Asset has descriptive alt text; the CTA has a context-independent accessible label.
# All surfaces/spacing bound to tokens; light and dark verified.
h3. Definition of Done
* Matches the Figma v1.3 Specification (visual diff) at xs / md, light and dark
* Tokens only; no hard-coded values
* Tests updated; reviewed and merged; version v1.3; changelog updated
h3. QA / test notes
* Toggle appearance and breakpoint; verify card vs transparent and stacked vs side-by-side
* Long heading/subheading do not overflow at xs