Filament Announce
#Filament Announce
The easiest way to shout announcements in filament!

#Installation
You can install the package via composer:
composer require rupadana/filament-announce
# Laravel 11 and higher php artisan make:notifications-table # Laravel 10 php artisan notifications:table
Run migration
php artisan migrate
Optionally, you can publish the views using
php artisan vendor:publish --tag="filament-announce-views"
publish config
php artisan vendor:publish --tag="filament-announce-config"
return [ 'navigation' => [ 'group' => '', 'sort' => 1 ], 'can_access' => [ 'role' => ['super_admin'] ] ];
#Usage
You must enable Announce by adding FilamentAnnouncePlugin class to your Filament Panel's plugin() or plugins([]) method:
use Rupadana\FilamentAnnounce\FilamentAnnouncePlugin; use Filament\Support\Colors\Color; class CustomersPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel ... ->plugin( FilamentAnnouncePlugin::make() ->pollingInterval('30s') // optional, by default it is set to null ->defaultColor(Color::Blue) // optional, by default it is set to "primary" ) } }
To override the plugins announcementResource with your own custom resource, you should append usingResource method when registering the plugin:
use Rupadana\FilamentAnnounce\FilamentAnnouncePlugin; use Filament\Support\Colors\Color; class CustomersPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel ... ->plugin( FilamentAnnouncePlugin::make() ->usingResource(MyCustomAnnouncementResource::class) ->pollingInterval('30s') // optional, by default it is set to null ->defaultColor(Color::Blue) // optional, by default it is set to "primary" ) } }
Now you can announce whatever to users:
use App\Models\User; use Rupadana\FilamentAnnounce\Announce; Announce::make() ->title('Big News!') ->icon('heroicon-o-megaphone') ->body('Filament can now show very important message to specific users!') ->disableCloseButton() // Optional, if you want ur announcement discloseable ->announceTo(User::all());
#Title and Body Alignment
By default, the alignments will be start and you might want to adjust them:
use App\Models\User; use Filament\Support\Enums\Alignment; use Rupadana\FilamentAnnounce\Announce; Announce::make() ->title('Big News!') ->icon('heroicon-o-megaphone') ->body('Filament can now show very important message to specific users!') ->alignment(Alignment::Center) // this will set both title and body alignments (common alignment) ->titleAlignment(Alignment::Start) // this will set title alignment and take precedence over common alignment methods ->bodyAlignment(Alignment::Start) // this will set body alignment and take precedence over common alignment methods ->actions([ Action::make('view') ->button(), Action::make('undo') ->color('gray'), ]) ->announceTo(User::all());
You can also use alignStart(), alignCenter(), alignEnd(), alignJustify(), alignBetween(), alignLeft() and alignRight() for your convenience.
#Add Actions to Announce

Since Announce extends Filament Notification, you can add Filament Notification Actions to your announcements:
use App\Models\User; use Rupadana\FilamentAnnounce\Announce; Announce::make() ->title('Big News!') ->icon('heroicon-o-megaphone') ->body('Filament can now show very important message to specific users!') ->actions([ Action::make('view') ->button(), Action::make('undo') ->color('gray'), ]) ->announceTo(User::all());
Read more about Notification Action.
#Announcement Resource
#Todo
- Can add actions to every announcement
- Provide a resource/action to send announcement
- Add banner-like implementations for global announcement
- Set end date or time so it will disapear automaticly
#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
#License
The MIT License (MIT). Please see License File for more information.