Transform a default Filament table into a polished, product-like UI using ViewColumn with custom Blade views and components.
This project demonstrates how to customize the visual design of a Filament table using ViewColumn and custom Blade components. The result transforms a standard admin table into a polished, product-like accounts table with custom industry pills, revenue chips, merged logo+name cells, column dividers, and header icons.
The key idea: Filament still handles resource routing, sorting, Eloquent integration, and table structure. Only the presentation layer is customized, and only where the default primitives don't match the target design.
The repository contains the complete Laravel + Filament project to demonstrate the functionality, including migrations/seeds for the demo data.
git clone.env.example file to .env and edit database credentials therecomposer installphp artisan key:generatephp artisan storage:linkphp artisan migrate:fresh --seed (it has some seeded data for your testing)/admin and log in with credentials [email protected] and password
The project has two Models:
The Account model includes a revenueGroup() helper that buckets revenue into human-readable ranges like $1M to $10M or $100B to $500B.
app/Models/Account.php
class Account extends Model{ use HasFactory; protected function casts(): array { return [ 'revenue' => 'decimal:2', 'last_interaction_at' => 'datetime', ]; } public function industries(): BelongsToMany { return $this->belongsToMany(Industry::class); } public function revenueGroup(): string { $revenue = (float) $this->revenue; return match (true) { $revenue >= 100_000_000_000 => '$100B to $500B', $revenue >= 50_000_000 => '$50M to $500M', $revenue >= 10_000_000 => '$10M to $50M', $revenue >= 1_000_000 => '$1M to $10M', default => 'Less than $1M', }; }}
app/Models/Industry.php
class Industry extends Model{ use HasFactory; public function accounts(): BelongsToMany { return $this->belongsToMany(Account::class); }}
The core of the customization is in the table class. Instead of using standard TextColumn or ImageColumn, every column uses ViewColumn with a custom Blade view. This is the key design decision: once the target...