<?php include 'files/guardiankey.php'; ?>
<?php
ob_start();
session_start();
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/../logs/php_errors.log');
error_reporting(E_ALL);
ob_end_clean();
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Prueba Social FlowCMS™ De OrozDesign Powered By OrozCO</title>
  <meta name="robots" content="noindex, nofollow">

    <link rel="icon" type="image/png" href="img/favicon.png">
    <link rel="apple-touch-icon" href="img/apple-touch-icon.png">

    <?php include 'files/gtm-head.php'; ?>
    
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Barlow:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
    
    <script src="https://unpkg.com/lucide@latest"></script>

    <link rel="stylesheet" href="style.css">
    <script src="files/header-manager.js"></script>
    
    <style>
    body {
    --brand-primary: #07162d; 
    --brand-secondary: #ffc857;
    --brand-accent: #9e1428; 
    --brand-light: #f5f5f5;
    --brand-dark: #040d1a; 
    }
        #preview-wrapper {
            border: 1px solid #e5e7eb; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
            overflow: hidden; width: 100%; background-color: #fff;
        }
        #preview-map-container iframe {
            width: 100%;
            height: 100%;
            border: 0;
        }

        .toast-container {
            position: fixed;
            bottom: 20px;
            right: 20px;
            z-index: 1000;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .toast {
            background-color: #333;
            color: white;
            padding: 15px;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
            opacity: 0;
            transform: translateY(20px);
            transition: opacity 0.3s ease-out, transform 0.3s ease-out;
            min-width: 250px;
        }
        .toast.show {
            opacity: 1;
            transform: translateY(0);
        }

        #preview-reviews-track {
            display: flex;
            gap: 1rem;
            overflow-x: auto;
            padding-bottom: 0.5rem;
        }
        .preview-review-card {
            flex: 0 0 80%;
        }
        @media (min-width: 640px) {
            .preview-review-card { flex: 0 0 45%; }
        }
    </style>
</head>
<body data-page-title="SiteFlow® Reseñas De Clientes"
      data-page-subtitle="Gestiona el encabezado, las reseñas y los enlaces a plataformas externas"
      data-page-icon="star">

    <div id="toast-container" class="toast-container"></div>

    <?php include 'files/gtm-body.php'; ?>

