Files
Webserver/components/mdx/MobileTableOfContents.tsx

33 lines
1.2 KiB
TypeScript
Raw Normal View History

2026-02-07 20:17:46 -05:00
type Heading = {
id: string;
text: string;
level: number;
};
export function MobileTableOfContents({ headings }: { headings: Heading[] }) {
if (headings.length === 0) return null;
return (
2026-05-25 09:49:40 -04:00
<details className="group mb-8 border-y border-line py-4">
<summary className="flex cursor-pointer list-none items-center justify-between gap-4">
<span className="eyebrow">Contents</span>
<span aria-hidden className="text-base leading-none text-muted-strong transition-transform group-open:rotate-45">
+
</span>
2026-04-11 23:27:29 -04:00
</summary>
<ul className="mt-4 space-y-2">
{headings.map((heading) => (
2026-05-25 09:49:40 -04:00
<li key={heading.id} className={heading.level > 2 ? 'pl-4' : undefined}>
2026-04-11 23:27:29 -04:00
<a
href={`#${heading.id}`}
className="block text-[0.94rem] leading-7 text-muted transition-colors hover:text-ink"
2026-02-07 20:17:46 -05:00
>
2026-04-11 23:27:29 -04:00
{heading.text}
</a>
</li>
))}
</ul>
</details>
2026-02-07 20:17:46 -05:00
);
}