Skip to content

Waitlist Capture Hero

A waitlist hero that actually captures: validation, pending, success and queue position.

DOM + CSS1 dep1 file · 2 KB TSX

ProDark Precisionminimaleditorial
Preview

Props

Show signup count

The source is part of Pro

$27/month or $179 once. See Pro

Requires lucide-react
"use client";

// Full-size shippable hero. The registry preview above is a scaled-down
// stand-in for this component at normal type scale.
import { ArrowRight } from "lucide-react";

function WaitlistForm({ ctaLabel, accent }: { ctaLabel: string; accent: string }) {
  return (
    <form
      onSubmit={(e) => e.preventDefault()}
      className="flex w-full max-w-lg items-center gap-2 rounded-full border border-slate-200 bg-white p-2 shadow-sm"
    >
      <input
        type="email"
        maxLength={254}
        required
        placeholder="you@company.com"
        className="min-w-0 flex-1 rounded-full bg-transparent px-5 py-3 text-base text-slate-900 placeholder:text-slate-400 focus:outline-none"

  // ---------------------------------------------------------------
  // Full source available with a viberdy Pro subscription.
  // https://viberdy.dev/pricing
  // ---------------------------------------------------------------
}
Details

About this heroe

Most heroes treat the CTA as a small button at the end of a sentence; this one inverts that ratio and makes the form the largest single object in the section, sized and weighted the way a product screenshot usually would be. It fits a pre-launch or early-access page where joining the list IS the entire ask, and it stops making sense the moment a product is generally available — a giant email-capture pill on a live product's homepage reads as a bug, not a choice, because the real CTA at that point is "use it," not "wait for it." The proof-count line beneath the form is deliberately small and optional (toggle via `showCount`): it's a secondary reassurance, not a second hero, and letting it grow to logo-wall size would undercut the single-object idea the whole layout is built on. Caveat: the form calls `preventDefault` and does nothing else — it is a UI shell, not a working submission; wire up real handling before shipping.

Pairs well with

Pro
Pro