All specs
Interactive · context-menu

Context Menu

A bordered action menu with separator support.

Anatomy

╭──────────────╮
│ ▸ Edit       │
│ · Duplicate  │
│ ──────────── │
│ · Delete     │
╰──────────────╯

↑↓ navigate · ↵ select · esc dismiss

Usage

const action = await contextMenu({
  items: [
    { label: 'Edit',      value: 'edit' },
    { label: 'Duplicate',  value: 'duplicate' },
    { separator: true },
    { label: 'Delete',    value: 'delete', danger: true },
  ],
  title: 'Actions',
})

Options

KeyTypeDefaultDescription
itemsContextMenuItem[]Menu items
titlestring?Optional title

### Item types

// Action item
{ label: string; value: T; danger?: boolean }

// Separator
{ separator: true }

Keyboard

KeyAction
Previous item
Next item
Select item
escDismiss → null

Do & don't

Do — use for contextual actions on a selected item

Don't — use for primary navigation (use tabs); don't use for long lists (use search)

Out of scope

Nested submenus

Mouse/click support

Dynamic items

Positioning relative to cursor