Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Shadcn Menu for React and Tailwind

List of options on button interaction.

Installation

bunx --bun shadcn@latest add https://kit.dev/r/menu.json

Anatomy

MenuArrow
└── MenuArrowTip
MenuSubContent
MenuContextTrigger
MenuIndicator
MenuQuickItem
└── MenuGroup
    └── MenuGroupLabel
MenuItemIndicator
MenuItemText
MenuPositioner
MenuSeparator
MenuTrigger
└── MenuSubTrigger

Usage

import {
  Archive,
  ArchiveX,
  Bell,
  CirclePlus,
  FolderInput,
  MailX,
  Reply,
  Send,
  SquarePen,
  Trash,
  Trash2,
} from "lucide-react";
import { Button } from "@/components/ui/button";
import {
  Menu,
  MenuCheckboxItem,
  MenuContent,
  MenuGroup,
  MenuItem,
  MenuRadioGroup,
  MenuRadioItem,
  MenuSeparator,
  MenuShortcut,
  MenuSub,
  MenuSubContent,
  MenuSubTrigger,
  MenuTrigger,
} from "@/components/ui/menu";
<Menu>
  <MenuTrigger asChild>
    <Button variant="outline">Open</Button>
  </MenuTrigger>
  <MenuContent className="w-40">
    <MenuGroup>
      <MenuItem value="forward">
        <Send /> Forward
        <MenuShortcut>⌘F</MenuShortcut>
      </MenuItem>
      <MenuItem value="reply">
        <Reply /> Reply
        <MenuShortcut>⌘R</MenuShortcut>
      </MenuItem>
      <MenuItem value="archive">
        <Archive /> Archive
        <MenuShortcut>⌘Z</MenuShortcut>
      </MenuItem>
      <MenuSub>
        <MenuSubTrigger>
          <FolderInput /> Move to
        </MenuSubTrigger>
        <MenuSubContent>
          <MenuItem value="move-to-folder-1">
            <ArchiveX /> Junk
          </MenuItem>
          <MenuItem value="move-to-folder-2">
            <Trash /> Trash
          </MenuItem>
          <MenuItem value="move-to-folder-3">
            <Bell /> Reminders
          </MenuItem>
          <MenuSub>
            <MenuSubTrigger>
              <CirclePlus />
              More
            </MenuSubTrigger>
            <MenuSubContent>
              <MenuItem value="move-to-folder-4">
                <SquarePen />
                Drafts
              </MenuItem>
              <MenuItem value="move-to-folder-6">
                <MailX />
                Spam
              </MenuItem>
            </MenuSubContent>
          </MenuSub>
        </MenuSubContent>
      </MenuSub>
      <MenuSeparator />
      <MenuRadioGroup heading="Priority" value="medium">
        <MenuRadioItem value="low">Low</MenuRadioItem>
        <MenuRadioItem value="medium">Medium</MenuRadioItem>
        <MenuRadioItem value="high">High</MenuRadioItem>
      </MenuRadioGroup>
      <MenuSeparator />
      <MenuCheckboxItem checked value="block">
        Block sender
      </MenuCheckboxItem>
      <MenuSeparator />
      <MenuItem value="delete" variant="destructive">
        <Trash2 /> Delete
        <MenuShortcut>⌘ ⌫</MenuShortcut>
      </MenuItem>
    </MenuGroup>
  </MenuContent>
</Menu>

Accessibility

KeyDescription
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

Checkboxes

Destructive

Dialog

Group Label

Icons

Nested

Positioning

Quick Item

Radio Group

Shortcuts

With Scroll

With Separator

API Reference

PropType
AttributeType

div

PropType
AttributeType
CSS variableType

div

PropType
AttributeType
CSS variableType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

hr

PropType
AttributeType

button

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType

div

PropType
AttributeType
PropType
AttributeType

span

PropType
AttributeType

useMenu

PropType