Ctrl K
ComunidadGuías…

frontend/nuxt.config.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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
    }
  }
})