Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Signup Form Hero Block for React

A split hero with a sign-up form on the page: copy and ticks at the start, and a card in card form at the end with a work email, a password and a Shine Button that shows a spinner, then a confirmation.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A split-layout hero with the sign-up form right on the page, for React with Base UI, shown for Bramble, a managed Postgres service. The copy side has an announcement pill, the headline, one sentence and three ticks, with a faint monochrome glow behind the headline. The form side is a card in card: a tinted shell with + marks on its four corners, drawn with Guides, around a raised panel with a ring and a soft shadow. Inside are a Create your account heading, a work email, a password with a show/hide button and a ShineButton submit that shows a spinner while it works, then a Check your inbox confirmation takes the form's place, with the address that was entered. A sign-in link and the terms sit under the button. There is no divider: the shell is the only interior line. It's built from Announcement, Status, Field, Input, Password Input, Shine Button and Guides with Lucide icons and Tailwind CSS. For developer tools and SaaS products that want sign-ups without a separate page.

FAQ

How do I add or remove a field?

Each field is a Field with a FieldLabel and its control, inside the form's FieldGroup. Copy one to add a field (a full name or a company, say) and change its label, name, type and autoComplete, or delete one to drop it. The group spaces the fields for you. Keep autoComplete on each field: browsers and password managers use it to fill the form, and to offer a strong password on the password field (new-password). The first screen of a phone is tight, so the more fields you add, the further the button moves down.

How do I connect the form to my sign-up?

The block's signUp handler reads the form's values with FormData, then waits a moment in place of a real call. Replace that wait with your call: set the phase to sending before it, to done when the account is created, and back to idle if it fails, with the error shown under the field it concerns. The form's email and password fields are already named for a server action or an API route.

How are the fields checked?

By the browser. Both fields are required, the email field is type="email", and the password needs at least eight characters (minLength={8}). Submitting with a field missing or wrong stops the form and the browser points to the first problem, in the visitor's language. For messages in your own words, add noValidate to the form, check the values in signUp, and mark the field invalid with a FieldError as the Field docs show.

What does a screen reader hear when the form is sent?

Every field has a visible label tied to its input, and the password's show/hide button is named Show password or Hide password, after what it does next. While the account is being created, the button shows a spinner and can't be pressed again, and a polite status says the account is being created. When it's done, focus moves to the confirmation, so Check your inbox and the address are read straight away and keyboard users carry on from there.

Why doesn't the panel change size when the confirmation shows?

The form and the confirmation share one grid cell, so the panel is always as tall as the taller of the two. The one not in use is hidden with invisible: it keeps its space but can't be seen, read or focused. Nothing under the hero jumps when the form is sent.

How does the hero fit on a phone?

The two columns stack below the lg breakpoint, with the form under the copy. To keep the Create account button on the first screen, a phone drops the ticks, the form's second line and the terms; the headline, the sentence and both fields stay. The email shown in the confirmation breaks anywhere, so a long address never pushes the page sideways down to 320 px.

  • Pro

    A compact centered newsletter hero with the email field in a full-width band between two hairlines: a Shine Button subscribes, then a confirmation replaces the form, over a row of subscriber proof.

  • Pro

    A short centered waitlist hero with an email field and a Shine Button on one row inside a framed box, a confirmation in place, an avatar row and two trust points.

  • Pro

    Centered Email Signup Hero

    Signup and waitlist

    A compact centred hero built around one email field and a Shine Button, between solid rails, with a proof band below: the people on the list, when invites go out and what it connects to.

  • Pro

    A centered signup hero whose form is a three-step wizard in a card in card, account, plan and payment, that checks each step's fields before the next and ends on a confirmation.

  • Pro

    A reverse split hero for a scheduling tool: a working booking page in a hairline frame with plus marks on its corners (step through weeks, pick a day and a time) beside a headline, a Shine Button and three ticks.

  • Pro

    A reverse split hero that opens with a customer quote: a tinted panel on the start side in three ruled bands (quote, author, two results), and the headline and a Shine Button at the end.