<div class="relative min-h-screen md:flex">

    <div id="sidebar-overlay" class="fixed inset-0 bg-black bg-opacity-50 z-30 hidden md:hidden"></div>
    <div id="task-panel-overlay" class="off-canvas-overlay"></div> 
    
    <?php include 'cms-menu.php'; ?>

    <main class="flex-1 overflow-y-auto">
        <header class="bg-white shadow-sm p-4 flex justify-between items-center sticky top-0 z-20">
            <button id="mobile-menu-button" class="md:hidden text-gray-600 hover:text-gray-800">
                <i data-lucide="menu" class="w-6 h-6"></i>
            </button>
            <div class="page-header-container">
                <h2 id="page-title"></h2>
                <p id="page-subtitle"></p>
            </div>
        </header>

        <div id="content-area" class="p-4 md:p-8">
            <form id="reviews-editor-form" action="cms/social-proof-update.php" method="POST">
                <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
                    
                    <div class="lg:col-span-1 bg-white p-6 rounded-xl shadow-md space-y-6">
                        
                        <div>
                            <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2"><i data-lucide="text" class="w-6 h-6 text-[var(--color-primary)]"></i> ENCABEZADO DE LA SECCIÓN</h4>
                            <div class="space-y-4">
                                <div>
                                    <label for="reviews-badge" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Encabezado (Badge)</label>
                                    <input type="text" id="reviews-badge" name="reviews-badge" class="w-full p-3 border border-gray-300 rounded-lg" value="Real stories • Real results">
                                </div>
                                <div>
                                    <label for="reviews-title-1" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Título (Línea 1)</label>
                                    <input type="text" id="reviews-title-1" name="reviews-title-1" class="w-full p-3 border border-gray-300 rounded-lg" value="WHAT OUR CUSTOMERS SAY">
                                </div>
                                <div>
                                    <label for="reviews-title-2" class="block text-gray-700 text-sm font-bold mb-2 uppercase">Título (Línea 2)</label>
                                    <input type="text" id="reviews-title-2" name="reviews-title-2" class="w-full p-3 border border-gray-300 rounded-lg" value="REVIEWS YOU CAN VERIFY">
                                </div>
                            </div>
                        </div>

                        <div class="border-t border-gray-200 pt-6">
                             <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2"><i data-lucide="star" class="w-6 h-6 text-[var(--color-primary)]"></i> GESTIÓN DE RESEÑAS</h4>
                             <div id="reviews-repeater" class="space-y-4"></div>
                             <button type="button" id="add-review-btn" class="mt-4 btn-secondary font-bold py-2 px-4 rounded-lg flex items-center justify-center gap-2 uppercase text-sm"><i data-lucide="plus" class="w-4 h-4"></i> Añadir Reseña</button>
                             <input type="hidden" id="reviews-json-input" name="reviews_json">
                        </div>

                        <div class="border-t border-gray-200 pt-6">
                             <h4 class="text-xl font-extrabold text-gray-700 mb-4 flex items-center gap-2"><i data-lucide="link" class="w-6 h-6 text-[var(--color-primary)]"></i> ENLACES EXTERNOS</h4>
                             <div id="links-repeater" class="space-y-4"></div>
                             <button type="button" id="add-link-btn" class="mt-4 btn-secondary font-bold py-2 px-4 rounded-lg flex items-center justify-center gap-2 uppercase text-sm"><i data-lucide="plus" class="w-4 h-4"></i> Añadir Enlace</button>
                             <input type="hidden" id="links-json-input" name="links_json">
                        </div>

                        <div class="border-t border-gray-200 pt-6 flex justify-end gap-4">
                            <button type="submit" class="btn-primary font-bold py-3 px-8 rounded-lg uppercase text-sm flex items-center justify-center gap-2">
                                <i data-lucide="save" class="w-5 h-5"></i>
                                <span>Guardar Cambios</span>
                            </button>
                        </div>
                    </div>
                    
                    <div class="lg:col-span-1 space-y-8">
                        <div class="space-y-4">
                            <div id="preview-wrapper" class="rounded-lg p-6">
                                <div class="text-center mb-8">
                                    <p id="preview-badge" class="font-bold text-xs text-[var(--color-secondary)]">Real stories • Real results</p>
                                    <h2 class="font-extrabold leading-tight mt-2 text-xl">
                                        <span id="preview-title-1" class="block text-[var(--color-primary)]">What Our Customers Say</span>
                                        <span id="preview-title-2" class="block text-[var(--color-secondary)]">Reviews You Can Verify</span>
                                    </h2>
                                </div>
                                <div id="preview-reviews-track"></div>
                                <div id="preview-links-container" class="mt-8 flex flex-col sm:flex-row items-center justify-center gap-4"></div>
                            </div>
                        </div>
                        
                        <div id="video-instrucciones" class="space-y-6">
                            <div class="w-full">
                                <div class="bg-black/40 rounded-xl ring-1 ring-white/10 overflow-hidden">
                                    <div class="relative w-full" style="padding-bottom: 56.25%;">
                                        <video class="absolute top-0 left-0 w-full h-full object-cover" id="videoPlayer" controls controlslist="nodownload fullscreen" preload="metadata">
                                            <source src="https://samplelib.com/lib/preview/mp4/sample-5s.mp4" type="video/mp4">
                                            TU NAVEGADOR NO SOPORTA LA ETIQUETA DE VIDEO
                                        </video>
                                        <div id="playOverlay" class="absolute inset-0 flex justify-center items-center cursor-pointer group">
                                            <img src="img/VideoLeccion-IAMarketing.jpg" alt="VideoLeccion - IAMarketing" class="absolute inset-0 w-full h-full object-cover">
                                            <div class="absolute inset-0 w-full h-full bg-black/40 transition-colors group-hover:bg-black/60"></div>
                                            <i data-lucide="play" class="relative w-16 h-16 text-white opacity-80 group-hover:opacity-100 transition-opacity"></i>
                                        </div>
                                    </div>
                                    <div class="p-4 text-white/90 text-sm flex items-center justify-between">
                                        <span class="inline-flex items-center gap-2">
                                            <i data-lucide="play-circle" class="w-4 h-4"></i> Video Tutorial
                                        </span>
                                        <span class="inline-flex items-center gap-2">
                                            <i data-lucide="clock" class="w-4 h-4"></i> 2–3 min
                                        </span>
                                    </div>
                                </div>
                            </div>
                            <div class="bg-white p-6 rounded-xl shadow-md">
                                <div class="text-center md:text-left mb-6">
                                    <h4 class="text-2xl font-black uppercase text-black flex items-center justify-center md:justify-start">
                                        <i data-lucide="book-open" class="mr-3 text-[var(--color-highlight)] w-7 h-7"></i>
                                        INSTRUCCIONES IMPORTANTES
                                    </h4>
                                    <p class="step-subtitle uppercase text-sm mt-1 text-gray-500">REVISA ESTOS PUNTOS DETALLADAMENTE</p>
                                </div>

                                <div class="space-y-4">
                                    <div class="flex items-start gap-3">
                                        <i data-lucide="play-circle" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">REVISA EL VIDEO DE INSTRUCCIONES</h5>
                                            <p class="text-sm text-gray-600">Comprende cómo utilizar la plataforma y sácale el máximo provecho a todas sus herramientas.</p>
                                        </div>
                                    </div>

                                    <div class="flex items-start gap-3">
                                        <i data-lucide="target" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">DEFINE BIEN LOS OBJETIVOS</h5>
                                            <p class="text-sm text-gray-600">Identifica qué quieres lograr con esta sección de la página web para una estrategia más efectiva.</p>
                                        </div>
                                    </div>

                                    <div class="flex items-start gap-3">
                                        <i data-lucide="file-text" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">SÉ PRECISO Y CONCISO</h5>
                                            <p class="text-sm text-gray-600">Redacta textos persuasivos y enfocados en el valor que ofreces para impulsar tus ventas.</p>
                                        </div>
                                    </div>

                                    <div class="flex items-start gap-3">
                                        <i data-lucide="refresh-cw" class="w-5 h-5 mt-0.5" style="color: var(--color-secondary);"></i>
                                        <div>
                                            <h5 class="font-black text-gray-800">MANTÉN LA INFORMACIÓN ACTUALIZADA</h5>
                                            <p class="text-sm text-gray-600">Actualiza la información regularmente (al menos cada 3 meses) para mantener tu contenido relevante y dinámico.</p>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </form>
        </div>
    </main>
