diff --git a/src/lib/components/publications/Publication.svelte b/src/lib/components/publications/Publication.svelte index 171d625..fd2f105 100644 --- a/src/lib/components/publications/Publication.svelte +++ b/src/lib/components/publications/Publication.svelte @@ -119,6 +119,7 @@ let hasInitialized = $state(false); let highlightModeActive = $state(false); let publicationDeleted = $state(false); + let sidebarTop = $state(162); // Default to 162px (100px navbar + 62px ArticleNav) let observer: IntersectionObserver; @@ -420,6 +421,20 @@ }); onMount(() => { + // Measure the actual navbar and ArticleNav heights to position sidebars correctly + const navbar = document.getElementById("navi"); + const articleNav = document.querySelector("nav.navbar-leather"); + + if (navbar && articleNav) { + const navbarRect = navbar.getBoundingClientRect(); + const articleNavRect = articleNav.getBoundingClientRect(); + sidebarTop = articleNavRect.bottom; + } else if (navbar) { + // Fallback: if ArticleNav not found, use navbar height + estimated ArticleNav height + const navbarRect = navbar.getBoundingClientRect(); + sidebarTop = navbarRect.bottom + 62; // Estimated ArticleNav height + } + // Set current columns depending on the publication type const isBlog = publicationType === "blog"; publicationColumnVisibility.update((v) => ({ @@ -725,7 +740,8 @@ > {#if $publicationColumnVisibility.discussion}
diff --git a/src/lib/components/util/ArticleNav.svelte b/src/lib/components/util/ArticleNav.svelte index 2d8183e..34d395d 100644 --- a/src/lib/components/util/ArticleNav.svelte +++ b/src/lib/components/util/ArticleNav.svelte @@ -36,6 +36,7 @@ let lastScrollY = $state(0); let isVisible = $state(true); + let navbarTop = $state(100); // Default to 100px // Function to toggle column visibility function toggleColumn(column: "toc" | "blog" | "inner" | "discussion") { @@ -149,6 +150,13 @@ let unsubscribe: () => void; onMount(() => { + // Measure the actual navbar height to position ArticleNav correctly + const navbar = document.getElementById("navi"); + if (navbar) { + const rect = navbar.getBoundingClientRect(); + navbarTop = rect.bottom; + } + window.addEventListener("scroll", handleScroll); unsubscribe = publicationColumnVisibility.subscribe(() => { isVisible = true; // show navbar when store changes @@ -162,9 +170,10 @@