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

Error13: 404 With Site Directory

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

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/error13?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/error13.tsx, plus the button shadcn/ui primitive it uses for the closing action.

Quick start

The installed file exports error13Demo alongside the block: the exact props behind the preview above. Spread it to get a working directory page in one line.

tsx
import { Error13, error13Demo } from "@/components/beste/block/error13";

export default function NotFound() {
  return <Error13 {...error13Demo} />;
}

Then pass your own sections. Two groups read as well as four:

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

export default function NotFound() {
  return (
    <Error13
      code="Error 404"
      heading="We cannot find that page"
      description="Here is everything on the site in one place."
      groups={[
        {
          title: "Product",
          links: [
            { label: "Overview", href: "/product" },
            { label: "Pricing", href: "/pricing" },
          ],
        },
        {
          title: "Developers",
          links: [
            { label: "Documentation", href: "/docs" },
            { label: "Status", href: "/status" },
          ],
        },
      ]}
      buttons={[{ label: "Back to home", href: "/", icon: House }]}
    />
  );
}

Props

PropTypeDefaultDescription
codestringSmall uppercase status label above the heading
headingstringMain page heading, rendered as an h1
descriptionstringExplanatory paragraph under the heading
groupsDirectoryGroup[][]Link columns, each with its own caption
buttonsActionButton[][]Action row below the directory
classNamestringExtra classes for the outer <section>
ts
type DirectoryGroup = {
  title: string;
  links: DirectoryLink[];
};

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

type ActionButton = {
  label: string;
  href: string;
  variant?: "default" | "outline" | "secondary" | "ghost";
  icon?: LucideIcon;
};

Behavior notes

More Error blocks

View all Error
FREE

error1

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.

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.

FREE

error2

404 With Site Search

Search-first 404 page: a controlled search field with a submit handler, plus a bordered list of suggested pages with titles, descriptions, and hover arrows.

FREE

error9

404 Did You Mean

Left-aligned 404 for documentation and marketing sites: the requested path is shown struck through in monospace above a did-you-mean box linking to the closest matching page.

PRO

error11

404 With Product Recommendations

Store 404 for dead product URLs: the message and shopping buttons sit above a four-up product grid with square imagery, prices, and optional strikethrough compare-at prices.

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.