LaravelPackages.net
Acme Inc.
Toggle sidebar
aaix/filament-chat-bubbles

Android-style Chat Heads for Filament panels with real-time messaging, file sharing, and presence tracking

48
4
v1.0.6
About aaix/filament-chat-bubbles

aaix/filament-chat-bubbles is a Laravel package for android-style chat heads for filament panels with real-time messaging, file sharing, and presence tracking. It currently has 4 GitHub stars and 48 downloads on Packagist (latest version v1.0.6). Install it with composer require aaix/filament-chat-bubbles. Discover more Laravel packages by aaix or browse all Laravel packages to compare alternatives.

Last updated

Filament Chat Bubbles

Chat Heads for Filament panels with real-time messaging, file sharing, and presence tracking.

Latest Version on Packagist Total Downloads License


Filament Chat Bubbles brings a complete real-time messaging experience to your Filament panel. Floating chat heads, a slide-over modal, and a dedicated full-page view β€” all powered by Laravel Echo with zero npm dependencies in the host project.

Screenshots

Messages Page
Full-page messages view with sidebar, search, and cross-pattern background

Floating Chat Bubbles Slide-Over Chat
Floating chat bubbles  Β·  Slide-over modal

Key Features

  • πŸ’¬ Floating Bubbles: Draggable, dockable chat heads with edge snapping and drag-drop sorting.
  • πŸ“± Slide-Over Modal: Conversation list, chat detail, group management, and settings in one panel.
  • πŸ–₯️ Full-Page Messages: Dedicated Filament page with sidebar, search panel, and cross-pattern background.
  • ⚑ Real-Time: Typing indicators, presence channels, and instant message delivery via Echo/Reverb.
  • πŸ“Ž File Attachments: Images, documents, and videos with AVIF thumbnails, grid layout, and lightbox gallery.
  • πŸ”— Link Previews: Automatic OG meta fetching with inline preview cards.
  • πŸ˜€ Emoji Picker: Full categorized picker loaded via CDN. Large emoji rendering for emoji-only messages.
  • 🟒 Online Status: Presence dots, idle detection, heartbeat, and "last seen" timestamps.
  • πŸ” Search: Conversation-scoped and global message search with highlighted results.
  • ✏️ Rich Messaging: Reply-to, edit, delete, emoji reactions, inline markdown, and code blocks.
  • πŸ‘₯ Groups: Create, rename, and manage group conversations with member count and online indicators.
  • ⌨️ Keyboard Shortcuts: Ctrl+E code, Ctrl+B bold, Ctrl+I italic, Arrow-Up edit last, Escape cancel.

Requirements

  • PHP 8.2+
  • Laravel 12+
  • Filament 5+
  • Laravel Echo + Reverb (or Pusher/Ably)
  • Intervention Image 3+

Installation

You can install the package via Composer:

composer require aaix/filament-chat-bubbles

Run migrations and publish assets:

php artisan migrate
php artisan filament:assets

Add the package views to your panel's theme CSS so Tailwind picks up all utility classes:

/* resources/css/filament/admin/theme.css */
@source '../../../../vendor/aaix/filament-chat-bubbles/resources/views/**/*';

Then rebuild your theme:

npm run build

Optionally publish the configuration:

php artisan vendor:publish --tag=filament-chat-bubbles-config

Optionally publish the notification sound:

php artisan vendor:publish --tag=filament-chat-bubbles-assets

Quick Setup

  1. Register the plugin in your Filament panel provider:

    use Aaix\FilamentChatBubbles\ChatBubblesPlugin;
    
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->plugins([
                ChatBubblesPlugin::make(),
            ]);
    }
    
  2. Ensure broadcasting is configured:

    php artisan install:broadcasting
    
  3. Create the storage symlink (for file attachments):

    php artisan storage:link
    

That's it. Chat bubbles will appear in the bottom-right corner of your panel, and the slide-over is accessible from the topbar.

Configuration

The configuration file (config/filament-chat-bubbles.php) allows you to customize:

| Option | Default | Description | |--------|---------|-------------| | user_model | App\Models\User | Your User model class | | user_name_attribute | name | Attribute used for display name | | user_avatar_attribute | profile_picture_url | Attribute used for avatar URL | | table_prefix | fcb_ | Database table prefix | | bubble_size | 48 | Bubble diameter in pixels | | max_message_length | 5000 | Maximum message body length | | attachments.disk | public | Storage disk for file uploads | | attachments.max_size | 50 MB | Maximum upload file size | | attachments.max_per_message | 20 | Maximum attachments per message | | link_previews.enabled | true | Enable link preview fetching | | presence.enabled | true | Enable online/idle tracking | | presence.idle_after | 300 | Seconds before user is marked idle |

Testing

composer install
php artisan test --filter=ChatBubbles

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

The MIT License (MIT). Please see License File for more information.

Comments