diff --git a/web-ui/app/_components/store/InstallButton.tsx b/web-ui/app/_components/store/InstallButton.tsx index d4f01f03..c34a179e 100644 --- a/web-ui/app/_components/store/InstallButton.tsx +++ b/web-ui/app/_components/store/InstallButton.tsx @@ -1,6 +1,7 @@ 'use client'; import { useEffect, useState } from 'react'; +import { createPortal } from 'react-dom'; import { useRouter } from 'next/navigation'; import { useLocale } from 'next-intl'; import { @@ -585,7 +586,11 @@ function InstallDrawer({ ); const submitting = phase.kind === 'submitting'; - return ( + // Portal to
so the drawer escapes the store sidebar's + // `position: sticky` stacking context (which always creates one, even at + // z-index auto). Without this, the drawer's z-50 is trapped inside that + // context and the global header (z-40) paints on top of it. + return createPortal(