Menubar
A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands. Built on Base UI's menubar primitive.
Last updated August 8, 2026
CreditsModifiedPublished
Copied from shadcn/ui.
- MenubarTrigger measures the ambient direction where it renders and passes it explicitly to each portaled MenubarContent, fixing menus that would otherwise always open using document direction regardless of a nearby RTL wrapper
- Built directly on Base UI's Menu primitives instead of wrapping a separate DropdownMenu component, with the same logical ps-/pe-/end-/ms- spacing and rtl:-scale-x-100 submenu chevron as Context Menu
Overview
"use client"
import * as React from "react"
import {
Menubar,
MenubarCheckboxItem,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarRadioGroup,
MenubarRadioItem,
MenubarSeparator,
MenubarShortcut,
MenubarSub,
MenubarSubContent,
MenubarSubTrigger,
MenubarTrigger,
} from "@/components/ui/menubar"
export function MenubarDemoExample() {
const [showBookmarks, setShowBookmarks] = React.useState(true)
const [profile, setProfile] = React.useState("benoit")
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarItem>
New Tab <MenubarShortcut>⌘T</MenubarShortcut>
</MenubarItem>
<MenubarItem>
New Window <MenubarShortcut>⌘N</MenubarShortcut>
</MenubarItem>
<MenubarSeparator />
<MenubarSub>
<MenubarSubTrigger>Share</MenubarSubTrigger>
<MenubarSubContent>
<MenubarItem>Email link</MenubarItem>
<MenubarItem>Messages</MenubarItem>
</MenubarSubContent>
</MenubarSub>
<MenubarSeparator />
<MenubarItem>
Print... <MenubarShortcut>⌘P</MenubarShortcut>
</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Edit</MenubarTrigger>
<MenubarContent>
<MenubarItem>
Undo <MenubarShortcut>⌘Z</MenubarShortcut>
</MenubarItem>
<MenubarItem>
Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>
</MenubarItem>
<MenubarSeparator />
<MenubarCheckboxItem
checked={showBookmarks}
onCheckedChange={setShowBookmarks}
>
Show Bookmarks Bar
</MenubarCheckboxItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Profiles</MenubarTrigger>
<MenubarContent>
<MenubarRadioGroup value={profile} onValueChange={setProfile}>
<MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
<MenubarRadioItem value="luis">Luis</MenubarRadioItem>
</MenubarRadioGroup>
</MenubarContent>
</MenubarMenu>
</Menubar>
)
}Installation
$ npx shadcn@latest add https://ui.persian-labs.ir/r/menubar.jsonUsage
import {
Menubar,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarShortcut,
MenubarTrigger,
} from "@/components/ui/menubar"
export function Example() {
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarItem>
New Tab <MenubarShortcut>⌘T</MenubarShortcut>
</MenubarItem>
<MenubarItem>New Window</MenubarItem>
<MenubarSeparator />
<MenubarItem>Share</MenubarItem>
</MenubarContent>
</MenubarMenu>
</Menubar>
)
}RTL
"use client"
import * as React from "react"
import {
Menubar,
MenubarCheckboxItem,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarRadioGroup,
MenubarRadioItem,
MenubarSeparator,
MenubarShortcut,
MenubarSub,
MenubarSubContent,
MenubarSubTrigger,
MenubarTrigger,
} from "@/components/ui/menubar"
export function MenubarRtlExample() {
const [showBookmarks, setShowBookmarks] = React.useState(true)
const [profile, setProfile] = React.useState("sadegh")
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>فایل</MenubarTrigger>
<MenubarContent>
<MenubarItem>
تب جدید <MenubarShortcut>⌘T</MenubarShortcut>
</MenubarItem>
<MenubarItem>
پنجره جدید <MenubarShortcut>⌘N</MenubarShortcut>
</MenubarItem>
<MenubarSeparator />
<MenubarSub>
<MenubarSubTrigger>اشتراکگذاری</MenubarSubTrigger>
<MenubarSubContent>
<MenubarItem>لینک ایمیل</MenubarItem>
<MenubarItem>پیامرسان</MenubarItem>
</MenubarSubContent>
</MenubarSub>
<MenubarSeparator />
<MenubarItem>
چاپ... <MenubarShortcut>⌘P</MenubarShortcut>
</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>ویرایش</MenubarTrigger>
<MenubarContent>
<MenubarItem>
واگرد <MenubarShortcut>⌘Z</MenubarShortcut>
</MenubarItem>
<MenubarSeparator />
<MenubarCheckboxItem
checked={showBookmarks}
onCheckedChange={setShowBookmarks}
>
نمایش نوار نشانکها
</MenubarCheckboxItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>پروفایلها</MenubarTrigger>
<MenubarContent>
<MenubarRadioGroup value={profile} onValueChange={setProfile}>
<MenubarRadioItem value="sadegh">صادق</MenubarRadioItem>
<MenubarRadioItem value="niki">نیکی</MenubarRadioItem>
</MenubarRadioGroup>
</MenubarContent>
</MenubarMenu>
</Menubar>
)
}