import { Section } from '@discordjs/ui'; import type { MDXInstance } from 'astro'; import { useEffect, useMemo, useState } from 'react'; import { useLocation } from 'react-use'; export type MDXPage = MDXInstance<{ category: string; title: string }>; export function SidebarItems({ pages }: { pages: MDXPage[] }) { const state = useLocation(); const [active, setActive] = useState(''); const categories = useMemo( () => pages.reduce>((acc, page) => { if (acc[page.frontmatter.category]) { acc[page.frontmatter.category]?.push(page); } else { acc[page.frontmatter.category] = [page]; } return acc; }, {}), [pages], ); useEffect(() => { setActive(state.pathname); }, [state]); return Object.keys(categories).map((category, idx) => (
{categories[category]?.map((member, index) => (
{member.frontmatter.title}
)) ?? null}
)); }