Full-height expired-link screen with a broken-link icon, an explanation, a request-a-new-link button, and a back-to-sign-in link. Perfect for stale magic links, password resets, and email confirmation tokens.
Full-height expired-link screen: a centered broken-link icon, a heading and explanation, a "Request a new link" button, and a back-to-sign-in link with a leading arrow. Built for stale magic links, password resets, and email confirmation tokens.
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/auth28?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/auth28?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/auth28.tsx and the button shadcn/ui primitive it's built on.
The installed file exports auth28Demo alongside the block: the exact props behind the preview above. Spread it to get a working expired-link screen in one line.
import { Auth28, auth28Demo } from "@/components/beste/block/auth28";
export default function LinkExpiredPage() {
return <Auth28 {...auth28Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Link2Off } from "lucide-react";
import { Auth28 } from "@/components/beste/block/auth28";
export default function LinkExpiredPage() {
return (
<Auth28
icon={<Link2Off className="size-7" />}
heading="This link has expired"
description="Sign-in links expire after a short while. Request a new one to continue."
primaryButton={{ label: "Request a new link", href: "/sign-in" }}
backLink={{ label: "Back to sign in", href: "/sign-in" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
icon | React.ReactNode | – | Icon rendered in a muted circle above the heading |
heading | string | – | Screen title |
description | string | – | Explanation below the heading |
primaryButton | { label: string; href: string } | – | "Request a new link" style action; hidden entirely when not set |
backLink | { label: string; href: string } | – | Link with a leading back arrow; hidden entirely when not set |
className | string | – | Extra classes for the outer <section> |
labels prop and no interactive state at all, just conditional rendering of icon, heading, description, primaryButton, and backLink, each independently.description here is rendered as plain text, not through dangerouslySetInnerHTML, so it cannot contain inline HTML like a bolded email address.primaryButton and backLink both render as plain asChild/next/link anchors; there is no token-refresh or resend call wired in, so requesting a new link is left entirely to whatever primaryButton.href points at.ArrowLeft) closely mirrors Auth20's structure, minus the resend countdown, making this effectively the "static" counterpart to that block's timed variant.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.
auth6
Full-height passwordless sign-in screen with a single email field, a send-magic-link button, a helper note, and social login providers below a divider. Perfect for passwordless and email-link authentication flows.
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.
auth27
Full-height authentication error screen with a warning icon, an explanation, an optional error code, and try-again, back, and contact-support actions. Perfect for failed sign-in and OAuth callback errors.
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.
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.