Component
Action Menu
Action menu dropdown with keyboard shortcuts, grouped actions, and destructive action options for document management.
- Component
- Tailwind
- HTML
- MIT
Preview
Live component
9:41 100%
devsnips.site/library/tailwind/components/dropdowns/action-menu/ fluid · no fixed width 100%
Install
Add to your project
npx devsnips add Tailwind/Components/Dropdowns/action-menu Tailwind/Components/Dropdowns/action-menu <!-- Action Menu -->
<div class="relative inline-block">
<button
id="action-button"
class="inline-flex items-center gap-2 px-4 py-2.5 bg-indigo-600 text-white text-sm font-medium rounded-lg hover:bg-indigo-700 focus:outline-none focus:ring-4 focus:ring-indigo-200 transition-colors"
aria-expanded="true"
aria-haspopup="true"
onclick="toggleDropdown('action-menu')"
>
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path>
</svg>
<span>Actions</span>
</button>
<div
id="action-menu"
class="hidden absolute right-0 z-20 mt-2 w-56 bg-white rounded-xl shadow-xl border border-gray-200 overflow-hidden"
>
<!-- Primary Actions -->
<div class="py-1">
<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-gray-700 hover:bg-gray-50 transition-colors">
<svg class="w-5 h-5 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path>
</svg>
<span>Edit Document</span>
<kbd class="ml-auto px-1.5 py-0.5 text-xs text-gray-400 bg-gray-100 rounded">⌘E</kbd>
</button>
<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-gray-700 hover:bg-gray-50 transition-colors">
<svg class="w-5 h-5 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"></path>
</svg>
<span>Duplicate</span>
<kbd class="ml-auto px-1.5 py-0.5 text-xs text-gray-400 bg-gray-100 rounded">⌘D</kbd>
</button>
<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-gray-700 hover:bg-gray-50 transition-colors">
<svg class="w-5 h-5 text-purple-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z"></path>
</svg>
<span>Share</span>
<kbd class="ml-auto px-1.5 py-0.5 text-xs text-gray-400 bg-gray-100 rounded">⌘+</kbd>
</button>
</div>
<!-- Divider -->
<div class="border-t border-gray-100"></div>
<!-- Secondary Actions -->
<div class="py-1">
<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-gray-700 hover:bg-gray-50 transition-colors">
<svg class="w-5 h-5 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"></path>
</svg>
<span>Download</span>
</button>
<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-gray-700 hover:bg-gray-50 transition-colors">
<svg class="w-5 h-5 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z"></path>
</svg>
<span>Add to Favorites</span>
</button>
</div>
<!-- Divider -->
<div class="border-t border-gray-100"></div>
<!-- Destructive Action -->
<div class="py-1">
<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-red-600 hover:bg-red-50 transition-colors">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path>
</svg>
<span>Delete</span>
</button>
</div>
</div>
</div>
<script>
function toggleDropdown(id) {
const menu = document.getElementById(id);
menu.classList.toggle('hidden');
const button = document.getElementById('action-button');
const isExpanded = button.getAttribute('aria-expanded') === 'true';
button.setAttribute('aria-expanded', !isExpanded);
}
document.addEventListener('click', function(event) {
const dropdown = document.querySelector('.relative.inline-block');
const button = document.getElementById('action-button');
const menu = document.getElementById('action-menu');
if (!dropdown.contains(event.target)) {
menu.classList.add('hidden');
button.setAttribute('aria-expanded', 'false');
}
});
</script> # Action Menu
Action menu dropdown with keyboard shortcuts, grouped actions, and destructive options.
## Preview
Open `preview.html` for a standalone demonstration.
## Features
- Grouped menu items
- Destructive action styling
- Keyboard-friendly structure
## Usage
```bash
npx devsnips add Tailwind/Components/Dropdowns/action-menu
```
Copy from `code.html`. Include any inline script for open/close behavior.
## Customization
- Menu surface, item hover, destructive colors
## Accessibility
- Prefer proper menu/disclosure keyboard patterns
- Focus management on open/close
## Dependencies
- Tailwind CSS; small JS if script is present
## File Structure
- `code.html` · `preview.html` · `metadata.json` · `README.md` 100 lines UTF-8 · LF · Spaces: 2
DevSnips AI ready Claude · Cursor · Windsurf
Agent skill & Model Context Protocol
Pass this component straight into your AI workflow. DevSnips exposes each resource as a structured, addressable registry entry, so your agent installs the real files instead of approximating them.
devsnips://components/dropdowns/action-menu I want to use this DevSnips resource in production: Page: https://devsnips.site/library/tailwind/components/dropdowns/action-menu/ Install: npx devsnips add Tailwind/Components/Dropdowns/action-menu This is the Action Menu — Action menu dropdown with keyboard shortcuts, grouped actions, and destructive action options for document management. Use this DevSnips resource as the starting point for my project. Adapt it to my project's stack and conventions, fix any issues, and make it production-ready while preserving its intended design and behavior.
Paste into ChatGPT, Claude or your agent — it already carries the page URL and the exact install path.
Resource URI
devsnips://components/dropdowns/action-menu