Tab-Style Navbar

Navbar with tab-style navigation supporting underline or pill active states for app-like navigation. Perfect for dashboards and admin panels with section-based interfaces.

PRO

An app-shell navbar built for section-based interfaces, where each nav item renders as a tab instead of a plain link. A tabStyle prop switches the whole row between an underlined-tab look (bottom border on hover/active, border removed from the navbar itself) and a rounded pill look with a filled active pill. Each NavItem carries its own isActive flag rather than the navbar comparing against a separate "current" prop.

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

Base UI flavor

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

This installs the block to components/beste/block/navbar36.tsx and the shadcn/ui dependencies it needs (button).

Quick start

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

tsx
import { Navbar36, navbar36Demo } from "@/components/beste/block/navbar36";

export default function Layout() {
  return <Navbar36 {...navbar36Demo} />;
}

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

tsx
import { Navbar36 } from "@/components/beste/block/navbar36";

export default function Layout() {
  return (
    <Navbar36
      logo={{ text: "TabNav", href: "/" }}
      navItems={[
        { label: "Dashboard", href: "/dashboard", isActive: true },
        { label: "Projects", href: "/projects" },
        { label: "Settings", href: "/settings" },
      ]}
      buttons={[{ label: "Upgrade", variant: "default", href: "/upgrade" }]}
      tabStyle="pill"
    />
  );
}

Props

PropTypeDefaultDescription
logo{ text: string; href?: string }Brand text and link, shown at the left
navItemsNavItem[][]Tab items rendered in the center/right nav row
buttonsArray<{ label: string; href?: string; variant?: "default" | "outline" | "ghost" }>[]Action buttons rendered right of the tabs, repeated in the mobile panel
tabStyle"underline" | "pill""underline"Switches the tab visual treatment for the whole row
classNamestringExtra classes for the outer <nav>
ts
type NavItem = {
  label: string;
  href?: string;
  isActive?: boolean;
};

Behavior notes

More Navigation blocks

View all Navigation
PRO

navbar51

Tab Bar Navbar

Two-row navbar with brand, availability status and seal CTA on top, and an underlined active-tab link row that scrolls horizontally on mobile.

PRO

navbar32

Search-Focused Navbar

Navbar with prominent search input, navigation links, and action button for search-driven experiences. Perfect for marketplaces, directories, and content platforms prioritizing discovery.

PRO

navbar35

Sliding Indicator Navbar

Responsive navbar with animated sliding underline indicator that follows hover and highlights active navigation item. Perfect for SaaS dashboards and apps wanting polished micro-interactions.

PRO

navbar31

Animated Underline Navbar

Minimal navbar with configurable animated underline effects (slide, grow, or fade) on navigation links. Perfect for portfolio sites and creative agencies wanting subtle hover animations.

PRO

navbar52

Letterhead Navbar

Letterhead-style navbar with a stacked brand block beside stacked rows of location, email and links, closed off by a seal CTA on the right.

PRO

navbar33

Multi-Level Dropdown Nav

Navbar with hover-activated dropdowns supporting nested sub-menus for deep navigation hierarchies. Perfect for enterprise software and documentation sites with complex information architecture.