Waitlist Page
A single-purpose pre-launch page: headline, email capture form, and a joined-count signal.
DOM + CSS1 dep1 file · 3 KB TSX
Props
// Full, shippable page — real size at normal type scale. The registry
// preview above is a scaled-down miniature of this same composition, not
// a different component.
"use client";
import { useState } from "react";
import { ArrowRight, Check } from "lucide-react";
export default function WaitlistPage({
productName = "Nova",
accentLabel = "Coming soon",
signupCount = 500,
}: {
productName?: string;
accentLabel?: string;
signupCount?: number;
}) {
const [email, setEmail] = useState("");
// ---------------------------------------------------------------
// Full source available with a viberdy Pro subscription.
// https://viberdy.dev/pricing
// ---------------------------------------------------------------
}Details
About this page template
A waitlist page has exactly one conversion path, so this composition removes everything a normal landing page includes that could compete with it — there is no nav, no secondary links, nothing above the fold but the headline and the form. That single-column focus is the point: every pixel argues for one action. The non-obvious detail is what happens on submit — the form is replaced outright with a checkmark confirmation rather than merely disabled, because a disabled-but-still-visible form leaves visitors unsure whether the click registered. The avatar-stack-plus-count beneath the form borrows the same social-proof instinct as a landing page's logo band, just compressed to fit a page with far less room to earn trust. Caveat: signup submission here is local component state only, with no real persistence or email validation beyond the native `required`/`type="email"` attributes — wire it to an actual endpoint before launch.


