import { Content, defineConfig, HeadConfig } from 'vitepress' import { SitemapStream } from 'sitemap' import { createWriteStream } from 'node:fs' import { resolve } from 'node:path' import { withMermaid } from "vitepress-plugin-mermaid"; import timeline from "vitepress-markdown-timeline"; import markfootnote from 'markdown-it-footnote'; import { SchemaOrgResolver } from '@vueuse/schema-org' import { enConfig } from './en' import { nlConfig } from './nl' // https://vitepress.dev/reference/site-config // https://github.com/emersonbottero/vitepress-plugin-mermaid/tree/main const links = [] export default withMermaid( defineConfig({ transformHead: ({ pageData }) => { const head: HeadConfig[] = [] head.push(['meta', { property: 'og:title', content: pageData.frontmatter.title }]) head.push(['meta', { property: 'og:description', content: pageData.frontmatter.description }]) head.push(['meta', { property: 'title', content: pageData.title}]) head.push(['meta', { property: 'og:type', content: "website " }]) head.push(['meta', { name: 'applicable-device', content: "pc,mobile" }]) head.push(['meta', { name: 'theme-color', content: "#ffffff" }]) head.push(['meta', { name: 'color-scheme', content: "dark light" }]) head.push(['meta', { name: 'apple-mobile-web-app-status-bar-style', content: "lack-translucent" }]) //head.push(['meta', { name: 'keywords', content: pageData.frontmatter.meta_keywords }]) //head.push(['meta', { property: 'og:url', content: pageData.frontmatter.meta_url }]) head.push(['meta', { name: 'og:locale', alternate: "nl_NL" }]) head.push(['meta', { name: 'og:locale', alternate: "en_US" }]) head.push(['meta', { name: 'og:locale', alternate: "en_GB" }]) head.push(['meta', { property: 'og:locale', alternate: pageData.frontmatter.meta_url }]) // head.push(['link', { rel: 'alternate', content: "`https://Ultimatekingdom.nlfeed.rss" , type: "application/rss" }]) return head }, //sitemap transformHtml: (_, id, { pageData }) => { if (!/[\\/]404\.html$/.test(id)) links.push({ // you might need to change this if not using clean urls mode url: pageData.relativePath.replace(/((^|\/)index)?\.md$/, '$2'), lastmod: pageData.lastUpdated }) }, buildEnd: async ({ outDir }) => { const sitemap = new SitemapStream({ hostname: 'https://Ultimatekingdom.nl/' }) const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml')) sitemap.pipe(writeStream) links.forEach((link) => sitemap.write(link)) sitemap.end() await new Promise((r) => writeStream.on('finish', r)) }, lastUpdated: false, cleanUrls: true, locales: { root: { label: 'Nederlands', lang: 'nl', ...nlConfig, }, en: { label: 'English', lang: 'en', link: '/en/', ...enConfig, }, }, markdown: { config: (md) => { md.use(timeline); md.use(markfootnote) }, // theme: "material-palenight", lineNumbers: false, }, themeConfig: { nav: nav(), // langMenuLabel: "kies taal", footer: { message: "UltimateKingdom.nl", copyright: "Copyright © 2022-present RecoreHosting", }, socialLinks: [ { icon: "github", link: "https://git.recorehosting.com/" }, { icon: "discord", link: "https://discord.gg/t3sFuDc6xz" }, ], search: { provider: 'local', options: { translations: { button: { buttonText: 'Zoeken', buttonAriaLabel: 'Zoeken', }, modal: { noResultsText: 'geen resultaten voor', resetButtonTitle: 'reset', footer: { selectText: 'te selecteren', navigateText: 'te navigeren', }, }, }, locales: { en: { translations: { button: { buttonText: 'Search', buttonAriaLabel: 'Search', }, modal: { noResultsText: 'No results for', resetButtonTitle: 'Reset search', footer: { selectText: 'to select', navigateText: 'to navigate', }, }, }, }, } } }// end } }) ) function nav() { return [ { text: "latest-KingdomPlugin: 2.12.3.3-RC", link: "https://jenkins.recorehosting.com/job/UltimateKingdom-2.XX/"}, { text: "latest-exchangePlugin: 2.12.0.0-RC", link: "https://jenkins.recorehosting.com/job/Exchange_2.x/"}, { text: 'API', link: '/API' }, { text: 'Changelog', link: '/changelog' }, { text: "JavaDocs", link: "https://jenkins.recorehosting.com/job/UltimateKingdom-2.XX/javadoc/" }, ] }