Invite Code Access

(Invite only)

The first doors open by invitation.

Enter the code a member shared with you to step inside today, or add your name and we'll send one as seats free up.

Have an invite code?

About this block

Invite Code AccessPRO

An invite-only pre-launch card on a soft muted surface with a monospace parenthetical eyebrow, a heading, a working invite-code redemption form with a success state, and a fallback waitlist pill button.

ComingSoon34: Invite Code Access

A monochrome, editorial invite-only pre-launch card on a soft muted surface with a parenthetical eyebrow, a heading, a supporting line, a working invite-code redemption form that swaps to a success state, and a border-topped fallback waitlist pill button.

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.

Upgrade Now

Installation

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

bash
npx shadcn add "https://ui.beste.co/r/comingsoon34?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/comingsoon34?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/comingsoon34.tsx.

Quick start

The installed file exports comingsoon34Demo alongside the block: the exact props behind the preview above. Spread it to get a working access card in one line.

tsx
import { ComingSoon34, comingsoon34Demo } from "@/components/beste/block/comingsoon34";

export default function Page() {
  return <ComingSoon34 {...comingsoon34Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { ComingSoon34 } from "@/components/beste/block/comingsoon34";

export default function Page() {
  return (
    <ComingSoon34
      badge={{ label: "Invite only" }}
      heading="The first doors open by invitation."
      description="Enter the code a member shared with you, or add your name for one later."
      button={{ label: "Join the waitlist", href: "/waitlist" }}
      labels={{
        codeCaption: "Have an invite code?",
        codePlaceholder: "AURALIS-XXXX",
        success: "Code accepted. Your studio is unlocking now.",
        orLabel: "No code yet?",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Parenthetical eyebrow rendered above the heading via Badge7
labelsComingSoon34Labels{}Code caption and placeholder, the success message, and the fallback caption
headingstringSection heading
descriptionstringSupporting paragraph under the heading
buttonActionLinkFallback waitlist link rendered via Button12 with the outline tone
classNamestringExtra classes for the outer <section>
ts
type ComingSoon34Labels = {
  codeCaption?: string;
  codePlaceholder?: string;
  success?: string;
  orLabel?: string;
};

type ActionLink = {
  label: string;
  href: string;
};

Behavior notes

  • The invite-code form owns its input state and swaps to a success panel on submit; handleSubmit calls preventDefault and only flips when the trimmed code is non-empty, so any non-empty value is accepted and there is no external validation.
  • The code input uppercases what you type via uppercase tracking-wider, while the placeholder keeps its normal case, so entered codes read as AURALIS-XXXX regardless of the casing you press.
  • The fallback button renders via Button12 asChild wrapping a Next.js <Link href={button.href} /> with the outline tone in a border-t footer, and both it and its orLabel caption are hidden once a code is redeemed.
  • The eyebrow, heading, description, caption, and fallback button each render only when their prop or label is present.
  • Every string is plain text with no inline markup parsing, so HTML passed in shows as escaped text.

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.

More Coming Soon blocks

View all Coming Soon
PRO

comingsoon32

Trusted By Waitlist

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.

PRO

comingsoon61

Community Launch Waitlist

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.

PRO

comingsoon23

Founding Member Offer

A bordered pre-launch offer card with a square eyebrow, a heading, a checked benefit list, a seats-claimed progress bar, and a working rounded email-capture form with a success state.

PRO

comingsoon19

Pre-Launch Manifesto

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.

PRO

comingsoon26

Countdown Studio Card

A pre-launch countdown on a soft muted card with a monospace parenthetical eyebrow, a bold wordmark, a heading, a live four-unit ruled countdown to a target date, and a reserve-seat pill button.

PRO

comingsoon44

Founder Note Waitlist

A personal pre-launch section with a square eyebrow, a statement heading, a short founder note in paragraphs, and a signature row with avatar beside a dark seal waitlist button.