Menubar

A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.

tsx
import {
Menubar,
MenubarCheckboxItem,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarRadioGroup,
MenubarRadioItem,
MenubarSeparator,
MenubarShortcut,
MenubarSub,
MenubarSubContent,
MenubarSubTrigger,
MenubarTrigger,
} from "@/components/ui/menubar"
export function MenubarDemo() {
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarItem>
New Tab <MenubarShortcut>⌘T</MenubarShortcut>
</MenubarItem>
<MenubarItem>
New Window <MenubarShortcut>⌘N</MenubarShortcut>
</MenubarItem>
<MenubarItem disabled>New Incognito Window</MenubarItem>
<MenubarSeparator />
<MenubarSub>
<MenubarSubTrigger>Share</MenubarSubTrigger>
<MenubarSubContent>
<MenubarItem>Email link</MenubarItem>
<MenubarItem>Messages</MenubarItem>
<MenubarItem>Notes</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 />
<MenubarItem>Cut</MenubarItem>
<MenubarItem>Copy</MenubarItem>
<MenubarItem>Paste</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>View</MenubarTrigger>
<MenubarContent>
<MenubarCheckboxItem>Always Show Bookmarks Bar</MenubarCheckboxItem>
<MenubarCheckboxItem checked>Always Show Full URLs</MenubarCheckboxItem>
<MenubarSeparator />
<MenubarItem inset>
Reload <MenubarShortcut>⌘R</MenubarShortcut>
</MenubarItem>
<MenubarItem disabled inset>
Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>
</MenubarItem>
<MenubarSeparator />
<MenubarItem inset>Toggle Fullscreen</MenubarItem>
<MenubarSeparator />
<MenubarItem inset>Hide Sidebar</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Profiles</MenubarTrigger>
<MenubarContent>
<MenubarRadioGroup value="benoit">
<MenubarRadioItem value="andy">Andy</MenubarRadioItem>
<MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
<MenubarRadioItem value="luis">Luis</MenubarRadioItem>
</MenubarRadioGroup>
<MenubarSeparator />
<MenubarItem inset>Edit...</MenubarItem>
<MenubarSeparator />
<MenubarItem inset>Add Profile...</MenubarItem>
</MenubarContent>
</MenubarMenu>
</Menubar>
)
}

Installation

CLI

bash
npx fivui add menubar

Manual

Install the following dependencies:

bash
npm install @radix-ui/react-menubar

Usage

tsx
import {
Menubar,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarShortcut,
MenubarTrigger,
} from "@/components/ui/menubar"
tsx
<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarItem>
New Tab <MenubarShortcut>⌘T</MenubarShortcut>
</MenubarItem>
<MenubarItem>New Window</MenubarItem>
<MenubarSeparator />
<MenubarItem>Share</MenubarItem>
<MenubarSeparator />
<MenubarItem>Print</MenubarItem>
</MenubarContent>
</MenubarMenu>
</Menubar>

Examples

Simple

A basic menubar with simple menu items.

Simple Menubar
Basic file, edit, and help menus
tsx
import {
Menubar,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarTrigger,
} from "@/components/ui/menubar"
export function MenubarSimple() {
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarItem>New</MenubarItem>
<MenubarItem>Open</MenubarItem>
<MenubarSeparator />
<MenubarItem>Save</MenubarItem>
<MenubarItem>Save As...</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Edit</MenubarTrigger>
<MenubarContent>
<MenubarItem>Cut</MenubarItem>
<MenubarItem>Copy</MenubarItem>
<MenubarItem>Paste</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Help</MenubarTrigger>
<MenubarContent>
<MenubarItem>About</MenubarItem>
<MenubarItem>Documentation</MenubarItem>
</MenubarContent>
</MenubarMenu>
</Menubar>
)
}

With Checkboxes and Radio Items

Menubar with checkbox items and radio groups for toggleable options.

Interactive Options
Toggle states and radio selections
tsx
import {
Menubar,
MenubarCheckboxItem,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarRadioGroup,
MenubarRadioItem,
MenubarSeparator,
MenubarTrigger,
} from "@/components/ui/menubar"
export function MenubarWithCheckboxes() {
return (
<Menubar>
<MenubarMenu>
<MenubarTrigger>View</MenubarTrigger>
<MenubarContent>
<MenubarCheckboxItem checked>Show Toolbar</MenubarCheckboxItem>
<MenubarCheckboxItem>Show Sidebar</MenubarCheckboxItem>
<MenubarCheckboxItem checked>Show Status Bar</MenubarCheckboxItem>
<MenubarSeparator />
<MenubarItem>Refresh</MenubarItem>
</MenubarContent>
</MenubarMenu>
<MenubarMenu>
<MenubarTrigger>Options</MenubarTrigger>
<MenubarContent>
<MenubarRadioGroup value="compact">
<MenubarRadioItem value="comfortable">Comfortable</MenubarRadioItem>
<MenubarRadioItem value="compact">Compact</MenubarRadioItem>
<MenubarRadioItem value="dense">Dense</MenubarRadioItem>
</MenubarRadioGroup>
</MenubarContent>
</MenubarMenu>
</Menubar>
)
}

API Reference

Menubar

Contains all the parts of a menubar.

PropTypeDefaultDescription
valuestring-The value of the menu that should be open.
onValueChangefunction-Event handler called when the value changes.
dirltr | rtlltrThe reading direction of the menubar.
loopbooleantrueWhether keyboard navigation should loop around.

MenubarTrigger

An item in the menubar that triggers a menu. Must be rendered inside MenubarMenu.

PropTypeDefaultDescription
disabledbooleanfalseWhen true, prevents the user from interacting with the trigger.

MenubarItem

The component that contains the menubar items.

PropTypeDefaultDescription
disabledbooleanfalseWhen true, prevents the user from interacting with the item.
onSelectfunction-Event handler called when the user selects an item.
textValuestring-Optional text used for typeahead purposes.
insetbooleanfalseWhen true, adds left padding to align with checkbox items.

MenubarCheckboxItem

An item that can be controlled and rendered like a checkbox.

PropTypeDefaultDescription
checkedbooleanfalseThe controlled checked state of the item.
onCheckedChangefunction-Event handler called when the checked state changes.

MenubarRadioItem

An item that can be controlled and rendered like a radio button. Must be rendered inside MenubarRadioGroup.

PropTypeDefaultDescription
valuestring-The unique value of the item.

External Documentation

Menubar is built on top of Radix UI Menubar. For more advanced usage and API details, refer to the official documentation.

View Radix UI Menubar Documentation