Qwik City - Menu
Menus allow you to describe the site navigation structure in a simple declarative way. Menus come in two steps:
- Defining a 
menu.mdfile that contains the menu structure for the directory it's in. - Using the 
useContent()function to retrieve the menu structure in a template for rendering. Read more here 
File Structure
First layout files as follows:
- src/
  - routes/
    - some/
      - menu.md
      - layout.tsx
      - path/
        - index.tsx  # https://example.com/some/path
Navigating to https://example.com/some/path activates:
src/routes/some/path/index.tsx: This component will be used for rendering the page content.src/routes/some/layout.tsx: This layout will be used to provide content around thesrc/routes/some/path/index.tsx. Internally the layout can usesrc/routes/some/menu.mdto render the menus.src/routes/some/menu.md: This file will be used to declare the menu structure which will be rendered bysrc/routes/some/layout.tsx.
Declaring Menu Structure
Use menu.md to declare the menu structure.
- Use the headings (
#,##, etc..) to define menu depth - Use the bulleted list (
-) to define menu items. 
<!-- File: src/routes/some/menu.md -->
# Docs
## Getting Started
- [Introduction](introduction/index.md)
## Components
- [Basics](/docs/components/basics)
Retrieving Menu Structure
At runtime any component can retrieve the menu with useContent() hook. The type returned is ContentMenu.
The example above will return:
{
  text: "Docs",
  items: [
    {
      text: "Getting Started",
      items: [
        {
          text: "Introduction",
          href: "/docs/introduction"
        }
      ],
    },
    {
      text: "Components",
      items: [
        {
          text: "Basics",
          href: "/docs/components/basics"
        }
      ],
    },
  ],
}
Using ContentMenu in a layout
While useContent() can be invoked from any component that is part of the current route. It is typically used in a layout component (or a component used by layout) to render the menu. An example usage is shown here:
export default component$(
  () => {
    const { menu } = useContent();
    const { pathname } = useLocation();
    return (
      <div class="menu">
        {menu
          ? menu.items?.map((item) => (
              <>
                <h5>{item.text}</h5>
                <ul>
                  {item.items?.map((item) => (
                    <li>
                      <a
                        href={item.href}
                        class={{
                          "is-active": pathname === item.href,
                        }}
                      >
                        {item.text}
                      </a>
                    </li>
                  ))}
                </ul>
              </>
            ))
          : null}
      </div>
    );
  }
);