Staaarter

Countdown Clock Waitlist

A centered coming-soon screen built around a large, live days:hours:minutes:seconds countdown to a target launch date. Below it sits a working email capture form with a success state, and a row of overlapping subscriber avatars for social proof.

By Staaarter Team
Coming Soon
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its avatar, avatar-initials dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/countdown-clock-waitlist.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/coming-soon/comingsoon36.tsx instead.

Usage

The file also exports comingsoon36Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { ComingSoon36, comingsoon36Demo } from "@/components/blocks/coming-soon/comingsoon36";

export default function Page() {
  return <ComingSoon36 {...comingsoon36Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstring"Coming soon"Small label above the heading.
headingstring"Something big is"First half of the main heading.
headingAccentstring"almost here"Accent-colored second half of the heading.
descriptionstring"We're putting the finishing touches on it..."Supporting copy under the heading.
targetDatestringnoneISO date string the countdown clock counts down to.
membersWaitlistMember[]noneMembers shown as overlapping avatars for social proof.
memberCountLabelstring"3,482 people already on the list"Label shown next to the avatar row.
classNamestringnoneExtra classes for the outer section element.

Types

export interface WaitlistMember {
  name: string;
  avatarSrc?: string;
}

Behavior notes

  • The countdown clock is real client state: an effect computes `targetDate` minus `Date.now()` once on mount and again every second via `setInterval`, rendering `--` placeholders until the first tick resolves so nothing is computed during render.
  • The email form is real client state, submitting flips it to a success message, no network request is made anywhere.
  • Avatars fall back to initials (via `initialsFromName`) when no `avatarSrc` is provided, same pattern as the other waitlist blocks in this category.