# Filament

**Package:** Laravel Modules | **Version:** 3 | **URL:** https://mozex.dev/docs/laravel-modules/v3/features/filament

---

## Overview

Auto-discovers Filament Resources, Pages, Widgets, and Clusters within modules and registers them per panel. The panel id is inferred from the directory name under `Filament/`.

## What gets discovered

Four independently toggleable features (when Filament is installed):
- Resources: `*/Filament/*/Resources`
- Pages: `*/Filament/*/Pages`
- Widgets: `*/Filament/*/Widgets`
- Clusters: `*/Filament/*/Clusters`

The second `*` in each pattern is the panel name. It's lowercased to form the panel id (e.g., `Admin` → `admin`).

## Default configuration

```php
'filament-resources' => [
    'active' => true,
    'patterns' => ['*/Filament/*/Resources'],
],
'filament-pages' => [
    'active' => true,
    'patterns' => ['*/Filament/*/Pages'],
],
'filament-widgets' => [
    'active' => true,
    'patterns' => ['*/Filament/*/Widgets'],
],
'filament-clusters' => [
    'active' => true,
    'patterns' => ['*/Filament/*/Clusters'],
],
```

Filament features are automatically skipped when Filament is not installed — no configuration needed.

## How panel mapping works

- The panel name is extracted from the directory path: `Filament/{Panel}/Resources`.
- During registration, each Filament panel is iterated and only assets matching that panel id are registered via `$panel->discoverResources()`, `discoverPages()`, `discoverWidgets()`, `discoverClusters()`.
- Module Livewire components registered by Filament are re-registered with Livewire to ensure correct aliases.

## Directory layout

```
Modules/Blog/
└── Filament/
    ├── Admin/
    │   ├── Resources/
    │   │   └── PostResource.php
    │   ├── Pages/
    │   │   └── SettingsPage.php
    │   └── Widgets/
    │       └── PostOverviewWidget.php
    └── Dashboard/
        ├── Resources/
        │   └── NestedPostResource.php
        └── Clusters/
            └── NestedPost.php
```

## Usage

- Place Filament classes under `Modules/{Module}/Filament/{PanelId}/...` following Filament conventions.
- Ensure your app has panel providers with matching ids (e.g., `AdminPanelProvider` with id `admin`).

## Configuration

- Disable any feature by setting `'active' => false` in its section.
- Adjust glob patterns to match your directory structure.

## Version compatibility

This version of the package requires Filament v5, which in turn requires Livewire v4. If your application still uses Filament v3/v4 or Livewire v3, use the [2.x branch](https://github.com/mozex/laravel-modules/tree/2.x) instead.

## Troubleshooting

- **Not appearing in panel**: confirm directory has the panel segment (e.g., `Filament/Admin/Resources`) and your app defines a panel with matching id.
- **Namespace mismatch**: class namespaces must match PSR-4 paths.

---

## Table of Contents

- [Introduction](https://mozex.dev/docs/laravel-modules/v3)
- [Support Us](https://mozex.dev/docs/laravel-modules/v3/support-us)
- [Requirements](https://mozex.dev/docs/laravel-modules/v3/requirements)
- [Changelog](https://mozex.dev/docs/laravel-modules/v3/changelog)
- [Contributing](https://mozex.dev/docs/laravel-modules/v3/contributing)
- [Questions & Issues](https://mozex.dev/docs/laravel-modules/v3/questions-and-issues)
- [About Mozex](https://mozex.dev/docs/laravel-modules/v3/about)

### Features

- [Blade Components](https://mozex.dev/docs/laravel-modules/v3/features/blade-components)
- [Views](https://mozex.dev/docs/laravel-modules/v3/features/views)
- [Routes](https://mozex.dev/docs/laravel-modules/v3/features/routes)
- [Configs](https://mozex.dev/docs/laravel-modules/v3/features/configs)
- [Migrations](https://mozex.dev/docs/laravel-modules/v3/features/migrations)
- [Seeders](https://mozex.dev/docs/laravel-modules/v3/features/seeders)
- [Commands](https://mozex.dev/docs/laravel-modules/v3/features/commands)
- [Helpers](https://mozex.dev/docs/laravel-modules/v3/features/helpers)
- [Models & Factories](https://mozex.dev/docs/laravel-modules/v3/features/models-factories)
- [Policies](https://mozex.dev/docs/laravel-modules/v3/features/policies)
- [Events & Listeners](https://mozex.dev/docs/laravel-modules/v3/features/events-listeners)
- [Service Providers](https://mozex.dev/docs/laravel-modules/v3/features/service-providers)
- [Translations](https://mozex.dev/docs/laravel-modules/v3/features/translations)
- [Caching](https://mozex.dev/docs/laravel-modules/v3/features/caching)
- [Listing Modules](https://mozex.dev/docs/laravel-modules/v3/features/listing)
- [Livewire Components](https://mozex.dev/docs/laravel-modules/v3/features/livewire-components)
- [Filament](https://mozex.dev/docs/laravel-modules/v3/features/filament)
- [Nova Resources](https://mozex.dev/docs/laravel-modules/v3/features/nova-resources)

### Integrations

- [PHPStan](https://mozex.dev/docs/laravel-modules/v3/integrations/phpstan)
- [PHPUnit](https://mozex.dev/docs/laravel-modules/v3/integrations/phpunit)
- [Pest](https://mozex.dev/docs/laravel-modules/v3/integrations/pest)