martin6363/filament-sidebar-resize
A lightweight Filament plugin that makes the admin sidebar resizable. Drag to adjust width, with configurable limits for a smoother, more flexible panel layout and better use of screen space.
Architecture fit: The package is a presentation-layer Filament panel plugin — a Plugin implementation registered in a panel provider, plus published assets and a config stub. There is no migration, no model, no route, no middleware, and no server-side persistence. That means it sits orthogonal to the application's data model, tenancy model, queue topology, and auth design, which is exactly where a TPM wants a UI nicety to sit: small surface, cheap to remove. The coupling it does introduce is to Filament's own sidebar markup and CSS classes, which are an internal, non-contractual surface. Filament minor and major releases have historically reworked panel chrome, so the integration is architecturally clean but structurally fragile at the seam that matters.
Integration feasibility: High and time-boxable. Estimated engineering effort for a competent Laravel/Filament developer is one half-day to one day: composer require, register the plugin on the target panel, publish config/assets, then visual QA. No ops coordination, no data backfill, no release-window dependency. The gating factor is not effort, it is version alignment — confirm the package targets the Filament major you actually run before spending any of that day.
Technical risk (ranked by what would actually hurt):
localStorage — which is per browser and per device, not per user identity. Users who switch machines or use private windows will lose their width. Nothing is broken, but expectations set by the README will not be met, and that gap lands on support.Key questions to resolve before committing:
^5.0) or permissive? The description says v5; earlier notes referenced v3/v4 — reconcile against our pinned version.localStorage the only persistence, and is the key namespaced per panel/tenant, or global? Width leaking between panels or tenants is a plausible low-severity bug.TPM read: Approve a time-boxed spike on one internal, low-traffic panel. Do not adopt into a customer-facing or multi-tenant admin surface without a fork-and-vendor contingency written down first. The code volume is small enough that owning it is cheaper than tracking an unmaintained upstream — the decision to make now is not "yes/no" but "yes, with an exit we've already priced."
Stack fit: Laravel 10/11/12 on PHP 8.1–8.3 with Filament as the admin layer. Zero database footprint, so it is compatible in principle with our persistence, queueing, and tenancy design, and it will not complicate a future Filament multi-panel rollout — provided panel and tenant scoping of the stored width is tested rather than assumed. The one place it touches our own conventions is theming: if we maintain custom CSS overrides on fi-sidebar, this package and our theme are now in the same blast radius.
Migration path: There isn't one, which is the whole argument. Adoption is additive — composer dependency, one plugin registration line, asset publish, visual QA — and rollback is the reverse, measurable in minutes. If we later want the capability without the dependency, the fallback is to vendor the ~small CSS/JS into our own panel theme: roughly one day, bounded and known. That bounded exit cost is what makes the experiment rational.
Compatibility: Pin an exact version (not ^1.0) and treat every Filament upgrade as a deliberate re-validation gate rather than an incidental one. Attach a named owner and a short manual checklist to the Filament upgrade runbook covering: sidebar scrollbar reachable on short viewports, grip drag works, collapsed/mobile drawer behaviour, dark mode, RTL if we support it, tenant/panel switching, and a fresh-browser default state. Because the failure mode is purely visual, automated coverage is not realistic — this is a runbook item, not a CI item.
Sequencing:
localStorage keys and inline styles that could collide with our theme, check the licence.What we deliberately do not do: do not enable it across every panel at once; do not let it become a transitive dependency of a shared base panel without the same review; do not assume the version constraint protects against DOM-level breakage; do not let it reach a customer-facing panel before the pilot produces evidence.
Maintenance: Ongoing cost is near zero while it works — no config surface, no migrations, no scheduled jobs, no storage growth. The real cost is episodic: each Filament upgrade requires a manual re-validation of a UI affordance, budget ~1 hour plus a named owner. Assign ownership to the team that owns the admin panel and its theme, not to platform or infrastructure, because any fix will be CSS/JS-level and will need someone who knows the panel's front-end conventions.
Support: No vendor, no SLA, no paid tier, no security-response commitment. Support is GitHub issues on a seven-star repository: assume best-effort, plan for none. Internally, the support path is a single engineer who has read the source and can patch or vendor it. Document who that is and keep the source checked out somewhere reproducible — otherwise the first regression becomes a scramble.
Scaling: Technically negligible — the work is entirely client-side rendering and pointer event handling, adding no requests and no measurable panel load cost. The scaling question is organisational: one shared sidebar behaviour across every admin user means a single regression is universally visible at once, and localStorage persistence does not follow users across devices or browsers. Set that expectation with stakeholders now so it does not surface later as a bug report.
Failure modes and mitigations:
Ramp-up: Very low for engineers — the entire package is readable in under an hour including the config stub. The ramp-up cost is documentation, not comprehension: we need a short internal note recording what the plugin does, which panels it is registered on, the pinned version and fork point, the known persistence limitation, and the re-validation checklist. That half-page is the difference between a cheap dependency and a future archaeology exercise, and it is the TPM's deliverable from this evaluation, not engineering's.
How can I help you explore Laravel packages today?