schmeits / filament-pan-analytics-widget
A Filament widget that shows the product analytics collected by panphp/pan
Package info
github.com/schmeits/filament-pan-analytics-widget
pkg:composer/schmeits/filament-pan-analytics-widget
Fund package maintenance!
Requires
- php: ^8.3
- filament/filament: ^4.0|^5.0
- panphp/pan: ^0.1.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.0
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^3.0|^4.0
- pestphp/pest-plugin-arch: ^3.0|^4.0
- pestphp/pest-plugin-laravel: ^3.0|^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
Suggests
- ext-intl: Formats the numbers and percentages in the app locale
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-13 14:18:45 UTC
README
A Filament dashboard widget for panphp/pan, the lightweight and privacy-focused product analytics library. It shows the impressions, hovers and clicks that pan collected, with the share of hovers and clicks per impression.
Compatibility
| Package version | Filament | Laravel | PHP |
|---|---|---|---|
| 5.x | 4.x and 5.x | 12 and 13 | 8.3+ |
| 4.x | 3.x | 11 and 12 | 8.3+ |
Version 4.x is for Filament 3, despite the number. It lives on the 4.x branch and still gets fixes.
Installation
This widget reads the pan_analytics table of pan, so install and migrate pan first:
composer require panphp/pan php artisan install:pan
Then install the widget:
composer require schmeits/filament-pan-analytics-widget
Numbers and percentages are formatted in the app locale with the PHP intl extension. Without intl the widget shows plain numbers.
Optionally, publish the translations (English and Dutch are included):
php artisan vendor:publish --tag="filament-pan-analytics-widget-translations"
Usage
Add the plugin and the widget to your panel:
use Schmeits\FilamentPanAnalyticsWidget\FilamentPanAnalyticsWidgetPlugin; use Schmeits\FilamentPanAnalyticsWidget\Widgets\PanAnalyticsTableWidget; public function panel(Panel $panel): Panel { return $panel // ... ->plugin(FilamentPanAnalyticsWidgetPlugin::make()) ->widgets([ PanAnalyticsTableWidget::class, ]); }
Options
FilamentPanAnalyticsWidgetPlugin::make() // Show a search field for the name column. ->searchable() // Decide who may see the widget. Everyone with access to the panel sees it by default. ->authorize(fn (): bool => auth()->user()?->can('viewAnalytics') ?? false)
Both options also accept a closure, which is evaluated when the widget renders.
Without the plugin on the panel the widget still works: it is visible, without search.
Upgrading from 4.x to 5.x
- Requires Filament 4 or 5 (Laravel 12 or 13). Stay on 4.x for Filament 3.
FilamentPanAnalyticsWidgetPlugin::getSearchable()is nowisSearchable().- The page size options are 5, 10, 25 and 50. The "all" option is gone.
- The unused facade,
FilamentPanAnalyticsWidgetclass, testing mixin, stubs and thefilament-pan-analytics-widget::view namespace are removed. - The
headers.idtranslation key is removed. New keys:not_availableandempty.heading/empty.description. Re-publish the translations if you published them before.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Tally Schmeits
- Punyapal Shah for his contribution to Pinkary where I got some inspiration for a refactor
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
