160 lines
4.0 KiB
TypeScript
160 lines
4.0 KiB
TypeScript
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')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|