Aplicación web ligera para ver "planos" (plane cards) localmente. Muestra imágenes grandes, texto (inglés/español) y sustituye símbolos de maná como {R} por iconos SVG.
Contenido
src/App.vue— Componente principal (Vue 3,<script setup>). Gestiona navegación entre planos, reproducción de sonido al cambiar de plano, overlay fullscreen con fade-out, y alternador de idioma (EN/ES).src/assets/planes.json— Datos locales de los planos (incluyetextytext_es).src/assets/symbology.json— Símbolos de maná de Scryfall (camposymbolysvg_uri).src/assets/*.wav— Efectos de sonido para el botón (asegúrate de tenersound1.wav,sound2.wav,sound3.wav).
Requisitos
- Node.js (>= 16 recomendable)
- npm
Instalación y ejecución en desarrollo
- Instala dependencias:
npm install- Ejecuta el servidor de desarrollo (Vite):
npm run dev- Abre la URL que muestre la consola (por defecto
http://localhost:5173).
Construcción para producción
npm run build
npm run previewQué hace la app
- Carga los planos desde
src/assets/planes.json(sin llamadas externas). - Al pulsar "Cambiar Plano" reproduce uno de varios sonidos al azar y muestra un overlay fullscreen con la imagen del plano; el overlay se desvanece y la vista hace scroll hacia el título del plano.
- Puedes alternar entre texto en inglés y español con el botón
EN/ES. - Los tokens de símbolo (p. ej.
{R},{2},{W/U}) detectados entextotext_esse sustituyen por imágenes SVG usandosrc/assets/symbology.json.
Notas técnicas importantes
-
Sustitución de símbolos:
- El código sustituye tokens
{...}por etiquetas<img>constyleinline env-htmlpara evitar problemas conscopedCSS y conv-html. - Si prefieres usar una clase CSS (
.inline-symbol), quitascopeddel bloque<style>ensrc/App.vueo modifica la implementación para renderizar VNodes en lugar de HTML crudo.
- El código sustituye tokens
-
Assets ausentes:
- Si faltan los archivos de sonido (
sound1.wavetc.) la construcción puede fallar porque son importaciones estáticas. Asegúrate de poner los archivos ensrc/assets/o sustituir las importaciones por carga dinámica.
- Si faltan los archivos de sonido (
-
Seguridad:
v-htmlintroduce HTML sin sanitizar. En este proyecto los datos vienen del archivo localplanes.json; si más adelante cargas contenido remoto, considera sanitizar el HTML antes de insertarlo.
Personalización rápida
- Cambiar duración del overlay: modifica los
setTimeoutenfetchPlanesAndShow()ensrc/App.vue. - Cambiar tamaño/alineado de los iconos: ajusta la cadena
inlineStyleen el reemplazo de símbolos (o usa.inline-symbolsi quitasscoped). - Persistir idioma: puedes guardar
showEnglishenlocalStoragey restaurarlo al cargar.