|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Tour Der Wang - AI Assistant</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
<style> |
|
|
@font-face { |
|
|
font-family: 'Sukhumvit Set'; |
|
|
src: url('https://fonts.cdnfonts.com/css/sukhumvit-set') format('truetype'); |
|
|
} |
|
|
|
|
|
:root { |
|
|
--primary: #FFDEAD; |
|
|
--secondary: #8B4513; |
|
|
--accent-1: #D2B48C; |
|
|
--accent-2: #CD853F; |
|
|
--text-dark: #5A3921; |
|
|
--text-light: #FFF9F0; |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: 'Roboto', sans-serif; |
|
|
background-color: var(--text-light); |
|
|
color: var(--text-dark); |
|
|
} |
|
|
|
|
|
.thai-font { |
|
|
font-family: 'Sukhumvit Set', sans-serif; |
|
|
} |
|
|
|
|
|
|
|
|
.chat-bubble { |
|
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); |
|
|
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); |
|
|
} |
|
|
|
|
|
.chat-bubble:hover { |
|
|
transform: scale(1.05); |
|
|
box-shadow: 0 6px 25px rgba(0, 0, 0, 0.2); |
|
|
} |
|
|
|
|
|
|
|
|
.typing-indicator span { |
|
|
display: inline-block; |
|
|
width: 8px; |
|
|
height: 8px; |
|
|
border-radius: 50%; |
|
|
background-color: var(--secondary); |
|
|
margin: 0 2px; |
|
|
animation: bounce 1.5s infinite ease-in-out; |
|
|
} |
|
|
|
|
|
.typing-indicator span:nth-child(2) { |
|
|
animation-delay: 0.2s; |
|
|
} |
|
|
|
|
|
.typing-indicator span:nth-child(3) { |
|
|
animation-delay: 0.4s; |
|
|
} |
|
|
|
|
|
@keyframes bounce { |
|
|
0%, 100% { transform: translateY(0); } |
|
|
50% { transform: translateY(-5px); } |
|
|
} |
|
|
|
|
|
|
|
|
.gallery-item { |
|
|
transition: all 0.3s ease, box-shadow 0.3s ease; |
|
|
} |
|
|
|
|
|
.gallery-item:hover { |
|
|
transform: scale(1.03); |
|
|
box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1); |
|
|
} |
|
|
|
|
|
|
|
|
.map-container { |
|
|
height: 300px; |
|
|
border-radius: 12px; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
|
|
|
.booking-step { |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
|
|
|
.booking-step.active { |
|
|
border-left: 4px solid var(--secondary); |
|
|
background-color: rgba(255, 222, 173, 0.2); |
|
|
} |
|
|
|
|
|
|
|
|
.language-toggle { |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
|
|
|
.language-toggle:hover { |
|
|
background-color: rgba(255, 222, 173, 0.3); |
|
|
} |
|
|
|
|
|
|
|
|
.quick-reply { |
|
|
transition: all 0.2s ease; |
|
|
} |
|
|
|
|
|
.quick-reply:hover { |
|
|
background-color: var(--primary); |
|
|
transform: translateY(-2px); |
|
|
} |
|
|
|
|
|
|
|
|
.skeleton { |
|
|
animation: skeleton-loading 1.5s infinite ease-in-out; |
|
|
background-color: #eee; |
|
|
background-image: linear-gradient(90deg, #eee, #f5f5f5, #eee); |
|
|
background-size: 200px 100%; |
|
|
background-repeat: no-repeat; |
|
|
} |
|
|
|
|
|
@keyframes skeleton-loading { |
|
|
0% { background-position: -200px 0; } |
|
|
100% { background-position: calc(200px + 100%) 0; } |
|
|
} |
|
|
|
|
|
|
|
|
::-webkit-scrollbar { |
|
|
width: 6px; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-track { |
|
|
background: var(--text-light); |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-thumb { |
|
|
background: var(--accent-1); |
|
|
border-radius: 3px; |
|
|
} |
|
|
|
|
|
|
|
|
.calendar-day { |
|
|
transition: all 0.2s ease; |
|
|
} |
|
|
|
|
|
.calendar-day:hover { |
|
|
background-color: var(--primary); |
|
|
} |
|
|
|
|
|
.calendar-day.selected { |
|
|
background-color: var(--secondary); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
|
|
|
.payment-card { |
|
|
transition: all 0.3s ease; |
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); |
|
|
} |
|
|
|
|
|
.payment-card:hover { |
|
|
transform: translateY(-3px); |
|
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); |
|
|
} |
|
|
|
|
|
|
|
|
.custom-checkbox { |
|
|
position: relative; |
|
|
width: 20px; |
|
|
height: 20px; |
|
|
border: 2px solid var(--accent-2); |
|
|
border-radius: 4px; |
|
|
transition: all 0.2s ease; |
|
|
} |
|
|
|
|
|
.custom-checkbox.checked { |
|
|
background-color: var(--secondary); |
|
|
border-color: var(--secondary); |
|
|
} |
|
|
|
|
|
.custom-checkbox.checked::after { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
left: 6px; |
|
|
top: 2px; |
|
|
width: 5px; |
|
|
height: 10px; |
|
|
border: solid white; |
|
|
border-width: 0 2px 2px 0; |
|
|
transform: rotate(45deg); |
|
|
} |
|
|
|
|
|
|
|
|
.image-modal { |
|
|
transition: opacity 0.3s ease; |
|
|
} |
|
|
|
|
|
|
|
|
.watermark { |
|
|
position: absolute; |
|
|
bottom: 10px; |
|
|
right: 10px; |
|
|
opacity: 0.7; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="relative max-w-md mx-auto min-h-screen overflow-x-hidden"> |
|
|
|
|
|
<header class="sticky top-0 z-10 bg-[#FFDEAD] shadow-md px-4 py-3 flex items-center justify-between"> |
|
|
<div class="flex items-center"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" |
|
|
alt="Tour Der Wang Logo" class="h-14 object-contain"> |
|
|
<h1 class="ml-2 text-xl font-bold text-[#8B4513] thai-font">ทัวร์ เดอ วังฯ</h1> |
|
|
</div> |
|
|
<div class="flex items-center space-x-2"> |
|
|
<button id="languageToggle" class="language-toggle px-3 py-1 rounded-full bg-white text-[#8B4513] text-sm font-medium flex items-center"> |
|
|
<i class="fas fa-globe mr-1"></i> |
|
|
<span class="thai-font">ไทย</span> |
|
|
</button> |
|
|
<button class="p-2 text-[#8B4513]"> |
|
|
<i class="fas fa-user-circle text-xl"></i> |
|
|
</button> |
|
|
</div> |
|
|
</header> |
|
|
|
|
|
|
|
|
<main class="pb-24 px-4" id="mainContent"> |
|
|
|
|
|
<div id="homeTab"> |
|
|
|
|
|
<section class="mt-6 mb-8 bg-white rounded-xl p-6 shadow-sm"> |
|
|
<h2 class="text-2xl font-bold text-[#8B4513] mb-2 thai-font">ยินดีต้อนรับสู่ทัวร์ เดอ วังฯ</h2> |
|
|
<p class="text-gray-700 mb-4">Your personal AI guide to explore the beauty of Wang Sam Mo. How can I assist you today?</p> |
|
|
<div class="grid grid-cols-2 gap-3"> |
|
|
<button class="quick-reply bg-[#FFDEAD] text-[#8B4513] py-2 px-3 rounded-lg text-sm font-medium"> |
|
|
<i class="fas fa-map-marker-alt mr-1"></i> Nearby Attractions |
|
|
</button> |
|
|
<button class="quick-reply bg-[#FFDEAD] text-[#8B4513] py-2 px-3 rounded-lg text-sm font-medium"> |
|
|
<i class="fas fa-calendar-alt mr-1"></i> Book a Tour |
|
|
</button> |
|
|
<button class="quick-reply bg-[#FFDEAD] text-[#8B4513] py-2 px-3 rounded-lg text-sm font-medium"> |
|
|
<i class="fas fa-images mr-1"></i> View Gallery |
|
|
</button> |
|
|
<button class="quick-reply bg-[#FFDEAD] text-[#8B4513] py-2 px-3 rounded-lg text-sm font-medium"> |
|
|
<i class="fas fa-question-circle mr-1"></i> Help |
|
|
</button> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="mb-8"> |
|
|
<div class="flex items-center justify-between mb-4"> |
|
|
<h3 class="text-lg font-bold text-[#8B4513] thai-font">ทัวร์แนะนำ</h3> |
|
|
<button class="text-sm text-[#8B4513] font-medium">See All</button> |
|
|
</div> |
|
|
<div class="relative"> |
|
|
<div class="overflow-x-auto pb-4"> |
|
|
<div class="flex space-x-4" style="min-width: max-content;"> |
|
|
|
|
|
<div class="flex-shrink-0 w-48 bg-white rounded-xl overflow-hidden shadow-sm gallery-item"> |
|
|
<div class="h-32 bg-[#8B4513] relative overflow-hidden"> |
|
|
<img src="https://img2.pic.in.th/pic/image-19f4bb7a9e083dc11a.jpg" alt="Royal Palace" class="w-full h-full object-cover"> |
|
|
<div class="absolute bottom-2 left-2 bg-[#FFDEAD] text-[#8B4513] text-xs px-2 py-1 rounded-full font-bold">POPULAR</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<h4 class="font-bold text-[#8B4513] text-sm thai-font">พระราชวังสมมง</h4> |
|
|
<div class="flex items-center mt-1"> |
|
|
<i class="fas fa-star text-yellow-400 text-xs mr-1"></i> |
|
|
<span class="text-xs text-gray-600">4.8 (120)</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center mt-2"> |
|
|
<span class="text-xs font-bold text-[#8B4513]">฿1,200</span> |
|
|
<button class="text-[#8B4513] text-xs font-medium">Details</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex-shrink-0 w-48 bg-white rounded-xl overflow-hidden shadow-sm gallery-item"> |
|
|
<div class="h-32 bg-[#8B4513] relative overflow-hidden"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/image-154ab127eb3dcc1779.jpg" alt="Temple" class="w-full h-full object-cover"> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<h4 class="font-bold text-[#8B4513] text-sm thai-font">วัดสมมง</h4> |
|
|
<div class="flex items-center mt-1"> |
|
|
<i class="fas fa-star text-yellow-400 text-xs mr-1"></i> |
|
|
<span class="text-xs text-gray-600">4.7 (95)</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center mt-2"> |
|
|
<span class="text-xs font-bold text-[#8B4513]">฿850</span> |
|
|
<button class="text-[#8B4513] text-xs font-medium">Details</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="mb-8"> |
|
|
<div class="flex items-center justify-between mb-4"> |
|
|
<h3 class="text-lg font-bold text-[#8B4513] thai-font">แผนที่</h3> |
|
|
<button class="text-sm text-[#8B4513] font-medium">View Full Map</button> |
|
|
</div> |
|
|
<div class="map-container bg-gray-200 relative"> |
|
|
|
|
|
<div class="absolute inset-0 flex items-center justify-center"> |
|
|
<i class="fas fa-map-marked-alt text-4xl text-[#8B4513] opacity-30"></i> |
|
|
</div> |
|
|
<div class="absolute bottom-4 left-4 bg-white p-2 rounded-lg shadow-md"> |
|
|
<button class="flex items-center text-[#8B4513] text-sm font-medium"> |
|
|
<i class="fas fa-location-arrow mr-1"></i> My Location |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
<div class="mt-3 grid grid-cols-3 gap-2"> |
|
|
<button class="bg-white py-2 px-3 rounded-lg text-sm font-medium text-[#8B4513] flex items-center justify-center"> |
|
|
<i class="fas fa-utensils mr-1"></i> Food |
|
|
</button> |
|
|
<button class="bg-white py-2 px-3 rounded-lg text-sm font-medium text-[#8B4513] flex items-center justify-center"> |
|
|
<i class="fas fa-landmark mr-1"></i> Heritage |
|
|
</button> |
|
|
<button class="bg-white py-2 px-3 rounded-lg text-sm font-medium text-[#8B4513] flex items-center justify-center"> |
|
|
<i class="fas fa-shopping-bag mr-1"></i> Shopping |
|
|
</button> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="toursTab" class="hidden"> |
|
|
<section class="mt-6 mb-8"> |
|
|
<div class="flex items-center justify-between mb-4"> |
|
|
<h3 class="text-lg font-bold text-[#8B4513] thai-font">ทัวร์ทั้งหมด</h3> |
|
|
<div class="relative"> |
|
|
<select class="bg-white border border-[#FFDEAD] text-[#8B4513] text-sm rounded-lg px-3 py-1 focus:outline-none"> |
|
|
<option>เรียงตาม</option> |
|
|
<option>ความนิยม</option> |
|
|
<option>ราคา: ต่ำ-สูง</option> |
|
|
<option>ราคา: สูง-ต่ำ</option> |
|
|
</select> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="space-y-4"> |
|
|
|
|
|
<div class="bg-white rounded-xl overflow-hidden shadow-sm flex"> |
|
|
<div class="w-24 h-24 bg-[#8B4513] relative overflow-hidden"> |
|
|
<img src="https://img2.pic.in.th/pic/image-19f4bb7a9e083dc11a.jpg" alt="Tour" class="w-full h-full object-cover"> |
|
|
</div> |
|
|
<div class="flex-1 p-3"> |
|
|
<h4 class="font-bold text-[#8B4513] text-sm thai-font">พระราชวังสมมง</h4> |
|
|
<div class="flex items-center mt-1"> |
|
|
<i class="fas fa-star text-yellow-400 text-xs mr-1"></i> |
|
|
<span class="text-xs text-gray-600">4.8 (120)</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center mt-2"> |
|
|
<span class="text-xs font-bold text-[#8B4513]">฿1,200</span> |
|
|
<button class="bg-[#8B4513] text-white text-xs px-3 py-1 rounded-full">Book Now</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-xl overflow-hidden shadow-sm flex"> |
|
|
<div class="w-24 h-24 bg-[#8B4513] relative overflow-hidden"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/image-154ab127eb3dcc1779.jpg" alt="Tour" class="w-full h-full object-cover"> |
|
|
</div> |
|
|
<div class="flex-1 p-3"> |
|
|
<h4 class="font-bold text-[#8B4513] text-sm thai-font">วัดสมมง</h4> |
|
|
<div class="flex items-center mt-1"> |
|
|
<i class="fas fa-star text-yellow-400 text-xs mr-1"></i> |
|
|
<span class="text-xs text-gray-600">4.7 (95)</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center mt-2"> |
|
|
<span class="text-xs font-bold text-[#8B4513]">฿850</span> |
|
|
<button class="bg-[#8B4513] text-white text-xs px-3 py-1 rounded-full">Book Now</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="galleryTab" class="hidden"> |
|
|
<section class="mt-6 mb-8"> |
|
|
<div class="flex items-center justify-between mb-4"> |
|
|
<h3 class="text-lg font-bold text-[#8B4513] thai-font">แกลเลอรี่</h3> |
|
|
<button class="text-sm text-[#8B4513] font-medium">See All</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-3 gap-2"> |
|
|
|
|
|
<div class="gallery-item aspect-square bg-gray-200 rounded-lg overflow-hidden relative cursor-pointer"> |
|
|
<img src="https://img2.pic.in.th/pic/image-19f4bb7a9e083dc11a.jpg" alt="Gallery" class="w-full h-full object-cover"> |
|
|
<div class="watermark"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" alt="Watermark" class="h-6"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="gallery-item aspect-square bg-gray-200 rounded-lg overflow-hidden relative cursor-pointer"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/image-154ab127eb3dcc1779.jpg" alt="Gallery" class="w-full h-full object-cover"> |
|
|
<div class="watermark"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" alt="Watermark" class="h-6"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="gallery-item aspect-square bg-gray-200 rounded-lg overflow-hidden relative cursor-pointer"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/image-154ab127eb3dcc1779.jpg" alt="Gallery" class="w-full h-full object-cover"> |
|
|
<div class="watermark"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" alt="Watermark" class="h-6"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="gallery-item aspect-square bg-gray-200 rounded-lg overflow-hidden relative cursor-pointer"> |
|
|
<img src="https://img2.pic.in.th/pic/image-19f4bb7a9e083dc11a.jpg" alt="Gallery" class="w-full h-full object-cover"> |
|
|
<div class="watermark"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" alt="Watermark" class="h-6"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="gallery-item aspect-square bg-gray-200 rounded-lg overflow-hidden relative cursor-pointer"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/image-154ab127eb3dcc1779.jpg" alt="Gallery" class="w-full h-full object-cover"> |
|
|
<div class="watermark"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" alt="Watermark" class="h-6"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="gallery-item aspect-square bg-gray-200 rounded-lg overflow-hidden relative cursor-pointer"> |
|
|
<img src="https://img2.pic.in.th/pic/image-19f4bb7a9e083dc11a.jpg" alt="Gallery" class="w-full h-full object-cover"> |
|
|
<div class="watermark"> |
|
|
<img src="https://img5.pic.in.th/file/secure-sv1/307460108_387435583599238_6386334495691428178_n-removebg-preview.png" alt="Watermark" class="h-6"> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="profileTab" class="hidden"> |
|
|
<section class="mt-6 mb-8"> |
|
|
<div class="bg-white rounded-xl p-6 shadow-sm"> |
|
|
<div class="flex items-center mb-4"> |
|
|
<div class="w-16 h-16 rounded-full bg-[#FFDEAD] flex items-center justify-center mr-4"> |
|
|
<i class="fas fa-user text-2xl text-[#8B4513]"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h3 class="font-bold text-[#8B4513]">John Doe</h3> |
|
|
<p class="text-sm text-gray-600">john.doe@example.com</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="space-y-4"> |
|
|
<button class="w-full flex items-center justify-between p-3 rounded-lg hover:bg-[#FFF9F0]"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-history text-[#8B4513] mr-3"></i> |
|
|
<span class="text-gray-700">Booking History</span> |
|
|
</div> |
|
|
<i class="fas fa-chevron-right text-gray-400"></i> |
|
|
</button> |
|
|
|
|
|
<button class="w-full flex items-center justify-between p-3 rounded-lg hover:bg-[#FFF9F0]"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-heart text-[#8B4513] mr-3"></i> |
|
|
<span class="text-gray-700">Saved Tours</span> |
|
|
</div> |
|
|
<i class="fas fa-chevron-right text-gray-400"></i> |
|
|
</button> |
|
|
|
|
|
<button class="w-full flex items-center justify-between p-3 rounded-lg hover:bg-[#FFF9F0]"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-cog text-[#8B4513] mr-3"></i> |
|
|
<span class="text-gray-700">Settings</span> |
|
|
</div> |
|
|
<i class="fas fa-chevron-right text-gray-400"></i> |
|
|
</button> |
|
|
|
|
|
<button class="w-full flex items-center justify-between p-3 rounded-lg hover:bg-[#FFF9F0]"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-question-circle text-[#8B4513] mr-3"></i> |
|
|
<span class="text-gray-700">Help Center</span> |
|
|
</div> |
|
|
<i class="fas fa-chevron-right text-gray-400"></i> |
|
|
</button> |
|
|
|
|
|
<button class="w-full flex items-center justify-between p-3 rounded-lg hover:bg-[#FFF9F0] text-red-500"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-sign-out-alt mr-3"></i> |
|
|
<span>Log Out</span> |
|
|
</div> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</div> |
|
|
</main> |
|
|
|
|
|
|
|
|
<nav class="fixed bottom-0 left-0 right-0 bg-white shadow-lg flex justify-around items-center h-16 px-2 z-10"> |
|
|
<button class="tab-button active flex flex-col items-center justify-center text-[#8B4513]" data-tab="homeTab"> |
|
|
<i class="fas fa-home text-xl"></i> |
|
|
<span class="text-xs mt-1 thai-font">หน้าหลัก</span> |
|
|
</button> |
|
|
<button class="tab-button flex flex-col items-center justify-center text-gray-500" data-tab="toursTab"> |
|
|
<i class="fas fa-map-marked-alt text-xl"></i> |
|
|
<span class="text-xs mt-1 thai-font">ทัวร์</span> |
|
|
</button> |
|
|
<button class="tab-button flex flex-col items-center justify-center text-gray-500" data-tab="galleryTab"> |
|
|
<i class="fas fa-images text-xl"></i> |
|
|
<span class="text-xs mt-1 thai-font">แกลเลอรี่</span> |
|
|
</button> |
|
|
<button class="tab-button flex flex-col items-center justify-center text-gray-500" data-tab="profileTab"> |
|
|
<i class="fas fa-user text-xl"></i> |
|
|
<span class="text-xs mt-1 thai-font">โปรไฟล์</span> |
|
|
</button> |
|
|
</nav> |
|
|
|
|
|
|
|
|
<div id="chatBubble" class="fixed bottom-20 right-6 w-14 h-14 bg-[#8B4513] rounded-full flex items-center justify-center shadow-xl chat-bubble cursor-pointer"> |
|
|
<i class="fas fa-comment-dots text-white text-2xl"></i> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="chatModal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-20 flex items-end"> |
|
|
<div class="w-full bg-white rounded-t-3xl shadow-xl" style="height: 80vh;"> |
|
|
|
|
|
<div class="bg-[#FFDEAD] px-4 py-3 rounded-t-3xl flex items-center justify-between"> |
|
|
<div class="flex items-center"> |
|
|
<div class="bg-[#8B4513] rounded-full w-8 h-8 flex items-center justify-center mr-2"> |
|
|
<i class="fas fa-robot text-white"></i> |
|
|
</div> |
|
|
<h3 class="font-bold text-[#8B4513]">Tour Der Wang Assistant</h3> |
|
|
</div> |
|
|
<div class="flex items-center space-x-3"> |
|
|
<button class="text-[#8B4513]"> |
|
|
<i class="fas fa-ellipsis-v"></i> |
|
|
</button> |
|
|
<button id="closeChat" class="text-[#8B4513]"> |
|
|
<i class="fas fa-times"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="h-[calc(100%-120px)] overflow-y-auto p-4 space-y-4"> |
|
|
|
|
|
<div class="flex items-start"> |
|
|
<div class="bg-[#FFDEAD] rounded-full w-8 h-8 flex items-center justify-center mr-2 flex-shrink-0"> |
|
|
<i class="fas fa-robot text-[#8B4513]"></i> |
|
|
</div> |
|
|
<div class="bg-[#FFF9F0] rounded-xl p-3 max-w-[80%]"> |
|
|
<p class="text-gray-800">สวัสดีค่ะ! Welcome to Tour Der Wang. I'm your AI assistant. How can I help you explore Wang Sam Mo today?</p> |
|
|
<div class="mt-2 flex space-x-2"> |
|
|
<button class="quick-reply bg-white text-[#8B4513] py-1 px-2 rounded-lg text-xs font-medium"> |
|
|
Tours |
|
|
</button> |
|
|
<button class="quick-reply bg-white text-[#8B4513] py-1 px-2 rounded-lg text-xs font-medium"> |
|
|
Tickets |
|
|
</button> |
|
|
<button class="quick-reply bg-white text-[#8B4513] py-1 px-2 rounded-lg text-xs font-medium"> |
|
|
Directions |
|
|
</button> |
|
|
</div> |
|
|
<p class="text-xs text-gray-500 mt-1">2:45 PM</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex items-start justify-end"> |
|
|
<div class="bg-[#8B4513] rounded-xl p-3 max-w-[80%]"> |
|
|
<p class="text-white">What are the opening hours for the palace?</p> |
|
|
<p class="text-xs text-white text-opacity-70 mt-1 text-right">2:46 PM</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex items-start"> |
|
|
<div class="bg-[#FFDEAD] rounded-full w-8 h-8 flex items-center justify-center mr-2 flex-shrink-0"> |
|
|
<i class="fas fa-robot text-[#8B4513]"></i> |
|
|
</div> |
|
|
<div class="bg-[#FFF9F0] rounded-xl p-3 max-w-[80%]"> |
|
|
<p class="text-gray-800">The Royal Palace is open daily from 8:30 AM to 3:30 PM. Last admission is at 3:00 PM. It's closed on certain royal ceremonies.</p> |
|
|
<p class="text-xs text-gray-500 mt-1">2:46 PM</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="typingIndicator" class="hidden flex items-start"> |
|
|
<div class="bg-[#FFDEAD] rounded-full w-8 h-8 flex items-center justify-center mr-2 flex-shrink-0"> |
|
|
<i class="fas fa-robot text-[#8B4513]"></i> |
|
|
</div> |
|
|
<div class="bg-[#FFF9F0] rounded-xl p-3"> |
|
|
<div class="typing-indicator"> |
|
|
<span></span> |
|
|
<span></span> |
|
|
<span></span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="absolute bottom-0 left-0 right-0 bg-white border-t border-gray-200 p-3"> |
|
|
<div class="flex items-center"> |
|
|
<button class="text-[#8B4513] p-2"> |
|
|
<i class="fas fa-plus"></i> |
|
|
</button> |
|
|
<div class="flex-1 mx-2"> |
|
|
<input type="text" placeholder="Type your message..." class="w-full bg-[#FFF9F0] rounded-full px-4 py-2 text-gray-800 focus:outline-none"> |
|
|
</div> |
|
|
<button class="text-[#8B4513] p-2"> |
|
|
<i class="fas fa-microphone"></i> |
|
|
</button> |
|
|
<button class="bg-[#8B4513] text-white rounded-full w-10 h-10 flex items-center justify-center ml-1"> |
|
|
<i class="fas fa-paper-plane"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="bookingModal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-20 flex items-center justify-center p-4"> |
|
|
<div class="w-full max-w-md bg-white rounded-xl shadow-xl max-h-[90vh] overflow-y-auto"> |
|
|
|
|
|
<div class="bg-[#FFDEAD] px-4 py-3 rounded-t-xl flex items-center justify-between sticky top-0 z-10"> |
|
|
<h3 class="font-bold text-[#8B4513] thai-font">จองทัวร์</h3> |
|
|
<button id="closeBooking" class="text-[#8B4513]"> |
|
|
<i class="fas fa-times"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="p-4"> |
|
|
<div class="flex mb-6"> |
|
|
<div class="booking-step active w-1/4 p-2 text-center border-b-2 border-[#8B4513]"> |
|
|
<div class="w-8 h-8 bg-[#8B4513] text-white rounded-full flex items-center justify-center mx-auto mb-1">1</div> |
|
|
<span class="text-xs text-[#8B4513] font-medium">Select Tour</span> |
|
|
</div> |
|
|
<div class="booking-step w-1/4 p-2 text-center border-b-2 border-gray-300"> |
|
|
<div class="w-8 h-8 bg-gray-300 text-white rounded-full flex items-center justify-center mx-auto mb-1">2</div> |
|
|
<span class="text-xs text-gray-500 font-medium">Date & Time</span> |
|
|
</div> |
|
|
<div class="booking-step w-1/4 p-2 text-center border-b-2 border-gray-300"> |
|
|
<div class="w-8 h-8 bg-gray-300 text-white rounded-full flex items-center justify-center mx-auto mb-1">3</div> |
|
|
<span class="text-xs text-gray-500 font-medium">Details</span> |
|
|
</div> |
|
|
<div class="booking-step w-1/4 p-2 text-center border-b-2 border-gray-300"> |
|
|
<div class="w-8 h-8 bg-gray-300 text-white rounded-full flex items-center justify-center mx-auto mb-1">4</div> |
|
|
<span class="text-xs text-gray-500 font-medium">Payment</span> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="bookingStep1"> |
|
|
<h4 class="font-bold text-[#8B4513] mb-3 thai-font">เลือกทัวร์</h4> |
|
|
<div class="space-y-3"> |
|
|
|
|
|
<div class="flex items-center p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-[#8B4513]"> |
|
|
<div class="custom-checkbox mr-3"></div> |
|
|
<div> |
|
|
<h5 class="font-medium text-[#8B4513] thai-font">พระราชวังสมมง</h5> |
|
|
<p class="text-xs text-gray-600">3 hours • ฿1,200 per person</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex items-center p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-[#8B4513]"> |
|
|
<div class="custom-checkbox mr-3"></div> |
|
|
<div> |
|
|
<h5 class="font-medium text-[#8B4513] thai-font">วัดสมมง</h5> |
|
|
<p class="text-xs text-gray-600">2 hours • ฿850 per person</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mt-6 flex justify-end"> |
|
|
<button class="next-step bg-[#8B4513] text-white px-6 py-2 rounded-full text-sm font-medium"> |
|
|
Next <i class="fas fa-arrow-right ml-1"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="bookingStep2" class="hidden"> |
|
|
<h4 class="font-bold text-[#8B4513] mb-3 thai-font">วันที่และเวลา</h4> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-lg shadow-sm p-3 mb-4"> |
|
|
<div class="flex justify-between items-center mb-3"> |
|
|
<button class="text-[#8B4513]"> |
|
|
<i class="fas fa-chevron-left"></i> |
|
|
</button> |
|
|
<h5 class="font-medium text-[#8B4513]">November 2023</h5> |
|
|
<button class="text-[#8B4513]"> |
|
|
<i class="fas fa-chevron-right"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-7 gap-1 text-center text-xs mb-2"> |
|
|
<div class="text-[#8B4513] font-medium">S</div> |
|
|
<div class="text-[#8B4513] font-medium">M</div> |
|
|
<div class="text-[#8B4513] font-medium">T</div> |
|
|
<div class="text-[#8B4513] font-medium">W</div> |
|
|
<div class="text-[#8B4513] font-medium">T</div> |
|
|
<div class="text-[#8B4513] font-medium">F</div> |
|
|
<div class="text-[#8B4513] font-medium">S</div> |
|
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-7 gap-1 text-center text-sm"> |
|
|
|
|
|
<div class="calendar-day py-1 rounded-full opacity-50">29</div> |
|
|
<div class="calendar-day py-1 rounded-full opacity-50">30</div> |
|
|
<div class="calendar-day py-1 rounded-full opacity-50">31</div> |
|
|
<div class="calendar-day py-1 rounded-full">1</div> |
|
|
<div class="calendar-day py-1 rounded-full">2</div> |
|
|
<div class="calendar-day py-1 rounded-full">3</div> |
|
|
<div class="calendar-day py-1 rounded-full">4</div> |
|
|
<div class="calendar-day py-1 rounded-full">5</div> |
|
|
<div class="calendar-day py-1 rounded-full">6</div> |
|
|
<div class="calendar-day py-1 rounded-full">7</div> |
|
|
<div class="calendar-day py-1 rounded-full">8</div> |
|
|
<div class="calendar-day py-1 rounded-full">9</div> |
|
|
<div class="calendar-day py-1 rounded-full">10</div> |
|
|
<div class="calendar-day py-1 rounded-full">11</div> |
|
|
<div class="calendar-day py-1 rounded-full">12</div> |
|
|
<div class="calendar-day py-1 rounded-full">13</div> |
|
|
<div class="calendar-day py-1 rounded-full">14</div> |
|
|
<div class="calendar-day py-1 rounded-full">15</div> |
|
|
<div class="calendar-day py-1 rounded-full selected">16</div> |
|
|
<div class="calendar-day py-1 rounded-full">17</div> |
|
|
<div class="calendar-day py-1 rounded-full">18</div> |
|
|
<div class="calendar-day py-1 rounded-full">19</div> |
|
|
<div class="calendar-day py-1 rounded-full">20</div> |
|
|
<div class="calendar-day py-1 rounded-full">21</div> |
|
|
<div class="calendar-day py-1 rounded-full">22</div> |
|
|
<div class="calendar-day py-1 rounded-full">23</div> |
|
|
<div class="calendar-day py-1 rounded-full">24</div> |
|
|
<div class="calendar-day py-1 rounded-full">25</div> |
|
|
<div class="calendar-day py-1 rounded-full">26</div> |
|
|
<div class="calendar-day py-1 rounded-full">27</div> |
|
|
<div class="calendar-day py-1 rounded-full">28</div> |
|
|
<div class="calendar-day py-1 rounded-full">29</div> |
|
|
<div class="calendar-day py-1 rounded-full">30</div> |
|
|
<div class="calendar-day py-1 rounded-full opacity-50">1</div> |
|
|
<div class="calendar-day py-1 rounded-full opacity-50">2</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<h5 class="font-medium text-[#8B4513] mb-2">Available Time Slots</h5> |
|
|
<div class="grid grid-cols-3 gap-2 mb-4"> |
|
|
<button class="bg-white border border-[#FFDEAD] py-2 rounded-lg text-sm font-medium text-[#8B4513]">8:30 AM</button> |
|
|
<button class="bg-white border border-[#FFDEAD] py-2 rounded-lg text-sm font-medium text-[#8B4513]">10:00 AM</button> |
|
|
<button class="bg-white border border-[#FFDEAD] py-2 rounded-lg text-sm font-medium text-[#8B4513]">11:30 AM</button> |
|
|
<button class="bg-[#8B4513] text-white py-2 rounded-lg text-sm font-medium">1:00 PM</button> |
|
|
<button class="bg-white border border-[#FFDEAD] py-2 rounded-lg text-sm font-medium text-[#8B4513]">2:30 PM</button> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-between mt-6"> |
|
|
<button class="prev-step text-[#8B4513] px-6 py-2 rounded-full text-sm font-medium border border-[#8B4513]"> |
|
|
<i class="fas fa-arrow-left mr-1"></i> Back |
|
|
</button> |
|
|
<button class="next-step bg-[#8B4513] text-white px-6 py-2 rounded-full text-sm font-medium"> |
|
|
Next <i class="fas fa-arrow-right ml-1"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="bookingStep3" class="hidden"> |
|
|
<h4 class="font-bold text-[#8B4513] mb-3 thai-font">รายละเอียด</h4> |
|
|
|
|
|
<div class="space-y-4"> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-[#8B4513] mb-1">Full Name</label> |
|
|
<input type="text" class="w-full bg-[#FFF9F0] border border-[#FFDEAD] rounded-lg px-4 py-2 text-gray-800 focus:outline-none focus:border-[#8B4513]"> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-sm font-medium text-[#8B4513] mb-1">Email</label> |
|
|
<input type="email" class="w-full bg-[#FFF9F0] border border-[#FFDEAD] rounded-lg px-4 py-2 text-gray-800 focus:outline-none focus:border-[#8B4513]"> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-sm font-medium text-[#8B4513] mb-1">Phone Number</label> |
|
|
<input type="tel" class="w-full bg-[#FFF9F0] border border-[#FFDEAD] rounded-lg px-4 py-2 text-gray-800 focus:outline-none focus:border-[#8B4513]"> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-sm font-medium text-[#8B4513] mb-1">Number of Guests</label> |
|
|
<div class="flex items-center"> |
|
|
<button class="bg-[#FFDEAD] text-[#8B4513] w-8 h-8 rounded-full flex items-center justify-center"> |
|
|
<i class="fas fa-minus"></i> |
|
|
</button> |
|
|
<span class="mx-4 font-medium">2</span> |
|
|
<button class="bg-[#FFDEAD] text-[#8B4513] w-8 h-8 rounded-full flex items-center justify-center"> |
|
|
<i class="fas fa-plus"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-sm font-medium text-[#8B4513] mb-1">Special Requests</label> |
|
|
<textarea class="w-full bg-[#FFF9F0] border border-[#FFDEAD] rounded-lg px-4 py-2 text-gray-800 focus:outline-none focus:border-[#8B4513] h-24"></textarea> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-between mt-6"> |
|
|
<button class="prev-step text-[#8B4513] px-6 py-2 rounded-full text-sm font-medium border border-[#8B4513]"> |
|
|
<i class="fas fa-arrow-left mr-1"></i> Back |
|
|
</button> |
|
|
<button class="next-step bg-[#8B4513] text-white px-6 py-2 rounded-full text-sm font-medium"> |
|
|
Next <i class="fas fa-arrow-right ml-1"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="bookingStep4" class="hidden"> |
|
|
<h4 class="font-bold text-[#8B4513] mb-3 thai-font">การชำระเงิน</h4> |
|
|
|
|
|
<div class="bg-[#FFF9F0] rounded-lg p-4 mb-4"> |
|
|
<div class="flex justify-between mb-2"> |
|
|
<span class="text-gray-600">Tour:</span> |
|
|
<span class="font-medium text-[#8B4513]">พระราชวังสมมง</span> |
|
|
</div> |
|
|
<div class="flex justify-between mb-2"> |
|
|
<span class="text-gray-600">Date:</span> |
|
|
<span class="font-medium text-[#8B4513]">November 16, 2023</span> |
|
|
</div> |
|
|
<div class="flex justify-between mb-2"> |
|
|
<span class="text-gray-600">Time:</span> |
|
|
<span class="font-medium text-[#8B4513]">1:00 PM</span> |
|
|
</div> |
|
|
<div class="flex justify-between mb-2"> |
|
|
<span class="text-gray-600">Guests:</span> |
|
|
<span class="font-medium text-[#8B4513]">2</span> |
|
|
</div> |
|
|
<div class="border-t border-[#FFDEAD] my-2"></div> |
|
|
<div class="flex justify-between font-bold text-lg"> |
|
|
<span>Total:</span> |
|
|
<span class="text-[#8B4513]">฿2,400</span> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<h5 class="font-medium text-[#8B4513] mb-2">Payment Method</h5> |
|
|
<div class="space-y-2 mb-4"> |
|
|
<div class="payment-card flex items-center p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-[#8B4513]"> |
|
|
<div class="w-8 h-8 bg-[#FFDEAD] rounded-full flex items-center justify-center mr-3"> |
|
|
<i class="fas fa-credit-card text-[#8B4513]"></i> |
|
|
</div> |
|
|
<span class="font-medium">Credit/Debit Card</span> |
|
|
</div> |
|
|
|
|
|
<div class="payment-card flex items-center p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-[#8B4513]"> |
|
|
<div class="w-8 h-8 bg-[#FFDEAD] rounded-full flex items-center justify-center mr-3"> |
|
|
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/PromptPay.svg/1200px-PromptPay.svg.png" alt="PromptPay" class="h-5"> |
|
|
</div> |
|
|
<span class="font-medium">PromptPay</span> |
|
|
</div> |
|
|
|
|
|
<div class="payment-card flex items-center p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-[#8B4513]"> |
|
|
<div class="w-8 h-8 bg-[#FFDEAD] rounded-full flex items-center justify-center mr-3"> |
|
|
<i class="fab fa-cc-paypal text-[#8B4513]"></i> |
|
|
</div> |
|
|
<span class="font-medium">PayPal</span> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-center mb-4"> |
|
|
<div class="custom-checkbox mr-3"></div> |
|
|
<span class="text-xs text-gray-600">I agree to the <a href="#" class="text-[#8B4513]">terms and conditions</a></span> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-between"> |
|
|
<button class="prev-step text-[#8B4513] px-6 py-2 rounded-full text-sm font-medium border border-[#8B4513]"> |
|
|
<i class="fas fa-arrow-left mr-1"></i> Back |
|
|
</button> |
|
|
<button class="bg-[#8B4513] text-white px-6 py-2 rounded-full text-sm font-medium"> |
|
|
Confirm Booking <i class="fas fa-check ml-1"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="imageModal" class="hidden fixed inset-0 bg-black bg-opacity-90 z-30 flex items-center justify-center p-4"> |
|
|
<div class="relative w-full h-full flex items-center justify-center"> |
|
|
<img id="modalImage" src="" alt="Full Screen" class="max-w-full max-h-full object-contain"> |
|
|
<button id="closeImageModal" class="absolute top-4 right-4 text-white text-2xl"> |
|
|
<i class="fas fa-times"></i> |
|
|
</button> |
|
|
<div class="absolute bottom-4 left-0 right-0 flex justify-center"> |
|
|
<button class="bg-white bg-opacity-20 text-white px-4 py-2 rounded-full backdrop-blur-sm"> |
|
|
<i class="fas fa-map-marker-alt mr-1"></i> View Location |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
|
|
|
const tabButtons = document.querySelectorAll('.tab-button'); |
|
|
const tabContents = document.querySelectorAll('#mainContent > div'); |
|
|
|
|
|
tabButtons.forEach(button => { |
|
|
button.addEventListener('click', () => { |
|
|
|
|
|
tabButtons.forEach(btn => { |
|
|
btn.classList.remove('active', 'text-[#8B4513]'); |
|
|
btn.classList.add('text-gray-500'); |
|
|
}); |
|
|
|
|
|
|
|
|
button.classList.add('active', 'text-[#8B4513]'); |
|
|
button.classList.remove('text-gray-500'); |
|
|
|
|
|
|
|
|
tabContents.forEach(content => { |
|
|
content.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
const tabId = button.getAttribute('data-tab'); |
|
|
document.getElementById(tabId).classList.remove('hidden'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const chatBubble = document.getElementById('chatBubble'); |
|
|
const chatModal = document.getElementById('chatModal'); |
|
|
const closeChat = document.getElementById('closeChat'); |
|
|
const typingIndicator = document.getElementById('typingIndicator'); |
|
|
|
|
|
chatBubble.addEventListener('click', () => { |
|
|
chatModal.classList.remove('hidden'); |
|
|
|
|
|
setTimeout(() => { |
|
|
typingIndicator.classList.remove('hidden'); |
|
|
|
|
|
setTimeout(() => { |
|
|
typingIndicator.classList.add('hidden'); |
|
|
|
|
|
}, 2000); |
|
|
}, 1000); |
|
|
}); |
|
|
|
|
|
closeChat.addEventListener('click', () => { |
|
|
chatModal.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
const languageToggle = document.getElementById('languageToggle'); |
|
|
let currentLanguage = 'th'; |
|
|
|
|
|
languageToggle.addEventListener('click', () => { |
|
|
if (currentLanguage === 'th') { |
|
|
currentLanguage = 'en'; |
|
|
languageToggle.innerHTML = '<i class="fas fa-globe mr-1"></i><span>EN</span>'; |
|
|
|
|
|
} else { |
|
|
currentLanguage = 'th'; |
|
|
languageToggle.innerHTML = '<i class="fas fa-globe mr-1"></i><span class="thai-font">ไทย</span>'; |
|
|
|
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
const quickReplies = document.querySelectorAll('.quick-reply'); |
|
|
quickReplies.forEach(reply => { |
|
|
reply.addEventListener('click', () => { |
|
|
|
|
|
if (!chatModal.classList.contains('hidden')) { |
|
|
typingIndicator.classList.remove('hidden'); |
|
|
|
|
|
setTimeout(() => { |
|
|
typingIndicator.classList.add('hidden'); |
|
|
}, 2000); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const galleryItems = document.querySelectorAll('.gallery-item'); |
|
|
const imageModal = document.getElementById('imageModal'); |
|
|
const modalImage = document.getElementById('modalImage'); |
|
|
const closeImageModal = document.getElementById('closeImageModal'); |
|
|
|
|
|
galleryItems.forEach(item => { |
|
|
item.addEventListener('click', () => { |
|
|
const imgSrc = item.querySelector('img').src; |
|
|
modalImage.src = imgSrc; |
|
|
imageModal.classList.remove('hidden'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
closeImageModal.addEventListener('click', () => { |
|
|
imageModal.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
const bookingModal = document.getElementById('bookingModal'); |
|
|
const closeBooking = document.getElementById('closeBooking'); |
|
|
const bookingSteps = document.querySelectorAll('.booking-step'); |
|
|
const stepContents = document.querySelectorAll('#bookingModal > div > div > div[id^="bookingStep"]'); |
|
|
const nextButtons = document.querySelectorAll('.next-step'); |
|
|
const prevButtons = document.querySelectorAll('.prev-step'); |
|
|
const checkboxes = document.querySelectorAll('.custom-checkbox'); |
|
|
|
|
|
|
|
|
document.querySelectorAll('[data-book]').forEach(button => { |
|
|
button.addEventListener('click', () => { |
|
|
bookingModal.classList.remove('hidden'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
closeBooking.addEventListener('click', () => { |
|
|
bookingModal.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
let currentStep = 1; |
|
|
|
|
|
nextButtons.forEach(button => { |
|
|
button.addEventListener('click', () => { |
|
|
if (currentStep < 4) { |
|
|
|
|
|
bookingSteps[currentStep - 1].classList.remove('active', 'border-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].classList.add('border-gray-300'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.remove('bg-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.add('bg-gray-300'); |
|
|
|
|
|
currentStep++; |
|
|
|
|
|
bookingSteps[currentStep - 1].classList.add('active', 'border-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].classList.remove('border-gray-300'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.add('bg-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.remove('bg-gray-300'); |
|
|
|
|
|
|
|
|
stepContents.forEach(content => { |
|
|
content.classList.add('hidden'); |
|
|
}); |
|
|
document.getElementById(`bookingStep${currentStep}`).classList.remove('hidden'); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
prevButtons.forEach(button => { |
|
|
button.addEventListener('click', () => { |
|
|
if (currentStep > 1) { |
|
|
|
|
|
bookingSteps[currentStep - 1].classList.remove('active', 'border-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].classList.add('border-gray-300'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.remove('bg-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.add('bg-gray-300'); |
|
|
|
|
|
currentStep--; |
|
|
|
|
|
bookingSteps[currentStep - 1].classList.add('active', 'border-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].classList.remove('border-gray-300'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.add('bg-[#8B4513]'); |
|
|
bookingSteps[currentStep - 1].querySelector('div').classList.remove('bg-gray-300'); |
|
|
|
|
|
|
|
|
stepContents.forEach(content => { |
|
|
content.classList.add('hidden'); |
|
|
}); |
|
|
document.getElementById(`bookingStep${currentStep}`).classList.remove('hidden'); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
checkboxes.forEach(checkbox => { |
|
|
checkbox.addEventListener('click', () => { |
|
|
checkbox.classList.toggle('checked'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const calendarDays = document.querySelectorAll('.calendar-day:not(.opacity-50)'); |
|
|
calendarDays.forEach(day => { |
|
|
day.addEventListener('click', () => { |
|
|
calendarDays.forEach(d => d.classList.remove('selected', 'bg-[#8B4513]', 'text-white')); |
|
|
day.classList.add('selected', 'bg-[#8B4513]', 'text-white'); |
|
|
}); |
|
|
}); |
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=kritsanan/chatbot44" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |