helios-live/filament-feature-showcase
Showcase and demo Filament features in a clean, interactive way. Add a feature gallery to your admin panel with examples, previews, and helpful descriptions—ideal for docs, onboarding, and quickly exploring what Filament components can do.
Installation
composer require helios-live/filament-feature-showcase
Publish the package assets and config:
php artisan vendor:publish --provider="HeliosLive\FilamentFeatureShowcase\FeatureShowcaseServiceProvider" --tag="filament-feature-showcase-config"
php artisan vendor:publish --provider="HeliosLive\FilamentFeatureShowcase\FeatureShowcaseServiceProvider" --tag="filament-feature-showcase-assets"
Configuration
Edit config/filament-feature-showcase.php to define:
versions: Array of changelog entries (title, description, date, features).button_position: 'top-right' (default), 'top-left', or 'bottom-right'.modal_width: 'lg' (default), 'xl', or 'full'.First Use Case
Add the plugin to your Filament admin panel in app/Providers/Filament/AdminPanelProvider.php:
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
\HeliosLive\FilamentFeatureShowcase\Plugin::make(),
]);
}
Visit your Filament dashboard—the "What's New" button will appear immediately.
Structuring Releases
Define versions in config/filament-feature-showcase.php as an array:
'versions' => [
[
'title' => 'v2.0.0 - June 2026',
'date' => '2026-06-01',
'features' => [
['title' => 'New Dark Mode', 'description' => 'Toggle dark mode in settings.'],
['title' => 'API Rate Limiting', 'description' => 'Enhanced request handling.'],
],
],
// Older versions...
],
Carbon\Carbon::now()->format('Y-m-d') for dynamic dates.Dynamic Version Loading Fetch versions from a database or API:
// In a service or config loader
$versions = Version::query()->orderBy('released_at', 'desc')->get();
config(['filament-feature-showcase.versions' => $versions->toArray()]);
Conditional Display Hide the button for specific users/roles via middleware or a custom plugin method:
Plugin::make()
->visible(fn () => auth()->user()->hasRole('admin')),
Localization Translate version titles/descriptions using Filament’s localization:
'title' => __('filament-feature-showcase::versions.v2.title'),
Publish language files:
php artisan vendor:publish --tag="filament-feature-showcase-lang"
Custom Styling
Override the modal’s Tailwind classes in resources/css/filament/filament-feature-showcase.css:
.filament-feature-showcase-modal {
--width: 100%;
}
Event-Based Triggers Show the modal programmatically (e.g., after login):
use HeliosLive\FilamentFeatureShowcase\Facades\FeatureShowcase;
FeatureShowcase::showModal();
Version Badges Display a version label in the sidebar via a custom widget:
Widget::make()
->columnSpanFull()
->content(fn () => FeatureShowcase::renderVersionLabel()),
Dark Mode Compatibility Ensure the modal respects Filament’s dark mode:
'dark_mode' => true, // Add to config
Caching Issues
config/filament-feature-showcase.php may not reflect immediately due to Laravel caching.php artisan config:clear
Or use config_cache middleware in app/Http/Kernel.php for development.Asset Loading Conflicts
mix-manifest.json entries.filament-feature-showcase section in resources/js/filament/app.js:
import '@helios-live/filament-feature-showcase/dist/filament-feature-showcase.js';
Version Ordering
date fields are malformed.Carbon for consistent date formatting:
'date' => Carbon::parse('2026-06-01')->format('Y-m-d'),
Plugin Initialization Race
// In AdminPanelProvider
->plugins([
\Filament\Panel::make()->plugins(), // Core plugins first
\HeliosLive\FilamentFeatureShowcase\Plugin::make(),
]),
Log Version Data Dump the loaded versions to debug:
\Log::info('Feature Showcase Versions:', config('filament-feature-showcase.versions'));
Inspect Modal Content Use browser dev tools to check if the modal HTML/JS is injected. Look for:
<div class="filament-feature-showcase-modal" x-data="...">
Disable JavaScript Test the plugin with JS disabled to ensure critical features (like the button) still work.
Custom Modal Content Override the modal template by publishing and modifying:
php artisan vendor:publish --tag="filament-feature-showcase-views"
Edit resources/views/vendor/filament-feature-showcase/modal.blade.php.
API-Driven Versions
Extend the Version model or service to fetch data from an external API:
class VersionService {
public function fetchLatestVersion() {
return Http::get('https://api.example.com/releases/latest')->json();
}
}
Analytics Tracking Track modal interactions (e.g., clicks) via a custom event listener:
FeatureShowcase::onModalShown(function () {
event(new FeatureShowcaseViewed(auth()->id()));
});
Multi-Tenant Support Scope versions per tenant by overriding the config loader:
config(['filament-feature-showcase.versions' => Tenant::current()->versions]);
How can I help you explore Laravel packages today?