Context Menu

Right-click menu with items, submenus, checkboxes, radios, shortcuts, and keyboard navigation.

Default

Right-click the area below to open a context menu.

Right-click here
<div data-sui-context="ctx-demo">Right-click here</div>

<div class="sui-context-menu" id="ctx-demo" role="menu">
  <button class="sui-context-item" role="menuitem">Back</button>
  <button class="sui-context-item" role="menuitem">Forward</button>
  <button class="sui-context-item" role="menuitem">Reload</button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">Save As...</button>
  <button class="sui-context-item" role="menuitem">Print...</button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">View Page Source</button>
  <button class="sui-context-item" role="menuitem">Inspect</button>
</div>

With Shortcuts

Display keyboard shortcut hints alongside menu items.

Right-click here
<div data-sui-context="ctx-shortcuts">Right-click here</div>

<div class="sui-context-menu" id="ctx-shortcuts" role="menu">
  <button class="sui-context-item" role="menuitem">Undo <span class="sui-context-shortcut">⌘Z</span></button>
  <button class="sui-context-item" role="menuitem">Redo <span class="sui-context-shortcut">⇧⌘Z</span></button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">Cut <span class="sui-context-shortcut">⌘X</span></button>
  <button class="sui-context-item" role="menuitem">Copy <span class="sui-context-shortcut">⌘C</span></button>
  <button class="sui-context-item" role="menuitem">Paste <span class="sui-context-shortcut">⌘V</span></button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">Select All <span class="sui-context-shortcut">⌘A</span></button>
</div>

Checkboxes & Radios

Toggle items with checkboxes and exclusive radio selections.

Right-click here
<div data-sui-context="ctx-checks">Right-click here</div>

<div class="sui-context-menu" id="ctx-checks" role="menu">
  <div class="sui-context-label">View</div>
  <button class="sui-context-item" role="menuitemcheckbox" data-sui-context-check><span class="sui-context-check">&#10003;</span> Show Toolbar</button>
  <button class="sui-context-item" role="menuitemcheckbox" data-sui-context-check><span class="sui-context-check"></span> Show Sidebar</button>
  <button class="sui-context-item" role="menuitemcheckbox" data-sui-context-check><span class="sui-context-check">&#10003;</span> Show Statusbar</button>
  <div class="sui-context-separator"></div>
  <div class="sui-context-label">Sort By</div>
  <button class="sui-context-item" role="menuitemradio" data-sui-context-radio="sort"><span class="sui-context-check">&bull;</span> Name</button>
  <button class="sui-context-item" role="menuitemradio" data-sui-context-radio="sort"><span class="sui-context-check"></span> Date</button>
  <button class="sui-context-item" role="menuitemradio" data-sui-context-radio="sort"><span class="sui-context-check"></span> Size</button>
</div>

With Submenu

Nested submenus for organizing deeper actions. Hover or use arrow keys to open.

Right-click here
<div data-sui-context="ctx-submenu">Right-click here</div>

<div class="sui-context-menu" id="ctx-submenu" role="menu">
  <button class="sui-context-item" role="menuitem">New File <span class="sui-context-shortcut">⌘N</span></button>
  <div class="sui-context-sub">
    <button class="sui-context-sub-trigger">New From Template</button>
    <div class="sui-context-sub-content" role="menu">
      <button class="sui-context-item" role="menuitem">HTML</button>
      <button class="sui-context-item" role="menuitem">CSS</button>
      <button class="sui-context-item" role="menuitem">JavaScript</button>
      <div class="sui-context-separator"></div>
      <button class="sui-context-item" role="menuitem">React Component</button>
      <button class="sui-context-item" role="menuitem">Vue Component</button>
    </div>
  </div>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">Open File... <span class="sui-context-shortcut">⌘O</span></button>
  <div class="sui-context-sub">
    <button class="sui-context-sub-trigger">Open Recent</button>
    <div class="sui-context-sub-content" role="menu">
      <button class="sui-context-item" role="menuitem">index.html</button>
      <button class="sui-context-item" role="menuitem">softui.css</button>
      <button class="sui-context-item" role="menuitem">softui.js</button>
    </div>
  </div>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">Save <span class="sui-context-shortcut">⌘S</span></button>
</div>

With Icons

Add inline SVG icons with sui-context-icon for visual clarity.

Right-click here
<div data-sui-context="ctx-icons">Right-click here</div>

<div class="sui-context-menu" id="ctx-icons" role="menu">
  <button class="sui-context-item" role="menuitem">
    <svg class="sui-context-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
    Edit <span class="sui-context-shortcut">⌘E</span>
  </button>
  <button class="sui-context-item" role="menuitem">
    <svg class="sui-context-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
    Duplicate <span class="sui-context-shortcut">⌘D</span>
  </button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item sui-context-item-destructive" role="menuitem">
    <svg class="sui-context-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/></svg>
    Delete
  </button>
</div>

Disabled Items

Add the disabled class to make items non-interactive.

Right-click here
<div data-sui-context="ctx-disabled">Right-click here</div>

<div class="sui-context-menu" id="ctx-disabled" role="menu">
  <button class="sui-context-item" role="menuitem">Cut <span class="sui-context-shortcut">⌘X</span></button>
  <button class="sui-context-item" role="menuitem">Copy <span class="sui-context-shortcut">⌘C</span></button>
  <button class="sui-context-item disabled" role="menuitem">Paste <span class="sui-context-shortcut">⌘V</span></button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item" role="menuitem">Select All <span class="sui-context-shortcut">⌘A</span></button>
  <button class="sui-context-item disabled" role="menuitem">Find &amp; Replace</button>
</div>

Destructive Item

Use sui-context-item-destructive for dangerous actions like delete.

Right-click here
<div data-sui-context="ctx-destructive">Right-click here</div>

<div class="sui-context-menu" id="ctx-destructive" role="menu">
  <button class="sui-context-item" role="menuitem">Rename</button>
  <button class="sui-context-item" role="menuitem">Move To...</button>
  <button class="sui-context-item" role="menuitem">Archive</button>
  <div class="sui-context-separator"></div>
  <button class="sui-context-item sui-context-item-destructive" role="menuitem">Delete Permanently</button>
</div>

Delete this item?

This action cannot be undone. This will permanently delete the item and remove all associated data.