You are currently viewing the documentation for Filament 4.x, which is a previous version of Filament.Looking for the current stable version? Visit the 5.x documentation.
Introduction
Icon columns render an icon representing the state of the column:
use Filament\Tables\Columns\IconColumn;
use Filament\Support\Icons\Heroicon;
IconColumn::make('status')
->icon(fn (string $state): Heroicon => match ($state) {
'draft' => Heroicon::OutlinedPencil,
'reviewing' => Heroicon::OutlinedClock,
'published' => Heroicon::OutlinedCheckCircle,
})
Customizing the color
You may change the color of the icon, using the color() method:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('status')
->color('success')
By passing a function to color(), you can customize the color based on the state of the column:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('status')
->color(fn (string $state): string => match ($state) {
'draft' => 'info',
'reviewing' => 'warning',
'published' => 'success',
default => 'gray',
})
Customizing the size
The default icon size is IconSize::Large, but you may customize the size to be either IconSize::ExtraSmall, IconSize::Small, IconSize::Medium, IconSize::ExtraLarge or IconSize::TwoExtraLarge:
use Filament\Tables\Columns\IconColumn;
use Filament\Support\Enums\IconSize;
IconColumn::make('status')
->size(IconSize::Medium)
Handling booleans
Icon columns can display a check or “X” icon based on the state of the column, either true or false, using the boolean() method:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('is_featured')
->boolean()
If this attribute in the model class is already cast as a bool or boolean, Filament is able to detect this, and you do not need to use boolean() manually.
Optionally, you may pass a boolean value to control if the icon should be boolean or not:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('is_featured')
->boolean(FeatureFlag::active())
Customizing the boolean icons
You may customize the icon representing each state:
use Filament\Tables\Columns\IconColumn;
use Filament\Support\Icons\Heroicon;
IconColumn::make('is_featured')
->boolean()
->trueIcon(Heroicon::OutlinedCheckBadge)
->falseIcon(Heroicon::OutlinedXMark)
Customizing the boolean colors
You may customize the icon color representing each state:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('is_featured')
->boolean()
->trueColor('info')
->falseColor('warning')
Wrapping multiple icons
When displaying multiple icons, they can be set to wrap if they can’t fit on one line, using wrap():
use Filament\Tables\Columns\IconColumn;
IconColumn::make('icon')
->wrap()
The “width” for wrapping is affected by the column label, so you may need to use a shorter or hidden label to wrap more tightly.