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

v3.0.2 2025-12-30 11:53 UTC

This package is auto-updated.

Last update: 2025-12-30 16:34:57 UTC


README

Latest Version on Packagist Total Downloads

Status Tabs Example

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

  1. Your model must have a status column cast to an enum class
  2. Your enum class must implement getLabel() and getIcon() 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.