import { existsSync, writeFileSync } from 'node:fs' import { join } from 'node:path' // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ compatibilityDate: '2024-04-03', devtools: { enabled: true }, // Static Site Generation ssr: true, nitro: { prerender: { routes: ['/'], crawlLinks: true } }, // Modules modules: [ '@nuxt/image', '@nuxtjs/tailwindcss', '@nuxtjs/google-fonts', // '@nuxtjs/seo', // Temporarily disabled - incompatible with Nuxt 3.19.2 '@vueuse/nuxt', '@vueuse/motion/nuxt' ], // Google Fonts googleFonts: { families: { 'Inter': [300, 400, 500, 600, 700, 800], 'Playfair+Display': [400, 700, 900] }, display: 'swap', preload: true, prefetch: false, preconnect: true }, // SEO - disabled temporarily // site: { // url: 'https://harborsmith.com', // name: 'Harbor Smith', // description: 'Premium yacht charter and maintenance services in San Francisco Bay', // defaultLocale: 'en' // }, // ogImage: { // enabled: false // }, // Image optimization image: { quality: 90, format: ['webp', 'jpg'], screens: { xs: 320, sm: 640, md: 768, lg: 1024, xl: 1280, xxl: 1536, '2xl': 1536 } }, // Tailwind CSS tailwindcss: { exposeConfig: true, viewer: false, config: { content: [], theme: { extend: { colors: { 'harbor-blue': '#001f3f', 'harbor-navy': '#1e3a5f', 'harbor-gold': '#b48b4e', 'harbor-amber': '#9d7943', 'harbor-yellow': '#c9a56f', 'harbor-light': '#f0f0f0' }, fontFamily: { sans: ['Inter', 'sans-serif'], serif: ['Playfair Display', 'serif'] }, animation: { 'fade-in': 'fadeIn 0.6s ease-out', 'slide-up': 'slideUp 0.6s ease-out', 'scale-in': 'scaleIn 0.5s ease-out' }, keyframes: { fadeIn: { '0%': { opacity: '0' }, '100%': { opacity: '1' } }, slideUp: { '0%': { transform: 'translateY(30px)', opacity: '0' }, '100%': { transform: 'translateY(0)', opacity: '1' } }, scaleIn: { '0%': { transform: 'scale(0.9)', opacity: '0' }, '100%': { transform: 'scale(1)', opacity: '1' } } }, backgroundImage: { 'gradient-warm': 'linear-gradient(135deg, #b48b4e 0%, #c9a56f 100%)', 'gradient-blue': 'linear-gradient(135deg, #001f3f 0%, #1e3a5f 100%)' } } } } }, // App configuration app: { head: { title: 'Harbor Smith - Premium Yacht Charter & Maintenance', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { name: 'description', content: 'Experience luxury yacht charters and professional maintenance services in San Francisco Bay with Harbor Smith.' }, { name: 'format-detection', content: 'telephone=no' } ], link: [ { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } ] }, pageTransition: { name: 'page', mode: 'out-in' }, layoutTransition: { name: 'layout', mode: 'out-in' } }, // CSS css: [ '~/assets/css/voyage-layout.css', '~/assets/css/themes.css', '~/assets/css/main.css' ], // Runtime config runtimeConfig: { public: { siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'https://harborsmith.com' } }, hooks: { 'prepare:types': () => { const buildDir = join(process.cwd(), '.nuxt') const content = JSON.stringify({ extends: './tsconfig.json' }, null, 2) for (const file of ['tsconfig.app.json', 'tsconfig.shared.json']) { const target = join(buildDir, file) if (!existsSync(target)) { writeFileSync(target, content + '\n', 'utf8') } } } } })