Announcement Navbar

Evening sessions now run until nine, Monday to Thursday.

Reserve one
About this block

Announcement NavbarPRO

A sticky navbar topped by a thin ink announcement bar with a small-caps link, then a frosted bar with the serif wordmark, uppercase links that underline from the left on hover, a sliding-marker pill, and a light full-height mobile menu whose links settle in one after another.

A navbar with an announcement rail above it: an ink strip carrying one line and a link with a lifting arrow, then the frosted bar with the wordmark, links and a pill.

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

Base UI flavor

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

This installs the block to components/beste/block/navbar79.tsx plus the button22 sliding-marker pill it uses.

Quick start

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

tsx
import { Navbar79, navbar79Demo } from "@/components/beste/block/navbar79";

export default function Page() {
  return <Navbar79 {...navbar79Demo} />;
}

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

tsx
import { Navbar79 } from "@/components/beste/block/navbar79";

export default function Page() {
  return (
    <Navbar79
      announcement={{
        text: "Evening sessions now run until nine, Monday to Thursday.",
        link: { label: "Reserve one", href: "/evenings" },
      }}
      brand="Altair"
      items={[
        { label: "Ways we work", href: "/work" },
        { label: "Fees", href: "/pricing" },
      ]}
      button={{ label: "First call", href: "/call" }}
      labels={{ open: "Open menu", close: "Close menu" }}
    />
  );
}

Props

PropTypeDefaultDescription
announcement{ text: string; link: NavItem }Ink strip above the bar; the whole rail is dropped when unset
brandstringWordmark on the left
itemsNavItem[][]Navigation links
buttonActionButtonPill action, repeated at the foot of the mobile menu
labels{ open?: string; close?: string }{}Accessible names for the menu toggle
classNamestringExtra classes for the outer <header>
ts
type NavItem = {
  label: string;
  href: string;
};

type ActionButton = {
  label: string;
  href: string;
  tone?: "primary" | "light" | "dark" | "outline";
};

Behavior notes

  • The whole header is sticky, announcement included, so the rail travels with the bar rather than scrolling away and leaving the navigation to jump up into its place.
  • The mobile overlay is positioned from top-[7.5rem], the height of the rail plus the bar, so it clears both. If you remove the announcement in your own copy of the file, that offset is the one value to change.
  • The announcement row wraps with separate row and column gaps, so a long sentence and its link break onto two centred lines on a phone rather than being squeezed.
  • Its arrow lifts only under motion-safe:, so the affordance is dropped for reduced motion while the link keeps working.
  • The rail is a fixed ink surface, so its text colors are written against background tokens rather than the adaptive ones the bar below uses.
  • The mobile menu is always in the markup and toggled with CSS, with an index-based transitionDelay stagger that resets to 0ms on close.
  • Only the bar is frosted; the rail is opaque, which keeps the announcement legible over whatever scrolls beneath it.

More Navigation blocks

View all Navigation
PRO

navbar73

Announcement Bar Navbar

A navbar with a dark announcement strip above a hairline-bordered row carrying a lowercase wordmark, uppercase links, a sign-in link, an accent call to action, and a mobile menu.

PRO

navbar62

Announcement Marquee Navbar

Navbar with a dark scrolling announcement bar on top — looping links that pause on hover and fade at the edges — over a clean wordmark row with a pill CTA.

PRO

navbar77

Centred Wordmark Navbar

A sticky, frosted navbar with the serif wordmark in the centre, uppercase letter-spaced links split to either side that underline from the left on hover, a small sliding-marker pill, and a full-height light mobile menu whose links settle in one after another.

PRO

navbar43

Dark Announcement Navbar

Dark studio navbar with a primary announcement bar, wordmark with tagline divider, uppercase links and a primary seal CTA.

PRO

navbar82

Full Screen Menu Navbar

A minimal bar with a wordmark, a sliding-marker pill and a two-line menu toggle that turns into a cross, opening a full-screen ink menu with film grain: numbered oversized serif links settle in one after another on the left, the photograph and description on the right blur to whichever link is hovered, and a ruled foot carries contact details, social links and the pill. The menu is always in the markup and shown with CSS.

PRO

navbar71

Pill Menu Navbar

A light editorial navbar with a lowercase wordmark, soft muted nav pills that reveal hover dropdowns, a solid accent call to action, and a collapsing mobile menu.