devletes/filament-pinnable-navigation

Pinnable navigation support for Filament 5 panels.

Maintainers

Package info

github.com/devletes/filament-pinnable-navigation

pkg:composer/devletes/filament-pinnable-navigation

Statistics

Installs: 149

Dependents: 0

Suggesters: 0

Stars: 3

Open Issues: 0

v1.0.3 2026-03-21 02:08 UTC

This package is auto-updated.

Last update: 2026-03-25 21:52:04 UTC


README

Latest Version on Packagist Total Downloads License GitHub Stars

Allow users to dynamically pin sidebar navigation items to a pinned group.

Requirements

  • PHP ^8.2
  • Filament ^5.0

Installation

composer require devletes/filament-pinnable-navigation

Register the plugin on any panel:

use Devletes\FilamentPinnableNavigation\PinnableNavigationPlugin;
use Filament\Panel;

public function panel(Panel $panel): Panel
{
    return $panel
        ->default()
        ->id('admin')
        ->path('admin')
        ->plugin(PinnableNavigationPlugin::make());
}

Configuration

Publish the config file if you want to customize behavior:

php artisan vendor:publish --tag="pinnable-navigation-config"

Default configuration:

return [
    'database_enabled' => false,
    'table_name' => 'pinned_navigation_items',
    'group_title' => 'Pinned',
    'group_icon' => 'heroicon-o-star',
    'pin_icon' => 'heroicon-o-star',
    'unpin_icon' => 'heroicon-s-star',
    'show_in_resource' => true,
    'accordion_mode' => true,
];

Configuration options:

  • database_enabled: Persist pins in the database instead of browser localStorage.
  • table_name: Database table used when database persistence is enabled.
  • group_title: Label used for the synthetic pinned group.
  • group_icon: Optional icon shown for the pinned group.
  • pin_icon: Icon used when an item is not pinned.
  • unpin_icon: Icon used when an item is already pinned.
  • show_in_resource: Show the page-header pin toggle on Filament resource index pages.
  • accordion_mode: Keep only one managed navigation group open at a time. Disable it to fall back to Filament's default grouped navigation behavior.

Persistence

By default, pin state is stored in browser localStorage per panel and authenticated user. No migration is required in this mode.

If you want to persist pins in the database instead:

  1. Publish the config file.
  2. Publish the package migrations.
  3. Set database_enabled to true.
  4. Run migrations.
php artisan vendor:publish --tag="pinnable-navigation-migrations"
php artisan migrate

Usage

  • Grouped navigation items can be pinned from the sidebar.
  • When show_in_resource is enabled, the current resource page can also be pinned or unpinned from the page header.
  • Pinned items are shown in a dedicated group at the top of the sidebar.

Screenshots

Pin navigation items from the sidebar

Sidebar item available to pin

Dedicated pinned group

Pinned group with one item

Multiple pinned items

Pinned group with multiple items

Credits

License

MIT. See LICENSE.md.