Utility Row Mega

About this block

Utility Row MegaPRO

A thin utility row with a locale link, Help and Log in sits over the main bar of logo, links and two buttons. The Products item drops a full-width panel of four link columns with a featured article card on the right: a 3:2 image, a title and a read link. The phone menu is a right side drawer with accordion groups and the utility links at its foot. Every panel stays in the markup and is toggled with CSS.

A sticky header with a thin utility row (locale, Help, Log in) over the main bar of logo, links and two buttons. The Products item drops a full-width panel of four link columns with a featured article card on the right; on a phone the menu is a right side drawer where each column becomes an accordion group and the utility links sit at the foot.

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

Base UI flavor

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

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

Quick start

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

tsx
import { Navbar86, navbar86Demo } from "@/components/beste/block/navbar86";

export default function Page() {
  return <Navbar86 {...navbar86Demo} />;
}

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

tsx
import { Navbar86 } from "@/components/beste/block/navbar86";

export default function Page() {
  return (
    <Navbar86
      brand="Meridian"
      locale={{ label: "United States (English)", href: "/locale" }}
      utilityLinks={[
        { label: "Help", href: "/help" },
        { label: "Log in", href: "/login" },
      ]}
      mega={{
        label: "Products",
        columns: [
          { title: "Platform", links: [{ label: "Overview", href: "/platform" }, { label: "Storage", href: "/storage" }] },
          { title: "Analytics", links: [{ label: "Dashboards", href: "/dashboards" }] },
        ],
        feature: {
          eyebrow: "Customer story",
          title: "How Harbor cut its weekly reporting to 20 minutes",
          linkLabel: "Read the story",
          href: "/stories/harbor",
          image: { src: "https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=600&h=400&fit=crop", alt: "A laptop showing charts" },
        },
      }}
      links={[
        { label: "Pricing", href: "/pricing" },
        { label: "Docs", href: "/docs" },
      ]}
      actions={[
        { label: "Contact sales", href: "/contact", variant: "outline" },
        { label: "Get started", href: "/signup" },
      ]}
      labels={{ open: "Open menu", close: "Close menu" }}
    />
  );
}

Props

PropTypeDefaultDescription
brandstring–Wordmark on the left, repeated at the top of the drawer
localeNavItem–Locale link with a globe icon at the start of the utility row
utilityLinksNavItem[][]Small links in the utility row
megaMega–The item that opens the four-column panel
linksNavItem[][]Plain links beside it
actionsActionButton[][]Buttons on the right, repeated in the drawer
labels{ open?: string; close?: string }{}Accessible names for the mobile toggle and the drawer close button
classNamestring–Extra classes for the outer <header>
ts
type Mega = {
  label: string;
  columns: LinkColumn[];
  feature: FeaturedArticle;
};

type LinkColumn = {
  title: string;
  links: NavItem[];
};

type FeaturedArticle = {
  eyebrow: string;
  title: string;
  linkLabel: string;
  href: string;
  image: { src: string; alt: string };
};

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

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

Behavior notes

  • The Products panel, the scrim and the drawer are always rendered and toggled with CSS classes, so every link is in the server-rendered HTML. Closed panels and collapsed accordion groups carry aria-hidden and inert, which keeps their links out of the tab order.
  • The Products trigger opens on hover and on click, with aria-expanded and aria-controls; the panel closes when the pointer leaves the header, when a plain link is hovered, on Escape and on a pointer down outside the header.
  • The utility row is hidden on phones; its locale and links move to the foot of the drawer instead.
  • The drawer slides in from translate-x-full, locks body scroll while open and closes from its close button, a tap on the scrim, Escape or any link inside it. One accordion group is open at a time.

More Navigation blocks

View all Navigation
PRO

navbar83

Three Column Product Mega

PRO

navbar85

Split Links Tile Mega

PRO

navbar113

Pricing Preview Mega

Get Pro