mrshanebarron/dropdown
A Laravel/PHP package for adding reusable dropdown and select-menu functionality to your application, helping simplify defining, rendering, and managing dropdown options with a clean, framework-friendly API.
Architecture fit
mergeConfigFrom + vendor:publish, sb- vendor prefix, no runtime services, no migrations, no route registration assumptions. It slots into an existing Laravel app as a leaf dependency rather than a subsystem — low architectural gravity, which is the main reason to consider it.<ul>/<li>/<a> markup with nesting, labels, and dividers. It is presentation-only and stateless. That is a good boundary for a UI component package and keeps it out of the request/domain path.Integration feasibility
Technical risk
illuminate/support constraint is loose (e.g. ^10|^11) it may install on versions it was never tested against; if tight, it may block our next framework upgrade. Either direction matters for a component we would carry across multiple apps.components/dropdown.blade.php plus a MenuItem value object is perhaps 150–250 lines. The build cost is low enough that the buy decision has to be justified by more than feature fit — it must be justified by maintenance avoided.Key questions
sb prefix, and what is the actual vendor namespace vs. the mrshanebarron packagist name?composer.json declare, and is the constraint tested in CI?e()) and filtering attribute names?@can, or a closure filter — and is it evaluated at render time or at definition time?Stack fit
vendor:publish tags. No framework coupling beyond the service provider and config merge.Migration path
<ul> markup, this is a low-risk, reversible refactor.config/ for the old-prefixed filename, rename or remove and republish, then config:clear and rebuild config:cache in the deploy pipeline. The stale-file case is the only migration footgun.app/View/Components behind the same wrapper API. Document that fork point now, before adoption, so the "what if it dies" conversation is answered in advance rather than during an incident.Compatibility
^1.0.1, not 1.0.1, to absorb config-layer patches without a republish ceremony; but pin the major and gate upgrades on our Laravel version, since the package's constraint may not track framework releases.illuminate/support constraint against our exact Laravel line before committing; if it is permissive, treat CI installs on our next framework upgrade as the real compatibility test.Sequencing
composer.json — validate the one-line note, the constraint range, the license, and the escaping behavior in the attribute/label rendering path.MenuItem DTO so call sites never touch the package API directly.Maintenance
Support
Scaling
Failure modes
mergeConfigFrom keyed to the new filename.Ramp-up
MenuItem API, one line in the deploy checklist for config cache rebuild, and an explicit note that interactive dropdown behavior is intentionally out of scope.How can I help you explore Laravel packages today?