markwalet/nova-modal-response
A Laravel Nova package that lets actions return modal responses. Show custom content, confirmations or messages in a modal without leaving the page—just return a ModalResponse from your action's handle method.
Size/Variant/Alignment enums. That indicates the maintainer's direction is content composition, not interactivity — so roadmap bets should lean toward documentation and diagnostics surfaces, not toward making this a workflow engine.{ title, size, closeButtonText, blocks: [...] } and withoutSyntaxHighlighting() was removed. Apps using only the ModalResponse PHP API usually just bump the dependency; anything constructing Action::modal('modal-response', [...]) directly needs scoped migration. Budget it as an explicitly-sized technical item with QA on every modal-returning action — not a background chore.Adopt when most of the following hold:
ModalResponse fluent API — the upgrade is likely a dependency bump plus visual QA.Defer or look elsewhere when:
Action::modal('modal-response', [...]) and cannot schedule migration work; v2's payload break is signalled only by a console.warn — no PHP exception, no failing test unless you assert the shape.markdown, html, or view blocks — these render unsanitized (Markdown preserves javascript: links and most raw HTML). Use text, list, or code for untrusted input, or confirm a sanitization layer first.Executives. This standardizes how our admin panel communicates results to internal teams — import reports, sync diagnostics, release notes, troubleshooting content — without a custom frontend build. The value is less bespoke code and faster delivery of small operational features. The cost is a contained upgrade: it is a major version, but the break is narrow and identifiable (hand-built modal payloads and one removed deprecated method), typically well under two engineering days plus QA. The dependency is small and single-maintainer, which is acceptable here because it is confined to admin UI and cheaply replaceable.
Engineering. This is a Nova action response that emits a JSON payload rendered by a bundled JS/Vue renderer. v2 replaces the single-body render path with an ordered stack of typed blocks built through a Block factory and ModalResponse::stack(), with Size/Variant/Alignment enums. The ModalResponse fluent API keeps working; the breaking change is the payload shape for direct Action::modal calls plus the removal of withoutSyntaxHighlighting(). Because the failure mode is a silently empty or partial modal rather than an exception, migration needs four concrete steps: grep for raw payload construction and the removed method, re-publish or rebuild front-end assets in the same release as the Composer bump, add a golden-payload assertion, and manually open every modal-returning action in light and dark mode — including one nested collapsible and one tab set — watching the console for legacy-key warnings. If Laravel Boost is in use, upgrade Boost to ≥1.3.0 before the package. Record v1.3.0 as the rollback target and treat code plus assets as one atomic unit. Internal convention: view blocks render repo-controlled Blade only; markdown comes from static strings, never request input.
Product. Prioritize use cases where the block model pays for itself immediately: post-action diagnostics with copyable code and JSON, changelog and release-note modals using headings, lists, and badges, documentation organized into tabs, and collapsible troubleshooting steps layered with runbook links. Compose these from markdown and Blade views rather than commissioning custom modal UI, and resist scope creep toward interactive forms — that is where this package stops and custom work begins. Schedule the v2 upgrade as a small, explicitly-scoped technical item with QA coverage on existing modal flows, and log the dependency's low adoption and single maintainer as a standing assumption in the risk register rather than a blocker.
How can I help you explore Laravel packages today?