{{- /* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Commercial */ -}} {{- /* SPDX-FileCopyrightText: 2025-2026 Christian Galo */ -}} {{/* Application shell: the confirm-action modal, on both surfaces (spec page-anatomy "Destructive actions confirm through the shared modal on every surface"; docs/design-system.md "Confirm modal"; spec form-library; design D4, D12; task 5.6). The dialog chrome (title, close button) is the only hand-written markup left; the form itself -- the body's message region, the hidden fields a trigger adds, and the commit row -- renders through the shared form part as the shell.confirm declaration (internal/server/shell_forms.go), Kind Confirm, Family Stacked. static/confirm-action-modal.js still drives every trigger exactly as before: on open it rewrites the form's hx-post/hx-delete, hx-target and hx-swap from the trigger's data-action-* attributes, writes the trigger's body text into the message region (found by its class, .app-form-message, since the part gives it a stable id but the script does not need to know it), appends the trigger's hidden fields as the form's own children, and reassigns the commit button's class (found by its type, the form's one button[type=submit]) to the trigger's data-action-style. Only the JS's *selectors* changed, to find the part's own elements instead of a hand-written id; its behaviour did not. Rendered as a sibling of
so it survives boosted navigations. Parsed into every set by web.ParseUIPartials. */}}