awcodes/filament-badgeable-column
Filament Badgeable Column lets you show additional context as badges alongside table column values. Add prefix or suffix badges with dynamic labels and colors, making statuses and metadata easier to scan in Filament tables.
TextColumn — roughly a half-day of vendor-package integration versus an estimated 1–3 days of custom Blade views, styling, theme wiring, and maintenance across Filament upgrades. Default to buy (MIT, zero cost) unless the badge semantics require interaction (click-through, filtering, inline edit), which the package does not provide.Active + Hot + topic badges on a products list) that can ship inside a sprint without schema changes, migrations, or API work.BelongsToMany relation into colored badges) support A/B or iterative UX experiments on scanability — cheap to toggle, cheap to revert.Adopt when all of the following hold:
@source line in the theme file — a real but modest prerequisite, and a hidden cost if the team has never built a custom theme.Look elsewhere (or build in-house) when:
TextColumn with badge(), IconColumn, or a custom column/view is the better fit and avoids a wrapper dependency.TextColumn::getPrefix()/getSuffix() signature changes caused fatal errors. If the org cannot absorb occasional pin/upgrade churn on a small package, prefer native columns.To executives (30 seconds): Our admin tool already shows lists of records, but each row hides context our teams need — status, tags, warnings. Today people click into records to find it. This free, MIT-licensed package lets us render that context as small colored badges directly in the list, using the framework we already have. Cost is effectively a day of engineering, no licensing, no new infrastructure, and it's removable in one line if we don't like it. Expected outcome: fewer clicks per decision in our highest-traffic back-office screens.
To engineering: awcodes/filament-badgeable-column extends Filament's TextColumn with prefixBadges() / suffixBadges(), accepting Badge objects or closures returning them, with per-record label(), color(), visible(). Supports pills, custom separators, font family/weight/size, and works in infolists. Integration is composer require, a custom theme, and one @source line in the theme CSS — no migrations, no service provider wiring, no API surface changes.
Known risks to state up front: (1) Version coupling — upstream Filament changed getPrefix()/getSuffix() signatures in 4.15/5.10 and broke the package until a patch shipped; expect to occasionally pin or bump. (2) Maintenance concentration — one maintainer, no dependents, cosmetic scope; treat as a leaf dependency, not a platform bet. (3) Capability ceiling — badges are display-only; filtering, sorting, or clicking on them is out of scope and would require native Filament columns.
Recommendation: Approve a time-boxed pilot on one high-traffic table (e.g., products or orders), with a one-sprint evaluation of scanability and support-ticket impact, and an explicit fallback to native TextColumn::badge() if theming or version churn proves costly.
How can I help you explore Laravel packages today?