Studio navbar with hover dropdown submenus on desktop, described sublinks, a seal CTA and an inline-expanded mobile menu.
Studio navbar where top-level links can carry a children array that opens as a hover dropdown on desktop, listing each sublink with an optional description line. A seal CTA sits on the right, and below lg the same hierarchy renders as an inline-expanded mobile menu instead of a hover panel.
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.
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
npx shadcn add "https://ui.beste.co/r/navbar46?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/navbar46?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/navbar46.tsx and the button1 component it uses for its call-to-action.
The installed file exports navbar46Demo alongside the block: the exact props behind the preview above. Spread it to get a working navbar in one line.
import { Navbar46, navbar46Demo } from "@/components/beste/block/navbar46";
export default function Layout() {
return <Navbar46 {...navbar46Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Navbar46 } from "@/components/beste/block/navbar46";
export default function Layout() {
return (
<Navbar46
brand="Polaris"
links={[
{ label: "Work", href: "/work" },
{
label: "Services",
href: "/services",
children: [
{ label: "Brand Identity", description: "Naming and systems", href: "/services/brand" },
{ label: "Web Engineering", description: "Fast front-ends", href: "/services/web" },
],
},
{ label: "Journal", href: "/journal" },
]}
cta={{ label: "Start a Project", href: "/contact" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
brand | string | – | Wordmark text |
links | NavLink[] | [] | Top-level nav links; entries with a non-empty children array render a hover dropdown |
cta | CtaLink | – | Seal button rendered via Button1, visible on lg and up |
className | string | – | Extra classes for the outer <header> |
type NavLink = {
label: string;
href: string;
children?: SubLink[];
};
type SubLink = {
label: string;
description?: string;
href: string;
};
type CtaLink = { label: string; href: string };group-hover), not a click or open state; they stay mounted in the DOM at all times and are toggled between invisible/opacity-0 and visible/opacity-100.children array is non-empty get a chevron and dropdown; the chevron rotates 180° on hover.description line under the label.{open && ...}) does not reuse the hover panel: it lists children inline under each parent label, indented with a left primary-colored border.navbar33
Navbar with hover-activated dropdowns supporting nested sub-menus for deep navigation hierarchies. Perfect for enterprise software and documentation sites with complex information architecture.
navbar59
Editorial single-row navbar — bold wordmark, quiet bold links, and an outline pill CTA. Collapses to a clean full-height mobile menu.
navbar51
Two-row navbar with brand, availability status and seal CTA on top, and an underlined active-tab link row that scrolls horizontally on mobile.
navbar60
Full mega-menu navbar — bold links open three-column panels with parenthetical section labels, descriptions and a footer link. SSR-mounted panels, pill CTA and a stacked mobile menu.
navbar41
Two-tier studio navbar with an availability utility strip, square-mark wordmark, index-numbered links and a seal CTA.
navbar42
Table-inspired navbar with full-height bordered link cells, an availability cell and a dark full-height seal CTA cell.