import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

import node from "@astrojs/node";

import starlightOpenAPI, { openAPISidebarGroups } from 'starlight-openapi'
import tailwindcss from "@tailwindcss/vite";

import svelte from '@astrojs/svelte';

// https://astro.build/config
export default defineConfig({
  integrations: [starlight({
    title: 'wanderer Documentation',
    logo: {
      light: '/src/assets/logo_text_dark.svg',
      dark: '/src/assets/logo_text_light.svg',
      replacesTitle: true
    },
    social: [
      { icon: 'github', label: 'GitHub', href: 'https://github.com/flomp/wanderer' },
    ],
    components: {
      Footer: './src/components/footer.astro'
    },
    plugins: [
      starlightOpenAPI([
        {
          base: 'api-reference',
          label: 'API Reference',
          schema: 'wanderer.openapi.yaml',
        },
      ]),
    ],
    sidebar: [
      {
        label: 'Welcome to wanderer',
        link: '/welcome'
      },
      {
        label: 'Using wanderer',
        items: [{
          label: 'Authentication',
          link: '/use/authentication/'
        }, {
          label: 'Create a trail',
          link: '/use/create-a-trail/'
        },
        {
          label: 'Summit logs',
          link: '/use/summit-logs/'
        },
        {
          label: 'Interact with the community',
          link: '/use/community-interaction/'
        },
        {
          label: 'Share trails',
          link: '/use/share-trails/'
        }, {
          label: 'Lists',
          link: '/use/lists/'
        },
        {
          label: 'Statistics',
          link: '/use/statistics/'
        },
        {
          label: 'Customize the map',
          link: '/use/customize-map/'
        },
        {
          label: 'Import/Export',
          link: '/use/import-export/'
        },
        {
          label: 'Integrations',
          link: '/use/integrations/'
        },
        ]
      },
      {
        label: 'Running wanderer',
        items: [
          {
            label: 'Installation',
            link: '/run/installation/'
          },
          {
            label: 'Environment configuration',
            link: '/run/environment-configuration/'
          },
          {
            label: 'Frontend configuration',
            items: [
              { label: 'Edit the "About" section', link: '/run/frontend-configuration/about' },
            ]
          },
          {
            label: 'Backend configuration',
            items: [
              { label: 'Overview', link: '/run/backend-configuration/' },
              { label: 'SMTP', link: '/run/backend-configuration/smtp/' },
              { label: 'OAuth2', link: '/run/backend-configuration/oauth2/' },
              { label: 'Backing up your server', link: '/run/backend-configuration/backup-server/' },
              { label: 'Custom categories', link: '/run/backend-configuration/custom-categories/' },
            ]
          }
        ]
      },
      {
        label: 'Develop wanderer',
        items: [
          {
            label: 'Local development',
            link: '/develop/local-development/'
          },
          {
            label: 'API',
            link: '/develop/api/'
          },
          {
            label: 'Federation',
            link: '/develop/federation/'
          },
        ]
      },
      ...openAPISidebarGroups,
      {
        label: 'Changelog',
        link: '/changelog/',
      }],
    customCss: ['./src/custom.css', './src/tailwind.css', '@fontsource/ibm-plex-sans/400.css', '@fontsource/ibm-plex-sans/600.css', '@fontsource/ibm-plex-mono/400.css', '@fontsource/ibm-plex-mono/600.css']
  }), svelte()],
  output: "server",
  vite: { plugins: [tailwindcss()] },
  adapter: node({
    mode: "standalone"
  }),
  redirects: {
    '/run/changelog/': '/changelog/',
    '/run/backup-server/': '/run/backend-configuration/backup-server/',
    '/run/custom-categories/': '/run/backend-configuration/custom-categories/',
  },
});