PHPackages                             zvizvi/user-fields - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. zvizvi/user-fields

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

zvizvi/user-fields
==================

This is my package user-fields

0.0.7(1mo ago)1822.4k↑19%3[2 issues](https://github.com/zvizvi/filament-user-fields/issues)[1 PRs](https://github.com/zvizvi/filament-user-fields/pulls)MITPHPPHP ^8.2CI passing

Since Nov 6Pushed 2w agoCompare

[ Source](https://github.com/zvizvi/filament-user-fields)[ Packagist](https://packagist.org/packages/zvizvi/user-fields)[ Docs](https://github.com/zvizvi/filament-user-fields)[ GitHub Sponsors](https://github.com/zvizvi)[ RSS](/packages/zvizvi-user-fields/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (1)Dependencies (14)Versions (10)Used By (0)

[![banner](https://private-user-images.githubusercontent.com/4354421/535612540-8fa0dd08-a7be-4442-8b31-5b51a4a7e0e7.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTYxMjU0MC04ZmEwZGQwOC1hN2JlLTQ0NDItOGIzMS01YjUxYTRhN2UwZTcuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YmIzM2ZkNWQzODJlOGY0NGNkNTBkZjEwMTMxZWE2YzdlMGUyOTVkY2NiODNjZDNhY2JiMmMzNmRjMTA5NDE0YSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.wRYraCJRtcxs2Zqk00XV6l1gB0YcoEkyqPi96brWH8w)](https://github.com/zvizvi/filament-relation-manager-repeater)Filament User Fields
====================

[](#filament-user-fields)

A comprehensive Filament v4/v5 plugin that provides ready-to-use user field components with avatar display for forms, tables, infolists, and filters. This package simplifies the display of user information across your Filament application by providing pre-configured components that automatically render user avatars and names in a consistent, professional manner.

---

Features
--------

[](#features)

- **Pre-styled Components**: Beautiful user display with avatars and names out of the box
- **Multiple Display Types**: Support for tables, infolists, forms, and filters
- **Stacked Avatars**: Display multiple users in a compact, stacked format
- **Easy Integration**: Drop-in replacement for standard Filament components
- **Consistent UI**: Unified user representation across your entire application
- **Zero Configuration**: Works immediately with Filament's default user avatar system

---

Installation
------------

[](#installation)

Install the package via composer:

```
composer require zvizvi/user-fields
```

That's it! The package will automatically register itself with Laravel and Filament.

---

Available Components
--------------------

[](#available-components)

This package provides six main components, each designed for specific use cases within Filament:

[![image](https://private-user-images.githubusercontent.com/4354421/535362911-2811689a-4ba2-4f09-b30f-cad351890ef2.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2MjkxMS0yODExNjg5YS00YmEyLTRmMDktYjMwZi1jYWQzNTE4OTBlZjIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MWViMDE0ZDA5ZGEzNzQ4Y2RhYjYxOTQ4ZTJkMmIyZGVhOTk1NmRmNmEwNDJjNWM3YTg3OTY0NGQ3ZTAyNGE0OSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.tXRo60I0OKy8wdN4cmhlvZxuv26IA0GX1jeD9ZiujR4)](https://private-user-images.githubusercontent.com/4354421/535362911-2811689a-4ba2-4f09-b30f-cad351890ef2.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2MjkxMS0yODExNjg5YS00YmEyLTRmMDktYjMwZi1jYWQzNTE4OTBlZjIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MWViMDE0ZDA5ZGEzNzQ4Y2RhYjYxOTQ4ZTJkMmIyZGVhOTk1NmRmNmEwNDJjNWM3YTg3OTY0NGQ3ZTAyNGE0OSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.tXRo60I0OKy8wdN4cmhlvZxuv26IA0GX1jeD9ZiujR4)### 1. UserColumn (Tables)

[](#1-usercolumn-tables)

**Purpose**: Display user information in table columns with avatar and name.

**Use Case**: Lists, resource tables, relation managers

**Example**:

```
use Zvizvi\UserFields\Components\UserColumn;

public static function table(Table $table): Table
{
    return $table
        ->columns([
            UserColumn::make('author.name') // Dot notation enables native search, sort & eager loading
                ->label('Author')
                ->searchable()
                ->sortable(),

            UserColumn::make('assignee')
                ->label('Assigned To')
                ->wrapped(), // Display in column layout
        ]);
}
```

On the users table itself, pass the name attribute and the record is used as the user:

```
// In UserResource
UserColumn::make('name')
    ->searchable()
    ->sortable(),
```

**Features**:

- Displays user avatar (circular) with name
- Native `searchable()` / `sortable()` support via dot notation (`author.name`)
- Works on the users table itself (`make('name')`)
- Optional `wrapped()` method for vertical layout
- Supports single users or collections
- Automatic line breaks for multiple users

---

[![image](https://private-user-images.githubusercontent.com/4354421/535363168-39e7e50e-f04d-498d-991b-172d3289d2c0.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2MzE2OC0zOWU3ZTUwZS1mMDRkLTQ5OGQtOTkxYi0xNzJkMzI4OWQyYzAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Njk3Y2Y3YmY5OWI0MWYzMzczOGY4OTk0NjBmMmZiNWZiOTcyNjhiNzBkZDQ2MTkyNTQ3NzAzMTI2YzZiOWRmNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.iJIykJrObxdiOl1TMqyQbaXCtwGYBSP6g2by9Ixe61g)](https://private-user-images.githubusercontent.com/4354421/535363168-39e7e50e-f04d-498d-991b-172d3289d2c0.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2MzE2OC0zOWU3ZTUwZS1mMDRkLTQ5OGQtOTkxYi0xNzJkMzI4OWQyYzAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Njk3Y2Y3YmY5OWI0MWYzMzczOGY4OTk0NjBmMmZiNWZiOTcyNjhiNzBkZDQ2MTkyNTQ3NzAzMTI2YzZiOWRmNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.iJIykJrObxdiOl1TMqyQbaXCtwGYBSP6g2by9Ixe61g)### 2. UserEntry (Infolists)

[](#2-userentry-infolists)

**Purpose**: Display user information in infolists/view pages.

**Use Case**: Resource view pages, modal details, info panels

**Example**:

```
use Zvizvi\UserFields\Components\UserEntry;

public static function infolist(Infolist $infolist): Infolist
{
    return $infolist
        ->schema([
            UserEntry::make('created_by')
                ->label('Created By'),

            UserEntry::make('reviewers')
                ->label('Reviewers')
                ->wrapped(), // Display in column layout
        ]);
}
```

**Features**:

- Read-only display of user information
- Consistent styling with UserColumn
- Supports single or multiple users
- Optional wrapped layout

---

[![image](https://private-user-images.githubusercontent.com/4354421/535366028-973b50d1-8469-4325-b1b8-b9fbdb2ac13a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NjAyOC05NzNiNTBkMS04NDY5LTQzMjUtYjFiOC1iOWZiZGIyYWMxM2EucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MjYzYjNkNTFhMjFjNjUwOTM3Nzc3MDc1MmZiN2I5NWE4Mjg1ZmQ2MWEwOWI5ZGRmYjU5MDI3N2ZjYTVhOGY5MyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.7qE88sBx44xBGf0mAsmcUJ1OwMK2ujAEmO3LamNG26k)](https://private-user-images.githubusercontent.com/4354421/535366028-973b50d1-8469-4325-b1b8-b9fbdb2ac13a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NjAyOC05NzNiNTBkMS04NDY5LTQzMjUtYjFiOC1iOWZiZGIyYWMxM2EucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MjYzYjNkNTFhMjFjNjUwOTM3Nzc3MDc1MmZiN2I5NWE4Mjg1ZmQ2MWEwOWI5ZGRmYjU5MDI3N2ZjYTVhOGY5MyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.7qE88sBx44xBGf0mAsmcUJ1OwMK2ujAEmO3LamNG26k)[![image](https://private-user-images.githubusercontent.com/4354421/535366214-7375a233-71cb-48fa-bbcf-5d1927afcc0f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NjIxNC03Mzc1YTIzMy03MWNiLTQ4ZmEtYmJjZi01ZDE5MjdhZmNjMGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTE2MjRmOTFiOTk5NWQ2YjBjYjg2ZmNkOTgxNThlMmUzZTJhMTVhZWY3ODk5NDUzZDM1MWY5MTk1OTY5YjUyNSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.5QxueQnSy-eHMQ-1oh4mhe0NT5vrgtpBjHYoXegqijg)](https://private-user-images.githubusercontent.com/4354421/535366214-7375a233-71cb-48fa-bbcf-5d1927afcc0f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NjIxNC03Mzc1YTIzMy03MWNiLTQ4ZmEtYmJjZi01ZDE5MjdhZmNjMGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTE2MjRmOTFiOTk5NWQ2YjBjYjg2ZmNkOTgxNThlMmUzZTJhMTVhZWY3ODk5NDUzZDM1MWY5MTk1OTY5YjUyNSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.5QxueQnSy-eHMQ-1oh4mhe0NT5vrgtpBjHYoXegqijg)### 3. UserSelect (Forms)

[](#3-userselect-forms)

**Purpose**: Select field for choosing users with rich display.

**Use Case**: Forms, create/edit pages, modals

**Example**:

```
use Zvizvi\UserFields\Components\UserSelect;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            UserSelect::make('user_id')
                ->label('Select User')
                ->relationship('user', 'name')
                ->searchable()
                ->preload(),

            UserSelect::make('team_members')
                ->label('Team Members')
                ->relationship('teamMembers', 'name')
                ->multiple()
                ->searchable(),
        ]);
}
```

**Features**:

- Rich dropdown with user avatars
- HTML rendering support for avatars
- Works with relationships
- Searchable and preloadable
- Supports multiple selection

---

[![image](https://private-user-images.githubusercontent.com/4354421/535366818-06db5b36-84ba-4761-8be7-00298521c196.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NjgxOC0wNmRiNWIzNi04NGJhLTQ3NjEtOGJlNy0wMDI5ODUyMWMxOTYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YzI3MzE3ODk5MmJhZTY4OWE1NTg3MWEyYWI1MmU0OTdmNTNhZmJhYTIwYTdmMTY1ZTE1NWQyYWY0ZWEzYmFkMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.GyjzqROINldE6aVPMqG3R6VAHcbpeaFDSc0a5RI_LwQ)](https://private-user-images.githubusercontent.com/4354421/535366818-06db5b36-84ba-4761-8be7-00298521c196.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NjgxOC0wNmRiNWIzNi04NGJhLTQ3NjEtOGJlNy0wMDI5ODUyMWMxOTYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YzI3MzE3ODk5MmJhZTY4OWE1NTg3MWEyYWI1MmU0OTdmNTNhZmJhYTIwYTdmMTY1ZTE1NWQyYWY0ZWEzYmFkMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.GyjzqROINldE6aVPMqG3R6VAHcbpeaFDSc0a5RI_LwQ)### 4. UserSelectFilter (Table Filters)

[](#4-userselectfilter-table-filters)

**Purpose**: Filter table data by user selection.

**Use Case**: Table filters and advanced filtering; only works with relationship-based filtering.

**Example**:

```
use Zvizvi\UserFields\Components\UserSelectFilter;

public static function table(Table $table): Table
{
    return $table
        ->filters([
            UserSelectFilter::make('author_id')
                ->label('Author')
                ->relationship('author', 'name')
                ->searchable()
                ->preload(),

            UserSelectFilter::make('assigned_to')
                ->label('Assigned To')
                ->relationship('assignedUser', 'name')
                ->multiple(),
        ]);
}
```

**Features**:

- Filter results by user
- Rich display with avatars in dropdown
- Supports single or multiple selection
- Searchable options

---

[![image](https://private-user-images.githubusercontent.com/4354421/535365598-f142df48-7789-4036-b1bf-4d06786fe9d5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NTU5OC1mMTQyZGY0OC03Nzg5LTQwMzYtYjFiZi00ZDA2Nzg2ZmU5ZDUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTBhZmFlZDQ4NjJlMGE1ODU1MmExN2M5ZmE4YzUyYTEyZTExNWRjOGZlZGE2ZmIyZDE2MjFlZDI2OWQ5NmJjZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.unLZv7vPauSsLTNDekum8PqTKmO_aChyVdpFYl1dSVw)](https://private-user-images.githubusercontent.com/4354421/535365598-f142df48-7789-4036-b1bf-4d06786fe9d5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2NTU5OC1mMTQyZGY0OC03Nzg5LTQwMzYtYjFiZi00ZDA2Nzg2ZmU5ZDUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTBhZmFlZDQ4NjJlMGE1ODU1MmExN2M5ZmE4YzUyYTEyZTExNWRjOGZlZGE2ZmIyZDE2MjFlZDI2OWQ5NmJjZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.unLZv7vPauSsLTNDekum8PqTKmO_aChyVdpFYl1dSVw)### 5. UserStackedColumn (Tables - Multiple Users)

[](#5-userstackedcolumn-tables---multiple-users)

**Purpose**: Display multiple users as stacked circular avatars in tables.

**Use Case**: Team members, collaborators, participants in compact space

**Example**:

```
use Zvizvi\UserFields\Components\UserStackedColumn;

public static function table(Table $table): Table
{
    return $table
        ->columns([
            UserStackedColumn::make('team_members')
                ->label('Team')
                ->ring(2) // Ring width around avatars
                ->imageHeight(32), // Avatar size

            UserStackedColumn::make('collaborators')
                ->label('Collaborators')
                ->tooltip(fn ($state) => $state?->name), // Hover tooltip
        ]);
}
```

**Features**:

- Compact stacked avatar display
- Circular avatars with ring borders
- Hover tooltips showing user names
- Customizable size and ring width
- Ideal for displaying multiple users in limited space

---

[![image](https://private-user-images.githubusercontent.com/4354421/535368540-3f577480-60c4-40f6-8c95-521b63ece06a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2ODU0MC0zZjU3NzQ4MC02MGM0LTQwZjYtOGM5NS01MjFiNjNlY2UwNmEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9M2EzMzZmNWI2ZGM3ZTE2Y2JmOGZhZWMzODZiM2FkOTM0NzU3Yjg4OGU0MDc2Yjc4YmVkZGFjMzQ1YzIxM2YzNiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.Y-7M-Aeo46hbob9ggMoNxOrsWYldg6c5n3ttRe4KBj8)](https://private-user-images.githubusercontent.com/4354421/535368540-3f577480-60c4-40f6-8c95-521b63ece06a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODY3NzgwMjEsIm5iZiI6MTc4Njc3NzcyMSwicGF0aCI6Ii80MzU0NDIxLzUzNTM2ODU0MC0zZjU3NzQ4MC02MGM0LTQwZjYtOGM5NS01MjFiNjNlY2UwNmEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDgxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA4MTVUMDcwODQxWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9M2EzMzZmNWI2ZGM3ZTE2Y2JmOGZhZWMzODZiM2FkOTM0NzU3Yjg4OGU0MDc2Yjc4YmVkZGFjMzQ1YzIxM2YzNiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.Y-7M-Aeo46hbob9ggMoNxOrsWYldg6c5n3ttRe4KBj8)### 6. UserStackedEntry (Infolists - Multiple Users)

[](#6-userstackedentry-infolists---multiple-users)

**Purpose**: Display multiple users as stacked avatars in infolists.

**Use Case**: View pages showing team members, collaborators, participants

**Example**:

```
use Zvizvi\UserFields\Components\UserStackedEntry;

public static function infolist(Infolist $infolist): Infolist
{
    return $infolist
        ->schema([
            UserStackedEntry::make('project_members')
                ->label('Project Team')
                ->ring(2)
                ->imageHeight(32),

            UserStackedEntry::make('reviewers')
                ->label('Code Reviewers'),
        ]);
}
```

**Features**:

- Same styling as UserStackedColumn
- Read-only display
- Stacked circular avatars
- Tooltips on hover
- Perfect for displaying multiple users in view mode

---

Component Comparison
--------------------

[](#component-comparison)

ComponentContextDisplay TypeUser CountInteractive**UserColumn**TablesAvatar + NameSingle/MultipleRead-only**UserEntry**InfolistsAvatar + NameSingle/MultipleRead-only**UserSelect**FormsDropdown with AvatarSingle/MultipleInteractive**UserSelectFilter**FiltersDropdown with AvatarSingle/MultipleInteractive**UserStackedColumn**TablesStacked AvatarsMultipleRead-only**UserStackedEntry**InfolistsStacked AvatarsMultipleRead-only---

Advanced Usage
--------------

[](#advanced-usage)

### Customizing Avatar Display

[](#customizing-avatar-display)

All components use Filament's built-in avatar system. To customize avatars globally:

```
// In your User model
public function getFilamentAvatarUrl(): ?string
{
    return $this->avatar_url
        ? Storage::url($this->avatar_url)
        : "https://ui-avatars.com/api/?name={$this->name}&color=7F9CF5&background=EBF4FF";
}
```

### Working with Relationships

[](#working-with-relationships)

Columns and entries use dot notation to point at an attribute of the related user. This is the recommended form — Filament recognizes the relationship, eager-loads it automatically, and `searchable()` / `sortable()` work out of the box against the users table:

```
UserColumn::make('author.name')
    ->label('Written By')
    ->searchable()
    ->sortable(),

// Nested relationships work too
UserColumn::make('assignment.user.name')
    ->label('Assigned To')
    ->searchable(),
```

Passing just the relationship name (`UserColumn::make('author')`) still works for display, but Filament cannot search or sort it — use dot notation when you need those.

Form fields define the relationship explicitly:

```
UserSelect::make('reviewer_id')
    ->relationship('reviewer', 'name')
    ->searchable(['name', 'email']) // Search multiple fields
    ->preload(),
```

### Using on the Users Table

[](#using-on-the-users-table)

When the record itself is the user (e.g. in your `UserResource`), point the component at the user's name attribute:

```
UserColumn::make('name')
    ->label('User')
    ->searchable()
    ->sortable(),

UserEntry::make('name')
    ->label('User'),
```

### Handling Multiple Users

[](#handling-multiple-users)

```
// In your model
public function teamMembers()
{
    return $this->belongsToMany(User::class, 'team_user');
}

// In your resource
UserColumn::make('teamMembers.name')
    ->label('Team')
    ->searchable()
    ->wrapped(), // Display in vertical layout

// Or use stacked for compact display
UserStackedColumn::make('teamMembers')
    ->label('Team'),
```

### Custom Styling

[](#custom-styling)

```
UserColumn::make('author')
    ->extraAttributes([
        'class' => 'custom-user-display'
    ]),

UserStackedColumn::make('team')
    ->ring(3) // Thicker ring
    ->imageHeight(40), // Larger avatars
```

---

Real-World Examples
-------------------

[](#real-world-examples)

### Blog Post Resource

[](#blog-post-resource)

```
use Zvizvi\UserFields\Components\{UserColumn, UserSelect, UserSelectFilter};

class PostResource extends Resource
{
    public static function form(Form $form): Form
    {
        return $form->schema([
            TextInput::make('title')->required(),
            UserSelect::make('author_id')
                ->label('Author')
                ->relationship('author', 'name')
                ->default(auth()->id())
                ->required(),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('title'),
                UserColumn::make('author.name')
                    ->label('Author')
                    ->searchable()
                    ->sortable(),
                TextColumn::make('created_at')->dateTime(),
            ])
            ->filters([
                UserSelectFilter::make('author_id')
                    ->label('Filter by Author')
                    ->relationship('author', 'name'),
            ]);
    }
}
```

### Project Management Resource

[](#project-management-resource)

```
use Zvizvi\UserFields\Components\{UserStackedColumn, UserSelect, UserEntry};

class ProjectResource extends Resource
{
    public static function form(Form $form): Form
    {
        return $form->schema([
            TextInput::make('name')->required(),
            UserSelect::make('owner_id')
                ->label('Project Owner')
                ->relationship('owner', 'name')
                ->required(),
            UserSelect::make('team_members')
                ->label('Team Members')
                ->relationship('teamMembers', 'name')
                ->multiple()
                ->searchable(),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table->columns([
            TextColumn::make('name'),
            UserColumn::make('owner.name')
                ->label('Owner')
                ->searchable()
                ->sortable(),
            UserStackedColumn::make('teamMembers')
                ->label('Team')
                ->ring(2),
        ]);
    }

    public static function infolist(Infolist $infolist): Infolist
    {
        return $infolist->schema([
            TextEntry::make('name'),
            UserEntry::make('owner')->label('Project Owner'),
            UserStackedEntry::make('teamMembers')
                ->label('Team Members'),
        ]);
    }
}
```

---

Requirements
------------

[](#requirements)

- PHP 8.2 or higher
- Laravel 10.x or 11.x
- Filament 4.x or 5.x

---

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

---

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

---

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

---

Credits
-------

[](#credits)

- [zvizvi](https://github.com/zvizvi)
- [All Contributors](../../contributors)

---

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance92

Actively maintained with recent releases

Popularity38

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 74.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~41 days

Total

7

Last Release

34d ago

PHP version history (2 changes)0.0.1PHP ^8.1

0.0.2PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4354421?v=4)[zvizvi](/maintainers/zvizvi)[@zvizvi](https://github.com/zvizvi)

---

Top Contributors

[![zvizvi](https://avatars.githubusercontent.com/u/4354421?v=4)](https://github.com/zvizvi "zvizvi (35 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (8 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (2 commits)")[![lmalma](https://avatars.githubusercontent.com/u/13244167?v=4)](https://github.com/lmalma "lmalma (2 commits)")

---

Tags

filamentfilament-pluginfilamentphpfilamentphp-pluginlaravelzvizviuser-fields

###  Code Quality

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/zvizvi-user-fields/health.svg)

```
[![Health](https://phpackages.com/badges/zvizvi-user-fields/health.svg)](https://phpackages.com/packages/zvizvi-user-fields)
```

###  Alternatives

[backstage/mails

View logged mails and events in a beautiful Filament UI.

16429.7k](/packages/backstage-mails)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3915.5k](/packages/rawilk-profile-filament-plugin)[stephenjude/filament-feature-flags

Filament implementation of feature flags and segmentation with Laravel Pennant.

123204.9k1](/packages/stephenjude-filament-feature-flags)[marcelweidum/filament-expiration-notice

Customize the livewire expiration notice

94160.6k6](/packages/marcelweidum-filament-expiration-notice)[stephenjude/filament-two-factor-authentication

Filament Two Factor Authentication: Google 2FA + Passkey Authentication

85240.3k9](/packages/stephenjude-filament-two-factor-authentication)[marcelweidum/filament-passkeys

Use passkeys in your filamentphp app

6758.2k2](/packages/marcelweidum-filament-passkeys)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
