From 310679a76c43b429dbe8b7127dc7e6bb3ec50569 Mon Sep 17 00:00:00 2001
From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
Date: Wed, 19 Aug 2026 02:16:00 +0530
Subject: [PATCH 01/18] fix(theme): prevent layout shifts when locking page
scroll
fixes #5386
---
.../components/VPLocalNavOutlineDropdown.vue | 7 +-
.../components/VPLocalSearchBox.vue | 6 +-
.../theme-default/components/VPNavScreen.vue | 6 +-
.../theme-default/components/VPSidebar.vue | 5 +-
.../theme-default/composables/scroll-lock.ts | 141 ++++++++++++++++++
5 files changed, 153 insertions(+), 12 deletions(-)
create mode 100644 src/client/theme-default/composables/scroll-lock.ts
diff --git a/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue b/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue
index 307a22bd..8a5eaa21 100644
--- a/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue
+++ b/src/client/theme-default/components/VPLocalNavOutlineDropdown.vue
@@ -1,10 +1,11 @@
@@ -45,6 +44,7 @@ const isLocked = useScrollLock(inBrowser ? document.body : null)
width: 100%;
background-color: var(--vp-nav-screen-bg-color);
overflow-y: auto;
+ overscroll-behavior: contain;
transition: background-color 0.25s;
pointer-events: auto;
}
diff --git a/src/client/theme-default/components/VPSidebar.vue b/src/client/theme-default/components/VPSidebar.vue
index 9dbb802e..b3105f8c 100644
--- a/src/client/theme-default/components/VPSidebar.vue
+++ b/src/client/theme-default/components/VPSidebar.vue
@@ -1,8 +1,7 @@