Bordered Cells Mega

About this block

Bordered Cells MegaPRO

An edge-to-edge bar built as a row of cells split by hairline borders: brand, link cells, an empty spacer and a button cell, with no gaps between them. The Services cell drops a full-width row of four bordered cards with a title, a line and an arrow, and the phone menu slides down as a two-column grid of cells. Every panel stays in the markup and is toggled with CSS.

An edge-to-edge sticky bar built as a row of cells split by hairline borders: the brand, one cell per link, an empty spacer and a button cell, with no gaps. The Services cell drops a full-width row of four bordered cards, each with a title, a line and an arrow; on a phone the menu slides down as a two-column grid of the same kind of cells.

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.

Upgrade Now

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://beste.dev/r/navbar100?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/navbar100.tsx plus the shadcn button primitive it uses.

Quick start

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

tsx
import { Navbar100, navbar100Demo } from "@/components/beste/block/navbar100";

export default function Page() {
  return <Navbar100 {...navbar100Demo} />;
}

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

tsx
import { Navbar100 } from "@/components/beste/block/navbar100";

export default function Page() {
  return (
    <Navbar100
      brand="Alder Studio"
      mega={{
        label: "Services",
        cards: [
          { title: "Brand identity", description: "Names, marks and rules.", href: "/identity" },
          { title: "Websites", description: "Fast sites your team can edit.", href: "/websites" },
          { title: "Product design", description: "Interfaces tested and shipped.", href: "/product" },
        ],
      }}
      links={[
        { label: "Work", href: "/work" },
        { label: "Studio", href: "/studio" },
      ]}
      action={{ label: "Start a project", href: "/contact" }}
      labels={{ open: "Open menu", close: "Close menu" }}
    />
  );
}

Props

PropTypeDefaultDescription
brandstring–Wordmark in the first cell
megaMega–The cell that opens the services row
linksNavItem[][]One cell per link
actionActionButton–Button in the last cell, repeated at the foot of the mobile menu
labels{ open?: string; close?: string }{}Accessible names for the mobile toggle
classNamestring–Extra classes for the outer <header>
ts
type Mega = {
  label: string;
  cards: ServiceCard[];
};

type ServiceCard = {
  title: string;
  description: string;
  href: string;
};

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

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

Behavior notes

  • The services row and the mobile grid are always rendered and toggled with CSS classes, so every link is in the server-rendered HTML. Closed panels carry aria-hidden and inert.
  • Cells stretch to the full bar height and share border-l border-border; an empty flex-1 cell pushes the button cell to the right edge, so the borders line up from edge to edge.
  • The Services cell opens on hover and on click with aria-expanded and aria-controls, and its plus icon turns into a cross while open; the row closes when the pointer leaves the header, on Escape and on a pointer down outside.
  • The services row lays the cards out in four equal columns divided by the same hairline borders as the bar. Four cards fill it exactly.
  • On a phone the menu slides down with a grid-template-rows transition and shows the cards and links as a two-column grid of bordered cells; links close the menu on click.

More Navigation blocks

View all Navigation
PRO

navbar85

Split Links Tile Mega

PRO

navbar110

Headline Mega

PRO

navbar83

Three Column Product Mega

Get Pro