<template>
  <article>
    <h1>{{ item?.title }}</h1>

    <ul v-if="item?.children?.length" :class="$style.list">
      <li v-for="child in item.children" :key="item._id">
        <NuxtLink :to="child._path">{{ child.title }}</NuxtLink>
      </li>
    </ul>
  </article>
</template>

<script lang="ts" setup>
import { NavItem } from "@nuxt/content/dist/runtime/types";

interface Props {
  url: string;
}

const findDeep = (items: NavItem[], path: string[]) => {
  const item = items.find((it) => it._path.endsWith(path[0]));

  if (!item || (path.length > 1 && !item.children?.length)) {
    return null;
  }

  return path.length === 1
    ? item
    : findDeep(item.children, path.slice(1, path.length));
};

const props = defineProps<Props>();

const { data: navigation } = await useAsyncData("navigation", () => {
  return fetchContentNavigation();
});

const segments = props.url.split("/").filter((it) => it);
const item = findDeep(navigation.value, segments);
</script>

<style lang="scss" module>
.list {
  margin: 0;
  padding: 0 20px;

  li a {
    text-decoration: none;
  }
}
</style>