Components
Context Menu
Displays a menu located at the pointer, triggered by a right click.
php artisan blatui:add context-menu
Right click here
People
<x-ui.context-menu>
<x-ui.context-menu-trigger class="border-input flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm">
Right click here
</x-ui.context-menu-trigger>
<x-ui.context-menu-content class="w-64">
<x-ui.context-menu-item inset>
Back
<x-ui.context-menu-shortcut>⌘[</x-ui.context-menu-shortcut>
</x-ui.context-menu-item>
<x-ui.context-menu-item inset disabled>
Forward
<x-ui.context-menu-shortcut>⌘]</x-ui.context-menu-shortcut>
</x-ui.context-menu-item>
<x-ui.context-menu-item inset>
Reload
<x-ui.context-menu-shortcut>⌘R</x-ui.context-menu-shortcut>
</x-ui.context-menu-item>
<x-ui.context-menu-separator />
<x-ui.context-menu-checkbox-item :checked="true">
Show Bookmarks Bar
<x-ui.context-menu-shortcut>⌘⇧B</x-ui.context-menu-shortcut>
</x-ui.context-menu-checkbox-item>
<x-ui.context-menu-checkbox-item>Show Full URLs</x-ui.context-menu-checkbox-item>
<x-ui.context-menu-separator />
<x-ui.context-menu-label inset>People</x-ui.context-menu-label>
<x-ui.context-menu-radio-group value="pedro">
<x-ui.context-menu-radio-item value="pedro">Pedro Duarte</x-ui.context-menu-radio-item>
<x-ui.context-menu-radio-item value="colm">Colm Tuite</x-ui.context-menu-radio-item>
</x-ui.context-menu-radio-group>
</x-ui.context-menu-content>
</x-ui.context-menu>
Submenu
Right click here
More tools
<x-ui.context-menu>
<x-ui.context-menu-trigger class="border-input flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm">
Right click here
</x-ui.context-menu-trigger>
<x-ui.context-menu-content class="w-52">
<x-ui.context-menu-item>Back</x-ui.context-menu-item>
<x-ui.context-menu-item>Reload</x-ui.context-menu-item>
<x-ui.context-menu-sub>
<x-ui.context-menu-sub-trigger>More tools</x-ui.context-menu-sub-trigger>
<x-ui.context-menu-sub-content class="w-44">
<x-ui.context-menu-item>Save page as…</x-ui.context-menu-item>
<x-ui.context-menu-item>Create shortcut…</x-ui.context-menu-item>
<x-ui.context-menu-separator />
<x-ui.context-menu-item>Developer tools</x-ui.context-menu-item>
</x-ui.context-menu-sub-content>
</x-ui.context-menu-sub>
<x-ui.context-menu-separator />
<x-ui.context-menu-item>View source</x-ui.context-menu-item>
</x-ui.context-menu-content>
</x-ui.context-menu>
With Icons
Right click here
<x-ui.context-menu>
<x-ui.context-menu-trigger class="border-input flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm">
Right click here
</x-ui.context-menu-trigger>
<x-ui.context-menu-content class="w-52">
<x-ui.context-menu-item><x-lucide-copy aria-hidden="true" /> Copy <x-ui.context-menu-shortcut>⌘C</x-ui.context-menu-shortcut></x-ui.context-menu-item>
<x-ui.context-menu-item><x-lucide-scissors aria-hidden="true" /> Cut <x-ui.context-menu-shortcut>⌘X</x-ui.context-menu-shortcut></x-ui.context-menu-item>
<x-ui.context-menu-item><x-lucide-clipboard aria-hidden="true" /> Paste <x-ui.context-menu-shortcut>⌘V</x-ui.context-menu-shortcut></x-ui.context-menu-item>
<x-ui.context-menu-separator />
<x-ui.context-menu-item variant="destructive"><x-lucide-trash-2 aria-hidden="true" /> Delete</x-ui.context-menu-item>
</x-ui.context-menu-content>
</x-ui.context-menu>
API Reference
Props, slots and exposed methods for
<x-ui.context-menu>.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
href |
string
|
— | Set on <x-ui.context-menu-item>. Renders the item as a link (<a>) to this URL instead of a button. |
variant |
string
|
'default'
|
Set on <x-ui.context-menu-item>. Use destructive to style dangerous actions in the destructive color.
default
destructive
|
inset |
bool
|
false
|
Set on an item, label, or sub-trigger to add left padding so its text aligns with items that have a leading icon or check. |
disabled |
bool
|
false
|
Set on <x-ui.context-menu-item> to disable it (not focusable, not clickable, dimmed). |
closeOnSelect |
bool
|
true
|
Set on <x-ui.context-menu-item> (true) — closes the menu after the item is chosen. On checkbox/radio items it defaults to false so the menu stays open while toggling. |
checked |
bool
|
false
|
Set on <x-ui.context-menu-checkbox-item> for its initial checked state. |
value |
string
|
— | On <x-ui.context-menu-radio-group> it is the initially selected value; on each <x-ui.context-menu-radio-item> it is that option's value. The matching item is shown as selected. |
Slots
| Slot | Description |
|---|---|
default |
Compose the menu from <x-ui.context-menu-trigger> and <x-ui.context-menu-content>. The wrapper holds the shared open/position state. |
trigger |
Content of <x-ui.context-menu-trigger> — the region the user right-clicks to open the menu at the pointer. |
content |
Content of <x-ui.context-menu-content> — items, labels, separators, groups, checkbox/radio items, and submenus. Teleported to <body> and positioned at the cursor. |
Methods
Available on the component's Alpine scope — call them from markup in the slot
(e.g. @click="…").
| Method | Description |
|---|---|
openAt(event) |
Opens the menu at the pointer position from a contextmenu event (the trigger wires this on @contextmenu) and focuses the first item. |
closeMenu(returnFocus = true) |
Closes the menu and, unless returnFocus is false, restores focus to the trigger. |