Menus
The menu component displays a vertical sidebar-esque menu that transforms into a select tag on mobile devices. Currently menus only have support a vertical layout. It's possible that other layouts will be added in the future.
Using Menus
To use a menu, use the <ui:menu> tag with <ui:menu-item> components inside it.
Basic Menu
1<ui:menu>2 <ui:menu-item href="/dashboard" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team">Team</ui:menu-item>4 <ui:menu-item href="/projects">Projects</ui:menu-item>5 <ui:menu-item href="/calendar">Calendar</ui:menu-item>6 <ui:menu-item href="/settings">Settings</ui:menu-item>7</ui:menu>1<ui:menu>2 <ui:menu-item href="/dashboard" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team">Team</ui:menu-item>4 <ui:menu-item href="/projects">Projects</ui:menu-item>5 <ui:menu-item href="/calendar">Calendar</ui:menu-item>6 <ui:menu-item href="/settings">Settings</ui:menu-item>7</ui:menu>
Menu Properties
| Property | Type | Default | Description |
|---|---|---|---|
mobileLabel |
string |
Navigation |
The label shown in the mobile select dropdown. |
size |
Size |
Size::SM |
Controls the maximum width of the menu. |
Mobile Label
The label shown in the mobile select dropdown. This is used for accessibility, labeling, and as a disabled option in the select dropdown.
1<ui:menu mobile-label="Main Navigation">2 <!-- Menu items -->3</ui:menu>1<ui:menu mobile-label="Main Navigation">2 <!-- Menu items -->3</ui:menu>
Size
The size property controls the maximum width of the menu (defaulting to sm size). Supported sizes are xs, sm, md, and lg.
1<ui:menu size="md">2 <!-- Menu items -->3</ui:menu>1<ui:menu size="md">2 <!-- Menu items -->3</ui:menu>
Menu with XS Size
1<ui:menu size="xs">2 <ui:menu-item href="/dashboard" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team">Team</ui:menu-item>4 <ui:menu-item href="/projects">Projects</ui:menu-item>5 <ui:menu-item href="/calendar">Calendar</ui:menu-item>6 <ui:menu-item href="/settings">Settings</ui:menu-item>7</ui:menu>1<ui:menu size="xs">2 <ui:menu-item href="/dashboard" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team">Team</ui:menu-item>4 <ui:menu-item href="/projects">Projects</ui:menu-item>5 <ui:menu-item href="/calendar">Calendar</ui:menu-item>6 <ui:menu-item href="/settings">Settings</ui:menu-item>7</ui:menu>
Menu Items
Menu items are used to display a single menu item in the menu. They can be customized in various ways by using the following properties:
Properties
| Property | Type | Default | Description |
|---|---|---|---|
href |
string |
null |
The URL the menu item links to. Required |
icon |
string |
null |
Include an Icon before the menu item's content. |
iconVariant |
string |
outline |
The icon variant to use. micro, mini, solid, or outline |
active |
boolean |
request()->url() === $href |
Whether the menu item is active. By default, it's active if the current URL matches the href. |
badge |
integer|string |
null |
A badge to display on the menu item. |
showZero |
boolean |
false |
Whether to show the badge when its value is 0. |
badgeColor |
Color |
Color::Secondary |
The color of the badge. |
badgeVariant |
Variant |
Variant::Solid |
The variant of the badge. |
badgeSize |
Size |
Size::XS |
The size of the badge. |
Href
The href property is used to specify the URL that the menu item links to. It is required!
1<ui:menu-item href="/dashboard">Dashboard</ui:menu-item>1<ui:menu-item href="/dashboard">Dashboard</ui:menu-item>
Icons
The icon property is used to include an icon before the menu item's content.
1<ui:menu-item icon="home" href="/dashboard">Dashboard</ui:menu-item>1<ui:menu-item icon="home" href="/dashboard">Dashboard</ui:menu-item>
Menu Items with Icons
1<ui:menu>2 <ui:menu-item href="/dashboard" icon="home" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team" icon="user-circle">Team</ui:menu-item>4 <ui:menu-item href="/projects" icon="document">Projects</ui:menu-item>5 <ui:menu-item href="/calendar" icon="calendar-days">Calendar</ui:menu-item>6 <ui:menu-item href="/settings" icon="cog">Settings</ui:menu-item>7</ui:menu>1<ui:menu>2 <ui:menu-item href="/dashboard" icon="home" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team" icon="user-circle">Team</ui:menu-item>4 <ui:menu-item href="/projects" icon="document">Projects</ui:menu-item>5 <ui:menu-item href="/calendar" icon="calendar-days">Calendar</ui:menu-item>6 <ui:menu-item href="/settings" icon="cog">Settings</ui:menu-item>7</ui:menu>
Icon Variants
You can also specify the icon variant using the icon variant property.
Customizing the Icon Variant
1<ui:menu-item href="/dashboard" icon="home" icon-variant="micro">Dashboard</ui:menu-item>1<ui:menu-item href="/dashboard" icon="home" icon-variant="micro">Dashboard</ui:menu-item>
Active State
The active property indicates the currently active menu item. By default, a menu item is active if the current URL matches its href.
1<ui:menu-item href="/dashboard" active="true">Dashboard</ui:menu-item>1<ui:menu-item href="/dashboard" active="true">Dashboard</ui:menu-item>
You can also use custom logic to determine if a menu item is active:
1<ui:menu-item href="/projects" :active="$yourCustomLogic">2 Projects3</ui:menu-item>1<ui:menu-item href="/projects" :active="$yourCustomLogic">2 Projects3</ui:menu-item>
Badges
The badge property is used to display a badge on the menu item. This is useful for showing counts or status indicators.
1<ui:menu-item href="/messages" badge="5">Messages</ui:menu-item>1<ui:menu-item href="/messages" badge="5">Messages</ui:menu-item>
Menu Items with Badges
1<ui:menu>2 <ui:menu-item href="/dashboard" icon="home" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team" icon="user-circle" badge="3">Team</ui:menu-item>4 <ui:menu-item href="/messages" icon="document-text" badge="5">Messages</ui:menu-item>5 <ui:menu-item href="/notifications" icon="bell-alert" badge="12">Notifications</ui:menu-item>6 <ui:menu-item href="/tasks" icon="check-circle" badge="0" show-zero>Tasks</ui:menu-item>7</ui:menu>1<ui:menu>2 <ui:menu-item href="/dashboard" icon="home" active>Dashboard</ui:menu-item>3 <ui:menu-item href="/team" icon="user-circle" badge="3">Team</ui:menu-item>4 <ui:menu-item href="/messages" icon="document-text" badge="5">Messages</ui:menu-item>5 <ui:menu-item href="/notifications" icon="bell-alert" badge="12">Notifications</ui:menu-item>6 <ui:menu-item href="/tasks" icon="check-circle" badge="0" show-zero>Tasks</ui:menu-item>7</ui:menu>
Badge Customization
You can customize the badge appearance using the badgeColor, badgeVariant, badgeRadius, and badgeSize properties. For more information on the values these properties support, read the Badges documentation page.
1<ui:menu-item2 href="/messages"3 badge="5"4 badge-color="primary"5 badge-variant="outline"6 badge-size="sm"7 badge-radius="full"8>9 Messages10</ui:menu-item>1<ui:menu-item2 href="/messages"3 badge="5"4 badge-color="primary"5 badge-variant="outline"6 badge-size="sm"7 badge-radius="full"8>9 Messages10</ui:menu-item>
Showing Zeroes
By default, badges are hidden when their value is 0. You can show zeroes by setting the showZero property to true.
1<ui:menu-item href="/tasks" badge="0" :show-zero="true">Tasks</ui:menu-item>1<ui:menu-item href="/tasks" badge="0" :show-zero="true">Tasks</ui:menu-item>
Gap
The gap property controls the spacing between menu items. Possible values are none, xs, sm, md, and lg.
1<ui:menu gap="md">2 <!-- Menu items -->3</ui:menu>1<ui:menu gap="md">2 <!-- Menu items -->3</ui:menu>