> ## Documentation Index
> Fetch the complete documentation index at: https://flex-fields.bjanczak.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Examples target Filament 5. Verify optional dependencies before configuring integrations.
> Upload transfer completion, permanent storage and record acceptance are separate milestones. Native and Spatie image conversions retain the original.

# Table columns and infolist entries

> Create independent display surfaces that share formatting and styles.

Use the shared display trait to emit an independent consumer for every table cell or infolist entry:

> [!TIP]
>
> **Watch this in the workshop:** [36:12 — render one note in a real Filament table and infolist](https://www.youtube.com/watch?v=m4V_R7YxTP4\&t=2172s).

```php theme={"theme":{"light":"github-light","dark":"github-dark"}}
use Bjanczak\FilamentFlexFields\Filament\Concerns\EmitsFlexDisplayAssets;
use Filament\Tables\Columns\Column;

class RatingColumn extends Column
{
    use EmitsFlexDisplayAssets;

    protected string $view = 'acme-rating::column';

    protected function flexDisplayComponentId(): string
    {
        return 'acme-rating-column';
    }
}
```

```php theme={"theme":{"light":"github-light","dark":"github-dark"}}
use Bjanczak\FilamentFlexFields\Filament\Concerns\EmitsFlexDisplayAssets;
use Filament\Infolists\Components\Entry;

class RatingEntry extends Entry
{
    use EmitsFlexDisplayAssets;

    protected string $view = 'acme-rating::entry';

    protected function flexDisplayComponentId(): string
    {
        return 'acme-rating-entry';
    }
}
```

Use `$getState()` in your views and escape displayed text. Wrap an entry with `$getEntryWrapperView()` to keep its label and infolist layout. A shared PHP formatter can produce the same presentation data for both views.

When showing the same attribute several times in one infolist, assign each entry a different `key()`. The trait distinguishes records and surfaces automatically. `criticalStyles()` is an optional choice for displays that must have their styles at first paint; leave it off for surfaces that should load only on activation.

## Continue reading

[Family reference](https://flex-fields.bjanczak.com/docs/extensions/family-reference.md) · [Shared asset ownership](https://flex-fields.bjanczak.com/docs/extensions/asset-ownership.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.