Hero Sections

Launch Hero

A centered product hero with a restrained badge, headline, and CTAs.

ReactavailableIntermediate
herolandingcta
Author: Prism Bits
Live React preview
Loading preview…
"use client";

type LaunchHeroProps = {
  badge?: string;
  title?: string;
  subtitle?: string;
  primaryLabel?: string;
  secondaryLabel?: string;
  onPrimaryClick?: () => void;
  onSecondaryClick?: () => void;
};

export default function LaunchHero({
  badge = "Now in beta",
  title = "Launch products people remember",
  subtitle = "A focused landing hero with a badge, a strong claim, and two clear paths forward.",
  primaryLabel = "Start free",
  secondaryLabel = "See the demo",
  onPrimaryClick,
  onSecondaryClick,
}: LaunchHeroProps) {
  return (
    <section className="w-full max-w-2xl text-center">
      <span className="inline-block rounded-full border border-white/15 bg-white/[0.06] px-4 py-1.5 text-xs font-semibold uppercase tracking-[0.14em] text-cyan-200/80">
        {badge}
      </span>
      <h1 className="mt-6 text-balance text-4xl font-bold leading-tight text-white sm:text-5xl">{title}</h1>
      <p className="mx-auto mt-4 max-w-xl text-balance text-base leading-7 text-white/60">{subtitle}</p>
      <div className="mt-8 flex flex-wrap items-center justify-center gap-3">
        <button
          type="button"
          onClick={onPrimaryClick}
          className="rounded-2xl bg-white px-6 py-3 text-sm font-bold text-zinc-950 shadow-[0_14px_36px_rgb(0_0_0/0.35)] transition hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent"
        >
          {primaryLabel}
        </button>
        <button
          type="button"
          onClick={onSecondaryClick}
          className="rounded-2xl border border-white/15 bg-white/[0.07] px-6 py-3 text-sm font-bold text-white backdrop-blur transition hover:border-white/30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/70 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent"
        >
          {secondaryLabel}
        </button>
      </div>
    </section>
  );
}