A fluent, elegant, and zero-config Confetti integration for Filament PHP. Powered by the amazing canvas-confetti library, this package brings cinematic, hardware-accelerated particle effects to your Filament admin panel with a beautiful PHP Builder API.
composer require alexsyvolap/filament-confetti
use AlexSyvolap\FilamentConfetti\FilamentConfettiPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(FilamentConfettiPlugin::make());
}
The package provides a highly fluent, chaining API. You can trigger confetti from anywhere in your Filament app (Pages, Actions, Controllers, Livewire components).
Just fire the default confetti explosion from the center of the screen
use AlexSyvolap\FilamentConfetti\Confetti;
Confetti::shoot();

You can shoot confetti from various screen positions
Confetti::left()->shoot();
Confetti::topRight()->shoot();
Confetti::bottom()->shoot();
Available positions: center(), top(), bottom(), left(), right(), topLeft(), topRight(), bottomLeft(),
bottomRight().
We ported the most popular cinematic effects so you can use them in one line of code:
// Realistic 3D explosion with 5 physical waves
Confetti::realistic()->shoot();

// 15 seconds of falling snow
Confetti::snow()->shoot();

// 15 seconds of random fireworks in the sky
Confetti::fireworks()->shoot();

// Raining Emoji explosion!
Confetti::emoji('💸')->shoot();

// School Pride (fires from both bottom corners)
Confetti::colors(['#0057B7', '#FFDD00'])->schoolPride()->shoot();

You can chain multiple cannons together using the ->then() method:
Confetti::left()->count(150)
->then()
->right()->count(150)
->shoot();

You have 100% control over the physics engine. Customize shapes, gravity, colors, and more:
Confetti::center()
->count(300)
->spread(120)
->shapes(['star', 'circle'])
->colors(['#ff0000', '#00ff00', '#0000ff'])
->startVelocity(100)
->decay(0.8) // High friction (stops quickly in the air)
->gravity(0.5)
->flat(true) // 2D flat paper effect
->shoot();

Want to build your own custom timeline of explosions? Use Confetti::make() to retain the instance inside loops:
$confetti = Confetti::make();
for ($delay = 0; $delay < 3000; $delay += 500) {
$confetti->center()->count(50)->delay($delay)->then();
}
$confetti->shoot();

composer test
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.
How can I help you explore Laravel packages today?