jeffersongoncalves/filament-panel-theme-isolation

Isolates dark/light theme preference per Filament panel using prefixed localStorage keys

Maintainers

Package info

github.com/jeffersongoncalves/filament-panel-theme-isolation

Language:Blade

pkg:composer/jeffersongoncalves/filament-panel-theme-isolation

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 2

Open Issues: 0

v3.0.0 2026-03-29 17:47 UTC

This package is auto-updated.

Last update: 2026-04-02 13:34:34 UTC


README

Filament Panel Theme Isolation

Filament Panel Theme Isolation

Latest Version on Packagist Total Downloads License

Isolates dark/light theme preference per Filament panel using prefixed localStorage keys.

When a Filament application has multiple panels (e.g., admin, app, tenant), they all share the same theme key in localStorage. Switching dark/light mode in one panel affects all others. This plugin fixes that by using panel-specific keys like theme-admin, theme-app, etc.

Based on filamentphp/filament#19417.

Compatibility

Plugin Version Filament PHP Laravel
1.x ^3.0 ^8.1 ^10.0
2.x ^4.0 ^8.2 ^11.0
3.x ^5.0 ^8.2 ^11.28

Installation

You can install the package via composer:

composer require jeffersongoncalves/filament-panel-theme-isolation:"^3.0"

That's it! The plugin works automatically via Laravel auto-discovery. No additional configuration is needed.

Optional: Register as a Filament Plugin

If you prefer explicit registration via the plugin API:

use JeffersonGoncalves\FilamentPanelThemeIsolation\FilamentPanelThemeIsolationPlugin;

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

How It Works

  1. Each panel saves its theme preference to a unique localStorage key: theme-{panelId} (e.g., theme-admin, theme-app).
  2. On first load after installing, the existing generic theme key is automatically migrated to the panel-specific key.
  3. If the panel-specific key doesn't exist, it falls back to the generic theme key for backwards compatibility.
  4. No database or session changes required — everything is localStorage.

Publishing

Config

php artisan vendor:publish --tag=filament-panel-theme-isolation-config

Views

php artisan vendor:publish --tag=filament-panel-theme-isolation-views

Maintenance Notes

The overridden views are copies of Filament's original views with minimal patches.

After updating Filament, compare the original views with the overrides:

diff vendor/filament/filament/packages/panels/resources/views/components/layout/base.blade.php \
     vendor/jeffersongoncalves/filament-panel-theme-isolation/resources/views/components/layout/base.blade.php

License

MIT License. See LICENSE for details.