yepsua/filament-range-field
A Filament form field for range inputs and sliders, letting Laravel admin panels capture single values or min/max ranges with a simple, native-feeling component that integrates directly into Filament forms.
Architecture fit
yepsua/filament-range-field is a single-purpose UI extension for Filament: a form field that renders a range/slider input and binds to a Livewire model property. Architecturally it slots into the standard Filament extension pattern — a Field subclass plus a Blade view, registered through the panel's form component namespace or auto-discovery. There is no service layer, no database footprint, no queue or event surface. It is a presentation-layer dependency only, which keeps blast radius small: if it fails, one form component fails, not the application.
The fit is good if the target application is already a Filament admin/panel app on the matching major version. It is a poor fit for headless APIs, Inertia/Vue front ends, or Livewire-only apps without Filament — the dependency would pull in Filament scaffolding for a single widget.
Integration feasibility
High in the happy path: composer require, optionally publish views, add RangeField::make('weight') to a schema. An engineer familiar with Filament custom fields should complete a spike in half a day.
The gating question remains Filament major version. v0.3.4 is a patch on the existing 0.3.x line and carries no signal of a v4-compatible branch, so the package should still be assumed to constrain to ^3.0. Filament's form component API is internal and has historically broken across majors (schema/component namespaces, state hydration contract, asset registration), so "works on v3" does not imply forward compatibility. The patch release does not change this.
Technical risk
min/max/step defaults, nullable handling, and whether dehydrateStateUsing runs.min/max/step must be mirrored in Laravel validation rules or the field becomes a validation bypass.Key questions
composer.json constraints, not the README, and confirm the constraint is unchanged in v0.3.4?min/max/step enforced anywhere except the browser?Stack fit
Requires Laravel 10/11, PHP 8.1+, Livewire 3, Filament 3.x — re-verify against composer.json at v0.3.4 rather than assuming the patch left constraints alone. Confirm against the application's actual composer.lock before anything else; a mismatch here ends the evaluation.
Migration path
app/Filament/Forms/Components under our own namespace, or build the field internally — the implementation is a small Blade partial plus a Field subclass, roughly 1–2 developer days with tests. The v0.3.4 release does not change this recommendation.Compatibility
Pin to the exact tag v0.3.4 rather than a floating constraint, and record the resolved version in the dependency decision log. Read the v0.3.3→v0.3.4 diff before bumping — release notes are a single line and give no scope information. Verify asset publishing behaviour — Filament v3 auto-injects component assets via FilamentAsset, so a missing registration shows up as an unstyled native slider rather than an error, which is easy to miss in review.
Sequencing
App\Filament\Forms\RangeInput that extends or replaces the vendor class, so swapping implementations touches one file.min/max/step rule set alongside the field so server-side and client-side constraints cannot drift.Maintenance The dominant cost is still the future fork, not today's install. Budget ~20–40 engineering hours per Filament major to re-home the component, plus a few hours per year of dependency hygiene. Because the codebase is small and MIT-licensed, forking is cheap and legally clean — that materially reduces the risk. The v0.3.4 release is a modest positive: it confirms the upstream is not fully dead, so the odds of being stranded mid-cycle on a broken Filament patch release are slightly lower. The correct mental model is unchanged: "vendored snippet with a Composer convenience wrapper," not "supported library."
Support GitHub issues only; no SLA, no security contact, no changelog discipline. The v0.3.4 notes — one line, "Issues fixed: Issue #1" — are themselves evidence of that. Assume near-zero upstream responsiveness and staff accordingly; the existence of a fix confirms triage happens eventually, not that it happens on our timeline.
Scaling Negligible. The field is client-side markup with Alpine-driven interaction; no server load, no query pattern, no cache implications. Rendering cost is a Blade partial per field instance. The only scaling-adjacent concern is bundle weight if many Filament plugins each publish assets — audit the panel's asset manifest after install.
Failure modes
0 or truncation on some drivers. Mitigate with explicit casts and a round-trip test.Ramp-up Low. Any Laravel developer with Filament experience can contribute to the field within a day; the whole component is a few hundred lines. The organisational ramp-up is the real cost — establishing that this is our code now, with an owner, a fork point, and a test, rather than a third-party dependency we hope stays healthy. The v0.3.4 release is a reason to keep the dependency one cycle longer; it is not a reason to change that ownership posture.
How can I help you explore Laravel packages today?