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: 844

Dependents: 0

Suggesters: 0

Stars: 10

Open Issues: 0

v1.0.6 2026-04-30 03:57 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

Need something custom?

We build production Filament panels and plugins for teams that want to ship fast without compromising on polish. If you need a custom feature, an extended variant of this package, or a fully bespoke component built for your stack, we can help.

Typical engagements: new Filament plugins, custom resources/widgets/actions, theme + UX work, integrations with your existing services, and one-off tailored forks of our open-source packages.

Credits

License

MIT. See LICENSE.md.