SuperBanner
A super-banner communicates a high-priority state that affects an entire app, experience, process, or system. It is displayed prominently at the very top of the page, above all other content, to ensure maximum visibility for critical messages.
This headless component uses a <div> element with role="alert" for immediate screen reader announcement of high-priority information.
Example
Show demo markup
<div class="super-banner" role="alert">Critical system message</div>
Usage example
<SuperBanner label="System outage">
Our payment processing service is currently unavailable. We are working to restore it.
</SuperBanner>
Show Svelte source
// In your Svelte component:
import SuperBanner from "lily-design-system-svelte-headless/components/SuperBanner/SuperBanner.svelte";
<SuperBanner>
<!-- content -->
</SuperBanner>
Usage
<SuperBanner label="System outage">
Our payment processing service is currently unavailable. We are working to restore it.
</SuperBanner>
<SuperBanner label="Scheduled maintenance" dismissable ondismiss={handleDismiss}>
Planned maintenance on Saturday 12 April from 02:00 to 06:00 UTC. Save your work before then.
</SuperBanner>
<SuperBanner label="Security alert">
Your password was changed from a new device. If this was not you,
<a href="/account/security">review your account security</a> immediately.
</SuperBanner>
Props
label: string (optional) -- accessible label for the super banner
dismissable: boolean (default: false) -- whether the banner can be dismissed
ondismiss: callback (optional) -- handler called when banner is dismissed
children: slot (required) -- banner content
...restProps: Any additional HTML attributes
Keyboard Interactions
- Tab: Focus the dismiss button (if dismissable)
- Enter/Space: Dismiss the banner (if dismissable)
ARIA
role="alert" -- announces the banner content immediately to screen readers
aria-live="assertive" -- interrupts current speech for high-priority messages
aria-label -- optional description of the banner purpose
When to Use
- Use to communicate a high-priority state that affects the entire application, such as a system outage or emergency alert
- Use for global maintenance notices that must be visible on every page
- Use when the message requires immediate attention and cannot be missed, such as a security incident or data breach notification
- Use for regulatory or legal notices that must interrupt the user experience until acknowledged
When Not to Use
- Do not use for page-specific messages -- use Banner instead
- Do not use for form validation errors -- use ErrorSummary to summarize field errors
- Do not use for success confirmations -- use Banner with a success variant or Alert
- Do not use for routine notifications -- use Notification or Toast for transient messages
Headless
This component provides a <div> with role="alert" and aria-live="assertive" for immediate screen reader announcements, with zero visual styling. The consumer is responsible for all CSS including background color, text color, positioning, dismiss button, and responsive behavior.
Styles
The consumer provides all CSS styling. The component renders with a .super-banner class for targeting. No default styles are included -- this is a fully headless component.
Testing
- Verify the component renders a
<div> element with class super-banner
- Verify
role="alert" is present
- Verify
aria-live="assertive" is present
- Verify dismiss functionality works when dismissable
- Verify pass-through attributes are applied
Advice
- Designers: Use bold, high-contrast colors to distinguish super banners from regular content. Keep the message concise and actionable. Position at the very top of the viewport.
- Developers: Use
role="alert" for critical messages that need immediate attention. Provide a dismiss mechanism for non-persistent messages.
Implementation Notes
- Uses
<div> element with role="alert" for immediate screen reader announcement
aria-live="assertive" interrupts current speech to announce the message
- Positioned at the top of the page above all other content
- May include a dismiss button for user-dismissable banners
Related components
announcement-banner — a banner highlighting important messages for all users
banner — a prominent message bar across the top of a page
banner-box — a banner box that is inside a banner component, using flexbox horizontal
government-banner — a banner identifying a website as belonging to a government, with an expandable details panel
medical-banner — a prominent message bar across the top of a page, with medical information
medical-banner-box — a medical banner box that is inside a medical-banner component, using flexbox horizontal, with medical information
References
Canonical contract
Generated from this component's canonical metadata — the machine-checked source the implementations are held to.
Metadata
- Component: super-banner
- PascalCase: SuperBanner
- Description: a super-banner communicates a high-priority state that affects an entire app, experience, process, or system
- Status: beta — implemented and unit-tested in all seven frameworks with an axe-clean demo page; not yet exercised in composed flows
- HTML tag: <div>
- CSS class: .super-banner
- Interactive: yes
ARIA
role="alert" -- announces the banner content immediately aria-live="assertive" -- interrupts current speech for high-priority messages aria-label -- optional description of the banner purpose
Keyboard
- Tab: Focus the dismiss button (if dismissable)
- Enter/Space: Dismiss the banner (if dismissable)
Props
label: string (optional) -- accessible label for the super banner dismissable: boolean (default: false) -- whether the banner can be dismissed ondismiss: callback (optional) -- handler called when dismissed children: slot (required) -- banner content ...restProps: Any additional HTML attributes