Launch Countdown CTA

Early access

The doors open in twelve days

Sirius is running in eleven practices already. When the counter reaches zero it opens to everyone, and the first hundred workspaces keep launch pricing for good.

Deep green gradient backdrop

Opens to everyone in

12

days

06

hrs

48

min

Launch pricing stops when the counter does.

Soft blue gradient backdrop

One email when we open the doors. Nothing else, ever.

Already on the list? We will write to the address you signed up with, nowhere else.

About this block

Launch Countdown CTAPRO

A closing call to action with centered copy above two image tiles, one floating a live countdown and the other an inline email capture, closing on a line of fine print.

Cta81: Launch Countdown CTA

A closing call to action with centered copy above two image tiles, one floating a live countdown and the other an inline email capture, closing on a line of fine print.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/cta81?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/cta81?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/cta81.tsx, the event12 countdown and form36 capture pieces it floats on the two tiles (installed to components/beste/piece/{name}.tsx), and the badge23 component it uses for the eyebrow.

Quick start

The installed file exports cta81Demo alongside the block: the exact props behind the preview above. Spread it to get a working call to action in one line.

tsx
import { Cta81, cta81Demo } from "@/components/beste/block/cta81";

export default function Page() {
  return <Cta81 {...cta81Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Cta81 } from "@/components/beste/block/cta81";
import { Event12 } from "@/components/beste/piece/event12";
import { Form36 } from "@/components/beste/piece/form36";

export default function Page() {
  return (
    <Cta81
      badge={{ label: "Early access" }}
      heading="The doors open in twelve days"
      description="When the counter reaches zero it opens to everyone, and the first hundred workspaces keep launch pricing for good."
      countdown={{
        media: (
          <Event12
            title="Opens to everyone in"
            units={[
              { value: "12", label: "days" },
              { value: "06", label: "hrs" },
              { value: "48", label: "min" },
            ]}
            caption="Launch pricing stops when the counter does."
          />
        ),
        image: { src: "/backdrops/green.jpg", alt: "Deep green gradient backdrop" },
      }}
      capture={{
        media: (
          <Form36
            label="Get the launch note"
            placeholder="you@practice.com"
            submitLabel="Join"
            finePrint="One email when we open the doors. Nothing else, ever."
          />
        ),
        image: { src: "/backdrops/blue.jpg", alt: "Soft blue gradient backdrop" },
      }}
      note="Already on the list? We will write to the address you signed up with."
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Centered eyebrow above the heading, rendered through Badge23
headingstringSection heading, centered and capped at max-w-2xl
descriptionstringCentered supporting paragraph, capped at max-w-xl
countdownPanelLeft tile, carrying its own asset and optional backdrop
capturePanelRight tile, same shape as countdown
notestringCentered fine print under the tiles
classNamestringExtra classes for the outer section
ts
type Panel = {
  media: ReactNode;
  image?: TileImage;
};

type TileImage = {
  src: string;
  alt: string;
};

Behavior notes

  • The two panels are separate named props rather than an array, so each slot has a fixed meaning. That is deliberate: the layout is a countdown beside a capture, not a generic pair of tiles.
  • Panels render independently. Passing only capture leaves a single tile in the left grid column rather than centering it, so pass both or adjust the grid yourself.
  • media is required on a panel while image is optional, so a tile can float its asset on the plain muted surface.
  • The capture form lives entirely inside the form36 piece. This block holds no form state and has no submit handler, so wiring the subscribe call is done on the piece.
  • The tiles are fixed height per breakpoint (h-64, then md:h-72) and sit in a plain md:grid-cols-2, so both stay the same size regardless of what the pieces inside them contain.
  • note is capped at max-w-xl and centered independently of the tiles, which keeps the fine print at a readable measure under a much wider row.

Wiring the form up

The email capture is a presentational piece with no submit handling of its own. When you connect it to a real list, the patterns in React Hook Form, TanStack Form, and Formisch cover validation and submission for exactly this shape of single-field form.

More CTA blocks

View all CTA
PRO

cta26

Countdown CTA

Urgency-driven call-to-action with countdown numbers and limited-time offer messaging. Perfect for launches and time-sensitive promotions.

PRO

cta91

Handheld Reminder CTA

A closing call to action that leads with a narrow portrait tile floating a live phone frame, then sets centered copy and two actions beneath it over three hairline promises.

PRO

cta104

Photo Button CTA

A call to action with the text above the picture: a centred serif heading that settles in word by word and an intro, then a wide rounded photograph drifting under a light scrim and film grain with a single large sliding-marker pill at its centre.

PRO

cta74

Centered Closing CTA

A centered call to action with an eyebrow pill, a large light heading, a short paragraph, and two accent buttons on a clean surface.

PRO

cta84

Photo Band Story CTA

A closing call to action set on a photographic panel with a directional gradient, pairing an eyebrow badge, light heading, and two actions with a live customer quote card.

PRO

cta76

Plan-Led Centered CTA

A centered call to action led by a floating plan price card on an image tile, followed by an eyebrow, a large light heading, a paragraph, two accent buttons, and a reassurance note.