PHPackages                             ibrahimbougaoua/filawidget - 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. ibrahimbougaoua/filawidget

ActiveLibrary

ibrahimbougaoua/filawidget
==========================

This is my package filawidget

v0.2-beta(1y ago)11413[4 PRs](https://github.com/ibrahimBougaoua/filawidget/pulls)MITPHPPHP ^8.2CI passing

Since Aug 23Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/ibrahimBougaoua/filawidget)[ Packagist](https://packagist.org/packages/ibrahimbougaoua/filawidget)[ Docs](https://github.com/ibrahimbougaoua/filawidget)[ GitHub Sponsors](https://github.com/IbrahimBougaoua)[ RSS](/packages/ibrahimbougaoua-filawidget/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (13)Versions (7)Used By (0)

Customizable solution for managing dynamic content in Laravel projects using FilamentPHP.
=========================================================================================

[](#customizable-solution-for-managing-dynamic-content-in-laravel-projects-using-filamentphp)

[![Latest Version on Packagist](https://camo.githubusercontent.com/acaa749f87a7929d670671583e47eb6c31627032cece449626c7cc12a5775d8e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6962726168696d626f7567616f75612f66696c617769646765742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ibrahimbougaoua/filawidget)[![GitHub Tests Action Status](https://camo.githubusercontent.com/c6bb5558dcd15eb298c1f5d246b0456c60db2944d5d02877b02edcb3e47c6c19/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6962726168696d626f7567616f75612f66696c617769646765742f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/ibrahimbougaoua/filawidget/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/42214cd9919940d8177a3bb7da839efc92866efa1b7f9c1253a89a0eb08a7077/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6962726168696d626f7567616f75612f66696c617769646765742f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/ibrahimbougaoua/filawidget/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/5f4e98fd03cbb5d70d942263f68015e2e45ab19b563e5eb105b8fb37f6ff8931/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6962726168696d626f7567616f75612f66696c617769646765742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ibrahimbougaoua/filawidget)

**Filawidget** is a dynamic content and widget management package for **FilamentPHP**, providing an easy-to-use drag-and-drop interface to manage widgets, widget areas, and hierarchical pages. The package is designed to enhance the customization of page layouts and widgets in Laravel projects.

Support us
----------

[](#support-us)

[!["Buy Me A Coffee"](https://camo.githubusercontent.com/9f44ce2dc3b3eecdd02598900866ffc518801df1932849703dae1e5ce5031070/68747470733a2f2f7777772e6275796d6561636f666665652e636f6d2f6173736574732f696d672f637573746f6d5f696d616765732f6f72616e67655f696d672e706e67)](https://buymeacoffee.com/ibrahimbougaoua)

Key Features
------------

[](#key-features)

### Widget Management

[](#widget-management)

- **Create and Customize Widgets**: Users can create widgets with custom fields, types, and configurations. Each widget can have a set of configurable fields and is tied to a specific widget area.
- **Drag-and-Drop Interface**: An easy-to-use drag-and-drop interface allows users to organize widgets within areas dynamically, rearranging widget order effortlessly.
- **Active/Inactive Widgets**: Manage the status of widgets, setting them as active or inactive based on visibility requirements.

### Widget Areas

[](#widget-areas)

- **Multiple Widget Areas**: Define different widget areas (e.g., sidebars, footers) to which widgets can be assigned.
- **Drag-and-Drop Layout Customization**: Users can rearrange the order of both widget areas and the widgets within them using drag-and-drop functionality, ensuring customizable page layouts.
- **Active/Inactive Widget Areas**: Control the visibility of widget areas, marking them as active or inactive depending on layout preferences.

### Page and Subpage Management

[](#page-and-subpage-management)

- **Hierarchical Pages**: Manage pages and subpages in a hierarchical structure with parent-child relationships. Pages can be organized into different levels of hierarchy, facilitating complex website structures.
- **Page Status**: Set pages as active or inactive based on publishing needs, allowing for controlled visibility across the website.
- **Drag-and-Drop Page Reordering**: Reorder pages and subpages easily through a drag-and-drop interface, ensuring flexibility in page hierarchy and content organization.

### Dynamic Field Configuration

[](#dynamic-field-configuration)

- **Custom Fields for Widgets**: Add custom fields to widgets, such as text, images, or other input types, through a dynamic and configurable system.
- **JSON-Based Field Options**: Provide flexible options for fields, enabling validation rules, default values, and other configurations in JSON format.

### Widget Types

[](#widget-types)

- **Custom Widget Types**: Create different types of widgets with specific functionalities, allowing for a wide range of content management options.
- **Field Association with Widget Types**: Assign different sets of fields to widget types, ensuring each widget type has the necessary input fields for customization.

### Order Management

[](#order-management)

- **Customizable Widget and Page Orders**: Users can update the order of widgets, pages, and widget areas. Each item can be repositioned dynamically, offering complete control over the structure.
- **Automated Order Updates**: Use the built-in functionality to update the order of widgets and pages across the system automatically.

### Note :

[](#note-)

Screenshots from the client project.

[Youtube Video](https://www.youtube.com/watch?v=KyedlYpU5i0)Widgets
=======

[](#widgets)

[![](https://raw.githubusercontent.com/ibrahimBougaoua/filawidget/main/screenshots/widgets.png)](https://www.youtube.com/watch?v=KyedlYpU5i0)

Pages
=====

[](#pages)

[![](https://raw.githubusercontent.com/ibrahimBougaoua/filawidget/main/screenshots/pages.png)](https://www.youtube.com/watch?v=KyedlYpU5i0)

Preview
=======

[](#preview)

[![](https://raw.githubusercontent.com/ibrahimBougaoua/filawidget/main/screenshots/preview.png)](https://www.youtube.com/watch?v=KyedlYpU5i0)

Frontend
========

[](#frontend)

[![](https://raw.githubusercontent.com/ibrahimBougaoua/filawidget/main/screenshots/frontend.png)](https://www.youtube.com/watch?v=KyedlYpU5i0)

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

[](#installation)

You can install the package via composer:

```
composer require ibrahimbougaoua/filawidget
```

You can publish and run the migrations with:

```
php artisan vendor:publish --tag="filawidget-migrations"
php artisan migrate
```

You can publish the config file with:

```
php artisan vendor:publish --tag="filawidget-config"
```

This is the contents of the published config file:

```
return [
    'should_register_navigation_appearance' => true,
    'should_register_navigation_pages' => true,
    'should_register_navigation_widgets' => true,
    'should_register_navigation_widget_areas' => true,
    'should_register_navigation_fields' => true,
    'should_register_navigation_widget_types' => true,
    'show_home_link' => true,
    'show_quick_appearance' => true,
];
```

Optionally, you can publish the views using

```
php artisan vendor:publish --tag="filawidget-views"
```

Available fields of filament that can use it for create dynamic widget.

```
----------------------------------------
| Field Type        | Description      |
|-------------------|------------------|
| Text              | Text Field       |
| Textarea          | Textarea Field   |
| Number            | Number Input     |
| Select            | Select Dropdown  |
| Checkbox          | Checkbox         |
| Radio             | Radio Button     |
| Toggle            | Toggle Switch    |
| Color Picker      | Color Picker     |
| Date Picker       | Date Picker      |
| Date Time Picker  | Date Time Picker |
| Time Picker       | Time Picker      |
| File Upload       | File Upload      |
| Image Upload      | Image Upload     |
| Rich Editor       | Rich Text Editor |
| Markdown Editor   | Markdown Editor  |
| Tags Input        | Tags Input       |
| Password          | Password Input   |
----------------------------------------
```

Usage
-----

[](#usage)

```
// AdminPanelProvider
use IbrahimBougaoua\Filawidget\FilaWidgetPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
            ->plugins([
                FilaWidgetPlugin::make(),
            ]);
}
```

```
// Areas
use IbrahimBougaoua\Filawidget\Services\AreaService;

$areas = AreaService::getAllAreas();
$areasWithOrderedWidgets = AreaService::getAllAreasWithOrderedWidgets();
$area = AreaService::getWidgetByIdentifier("Sidebar");
```

```
// Widgets
use IbrahimBougaoua\Filawidget\Services\WidgetService;

$widgets = WidgetService::getAllWidgets();
$widget = WidgetService::getWidgetBySlug("latest-posts");
```

```
// Pages
use IbrahimBougaoua\Filawidget\Services\PageService;

$pages = PageService::getAllPages();
$page = PageService::getPageBySlug("about-us");
$counts = PageService::counts();
```

```
use IbrahimBougaoua\Filawidget\Services\AreaService;
use IbrahimBougaoua\Filawidget\Services\PageService;

// Route
Route::get('/', function(){
    $pages =  PageService::getAllPages();
    $areas =  AreaService::getAllAreas();

    return view('welcome',[
        'pages' => $pages,
        'areas' => $areas,
    ]);
});

// Welcome Blade

    Filament Widgets

      .widget-card {
          margin-bottom: 20px;
      }
      .widget-header {
          font-size: 1.25rem;
          font-weight: bold;
          background-color: #f8f9fa;
          padding: 10px;
          border-bottom: 1px solid #dee2e6;
      }

                  Navbar

                      @foreach ($pages as $key => $page)
                        @if(count($page->children))

                                    {{ $page->title }}

                                    @foreach ($page->children as $key => $sub_page)

                                                {{ $sub_page->title }}

                                    @endforeach

                        @else

                                    {{ $page->title }}

                        @endif
                      @endforeach

                      Search

        @foreach ($areas as $area)

                @forelse ($area->widgets as $widget)

                                {{ $widget->name }}

                                    {{ $widget->description }}

                @empty

                                No Widget Found
                                ˟

                @endforelse

        @endforeach

```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

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

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- \[Ibrahim Bougaoua\]( bougaoua)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance65

Regular maintenance activity

Popularity16

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 68.4% 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

Every ~16 days

Total

2

Last Release

611d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/42cb517e994883d2bfba50af94449dd4e4348c8423516e71c1bfa4738e083df9?d=identicon)[ibrahim.bougaoua](/maintainers/ibrahim.bougaoua)

---

Top Contributors

[![ibrahimBougaoua](https://avatars.githubusercontent.com/u/41789518?v=4)](https://github.com/ibrahimBougaoua "ibrahimBougaoua (26 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (5 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (5 commits)")[![anmeo2204](https://avatars.githubusercontent.com/u/5231336?v=4)](https://github.com/anmeo2204 "anmeo2204 (2 commits)")

---

Tags

laravelibrahimBougaouafilawidget

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ibrahimbougaoua-filawidget/health.svg)

```
[![Health](https://phpackages.com/badges/ibrahimbougaoua-filawidget/health.svg)](https://phpackages.com/packages/ibrahimbougaoua-filawidget)
```

###  Alternatives

[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24149.7k](/packages/vormkracht10-laravel-mails)[spatie/laravel-prometheus

Export Laravel metrics to Prometheus

2651.3M6](/packages/spatie-laravel-prometheus)[hydrat/filament-table-layout-toggle

Filament plugin adding a toggle button to tables, allowing user to switch between Grid and Table layouts.

6292.3k1](/packages/hydrat-filament-table-layout-toggle)[scalar/laravel

Render your OpenAPI-based API reference

6183.9k2](/packages/scalar-laravel)[ralphjsmit/laravel-helpers

A package containing handy helpers for your Laravel-application.

13704.6k2](/packages/ralphjsmit-laravel-helpers)[musahmusah/laravel-multipayment-gateways

A Laravel Package that makes implementation of multiple payment Gateways endpoints and webhooks seamless

852.2k1](/packages/musahmusah-laravel-multipayment-gateways)

PHPackages © 2026

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