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

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

const config: Config = {
  title: "Ashell",
  tagline: "A ready to go Wayland status bar for Hyprland and Niri",
  favicon: "img/favicon.svg",

  // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
  future: {
    v4: true, // Improve compatibility with the upcoming Docusaurus v4
  },

  // Set the production url of your site here
  url: "https://malpenzibo.github.io",
  // Set the /<baseUrl>/ pathname under which your site is served
  // For GitHub pages deployment, it is often '/<projectName>/'
  baseUrl: process.env.CI === "true" ? "/ashell/" : "/",

  // GitHub pages deployment config.
  // If you aren't using GitHub pages, you don't need these.
  organizationName: "MalpenZibo", // Usually your GitHub org/user name.
  projectName: "ashell", // Usually your repo name.
  trailingSlash: false,

  onBrokenLinks: "throw",
  markdown: {
    hooks: {
      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",
        },
        theme: {
          customCss: "./src/css/custom.css",
        },
      } satisfies Preset.Options,
    ],
  ],

  plugins: [
    [
      require.resolve("@easyops-cn/docusaurus-search-local"),
      {
        hashed: true,
        indexDocs: true,
        indexBlog: false,
        indexPages: false,
        docsRouteBasePath: "/",
        searchBarShortcutHint: false,
      },
    ],
  ],

  themeConfig: {
    image: "img/ashell-social-card.png",
    navbar: {
      logo: {
        alt: "Ashell Logo",
        src: "img/logo_header.svg",
        srcDark: "img/logo_header_dark.svg",
      },
      items: [
        {
          to: "docs/intro",
          position: "left",
          label: "Getting Started",
        },
        {
          to: "docs/configuration",
          position: "left",
          label: "Configuration",
        },
        {
          to: "gallery",
          label: "Gallery",
          position: "left",
        },
        {
          href: "https://malpenzibo.github.io/ashell/dev-guide/",
          label: "Developer Guide",
          position: "left",
        },
        {
          type: "docsVersionDropdown",
          position: "right",
        },
        {
          position: "right",
          type: "html",
          value:
            "<a class='social' title='GitHub' href='https://github.com/MalpenZibo/ashell' target='_blank' rel='noopener noreferrer'><svg width='1.5rem' height='1.5rem' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_602_8)'><path fill-rule='evenodd' clip-rule='evenodd' d='M12 0C5.37 0 0 5.37 0 12C0 17.31 3.435 21.795 8.205 23.385C8.805 23.49 9.03 23.13 9.03 22.815C9.03 22.53 9.015 21.585 9.015 20.58C6 21.135 5.22 19.845 4.98 19.17C4.845 18.825 4.26 17.76 3.75 17.475C3.33 17.25 2.73 16.695 3.735 16.68C4.68 16.665 5.355 17.55 5.58 17.91C6.66 19.725 8.385 19.215 9.075 18.9C9.18 18.12 9.495 17.595 9.84 17.295C7.17 16.995 4.38 15.96 4.38 11.37C4.38 10.065 4.845 8.985 5.61 8.145C5.49 7.845 5.07 6.615 5.73 4.965C5.73 4.965 6.735 4.65 9.03 6.195C9.99 5.925 11.01 5.79 12.03 5.79C13.05 5.79 14.07 5.925 15.03 6.195C17.325 4.635 18.33 4.965 18.33 4.965C18.99 6.615 18.57 7.845 18.45 8.145C19.215 8.985 19.68 10.05 19.68 11.37C19.68 15.975 16.875 16.995 14.205 17.295C14.64 17.67 15.015 18.39 15.015 19.515C15.015 21.12 15 22.41 15 22.815C15 23.13 15.225 23.505 15.825 23.385C18.2072 22.5807 20.2772 21.0497 21.7437 19.0074C23.2101 16.965 23.9993 14.5143 24 12C24 5.37 18.63 0 12 0Z' fill='black'/></g><defs><clipPath id='clip0_602_8'><rect width='24' height='24' fill='black'/></clipPath></defs></svg></a>",
        },
      ],
    },
    footer: {
      style: "dark",
      links: [
        {
          title: "Docs",
          items: [
            {
              label: "Get Started",
              to: "/docs/intro",
            },
            {
              label: "Configuration",
              to: "/docs/configuration",
            },
            {
              label: "Developer Guide",
              href: "https://malpenzibo.github.io/ashell/dev-guide/",
            },
          ],
        },
        {
          title: "Community",
          items: [
            {
              label: "Matrix Chat",
              href: "https://matrix.to/#/#ashell:matrix.org",
            },
            {
              label: "Issues",
              href: "https://github.com/MalpenZibo/ashell/issues",
            },
          ],
        },
        {
          title: "More",
          items: [
            {
              label: "GitHub",
              href: "https://github.com/MalpenZibo/ashell",
            },
          ],
        },
      ],
      copyright: `Copyright © ${new Date().getFullYear()} Ashell. Built with Docusaurus.`,
    },
    prism: {
      theme: prismThemes.github,
      darkTheme: prismThemes.dracula,
      additionalLanguages: ["toml"],
    },
  } satisfies Preset.ThemeConfig,
};

export default config;
