PHPackages                             benriadh1/filament-notification-bell - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. benriadh1/filament-notification-bell

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

benriadh1/filament-notification-bell
====================================

A real-time notification bell for Filament v5 powered by Laravel Reverb and Livewire v4.

v1.0.0(3mo ago)0395↑162%[1 issues](https://github.com/benriadh1/filament-notification-bell/issues)MITPHPPHP ^8.2

Since Mar 24Pushed 3mo agoCompare

[ Source](https://github.com/benriadh1/filament-notification-bell)[ Packagist](https://packagist.org/packages/benriadh1/filament-notification-bell)[ RSS](/packages/benriadh1-filament-notification-bell/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

Filament Notification Bell
==========================

[](#filament-notification-bell)

[![Latest Version on Packagist](https://camo.githubusercontent.com/9df5e77a44def5075ecde7d283e98e14229a619fe70188351da8745cb5f6037b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f62656e7269616468312f66696c616d656e742d6e6f74696669636174696f6e2d62656c6c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/benriadh1/filament-notification-bell)[![Total Downloads](https://camo.githubusercontent.com/83b7e1e7e34642ed4d86c7dc03dbc27b72af0abc6742b3a813d603b1f44ac0cb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f62656e7269616468312f66696c616d656e742d6e6f74696669636174696f6e2d62656c6c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/benriadh1/filament-notification-bell)[![License](https://camo.githubusercontent.com/570debe9f6b039e4eedd90269e9563245ea4cbf7e56c981d0801766ba049c174/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f62656e7269616468312f66696c616d656e742d6e6f74696669636174696f6e2d62656c6c2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

A real-time notification bell for **Filament v5** powered by **Laravel Reverb** (or Pusher) and **Livewire v4**. Displays a live badge count and a toggleable panel (dropdown or slide-over) in the Filament topbar, with full RTL support, i18n, dark mode, and a polling fallback.

---

Features
--------

[](#features)

- 🔔 Real-time bell icon in the Filament top bar
- ⚡ Powered by Laravel Reverb WebSockets (or Pusher as fallback)
- 🌙 Full **dark mode** support — auto-follows Filament panel theme, or force light/dark
- 🌐 Ships with **6 translations**: English, Arabic, French, Spanish, German, Chinese Simplified
- 🔤 **RTL layout** auto-detected for Arabic, Farsi, Urdu
- 📥 Dropdown and slide-over panel modes
- ✅ Mark single or all notifications as read
- ♾️ Paginated "Load more" list
- 📡 Optional polling fallback
- 🧪 Full Pest test suite included
- 📦 Publishable config, views, CSS, language files, and migrations

---

Requirements
------------

[](#requirements)

RequirementVersionPHP^8.2Laravel^11.0Filament^5.0Livewire^4.0---

Installation
------------

[](#installation)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require benriadh1/filament-notification-bell
```

### 2. Publish and run the migration

[](#2-publish-and-run-the-migration)

```
php artisan vendor:publish --tag="filament-notification-bell-migrations"
php artisan migrate
```

### 3. Publish the CSS asset

[](#3-publish-the-css-asset)

```
php artisan vendor:publish --tag="filament-notification-bell-assets"
```

### 4. Register the plugin in your Filament panel

[](#4-register-the-plugin-in-your-filament-panel)

In your Panel provider (e.g. `app/Providers/Filament/AdminPanelProvider.php`):

```
use Benriadh1\FilamentNotificationBell\FilamentNotificationBellPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ... your other panel config
        ->plugin(FilamentNotificationBellPlugin::make());
}
```

That's it! The bell will appear in the top bar automatically.

---

Sending Notifications
---------------------

[](#sending-notifications)

Use Laravel's built-in notification system. The plugin reads from the `notifications` table automatically.

```
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\DatabaseMessage;

class OrderShipped extends Notification
{
    public function via($notifiable): array
    {
        return ['database'];
    }

    public function toDatabase($notifiable): array
    {
        return [
            'title' => 'Order Shipped',
            'body'  => 'Your order #1234 has been shipped.',
            'url'   => route('orders.show', 1234),
            'type'  => 'success', // 'info' | 'success' | 'warning' | 'error'
        ];
    }
}
```

Then send it:

```
$user->notify(new OrderShipped());
```

### Real-time broadcast (optional)

[](#real-time-broadcast-optional)

If you want the bell to update in real time without page reload, add the `HasNotificationBell` trait to your `User` model and call `notifyBell()` after sending a notification:

```
use Benriadh1\FilamentNotificationBell\Concerns\HasNotificationBell;

class User extends Authenticatable
{
    use HasNotificationBell;
}
```

```
$user->notify(new OrderShipped());
$user->notifyBell(); // broadcasts the NotificationSent event via Reverb
```

---

Configuration Reference
-----------------------

[](#configuration-reference)

Publish the config:

```
php artisan vendor:publish --tag="filament-notification-bell-config"
```

KeyDefaultDescription`limit``20`Max notifications per page in the bell panel`reverb``true``true` = Reverb, `false` = Pusher`channel_type``'private'``'private'` or `'presence'``polling``false`Enable polling fallback when WebSocket is unavailable`poll_interval``30`Polling interval in seconds`model``null`Custom notification model (`null` = Laravel default)`date_format``'diffForHumans'``'diffForHumans'` (relative) or `'datetime'` (absolute)`locale``null`Force locale (`null` = use `app()->getLocale()`)`rtl_locales``['ar','fa','he','ur']`Locales that trigger RTL layout`force_rtl``false`Force RTL regardless of locale`theme``'auto'``'auto'` / `'light'` / `'dark'`---

Fluent Plugin API
-----------------

[](#fluent-plugin-api)

All options can be set fluently when registering the plugin:

```
FilamentNotificationBellPlugin::make()
    ->limit(30)
    ->slideOver()              // or ->dropdown() (default)
    ->withPolling(60)          // enable polling every 60 seconds
    ->locale('fr')             // force French locale
    ->rtl()                    // force RTL layout
    ->lightMode()              // or ->darkMode() or ->autoTheme() (default)
    ->usePusher()              // or ->useReverb() (default)
```

---

Customizing Views
-----------------

[](#customizing-views)

Publish the views to override them in your application:

```
php artisan vendor:publish --tag="filament-notification-bell-views"
```

Views will be copied to `resources/views/vendor/filament-notification-bell/`.

---

Light &amp; Dark Mode
---------------------

[](#light--dark-mode)

By default (`auto`), the bell follows your Filament panel's dark mode setting — no extra configuration needed if your panel already uses `->darkMode()`.

**Force light mode:**

```
FilamentNotificationBellPlugin::make()->lightMode()
```

**Force dark mode:**

```
FilamentNotificationBellPlugin::make()->darkMode()
```

**Auto (default) — respects Filament panel setting:**

```
FilamentNotificationBellPlugin::make()->autoTheme()
```

---

Multi-language / i18n
---------------------

[](#multi-language--i18n)

### Bundled locales

[](#bundled-locales)

LocaleLanguage🇬🇧 `en`English🇸🇦 `ar`Arabic (RTL)🇫🇷 `fr`French🇪🇸 `es`Spanish🇩🇪 `de`German🇨🇳 `zh_CN`Chinese Simplified### Publish lang files

[](#publish-lang-files)

```
php artisan vendor:publish --tag="filament-notification-bell-lang"
```

### Override a translation key

[](#override-a-translation-key)

After publishing, edit the file at `lang/vendor/filament-notification-bell/en/notification-bell.php`:

```
return [
    'title' => 'My Custom Title',
    // ...
];
```

### Add a new language

[](#add-a-new-language)

Create the file at:

```
resources/lang/vendor/filament-notification-bell/{locale}/notification-bell.php

```

For example, for French (`fr`):

```
// resources/lang/vendor/filament-notification-bell/it/notification-bell.php
return [
    'title'            => 'Notification',
    'mark_all_read'    => '',
    // ... all keys
];
```

### Force a specific locale

[](#force-a-specific-locale)

```
FilamentNotificationBellPlugin::make()->locale('fr')
```

### RTL support

[](#rtl-support)

RTL layout is automatically enabled for `ar`, `fa`, `he`, and `ur`. The `dir="rtl"` attribute and text-alignment classes are applied automatically. To add another locale or force RTL:

```
// In config/filament-notification-bell.php
'rtl_locales' => ['ar', 'fa', 'he', 'ur', 'ug'],

// Or via fluent plugin API
FilamentNotificationBellPlugin::make()->rtl()
```

---

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for recent changes.

---

Contributing
------------

[](#contributing)

Contributions are welcome! Please open a pull request or issue on GitHub.

**New translations are especially welcome** — add a new language file and open a PR!

1. Fork the repository
2. Create your feature branch: `git checkout -b feat/my-feature`
3. Commit your changes: `git commit -m "feat: add my feature"`
4. Push: `git push origin feat/my-feature`
5. Open a Pull Request

---

License
-------

[](#license)

The MIT License (MIT). See [LICENSE.md](LICENSE.md) for more details.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance82

Actively maintained with recent releases

Popularity18

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

94d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b24d4ebd360144a735ed0e348ad41cdc33d8c1f6371f6cd19514e6b81975d8a8?d=identicon)[benriadh1](/maintainers/benriadh1)

---

Top Contributors

[![benriadh1](https://avatars.githubusercontent.com/u/25374914?v=4)](https://github.com/benriadh1 "benriadh1 (3 commits)")

---

Tags

pluginlaravelnotificationlivewirerealtimefilamentreverbbell

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/benriadh1-filament-notification-bell/health.svg)

```
[![Health](https://phpackages.com/badges/benriadh1-filament-notification-bell/health.svg)](https://phpackages.com/packages/benriadh1-filament-notification-bell)
```

###  Alternatives

[ercogx/laravel-filament-starter-kit

This is a Filament v5 Starter Kit for Laravel 13, designed to accelerate the development of Filament-powered applications.

461.7k](/packages/ercogx-laravel-filament-starter-kit)[raugadh/fila-starter

Laravel Filament Starter.

625.1k](/packages/raugadh-fila-starter)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.2k](/packages/tomshaw-electricgrid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
