diff --git a/components/blog/MDXComponents.tsx b/components/blog/MDXComponents.tsx
index 885ab549..11fcdd8f 100644
--- a/components/blog/MDXComponents.tsx
+++ b/components/blog/MDXComponents.tsx
@@ -69,16 +69,26 @@ export const mdxComponents = {
img: (props: any) => (
{children} diff --git a/components/blog/TableOfContents.tsx b/components/blog/TableOfContents.tsx index b27d5d50..cab12ef7 100644 --- a/components/blog/TableOfContents.tsx +++ b/components/blog/TableOfContents.tsx @@ -19,7 +19,7 @@ export default function TableOfContents({ headings, locale }: TableOfContentsPro useEffect(() => { const observerOptions = { - rootMargin: '-100px 0% -80% 0%', + rootMargin: '-10% 0% -70% 0%', threshold: 0 }; @@ -31,12 +31,18 @@ export default function TableOfContents({ headings, locale }: TableOfContentsPro }); }, observerOptions); - const elements = headings.map((h) => document.getElementById(h.id)); - elements.forEach((el) => { - if (el) observer.observe(el); - }); + // Use a small delay to ensure MDX content is rendered and IDs are present + const timer = setTimeout(() => { + const elements = headings.map((h) => document.getElementById(h.id)); + elements.forEach((el) => { + if (el) observer.observe(el); + }); + }, 500); - return () => observer.disconnect(); + return () => { + clearTimeout(timer); + observer.disconnect(); + }; }, [headings]); if (headings.length === 0) return null;