ComponentsNavigation

Top bar

The sticky bar above the content: mobile menu button, a ⌘K search trigger, contextual actions, notifications and the user menu. Translucent on glass, a hairline on solid, the same in every app.

Radix Dropdown Menu (user menu) components/top-bar.tsx, styles/navigation.csstheme · material · accent · density · font

Installation

$ pnpm add @vamos-ui/react

The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";

Usage

import { TopBar, TopBarStart, TopBarMenuButton, TopBarSearch, TopBarSpacer, TopBarActions, UserMenu } from "@vamos-ui/react";

<TopBar>
  <TopBarStart><TopBarMenuButton /></TopBarStart>
  <TopBarSearch />
  <TopBarSpacer />
  <TopBarActions>
    <NotificationCenter adapter={inbox} />
    <UserMenu name="Ada Lovelace" email="ada@northwind.io" items={account} />
  </TopBarActions>
</TopBar>

Examples

With breadcrumb

Put a Breadcrumb in TopBarStart for record screens; the search trigger can sit at the end.

Narrow bar

The search collapses to an icon below 560px of bar width (a container query, so it works in any layout). TopBarMenuButton shows below 768px and opens the App shell's nav sheet.

User menu

Takes the shared MenuEntry model: links, checkboxes, radio groups, separators, danger items. showName adds the name for wide bars; children go under the header.

API

TopBar

PropTypeDefault
sticky
Sticks to the top of the scrolling area (z --z-sticky).
booleantrue
variant
transparent blends into the page until it scrolls (data-scrolled).
"bar" | "transparent""bar"
scrollTarget
Scroll container for data-scrolled.
RefObject<HTMLElement>window

TopBarSearch

PropTypeDefault
placeholder
From the dictionary (topBar.search).
string"Search or run a command…"
shortcut
Keycap hint; also aria-keyshortcuts.
string | false"mod+k"
onOpen
What the button opens.
() => voiduseCommandPalette().open

TopBarMenuButton

PropTypeDefault
onClick
Outside App shell; inside it opens the mobile nav.
MouseEventHandler—
labels
Accessible name.
Partial<TopBarLabels>{ menu: "Open menu" }

UserMenu

PropTypeDefault
name
Initials, avatar colour and the trigger's name (“Account menu for …”).
string—
email
Under the name in the menu header.
string—
avatar
Photo URL.
string | null—
items
Account entries (shared Dropdown Menu model).
MenuEntry[]—
showName
Name + chevron next to the avatar.
booleanfalse
children
Extra content under the header.
ReactNode—
align
Menu alignment.
"start" | "center" | "end""end"

TopBarStart · TopBarSpacer · TopBarActions · TopBarSeparator

PropTypeDefault
className
Layout slots; TopBarSpacer pushes the rest to the end.
string—