PHPackages                             islamv/filament-settings-plugin - 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. [Localization &amp; i18n](/categories/localization)
4. /
5. islamv/filament-settings-plugin

ActiveLibrary[Localization &amp; i18n](/categories/localization)

islamv/filament-settings-plugin
===============================

A reusable, extensible Filament Settings plugin with tabbed UI, Spatie Settings persistence, Artisan generators, automatic discovery, and optional Shield integration.

1.0.5(today)04↑2900%MITPHPPHP ^8.3

Since Jul 27Pushed todayCompare

[ Source](https://github.com/islamV/filament-settings-plugin)[ Packagist](https://packagist.org/packages/islamv/filament-settings-plugin)[ RSS](/packages/islamv-filament-settings-plugin/feed)WikiDiscussions master Synced today

READMEChangelog (4)Dependencies (8)Versions (7)Used By (0)

Filament Settings Plugin
========================

[](#filament-settings-plugin)

[![Latest Version on Packagist](https://camo.githubusercontent.com/25925b26863445b347ac8d81259491be8785dc125ed42767984f6d3d77a956f0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69736c616d762f66696c616d656e742d73657474696e67732d706c7567696e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/islamv/filament-settings-plugin)[![Total Downloads](https://camo.githubusercontent.com/41efc8753a9dccd9b3cc9eee4683cfed7b8ea65b49c0f8bf46484974bd5144a9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f69736c616d762f66696c616d656e742d73657474696e67732d706c7567696e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/islamv/filament-settings-plugin)[![License](https://camo.githubusercontent.com/7661d5c7defda5e09809f28e0615350bf0a18bc4612a0ddc1c8adf34b653e882/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f69736c616d762f66696c616d656e742d73657474696e67732d706c7567696e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

A production-ready, highly architecture-focused reusable Filament Settings plugin powered by `spatie/laravel-settings`. Built specifically for modern Filament v5 and Laravel applications.

---

Features
--------

[](#features)

- ⚙️ **Single Filament Settings Page**: Clean, unified navigation page with persisable tabs in URL query strings.
- 🧩 **Built-in Default Tabs**: Includes pre-configured **General Settings**, **Social Links** (with dynamic repeaters), and **Static Pages** (Privacy Policy, Terms, About).
- 🗂️ **Nested Sub-Tabs**: Support for main tabs, nested sub-tabs, and dynamic dynamic child registration.
- 🌐 **Multilingual/Locale Tabs**: Sub-tabs can be marked translatable, automatically rendering tabbed interfaces for each configured locale with RTL support.
- 💾 **Spatie Laravel Settings Integration**: Strictly powered by `spatie/laravel-settings` with type-safe setting classes and database migrations.
- 🛡️ **Optional Shield Integration**: Seamless permission resolution using `bezhansalleh/filament-shield` without hardcoding dependencies.
- 🚀 **Artisan Generators**: Easily generate tabs, sub-tabs, static pages, settings classes, and migrations using `php artisan make:settings-tab`, `make:settings-sub-tab`, and `make:settings-page`.
- 🔍 **Automatic Discovery**: Automatically discovers tabs and sub-tabs from your `app/Filament/Settings/Tabs` directory.
- 🔌 **External Package Registration**: Third-party packages can register custom settings tabs via Service Providers.

---

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

[](#installation)

You can install the package via composer (`spatie/laravel-settings` will be automatically installed as a dependency):

```
composer require islamv/filament-settings-plugin
```

Publish and run the Spatie Settings &amp; Plugin migrations:

```
php artisan vendor:publish --provider="Spatie\LaravelSettings\LaravelSettingsServiceProvider"
php artisan vendor:publish --provider="Islamv\FilamentSettingsPlugin\FilamentSettingsServiceProvider"
php artisan migrate
```

---

Registration in Panel
---------------------

[](#registration-in-panel)

Register `FilamentSettingsPlugin` in your Filament Panel Provider (e.g. `AdminPanelProvider.php`):

```
use Islamv\FilamentSettingsPlugin\FilamentSettingsPlugin;

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

---

Configuration
-------------

[](#configuration)

The plugin configuration file `config/filament-settings.php` allows you to customize navigation, locales, file upload disk, and discovery behavior:

```
return [
    'navigation' => [
        'label' => 'Settings',
        'icon'  => 'heroicon-o-cog-6-tooth',
        'group' => null,
        'sort'  => 100,
    ],

    'locales' => [
        'en' => ['label' => 'English', 'direction' => 'ltr'],
        'ar' => ['label' => 'Arabic',  'direction' => 'rtl'],
    ],

    'uploads' => [
        'disk'      => env('FILAMENT_SETTINGS_DISK', 'public'),
        'directory' => env('FILAMENT_SETTINGS_DIRECTORY', 'settings'),
    ],

    'discovery' => [
        'enabled'   => true,
        'path'      => null, // defaults to app/Filament/Settings/Tabs
        'namespace' => null, // defaults to App\Filament\Settings\Tabs
    ],
];
```

---

Usage &amp; Tab Management
--------------------------

[](#usage--tab-management)

### Fluent API Customization

[](#fluent-api-customization)

In your `PanelProvider`:

```
FilamentSettingsPlugin::make()
    ->useShield(true) // Enable Filament Shield permission checks
    ->withoutDefaultTabs() // Disable built-in General, Social, Static Pages tabs
    ->removeTab('social-links') // Remove a specific tab
    ->locales([
        'en' => ['label' => 'English', 'direction' => 'ltr'],
        'ar' => ['label' => 'Arabic', 'direction' => 'rtl'],
        'fr' => ['label' => 'French', 'direction' => 'ltr'],
    ])
    ->tab(PaymentSettingsTab::make()) // Register custom tab manually
    ->subTab('static-pages', ContactUsSubTab::make()); // Register sub-tab under existing tab
```

---

Artisan Scaffolding Generators
------------------------------

[](#artisan-scaffolding-generators)

### 1. Generate a Main Tab

[](#1-generate-a-main-tab)

Creates a main Settings Tab along with a Spatie Settings class and database migration.

```
php artisan make:settings-tab Payment --sort=40 --icon=heroicon-o-credit-card
```

### 2. Generate a Sub-Tab

[](#2-generate-a-sub-tab)

Creates a sub-tab nested under a parent tab.

```
php artisan make:settings-sub-tab Stripe --parent=payment --sort=10
```

### 3. Generate a Static Page

[](#3-generate-a-static-page)

Creates a translatable static page sub-tab under the built-in `static-pages` main tab.

```
php artisan make:settings-page RefundPolicy --sort=40
```

---

Automatic Discovery Convention
------------------------------

[](#automatic-discovery-convention)

When automatic discovery is enabled, tabs are automatically loaded based on folder structure:

```
app/Filament/Settings/Tabs/
├── PaymentSettingsTab.php
