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
Copied!
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>
Copied!

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>
Copied!
Menu with XS Size
Copied!
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>
Copied!

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>
Copied!
Menu Items with Icons
Copied!
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
Copied!
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.

Copied!
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 Projects
3</ui:menu-item>
1<ui:menu-item href="/projects" :active="$yourCustomLogic">
2 Projects
3</ui:menu-item>
Copied!

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>
Copied!
Menu Items with Badges
Copied!
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-item
2 href="/messages"
3 badge="5"
4 badge-color="primary"
5 badge-variant="outline"
6 badge-size="sm"
7 badge-radius="full"
8>
9 Messages
10</ui:menu-item>
1<ui:menu-item
2 href="/messages"
3 badge="5"
4 badge-color="primary"
5 badge-variant="outline"
6 badge-size="sm"
7 badge-radius="full"
8>
9 Messages
10</ui:menu-item>
Copied!

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>
Copied!

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>
Copied!
Like this project? Stop by the bear cave to stargaze.