website/_includes/layouts/post.tsx

43 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-08-05 17:32:29 -04:00
export const layout = "./base.tsx";
2023-12-03 13:11:01 -05:00
export default function({ children, toc, footnotes }) {
2023-08-05 17:32:29 -04:00
return (
<>
{ toc.length > 0 &&
2023-12-03 11:18:36 -05:00
<nav className="toc">
<h2>Table of Contents</h2>
<ol>
{toc.map((item,index) => (
<li key={index}>
<a href={`#${item.slug}`}>{item.text}</a>
{item.children.length > 0 &&
<ul>
{item.children.map((child,i) => (
<li key={i}>
<a href={`#${child.slug}`}>{child.text}</a>
</li>
))}
</ul>
}
</li>
))}
</ol>
</nav>
}
<article>
{ children }
</article>
2023-12-03 13:11:01 -05:00
{ footnotes.length > 0 &&
<ol className="footnotes">
{footnotes.map(note => (
<li id={note.id}>
<span dangerouslySetInnerHTML={{ __html: note.content }} className="footnote-content"/>
<a href={`#${note.refId}`} className="footnote-backref">&#x21A9;</a>
</li>
))}
</ol>
}
</>
2023-08-05 17:32:29 -04:00
);
}