wezlo/filament-grid-list
Swap Filament resource tables for responsive grid/card lists without rewriting your resources. Define cards via sections, closures, or Blade views while keeping search, filters, sorting, pagination, bulk actions, and record actions working out of the box.
Pros:
HasGridList trait replaces the default table view while preserving all core functionality.gridColumns) adapts to breakpoints (default, sm, md, etc.), aligning with modern UX expectations.content-visibility: auto and lazy-loaded images to mitigate rendering overhead, critical for large datasets.Cons:
@source in theme.css).ListRecords page via a trait, avoiding invasive changes to the resource or panel.table() method remains unchanged; grid configuration is additive. Existing filters, search, and actions migrate automatically.cardView() for complex UIs.gridColumns) reduce boilerplate across resources.'all' to avoid DOM overload, but large datasets may still strain memory if not paginated properly.@source in theme.css could break Tailwind utilities (requires manual setup).filamentTable Alpine component) may complicate future migrations.describeUsing) could obscure debugging if logic grows complex.content-visibility behavior.fi-grid-list-*)?fi-grid-list-*) but relies on Tailwind for breakpoints.filamentTable component for interactivity (e.g., bulk selection). No additional JS required.{{ $record->name }}).Assessment Phase:
table() complexity (e.g., custom columns, filters).Implementation Steps:
composer require wezlo/filament-grid-list
php artisan vendor:publish --tag=filament-grid-list-config
theme.css with @source directive.FilamentGridListPlugin in PanelProvider for global defaults (e.g., gridColumns).HasGridList trait to ListRecords pages and implement gridList().
header(), content()).recordsPerPage.content-visibility behavior.Phased Rollout:
gridColumns for all panels).dark variant.table() with non-standard logic (e.g., custom Livewire hooks), verify compatibility.content-visibility) and Tailwind v4.table() by removing the HasGridList trait.header(), footer()) minimize repetitive code.describeUsing) can become hard to maintain if overused.@source directive must be maintained if the package’s views change.How can I help you explore Laravel packages today?