PhaseBanner

A small banner that signals a service is in alpha or beta and points to a feedback link, setting honest expectations for early users that the service is still changing.

The pattern was popularised by GOV.UK to flag that a service is being iterated on, so users know that things may move and that their feedback is wanted. The component is intentionally lightweight: a phase tag rendered as a <strong> next to short descriptive text supplied by the consumer (typically containing a feedback link). It has no role="alert" semantics — phase status is meta-information about the service, not an interruption — but consumers can promote it to a landmark by adding role="region" + aria-label if their layout calls for it.

For service-wide announcements that aren't about development phase, use AnnouncementBanner. For ad-hoc top-of-page banners, use Banner.

Example

PhaseBanner
Show demo markup
<div class="phase-banner" aria-label="a banner showing service development phase and inviting feedback">PhaseBanner</div>
Usage example
<PhaseBanner phase="Beta">
  This is a new service – your <a href="/feedback">feedback</a> will help us improve it.
</PhaseBanner>
Show Svelte source
// In your Svelte component:
import PhaseBanner from "lily-design-system-svelte-headless/components/PhaseBanner/PhaseBanner.svelte";

<PhaseBanner>
  <!-- content -->
</PhaseBanner>

Usage

<PhaseBanner phase="Beta">
  This is a new service – your <a href="/feedback">feedback</a> will help us improve it.
</PhaseBanner>

Props

PropTypeDefaultDescription
phasestring (required)—Phase label, e.g. "Alpha", "Beta", "Live"
childrenslot (required)—Descriptive text and feedback link
...restPropsHTML attributes—Spread onto the root <div>

Keyboard Interactions

  • Native anchor keyboard behaviour applies for any feedback link inside the banner

ARIA

  • Native semantics — no special ARIA needed
  • Consumers may add role="region" + aria-label if they treat this banner as a landmark

When to Use

  • Indicating that a service is in alpha or beta and inviting feedback from early users
  • Communicating that a service is iterating quickly and may change

When Not to Use

  • Use AnnouncementBanner for service-wide messages unrelated to development phase
  • Use Banner for general-purpose top-of-page banners

Headless

This headless component renders semantic HTML with appropriate ARIA wiring. The consumer provides all visual styling — no CSS, animations, or layout assumptions are baked in.

Styles

The component renders with .phase-banner as the root class. No default styles are included.

Related components

  • announcement-banner — service-wide messages
  • banner — generic top banner
  • status-tag — single-element status indicator

References

Implementation Notes

  • Renders a <div> with an embedded phase tag (e.g. "Alpha", "Beta") and a feedback link
  • The phase tag is rendered as a <strong> so it is semantically emphasised
  • Children slot is reserved for the descriptive text (often containing the feedback link)
  • Renders no role by default — the banner is meta-information about the service, not a landmark
  • Spreads restProps onto the root <div> for consumer customization

Canonical contract

Generated from this component's canonical metadata — the machine-checked source the implementations are held to.

Metadata

  • Component: phase-banner
  • PascalCase: PhaseBanner
  • Description: a banner showing service development phase and inviting feedback
  • 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: .phase-banner
  • Interactive: no

ARIA

  • Native semantics — no special ARIA needed
  • Consumers may add role="region" + aria-label if they treat this banner as a landmark

Keyboard

  • Native anchor keyboard behaviour applies for any feedback link inside the banner

Props

  • phase: string (required) (default: —) — Phase label, e.g. "Alpha", "Beta", "Live"
  • children: slot (required) (default: —) — Descriptive text and feedback link
  • ...restProps: HTML attributes (default: —) — Spread onto the root <div>