Files
website/nuxt.config.ts
matt ec72c5d62b
Some checks failed
build-website / build (push) Failing after 1m2s
Initial import of HarborSmith website
2025-09-18 22:20:01 +02:00

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')
}
}
}
}
})