Split Screen Launch

Auralis

(Not long now)

A calmer studio is almost ready to open.

We're building the workspace we always wished we had, and the first hundred seats go to the people on this list.

One email at launch. Nothing before, nothing after.

A calm, light-filled studio interior
(Opening autumn 2026)
About this block

Split Screen LaunchPRO

A full-height split coming-soon page with a dark brand panel carrying a wordmark, a monospace parenthetical eyebrow, a heading and a working email notify form, beside a full-bleed image with a floating launch label.

ComingSoon46: Split Screen Launch

A full-height Auralis split coming-soon page with a dark brand panel carrying a wordmark, a monospace parenthetical eyebrow, a heading, and a working email notify form, set beside a full-bleed image with a floating launch label.

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/comingsoon46?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

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

Quick start

The installed file exports comingsoon46Demo alongside the block: the exact props behind the preview above. Spread it to get a working split launch page in one line.

tsx
import { ComingSoon46, comingsoon46Demo } from "@/components/beste/block/comingsoon46";

export default function Page() {
  return <ComingSoon46 {...comingsoon46Demo} />;
}

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

tsx
import { ComingSoon46 } from "@/components/beste/block/comingsoon46";

export default function Page() {
  return (
    <ComingSoon46
      brand="Auralis"
      badge={{ label: "Not long now" }}
      labels={{
        placeholder: "you@studio.com",
        success: "You're on the list. We'll open the doors to you first.",
        note: "One email at launch. Nothing before, nothing after.",
        imageLabel: "Opening autumn 2026",
      }}
      heading="A calmer studio is almost ready to open."
      description="The first hundred seats go to the people on this list."
      image={{ src: "/studio.jpg", alt: "A calm, light-filled studio interior" }}
    />
  );
}

Props

PropTypeDefaultDescription
brandstringWordmark in the top corner of the brand panel
badgeBadgeParenthetical eyebrow rendered via Badge7
labelsComingSoon46Labels{}Form placeholder, success, note, and floating image label
headingstringStatement heading on the brand panel
descriptionstringSupporting paragraph under the heading
imageImageItemFull-bleed image on the right with a floating launch label
classNamestringExtra classes for the outer <section>
ts
type Badge = {
  label: string;
};

type ImageItem = {
  src: string;
  alt: string;
};

type ComingSoon46Labels = {
  placeholder?: string;
  success?: string;
  note?: string;
  imageLabel?: string;
};

Behavior notes

  • The email form owns its own state; handleSubmit calls preventDefault and only flips to the success pill when the trimmed email is non-empty, so there is no external callback to wire.
  • The labels.note line renders under the form only while the form has not been submitted, and disappears once the success pill takes its place.
  • The brand panel sits on a bg-foreground surface with text-background type; the badge and labels.imageLabel both render through Badge7 as monospace parenthetical eyebrows, the latter floating over the image on a translucent backdrop.
  • The image renders on the right only when image is set, as a plain <img> covering the panel, and its floating label renders only when labels.imageLabel is present.
  • Every string is plain text with no inline markup parsing, so any 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

comingsoon16

Image Split Waitlist

A two-column pre-launch section with a monospace parenthetical eyebrow, an oversized headline, a working rounded email-capture form with a success state, an avatar social-proof row, and a tall full-bleed image carrying a floating launch label.

PRO

comingsoon59

App Waitlist Split

An app pre-launch split card with a muted panel holding a wordmark, a monospace parenthetical eyebrow, a heading, a working email waitlist form and platform chips, beside a full-bleed image covering the other half.

PRO

comingsoon49

Framed Editorial Launch

A two-column coming-soon section with a vertical monospace edge label, an oversized wordmark, a tagline and a working email notify form, beside a framed portrait image tile.

PRO

comingsoon77

Full-Bleed Launch Countdown

A pre-launch section on a full-bleed photograph under a dark gradient, with a light display heading, four oversized countdown figures between hairline rules, and a working email capture card.

PRO

comingsoon63

Product Pre-Order Teaser

A product launch coming-soon section with a full-height product image beside a monospace parenthetical eyebrow, a product name, a tagline, a ship date, a working notify email form, and a spec grid.

PRO

comingsoon22

Coming Soon Notify Page

A centered coming-soon launch page with a brand wordmark, a square eyebrow, an accent-highlighted heading, a working email notify form with a success state, a launch note, and a row of social links.