UNPKG

nimiq-vitepress-theme

Version:

Nimiq UI theme for VitePress

34 lines (33 loc) 1.36 kB
import { useRoute, withBase } from "vitepress"; import { computed } from "vue"; import { useCurrentModule } from "./useCurrentModule.mjs"; export function useBreadcrumbs() { const { currentDocModule } = useCurrentModule(); const route = useRoute(); const breadcrumbs = computed(() => { const items = []; items.push({ text: currentDocModule.value.text, link: currentDocModule.value.subpath }); const currentSidebar = currentDocModule.value.sidebar.find((section) => { return section.items.some( (item) => item.link && `${withBase(item.link)}/` === route.path || item.items?.some((subitem) => `${withBase(subitem.link)}/` === route.path) ); }); if (currentSidebar?.label) items.push({ text: currentSidebar.label }); const parentItem = currentSidebar?.items.find( (item) => item.items?.some((subitem) => `${withBase(subitem.link)}/` === route.path) ); if (parentItem) items.push({ text: parentItem.text }); const currentItem = currentSidebar?.items.find((item) => item.link === route.path) || currentSidebar?.items.find((item) => item.items?.some((subitem) => subitem.link === route.path))?.items?.find((subitem) => subitem.link === route.path); if (currentItem) items.push({ text: currentItem.text }); return items; }); return { breadcrumbs }; }