Newer
Older
hello-programmer-world / src / components / Toc.astro
@h.sakamoto h.sakamoto on 3 Feb 744 bytes ui
---
import { sections } from "../constants/sections.ts";
const currentPath = Astro.url.pathname;
---

<ul class="menu bg-base-200 rounded-box p-2 w-56 h-full overflow-y-auto">
  <li>
    <a href="/" class="menu-item">Introduction</a>
  </li>

  {sections.map(section => {
    const isActive = section.items.some(item => currentPath.startsWith(item.url));

    return (
    <li>
      <details open={isActive}>
        <summary class="toc-section-title">{section.title}</summary>
        <ul class="toc-sublist">
          {section.items.map(item => (
          <li class="toc-subitem">
            <a href={item.url} class="toc-link">{item.title}</a>
          </li>
          ))}
        </ul>
      </details>
    </li>
    );
  })}

</ul>