anish/resizable-modal
A Laravel package for adding resizable modal dialogs to Blade views. Use simple components to create flexible, customizable pop-up windows for dashboards, forms, and admin interfaces, with styling and behavior you can adapt to your app.
Architecture fit. The package is a thin Filament panel plugin whose entire job is to attach drag-to-resize affordances to action modals. It sits at the presentation layer: it registers assets through Filament's asset pipeline and hooks the modal's client-side lifecycle (Alpine/Livewire modal DOM) rather than touching Eloquent, policies, routing, or persistence. That is the right shape for this class of enhancement — zero schema footprint, no service provider boot logic that can collide with the host app, and a removal path that is effectively one line in the PanelProvider. For a TPM, the relevant architectural question is not "does it fit Laravel" but "does it depend on Filament internals that are not part of the public contract," and the answer here is almost certainly yes: modal markup, CSS classes, and resize/width variables are not a stable plugin API.
Integration feasibility. Low effort, low ceremony. composer require, register the plugin on one or more panels, optionally publish assets if the panel uses a custom Vite theme. No config file, no migrations, no queue or scheduled work. Realistic estimate: half a day for a developer already fluent in Filament, including a staging verification pass.
Technical risk. Concentrated in four places:
script-src.Key questions for the maintainer or spike.
Modal max-width utilities, and stacked/nested modals?Stack fit. Assumes Laravel 11/12, Livewire 3, Tailwind-based Filament panels, and Filament v4 or v5. It fits cleanly in a stock panel. It fits less cleanly where the team has a bespoke Vite theme with custom modal styling, since the package's handles and CSS variables must not fight the design system.
Migration path. There is no data migration and no backfill — the entire change is additive and reversible. The practical path is: install into one low-blast-radius panel (internal admin, not customer-facing), observe for a sprint, then promote. Rollback is deleting the plugin registration and running filament:assets; no orphaned state to clean up.
Compatibility. Pin the Composer constraint tightly (minor-level) and let the lockfile hold it, so a Filament upgrade cannot silently drag in an incompatible modal patch. Add the plugin to the upgrade checklist for any Filament major or minor that touches modals. Confirm CSP headers on staging before promoting; if the panel enforces a nonce-based policy, verify the package's Alpine bindings are nonce-aware or document an exception.
Sequencing.
Contingency. Because the surface area is small, the fallback is not a reimplementation project — it is a ~100-line fork pinned in-house, or removal. Budget a half-day of engineering to fork if the maintainer goes quiet; do not budget a replacement product.
Maintenance. Low ongoing cost, but non-zero and lumpy: the package is quiet until Filament changes its modal internals, at which point it breaks visibly and at once. The dominant maintenance risk is abandonment, not code churn. Assign a named owner and record a decision rule ("if no release within N months of a Filament major, fork or remove").
Support. Expect UX tickets rather than defect tickets: "my modal opens too small," "my resize didn't stick," "the handles are in the way on my laptop." These are low-severity but they generate noise because the feature is visible and opinionated. If sizes are user-persisted, you inherit a small state-support burden; if they are per-session, you will explain that repeatedly.
Scaling. Negligible. Static assets, no server round-trips, no database, no per-request cost. Asset delivery follows the panel's existing caching and CDN story. There is no scaling dimension on which this package becomes a bottleneck.
Failure modes, ranked by likelihood.
Ramp-up. Under a day for a Filament-fluent developer to install, verify, and document; a few hours for a reviewer to satisfy themselves on accessibility. The cost is not learning the package — it is the recurring obligation to re-verify after every Filament release. Verdict: worth adopting as a scoped, easily reversible UX polish for internal panels; hold it back from customer-facing surfaces until the accessibility and persistence questions are answered and at least one Filament upgrade cycle has been survived.
How can I help you explore Laravel packages today?