Image Mosaic Notify

Studio work sampleStudio work sampleStudio work sampleStudio work sampleStudio work sampleStudio work sampleStudio work sampleStudio work sample
Nearly Open

The gallery opens soon.

A new home for the work our community makes. Leave your email and be the first one through the doors.

Join 4,000+ people already waiting.

About this block

Image Mosaic NotifyPRO

A coming-soon section with a full-bleed image mosaic background under a dark overlay and a centered card holding a square eyebrow, a heading, a description, and a working email notify form with a success state.

ComingSoon52: Image Mosaic Notify

A Polaris coming-soon section that tiles a full-bleed image mosaic under a dark overlay and centers a single-accent notify card holding a square eyebrow, a heading, a description, and a working email form that swaps to a success state.

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

Base UI flavor

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

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

Quick start

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

tsx
import { ComingSoon52, comingsoon52Demo } from "@/components/beste/block/comingsoon52";

export default function Page() {
  return <ComingSoon52 {...comingsoon52Demo} />;
}

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

tsx
import { ComingSoon52 } from "@/components/beste/block/comingsoon52";

export default function Page() {
  return (
    <ComingSoon52
      label="Nearly open"
      heading="The gallery opens soon."
      description="A new home for the work our community makes. Leave your email and be first through the doors."
      images={[
        { src: "/mosaic/one.jpg", alt: "Studio work sample" },
        { src: "/mosaic/two.jpg", alt: "Studio work sample" },
        { src: "/mosaic/three.jpg", alt: "Studio work sample" },
        { src: "/mosaic/four.jpg", alt: "Studio work sample" },
      ]}
      labels={{
        placeholder: "Enter your email",
        success: "You're on the list. We'll be in touch at launch.",
        note: "Join 4,000+ people already waiting.",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringSquare eyebrow rendered above the heading via Badge6
labelsComingSoon52Labels{}Form placeholder, success, and note strings
headingstringNotify card heading
descriptionstringSupporting paragraph under the heading
imagesImageItem[][]Background mosaic tiles rendered in a grid
classNamestringExtra classes for the outer <section>
ts
type ImageItem = {
  src: string;
  alt: string;
};

type ComingSoon52Labels = {
  placeholder?: string;
  success?: string;
  note?: string;
};

Behavior notes

  • The notify form owns its email state and swaps to a success panel on submit; handleSubmit calls preventDefault and only flips when the trimmed email is non-empty, so there is no external callback to wire.
  • The background mosaic renders only when images is non-empty, tiling plain <img> elements in a grid-cols-2 / md:grid-cols-4 grid at -z-20, with a bg-foreground/70 overlay at -z-10 above them.
  • The notify card is a centered bg-background panel in a max-w-md column, so its content always sits above the image and overlay layers.
  • The eyebrow, heading, and description each render only when their prop is present, and the note line renders under the form only while the form has not been submitted.
  • 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

comingsoon55

Image Notify Bar

A full-bleed image coming-soon hero with a bottom gradient and light text, a square eyebrow, a large heading and a supporting line, beside a solid notify card holding a working email form with a success state.

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

comingsoon50

Launch Readiness Progress

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.

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

comingsoon15

Waitlist Coming Soon

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.

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.