From 39f9cba8c7ac28308f03acaafd62aeaaa1ade261 Mon Sep 17 00:00:00 2001 From: TerryM Date: Wed, 3 Jun 2026 21:59:31 +0800 Subject: [PATCH] feat(layout): full-screen mobile menu drawer matching Figma 4164-5733 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebuild the mobile hamburger menu as a full-screen drawer that matches the Figma design 1:1 — five nav items (全部资料 / 资料分类 / 官方推荐 / 最新更新 / 热门资料), transparent item backgrounds over the ark-bg drawer, hairline dividers at #2B2B37, gold text on the active route, and the existing WalletButton compact pill as the bottom CTA. Drop the chevron-right indicators per the rendered Figma frame and remove the old 收藏 row since it's not in the design. Also move the drawer JSX out of
and render it as a sibling at the layout root. The sticky+z-index header was creating a stacking context that trapped the drawer's z-50 fixed below the bottom nav at z-40 global, so the drawer never reached the foreground. Add the same iOS-safe body scroll lock used for the search overlay so the underlying page doesn't drift while the drawer is open. --- ...6-06-03-mobile-menu-drawer-stacking-fix.md | 29 ++++ src/layouts/PublicLayout.tsx | 155 ++++++++++-------- 2 files changed, 113 insertions(+), 71 deletions(-) create mode 100644 .unipi/docs/fix/2026-06-03-mobile-menu-drawer-stacking-fix.md diff --git a/.unipi/docs/fix/2026-06-03-mobile-menu-drawer-stacking-fix.md b/.unipi/docs/fix/2026-06-03-mobile-menu-drawer-stacking-fix.md new file mode 100644 index 0000000..1d852ec --- /dev/null +++ b/.unipi/docs/fix/2026-06-03-mobile-menu-drawer-stacking-fix.md @@ -0,0 +1,29 @@ +--- +title: "Mobile menu drawer invisible — Quick Fix" +type: quick-fix +date: 2026-06-03 +--- + +# Mobile menu drawer invisible — Quick Fix + +## Bug +After redesigning the mobile menu to the full-screen Figma drawer (`4164-5336` → `ARK V2 - 導航菜單`), tapping the hamburger toggled the icon to `X` but the drawer overlay never appeared on screen. Page content stayed fully visible and the bottom nav stayed on top. + +## Root Cause +The drawer was rendered as a child of `
`. A `position: sticky` element with a `z-index` creates its own stacking context, which traps the drawer's `position: fixed; z-50` inside that context. Globally, the drawer ends up bound to the header's `z-40` layer, while the unrelated bottom navigation (`