jeffersongoncalves / filament-panel-theme-isolation
Isolates dark/light theme preference per Filament panel using prefixed localStorage keys
Package info
github.com/jeffersongoncalves/filament-panel-theme-isolation
Language:Blade
pkg:composer/jeffersongoncalves/filament-panel-theme-isolation
Requires
- php: ^8.2
- filament/filament: ^5.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.21
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Filament Panel Theme Isolation
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
- Each panel saves its theme preference to a unique localStorage key:
theme-{panelId}(e.g.,theme-admin,theme-app). - On first load after installing, the existing generic
themekey is automatically migrated to the panel-specific key. - If the panel-specific key doesn't exist, it falls back to the generic
themekey for backwards compatibility. - 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.
