- How do I install devletes/filament-timeline-view in a Laravel app?
- Run composer require devletes/filament-timeline-view. The service provider auto-loads, registers both Table macros, and registers the CSS asset with Filament's asset system, so no plugin registration is needed. After install, publish the asset once with php artisan filament:assets. From there you only touch the table() method of your Livewire table or TableWidget.
- Which PHP and Filament versions does this timeline package support?
- It requires PHP 8.2 or higher and Filament Tables 5.0 or higher. Filament 3 and Filament 4 are not supported, and no backport path is documented, so teams on older majors cannot adopt it today. Laravel version is not the binding constraint here; the Filament Tables major is.
- How do I turn an existing Filament table into a timeline?
- Keep your normal table configuration and swap the columns() call for TimelineEntry::make() with its title, content, image, and author setters. Then finish the fluent chain with either ->asTimeline() or ->asDoubleSidedTimeline(). Query, filters, search, grouping, record actions, and pagination keep working because the macros only change rendering.
- What is the difference between asTimeline() and asDoubleSidedTimeline()?
- asTimeline() renders a single vertical line with cards on the right and dots on the left. asDoubleSidedTimeline() places the line in the centre and alternates cards left and right, collapsing to the single-column layout below 768px. Both use the same TimelineEntry cards and the same collapsible, date-grouped day sections.
- Can I use it without installing the full filament/filament package?
- Yes. The only dependency is filament/tables, so it works inside standalone TableWidget dashboards that do not ship an entire Filament panel. That narrow dependency surface also reduces upgrade fallout, but you still need a Filament table context to mount the timeline.
- How do I set card titles, avatars, timestamps, and content?
- TimelineEntry exposes fluent setters for title, content, image, and author, each accepting a data_get() key or a closure. The grouping timestamp column drives both the day buckets and the ->time() label. Eager-load any relation you reference, such as author, so the feed does not N+1. Date grouping and time formatting inherit app and database timezone settings, so normalize before displaying feeds from distributed users. The README does not document whether content() output is escaped, so verify before rendering user-generated HTML.
- How does the Load-more button handle pagination?
- The macro replaces Filament's paginator with a cumulative button that increments tableRecordsPerPage on each click (5, then 10, then 15, and so on). Because the page grows without bound, the Livewire payload and DOM keep expanding as users click. Only the first integer passed to paginated([...]) is honored, so a multi-option pagination config will silently misconfigure the button.
- Do Filament record actions, recordUrl, and policies still work in the timeline?
- Yes. The timeline rides Filament's standard table lifecycle, so authorization, policies, action modals, notifications, and record URLs behave exactly as they do on a stock list page. Setting recordUrl() or recordAction() adds a native View link in the card's top-right, separate from the kebab menu. One caveat: multiple action groups or a flat array of actions are collapsed into a single new ActionGroup, discarding group-level configuration.
- How do I customize the timeline styling and dark mode?
- Styling is driven by documented CSS custom properties, and dark mode plus responsive collapse ship out of the box. Publish the stylesheet with php artisan filament:assets after install and add that command to your deploy pipeline. Re-run it on every package version bump, because a missed publish degrades to an unstyled but functional timeline.
- Is this package production-ready, and what are the maintenance risks?
- The package is a thin presentation layer, but its ecosystem signals are immature: roughly 23 GitHub stars, zero dependents, a single maintainer, and no visible test suite, CI matrix, or changelog. It pins to Filament Tables v5, a very recent major, so expect breakage in its Blade override as Filament minors land. It is also a global macro on Filament\Tables\Table, worth flagging if you already macro that shared class. Keyboard navigation and screen-reader behavior for the alternating layout are undocumented, so verify accessibility yourself.