nimiq-vitepress-theme
Version:
Nimiq UI theme for VitePress
34 lines (33 loc) • 1.36 kB
JavaScript
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
};
}