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.
An Auralis coming-soon section on a soft muted card with a monospace parenthetical eyebrow, a heading, a launch-readiness percentage that counts up alongside an animated progress bar, a build-status row, and a working email notify form.
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/comingsoon50?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/comingsoon50?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/comingsoon50.tsx.
The installed file exports comingsoon50Demo alongside the block: the exact props behind the preview above. Spread it to get a working readiness section in one line.
import { ComingSoon50, comingsoon50Demo } from "@/components/beste/block/comingsoon50";
export default function Page() {
return <ComingSoon50 {...comingsoon50Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { ComingSoon50 } from "@/components/beste/block/comingsoon50";
export default function Page() {
return (
<ComingSoon50
badge={{ label: "In the final stretch" }}
labels={{
progressCaption: "Launch readiness",
placeholder: "you@studio.com",
success: "You're on the list. We'll write the moment we hit 100.",
note: "We launch when it's ready, not a day before.",
}}
heading="Almost everything is in place."
description="Leave your address and we'll bring you in the instant the bar fills."
progress={87}
statuses={[
{ label: "Design locked", done: true },
{ label: "Final testing", done: false },
{ label: "Opening day", done: false },
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | Badge | – | Parenthetical eyebrow rendered via Badge7 |
labels | ComingSoon50Labels | {} | Progress caption, form placeholder, success, and note |
heading | string | – | Statement heading |
description | string | – | Supporting paragraph under the heading |
progress | number | 0 | Launch-readiness percentage, clamped to 0 through 100 |
statuses | StatusItem[] | [] | Build-status row of done and pending steps |
className | string | – | Extra classes for the outer <section> |
type StatusItem = {
label: string;
done?: boolean;
};
type Badge = {
label: string;
};
type ComingSoon50Labels = {
progressCaption?: string;
placeholder?: string;
success?: string;
note?: string;
};progress value is clamped to the 0 through 100 range before use, so out-of-range numbers still produce a valid bar.IntersectionObserver at threshold: 0.4 watches the progress block and flips a started flag the first time it scrolls into view, then disconnects, so the animation runs once.requestAnimationFrame loop with a cubic ease-out over 1400ms counts the percentage from zero up to the clamped value, while the bar width transitions from 0% to the clamped percent via a CSS transition-[width].0% until the observer fires.statuses row renders a Check badge when done is true or a pulsing dot otherwise, and the row renders only when the array is non-empty.handleSubmit calls preventDefault and only flips to the success pill when the trimmed email is non-empty, and labels.note renders under the form only while it has not been submitted.Wiring the form up
The 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.
comingsoon19
A pre-launch manifesto section on a soft muted card with a monospace parenthetical eyebrow, a large statement heading, and a three-column ruled list of numbered building principles above a follow-along pill button.
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.
comingsoon15
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.
comingsoon32
A centered pre-launch section with a monospace parenthetical eyebrow, a statement heading, a supporting paragraph, a waitlist pill button, and a captioned grayscale logo strip of early partners.