saade/filament-facehash

Use Facehash as the default avatar provider in your Filament panels.

Fund package maintenance!
saade

Installs: 303

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/saade/filament-facehash

v1.0.0 2026-02-17 22:08 UTC

This package is auto-updated.

Last update: 2026-02-19 02:04:03 UTC


README

Facehash

Generate unique, deterministic avatar faces for your Filament panels. Drop-in replacement for default user avatars — same name always produces the same face. Pure SVG, no GD or Imagick required.

Try the playground

Installation

composer require saade/filament-facehash

Usage

Add the provider and plugin to your panel configuration:

use Saade\FilamentFacehash\FacehashPlugin;
use Saade\FilamentFacehash\FacehashProvider;

public function panel(Panel $panel): Panel
{
    return $panel
        ->defaultAvatarProvider(FacehashProvider::class)
        ->plugins([
            FacehashPlugin::make(),
        ]);
}

Configuration

Customize the avatars using the plugin's fluent API:

use Saade\Facehash\Enums\Variant;
use Saade\FilamentFacehash\FacehashPlugin;

FacehashPlugin::make()
    ->size(40)                       // Avatar size in pixels (default: 40)
    ->variant(Variant::Gradient)     // Variant::Gradient or Variant::Solid (default: Gradient)
    ->initial(true)                  // Show first letter of name (default: true)
    ->colors([                       // Custom color palette
        '#ec4899',
        '#f59e0b',
        '#3b82f6',
        '#f97316',
        '#10b981',
    ])

For more configuration options (routes, default overrides, etc.), visit the Facehash package documentation.

Model Trait

For using facehash avatars outside of Filament panels (e.g. in Blade views, notifications), add the trait to your User model:

use Saade\FilamentFacehash\Concerns\HasFacehashAvatar;

class User extends Authenticatable
{
    use HasFacehashAvatar;
}

This gives you:

$user->facehash_avatar_url  // data:image/svg+xml;base64,...

Override which attribute is used as the avatar name:

use Illuminate\Database\Eloquent\Casts\Attribute;

public function facehashAvatarName(): Attribute
{
    return new Attribute(
        get: fn () => $this->email  // use email instead of name
    );
}

Credits

License

MIT