wire-elements/spotlight
Wire Elements Spotlight is a Livewire component that brings Spotlight/Alfred-style command palette search to your Laravel app. Open it with CTRL+K or CMD+K to quickly search and run commands, all powered by Livewire.
dependencies() API chains prompts (pick a team → search for a user → execute), with each step able to query against the prior selection. That turns a 4-page wizard into one box. This is the package's most under-appreciated product capability — it's workflow automation, not just navigation.$name, $description, $synonyms), so a newly shipped feature can be surfaced in the palette without adding nav items, hero banners, or dashboard cards. Synonyms let users find features by the words they actually use ("credit card" → Billing Settings), which is a direct input to naming and IA decisions.shouldBeShown() resolves the container (so Request, the authenticated user, gates/policies, and subscription state are all available), meaning one palette can be shipped to all users while commands are filtered per-permission. That supports tiered packaging (free vs. paid command sets) without forking the UI.Adoption risks to price in: the palette is coupled to Livewire (v2/v3) and Tailwind, and the fuzzy matching is client-side, so it suits a curated set of tens-to-hundreds of commands — not global search across large content sets. It's a single-maintainer MIT package (~950 stars), so budget a plan for vendoring or replacing the component shell if maintenance lags.
Adopt when:
shouldBeShown() per command.Look elsewhere when:
cmdk, kbar) rather than bolting Livewire into a non-Livewire app — the coupling cost outweighs the shortcut.For executives (one paragraph): Spotlight is a drop-in command palette for our Laravel/Livewire app — the ⌘K search-and-act bar users already know from Slack, Notion, and Linear. Integration is measured in hours, not sprints: one Blade directive, one config entry, and a short command class per action. It replaces multi-click navigation with a single keystroke and query, gives every future feature a zero-cost discovery surface, and can be permission-filtered so the same palette ships safely to every role and plan. It's MIT-licensed with no vendor contract, so the downside is bounded: if it doesn't earn its place, we remove one directive. We should treat it as a scoped pilot behind a feature flag, instrumented against time-to-task and palette adoption, and decide on expansion after one release cycle.
For engineering: Small, well-documented surface — extend SpotlightCommand, define $name/$description/$synonyms, and optionally execute(), dependencies(), and shouldBeShown(); dependencies resolve from the container, so existing services and policies are reusable. Registration is via config or Spotlight::registerCommand() in a service provider, which means we can gate command sets by environment or plan without touching the component. Costs are explicit: it's Livewire-coupled (a future move to Inertia/React means rewriting the palette shell, not the commands), Tailwind-coupled for styling, and client-side fuzzy search — so we keep the command list curated and route heavy search to our existing backend. Vendor the package or pin the version and add a smoke test around the palette's open/execute path, given the single-maintainer footprint.
Success criteria for the pilot: palette opened by ≥X% of weekly active users, measurable reduction in time-to-complete for 2–3 named tasks, and no increase in permission-related support tickets.
How can I help you explore Laravel packages today?