Search by

microweber-packages / microweber-filament-registry

boksiora

Standalone Filament panel registry for dynamically registering resources, pages, widgets, plugins and clusters. Reusable across any Laravel app with Filament panels.

Package info

github.com/microweber-packages/microweber-filament-registry

Homepage

pkg:composer/microweber-packages/microweber-filament-registry

Statistics

Installs: 121

Dependents: 8

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-03 11:40 UTC

This package is auto-updated.

Last update: 2026-11-03 17:06:38 UTC


README

A standalone Laravel package for dynamically registering Filament panel components (resources, pages, widgets, plugins, clusters). Reusable across any Laravel application with Filament panels.

Installation

composer require microweber-packages/microweber-filament-registry

The service provider auto-registers via Laravel's package discovery.

Usage

Register Components

use MicroweberPackages\FilamentRegistry\Facades\FilamentRegistry;

// In a service provider's register() method:
FilamentRegistry::registerResource(UserResource::class, MyPanelProvider::class);
FilamentRegistry::registerPage(SettingsPage::class, MyPanelProvider::class);
FilamentRegistry::registerWidget(StatsWidget::class, MyPanelProvider::class);
FilamentRegistry::registerPlugin(MyPlugin::class, MyPanelProvider::class);
FilamentRegistry::registerCluster(MyCluster::class, MyPanelProvider::class);

Retrieve Components in a Panel Provider

use MicroweberPackages\FilamentRegistry\Facades\FilamentRegistry;

class MyPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->resources(FilamentRegistry::getResources(self::class))
            ->pages(FilamentRegistry::getPages(self::class))
            ->widgets(FilamentRegistry::getWidgets(self::class))
            // ...
    }
}

Multiple Panels

Components are scoped by panel provider class and panel ID:

FilamentRegistry::registerResource(AdminResource::class, AdminPanel::class, 'admin');
FilamentRegistry::registerResource(FrontendResource::class, FrontendPanel::class, 'frontend');

Default Scope

Set a default scope so you don't have to pass it every time:

FilamentRegistry::setDefaultScope(MyPanelProvider::class);
FilamentRegistry::registerResource(UserResource::class); // uses MyPanelProvider scope

Testing

composer test

License

MIT