'use client' /** * Release Sidebar Navigation * * Fixed sidebar with grouped list of all releases * Auto-generated from MDX files */ import Link from 'next/link' import { usePathname } from 'next/navigation' import { ChevronRight, ChevronDown } from 'lucide-react' import { useState } from 'react' import type { ReleaseNote, GroupMetadata, CategoryMetadata } from '@/lib/mdx/documentatie' interface ReleaseSidebarProps { releases: ReleaseNote[] metadata: { groups: GroupMetadata[] categories: CategoryMetadata[] } } export function ReleaseSidebar({ releases, metadata }: ReleaseSidebarProps) { const pathname = usePathname() const [expandedGroups, setExpandedGroups] = useState>({ foundation: true, features: true, infrastructure: true, bugs: true, }) const toggleGroup = (groupId: string) => { setExpandedGroups(prev => ({ ...prev, [groupId]: !prev[groupId], })) } // Group releases by their group const releasesByGroup = releases.reduce((acc, release) => { const group = release.frontmatter.group if (!acc[group]) acc[group] = [] acc[group].push(release) return acc }, {} as Record) // Check if we're on a specific release page const isReleaseDetail = pathname.startsWith('/documentatie/') && pathname !== '/documentatie' return ( <> {/* Mobile: Horizontal scroll menu */}
Overzicht {releases.map((release) => ( {release.frontmatter.title} ))}
{/* Desktop: Fixed sidebar */} ) } function StatusDot({ status }: { status: 'completed' | 'in_progress' | 'planned' }) { const colors = { completed: 'bg-teal-500', in_progress: 'bg-amber-500', planned: 'bg-slate-300', } return (
) }