Banners

Page-top promo strip in light / dark / brand color variants, optional CTA, optional dismiss button.

Preview

React preview

LiveView (HEEx)

alias DesignSystem.UI.Banners
alias Phoenix.LiveView.JS

<Banners.banner
  color="brand"
  id="launch-banner"
  on_dismiss={JS.hide(to: "#launch-banner")}
>
  <:message>
    <strong class="font-semibold">Launch sale</strong>
    Save 20% through Friday.
  </:message>
  <:cta href={~p"/pricing"}>Shop now</:cta>
</Banners.banner>

React (JSX)

import { useState } from "react"
import { Banner } from "../ui/index.mjs"

function LaunchBanner() {
  const [open, setOpen] = useState(true)
  if (!open) return null
  return (
    <Banner
      color="brand"
      message={<><strong>Launch sale.</strong> Save 20% through Friday.</>}
      cta="Shop now"
      ctaHref="/pricing"
      onDismiss={() => setOpen(false)}
    />
  )
}