/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import type { Config } from '@docusaurus/types';
import type { Options, ThemeConfig } from '@docusaurus/preset-classic';
import { themes } from 'prism-react-renderer';
import remarkImportPartial from 'remark-import-partial';
import * as fs from 'fs';
import * as path from 'path';

const { github: lightCodeTheme, vsDark: darkCodeTheme } = themes;

// Load version configuration from external file
const versionsConfigPath = path.join(__dirname, 'versions-config.json');
const versionsConfig = JSON.parse(fs.readFileSync(versionsConfigPath, 'utf8'));

// Build plugins array dynamically based on disabled flags
const dynamicPlugins = [];

// Add components plugin if not disabled
if (!versionsConfig.components.disabled) {
  dynamicPlugins.push([
    '@docusaurus/plugin-content-docs',
    {
      id: 'components',
      path: 'components',
      routeBasePath: 'components',
      sidebarPath: require.resolve('./sidebarComponents.js'),
      editUrl:
        'https://github.com/apache/superset/edit/master/docs/components',
      remarkPlugins: [remarkImportPartial],
      docItemComponent: '@theme/DocItem',
      includeCurrentVersion: versionsConfig.components.includeCurrentVersion,
      lastVersion: versionsConfig.components.lastVersion,
      onlyIncludeVersions: versionsConfig.components.onlyIncludeVersions,
      versions: versionsConfig.components.versions,
      disableVersioning: false,
      showLastUpdateAuthor: true,
      showLastUpdateTime: true,
    },
  ]);
}

// Add developer_portal plugin if not disabled
if (!versionsConfig.developer_portal.disabled) {
  dynamicPlugins.push([
    '@docusaurus/plugin-content-docs',
    {
      id: 'developer_portal',
      path: 'developer_portal',
      routeBasePath: 'developer_portal',
      sidebarPath: require.resolve('./sidebarTutorials.js'),
      editUrl:
        'https://github.com/apache/superset/edit/master/docs/developer_portal',
      remarkPlugins: [remarkImportPartial],
      docItemComponent: '@theme/DocItem',
      includeCurrentVersion: versionsConfig.developer_portal.includeCurrentVersion,
      lastVersion: versionsConfig.developer_portal.lastVersion,
      onlyIncludeVersions: versionsConfig.developer_portal.onlyIncludeVersions,
      versions: versionsConfig.developer_portal.versions,
      disableVersioning: false,
      showLastUpdateAuthor: true,
      showLastUpdateTime: true,
    },
  ]);
}

// Build navbar items dynamically based on disabled flags
const dynamicNavbarItems = [];

// Add Component Playground navbar item if not disabled
if (!versionsConfig.components.disabled) {
  dynamicNavbarItems.push({
    label: 'Component Playground',
    to: '/components',
    items: [
      {
        label: 'Introduction',
        to: '/components',
      },
      {
        label: 'UI Components',
        to: '/components/ui-components/button',
      },
      {
        label: 'Chart Components',
        to: '/components/chart-components/bar-chart',
      },
      {
        label: 'Layout Components',
        to: '/components/layout-components/grid',
      },
    ],
  });
}

// Add Developer Portal navbar item if not hidden from nav
if (!versionsConfig.developer_portal.disabled && !versionsConfig.developer_portal.hideFromNav) {
  dynamicNavbarItems.push({
    label: 'Developer Portal',
    position: 'left',
    items: [
      {
        type: 'doc',
        docsPluginId: 'developer_portal',
        docId: 'index',
        label: 'Overview',
      },
      {
        type: 'doc',
        docsPluginId: 'developer_portal',
        docId: 'extensions/architectural-principles',
        label: 'Extensions',
      },
      {
        type: 'doc',
        docsPluginId: 'developer_portal',
        docId: 'testing/overview',
        label: 'Testing',
      },
      {
        type: 'doc',
        docsPluginId: 'developer_portal',
        docId: 'guidelines/design-guidelines',
        label: 'Guidelines',
      },
      {
        type: 'doc',
        docsPluginId: 'developer_portal',
        docId: 'contributing/overview',
        label: 'Contributing',
      },
    ],
  });
}

