Link Expired

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.

PRO

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.

Upgrade to Pro

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.

Installation

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

bash
npx shadcn add "https://ui.beste.co/r/auth28?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
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.

Quick start

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.

tsx
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:

tsx
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" }}
    />
  );
}

Props

PropTypeDefaultDescription
iconReact.ReactNodeIcon rendered in a muted circle above the heading
headingstringScreen title
descriptionstringExplanation 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
classNamestringExtra classes for the outer <section>

Behavior notes

More Auth blocks

View all Auth
PRO

auth17

Signed Out Confirmation

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.

FREE

auth6

Magic Link Sign In

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.

PRO

auth20

Check Your Inbox

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.

PRO

auth27

Sign-In Error

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.

PRO

auth8

Welcome Back Unlock

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.

FREE

auth4

Forgot Password Request

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.