Planned downtime page with a square eyebrow and status code, a bold accent headline, three bordered cells for the maintenance window, a working notify-me email form with a success state, and a live progress link.
A planned-downtime page: three bordered cells state the maintenance window and what it affects, a working notify-me field collects an address for the all-clear, and a link points at live progress.
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/error17?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/error17?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/error17.tsx, plus the badge6 design-system primitive it renders the square eyebrow through.
The installed file exports error17Demo alongside the block: the exact props behind the preview above. Spread it to get a working maintenance page in one line.
import { Error17, error17Demo } from "@/components/beste/block/error17";
export default function Maintenance() {
return <Error17 {...error17Demo} />;
}Then replace the demo with your own window. Times are plain strings, so the format and timezone stay yours:
import { Error17 } from "@/components/beste/block/error17";
export default function Maintenance() {
return (
<Error17
label="Scheduled Maintenance"
code="503"
heading="We are rebuilding the engine <strong>while it is parked</strong>."
description="Everything is paused for a planned upgrade. Your data is where you left it."
labels={{
placeholder: "Where should we write?",
success: "Noted. You will hear from us the moment we are live again.",
note: "One message, sent once.",
}}
stats={[
{ title: "Paused since", value: "14:00 UTC" },
{ title: "Expected back", value: "17:30 UTC" },
{ title: "Affected", value: "Dashboard and API" },
]}
link={{ label: "Watch live progress", href: "/status" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow text rendered through the square-marker badge |
code | string | – | Status code shown after the eyebrow divider |
heading | string | – | Headline HTML, rendered as an h1; <strong> marks the accent clause |
description | string | – | Explanatory paragraph under the headline |
labels | Error17Labels | {} | Field placeholder, success message, and the note under the form |
stats | WindowStat[] | [] | Cells describing the maintenance window |
link | ActionLink | – | Text link at the bottom of the block |
className | string | – | Extra classes for the outer <section> |
type Error17Labels = {
placeholder?: string;
success?: string;
note?: string;
};
type WindowStat = {
title: string;
value: string;
};
type ActionLink = {
label: string;
href: string;
};form. Submitting prevents the default action and, when the value is not blank, swaps the whole form for the success message. There is no network call and no submit callback, so wire the address to your own list before shipping.sm breakpoint up, so passing three cells fills a row exactly; fewer cells simply leave the row short.aria-label, so the input is still named when the label text is the only thing describing it.heading is injected with dangerouslySetInnerHTML and accepts inline HTML; <strong> takes the accent colour. Keep the value under your own control, never user input.error22
Monochrome maintenance page: a parenthetical eyebrow over a display headline, the downtime window as a ruled three-column record, and a rounded notify-me field with a confirmed state.
error15
Server error page with a square eyebrow and status code over a hairline rule, a bold accent headline, a bordered incident table of reference, timestamp and service rows, and a retry seal button beside a status page link.
error14
Editorial 404 with a square eyebrow and status code over a hairline rule, an oversized accent-highlighted headline, and a ruled index of the sections visitors reach for next.
error24
Studio 404 that recovers a dead project URL: a square eyebrow and status code over a hairline rule, an accent headline and seal button, then two large project cards with category lines and hover arrow chips.
error21
Monochrome server-error page: a parenthetical eyebrow over a display headline, a retry pill beside a status link, and a ruled two-column record of the reference, timestamp, subsystem and state.
error25
Too-many-requests page with a square eyebrow and status code, an accent headline, three bordered usage cells, and a live cooldown counter that swaps itself for a retry seal button when it reaches zero.