import {themes as prismThemes} from 'prism-react-renderer';
import type {Config} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
import type * as OpenApiPlugin from "docusaurus-plugin-openapi-docs";

// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)

const config: Config = {
    title: 'jasima.app',
    tagline: 'Bypass censorship and enhance privacy for your audience and community',
    favicon: 'img/logo.png',

    url: 'https://www.jasima.app',
    baseUrl: '/',

    onBrokenLinks: 'throw',
    onBrokenMarkdownLinks: 'warn',

    // Even if you don't use internationalization, 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',
            {
                docs: {
                    sidebarPath: './sidebars.ts',
                    docItemComponent: "@theme/ApiItem",
                },
                theme: {
                    customCss: './src/css/custom.css',
                },
            } satisfies Preset.Options,
        ],
    ],

    plugins: [
        'docusaurus-plugin-matomo',
        [
            'docusaurus-plugin-openapi-docs',
            {
                id: "api", // plugin id
                docsPluginId: "classic", // configured for preset-classic
                config: {
                    api: {
                        specPath: "static/openapi.json",
                        outputDir: "docs/api/",
                        downloadUrl: "/openapi.json",
                        sidebarOptions: {
                            groupPathsBy: "tag",
                            categoryLinkSource: "tag",
                        },
                    } satisfies OpenApiPlugin.Options,
                }
            },
        ]
    ],
    themes: ["docusaurus-theme-openapi-docs"], // export theme components

    themeConfig: {
        // Replace with your project's social card
        image: 'img/jasima-social-card.jpg',
        navbar: {
            title: 'jasima.app',
            logo: {
                alt: 'Logo',
                src: 'img/logo.png',
            },
            items: [
                {
                    type: 'docSidebar',
                    sidebarId: 'docsSidebar',
                    position: 'left',
                    label: 'Docs',
                },
                {
                    type: 'docSidebar',
                    sidebarId: 'apiSidebar',
                    position: 'left',
                    label: 'API',
                },
                {
                    to: '/contact',
                    position: 'left',
                    label: 'Contact',
                }
            ],
        },
        footer: {
            style: 'dark',
            links: [
                {
                    title: 'jasima.app',
                    items: [
                        {
                            label: 'Service Status',
                            href: 'https://status.jasima.app/'
                        },
                        {
                            label: 'API Documentation',
                            to: '/docs/api/jasima-app-api'
                        }
                    ]
                },
                {
                    title: 'Docs',
                    items: [
                        {
                            label: 'Censorship 101',
                            to: '/docs/censorship/',
                        },
                        {
                            label: 'Web Mirrors',
                            to: '/docs/mirrors/',
                        },
                    ],
                },
                {
                    title: 'More',
                    items: [
                        {
                            label: 'Get In Touch',
                            href: '/contact',
                        },
                        {
                            label: 'Open Source',
                            href: 'https://guardianproject.dev/jasima'
                        },
                        {
                            label: 'Bypass Censorship',
                            href: 'https://bypasscensorship.org/',
                        },
                        {
                            label: 'Guardian Project',
                            href: 'https://guardianproject.info/',
                        },
                    ],
                },
            ],
            copyright: `Copyright © 2021-${new Date().getFullYear()}.`,
        },
        prism: {
            theme: prismThemes.github,
            darkTheme: prismThemes.dracula,
        },
        matomo: {
            matomoUrl: 'https://metrics.cleaninsights.org/',
            siteId: '47',
            phpLoader: 'matomo.php',
            jsLoader: 'matomo.js',
        },
    } satisfies Preset.ThemeConfig,
};

export default config;
