PDPA Features: ✅ Cookie consent banner ✅ Consent logging API ✅ Admin dashboard ✅ Privacy Policy ✅ Terms & Conditions Technical: ✅ Astro 5.x + Tailwind v4 ✅ Docker on port 80 ✅ SQLite database ✅ 15 pages built Ready for Easypanel deployment.
9 lines
11 KiB
HTML
9 lines
11 KiB
HTML
<!DOCTYPE html><html lang="th"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="รายการสินค้าทั้งหมดจาก Deal Plus Tech"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><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=Kanit:wght@300;400;500;600;700&display=swap" rel="stylesheet"><meta property="og:title" content="สินค้าทั้งหมด"><meta property="og:description" content="รายการสินค้าทั้งหมดจาก Deal Plus Tech"><title>สินค้าทั้งหมด | ดีล พลัส เทค</title><link rel="stylesheet" href="/_astro/consent-logs.DinS5Xvv.css"></head> <body class="flex flex-col min-h-screen"> <main class="py-12"> <div class="container mx-auto px-4 max-w-6xl"> <h1 class="section-title mb-8">สินค้าทั้งหมด</h1> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <a href="/products/ท่อhdpe" class="card group"> <div class="aspect-w-16 aspect-h-9 overflow-hidden bg-secondary-100"> <img src="/images/2021/03/hdpe_welding2.jpg" alt="ท่อ HDPE" class="object-cover w-full h-48 group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="p-6"> <h3 class="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors"> ท่อ HDPE </h3> <p class="mt-2 text-sm text-secondary-600 line-clamp-2"> ท่อเอชดีพีอี PE80/PE100 มาตรฐาน มอก. </p> <div class="mt-4 flex items-center text-primary-600 font-medium"> <span>ดูรายละเอียด</span> <svg class="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path> </svg> </div> </div> </a><a href="/products/ท่อพีพีอาร์ตราช้าง" class="card group"> <div class="aspect-w-16 aspect-h-9 overflow-hidden bg-secondary-100"> <img src="/images/2021/03/hdpe_pipe_main.jpg" alt="ท่อพีพีอาร์ตราช้าง" class="object-cover w-full h-48 group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="p-6"> <h3 class="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors"> ท่อพีพีอาร์ตราช้าง </h3> <p class="mt-2 text-sm text-secondary-600 line-clamp-2"> ท่อพีพีอาร์ตราช้าง SCG มาตรฐาน DIN 8077/8078 </p> <div class="mt-4 flex items-center text-primary-600 font-medium"> <span>ดูรายละเอียด</span> <svg class="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path> </svg> </div> </div> </a><a href="/products/pp-r-pp-rct-poloplast" class="card group"> <div class="aspect-w-16 aspect-h-9 overflow-hidden bg-secondary-100"> <img src="/images/2021/03/hdpe001.jpg" alt="ท่อ PP-R/PP-RCT POLOPLAST" class="object-cover w-full h-48 group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="p-6"> <h3 class="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors"> ท่อ PP-R/PP-RCT POLOPLAST </h3> <p class="mt-2 text-sm text-secondary-600 line-clamp-2"> ท่อ PP-R/PP-RCT POLOPLAST คุณภาพเยอรมัน </p> <div class="mt-4 flex items-center text-primary-600 font-medium"> <span>ดูรายละเอียด</span> <svg class="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path> </svg> </div> </div> </a><a href="/products/ท่อไซเลอร์" class="card group"> <div class="aspect-w-16 aspect-h-9 overflow-hidden bg-secondary-100"> <img src="/images/2021/03/hdpe002.jpg" alt="ท่อไซเลอร์" class="object-cover w-full h-48 group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="p-6"> <h3 class="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors"> ท่อไซเลอร์ </h3> <p class="mt-2 text-sm text-secondary-600 line-clamp-2"> ท่อเหล็กบุ PE BS1387 FM APPROVED </p> <div class="mt-4 flex items-center text-primary-600 font-medium"> <span>ดูรายละเอียด</span> <svg class="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path> </svg> </div> </div> </a><a href="/products/ท่อppr-thaippr" class="card group"> <div class="aspect-w-16 aspect-h-9 overflow-hidden bg-secondary-100"> <img src="/images/2021/03/hdpe_pipe_main.jpg" alt="ท่อ PPR Thai PPR" class="object-cover w-full h-48 group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="p-6"> <h3 class="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors"> ท่อ PPR Thai PPR </h3> <p class="mt-2 text-sm text-secondary-600 line-clamp-2"> ท่อ PPR Thai PPR มาตรฐาน มอก. </p> <div class="mt-4 flex items-center text-primary-600 font-medium"> <span>ดูรายละเอียด</span> <svg class="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path> </svg> </div> </div> </a><a href="/products/ท่อระบายน้ำ-3-ชั้น-ไซเลนท" class="card group"> <div class="aspect-w-16 aspect-h-9 overflow-hidden bg-secondary-100"> <img src="/images/2021/03/hdpe_product.jpg" alt="ท่อระบายน้ำ 3 ชั้น ไซเลนท์" class="object-cover w-full h-48 group-hover:scale-105 transition-transform duration-300" loading="lazy"> </div> <div class="p-6"> <h3 class="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors"> ท่อระบายน้ำ 3 ชั้น ไซเลนท์ </h3> <p class="mt-2 text-sm text-secondary-600 line-clamp-2"> ท่อระบายน้ำไซเลนท์ 22dB Push Fit </p> <div class="mt-4 flex items-center text-primary-600 font-medium"> <span>ดูรายละเอียด</span> <svg class="w-4 h-4 ml-2 group-hover:translate-x-1 transition-transform" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path> </svg> </div> </div> </a> </div> </div> </main> <div id="cookie-consent-banner" class="fixed bottom-0 left-0 right-0 z-50 bg-white border-t-2 border-primary-600 shadow-2xl p-6 md:p-8 transform translate-y-full transition-transform duration-300" style="display: none;"> <div class="container mx-auto px-4 max-w-7xl"> <div class="flex flex-col lg:flex-row gap-6 items-start lg:items-center justify-between"> <div class="flex-1"> <h2 class="text-xl md:text-2xl font-bold text-secondary-900 mb-3">
|
|
เรายึดถือความเป็นส่วนตัวของคุณ
|
|
</h2> <p class="text-base md:text-lg text-secondary-700 mb-4">
|
|
เราใช้คุกกี้เพื่อปรับปรุงประสบการณ์การใช้งาน คุณสามารถเลือกยอมรับหรือปฏิเสธได้
|
|
</p> <div class="space-y-3 mt-4"> <div class="flex items-center gap-3 bg-secondary-50 p-3 rounded-lg"> <input type="checkbox" id="consent-essential" checked disabled class="w-5 h-5"> <label for="consent-essential" class="flex-1"> <span class="font-semibold">คุกกี้จำเป็น</span> <span class="text-sm text-secondary-600 block">ใช้สำหรับการทำงานของเว็บไซต์</span> </label> </div> <div class="flex items-center gap-3 bg-secondary-50 p-3 rounded-lg"> <input type="checkbox" id="consent-analytics" class="w-5 h-5"> <label for="consent-analytics" class="flex-1"> <span class="font-semibold">คุกกี้วิเคราะห์ข้อมูล</span> <span class="text-sm text-secondary-600 block">ช่วยให้เราเข้าใจการใช้งาน</span> </label> </div> </div> </div> <div class="flex gap-3"> <button id="consent-reject" class="bg-secondary-800 hover:bg-secondary-900 text-white px-6 py-3 rounded-lg font-semibold">
|
|
ปฏิเสธทั้งหมด
|
|
</button> <button id="consent-accept" class="bg-primary-600 hover:bg-primary-700 text-white px-6 py-3 rounded-lg font-semibold">
|
|
ยอมรับทั้งหมด
|
|
</button> </div> </div> </div> </div> <script type="module">const n="1.0.0";function a(){const e=localStorage.getItem("consent-preferences");return e?JSON.parse(e):null}async function s(e){localStorage.setItem("consent-preferences",JSON.stringify(e));try{let t=sessionStorage.getItem("consent_session_id");t||(t="ses_"+Math.random().toString(36).substring(2,15),sessionStorage.setItem("consent_session_id",t)),await fetch("/api/consent",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:t,consent:e,policyVersion:n})})}catch(t){console.error("Failed to log consent:",t)}}function i(){const e=document.getElementById("cookie-consent-banner");e&&(e.style.display="block",setTimeout(()=>e.classList.remove("translate-y-full"),10))}function o(){const e=document.getElementById("cookie-consent-banner");e&&(e.classList.add("translate-y-full"),setTimeout(()=>e.style.display="none",300))}function c(e){e.analytics}function r(){const e=a();if(e){document.getElementById("consent-analytics").checked=e.analytics,c(e);return}setTimeout(i,500)}document.addEventListener("DOMContentLoaded",()=>{r(),document.getElementById("consent-accept")?.addEventListener("click",()=>{const e=document.getElementById("consent-analytics").checked;s({essential:!0,analytics:e||!0,marketing:!1,timestamp:new Date().toISOString(),policyVersion:n}),c({analytics:!0}),o()}),document.getElementById("consent-reject")?.addEventListener("click",()=>{s({essential:!0,analytics:!1,marketing:!1,timestamp:new Date().toISOString(),policyVersion:n}),o()})});window.openConsentPreferences=()=>i();</script> </body></html> |