'use client'; import { useEffect, useState } from 'react'; import MetricObserver from './MetricObserver'; import { ExternalLink, Tag } from 'lucide-react'; export default function ClientSidebars({ groupedAds, rotationSeconds }: { groupedAds: Record, rotationSeconds: number }) { // Si no hay grupos, no mostrar nada const groups = Object.keys(groupedAds); if (groups.length === 0) return null; return (
{groups.map(eslogan => ( ))}
); } function ClientCarouselGroup({ eslogan, ads, rotationSeconds }: { eslogan: string, ads: any[], rotationSeconds: number }) { const [currentIndex, setCurrentIndex] = useState(0); useEffect(() => { if (!ads || ads.length <= 1) return; const delay = (rotationSeconds && rotationSeconds > 0) ? rotationSeconds * 1000 : 5000; const interval = setInterval(() => { setCurrentIndex(prev => (prev + 1) % ads.length); }, delay); return () => clearInterval(interval); }, [ads, rotationSeconds]); if (!ads || ads.length === 0) return null; const activeAd = ads[currentIndex]; if (!activeAd.imagen_destacada_id) return null; const ENDPOINT = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT || 'https://appwrite.almeira.com.co/v1'; const PROJECT_ID = process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID || '69b84df5003bd8957c5c'; let imgUrl = activeAd.og_image_url || null; if (activeAd.imagen_destacada_id) { if (typeof activeAd.imagen_destacada_id === 'object' && activeAd.imagen_destacada_id.bucket_id) { imgUrl = `${ENDPOINT}/storage/buckets/${activeAd.imagen_destacada_id.bucket_id}/files/${activeAd.imagen_destacada_id.file_id}/view?project=${PROJECT_ID}`; } else if (typeof activeAd.imagen_destacada_id === 'string') { imgUrl = `${ENDPOINT}/storage/buckets/media/files/${activeAd.imagen_destacada_id}/view?project=${PROJECT_ID}`; } } const recordClickAndGo = () => { fetch('/api/metrics', { method: 'POST', body: JSON.stringify({ postId: activeAd.$id, tipo: 'click' }) }); if (activeAd.url_destino) { window.open(activeAd.url_destino, '_blank'); } }; return (
{/* Eslogan del Contrato / Patrocinador */}
{eslogan !== 'General' ? eslogan : 'Patrocinado'}
{/* Slider de Anuncios */}
{/* eslint-disable-next-line @next/next/no-img-element */} {activeAd.titulo} {/* Badge Overlay */}
{activeAd.tipo_publicacion_id?.descripcion || 'Promoción'}
{activeAd.url_destino && (
)}
{/* Progress/Dots */} {ads.length > 1 && (
{ads.map((_: any, idx: number) => (
))}
)}
); }