mirror of
https://github.com/anotherhadi/blog.git
synced 2026-05-20 05:32:32 +02:00
1025d5bfa1
Signed-off-by: Hadi <hadi@example.com>
41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
---
|
|
interface Props {
|
|
headings: { depth: number; text: string; id: string }[];
|
|
}
|
|
|
|
const { headings } = Astro.props;
|
|
---
|
|
|
|
{
|
|
headings.length > 0 && (
|
|
<div
|
|
class="collapse collapse-arrow mb-8 border border-base-300/40"
|
|
style="background: oklch(4% 0 0);"
|
|
>
|
|
<input type="checkbox" />
|
|
<div class="collapse-title font-mono text-xs text-base-content/35 flex items-center gap-2 py-2 px-3 min-h-0">
|
|
<span class="text-primary/40">§</span>
|
|
table of contents
|
|
</div>
|
|
<div class="collapse-content px-0 pb-0">
|
|
<nav class="px-3 pb-3 pt-1 border-t border-base-300/30 space-y-0.5">
|
|
{headings.map((h) => (
|
|
<a
|
|
href={`#${h.id}`}
|
|
class:list={[
|
|
"block text-xs text-base-content/45 hover:text-base-content/80 transition-colors py-0.5",
|
|
h.depth === 3 ? "pl-4" : h.depth === 4 ? "pl-8" : "",
|
|
]}
|
|
>
|
|
<span class="font-mono text-primary/25 mr-1.5">
|
|
{"#".repeat(h.depth)}
|
|
</span>
|
|
{h.text}
|
|
</a>
|
|
))}
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|