Skip to content
Velkin LogoVelkin Logo
Velkin
VELKIN/UI

Modern UI components for product teams and their AI agents. Lit core, typed wrappers, live MCP.

sales@velkinui.com

Product

  • Docs
  • Components
  • Studio
  • Pricing

Resources

  • Quick start
  • Blog
  • Changelog
  • Roadmap
  • Status

Project

  • About
  • Contact
  • License
  • Privacy
  • Terms

© 2026 Velkin. MIT core · Pro licenses available.

VELKIN

Menubar

Pro

A menubar component with nested submenus and keyboard navigation.

vu-menubar · @velkin/react-pro/menubar

Copy page

Import

React
npm i @velkin/react-pro

import { LicenseInfo } from "@velkin/license";
// Vite: import.meta.env.VITE_VELKIN_LICENSE_KEY
// Next: process.env.NEXT_PUBLIC_VELKIN_LICENSE_KEY
LicenseInfo.setLicenseKey(import.meta.env.VITE_VELKIN_LICENSE_KEY ?? process.env.NEXT_PUBLIC_VELKIN_LICENSE_KEY ?? "");

// @velkin-pro
import { VuMenubar } from "@velkin/react-pro/menubar";

Examples

API

Props

PropTypeDefaultDescription
itemsVuMenubarItem[][]Menu item tree.
disabledbooleanfalseDisables the entire menubar. Default: `false`.
pwaOverlaybooleanfalseWindow-controls-overlay placement (`pwaoverlay` attr). Default: `false`.
sizeVuMenubarSize"md"Bar item padding and height. Default: `"md"`.
toneVuMenubarTone"normal"Bar foreground weight. Default: `"normal"`.
overflowThresholdnumber0Minimum visible items before overflow mode. Default: `0`.
menuTriggerVuMenubarMenuTrigger"click"Desktop submenu open interaction (`menutrigger` attr). Default: `"click"`.
variantVuMenubarVariant"flat"Bar surface paint recipe. Default: `"flat"`.
indicatorVuMenubarIndicator"underline"Active top-level affordance (`underline`/`pill`/`dot`/`none`); `pill` is selection chrome — not `radius="full"`. Default: `"underline"`.
containedbooleanfalseCenters the bar row with a max inline width. Default: `false`.
justifyBarstring"flex-start"CSS `justify-content` for the outer bar (`justifybar` attr).
justifyBarItemsstring"flex-start"CSS `justify-content` for the item row (`justifybaritems` attr).
placementVuMenubarPlacement"bottom"Preferred side for top flyout. Default: `"bottom"`.
alignVuMenubarAlign"start"Alignment along the trigger edge. Default: `"start"`.
offsetnumber4Gap in px between trigger and flyout. Default: `4`.
breakpointnumber768Mobile breakpoint in pixels. Default: `768`.
isMobilebooleanfalseMobile layout flag (`ismobile` attr).
stickybooleanfalsePins to the top of the scroll container. Default: `false`.
condensebooleanfalseElevates and shortens the bar when `sticky`. Default: `false`.
menubarLabelstring""Menubar landmark accessible name (`menubarlabel` attr).
nestedSubmenuLabelstring""Nested flyout accessible name (`nestedsubmenulabel` attr).
menuLabelstring""Mobile menu toggle accessible name (`menulabel` attr).
drawerLabelstring""Mobile drawer accessible name (`drawerlabel` attr).
closeLabelstring""Mobile drawer close accessible name (`closelabel` attr).

Events

EventDetailDescription
vu-activateVuMenubarActivateDetailWhen an item is activated.
vu-checkVuMenubarCheckDetailWhen a checkbox item toggles.
vu-selectVuMenubarSelectDetailWhen a radio item is selected.

Slots

SlotDescription
prependContent before menu items on desktop.
appendContent after menu items on desktop.
prepend-mobileContent before navigation items in mobile mode.
append-mobileContent after navigation items in mobile mode.
headerHeader content for the mobile drawer.
footerFooter content for the mobile drawer.

CSS parts

PartDescription
menu-barMain menubar container.
menubar-desktopDesktop menubar region.
menubar-mobileMobile chrome.
menu-itemTop-level menu item button.
top-menuTop-level flyout panel.
nested-menuNested flyout panel.
submenu-itemItem within a submenu.

Methods

MethodDescription
focusFirst- Focuses the first top-level menu item.
focusLast- Focuses the last top-level menu item.
closeMenus- Closes all open flyouts.
openMenu- Opens the mobile drawer menu.
closeMenu- Closes mobile drawer and desktop submenus.
toggleMenu- Toggles the mobile drawer menu.

Types

NameDefinition
VuMenubarActivateDetail
{
  item: VuMenubarItem;
  path: string;
  isSubmenu: boolean;
  value: unknown;
}
VuMenubarAlign
"start" | "center" | "end"
VuMenubarCheckDetail
{ item: VuMenubarItem; path: string; checked: boolean; }
VuMenubarIndicator
"none" | "dot" | "underline" | "pill"
VuMenubarMenuTrigger
"auto" | "click" | "hover"
VuMenubarPlacement
"top" | "bottom" | "left" | "right" | "auto"
VuMenubarSelectDetail
{ path: string; group: string; }
VuMenubarSize
"sm" | "md" | "lg"
VuMenubarTone
"subtle" | "normal" | "strong"
VuMenubarVariant
"outline" | "flat" | "elevated"

Related

Navigation

  • Adaptive BarA responsive toolbar component that overflows extra items into a menu.
  • AppbarAn application bar component with start, center, and end slots.
  • BreadcrumbA breadcrumb component for navigation trails with optional collapse.
  • Context MenuA context menu component with grouped actions and icons.
  • DropdownA dropdown menu component with trigger slot and keyboard navigation.
  • Nav PanelA navigation panel component for drawer bodies with icon-rail collapse.

Guides

  • Pro licenseLicenseInfo and Pro imports
  • AccessibilityFocus and naming
  • SlotsHeader, body, and item slots

Browse

  • Previous: DropdownEarlier in the sidebar
  • Next: Nav PanelLater in the sidebar
  • All componentsBrowse the full index