shadcn.io is not affiliated with official shadcn/ui
Installation
bunx --bun shadcn@latest add https://kit.dev/r/radix/menubar.jsonnpx shadcn@latest add https://kit.dev/r/radix/menubar.jsonpnpm dlx shadcn@latest add https://kit.dev/r/radix/menubar.jsonyarn shadcn@latest add https://kit.dev/r/radix/menubar.jsonInstall the following dependencies:
bun add radix-ui lucide-reactnpm install radix-ui lucide-reactpnpm add radix-ui lucide-reactyarn add radix-ui lucide-reactCopy and paste the following code into your project.
"use client";
import { CheckIcon, ChevronRightIcon } from "lucide-react";
import { Menubar as MenubarPrimitive } from "radix-ui";
import type React from "react";
import { cn } from "@/lib/utils";
export const Menubar = (
props: React.ComponentProps<typeof MenubarPrimitive.Root>
) => {
const { className, ...rest } = props;
return (
<MenubarPrimitive.Root
className={cn("cn-menubar flex items-center", className)}
data-slot="menubar"
{...rest}
/>Update the import paths to match your project setup.
Anatomy
Menubar
├── MenubarMenu
│ ├── MenubarTrigger
│ └── MenubarContent
│ ├── MenubarGroup
│ │ ├── MenubarLabel
│ │ ├── MenubarItem
│ │ └── MenubarItem
│ ├── MenubarSeparator
│ ├── MenubarGroup
│ │ ├── MenubarCheckboxItem
│ │ └── MenubarCheckboxItem
│ ├── MenubarRadioGroup
│ │ ├── MenubarRadioItem
│ │ └── MenubarRadioItem
│ └── MenubarSub
│ ├── MenubarSubTrigger
│ └── MenubarSubContent
│ └── MenubarItem
└── MenubarMenu
├── MenubarTrigger
└── MenubarContentUsage
import {
Menubar,
MenubarContent,
MenubarGroup,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarShortcut,
MenubarTrigger,
} from "@/components/ui/menubar";<Menubar>
<MenubarMenu>
<MenubarTrigger>File</MenubarTrigger>
<MenubarContent>
<MenubarGroup>
<MenubarItem value="new-tab">
New Tab <MenubarShortcut>⌘T</MenubarShortcut>
</MenubarItem>
<MenubarItem value="new-window">New Window</MenubarItem>
</MenubarGroup>
<MenubarSeparator />
<MenubarGroup>
<MenubarItem value="share">Share</MenubarItem>
<MenubarItem value="print">Print</MenubarItem>
</MenubarGroup>
</MenubarContent>
</MenubarMenu>
</Menubar>Accessibility
| Key | Description |
|---|---|
Enter | Activate the focused control. |
Space | Activate the focused control. |
ArrowDown | Move down. |
ArrowUp | Move up. |
ArrowLeft | Move left. |
ArrowRight | Move right. |
Home | Go to the start. |
End | Go to the end. |
Demos
Checkbox
Use MenubarCheckboxItem for toggleable options.
Radio
Use MenubarRadioGroup and MenubarRadioItem for single-select options.
Submenu
Use MenubarSub, MenubarSubTrigger, and MenubarSubContent for nested menus.
Icons
Combine icons with labels for quick scanning.
Rtl
Right-to-left menubar. See the RTL configuration guide for document direction.
API Reference
Menubar
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarMenu
PropType
value?stringdefaultValue?stringchildren?React.ReactNodedir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarGroup
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarPortal
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarRadioGroup
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarTrigger
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarContent
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
CSS variableType
--radix-menubar-content-transform-originstringMenubarItem
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarCheckboxItem
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarRadioItem
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarLabel
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarSeparator
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarShortcut
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarSub
PropType
value?stringdefaultValue?stringopenboolean): voidchildren?React.ReactNodedefaultOpen?booleandir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarSubTrigger
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
MenubarSubContent
PropType
value?stringdefaultValue?stringdir?RovingFocusGroupProps["dir"]loop?RovingFocusGroupProps["loop"]AttributeType
CSS variableType
--radix-menubar-content-transform-originstring