Under Construction Contact

Beste Studio

Site Coming Soon

Our new site is on its way. Let's talk in the meantime.

We're a product studio for teams who care about the details. The full site lands soon, but we're always happy to hear about your project.

Email
hello@beste.co
Phone
+1 (415) 555-0132
Studio
San Francisco, CA

Start a conversation

About this block

Under Construction ContactPRO

A B2B coming-soon section with a studio name, a square eyebrow, a heading, an icon contact-details list, and a working name, email, and message contact form with a success state.

ComingSoon64: Under Construction Contact

A Polaris coming-soon section (single accent color, square eyebrow) that runs a two-column layout: a studio name, an eyebrow, a heading, a description, and an icon contact-details list on the left, paired with a working name, email, and message contact form that swaps to a success state on the right.

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

Base UI flavor

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

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

Quick start

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

tsx
import { ComingSoon64, comingsoon64Demo } from "@/components/beste/block/comingsoon64";

export default function Page() {
  return <ComingSoon64 {...comingsoon64Demo} />;
}

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

tsx
import { ComingSoon64 } from "@/components/beste/block/comingsoon64";

export default function Page() {
  return (
    <ComingSoon64
      brand="Beste Studio"
      label="Site Coming Soon"
      heading="Our new site is on its way. Let's talk in the meantime."
      description="We're a product studio for teams who care about the details."
      contacts={[
        { label: "Email", value: "hello@beste.co" },
        { label: "Phone", value: "+1 (415) 555-0132" },
        { label: "Studio", value: "San Francisco, CA" },
      ]}
      labels={{
        formTitle: "Start a conversation",
        namePlaceholder: "Your name",
        emailPlaceholder: "Your email",
        messagePlaceholder: "What can we help with?",
        submitLabel: "Send message",
        success: "Thanks, we've got it. We'll reply within one business day.",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
brandstringStudio or company name shown above the eyebrow
labelstringSquare eyebrow rendered via Badge6
labelsComingSoon64Labels{}Form title plus the placeholder, submit, and success strings
headingstringSection heading
descriptionstringSupporting paragraph under the heading
contactsContactItem[][]Contact detail rows with a rotating icon per row
classNamestringExtra classes for the outer <section>
ts
type ContactItem = {
  label: string;
  value: string;
};

type ComingSoon64Labels = {
  namePlaceholder?: string;
  emailPlaceholder?: string;
  messagePlaceholder?: string;
  submitLabel?: string;
  success?: string;
  formTitle?: string;
};

Behavior notes

  • The contact form owns its name, email, and message state; handleSubmit calls preventDefault and only flips to the success panel when both the trimmed name and email are non-empty, so there is no external callback to wire.
  • Submitting swaps the whole form for a centered success panel with a Check icon and the success string; there is no way back to the form without a reload.
  • The submit control is a full-width <button type="submit"> styled as a solid accent bar, not a seal-style Polaris button.
  • Contact rows cycle a fixed [Mail, Phone, MapPin] icon array by index, so the fourth row wraps back to the mail icon.
  • Every region is optional: the brand, eyebrow, heading, description, and contact list each render only when their prop is present.
  • No inline markup is parsed: every string renders as plain text, 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

comingsoon67

Fitness Studio Founding List

A fitness coming-soon section with a studio name, a square eyebrow, a heading and a working founding-membership email form, beside a card previewing a week of the class schedule.

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

comingsoon74

Version Two Relaunch

A relaunch coming-soon section with a centered square eyebrow and heading, a working early-access email form, and a grid of what's-new feature cards with icons.

PRO

comingsoon60

Portfolio Under Construction

A personal coming-soon page with a monospace parenthetical eyebrow, an oversized name, a role and tagline, an email contact pill button, a row of social links, and an availability status line.

PRO

comingsoon57

Event Tickets Coming Soon

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.

PRO

comingsoon58

Store Drop Coming Soon

An e-commerce coming-soon section with a square eyebrow, a heading, a drop-date card, a grid of product teaser cards with blurred prices, and a working email notify form with a success state.