/** * Releases Layout * * Layout for release notes pages with sidebar navigation */ import type { ReactNode } from 'react' import { getAllReleases, getCategoryMetadata, extractHeadings, type ReleaseNote, type TocItem } from '@/lib/mdx/documentatie' import ReleaseSidebarWrapper from './components/release-sidebar-wrapper' interface ReleasesLayoutProps { children: ReactNode } export default async function ReleasesLayout({ children }: ReleasesLayoutProps) { let releases: ReleaseNote[] = [] let metadata = { groups: [], categories: [] } as Awaited> let tocMap: Record = {} try { releases = await getAllReleases() metadata = await getCategoryMetadata() // Extract headings for each release tocMap = releases.reduce((acc, release) => { acc[release.slug] = extractHeadings(release.content) return acc }, {} as Record) } catch (error) { console.error('Error loading releases or metadata:', error) } return (
{/* Mobile sidebar is sticky, so we need padding for header only */}
{/* Sidebar - collapsible on mobile (48px collapsed), fixed on desktop (320px) */} {/* Main Content - margin for collapsed sidebar on mobile, fixed sidebar on desktop */}
{children}
) }