frontend/nuxt.config.ts
Rama main · réplica de lectura del repositorio original.
import { icons as lucideIconSet } from '@iconify-json/lucide'
const lucideIconNames = Object.keys(lucideIconSet.icons).sort()
const lucideIconAliases = Object.entries(lucideIconSet.aliases || {}).reduce<Record<string, string[]>>(
(aliases, [name, alias]) => {
const parent = alias.parent
aliases[parent] ||= []
aliases[parent].push(name)
return aliases
},
{}
)
const lucideIconCatalog = lucideIconNames.map(name => ({
name: `i-lucide-${name}`,
aliases: (lucideIconAliases[name] || []).sort()
}))
const lucideBundleIcons = [
...lucideIconNames,
...Object.keys(lucideIconSet.aliases || {})
].map(name => `lucide:${name}`)
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
modules: [
'@nuxt/eslint',
'@nuxt/ui',
'@nuxt/fonts'
],
// SPA mode - disable SSR for embedding in Go binary
ssr: false,
devtools: {
enabled: true
},
css: ['~/assets/css/main.css'],
runtimeConfig: {
public: {
apiBase: process.env.NUXT_PUBLIC_API_BASE || '',
lucideIconCatalog
}
},
compatibilityDate: '2025-01-15',
// Output static files to backend for embedding
nitro: {
output: {
dir: '../backend/cmd/server/.output',
publicDir: '../backend/cmd/server/dist'
}
},
eslint: {
config: {
stylistic: {
commaDangle: 'never',
braceStyle: '1tbs'
}
}
},
// Font configuration
fonts: {
families: [
{
name: 'Manrope',
provider: 'google',
weights: [200, 300, 400, 500, 600, 700, 800]
}
]
},
icon: {
clientBundle: {
icons: lucideBundleIcons,
scan: true,
sizeLimitKb: 768
}
}
})