</div>

<div id="toast-container" class="toast-container"></div>

<script>
document.addEventListener('DOMContentLoaded', () => {
    const mobileMenuButton = document.getElementById('mobile-menu-button');
    const sidebar = document.getElementById('sidebar');
    const sidebarOverlay = document.getElementById('sidebar-overlay');
    if (mobileMenuButton && sidebar && sidebarOverlay) {
        mobileMenuButton.addEventListener('click', () => { sidebar.classList.toggle('-translate-x-full'); sidebarOverlay.classList.toggle('hidden'); });
        sidebarOverlay.addEventListener('click', () => { sidebar.classList.add('-translate-x-full'); sidebarOverlay.classList.toggle('hidden'); });
    }

    const form = document.getElementById('reviews-editor-form');

    // --- REPEATER DE RESEÑAS ---
    const reviewsRepeater = document.getElementById('reviews-repeater');
    const addReviewBtn = document.getElementById('add-review-btn');
    const previewReviewsTrack = document.getElementById('preview-reviews-track');
    let reviewCounter = 0;

    const createReviewItemHTML = (id, avatar = '', name = '', rating = 5, text = '') => `
        <div class="review-item border border-gray-200 p-4 rounded-lg bg-gray-50 space-y-2" data-id="${id}">
            <div class="flex justify-between items-center"><label class="text-gray-700 text-sm font-bold uppercase">Reseña #${id}</label><button type="button" class="remove-item-btn text-red-500 hover:text-red-700"><i data-lucide="trash-2" class="w-4 h-4"></i></button></div>
            <input type="text" class="w-full p-2 border border-gray-300 rounded-md review-avatar" placeholder="URL de la imagen del cliente" value="${avatar}">
            <input type="text" class="w-full p-2 border border-gray-300 rounded-md review-name" placeholder="Nombre del cliente" value="${name}">
            <select class="w-full p-2 border border-gray-300 rounded-md review-rating bg-white"><option value="5" ${rating==5?'selected':''}>5 Estrellas</option><option value="4" ${rating==4?'selected':''}>4 Estrellas</option><option value="3" ${rating==3?'selected':''}>3 Estrellas</option><option value="2" ${rating==2?'selected':''}>2 Estrellas</option><option value="1" ${rating==1?'selected':''}>1 Estrella</option></select>
            <textarea class="w-full p-2 border border-gray-300 rounded-md review-text" rows="3" placeholder="Texto de la reseña...">${text}</textarea>
        </div>
    `;

    const renderReviewsPreview = () => {
        previewReviewsTrack.innerHTML = '';
        const itemsData = [];
        const items = reviewsRepeater.querySelectorAll('.review-item');
        if (items.length > 12) { addReviewBtn.disabled = true; addReviewBtn.classList.add('opacity-50'); } 
        else { addReviewBtn.disabled = false; addReviewBtn.classList.remove('opacity-50'); }

        items.forEach(item => {
            const avatar = item.querySelector('.review-avatar').value || 'https://i.pravatar.cc/120?img=5';
            const name = item.querySelector('.review-name').value;
            const rating = parseInt(item.querySelector('.review-rating').value, 10);
            const text = item.querySelector('.review-text').value;

            if (name || text) {
                itemsData.push({ avatar, name, rating, text });
                let starsHTML = '';
                for (let i = 0; i < 5; i++) { starsHTML += `<i data-lucide="star" class="w-4 h-4 ${i < rating ? 'text-yellow-400 fill-current' : 'text-gray-300'}"></i>`; }
                
                previewReviewsTrack.innerHTML += `
                    <article class="preview-review-card snap-center rounded-lg ring-1 ring-black/5 shadow-lg p-4 bg-white">
                        <div class="flex items-center gap-3 mb-3"><img src="${avatar}" class="w-10 h-10 rounded-md object-cover"><div class="flex-1"><p class="font-bold text-sm text-gray-800">${name}</p><div class="flex items-center gap-0.5">${starsHTML}</div></div></div>
                        <p class="text-xs text-gray-600 line-clamp-3">${text}</p>
                    </article>`;
            }
        });
        document.getElementById('reviews-json-input').value = JSON.stringify(itemsData);
        lucide.createIcons();
    };

    addReviewBtn.addEventListener('click', () => {
        if (reviewsRepeater.querySelectorAll('.review-item').length < 12) {
            reviewCounter++;
            reviewsRepeater.insertAdjacentHTML('beforeend', createReviewItemHTML(reviewCounter));
            lucide.createIcons();
            renderReviewsPreview();
        }
    });
    reviewsRepeater.addEventListener('click', e => { if (e.target.closest('.remove-item-btn')) { e.target.closest('.review-item').remove(); renderReviewsPreview(); } });
    reviewsRepeater.addEventListener('input', renderReviewsPreview);
    reviewsRepeater.addEventListener('change', renderReviewsPreview);

    // --- REPEATER DE ENLACES ---
    const linksRepeater = document.getElementById('links-repeater');
    const addLinkBtn = document.getElementById('add-link-btn');
    const previewLinksContainer = document.getElementById('preview-links-container');
    let linkCounter = 0;

    const createLinkItemHTML = (id, platform = 'google', text = 'See More on Google', url = '') => `
        <div class="link-item border border-gray-200 p-4 rounded-lg bg-gray-50 space-y-2" data-id="${id}">
            <div class="flex justify-between items-center"><label class="text-gray-700 text-sm font-bold uppercase">Enlace #${id}</label><button type="button" class="remove-item-btn text-red-500 hover:text-red-700"><i data-lucide="trash-2" class="w-4 h-4"></i></button></div>
            <select class="w-full p-2 border border-gray-300 rounded-md link-platform bg-white" name="link-platform-${id}"><option value="google" ${platform=='google'?'selected':''}>Google</option><option value="facebook" ${platform=='facebook'?'selected':''}>Facebook</option><option value="yelp" ${platform=='yelp'?'selected':''}>Yelp</option><option value="globe" ${platform=='globe'?'selected':''}>Otro (Globo)</option></select>
            <input type="text" class="w-full p-2 border border-gray-300 rounded-md link-text" name="link-text-${id}" placeholder="Texto del botón" value="${text}">
            <input type="url" class="w-full p-2 border border-gray-300 rounded-md link-url" name="link-url-${id}" placeholder="https://..." value="${url}">
        </div>
    `;

    const renderLinksPreview = () => {
        previewLinksContainer.innerHTML = '';
        const linksData = [];
        linksRepeater.querySelectorAll('.link-item').forEach(item => {
            const platform = item.querySelector('.link-platform').value;
            const text = item.querySelector('.link-text').value;
            const url = item.querySelector('.link-url').value;
            if(text && url) {
                linksData.push({ platform, text, url });
                previewLinksContainer.innerHTML += `<a href="${url}" target="_blank" class="inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg font-bold text-sm text-white bg-[var(--color-secondary)]"><i data-lucide="${platform}" class="w-4 h-4"></i><span>${text}</span></a>`;
            }
        });
        document.getElementById('links-json-input').value = JSON.stringify(linksData);
        lucide.createIcons();
    };

    addLinkBtn.addEventListener('click', () => { linkCounter++; linksRepeater.insertAdjacentHTML('beforeend', createLinkItemHTML(linkCounter)); lucide.createIcons(); renderLinksPreview(); });
    linksRepeater.addEventListener('click', e => { if (e.target.closest('.remove-item-btn')) { e.target.closest('.link-item').remove(); renderLinksPreview(); } });
    linksRepeater.addEventListener('input', renderLinksPreview);
    linksRepeater.addEventListener('change', renderLinksPreview);
    
    // --- BINDING DEL ENCABEZADO ---
    const headerBindings = {
        'reviews-badge': document.getElementById('preview-badge'),
        'reviews-title-1': document.getElementById('preview-title-1'),
        'reviews-title-2': document.getElementById('preview-title-2'),
    };
    form.addEventListener('input', e => { if (headerBindings[e.target.id]) { headerBindings[e.target.id].textContent = e.target.value; } });
    
    // Función para mostrar toasts de notificación
    const showToast = (message, isSuccess) => {
        const toastContainer = document.getElementById('toast-container');
        const toast = document.createElement('div');
        toast.className = `toast ${isSuccess ? 'bg-green-500' : 'bg-red-500'}`;
        toast.textContent = message;
        toastContainer.appendChild(toast);
        setTimeout(() => toast.classList.add('show'), 10);
        setTimeout(() => {
            toast.classList.remove('show');
            setTimeout(() => toast.remove(), 300);
        }, 3000);
    };

    // Handle form submission with AJAX
    form.addEventListener('submit', async e => {
        e.preventDefault();
        const saveButton = form.querySelector('button[type="submit"]');
        const originalButtonText = saveButton.innerHTML;

        saveButton.disabled = true;
        saveButton.innerHTML = '<i data-lucide="loader" class="w-5 h-5 animate-spin"></i><span>Guardando...</span>';
        lucide.createIcons();
        
        const formData = new FormData(form);

        // --- INICIO DE CORRECCIÓN CLAVE ---
        // 1. Sobreescribir los campos de encabezado con los nombres que espera el backend
        formData.set('social-proof-badge', document.getElementById('reviews-badge').value);
        formData.set('social-proof-title-1', document.getElementById('reviews-title-1').value);
        formData.set('social-proof-title-2', document.getElementById('reviews-title-2').value);
        // --- FIN DE CORRECCIÓN CLAVE ---

        // Limpiar y serializar los datos de los repeaters antes de enviar
        const reviewsData = [];
        reviewsRepeater.querySelectorAll('.review-item').forEach(item => {
            const avatar = item.querySelector('.review-avatar').value || 'https://i.pravatar.cc/120?img=5';
            const name = item.querySelector('.review-name').value;
            const rating = parseInt(item.querySelector('.review-rating').value, 10);
            const text = item.querySelector('.review-text').value;
            if (name || text) {
                reviewsData.push({ avatar, name, rating, text });
            }
        });
        formData.set('reviews_json', JSON.stringify(reviewsData));

        const linksData = [];
        linksRepeater.querySelectorAll('.link-item').forEach(item => {
            const platform = item.querySelector('.link-platform').value;
            const text = item.querySelector('.link-text').value;
            const url = item.querySelector('.link-url').value;
            if (text && url) {
                linksData.push({ platform, text, url });
            }
        });
        formData.set('links_json', JSON.stringify(linksData));

        try {
            const response = await fetch(form.action, {
                method: 'POST',
                body: formData
            });
            const result = await response.json();
            showToast(result.message, result.success);

            if (result.success) {
                loadData();
            }
        } catch (error) {
            console.error('Error:', error);
            showToast('Ocurrió un error al guardar los cambios.', false);
        } finally {
            saveButton.disabled = false;
            saveButton.innerHTML = originalButtonText;
            lucide.createIcons();
        }
    });

    // Load data from backend on page load
    const loadData = async () => {
        try {
            const response = await fetch('cms/social-proof-read.php');
            const result = await response.json();
            if (result.success && result.data) {
                const generalData = result.data.general;
                const reviewsData = result.data.reviews;
                const linksData = result.data.links;
                
                // --- CORRECCIÓN CLAVE EN LA CARGA DE DATOS ---
                // Los datos de la BD vienen con prefijo 'social_proof_', 
                // debemos usarlos para poblar los campos del HTML con prefijo 'reviews-'
                document.getElementById('reviews-badge').value = generalData.social_proof_badge;
                document.getElementById('preview-badge').textContent = generalData.social_proof_badge;
                document.getElementById('reviews-title-1').value = generalData.social_proof_title_1;
                document.getElementById('preview-title-1').textContent = generalData.social_proof_title_1;
                document.getElementById('reviews-title-2').value = generalData.social_proof_title_2;
                document.getElementById('preview-title-2').textContent = generalData.social_proof_title_2;
                // --- FIN DE CORRECCIÓN CLAVE ---


                // Cargar reseñas
                reviewsRepeater.innerHTML = '';
                reviewCounter = 0;
                reviewsData.forEach(r => {
                    reviewCounter++;
                    reviewsRepeater.insertAdjacentHTML('beforeend', createReviewItemHTML(reviewCounter, r.review_avatar, r.review_name, r.review_rating, r.review_text));
                });

                // Cargar enlaces
                linksRepeater.innerHTML = '';
                linkCounter = 0;
                linksData.forEach(l => {
                    linkCounter++;
                    linksRepeater.insertAdjacentHTML('beforeend', createLinkItemHTML(linkCounter, l.link_platform, l.link_text, l.link_url));
                });
                
                renderReviewsPreview();
                renderLinksPreview();
            }
        } catch (error) {
            console.error('Error al cargar los datos:', error);
            showToast('Error al cargar los datos.', false);
        } finally {
            lucide.createIcons();
        }
    };
    loadData();
});
</script>

</body>
</html>