// @ts-check // Note: type annotations allow type checking and IDEs autocompletion const lightCodeTheme = require('prism-react-renderer').themes.github; const darkCodeTheme = require('prism-react-renderer').themes.dracula; /** @type {import('@docusaurus/types').Config} */ async function createConfig() { const mdxMermaid = await import('mdx-mermaid') return { title: 'Constellation', tagline: 'Constellation: The world\'s most secure Kubernetes', url: 'https://constellation-docs.netlify.app', baseUrl: '/constellation/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. organizationName: 'Edgeless Systems', // Usually your GitHub org/user name. projectName: 'Constellation', // Usually your repo name. // plausible scripts: [{ src: 'https://plausible.io/js/plausible.js', async: true, defer: true, 'data-domain': 'docs.edgeless.systems' }], // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', locales: ['en'], }, presets: [ [ 'classic', /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { remarkPlugins: [[mdxMermaid.default, { mermaid: { theme: 'base', themeVariables: { // general 'fontFamily': '"Open Sans", sans-serif', 'primaryColor': '#90FF99', // edgeless green 'primaryTextColor': '#000000', 'secondaryColor': '#A5A5A5', // edgeless grey 'secondaryTextColor': '#000000', 'tertiaryColor': '#E7E6E6', // edgeless light grey 'tertiaryTextColor': '#000000', // flowchart 'clusterBorder': '#A5A5A5', 'clusterBkg': '#ffffff', 'edgeLabelBackground': '#ffffff', // sequence diagram 'activationBorderColor': '#000000', 'actorBorder': '#A5A5A5', 'actorFontFamily': '"Open Sans", sans-serif', // not released by mermaid yet 'noteBkgColor': '#8B04DD', // edgeless purple 'noteTextColor': '#ffffff', }, startOnLoad: true }}]], sidebarPath: require.resolve('./sidebars.js'), // sidebarPath: 'sidebars.js', // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/edgelesssys/constellation/edit/main/docs', routeBasePath: "/" }, blog: false, theme: { customCss: require.resolve('./src/css/custom.css'), }, }), ], ], themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ navbar: { hideOnScroll: false, logo: { alt: 'Constellation Logo', src: 'img/logos/constellation_oneline.svg', }, items: [ // left // Running docs only mode no need for a link here // { // type: 'doc', // docId: 'intro', // position: 'left', // label: 'Docs', // }, // right { type: 'docsVersionDropdown', position: 'right', }, { href: 'https://github.com/edgelesssys/constellation', position: 'right', className: 'header-github-link', }, ], }, colorMode: { defaultMode: 'light', disableSwitch: true, respectPrefersColorScheme: false, }, announcementBar: { content: 'If you like Constellation, give it a star on GitHub ⭐️', backgroundColor: '#E7E6E6' }, footer: { style: 'dark', links: [ { title: 'Learn', items: [ { label: 'Confidential Kubernetes', to: '/overview/confidential-kubernetes', }, { label: 'Install', to: '/getting-started/install', }, { label: 'First steps', to: '/getting-started/first-steps', }, ], }, { title: 'Community', items: [ { label: 'GitHub', href: 'https://github.com/edgelesssys/constellation', }, { label: 'Discord', href: 'https://discord.gg/rH8QTH56JN', }, { label: 'Newsletter', href: 'https://www.edgeless.systems/#newsletter-signup' }, ], }, { title: 'Social', items: [ { label: 'Blog', to: 'https://blog.edgeless.systems/', }, { label: 'Twitter', href: 'https://twitter.com/EdgelessSystems', }, { label: 'LinkedIn', href: 'https://www.linkedin.com/company/edgeless-systems/', }, { label: 'Youtube', href: 'https://www.youtube.com/channel/UCOOInN0sCv6icUesisYIDeA', }, ], }, ], copyright: `Copyright © ${new Date().getFullYear()} Edgeless Systems`, }, prism: { theme: lightCodeTheme, darkTheme: darkCodeTheme, additionalLanguages: ['shell-session'], }, }), plugins: [ [ require.resolve("@cmfcmf/docusaurus-search-local"), { // whether to index docs pages indexDocs: true, // Whether to also index the titles of the parent categories in the sidebar of a doc page. // 0 disables this feature. // 1 indexes the direct parent category in the sidebar of a doc page // 2 indexes up to two nested parent categories of a doc page // 3... // // Do _not_ use Infinity, the value must be a JSON-serializable integer. indexDocSidebarParentCategories: 0, // whether to index blog pages indexBlog: false, // whether to index static pages // /404.html is never indexed indexPages: false, // language of your documentation, see next section language: "en", // setting this to "none" will prevent the default CSS to be included. The default CSS // comes from autocomplete-theme-classic, which you can read more about here: // https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-theme-classic/ // When you want to overwrite CSS variables defined by the default theme, make sure to suffix your // overwrites with `!important`, because they might otherwise not be applied as expected. See the // following comment for more information: https://github.com/cmfcmf/docusaurus-search-local/issues/107#issuecomment-1119831938. style: undefined, // The maximum number of search results shown to the user. This does _not_ affect performance of // searches, but simply does not display additional search results that have been found. maxSearchResults: 8, // lunr.js-specific settings lunr: { // When indexing your documents, their content is split into "tokens". // Text entered into the search box is also tokenized. // This setting configures the separator used to determine where to split the text into tokens. // By default, it splits the text at whitespace and dashes. // // Note: Does not work for "ja" and "th" languages, since these use a different tokenizer. tokenizerSeparator: /[\s\-]+/, // https://lunrjs.com/guides/customising.html#similarity-tuning // // This parameter controls the importance given to the length of a document and its fields. This // value must be between 0 and 1, and by default it has a value of 0.75. Reducing this value // reduces the effect of different length documents on a term’s importance to that document. b: 0.75, // This controls how quickly the boost given by a common word reaches saturation. Increasing it // will slow down the rate of saturation and lower values result in quicker saturation. The // default value is 1.2. If the collection of documents being indexed have high occurrences // of words that are not covered by a stop word filter, these words can quickly dominate any // similarity calculation. In these cases, this value can be reduced to get more balanced results. k1: 1.2, // By default, we rank pages where the search term appears in the title higher than pages where // the search term appears in just the text. This is done by "boosting" title matches with a // higher value than content matches. The concrete boosting behavior can be controlled by changing // the following settings. titleBoost: 5, contentBoost: 1, tagsBoost: 3, parentCategoriesBoost: 2, // Only used when indexDocSidebarParentCategories > 0 } }, ] ] } }; module.exports = createConfig;