DropdownMenu

Menu of actions triggered by a button. Supports items, separators, groups, sub-menus, and checkbox items.

Example

Props

DropdownMenu.Root

PropTypeDefaultDescription
openbooleanfalseControls menu visibility (bindable)
childrenSnippetTrigger and content

DropdownMenu.Trigger

PropTypeDefaultDescription
classstringAdditional CSS classes
childrenSnippetTrigger element

DropdownMenu.Content

PropTypeDefaultDescription
side'top' | 'right' | 'bottom' | 'left''bottom'Preferred side
sideOffsetnumber4Distance from trigger in px
classstringAdditional CSS classes
childrenSnippetMenu items

DropdownMenu.Item

PropTypeDefaultDescription
onSelect() => voidCallback when item is selected
disabledbooleanDisables the item
classstringAdditional CSS classes
childrenSnippetItem content

DropdownMenu.Separator

PropTypeDefaultDescription
classstringAdditional CSS classes

DropdownMenu.Group / DropdownMenu.GroupHeading

PropTypeDefaultDescription
classstringAdditional CSS classes
childrenSnippetGroup content / heading text

Usage

<script>
  import { DropdownMenu, Button } from '@chrissnell/chonky-ui';

  let open = $state(false);
</script>

<DropdownMenu.Root bind:open>
  <DropdownMenu.Trigger>
    <Button>Actions</Button>
  </DropdownMenu.Trigger>
  <DropdownMenu.Content>
    <DropdownMenu.Item onSelect={() => console.log('edit')}>Edit</DropdownMenu.Item>
    <DropdownMenu.Item onSelect={() => console.log('copy')}>Copy</DropdownMenu.Item>
    <DropdownMenu.Separator />
    <DropdownMenu.Item disabled>Archive</DropdownMenu.Item>
    <DropdownMenu.Item>Delete</DropdownMenu.Item>
  </DropdownMenu.Content>
</DropdownMenu.Root>