Search by

chaim-chv / filament-enum-plural-label

chaim-chv

Plural label contract for PHP enums used with Laravel and Filament

Package info

github.com/chaim-chv/filament-enum-plural-label

pkg:composer/chaim-chv/filament-enum-plural-label

Statistics

Installs: 26

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v2.0.0 2026-09-10 20:43 UTC

This package is auto-updated.

Last update: 2026-10-22 08:22:40 UTC


README

A small Laravel + Filament helper library that allows PHP enums to expose a plural label for use in Filament resources, navigation, and tables.

This package provides a single contract. It does not register hooks, override Filament behavior, or add magic.

Compatibility

  • PHP 8.2+
  • Laravel 11.28+, 12, or 13
  • Filament v5+

Older versions of the package remain available for Filament v3/v4.

Installation

composer require chaim-chv/filament-enum-plural-label

Usage

Define an enum that implements the contract:

use FilamentEnumPluralLabel\Contracts\HasPluralLabel;

enum UserRole: string implements HasPluralLabel
{
    case Admin = 'admin';
    case Editor = 'editor';
    case Viewer = 'viewer';

    public function getPluralLabel(): string
    {
        return match ($this) {
            self::Admin => 'Administrators',
            self::Editor => 'Editors',
            self::Viewer => 'Viewers',
        };
    }
}

The getPluralLabel() method may return a string, an Illuminate\Contracts\Support\Htmlable instance, or null.

Filament example

use FilamentEnumPluralLabel\Contracts\HasPluralLabel;

public static function getPluralModelLabel(): string
{
    $role = UserRole::tryFrom(request('role'));

    if ($role instanceof HasPluralLabel) {
        return $role->getPluralLabel();
    }

    return 'Users';
}

Testing

composer test

@chaim-chv © 2026