import vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'

export default defineNuxtConfig({
  ssr: false,

  imports: {
    dirs: ['services', 'stores'],
  },

  app: {
    head: {
      titleTemplate: '%s - VYA',
      title: 'VYA',
      charset: 'utf-8',
      viewport: 'width=device-width, initial-scale=1',
      meta: [
        {
          name: 'description',
          content:
            'Your One-Stop Hub for all healthcare needs supply with a faster, more affordable procurement procedure that increases supplier accessibility at any location in KSA',
        },
        { name: 'msapplication-TileColor', content: '#0460A9' },
        { name: 'theme-color', content: '#0460A9' },
      ],
      link: [
        { rel: 'apple-touch-icon', sizes: '180x180', href: '/favicon/apple-touch-icon.png' },
        { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/favicon/favicon-32x32.png' },
        { rel: 'icon', type: 'image/png', sizes: '16x16', href: '/favicon/favicon-16x16.png' },
        { rel: 'manifest', href: '/favicon/site.webmanifest' },
        { rel: 'mask-icon', href: '/favicon/safari-pinned-tab.svg', color: '#0460A9' },
        { rel: 'preconnect', href: 'https://fonts.gstatic.com' },
        {
          rel: 'stylesheet',
          href: 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Rubik:wght@300;400;500;600&display=swap',
        },
      ],
    },
  },

  css: [
    '@mdi/font/css/materialdesignicons.min.css',
    'vuetify/lib/styles/main.sass',
    '~/assets/scss/global.scss',
    '~/assets/scss/_homePage.scss',
    '~/assets/scss/productsPage.scss',
  ],

  build: {
    transpile: ['vuetify'],
  },

  modules: [
    (_options, nuxt) => {
      nuxt.hooks.hook('vite:extendConfig', (config) => {
        config.plugins!.push(vuetify({ autoImport: true }))
      })
    },
    '@pinia/nuxt',
    '@nuxtjs/i18n',
    '@vite-pwa/nuxt',
  ],

  pwa: {
    registerType: 'autoUpdate',
    manifest: {
      name: 'VYA Healthcare',
      short_name: 'VYA',
      lang: 'en',
      theme_color: '#29A4A7',
      background_color: '#ffffff',
      icons: [
        {
          src: '/favicon/android-chrome-192x192.png',
          sizes: '192x192',
          type: 'image/png',
        },
        {
          src: '/favicon/android-chrome-512x512.png',
          sizes: '512x512',
          type: 'image/png',
        },
      ],
    },
    client: {
      installPrompt: true,
      periodicSyncForUpdates: 3600, // Check for SW updates every hour
    },
    workbox: {
      navigateFallback: '/',
      globPatterns: ['**/*.{js,css,png,svg,ico}'],
      // Don't cache HTML or Firebase SW — let network serve fresh HTML
      globIgnores: ['**/firebase-messaging-sw.js', '**/*.html'],
      // Use NetworkFirst for navigation so users always get fresh index.html
      runtimeCaching: [
        {
          urlPattern: ({ request }) => request.mode === 'navigate',
          handler: 'NetworkFirst',
          options: {
            cacheName: 'pages',
            expiration: {
              maxEntries: 10,
              maxAgeSeconds: 60 * 60, // 1 hour
            },
          },
        },
      ],
    },
  },

  vite: {
    vue: {
      template: {
        transformAssetUrls,
      },
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `
            $height_menu: 65px;
            $color-primary: #043460;
            $color-secondary: #29a4a7;
            $color-bg-body: #f7f7f7;
            $color-white: #ffffff;
            $color-black: #000000;
            $color-text-grayF5: #f5f5f5;
            $color-text-grayF7: #f7f7fb;
            $color-text-grayFC: #cfcfcf;
            $color-text-gray50: #505050;
            $color-text-gray33: #333333;
            $color-text-gray125: #485156;
            $color-text-grayD0: #d0d0d0;
          `,
          silenceDeprecations: ['import', 'global-builtin', 'color-functions'],
        },
      },
    },
  },

  i18n: {
    locales: [
      { code: 'en', iso: 'en-US', file: 'en.json' },
      { code: 'ar', iso: 'ar-EG', file: 'ar.json' },
    ],
    defaultLocale: 'en',
    strategy: 'prefix',
    lazy: true,
    detectBrowserLanguage: {
      useCookie: true,
      cookieKey: 'i18n_redirected',
    },
    bundle: {
      optimizeTranslationDirective: false,
    },
  },

  runtimeConfig: {
    public: {
      apiBaseUrl: process.env.NUXT_PUBLIC_API_BASE_URL || 'https://api.vyahealthcare.sa/api/v1',
      apiImgUrl: process.env.NUXT_PUBLIC_API_IMG_URL || 'https://api.vyahealthcare.sa',
      googleMapsApiKey: process.env.NUXT_PUBLIC_GOOGLE_MAPS_API_KEY || '',
      googleMapsMapId: process.env.NUXT_PUBLIC_GOOGLE_MAPS_MAP_ID || 'DEMO_MAP_ID',
      firebase: {
        apiKey: process.env.NUXT_PUBLIC_FIREBASE_API_KEY || 'AIzaSyCEDgUZ8IOzyjV3Tgk6YhWqoHKPc3BpYDU',
        authDomain: process.env.NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN || 'vya-project-994dd.firebaseapp.com',
        projectId: process.env.NUXT_PUBLIC_FIREBASE_PROJECT_ID || 'vya-project-994dd',
        storageBucket: process.env.NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET || 'vya-project-994dd.appspot.com',
        messagingSenderId: process.env.NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID || '583785036090',
        appId: process.env.NUXT_PUBLIC_FIREBASE_APP_ID || '1:583785036090:web:1598afa8c385d97667b803',
        measurementId: process.env.NUXT_PUBLIC_FIREBASE_MEASUREMENT_ID || 'G-XKE7LEB02M',
        vapidKey: process.env.NUXT_PUBLIC_FIREBASE_VAPID_KEY || 'BFJSwuDPjqxc7-p0tjnBHUuGImoFTaX3ty3eaKzYulszLvYUvCpDLRRl3ceZ2AyT4lUmVsnmY40-7_T6w7KbkUk',
      },
    },
  },

  compatibilityDate: '2025-01-01',
})
