DropdownMenu

A menu that appears when a trigger element is clicked, displaying a list of actions or options.

Example

Anatomy

<DropdownMenu.Root>
  <DropdownMenu.Trigger />
  <DropdownMenu.Portal>
    <DropdownMenu.Content>
      <DropdownMenu.Group>
        <DropdownMenu.Item />
        <DropdownMenu.Separator />
        <DropdownMenu.Sub>
          <DropdownMenu.SubTrigger />
          <DropdownMenu.SubContent>
            <DropdownMenu.Item />
          </DropdownMenu.SubContent>
        </DropdownMenu.Sub>
        <DropdownMenu.Separator />
        <DropdownMenu.CheckboxItem />
        <DropdownMenu.RadioGroup>
          <DropdownMenu.RadioItem />
        </DropdownMenu.RadioGroup>
      </DropdownMenu.Group>
    </DropdownMenu.Content>
  </DropdownMenu.Portal>
</DropdownMenu.Root>

Usage

import { DropdownMenu } from '@ivaldi/ui'
<DropdownMenu.Root>
  <DropdownMenu.Trigger asChild>
    <Button>Open Menu</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.Item>New File</DropdownMenu.Item>
    <DropdownMenu.Item>Open</DropdownMenu.Item>
    <DropdownMenu.Item>Save</DropdownMenu.Item>
    <DropdownMenu.Separator />
    <DropdownMenu.Item>Close</DropdownMenu.Item>
  </DropdownMenu.Content>
</DropdownMenu.Root>

With Submenus

<DropdownMenu.Root>
  <DropdownMenu.Trigger asChild>
    <Button>More Actions</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.Item>Open</DropdownMenu.Item>
    <DropdownMenu.Separator />
    <DropdownMenu.Sub>
      <DropdownMenu.SubTrigger>Share</DropdownMenu.SubTrigger>
      <DropdownMenu.SubContent>
        <DropdownMenu.Item>Copy Link</DropdownMenu.Item>
        <DropdownMenu.Item>Email</DropdownMenu.Item>
        <DropdownMenu.Item>Message</DropdownMenu.Item>
      </DropdownMenu.SubContent>
    </DropdownMenu.Sub>
  </DropdownMenu.Content>
</DropdownMenu.Root>

With Checkbox Items

<DropdownMenu.Root>
  <DropdownMenu.Trigger asChild>
    <Button>View Options</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.CheckboxItem checked={showToolbar}>
      Show Toolbar
    </DropdownMenu.CheckboxItem>
    <DropdownMenu.CheckboxItem checked={showPanel}>
      Show Panel
    </DropdownMenu.CheckboxItem>
    <DropdownMenu.Separator />
    <DropdownMenu.CheckboxItem checked={darkMode}>
      Dark Mode
    </DropdownMenu.CheckboxItem>
  </DropdownMenu.Content>
</DropdownMenu.Root>

With Radio Items

<DropdownMenu.Root>
  <DropdownMenu.Trigger asChild>
    <Button>Select Size</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.RadioGroup value={size} onValueChange={setSize}>
      <DropdownMenu.RadioItem value="sm">Small</DropdownMenu.RadioItem>
      <DropdownMenu.RadioItem value="md">Medium</DropdownMenu.RadioItem>
      <DropdownMenu.RadioItem value="lg">Large</DropdownMenu.RadioItem>
    </DropdownMenu.RadioGroup>
  </DropdownMenu.Content>
</DropdownMenu.Root>

With Icons

<DropdownMenu.Root>
  <DropdownMenu.Trigger asChild>
    <Button>File</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.Item>
      <FileIcon className="mr-2 size-4" />
      New File
    </DropdownMenu.Item>
    <DropdownMenu.Item>
      <FolderIcon className="mr-2 size-4" />
      Open Folder
    </DropdownMenu.Item>
    <DropdownMenu.Separator />
    <DropdownMenu.Item>
      <SaveIcon className="mr-2 size-4" />
      Save
    </DropdownMenu.Item>
  </DropdownMenu.Content>
</DropdownMenu.Root>

With Different Colors

<DropdownMenu.Root>
  <DropdownMenu.Trigger asChild>
    <Button>Actions</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.Item color="primary">Primary Action</DropdownMenu.Item>
    <DropdownMenu.Item color="success">Approve</DropdownMenu.Item>
    <DropdownMenu.Item color="warning">Review</DropdownMenu.Item>
    <DropdownMenu.Item color="danger">Delete</DropdownMenu.Item>
  </DropdownMenu.Content>
</DropdownMenu.Root>
PropTypeDefault
childrenReactNode
direnum
openboolean
defaultOpenboolean
onOpenChangefunction
modalboolean
PropTypeDefault
PropTypeDefault
PropTypeDefault
classNamestring
childrenReactNode
asChildboolean
PropTypeDefault
PropTypeDefault
classNamestring
childrenReactNode
asChildboolean
insetboolean
PropTypeDefault
childrenReactNode
containerElement | DocumentFragment
forceMounttrue
PropTypeDefault
valuestring
classNamestring
childrenReactNode
onValueChangefunction
asChildboolean
PropTypeDefault
PropTypeDefault
PropTypeDefault
classNamestring
asChildboolean
children*string
PropTypeDefault
childrenReactNode
openboolean
defaultOpenboolean
onOpenChangefunction
PropTypeDefault
PropTypeDefault
PropTypeDefault
typeenum
classNamestring
childrenReactNode
asChildboolean