Dropdown Menu

A component that reveals a list of options when activated, allowing users to select one or multiple items.

Example

Usage

Installation

Install following dependencies:

npm install react-aria-components tw-animate-css tailwindcss-react-aria-components class-variance-authority lucide-react clsx tailwind-merge motion

Add cn helper using clsx and twMerge for conditional class merging in Tailwind components.

lib/utils.ts

Copy and paste the following code into your project.

components/ui/core/dropdown-menu.tsx
npx libravelui@latest add dropdown-menu

Anatomy

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuGroup,
  DropdownMenuSeparator,
  DropdownMenuShortcut,
  DropdownMenuSub,
  DropdownMenuSubTrigger,
  DropdownMenuSubContent,
} from "@/components/ui/core/dropdown-menu";
<DropdownMenu>
  <DropdownMenuTrigger>Open</DropdownMenuTrigger>

  <DropdownMenuContent popover={{ placement: "top" }} withArrow>
    <DropdownMenuGroup title="Account">
      <DropdownMenuItem>
        Profile
        <DropdownMenuShortcut keys="⇧⌘P" />
      </DropdownMenuItem>
      <DropdownMenuItem>
        Billing
        <DropdownMenuShortcut keys="⌘B" />
      </DropdownMenuItem>
      <DropdownMenuItem>
        Settings
        <DropdownMenuShortcut keys="⌘S" />
      </DropdownMenuItem>
      <DropdownMenuItem>
        Keyboard shortcuts
        <DropdownMenuShortcut keys="⌘K" />
      </DropdownMenuItem>
    </DropdownMenuGroup>

    <DropdownMenuSeparator />

    <DropdownMenuGroup title="Team Management">
      <DropdownMenuItem>Team</DropdownMenuItem>

      <DropdownMenuSub>
        <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>
        <DropdownMenuSubContent>
          <DropdownMenuItem>Email</DropdownMenuItem>
          <DropdownMenuItem>Message</DropdownMenuItem>
          <DropdownMenuSeparator />
          <DropdownMenuItem>More...</DropdownMenuItem>
        </DropdownMenuSubContent>
      </DropdownMenuSub>

      <DropdownMenuItem>
        New Team
        <DropdownMenuShortcut keys="⌘+T" />
      </DropdownMenuItem>
    </DropdownMenuGroup>

    <DropdownMenuSeparator />

    <DropdownMenuGroup title="Resources">
      <DropdownMenuItem>GitHub</DropdownMenuItem>
      <DropdownMenuItem>Support</DropdownMenuItem>
      <DropdownMenuItem isDisabled>API</DropdownMenuItem>
    </DropdownMenuGroup>

    <DropdownMenuSeparator />

    <DropdownMenuGroup title="Danger Zone">
      <DropdownMenuItem tone="destructive">
        Log out
        <DropdownMenuShortcut keys="⇧⌘Q" />
      </DropdownMenuItem>
    </DropdownMenuGroup>
  </DropdownMenuContent>
</DropdownMenu>

Another Examples

Custom trigger

Uses a custom trigger element, giving full control over the trigger’s appearance and behavior.

Usage

Multiple Selection

Allows users to select multiple items simultaneously from the menu. This is useful when more than one choice needs to be applied at once, such as filtering options, tagging, or batch actions.

Usage

Single Selection

Allows the user to select one option from the menu at a time, suitable for settings or filters where only a single choice is applicable.

Usage

Props

Loading types…

Accessible React component library to copy, customize, and own your UI. Built for Next.js, Vite, and Laravel.

Crafted by dervyon. Peep the Source Code on GitHub.

Hosted on Vercel. The source code's got the MIT license.

2025 - 2026 · LibravelUI

Starter Kits

Templates

    Coming Soon

Labs