Components

Menubar

A visually persistent menu common in desktop applications.

php artisan blatui:add menubar
<x-ui.menubar>
    <x-ui.menubar-menu>
        <x-ui.menubar-trigger>File</x-ui.menubar-trigger>
        <x-ui.menubar-content>
            <x-ui.menubar-item>New Tab <x-ui.menubar-shortcut>⌘T</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-item>New Window <x-ui.menubar-shortcut>⌘N</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-item disabled>New Incognito Window</x-ui.menubar-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-sub>
                <x-ui.menubar-sub-trigger>Share</x-ui.menubar-sub-trigger>
                <x-ui.menubar-sub-content>
                    <x-ui.menubar-item>Email link</x-ui.menubar-item>
                    <x-ui.menubar-item>Messages</x-ui.menubar-item>
                    <x-ui.menubar-item>Notes</x-ui.menubar-item>
                </x-ui.menubar-sub-content>
            </x-ui.menubar-sub>
            <x-ui.menubar-separator />
            <x-ui.menubar-item>Print... <x-ui.menubar-shortcut>⌘P</x-ui.menubar-shortcut></x-ui.menubar-item>
        </x-ui.menubar-content>
    </x-ui.menubar-menu>
    <x-ui.menubar-menu>
        <x-ui.menubar-trigger>Edit</x-ui.menubar-trigger>
        <x-ui.menubar-content>
            <x-ui.menubar-item>Undo <x-ui.menubar-shortcut>⌘Z</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-item>Redo <x-ui.menubar-shortcut>⇧⌘Z</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-sub>
                <x-ui.menubar-sub-trigger>Find</x-ui.menubar-sub-trigger>
                <x-ui.menubar-sub-content>
                    <x-ui.menubar-item>Search the web</x-ui.menubar-item>
                    <x-ui.menubar-separator />
                    <x-ui.menubar-item>Find...</x-ui.menubar-item>
                    <x-ui.menubar-item>Find Next</x-ui.menubar-item>
                </x-ui.menubar-sub-content>
            </x-ui.menubar-sub>
            <x-ui.menubar-separator />
            <x-ui.menubar-item>Cut</x-ui.menubar-item>
            <x-ui.menubar-item>Copy</x-ui.menubar-item>
            <x-ui.menubar-item>Paste</x-ui.menubar-item>
        </x-ui.menubar-content>
    </x-ui.menubar-menu>
    <x-ui.menubar-menu>
        <x-ui.menubar-trigger>View</x-ui.menubar-trigger>
        <x-ui.menubar-content>
            <x-ui.menubar-checkbox-item :checked="true">Always Show Bookmarks Bar</x-ui.menubar-checkbox-item>
            <x-ui.menubar-checkbox-item>Always Show Full URLs</x-ui.menubar-checkbox-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-item inset>Reload <x-ui.menubar-shortcut>⌘R</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-item inset disabled>Force Reload</x-ui.menubar-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-item inset>Toggle Fullscreen</x-ui.menubar-item>
        </x-ui.menubar-content>
    </x-ui.menubar-menu>
    <x-ui.menubar-menu>
        <x-ui.menubar-trigger>Profiles</x-ui.menubar-trigger>
        <x-ui.menubar-content>
            <x-ui.menubar-radio-group value="benoit">
                <x-ui.menubar-radio-item value="andy">Andy</x-ui.menubar-radio-item>
                <x-ui.menubar-radio-item value="benoit">Benoit</x-ui.menubar-radio-item>
                <x-ui.menubar-radio-item value="luis">Luis</x-ui.menubar-radio-item>
            </x-ui.menubar-radio-group>
            <x-ui.menubar-separator />
            <x-ui.menubar-item inset>Edit...</x-ui.menubar-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-item inset>Add Profile...</x-ui.menubar-item>
        </x-ui.menubar-content>
    </x-ui.menubar-menu>
</x-ui.menubar>

Simple

<x-ui.menubar>
    <x-ui.menubar-menu>
        <x-ui.menubar-trigger>File</x-ui.menubar-trigger>
        <x-ui.menubar-content>
            <x-ui.menubar-item>New <x-ui.menubar-shortcut>⌘N</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-item>Open <x-ui.menubar-shortcut>⌘O</x-ui.menubar-shortcut></x-ui.menubar-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-item>Save <x-ui.menubar-shortcut>⌘S</x-ui.menubar-shortcut></x-ui.menubar-item>
        </x-ui.menubar-content>
    </x-ui.menubar-menu>
    <x-ui.menubar-menu>
        <x-ui.menubar-trigger>Help</x-ui.menubar-trigger>
        <x-ui.menubar-content>
            <x-ui.menubar-item>Documentation</x-ui.menubar-item>
            <x-ui.menubar-item>Keyboard shortcuts</x-ui.menubar-item>
            <x-ui.menubar-separator />
            <x-ui.menubar-item>About BlatUI</x-ui.menubar-item>
        </x-ui.menubar-content>
    </x-ui.menubar-menu>
</x-ui.menubar>

API Reference

Props, slots and exposed methods for <x-ui.menubar>.

Props

Prop Type Default Description
align string 'start' Set on <x-ui.menubar-content>. Aligns the dropdown along the trigger edge it is anchored to.
start center end
side string 'bottom' Set on <x-ui.menubar-content>. Which edge of the trigger the dropdown opens from.
top right bottom left
sideOffset int 8 Set on <x-ui.menubar-content>. Gap in pixels between the trigger and the dropdown.
href string Set on <x-ui.menubar-item>. Renders the item as a link (<a>) to this URL instead of a button.
variant string 'default' Set on <x-ui.menubar-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.menubar-item> to disable it (not focusable, not clickable, dimmed).
checked bool false Set on <x-ui.menubar-checkbox-item> for its initial checked state.
closeOnSelect bool false Set on a checkbox/radio item to close the menu after toggling (defaults to false so the menu stays open).
value string On <x-ui.menubar-radio-group> it is the initially selected value; on each <x-ui.menubar-radio-item> it is that option's value. The matching item is shown as selected.

Slots

Slot Description
default A row of <x-ui.menubar-menu> blocks. The menubar holds shared roving-focus state across all triggers.
menu Each <x-ui.menubar-menu> pairs one <x-ui.menubar-trigger> with its <x-ui.menubar-content> and owns that menu's id.
trigger Content of <x-ui.menubar-trigger> — the top-level label that opens its menu.
content Content of <x-ui.menubar-content> — items, separators, checkbox/radio items, and submenus. Teleported to <body>.

Methods

Available on the component's Alpine scope — call them from markup in the slot (e.g. @click="…").

Method Description
openMenu(id, focusFirst = true) Opens the menu with the given id and, by default, focuses its first item.
toggleMenu(id) Opens the menu with the given id if closed, otherwise closes it.
closeMenu(returnFocus = true) Closes the open menu and, unless returnFocus is false, restores focus to its trigger.
moveTrigger(dir, fromId) Moves between top-level triggers (dir 1 = next, -1 = previous), switching the open menu when one is already open.