mrshanebarron/command-palette

Keyboard-driven command menu for Laravel. Supports Livewire and Blade.

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:Blade

pkg:composer/mrshanebarron/command-palette

dev-main 2025-12-14 04:33 UTC

This package is auto-updated.

Last update: 2025-12-14 04:34:02 UTC


README

Keyboard-driven command menu (Cmd+K). Built for Laravel with support for Livewire, Blade, and Alpine.js.

Latest Version on Packagist Total Downloads

Installation

composer require mrshanebarron/command-palette

The service provider will be auto-discovered. If you need to register it manually:

// config/app.php
'providers' => [
    // ...
    MrShaneBarron\CommandPalette\CommandPaletteServiceProvider::class,
];

Usage

Livewire Component

<livewire:ld-command-palette />

Blade Component

<x-ld-command-palette />

With Props

<x-ld-command-palette
    :commands="[]"
    placeholder='Search commands...'
    shortcut='cmd+k'
/>

Props

Prop Type Default Description
commands array [] Array of command objects with 'name', 'action', 'shortcut'
placeholder string 'Search commands...' Search input placeholder
shortcut string 'cmd+k' Keyboard shortcut to open

Configuration

Publish the config file:

php artisan vendor:publish --tag=ld-command-palette-config

This will create a config/ld-command-palette.php file where you can customize default values.

Customization

Publishing Views

Customize the component appearance by publishing the views:

php artisan vendor:publish --tag=ld-command-palette-views

Views will be published to resources/views/vendor/ld-command-palette/.

Styling

The component uses Tailwind CSS classes by default. You can customize styles by:

  1. Publishing views and modifying the Blade templates
  2. Using the class attribute to add custom classes
  3. Overriding default styles in your CSS
<x-ld-command-palette class="custom-class" />

Events

The component dispatches Livewire events you can listen to:

Event Payload Description
command-palette:updated Component data Fired when state changes
command-palette:initialized Initial data Fired on component mount
// In your Livewire component
protected $listeners = ['command-palette:updated' => 'handleUpdate'];

public function handleUpdate($data)
{
    // Handle the update
}

Alpine.js Integration

The component works seamlessly with Alpine.js:

<div x-data="{ ' }} selected: null {{ ' }">
    <x-ld-command-palette x-model="selected" />
    <p x-text="selected"></p>
</div>

Requirements

  • PHP 8.1+
  • Laravel 10.x, 11.x, or 12.x
  • Livewire 3.x
  • Tailwind CSS 3.x (optional, for default styling)

Testing

composer test

Changelog

Please see CHANGELOG for recent changes.

Contributing

Contributions are welcome! Please see CONTRIBUTING for details.

Security

If you discover a security vulnerability, please email shane@sbarron.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.