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
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- 3.x-dev
- v3.0.0
- 2.x-dev
- v2.0.0
- 1.x-dev
- 1.0.0
- dev-chore/github-sponsors-branches-1x-fix
- dev-chore/github-sponsors-branches
- dev-chore/github-sponsors
- dev-docs/standardize-readme-structure-2x
- dev-docs/standardize-readme-structure-1x
- dev-docs/standardize-readme-structure
- dev-chore/buymeacoffee-badge-2.x
- dev-chore/buymeacoffee-badge-1.x
- dev-chore/buymeacoffee-funding
This package is auto-updated.
Last update: 2026-09-06 00:12:09 UTC
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
Changelog
Please see CHANGELOG for more information on what has changed recently.
Security Vulnerabilities
Please see SECURITY for details.
Credits
License
MIT License. See LICENSE for details.
