Centered 404 Message

Minimal centered 404 page with a large error code, a heading, a short explanation, two call-to-action buttons, and a divided row of popular page links underneath.

FREE

Error1: Centered 404 Message

A minimal 404 page built around a single centered column: an oversized error code, the heading, a short explanation, a button row, and a divided footer of popular page links. Every string is a prop, so the same block covers 404, 403, and 500 screens.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/error1"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/error1"

This installs the block to components/beste/block/error1.tsx, plus the button shadcn/ui primitive it uses for the call-to-action row.

Quick start

The installed file exports error1Demo alongside the block: the exact props behind the preview above. Spread it into Next.js's not-found.tsx to get a working error page in one line.

tsx
import { Error1, error1Demo } from "@/components/beste/block/error1";

export default function NotFound() {
  return <Error1 {...error1Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { House } from "lucide-react";
import { Error1 } from "@/components/beste/block/error1";

export default function NotFound() {
  return (
    <Error1
      code="404"
      heading="This page could not be found"
      description="The page you are looking for was moved, renamed, or never existed."
      buttons={[
        { label: "Back to home", href: "/", icon: House },
        { label: "Contact support", href: "/support", variant: "outline" },
      ]}
      linksLabel="Popular pages"
      links={[
        { label: "Documentation", href: "/docs" },
        { label: "Pricing", href: "/pricing" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
codestringOversized status code shown above the heading
headingstringMain page heading, rendered as an h1
descriptionstringExplanatory paragraph under the heading
buttonsActionButton[][]Call-to-action row under the description
linksLabelstringCaption above the quick link row
linksQuickLink[][]Quick links in the footer row
classNamestringExtra classes for the outer <section>
ts
type ActionButton = {
  label: string;
  href: string;
  variant?: "default" | "outline" | "secondary" | "ghost";
  icon?: LucideIcon;
};

type QuickLink = {
  label: string;
  href: string;
};

Behavior notes

More Error blocks

View all Error
FREE

error6

Inline 404 Line

The smallest possible 404: the status code and the message sit on one line separated by a vertical rule, stacking on mobile, with a single outline button underneath.

PRO

error12

404 With Popular Articles

Blog 404 that turns a dead post URL into reading: centered messaging above a three-up article grid with cover images, category badges, dates, and read times.

PRO

error13

404 With Site Directory

404 page that doubles as a sitemap: left-aligned messaging over four columns of grouped section links, so visitors on a large site can jump straight to the area they wanted.

PRO

error3

Split 404 With Image

Two-column 404 page with the error code, heading, explanation, buttons, and a small note on one side, and a full-bleed image that scales on hover on the other. The image side can be flipped with a prop.

PRO

error4

404 With Destination Cards

404 page that recovers the visit with a grid of destination cards, each with an icon, title, description, and hover arrow, followed by a centered row of fallback buttons.

PRO

error10

Fullscreen 404 With Background

Screen-height 404 with a full-bleed background photo under a dark overlay, centered white messaging, and a solid plus outline button pair sized for marketing sites.