Skip to content

Dropdown Menu

The DropdownMenu component provides a way to create customizable dropdown menus. It can render submenus and show item various indicators.

It can be composed with several subcomponents such as DropdownMenu.Root, DropdownMenu.Trigger, DropdownMenu.Content, DropdownMenu.Header, DropdownMenu.Footer, DropdownMenu.Separator, DropdownMenu.Group and DropdownMenu.Item to offer a structured and customizable interface.

DropdownMenu.Item has such variations as AvatarItem, LogoItem, IconItem, IndicatorItem, CheckboxItem, and RadioItem to provide different types of items for different use cases.

Because DropdownMenu.Trigger uses asChild, any element can be the trigger — including a text Button. The Button keeps all of its themes and variants (here, variant="primary") while gaining the full dropdown menu functionality and item variations.

Usage

import { DropdownMenu } from "@harnessio/ui/components";
//...
return (
<DropdownMenu.Root>
<DropdownMenu.Trigger aria-label="options menu">
<IconV2 name="more-horizontal" />
</DropdownMenu.Trigger>
<DropdownMenu.Content>
<DropdownMenu.Item onSelect={onEdit}>Edit</DropdownMenu.Item>
<DropdownMenu.Item onSelect={onDelete}>Delete</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Root>
)

Anatomy

All parts of the DropdownMenu component can be imported and composed as required.

<DropdownMenu.Root>
<DropdownMenu.Trigger />
<DropdownMenu.Content>
<DropdownMenu.Item />
<DropdownMenu.Group>
<DropdownMenu.Item />
</DropdownMenu.Group>
<DropdownMenu.Separator />
<DropdownMenu.RadioGroup>
<DropdownMenu.RadioItem />
</DropdownMenu.RadioGroup>
<DropdownMenu.Item>
<DropdownMenu.AvatarItem />
<DropdownMenu.LogoItem />
<DropdownMenu.IconItem />
<DropdownMenu.IndicatorItem />
<DropdownMenu.CheckboxItem />
<DropdownMenu.RadioItem />
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Root>