import { defineConfig } from 'astro/config';
import { i18n, filterSitemapByDefaultLocale } from "astro-i18n-aut/integration";
import sitemap from "@astrojs/sitemap";
import Icons from 'unplugin-icons/vite'
import mdx from '@astrojs/mdx';
import glsl from 'vite-plugin-glsl';

import svelte from "@astrojs/svelte";
import UnoCSS from 'unocss/astro'

const defaultLocale = "de";
const locales = {
  en: "en", // the `defaultLocale` value must present in `locales` keys
  de: "de",
};

const DEFAULT_LAYOUT = '@layouts/Post.astro';

function setDefaultLayout() {
  return function (_, file) {
    const { frontmatter } = file.data.astro;
    if (!frontmatter.layout) frontmatter.layout = DEFAULT_LAYOUT;
  };
}

// https://astro.build/config
export default defineConfig({
  site: "https://max-richter.dev",
  trailingSlash: "never",
  prefetch: true,
  build: {
    format: "file",
  },
  vite: {
    plugins: [
      glsl(),
      Icons({
        compiler: 'svelte',
      }),
    ],
  },
  markdown: {
    remarkPlugins: [setDefaultLayout]
  },
  integrations: [
    mdx(),
    svelte(),
    UnoCSS({
      injectReset: true
    }),
    i18n({
      exclude: ["pages/**/*.json.ts", "pages/api/**/*",],
      locales,
      defaultLocale,
    }),
    sitemap({
      i18n: {
        locales,
        defaultLocale,
      },
      filter: filterSitemapByDefaultLocale({ defaultLocale }),
    }),
  ]
});
