UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

40 lines (39 loc) 1.34 kB
import { pathWithBase, StudioCMSRoutes } from "studiocms:lib"; import plugins from "studiocms:plugins"; import { runSDK, SDKCoreJs } from "studiocms:sdk"; async function frontendNavigation(basePackage) { const searchPackage = basePackage || "studiocms/markdown"; const fullPageList = await runSDK(SDKCoreJs.GET.pages()); const pageListData = fullPageList.map(({ data }) => data); const links = []; const navPagesList = pageListData.filter((page) => page.showOnNav === true && page.package === searchPackage).sort((a, b) => Date.parse(b.publishedAt.toString()) - Date.parse(a.publishedAt.toString())); const indexPage = navPagesList.find((page) => page.slug === "index"); if (indexPage) { links.push({ text: indexPage.title || "Home", href: StudioCMSRoutes.mainLinks.baseSiteURL }); } const restOfPages = navPagesList.filter((page) => page.slug !== "index"); for (const page of restOfPages) { links.push({ text: page.title, href: pathWithBase(page.slug) }); } for (const { frontendNavigationLinks } of plugins) { if (!frontendNavigationLinks) { continue; } for (const link of frontendNavigationLinks) { links.push({ text: link.label, href: pathWithBase(link.href) }); } } return links; } export { frontendNavigation };