- Agrega @pinia/nuxt, idb y store central (stores/music.ts) - Cacheo manual desde menú contextual y borrado (TrackContextMenu) - Ícono verde para canciones cacheadas, sin auto-cache al reproducir - Toasts de feedback (stores/toast.ts, ToastContainer) - Fallback offline de listado a IndexedDB; fix MUSIC_DIR absoluto en preview/prod - Ajustes PWA: navigateFallback '/', devOptions, workbox condicional - Estilos y animación del context menu (tema light/dark, blur fuerte) - Correcciones de sintaxis y posicionamiento exacto al cursor
30 lines
1.1 KiB
Vue
30 lines
1.1 KiB
Vue
<template>
|
|
<div>
|
|
<slot />
|
|
<ToastContainer />
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import ToastContainer from '~/components/ToastContainer.client.vue'
|
|
useHead({
|
|
title: 'RepoDructor - Music Player',
|
|
meta: [
|
|
{ name: 'description', content: 'A beautiful glassmorphism music player for your local network' },
|
|
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
|
{ name: 'theme-color', content: '#8b5cf6' },
|
|
{ name: 'mobile-web-app-capable', content: 'yes' },
|
|
{ name: 'apple-mobile-web-app-capable', content: 'yes' },
|
|
{ name: 'apple-mobile-web-app-status-bar-style', content: 'default' },
|
|
{ name: 'apple-mobile-web-app-title', content: 'RepoDructor' }
|
|
],
|
|
link: [
|
|
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
|
|
{ rel: 'icon', type: 'image/png', sizes: '192x192', href: '/logo-192.png' },
|
|
{ rel: 'apple-touch-icon', sizes: '192x192', href: '/logo-192.png' },
|
|
{ rel: 'apple-touch-icon', sizes: '512x512', href: '/logo-512.png' },
|
|
{ rel: 'manifest', href: '/manifest.webmanifest' }
|
|
]
|
|
})
|
|
</script>
|