Files
kandev/apps/web/components/confirmation/AGENTS.md
T
2026-09-12 14:58:49 +02:00

1.4 KiB

Confirmation surfaces

Phone confirmation adapters use mobile-action-confirmation.tsx with an explicit localized title/target and a stable owner outside transient menus. Keep the responsive adapter mounted with its non-phone fallback so boundary changes cancel pending decisions.

Opt existing drawers into MobileConfirmationHost/MobileConfirmationHostBody (pickers: confirmationHost); use surface="drawer" and spread its contentProps on the owning surface. Active drawer steps fit the confirmation content; the hidden origin keeps its measured dimensions outside layout so Cancel can restore its normal size and scroll. Do not override the host's active sizing with a fixed-height style. Centered dialog hosts omit surface. Drawer roots use overflow: clip so focus cannot scroll the outer shell; only the inner list or confirmation body owns scrolling. Initial Cancel focus uses preventScroll to keep the title and actions in view. A hosted step keeps the origin mounted/inert and opens no second modal. Form dialog hosts also disable enterConfirms while the step is active.

Domain callbacks still own transport and error behavior. Ordinary actions close before dispatch. Retryable form owners explicitly use completionPolicy="await-with-retry" and reject on failure; this keeps their confirmation busy during the request and available for retry afterward.