Dropdown

React Dropdown components are used to display a list of actions or options in a compact menu. They are commonly used for contextual actions, overflow menus, and option selectors.

This Dropdown component is built with React and styled using Tailwind CSS. It uses React Aria for accessible keyboard and focus handling.

Installation

Install the component using the Tailgrids CLI.

npx @tailgrids/cli add dropdown

Anatomy

Import the component parts and combine them.

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuSeparator
} from "@/registry/core/dropdown";

export const DropdownExample = () => (
  <DropdownMenu>
    <DropdownMenuTrigger />
    <DropdownMenuContent>
      <DropdownMenuSection>
        <DropdownMenuHeader />
        <DropdownMenuItem />
        <DropdownMenuItem />
      </DropdownMenuSection>
      <DropdownMenuSeparator />
      <DropdownMenuItem />
    </DropdownMenuContent>
  </DropdownMenu>
);

Usage

Import the dropdown components and wrap a trigger with menu items.

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuSection,
  DropdownMenuHeader,
  DropdownMenuSeparator
} from "@/registry/core/dropdown";
import { Button } from "@/registry/core/button";

export const DropdownUsageExample = () => (
  <DropdownMenu>
    <DropdownMenuTrigger>
      <Button>Open Menu</Button>
    </DropdownMenuTrigger>
    <DropdownMenuContent>
      <DropdownMenuSection>
        <DropdownMenuHeader>Account</DropdownMenuHeader>
        <DropdownMenuItem onAction={() => console.log("Edit")}>
          Edit
        </DropdownMenuItem>
        <DropdownMenuItem onAction={() => console.log("Duplicate")}>
          Duplicate
        </DropdownMenuItem>
      </DropdownMenuSection>
      <DropdownMenuSeparator />
      <DropdownMenuSection>
        <DropdownMenuItem onAction={() => console.log("Delete")}>
          Delete
        </DropdownMenuItem>
      </DropdownMenuSection>
    </DropdownMenuContent>
  </DropdownMenu>
);

Examples

With Separator

Use separators to group related actions.

With Icons

Add icons to menu items for better visual context.

With Section

Use sections to group related actions.

Custom

Style the dropdown menu and items to match your design.

API Reference

The root component. Extends MenuTriggerProps from React Aria.

The button that opens the dropdown menu. Extends ButtonProps from React Aria.

PropTypeDescription
classNamestringAdditional CSS classes
childrenReact.ReactNodeTrigger content

The popover container for menu items. Extends PopoverProps from React Aria.

PropTypeDescription
childrenReact.ReactNodeMenu items and separators

A section container for grouping related menu items. Extends MenuSectionProps from React Aria.

PropTypeDescription
classNamestringAdditional CSS classes
childrenReact.ReactNodeMenu items within this section

A header label for a menu section. Extends Header component props from React Aria.

PropTypeDescription
classNamestringAdditional CSS classes
childrenReact.ReactNodeHeader text content

An individual menu item. Extends MenuItemProps from React Aria.

PropTypeDescription
onAction() => voidCallback when item is selected
classNamestringAdditional CSS classes
childrenReact.ReactNodeItem content

A horizontal divider between menu items. Extends hr element props.

PropTypeDescription
classNamestringAdditional CSS classes

See React Aria for more details.

Accessibility

  • Built on React Aria Components for robust accessibility
  • Full keyboard navigation (Arrow keys, Enter, Escape)
  • Automatic focus management
  • Screen reader-friendly ARIA attributes
  • Click outside and Escape key close the menu
  • Focus returns to the trigger when the menu closes