Components
Menubar
A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.
Loading...
Installation
CLI
npx shadcn@latest add https://exawizards.com/exabase/design/registry/menubar.jsonManual
Copy and paste the following code into your project.
"use client"
import * as React from "react"
import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar"
import { cn } from "@/lib/utils"
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuPortal,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
function Menubar({ className, ...props }: MenubarPrimitive.Props) {
return (
<MenubarPrimitive
data-slot="menubar"
className={cn(
"flex h-8 items-center gap-0.5 rounded-lg border p-[3px]",
className
)}
{...props}
/>
)
}
function MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {
return <DropdownMenu data-slot="menubar-menu" {...props} />
}
function MenubarGroup({
...props
}: React.ComponentProps<typeof DropdownMenuGroup>) {
return <DropdownMenuGroup data-slot="menubar-group" {...props} />
}
function MenubarPortal({
...props
}: React.ComponentProps<typeof DropdownMenuPortal>) {
return <DropdownMenuPortal data-slot="menubar-portal" {...props} />
}
function MenubarTrigger({
className,
...props
}: React.ComponentProps<typeof DropdownMenuTrigger>) {
return (
<DropdownMenuTrigger
data-slot="menubar-trigger"
className={cn(
"flex items-center rounded-sm px-1.5 py-0.5 text-sm font-medium select-none hover:bg-accent focus-visible:bg-accent focus-visible:outline-hidden aria-expanded:bg-accent",
className
)}
{...props}
/>
)
}
function MenubarContent({
align = "start",
alignOffset = -4,
sideOffset = 8,
collisionPadding = 4,
...props
}: React.ComponentProps<typeof DropdownMenuContent>) {
return (
<DropdownMenuContent
data-slot="menubar-content"
align={align}
alignOffset={alignOffset}
sideOffset={sideOffset}
collisionPadding={collisionPadding}
{...props}
/>
)
}
function MenubarItem({
...props
}: React.ComponentProps<typeof DropdownMenuItem>) {
return <DropdownMenuItem data-slot="menubar-item" {...props} />
}
function MenubarCheckboxItem({
...props
}: React.ComponentProps<typeof DropdownMenuCheckboxItem>) {
return (
<DropdownMenuCheckboxItem data-slot="menubar-checkbox-item" {...props} />
)
}
function MenubarRadioGroup({
...props
}: React.ComponentProps<typeof DropdownMenuRadioGroup>) {
return <DropdownMenuRadioGroup data-slot="menubar-radio-group" {...props} />
}
function MenubarRadioItem({
...props
}: React.ComponentProps<typeof DropdownMenuRadioItem>) {
return <DropdownMenuRadioItem data-slot="menubar-radio-item" {...props} />
}
function MenubarLabel({
...props
}: React.ComponentProps<typeof DropdownMenuLabel>) {
return <DropdownMenuLabel data-slot="menubar-label" {...props} />
}
function MenubarSeparator({
...props
}: React.ComponentProps<typeof DropdownMenuSeparator>) {
return <DropdownMenuSeparator data-slot="menubar-separator" {...props} />
}
function MenubarShortcut({
...props
}: React.ComponentProps<typeof DropdownMenuShortcut>) {
return <DropdownMenuShortcut data-slot="menubar-shortcut" {...props} />
}
function MenubarSub({
...props
}: React.ComponentProps<typeof DropdownMenuSub>) {
return <DropdownMenuSub data-slot="menubar-sub" {...props} />
}
function MenubarSubTrigger({
...props
}: React.ComponentProps<typeof DropdownMenuSubTrigger>) {
return <DropdownMenuSubTrigger data-slot="menubar-sub-trigger" {...props} />
}
function MenubarSubContent({
...props
}: React.ComponentProps<typeof DropdownMenuSubContent>) {
return <DropdownMenuSubContent data-slot="menubar-sub-content" {...props} />
}
export {
Menubar,
MenubarPortal,
MenubarMenu,
MenubarTrigger,
MenubarContent,
MenubarGroup,
MenubarSeparator,
MenubarLabel,
MenubarItem,
MenubarShortcut,
MenubarCheckboxItem,
MenubarRadioGroup,
MenubarRadioItem,
MenubarSub,
MenubarSubTrigger,
MenubarSubContent,
}
Usage
import {
Menubar,
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarShortcut,
MenubarTrigger,
} from "@/components/ui/menubar"<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
Checkbox
Loading...
Radio
Loading...
Submenu
Loading...
With Icons
Loading...
API
See the Base UI documentation for more information.