spatie/menu
Fluent, extensible menu builder for Laravel. Compose navigation with a clean API, render as HTML, and customize output via presenters and macros. Supports active state handling, links, submenus, and easy integration with Blade and your app’s routing.
The Menu and Link classes use the HtmlAttributes trait, which enables you to add attributes to their main elements (respectively the ul and a tags).
The trait provides two methods to set attributes: setAttribute and addClass.
Menu::new()
->setAttribute('role', 'navigation')
->addClass('nav');
<ul role="navigation" class="nav"></ul>
The setAttribute and addClass methods are smart enough to merge class names on render. The latter can also accepts both arrays and strings.
Link::to('#', 'Back to top')
->setAttribute('class', 'link')
->addClass(['button', 'top']);
<a href="#" class="link button top">Back to top</a>
If you want to add classes or set attributes to all items in a menu, the Menu class provides some convenience methods: addItemClass, setItemAttribute.
The trait provides two methods to set attributes: setAttribute and id.
Menu::new()
->setAttribute('role', 'navigation')
->id('nav');
<ul role="navigation" id="nav"></ul>
How can I help you explore Laravel packages today?