// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: "2025-07-15",
  devtools: { enabled: false },
  modules: ["@nuxt/eslint", "@nuxt/ui", "@nuxtjs/plausible"],
  fonts: {
    providers: {
      google: false,
      fontsource: false,
    },
  },
  colorMode: {
    preference: "system",
    fallback: "light",
    classSuffix: "",
  },
  app: {
    head: {
      htmlAttrs: { lang: "en" },
      title: "Ghost Guild",
      titleTemplate: "%s · Ghost Guild",
      link: [
        { rel: "preconnect", href: "https://fonts.googleapis.com" },
        {
          rel: "preconnect",
          href: "https://fonts.gstatic.com",
          crossorigin: "",
        },
        {
          rel: "stylesheet",
          href: "https://fonts.googleapis.com/css2?family=Brygada+1918:ital,wght@0,400..700;1,400..700&family=Commit+Mono&display=swap",
        },
      ],
    },
  },
  build: {
    transpile: ["vue-cal"],
  },
  routeRules: {
    "/policies/code-of-conduct": {
      redirect: {
        to: "https://publish.obsidian.md/baby-ghosts-corp-docs/Public/Policies/Code+of+Conduct",
        statusCode: 302,
      },
    },
    "/policies/conflict-resolution": {
      redirect: {
        to: "https://publish.obsidian.md/baby-ghosts-corp-docs/Public/Policies/Conflict+Resolution+Policy",
        statusCode: 302,
      },
    },
  },
  plausible: {
    domain: "ghostguild.org",
  },
  css: ["~/assets/css/main.css"],
  vite: {
    optimizeDeps: {
      include: ["@plausible-analytics/tracker"],
    },
    server: {
      allowedHosts: [".trycloudflare.com", ".ngrok-free.app", ".ngrok.io"],
      hmr: {
        port: 24678,
      },
      watch: {
        ignored: [
          "**/.git/**",
          "**/.nuxt/**",
          "**/.output/**",
          "**/node_modules/**",
          "**/dist/**",
          "**/e2e/**",
          "**/coverage/**",
        ],
      },
    },
  },
  nitro: {
    watchOptions: {
      ignored: [
        "**/.git/**",
        "**/.nuxt/**",
        "**/.output/**",
        "**/node_modules/**",
        "**/dist/**",
        "**/e2e/**",
        "**/coverage/**",
      ],
    },
  },
  runtimeConfig: {
    // Private keys (server-side only)
    mongodbUri:
      process.env.MONGODB_URI || "mongodb://localhost:27017/ghostguild",
    jwtSecret: process.env.JWT_SECRET || "",
    resendApiKey: process.env.RESEND_API_KEY || "",
    helcimApiToken: process.env.HELCIM_API_TOKEN || "", // also exposed to client via public.helcimToken
    slackBotToken: process.env.SLACK_BOT_TOKEN || "",
    slackAdminBotToken: process.env.SLACK_ADMIN_BOT_TOKEN || "",
    slackSigningSecret: process.env.SLACK_SIGNING_SECRET || "",
    slackVettingChannelId: process.env.SLACK_VETTING_CHANNEL_ID || "",
    oidcClientId: process.env.OIDC_CLIENT_ID || "outline-wiki",
    oidcClientSecret: process.env.OIDC_CLIENT_SECRET || "",
    oidcCookieSecret: process.env.OIDC_COOKIE_SECRET || "",
    outlineApiKey: process.env.OUTLINE_API_KEY || "",
    helcimMonthlyPlanId: process.env.NUXT_HELCIM_MONTHLY_PLAN_ID || "",
    helcimAnnualPlanId: process.env.NUXT_HELCIM_ANNUAL_PLAN_ID || "",

    // Public keys (available on client-side)
    public: {
      helcimToken: process.env.HELCIM_API_TOKEN || "",
      helcimAccountId: process.env.NUXT_PUBLIC_HELCIM_ACCOUNT_ID || "",
      cloudinaryCloudName:
        process.env.NUXT_PUBLIC_CLOUDINARY_CLOUD_NAME || "divzuumlr",
      appUrl: process.env.NUXT_PUBLIC_APP_URL || "http://localhost:3000",
      comingSoon: process.env.NUXT_PUBLIC_COMING_SOON || "false",
      helcimPortalUrl: process.env.NUXT_PUBLIC_HELCIM_PORTAL_URL || "",
    },
  },
});
