From a0aadc74e1648b41710fe699c30c3c49d27e4384 Mon Sep 17 00:00:00 2001 From: Sophie Neumann Date: Thu, 2 Jul 2026 14:51:57 +0200 Subject: [PATCH] fix(store): portal install drawer above global header --- web-ui/app/_components/store/InstallButton.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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(
)} -
+ , + document.body, ); }