import { icons as lucideIconSet } from '@iconify-json/lucide' const lucideIconNames = Object.keys(lucideIconSet.icons).sort() const lucideIconAliases = Object.entries(lucideIconSet.aliases || {}).reduce>( (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 } } })