Boson

Dropdown

A dropdown menu for actions and navigation. Wrap a trigger element in dropdown.trigger, place items inside dropdown.menu, and use dropdown.item for each action.


Basic usage

<x-boson::dropdown>
    <x-boson::dropdown.trigger>
        <x-boson::button>Options</x-boson::button>
    </x-boson::dropdown.trigger>
    <x-boson::dropdown.menu>
        <x-boson::dropdown.item icon="pencil">Edit</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="document-duplicate">Duplicate</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="archive-box">Archive</x-boson::dropdown.item>
    </x-boson::dropdown.menu>
</x-boson::dropdown>

With links

<x-boson::dropdown>
    <x-boson::dropdown.trigger>
        <x-boson::button>Navigate</x-boson::button>
    </x-boson::dropdown.trigger>
    <x-boson::dropdown.menu>
        <x-boson::dropdown.item icon="home" href="/home">Home</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="user" href="/profile">Profile</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="cog-6-tooth" href="/settings">Settings</x-boson::dropdown.item>
    </x-boson::dropdown.menu>
</x-boson::dropdown>

With separator

<x-boson::dropdown>
    <x-boson::dropdown.trigger>
        <x-boson::button>Actions</x-boson::button>
    </x-boson::dropdown.trigger>
    <x-boson::dropdown.menu>
        <x-boson::dropdown.item icon="pencil">Edit</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="document-duplicate">Duplicate</x-boson::dropdown.item>
        <x-boson::dropdown.separator />
        <x-boson::dropdown.item icon="trash" variant="danger">Delete</x-boson::dropdown.item>
    </x-boson::dropdown.menu>
</x-boson::dropdown>

With groups

<x-boson::dropdown>
    <x-boson::dropdown.trigger>
        <x-boson::button>Account</x-boson::button>
    </x-boson::dropdown.trigger>
    <x-boson::dropdown.menu>
        <x-boson::dropdown.group heading="My Account">
            <x-boson::dropdown.item icon="user">Profile</x-boson::dropdown.item>
            <x-boson::dropdown.item icon="cog-6-tooth">Settings</x-boson::dropdown.item>
        </x-boson::dropdown.group>
        <x-boson::dropdown.separator />
        <x-boson::dropdown.group heading="Team">
            <x-boson::dropdown.item icon="user-group">Members</x-boson::dropdown.item>
            <x-boson::dropdown.item icon="plus">Invite</x-boson::dropdown.item>
        </x-boson::dropdown.group>
    </x-boson::dropdown.menu>
</x-boson::dropdown>

With trailing icon

<x-boson::dropdown>
    <x-boson::dropdown.trigger>
        <x-boson::button>More</x-boson::button>
    </x-boson::dropdown.trigger>
    <x-boson::dropdown.menu>
        <x-boson::dropdown.item icon="pencil" icon:trailing="command-line">Edit</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="document-duplicate" icon:trailing="command-line">Duplicate</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="arrow-top-right-on-square" icon:trailing="arrow-right">Open in new tab</x-boson::dropdown.item>
    </x-boson::dropdown.menu>
</x-boson::dropdown>

Danger variant

<x-boson::dropdown>
    <x-boson::dropdown.trigger>
        <x-boson::button>Manage</x-boson::button>
    </x-boson::dropdown.trigger>
    <x-boson::dropdown.menu>
        <x-boson::dropdown.item icon="pencil">Edit</x-boson::dropdown.item>
        <x-boson::dropdown.item icon="archive-box">Archive</x-boson::dropdown.item>
        <x-boson::dropdown.separator />
        <x-boson::dropdown.item icon="trash" variant="danger">Delete project</x-boson::dropdown.item>
    </x-boson::dropdown.menu>
</x-boson::dropdown>

Placement

<x-boson::dropdown placement="bottom-start">
    ...
</x-boson::dropdown>

<x-boson::dropdown placement="bottom-end">
    ...
</x-boson::dropdown>

<x-boson::dropdown placement="top-start">
    ...
</x-boson::dropdown>

Props

dropdown

Prop Type Default Description
placement string bottom-start Menu position relative to trigger (bottom-start, bottom-end, top-start, top-end, right-start, left-start)

dropdown.item

Prop Type Default Description
icon string null Leading icon name
icon:trailing string null Trailing icon name
href string null Render the item as a link
variant string null Visual variant (danger)
as string button HTML element to render as

dropdown.group

Prop Type Default Description
heading string null Label displayed above the group