Files
RepoDructor/nuxt.config.ts
josedario87 7cb35b8c27 Implement Lucide Vue icon system and UI improvements
- Replace emoji icons with professional SVG icons from Lucide Vue
- Add collapsible MusicControls with compact top-right collapse button
- Improve icon system with dynamic sizing and proper prop handling
- Disable SSR to prevent hydration issues with audio APIs
- Update IconButton to support both emoji strings and SVG components
- Optimize bottom positioning for expanded vs collapsed states
- Document new icon system in DESIGN_SYSTEM.md
2025-08-03 20:01:31 -06:00

145 lines
3.7 KiB
TypeScript

// https://nuxt.com/docs/api/configuration/nuxt-config
import { defineNuxtConfig } from 'nuxt/config'
export default defineNuxtConfig({
compatibilityDate: '2025-08-02',
// Disable SSR completely to avoid hydration issues with client-side audio APIs
ssr: false,
devtools: {
enabled: true,
vscode: {},
timeline: {
enabled: true
}
},
// Server configuration for proxy compatibility
devServer: {
host: '0.0.0.0',
port: 3000,
https: false
},
// Additional development configuration for proxy
dev: process.env.NODE_ENV !== 'production',
// Vite configuration for HMR through proxy
vite: {
server: {
hmr: {
// Use proxy host instead of direct connection
host: 'musica.nucleoriofrio.com',
// Use default HTTPS port (443) through proxy
clientPort: 443,
protocol: 'wss'
}
}
},
modules: [
'@vueuse/nuxt',
['@vite-pwa/nuxt', {
registerType: 'autoUpdate',
includeAssets: ['favicon.ico', 'logo.png', 'logo-192.png', 'logo-512.png', 'logo-maskable-512.png', 'icon.svg'],
workbox: {
navigateFallback: '/',
globPatterns: [
'**/*.{js,css,html,ico,png,svg}',
'_nuxt/**/*.{js,css}',
'assets/**/*.{png,jpg,jpeg,svg,gif,webp}'
],
runtimeCaching: [
{
urlPattern: /^https?:\/\/.*\/api\/music\/.*/i,
handler: 'CacheFirst',
options: {
cacheName: 'music-cache',
expiration: {
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 30 // 30 days
}
}
},
{
urlPattern: /\.(png|jpg|jpeg|svg|gif|webp)$/,
handler: 'CacheFirst',
options: {
cacheName: 'images-cache',
expiration: {
maxEntries: 50,
maxAgeSeconds: 60 * 60 * 24 * 7 // 7 days
}
}
}
]
},
client: {
installPrompt: true,
periodicSyncForUpdates: 20
},
devOptions: {
enabled: false,
type: 'module',
navigateFallback: '/'
},
mode: 'development',
manifest: {
name: 'RepoDructor Music Player',
short_name: 'RepoDructor',
description: 'A beautiful glassmorphism music player for your local network',
theme_color: '#8b5cf6', // Purple from logo gradient
background_color: '#0f172a',
display: 'standalone',
orientation: 'portrait',
scope: '/',
start_url: '/',
categories: ['music', 'entertainment'],
lang: 'es',
dir: 'ltr',
icons: [
{
src: '/logo-192.png',
sizes: '192x192',
type: 'image/png',
purpose: 'any'
},
{
src: '/logo-512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any'
},
{
src: '/logo-maskable-512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'maskable'
},
{
src: '/logo-192.png',
sizes: '192x192',
type: 'image/png',
purpose: 'maskable'
}
]
}
}]
],
css: ['~/assets/css/main.css'],
// Nitro configuration for proxy support
nitro: {
experimental: {
wasm: true
},
// Development configuration for proxy
devProxy: process.env.NODE_ENV === 'development' ? {} : undefined
},
// Runtime configuration
runtimeConfig: {
public: {
musicPath: '/music'
}
},
})