A launch-event coming-soon section on a soft muted card with a monospace parenthetical eyebrow, a heading, a when and where row, a working RSVP email form, an outline add-to-calendar pill button, and an attendee avatar row.
A monochrome launch-event card that centers a parenthetical eyebrow, an invitation heading, a when-and-where meta row, and a supporting paragraph over a soft muted surface, then pairs a working RSVP email form and its success state with an add-to-calendar button and an attendee avatar row for social proof.
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.
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
npx shadcn add "https://ui.beste.co/r/comingsoon75?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/comingsoon75?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/comingsoon75.tsx.
The installed file exports comingsoon75Demo alongside the block: the exact props behind the preview above. Spread it to get a working RSVP page in one line.
import { ComingSoon75, comingsoon75Demo } from "@/components/beste/block/comingsoon75";
export default function Page() {
return <ComingSoon75 {...comingsoon75Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { ComingSoon75 } from "@/components/beste/block/comingsoon75";
export default function Page() {
return (
<ComingSoon75
badge={{ label: "Launch party" }}
heading="You're invited to the launch."
description="A short live show to open the doors, with first access for everyone watching."
button={{ label: "Add to calendar", href: "/launch.ics" }}
attendees={[
{ src: "/people/ava.jpg", alt: "Ava" },
{ src: "/people/theo.jpg", alt: "Theo" },
{ src: "/people/priya.jpg", alt: "Priya" },
]}
labels={{
when: "Oct 24, 6pm GMT",
where: "Live, online",
placeholder: "you@studio.com",
success: "You're on the guest list. We'll send the link before we go live.",
proof: "320 people are coming",
}}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow badge rendered above the heading via Badge7 |
heading | string | – | Invitation heading |
description | string | – | Supporting paragraph under the meta row |
button | ActionLink | – | Add-to-calendar link rendered via Button12 with a CalendarPlus icon |
attendees | AvatarItem[] | [] | Overlapping avatar stack shown as social proof |
labels | ComingSoon75Labels | {} | When and where meta text plus the form placeholder, success, and proof strings |
className | string | – | Extra classes for the outer <section> |
type ActionLink = {
label: string;
href: string;
};
type AvatarItem = {
src: string;
alt: string;
};
type ComingSoon75Labels = {
when?: string;
where?: string;
placeholder?: string;
success?: string;
proof?: string;
};handleSubmit calls preventDefault and only flips when the trimmed email is non-empty, so there is no external callback to wire.button renders as an add-to-calendar link via Button12 asChild wrapping a Next.js <Link href={button.href} /> with the outline tone, and it is hidden once the form is submitted.labels.when or labels.where is set, with a Clock icon beside the time, and the proof block renders when either attendees or labels.proof is present.bg-muted surface in a max-w-3xl column, and every string is plain text with no inline markup parsing, so HTML passed in shows as escaped text.-space-x-3 overlapping stack of plain <img> elements with border-muted rings that blend into the card surface.Wiring the form up
The RSVP form ships with local state and a success message but no backend, so submissions are not sent anywhere until you connect one. Point handleSubmit at your own route handler or email platform, or wire in a form library. For a walkthrough of the options, see React Hook Form, TanStack Form, and Formisch.
comingsoon72
An art exhibition coming-soon section with an artwork image beside a monospace parenthetical eyebrow, a show title, an artist line, a preview and dates list, and a working RSVP email form.
comingsoon61
A community coming-soon section on a soft muted card with a monospace parenthetical eyebrow, a heading, a working email waitlist form, a secondary outline community pill button, and an avatar row with a member count.
comingsoon57
An event coming-soon section with a square eyebrow, an event name and heading, a date and venue meta row with icons, a working ticket-alert email form, and a speaker avatar row.
comingsoon50
A coming-soon section on a soft muted card with a monospace parenthetical eyebrow, a heading, a launch-readiness percentage that counts up with an animated progress bar, a build-status row, and a working email notify form.