Full-height account recovery screen with a numbered grid of word inputs and paste-to-fill support, plus a restore button that unlocks once every word is entered. Perfect for seed phrase and recovery-phrase restore flows.
A full-height centered recovery screen that renders a heading, description, and a responsive numbered grid of wordCount monospace text inputs (paste into the first box to auto-split a full phrase across all boxes), a submit button that stays disabled until every word is filled, and an optional back link with a left-arrow icon.
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.
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
npx shadcn add "https://ui.beste.co/r/auth47?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/auth47?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/auth47.tsx, plus the button, input-group, and field shadcn/ui primitives it uses for the restore button, the numbered word inputs, and the field grouping with helper text.
The installed file exports auth47Demo alongside the block: the exact props behind the preview above. Spread it to get a working recovery-phrase form in one line.
import { Auth47, auth47Demo } from "@/components/beste/block/auth47";
export default function RecoveryPage() {
return <Auth47 {...auth47Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Auth47 } from "@/components/beste/block/auth47";
export default function RecoveryPage() {
return (
<Auth47
heading="Enter your recovery phrase"
description="Paste your 24-word phrase to restore access."
wordCount={24}
labels={{
helper: "Paste the full phrase into the first box to fill them all.",
submit: "Restore account",
}}
backLink={{ label: "Back to sign in", href: "/login" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
heading | string | – | Centered page title, rendered only when set |
description | string | – | Muted subtitle under the heading, rendered only when set |
wordCount | number | 12 | Number of word input boxes rendered in the grid |
labels | { helper?: string; submit?: string } | {} | Helper text under the grid and the submit button label |
backLink | { label: string; href: string } | – | Optional back link with a left-arrow icon below the card |
className | string | – | Extra classes for the outer <section> |
wordCount via useState; changing wordCount after mount does not resize the existing state, so treat it as a mount-time value only.parts[i] ?? "" filling short phrases and extra words beyond wordCount silently dropped.allFilled is true, meaning every box has non-whitespace content; there is no onSubmit callback prop, and the <form> calls e.preventDefault(), so submission is inert and wiring the actual restore action is left to the integrator.useState and are never lifted out or exposed via a change handler, so the parent cannot read the phrase.grid-cols-2 on mobile and sm:grid-cols-3 from the small breakpoint up; each box carries a numbered InputGroupAddon, font-mono text, and autoComplete="off", autoCapitalize="none", spellCheck={false}.heading, description, labels.helper, labels.submit, and backLink are each conditionally rendered, so omitting any of them removes its element entirely rather than showing a blank.min-h-screen, so the block always fills the full viewport height regardless of content.Wiring the form up
This block ships the form markup only; state, validation, and submit are yours to add. Our guide wires the shadcn Field primitives to React Hook Form, TanStack Form, and Formisch on one field system.
auth22
Full-height two-factor backup screen that displays single-use recovery codes in a grid with copy and download actions, a warning callout, and a confirmation checkbox that gates the continue button. Perfect for 2FA setup and account recovery.
auth4
Full-height password recovery screen with a centered icon, single email field built on the shadcn Field primitives, a send-reset-link button, and a back-to-sign-in link. Perfect for the first step of any password reset flow.
auth48
Full-height security question setup with a question select and an answer field, plus a skip option. Perfect for account recovery setup and identity verification fallbacks.
auth38
Full-height pattern unlock screen with a tappable 3x3 dot grid that draws connecting lines as dots are selected, plus clear and unlock controls. Perfect for app lock screens and quick re-authentication.
auth8
Full-height re-authentication screen showing the signed-in user's avatar, name, and email with a single password field, a forgot-password link, and a use-a-different-account option. Perfect for session unlock and returning-user prompts.
auth46
Full-height step-up authentication screen that re-asks for the password before a sensitive action, showing the signed-in account and a cancel option. Perfect for protecting billing, security, and destructive actions.