octopyid/filament-palette
A color palette picker for Filament forms. Add a clean, swatch-based field that lets users choose from predefined colors instead of typing hex codes, making theme, tag, status, and category selection faster and more consistent in your admin panels.
composer require octopyid/filament-palette, then publish the config with php artisan vendor:publish --tag="filament-palette-config" (check the package README for the exact tag; the config file is the first place to look after install).PanelProvider's panel() method, then run php artisan filament:optimize / clear caches if the switcher doesn't appear.config/filament-palette.php immediately. As of v1.1.0 this file contains the new cache_store key (env: FILAMENT_PALETTE_CACHE_STORE), which controls where the selected palette is persisted. Leave it null to inherit the app's default store unless you have a reason not to.FILAMENT_PALETTE_CACHE_STORE (or the config key) per app so palette entries don't collide across environments. Pair this with a prefix-aware store rather than relying on the default.CACHE_STORE=array (a common local default in Laravel 11+ skeletons), v1.1.0 transparently falls back to the file driver in local so palette choices persist while you click around. Don't fight it — but do understand it means your local behaviour differs from production, so sanity-check persistence in a staging environment that uses the real store.php artisan config:cache as part of your deploy and re-run it whenever the env value changes.array in phpunit.xml/pest.php so tests don't bleed palette state between cases; assert on the rendered switcher rather than on cache internals to keep tests resilient to package refactors like the PaletteManager rewrite in 1.1.0.file fallback is local-only. In production with CACHE_STORE=array or null, selections will not persist. If users report "my theme resets on every request", check APP_ENV and the configured store first — this is the single most likely support issue after upgrading.array/null drivers in local dev, a misconfigured production cache store won't reproduce on your machine. Add a staging smoke test that switches a palette and reloads.php artisan cache:clear, a Redis eviction, or a store migration will silently reset everyone's palette. If palette choice is a user-facing preference, mirror it to the users table and treat the cache as a fast path.config:cache staleness. Changing FILAMENT_PALETTE_CACHE_STORE without re-caching config leaves the old store in play. Make config:cache part of the deploy script, and verify with php artisan tinker that the resolved config value matches expectations.PaletteManager was refactored; if you decorated, extended, or type-hinted against its internals, re-check your code. Publish/merge the config file again to pick up the new cache_store key — existing published configs won't have it.composer.lock and .gitattributes exclusions are intentional. Don't expect vendor/octopyid/filament-palette/tests to exist in your install; if you were reading package tests for usage examples, pull the repo separately. Also pin the package version in your own composer.lock as usual — upstream no longer ships one, which is correct but means you're solely responsible for reproducible installs.How can I help you explore Laravel packages today?