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.
Prop | Type | Default | Description |
---|---|---|---|
value | string | - | The value of the menu that should be open. |
onValueChange | function | - | Event handler called when the value changes. |
dir | ltr | rtl | ltr | The reading direction of the menubar. |
loop | boolean | true | Whether keyboard navigation should loop around. |
MenubarTrigger
An item in the menubar that triggers a menu. Must be rendered inside MenubarMenu
.
Prop | Type | Default | Description |
---|---|---|---|
disabled | boolean | false | When true, prevents the user from interacting with the trigger. |
MenubarItem
The component that contains the menubar items.
Prop | Type | Default | Description |
---|---|---|---|
disabled | boolean | false | When true, prevents the user from interacting with the item. |
onSelect | function | - | Event handler called when the user selects an item. |
textValue | string | - | Optional text used for typeahead purposes. |
inset | boolean | false | When true, adds left padding to align with checkbox items. |
MenubarCheckboxItem
An item that can be controlled and rendered like a checkbox.
Prop | Type | Default | Description |
---|---|---|---|
checked | boolean | false | The controlled checked state of the item. |
onCheckedChange | function | - | 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
.
Prop | Type | Default | Description |
---|---|---|---|
value | string | - | 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