const config: Config = {
  title: 'Superset',
  tagline:
    'Apache Superset is a modern data exploration and visualization platform',
  url: 'https://superset.apache.org',
  baseUrl: '/',
  onBrokenLinks: 'warn',
  onBrokenMarkdownLinks: 'throw',
  markdown: {
    mermaid: true,
  },
  favicon: '/img/favicon.ico',
  organizationName: 'apache',
  projectName: 'superset',
  themes: ['@saucelabs/theme-github-codeblock', '@docusaurus/theme-mermaid'],
  plugins: [
    require.resolve('./src/webpack.extend.ts'),
    [
      'docusaurus-plugin-less',
      {
        lessOptions: {
          javascriptEnabled: true,
        },
      },
    ],
    ...dynamicPlugins,
    [
      '@docusaurus/plugin-client-redirects',
      {
        redirects: [
          {
            to: '/docs/installation/docker-compose',
            from: '/installation.html',
          },
          {
            to: '/docs/intro',
            from: '/tutorials.html',
          },
          {
            to: '/docs/using-superset/creating-your-first-dashboard',
            from: '/admintutorial.html',
          },
          {
            to: '/docs/using-superset/creating-your-first-dashboard',
            from: '/usertutorial.html',
          },
          {
            to: '/docs/security/',
            from: '/security.html',
          },
          {
            to: '/docs/configuration/sql-templating',
            from: '/sqllab.html',
          },
          {
            to: '/docs/intro',
            from: '/gallery.html',
          },
          {
            to: '/docs/configuration/databases',
            from: '/druid.html',
          },
          {
            to: '/docs/configuration/country-map-tools',
            from: '/misc.html',
          },
          {
            to: '/docs/configuration/country-map-tools',
            from: '/visualization.html',
          },
          {
            to: '/docs/faq',
            from: '/videos.html',
          },
          {
            to: '/docs/faq',
            from: '/faq.html',
          },
          {
            to: '/docs/using-superset/creating-your-first-dashboard',
            from: '/tutorial.html',
          },
          {
            to: '/docs/using-superset/creating-your-first-dashboard',
            from: '/docs/creating-charts-dashboards/first-dashboard',
          },
          {
            to: '/docs/api',
            from: '/docs/rest-api',
          },
          {
            to: '/docs/configuration/alerts-reports',
            from: '/docs/installation/alerts-reports',
          },
          {
            to: '/docs/contributing/development',
            from: '/docs/contributing/hooks-and-linting',
          },
          {
            to: '/docs/intro',
            from: '/docs/roadmap',
          },
          {
            to: '/docs/contributing/',
            from: '/docs/contributing/contribution-guidelines',
          },
          {
            to: '/docs/contributing/',
            from: '/docs/contributing/contribution-page',
          },
          {
            to: '/docs/configuration/databases',
            from: '/docs/databases/yugabyte/',
          },
          {
            to: '/docs/faq',
            from: '/docs/frequently-asked-questions',
          },
          {
            to: '/docs/installation/kubernetes',
            from: '/docs/installation/running-on-kubernetes/',
          },
          {
            to: '/docs/contributing/howtos',
            from: '/docs/contributing/testing-locally/',
          },
          {
            to: '/docs/using-superset/creating-your-first-dashboard',
            from: '/docs/creating-charts-dashboards/creating-your-first-dashboard/',
          },
          {
            to: '/docs/using-superset/creating-your-first-dashboard',
            from: '/docs/creating-charts-dashboards/exploring-data/',
          },
          {
            to: '/docs/installation/docker-compose',
            from: '/docs/installation/installing-superset-using-docker-compose/',
          },
          {
            to: '/docs/contributing/howtos',
            from: '/docs/contributing/creating-viz-plugins/',
          },
          {
            to: '/docs/installation/kubernetes',
            from: '/docs/installation/',
          },
          {
            to: '/docs/installation/pypi',
            from: '/docs/installation/installing-superset-from-pypi/',
          },
          {
            to: '/docs/configuration/configuring-superset',
            from: '/docs/installation/configuring-superset/',
          },
          {
            to: '/docs/configuration/cache',
            from: '/docs/installation/cache/',
          },
          {
            to: '/docs/configuration/async-queries-celery',
            from: '/docs/installation/async-queries-celery/',
          },
          {
            to: '/docs/configuration/event-logging',
            from: '/docs/installation/event-logging/',
          },
          {
            to: '/docs/contributing/howtos',
            from: '/docs/contributing/translations/',
          },
        ],
      },
    ],
  ],

  presets: [
    [
      '@docusaurus/preset-classic',
      {
        docs: {
          sidebarPath: require.resolve('./sidebars.js'),
          editUrl: ({ versionDocsDirPath, docPath }) => {
            if (docPath === 'intro.md') {
              return 'https://github.com/apache/superset/edit/master/README.md';
            }
            return `https://github.com/apache/superset/edit/master/docs/${versionDocsDirPath}/${docPath}`;
          },
          includeCurrentVersion: versionsConfig.docs.includeCurrentVersion,
          lastVersion: versionsConfig.docs.lastVersion,  // Make 'next' the default
          onlyIncludeVersions: versionsConfig.docs.onlyIncludeVersions,
          versions: versionsConfig.docs.versions,
          disableVersioning: false,
          showLastUpdateAuthor: true,
          showLastUpdateTime: true,
        },
        blog: {
          showReadingTime: true,
          // Please change this to your repo.
          editUrl:
            'https://github.com/facebook/docusaurus/edit/main/website/blog/',
        },
        theme: {
          customCss: require.resolve('./src/styles/custom.css'),
        },
      } satisfies Options,
    ],
  ],

  themeConfig: {
    colorMode: {
      defaultMode: 'dark',
      disableSwitch: false,
      respectPrefersColorScheme: true,
    },
    algolia: {
      appId: 'WR5FASX5ED',
      apiKey: 'd0d22810f2e9b614ffac3a73b26891fe',
      indexName: 'superset-apache',
    },
    mermaid: {
      theme: { light: 'neutral', dark: 'dark' },
      options: {
        // Any Mermaid config options go here...
        maxTextSize: 100000,
      },
    },
    navbar: {
      logo: {
        alt: 'Superset Logo',
        src: '/img/superset-logo-horiz.svg',
        srcDark: '/img/superset-logo-horiz-dark.svg',
      },
      items: [
        {
          label: 'Documentation',
          position: 'left',
          items: [
            {
              type: 'doc',
              docId: 'intro',
              label: 'Getting Started',
            },
            {
              type: 'doc',
              docId: 'faq',
              label: 'FAQ',
            },
          ],
        },
        {
          label: 'Community Resources',
          to: '/community',
          items: [
            {
              label: 'Resources',
              href: '/community',
            },
            {
              label: 'GitHub',
              href: 'https://github.com/apache/superset',
            },
            {
              label: 'Slack',
              href: 'http://bit.ly/join-superset-slack',
            },
            {
              label: 'Mailing List',
              href: 'https://lists.apache.org/list.html?dev@superset.apache.org',
            },
            {
              label: 'Stack Overflow',
              href: 'https://stackoverflow.com/questions/tagged/apache-superset',
            },
          ],
        },
        ...dynamicNavbarItems,
        {
          href: '/docs/intro',
          position: 'right',
          className: 'default-button-theme get-started-button',
          label: 'Get Started',
        },
        {
          href: 'https://github.com/apache/superset',
          position: 'right',
          className: 'github-button',
        },
      ],
    },
    footer: {
      links: [],
      copyright: `
          <div class="footer__applitools">
            We use &nbsp;<a href="https://applitools.com/" target="_blank" rel="nofollow"><img src="/img/applitools.png" title="Applitools" /></a>
          </div>
          <p>Copyright © ${new Date().getFullYear()},
          The <a href="https://www.apache.org/" target="_blank" rel="noreferrer">Apache Software Foundation</a>,
          Licensed under the Apache <a href="https://apache.org/licenses/LICENSE-2.0" target="_blank" rel="noreferrer">License</a>.</p>
          <p><small>Apache Superset, Apache, Superset, the Superset logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation. All other products or name brands are trademarks of their respective holders, including The Apache Software Foundation.
          <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> resources</small></p>
          <img class="footer__divider" src="/img/community/line.png" alt="Divider" />
          <p>
            <small>
              <a href="/docs/security/" target="_blank" rel="noreferrer">Security</a>&nbsp;|&nbsp;
              <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noreferrer">Donate</a>&nbsp;|&nbsp;
              <a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noreferrer">Thanks</a>&nbsp;|&nbsp;
              <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
              <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>&nbsp;|&nbsp;
              <a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noreferrer">Privacy</a>
            </small>
          </p>
          <!-- telemetry/analytics pixel: -->
          <img referrerPolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68" />
          `,
    },
    prism: {
      theme: lightCodeTheme,
      darkTheme: darkCodeTheme,
    },
    docs: {
      sidebar: {
        hideable: true,
      },
    },
  } satisfies ThemeConfig,
  scripts: [
    // {
    //   src: 'https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa',
    //   async: true,
    // },
    {
      src: 'https://widget.kapa.ai/kapa-widget.bundle.js',
      async: true,
      'data-website-id': 'c6a8a8b8-3127-48f9-97a7-51e9e10d20d0',
      'data-project-name': 'Apache Superset',
      'data-project-color': '#FFFFFF',
      'data-project-logo':
        'https://images.seeklogo.com/logo-png/50/2/superset-icon-logo-png_seeklogo-500354.png',
      'data-modal-override-open-id': 'ask-ai-input',
      'data-modal-override-open-class': 'search-input',
      'data-modal-disclaimer':
        'This is a custom LLM for Apache Superset with access to all [documentation](superset.apache.org/docs/intro/), [GitHub Open Issues, PRs and READMEs](github.com/apache/superset).&#10;&#10;Companies deploy assistants like this ([built by kapa.ai](https://kapa.ai)) on docs via [website widget](https://docs.kapa.ai/integrations/website-widget) (Docker, Reddit), in [support forms](https://docs.kapa.ai/integrations/support-form-deflector) for ticket deflection (Monday.com, Mapbox), or as [Slack bots](https://docs.kapa.ai/integrations/slack-bot) with private sources.',
      'data-modal-example-questions':
        'How do I install Superset?,How can I contribute to Superset?',
      'data-button-text-color': 'rgb(81,166,197)',
      'data-modal-header-bg-color': '#ffffff',
      'data-modal-title-color': 'rgb(81,166,197)',
      'data-modal-title': 'Apache Superset AI',
      'data-modal-disclaimer-text-color': '#000000',
      'data-consent-required': 'true',
      'data-consent-screen-disclaimer':
        "By clicking \"I agree, let's chat\", you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies.",
    },
  ],
  customFields: {
    matomoUrl: 'https://analytics.apache.org',
    matomoSiteId: '22',
  },
};

export default config;
