Full-height success screen with a large confirmation check, a heading and message, a primary continue button, and a support link. Perfect for the final step after email verification or account activation.
Full-height success screen: a large icon inside a green circle, a heading and message, a primary continue button, and a footer support link. Entirely static, with no form fields or interactive state.
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/auth12?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/auth12?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/auth12.tsx and the button and field shadcn/ui primitives it's built on.
The installed file exports auth12Demo alongside the block: the exact props behind the preview above. Spread it to get a working confirmation screen in one line.
import { Auth12, auth12Demo } from "@/components/beste/block/auth12";
export default function ConfirmedPage() {
return <Auth12 {...auth12Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Check } from "lucide-react";
import { Auth12 } from "@/components/beste/block/auth12";
export default function ConfirmedPage() {
return (
<Auth12
icon={<Check className="size-7" />}
heading="You're all set!"
description="Your email has been verified and your account is ready."
primaryButton={{ label: "Continue to dashboard", href: "/dashboard" }}
footerPrompt={{ text: "Need a hand?", linkLabel: "Contact support", href: "/support" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
icon | React.ReactNode | – | Icon shown inside the circular badge |
heading | string | – | Screen title |
description | string | – | Message below the heading |
primaryButton | { label: string; href: string } | – | Main call-to-action button |
footerPrompt | { text: string; linkLabel: string; href: string } | – | Line below the button, hidden entirely when not set |
className | string | – | Extra classes for the outer <section> |
<form>, no inputs, and no local state; every piece of content renders straight from props.bg-emerald-500/10 text-emerald-500, regardless of which icon node is passed in, so it visually reads as a success/positive state no matter what icon you swap in.primaryButton and footerPrompt render independently of each other; omitting both leaves just the icon, heading, and description.icon, heading, description, primaryButton, and footerPrompt are each individually optional, so any subset of the screen can be dropped without leaving gaps in the layout.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.
auth20
Full-height confirmation screen shown after a magic link is sent, with a mail icon, the destination email, an open-email button, a live resend countdown, and a change-email link. Perfect for passwordless and email-link flows.
auth17
Full-height signed-out screen with a centered icon, a heading and message, a sign-back-in button, and a return-home link. Perfect for logout confirmations and expired-session pages.
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.
auth3
Full-height OTP verification screen with a centered icon, segmented six-digit code input, a verify button that unlocks once the code is complete, and a live resend countdown timer. Perfect for two-factor auth, magic links, and email confirmation flows.
auth34
Full-height progressive sign-in that asks for the email first, then reveals the password step with the chosen email shown and editable. Perfect for modern email-first and adaptive authentication flows.
auth43
Full-height waitlist capture with an email field, a join button, a social-proof line, and a sign-in link for existing users. Perfect for pre-launch and early-access landing gates.