Sign up form

A React block (a whole screen) in Beamline's Blocks category.

The account creation card: single sign-on, name, work email and a password with strength and Caps Lock hints, terms consent, inline validation, your request's progress and errors, an emailed-code check and a finished state.

Use it for

  • Creating an account inside your own page, panel or modal, with or without an emailed-code check.

Not for

Anatomy

  • card (double bezel)
  • heading and description
  • single sign-on buttons
  • "or" rule
  • name field
  • work email field
  • password field (reveal, strength meter, Caps Lock hint)
  • terms consent
  • form error
  • submit
  • verify step (code boxes, resend countdown, change email)
  • done step
  • footer (Have an account? Sign in)

States

  • empty
  • invalid fields (each message says the fix)
  • weak password
  • terms not accepted
  • submitting (button keeps size, aria-busy)
  • field error from your handler (AuthFieldError, e.g. email taken)
  • form error (any other rejection)
  • provider in flight / failed
  • verify: code sent, checking, wrong code
  • done

Keyboard

  • Tab moves through providers, fields, the reveal button, consent and submit
  • Enter submits; the first invalid field takes focus
  • the verify step focuses the code boxes and checks the code once every digit is in
  • Space toggles consent

Motion

A new step arrives on --motion-in (fade and a 6px rise) and replaces the old one at once; the strength bars change colour over --motion-out. Reduced motion keeps the fade only.

Props

PropTypeDefaultDescription
onSubmit (required)(details: SignupDetails) => Promise<void | AuthAccount>—Create the account. Reject with AuthFieldError("email", …) for a taken address; any other Error shows above the button. With onVerifyEmail, resolve once the code is sent.
onVerifyEmail(email, code) => Promise<void | AuthAccount>—Adds the emailed-code step after submit.
onResendCode(email) => Promise<void>—Offers Resend in the code step after the countdown.
providers / onProviderAuthProvider[] / (provider) => Promise<void | AuthAccount>—Sign up with single sign-on; your own icons.
onSwitchToSignIn() => void—Shows "Have an account? Sign in".
onSuccess(account: AuthAccount) => void—Runs once the account exists (and the email is confirmed, when verifying).
termsHref / privacyHrefstring—Adds a required consent checkbox linking both.
product / title / descriptionstring / ReactNode—Heading defaults to "Create an account".
defaultValuesPartial<SignupDetails>—
minPasswordLengthnumber8
codeLength / resendAfternumber6 / 30
headingLevel1 | 2 | 31
classNamestring—
classNamesSignupFormClassNames—
style / refCSSProperties / Ref<HTMLElement>—
providerClassNamesAuthProviderListClassNames—Shared provider root/button/icon slots; all rows reserve the icon slot if any supplied provider has one.

Built from

Dependencies

lucide-react, motion, react-hook-form

Import

import { SignupForm } from "@/blocks/signup-form/signup-form";

Get it

Sign up form is part of Beamline: 190 React components and screens your coding agent (Claude Code, Codex, Cursor or any MCP client) installs into your app through Beamline's MCP server, as a ready-built package or as plain React source you can change. $49 one payment (regular $200), no subscription, a year of updates, one licence for your whole team. Get Beamline · Connect your agent

More in Blocks

  • AI agent workspace: Threads, a conversation with streamed reasoning, cited answers and a plan that waits for approval then runs step by step, and an artifacts panel with…
  • Analytics dashboard: A SaaS overview in the app shell, fed by your metrics hook: range and segment filters drive KPIs, new and expansion revenue, channels, plan mix, uptime…
  • Auth page: The whole sign-in / sign-up route: product mark, a quiet dotted field with a light that follows the mouse, an optional notice, the SignIn and SignupForm…
  • Changelog feed: An in-app What's new page: release notes grouped by month with tags, versions, pictures and details, a tag filter with counts, entries since your last…
  • CRM pipeline: A pipeline screen: KPIs and stage mix derived from a virtualised deals grid with inline edit, bulk moves and delete with undo; a row opens the deal in a…
  • Empty states: The five empty moments every product has, written and wired: first use with a first step, no results with the filters to clear, an error with retry and a…
  • Page header: The top of a record or project page: breadcrumb, title with status, description and meta, a primary action with secondary actions that fold into a More…
  • Plan comparison: Plans side by side against every feature: prices that roll between monthly and yearly, the current and recommended plan marked, a header that stays in…
  • Settings: Profile and workspace settings with one draft and real save handler. Personal mode omits workspace data; optional profile fields share validation…
  • Sign in: The sign-in card: email and password, a one-time code or a magic link, passkeys and single sign-on, with validation, progress, errors and a signed-in…
  • Step form: The finished frame for any multi-step form you compose — onboarding, intake brief, questionnaire, booking, application: a wide card with progress, the…
  • Trading terminal: A perpetuals terminal on your feed and your account: ticker tape, market header with funding, candles, book / trades / depth, order ticket, account…
  • Voice agent: A voice agent in three layouts on one session: a support panel that mixes typing and talking, a call screen with the agent's orb and one call button, and…