Expired Link Recovery
Full-height expired-link screen: a square status-code chip next to a "Link expired" eyebrow, a bold accent headline, the expiry timestamp in a bordered strip, a real "Resend link" button that swaps to a sent confirmation badge on click, and a bulleted list explaining why links expire.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, badge dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/expired-link-recovery.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/error/error18.tsx instead.
Usage
The file also exports error18Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Error18, error18Demo } from "@/components/blocks/error/error18"; export default function Page() { return <Error18 {...error18Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| eyebrow | string | "Link expired" | Label shown next to the status-code chip. |
| statusCode | string | "410" | Status code shown inside the square chip. |
| heading | ReactNode | "This link has expired" | Main headline. |
| description | string | "For your security, one-time links..." | Supporting copy under the headline. |
| expiredAt | string | none | Timestamp shown in the bordered expiry strip. |
| reasons | string[] | none | Bulleted list explaining why links expire. |
| resendLabel | string | "Resend link" | Label on the resend button before it's clicked. |
| sentLabel | string | "Link sent" | Label on the confirmation badge after clicking resend. |
| className | string | none | Extra classes for the outer section element. |
Behavior notes
- "Resend link" is real client state (useState): clicking it swaps the button for a "Link sent" badge. There is no email input, since the button alone re-sends to the account's already-known address, and no email is actually sent.
- The expiry timestamp and the reasons list are static demo data, not a live check against a real link.
More Error Blocks
View all →centered-404-message
Centered 404 Message
Minimal centered 404 with two CTAs and a divided row of popular page links.
404-with-site-search
404 With Site Search
404 screen with a working search box and a bordered list of suggested pages.
split-404-with-image
Split 404 With Image
Two-column 404 with the message on one side and a full-bleed photo that scales on hover on the other.
404-with-destination-cards
404 With Destination Cards
404 screen with a grid of icon destination cards plus fallback CTA buttons.
404-support-panel
404 Support Panel
Card-style 404 echoing the requested URL, with a real back button and a support/status link row.
inline-404-line
Inline 404 Line
The smallest possible 404: code and message on one divided line with one button underneath.