Initial import of HarborSmith website
Some checks failed
build-website / build (push) Failing after 1m2s
Some checks failed
build-website / build (push) Failing after 1m2s
This commit is contained in:
159
nuxt.config.ts
Normal file
159
nuxt.config.ts
Normal file
@@ -0,0 +1,159 @@
|
||||
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')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user