import { resolve } from 'node:path'; import { fileURLToPath, URL } from 'node:url'; import { i18nConfig } from './i18n/i18.config'; export default defineNuxtConfig({ compatibilityDate: '2025-07-15', ssr: true, devtools: { enabled: true, }, typescript: { strict: true, }, modules: [ '@nuxtjs/i18n', '@nuxt/icon', '@pinia/nuxt', '@nuxtjs/apollo', '@vueuse/nuxt', '@element-plus/nuxt', 'nuxt-marquee', '@nuxt/hints', '@nuxt/image', ], i18n: i18nConfig, apollo: { autoImports: true, clients: { default: { httpEndpoint: `https://api.${process.env.SCHON_BASE_DOMAIN}/graphql/`, connectToDevTools: true, authType: 'Bearer', authHeader: 'X-SCHON-AUTH', tokenStorage: 'cookie', tokenName: `${process.env.SCHON_PROJECT_NAME?.toLowerCase().replace(/\s+/g, '-')}-access`, }, }, }, runtimeConfig: { public: { schonProjectName: process.env.SCHON_PROJECT_NAME, schonBaseDomain: process.env.SCHON_BASE_DOMAIN, }, }, app: { head: { charset: 'utf-8', viewport: 'width=device-width, initial-scale=1', title: process.env.SCHON_PROJECT_NAME, titleTemplate: `${process.env.SCHON_PROJECT_NAME} | %s`, link: [ { rel: 'icon', type: 'image/x-icon', href: `https://${process.env.SCHON_BASE_DOMAIN}/favicon.ico`, }, ], }, pageTransition: { name: 'opacity', mode: 'out-in', }, }, css: [ './app/assets/styles/main.scss', './app/assets/styles/global/fonts.scss', 'swiper/css', 'swiper/css/pagination', 'swiper/css/navigation', 'swiper/css/effect-fade', 'swiper/css/scrollbar', ], alias: { '@graphql': fileURLToPath(new URL('./app/graphql', import.meta.url)), '@appConstants': fileURLToPath(new URL('./app/constants', import.meta.url)), '@composables': fileURLToPath(new URL('./app/composables', import.meta.url)), '@types': fileURLToPath(new URL('./types', import.meta.url)), }, vite: { envDir: '../', envPrefix: 'SCHON_', css: { preprocessorOptions: { scss: { additionalData: ` @use "@/assets/styles/global/variables.scss" as *; @use "@/assets/styles/global/mixins.scss" as *; `, }, }, }, }, image: { domains: [ `https://api.${process.env.SCHON_BASE_DOMAIN}`, ], }, hooks: { 'pages:extend'(pages) { pages.push( { name: 'activate-user', path: '/activate-user', file: resolve(__dirname, 'app/pages/index.vue'), }, { name: 'payment', path: '/payment', file: resolve(__dirname, 'app/pages/index.vue'), }, ); }, }, });