import { type ReactNode } from "react"; /** * Below the mobile breakpoint the newest pending approval * presents as a bottom sheet instead of an in-list card: grabber, scrim, * safe-area + keyboard-inset padding, slide-up entrance (fade under reduced * motion). * * A consent must be decided explicitly: the scrim does NOT dismiss and Esc * (inside the sheet) is a no-op — the only exits are the card's own * Approve/Deny (the caller unmounts the sheet when the approval resolves). * NON-modal on purpose (voice-approval-overlap regression): only the sheet * itself takes pointer events, so at short viewports the surfaces it slides * over — the voice stage's controls — stay usable while the consent waits. * * Portals to
with its own theme boundary (the MorphToast pattern) so * no host stacking context can trap it. The child is the regular *