ht3aa / status-tabs
Add tabs according to the casts class of the status column (or column specifiy by you)
Fund package maintenance!
ht3aa
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/ht3aa/status-tabs
Requires
- php: ^8.1
- filament/filament: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9|^8.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2025-12-30 16:34:57 UTC
README
Installation
You can install the package via composer (only support filament v3):
composer require ht3aa/status-tabs
Usage
This package provides a StatusTabs class that automatically generates tabs in your Filament resource list page based on the status enum of your model.
Requirements
- Your model must have a
statuscolumn cast to an enum class - Your enum class must implement
getLabel()andgetIcon()methods
Example Enum
<?php namespace App\Enums; enum OrderStatus: string { case PENDING = 'pending'; case PROCESSING = 'processing'; case COMPLETED = 'completed'; case CANCELLED = 'cancelled'; public function getLabel(): string { return match($this) { self::PENDING => 'Pending', self::PROCESSING => 'Processing', self::COMPLETED => 'Completed', self::CANCELLED => 'Cancelled', }; } public function getIcon(): string { return match($this) { self::PENDING => 'heroicon-o-clock', self::PROCESSING => 'heroicon-o-arrow-path', self::COMPLETED => 'heroicon-o-check-circle', self::CANCELLED => 'heroicon-o-x-circle', }; } }
Example Model
<?php namespace App\Models; use App\Enums\OrderStatus; use Illuminate\Database\Eloquent\Model; class Order extends Model { protected $casts = [ 'status' => OrderStatus::class, ]; }
Using in Filament Resource
In your Filament resource's list page, extend StatusTabs instead of ListRecords:
<?php namespace App\Filament\Resources\OrderResource\Pages; use App\Filament\Resources\OrderResource; use Ht3aa\StatusTabs\StatusTabs; use Filament\Actions; use Filament\Resources\Pages\ListRecords; class ListOrders extends StatusTabs { protected static string $resource = OrderResource::class; protected function getHeaderActions(): array { return [ Actions\CreateAction::make(), ]; } }
The StatusTabs class will automatically:
- Create an "All" tab showing all records
- Create a tab for each status enum case
- Display the status label, icon, and count badge for each tab
- Filter records by status when a tab is selected
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.
