All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
Implementa funcionalidad de copia en tres secciones del Informe: 📋 Funcionalidades agregadas: 1. Lista de Ingresos - Copiar Texto: Formato WhatsApp con emojis y legible - Copiar JSON: Formato estructurado para sistemas 2. Top 10 Clientes - Copiar Texto: Ranking formateado con métricas - Copiar JSON: Array de objetos con datos completos 3. Serie Temporal Acumulada - Copiar Texto: Evolución temporal con emojis - Copiar JSON: Datos completos para análisis ✨ Características: - Botones con iconos (i-lucide-copy y i-lucide-code) - Disabled cuando no hay datos disponibles - Alertas de confirmación al copiar - Formato texto optimizado para WhatsApp - Incluye metadata: rango de fechas y timestamp Uso: - Copiar Texto → Compartir en WhatsApp/Telegram - Copiar JSON → Integración con otros sistemas
38 lines
853 B
Vue
38 lines
853 B
Vue
<template>
|
|
<UApp>
|
|
<div class="brand-shell text-[#fef9f0]">
|
|
<NuxtRouteAnnouncer />
|
|
<NuxtLayout>
|
|
<NuxtPage />
|
|
</NuxtLayout>
|
|
</div>
|
|
</UApp>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
// Inicializar sistema de temas
|
|
const { loadTheme, initStorageListener, cleanupStorageListener } = useTheme()
|
|
|
|
// Signal that the app is ready
|
|
onMounted(() => {
|
|
// Cargar tema guardado (o aplicar el por defecto)
|
|
loadTheme()
|
|
|
|
// Inicializar sincronización de tema entre pestañas
|
|
initStorageListener()
|
|
|
|
// Add class to HTML element to hide loading screen
|
|
if (process.client) {
|
|
// Small delay to ensure everything is painted
|
|
setTimeout(() => {
|
|
document.documentElement.classList.add('nuxt-ready')
|
|
}, 100)
|
|
}
|
|
})
|
|
|
|
// Limpiar listeners al desmontar
|
|
onBeforeUnmount(() => {
|
|
cleanupStorageListener()
|
|
})
|
|
</script>
|