
{"success":true,"html":"<div class=\"card-market group\">\n        \n        <div class=\"relative h-48 sm:h-52 md:h-44 lg:h-48 overflow-hidden bg-gradient-to-br from-[#ff6347]\/20 to-[#00bfff]\/20 rounded-t-xl\">\n            <a href=\"https:\/\/www.gifitech.digivora.com\/products\/koleksi-100-premium-html-admin-dashboard-templates\" class=\"block w-full h-full\">\n                <img src=\"storage\/products\/1779987730_main_koleksi-100-premium-html-admin-dashboard-templates.jpg\"\n                    alt=\"Koleksi 100+ Premium HTML &amp; Admin Dashboard Templates\" loading=\"lazy\"\n                    class=\"w-full h-full object-cover transition-transform duration-500 ease-out hover:scale-110\">\n                \n                                    <span class=\"absolute top-3 left-3 bg-green-500 text-white text-xs font-bold px-2.5 py-1 rounded-full shadow-md z-10\">\n                        <i class=\"fa-regular fa-star mr-1\"><\/i> New\n                    <\/span>\n                                \n                <div class=\"absolute inset-0 bg-black\/0 hover:bg-black\/20 transition-all duration-300\"><\/div>\n            <\/a>\n        <\/div>\n\n        <div class=\"p-5\">\n            <div class=\"flex justify-between\">\n                <div class=\"star-rating text-sm\">\n                    <i class=\"fa-solid fa-star\"><\/i>\n                    <i class=\"fa-solid fa-star\"><\/i>\n                    <i class=\"fa-solid fa-star\"><\/i>\n                    <i class=\"fa-solid fa-star\"><\/i>\n                    <i class=\"fa-regular fa-star\"><\/i>\n                <\/div>\n                <span class=\"text-xs text-[#333333] bg-green-50 px-2 py-0.5 rounded-full border border-green-100\">\n                    <i class=\"fa-solid fa-eye\"><\/i> 16\n                <\/span>\n            <\/div>\n            <a href=\"https:\/\/www.gifitech.digivora.com\/products\/koleksi-100-premium-html-admin-dashboard-templates\">\n                <h3 class=\"font-bold text-lg mt-2 text-[#1e1e1e]\">Koleksi 100+ Premium HTML &amp; Admin Dashboard Templates<\/h3>\n            <\/a>\n            <p class=\"text-[#333333] text-sm\">HTML\/CSS Templates<\/p>\n\n            <div class=\"flex justify-between items-center mt-5\">\n                <span class=\"text-2xl font-black text-[#ff6347]\">\n                    <span class=\"text-xs align-top inline-block mt-0.5\">Rp<\/span>\n                    25,000\n                <\/span>\n                <span class=\"text-[#333333] line-through text-sm\">\n                    <span class=\"text-xs\">Rp<\/span>98,999\n                <\/span>\n                \n                \n                <button class=\"bg-[#eeeeee] rounded-full hover:bg-[#ff6347]\/10 transition\" \n                    onclick=\"shareProduct('https:\/\/www.gifitech.digivora.com\/products\/koleksi-100-premium-html-admin-dashboard-templates', 'Produk GifiTech')\">\n                    <i class=\"fa-solid fa-share-nodes\"><\/i>\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<script>\n\n\n\/**\n * Share produk menggunakan Web Share API atau fallback copy\n *\/\nfunction shareProduct(url, productName) {\n    let fullUrl = url || window.location.href;\n    \n    const shareData = {\n        title: productName,\n        text: 'Lihat produk ini di GifiTech!',\n        url: fullUrl\n    };\n\n    if (navigator.share) {\n        navigator.share(shareData).catch(() => copyToClipboard(fullUrl));\n    } else {\n        copyToClipboard(fullUrl);\n    }\n}\n\n\/**\n * Copy URL ke clipboard\n *\/\nfunction copyToClipboard(url) {\n    navigator.clipboard.writeText(url)\n        .then(() => alert('Link produk disalin: ' + url))\n        .catch(() => {\n            const success = prompt('Salin link manual:', url);\n            return success !== null;\n        });\n}\n\n\/**\n * Handle share dengan tracking ke server\n *\/\nasync function handleShare(button, productUrl, productId) {\n    const originalHTML = button.innerHTML;\n    button.innerHTML = '<i class=\"fa-solid fa-spinner fa-spin\"><\/i>';\n    button.disabled = true;\n    \n    try {\n        const shareData = {\n            title: document.title,\n            text: 'Cek produk ini di GifiTech!',\n            url: productUrl\n        };\n        \n        let shareSuccess = false;\n        \n        if (navigator.share) {\n            try {\n                await navigator.share(shareData);\n                shareSuccess = true;\n            } catch (error) {\n                if (error.name !== 'AbortError') {\n                    shareSuccess = await copyToClipboard(productUrl);\n                }\n            }\n        } else {\n            shareSuccess = await copyToClipboard(productUrl);\n        }\n        \n        if (shareSuccess) {\n            const response = await fetch(`\/products\/${productId}\/track-share`, {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/json',\n                    'X-CSRF-TOKEN': csrfToken\n                }\n            });\n            \n            const data = await response.json();\n            \n            \/\/ Update share counter\n            const shareCounterSpan = button.querySelector('.share-counter');\n            if (shareCounterSpan) {\n                shareCounterSpan.textContent = data.shares_count;\n                shareCounterSpan.style.transform = 'scale(1.2)';\n                setTimeout(() => shareCounterSpan.style.transform = '', 300);\n            }\n            \n            \/\/ Update total views\n            const totalViewsSpan = document.querySelector('.fa-eye')?.parentElement?.querySelector('span:first-of-type');\n            if (totalViewsSpan && data.views_count !== undefined) {\n                totalViewsSpan.textContent = data.views_count;\n                totalViewsSpan.style.transform = 'scale(1.2)';\n                setTimeout(() => totalViewsSpan.style.transform = '', 300);\n            }\n        }\n        \n    } catch (error) {\n        console.error('Error:', error);\n        alert('Gagal membagikan. Silakan coba lagi.');\n    } finally {\n        button.innerHTML = originalHTML;\n        button.disabled = false;\n    }\n}\n<\/script>\n\n"}