Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Illuminate Menu

Illuminate Menu Laravel Package

kalnoy/illuminate-menu

A fluent menu builder for Laravel: define nested menus in PHP and render them as HTML. Items support attributes, active-state detection, ordering, and custom views, giving you a clean, reusable API for building navigation in views or service providers.

View on GitHub
Deep Wiki
Context7

A TWBS menu builder for Laravel

Frequently asked questions about Illuminate Menu
How do I install kalnoy/illuminate-menu in a Laravel application?
Install it with Composer using the kalnoy/illuminate-menu package name, then register the package service provider and facade in your Laravel application if auto-discovery is not supported by your version. Menus are defined in PHP, typically inside a service provider or a dedicated menu file, and rendered inside Blade templates. Because the package is low-maturity and has zero dependents, run the install in a sandbox branch first to confirm that dependency resolution succeeds against your Laravel and PHP versions.
Which Laravel and PHP versions does kalnoy/illuminate-menu support?
The package targets older Laravel and PHP releases, and its Composer constraints should be verified before you commit to it. The repository has very little ecosystem activity, so you should not assume support for the current Laravel release or modern PHP versions. Check the composer.json constraints against your target stack and run a time-boxed compatibility spike. If the constraints conflict with your framework version, do not force the package in with ignore flags.
Is kalnoy/illuminate-menu actively maintained?
There is little evidence of active maintenance: the package has roughly 24 stars, no dependents, and a low maturity score. That means pull requests and issues may go unanswered and bug fixes should not be expected on any timeline. Treat it as an unmaintained dependency, and if you adopt it, pin the exact version or vendor a fork under an internal namespace. Do not build critical navigation on top of it without a documented exit path.
How do I define a nested menu with kalnoy/illuminate-menu?
Menus are built fluently in PHP: you create a menu instance, add items for each link, and nest child items under a parent to produce dropdown or submenu structures. Items accept attributes, ordering values, and custom views, so you can control rendering output without writing raw HTML in your templates. The resulting menu object is then rendered as HTML inside a Blade view. Keep menu definitions behind a small internal service or interface so the builder can be swapped later.
Does kalnoy/illuminate-menu support Bootstrap 5?
The package is described as a TWBS (Bootstrap) menu builder, and its markup assumptions sit in the Bootstrap 3 and 4 era. Bootstrap 5 changed navbar and dropdown markup, including data attributes and accessibility conventions, so rendered output may be partially or fully incompatible. Inspect the generated HTML against your Bootstrap version before adopting it, and expect to override or fork the renderer if you need Bootstrap 5 semantics.
How does active-state detection work in kalnoy/illuminate-menu?
The builder includes active-state detection, so items can be flagged as active based on the current request and rendered with the appropriate active class. This is handled server-side during request handling, which fits classic Blade-rendered navigation. You should still verify the matching rules against your routing setup, especially for wildcard or resource routes. Active state is not reactive, so it will not update client-side without a full page load.
Are menu labels, URLs, and attributes escaped by default in kalnoy/illuminate-menu?
Escaping behavior is not clearly documented, and the package is old enough that the safe assumption is that some rendered labels, URLs, or attributes may be output without escaping. Treat any dynamic menu content, particularly values coming from a database or user input, as a potential XSS vector until you have reviewed the renderer. If you adopt the package, audit the output path, wrap or patch rendering so labels and attribute values are escaped, and avoid passing raw HTML unless you deliberately intend it.
Can I customize the markup and CSS classes rendered by kalnoy/illuminate-menu?
Items support attributes and custom views, which gives you a way to control classes and per-item rendering without touching package source. However, the extension points beyond that are not well documented, and deep changes to the wrapper markup may require publishing or overriding the package views or forking the package. Because the output is coupled to Bootstrap conventions, swapping in a Tailwind or design-system component library is not a drop-in change. Plan for an internal wrapper that owns all markup customization.
What are the alternatives to kalnoy/illuminate-menu for Laravel navigation?
For an actively maintained menu builder, spatie/laravel-menu is the most commonly cited option and is generally a safer dependency choice. Many teams simply build custom Blade components or a small internal menu class, which avoids third-party lifecycle risk entirely and works with any CSS framework. If you are already using custom Blade components for navigation, kalnoy/illuminate-menu adds little differentiated value. Choose the alternative that matches your design system rather than the one that is closest to this package's API.
Can I use kalnoy/illuminate-menu in an Inertia, Livewire, or API-first application?
No, it is a poor fit for those architectures. The package is a server-side PHP menu builder that renders Bootstrap-compatible HTML during the request, so it does not manage client-side menu state and offers nothing for JSON APIs or component-driven frontends. It also assumes a Bootstrap-based design system, which conflicts with Tailwind or component-library standards. Use it only in a Laravel Blade monolith with Bootstrap and server-rendered navigation.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core