Skip to content
GetUrUI

Auth forms

5 variantsNewPro
.md

Five card-sized auth forms — sign in, sign up with live strength, magic link, one-time code and a three-step reset — with inline validation, a shake on error and crossfading success states.

authsign inloginsign upregisterpassword strengthmagic linkotpverification codeforgot passwordform

Sign in

sign-in.tsx

Email and password with an animated reveal toggle, Google and passkey buttons, a remember-me option and a shake on a bad attempt.

$npx shadcn@latest add @geturui-pro/auth-forms-sign-in
PropTypeDefaultDescription
productstring"Northwind"Name used in the copy.
defaultEmailstring—Prefill the email field.
onSubmit(v: SignInValues) => void | Promise<void>—Throw an Error to show its message and shake.
onProvider(p: "google" | "passkey") => void—Provider buttons.
forgotHref / signUpHrefstring"#"Link targets.
classNamestring—Extra classes on the root element.

Sign up

sign-up.tsx

Name, email and password with a four-segment strength meter, requirement checks that tick in and a verify-your-email success state.

$npx shadcn@latest add @geturui-pro/auth-forms-sign-up
PropTypeDefaultDescription
productstring"Northwind"Name used in the success copy.
defaultValuesPartial<SignUpValues>—Prefill name, email or password.
onSubmit(v: SignUpValues) => void | Promise<void>—Resolve to show the verify state.
termsHref / signInHrefstring"#"Link targets.
classNamestring—Extra classes on the root element.

One-time code

otp.tsx

Six digit boxes with paste, auto-advance and arrow keys; a wrong code shakes and clears, a right one pops a check, with attempts and a resend timer.

$npx shadcn@latest add @geturui-pro/auth-forms-otp
PropTypeDefaultDescription
destinationstring—Where the code went.
lengthnumber6Number of digits.
resendAfternumber30Seconds before resend unlocks.
onVerify(code: string) => boolean | Promise<boolean>—Return true when valid. The default accepts 246810.
onResend() => void—Resend handler; also resets attempts.
classNamestring—Extra classes on the root element.

Forgot password

forgot-password.tsx

Email, code and new password steps with a progress track, direction-aware crossfades and a card that springs to each step's height.

$npx shadcn@latest add @geturui-pro/auth-forms-forgot-password
PropTypeDefaultDescription
defaultEmailstring—Prefill step one.
onRequest(email: string) => void | Promise<void>—Send the reset code.
onVerify(email: string, code: string) => boolean | Promise<boolean>—Validate the code; default accepts any 6 digits.
onReset(password: string) => void | Promise<void>—Save the new password.
signInHrefstring"#"Back to sign in link.
classNamestring—Extra classes on the root element.

Install the whole set

Installs every auth forms variant at once. Each section above has its own command for a single variant.

Pro installs use your private registry token. Add the @geturui-pro registry once — setup guide. The command works after you get Pro.

$npx shadcn@latest add @geturui-pro/auth-forms

Accessibility

  • Every field has a visible label; errors set aria-invalid, are linked with aria-describedby and move focus to the first invalid field.
  • Loading, sent and success states are announced through status and alert regions, and buttons stay real buttons with clear names.
  • The error shake, slides and pops are skipped under reduced motion; only fades remain.

Related