Full-Bleed Launch Countdown

A healthcare professional smiling in a bright clinic
Opening soon

Sirius opens to every practice on 1 June

Eleven clinics have been running on it for a year. When the counter reaches zero the doors open, and the first hundred workspaces keep launch pricing permanently.

12

days

06

hours

48

minutes

31

seconds

One email when we open. Nothing before it and nothing after.

2,140 practice leads are already on the list.

About this block

Full-Bleed Launch CountdownPRO

A pre-launch section on a full-bleed photograph under a dark gradient, with a light display heading, four oversized countdown figures between hairline rules, and a working email capture card.

Comingsoon77: Full-Bleed Launch Countdown

A pre-launch section on a full-bleed photograph under a dark gradient, with a light display heading, four oversized countdown figures between hairline rules and a working email capture card.

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/comingsoon77?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/comingsoon77.tsx, the form36 capture piece it centers under the countdown (installed to components/beste/piece/form36.tsx), and the badge23 component it uses for the eyebrow.

Quick start

The installed file exports comingsoon77Demo alongside the block: the exact props behind the preview above. Spread it to get a working landing page in one line.

tsx
import { Comingsoon77, comingsoon77Demo } from "@/components/beste/block/comingsoon77";

export default function LaunchPage() {
  return <Comingsoon77 {...comingsoon77Demo} />;
}

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

tsx
import { Comingsoon77 } from "@/components/beste/block/comingsoon77";
import { Form36 } from "@/components/beste/piece/form36";

export default function LaunchPage() {
  return (
    <Comingsoon77
      badge={{ label: "Opening soon" }}
      heading="We open to every practice on 1 June"
      description="Eleven clinics have been running on it for a year."
      units={[
        { value: "12", label: "days" },
        { value: "06", label: "hours" },
        { value: "48", label: "minutes" },
        { value: "31", label: "seconds" },
      ]}
      media={
        <Form36
          label="Get the launch note"
          placeholder="you@practice.com"
          submitLabel="Join"
          finePrint="One email when we open."
        />
      }
      image={{ src: "/clinic/reception.jpg", alt: "A clinician in a bright clinic" }}
      note="2,140 practice leads are already on the list."
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Centered eyebrow, retoned for the dark scrim
headingstringDisplay heading, rendered as the page h1
descriptionstringCentered supporting paragraph, capped at max-w-xl
unitsCountdownUnit[][]Countdown figures with their unit labels
mediaReactNodeCapture card under the countdown, form36 in the demo
image{ src: string; alt: string }Full-bleed photograph behind everything
notestringSmall centered line under the capture card
classNamestringExtra classes for the outer section
ts
type BandImage = {
  src: string;
  alt: string;
};

type CountdownUnit = {
  value: string;
  label: string;
};

Behavior notes

  • The countdown is static copy. units holds strings, and the block runs no timer, which keeps it safe to server-render with no hydration mismatch between the server's clock and the browser's. Wiring a live counter means adding state around this block.
  • Because the values are strings, pad them yourself. The demo passes "06" rather than 6, and tabular-nums keeps the columns from shifting as digits change.
  • The section is bg-foreground under the photograph, so a missing or slow image still leaves white text on a dark surface rather than an unreadable flash.
  • The gradient runs bottom-up (from-foreground/95 to to-foreground/60), which is heaviest where the capture card sits, so the form stays legible over the busiest part of most photographs.
  • The countdown row uses border-y on the container and gap-px between cells, so the figures sit between two rules rather than inside a boxed table.
  • Units go two-up on mobile and four-up from sm, so a four-unit countdown never leaves a single orphan on its own line.
  • This block sets its own vertical rhythm (py-20, then md:py-32) rather than the set's usual py-16 md:py-24, since it is designed to be the whole page rather than a section of one.

Wiring the form up

The capture card 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 this shape of single-field form.

More Coming Soon blocks

View all Coming Soon
PRO

comingsoon18

Launch Season Reveal

A full-bleed image pre-launch hero with a dark overlay, a monospace parenthetical eyebrow, a small kicker, an oversized launch-date headline, a supporting line, and a light outline pill notify button.

PRO

comingsoon33

Video Teaser Reveal

A full-bleed image pre-launch teaser with a dark overlay, a monospace parenthetical eyebrow, a central play button that opens the teaser video in a modal, a heading and supporting line, and a light outline waitlist pill button.

PRO

comingsoon52

Image Mosaic Notify

A coming-soon section with a full-bleed image mosaic background under a dark overlay and a centered card holding a square eyebrow, a heading, a description, and a working email notify form with a success state.

PRO

comingsoon16

Image Split Waitlist

A two-column pre-launch section with a monospace parenthetical eyebrow, an oversized headline, a working rounded email-capture form with a success state, an avatar social-proof row, and a tall full-bleed image carrying a floating launch label.

PRO

comingsoon15

Waitlist Coming Soon

A centered pre-launch section with an eyebrow, a large light heading, a paragraph, an image tile holding a working email-capture form with a success state, and a social-proof note.

PRO

comingsoon63

Product Pre-Order Teaser

A product launch coming-soon section with a full-height product image beside a monospace parenthetical eyebrow, a product name, a tagline, a ship date, a working notify email form, and a spec grid.