undefined / destinations.html
flen-crypto's picture
improve, add extra pages
f209c2c verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Destinations - TravelinLite Pro</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/animejs/lib/anime.min.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
* {
font-family: 'Poppins', sans-serif;
}
.gradient-text {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-gradient {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.card-hover {
transition: all 0.3s ease;
}
.card-hover:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
}
.slide-in {
animation: slideIn 0.5s ease-out;
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.filter-btn {
transition: all 0.3s ease;
}
.filter-btn.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
</style>
</head>
<body class="bg-gray-50">
<!-- Navigation -->
<nav class="fixed w-full z-50 bg-white shadow-lg">
<div class="container mx-auto px-6 py-4">
<div class="flex items-center justify-between">
<div class="flex items-center space-x-2">
<a href="index.html" class="flex items-center space-x-2">
<i data-feather="map-pin" class="text-purple-600 w-8 h-8"></i>
<span class="text-2xl font-bold gradient-text">TravelinLite Pro</span>
</a>
</div>
<div class="hidden md:flex items-center space-x-8">
<a href="index.html" class="text-gray-700 hover:text-purple-600 transition-colors">Home</a>
<a href="destinations.html" class="text-purple-600 font-semibold">Destinations</a>
<a href="packages.html" class="text-gray-700 hover:text-purple-600 transition-colors">Packages</a>
<a href="blog.html" class="text-gray-700 hover:text-purple-600 transition-colors">Blog</a>
<a href="contact.html" class="text-gray-700 hover:text-purple-600 transition-colors">Contact</a>
<button class="bg-purple-600 text-white px-6 py-2 rounded-full hover:bg-purple-700 transition-colors">
Book Now
</button>
</div>
<button class="md:hidden" id="mobileMenuBtn">
<i data-feather="menu" class="w-6 h-6"></i>
</button>
</div>
</div>
</nav>
<!-- Hero Section -->
<section class="pt-32 pb-20 hero-gradient text-white">
<div class="container mx-auto px-6 text-center">
<h1 class="text-5xl md:text-6xl font-bold mb-6">
Explore Our Destinations
</h1>
<p class="text-xl mb-8 max-w-3xl mx-auto">
Discover handpicked destinations perfect for lightweight travel enthusiasts. From tropical paradises to urban adventures.
</p>
</div>
</section>
<!-- Filter Section -->
<section class="py-12 bg-white">
<div class="container mx-auto px-6">
<div class="flex flex-wrap gap-4 justify-center mb-8">
<button class="filter-btn active px-6 py-3 rounded-full bg-purple-100 text-purple-600">
All Destinations
</button>
<button class="filter-btn px-6 py-3 rounded-full bg-gray-100 text-gray-600 hover:bg-purple-100 hover:text-purple-600">
<i data-feather="sun" class="w-4 h-4 mr-2"></i>
Tropical
</button>
<button class="filter-btn px-6 py-3 rounded-full bg-gray-100 text-gray-600 hover:bg-purple-100 hover:text-purple-600">
<i data-feather="building" class="w-4 h-4 mr-2"></i>
Urban
</button>
<button class="filter-btn px-6 py-3 rounded-full bg-gray-100 text-gray-600 hover:bg-purple-100 hover:text-purple-600">
<i data-feather="mountain" class="w-4 h-4 mr-2"></i>
Adventure
</button>
<button class="filter-btn px-6 py-3 rounded-full bg-gray-100 text-gray-600 hover:bg-purple-100 hover:text-purple-600">
<i data-feather="compass" class="w-4 h-4 mr-2"></i>
Cultural
</button>
</div>
</div>
</section>
<!-- Destinations Grid -->
<section class="py-12 bg-gray-50">
<div class="container mx-auto px-6">
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8" id="destinationsGrid">
<!-- Destinations will be loaded dynamically -->
</div>
</div>
</section>
<!-- Newsletter -->
<section class="py-20 bg-white">
<div class="container mx-auto px-6 text-center">
<h2 class="text-3xl font-bold mb-6 gradient-text">Stay Updated</h2>
<p class="text-gray-600 mb-8 max-w-2xl mx-auto">
Get the latest travel tips, destination guides, and exclusive offers delivered to your inbox.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center max-w-md mx-auto">
<input type="email" placeholder="Enter your email" class="flex-1 px-6 py-3 rounded-full border border-gray-300 focus:outline-none focus:border-purple-600" id="newsletterEmail">
<button class="bg-purple-600 text-white px-8 py-3 rounded-full hover:bg-purple-700 transition-all">
Subscribe
</button>
</div>
</div>
</section>
<!-- Footer -->
<footer class="bg-gray-900 text-white py-12">
<div class="container mx-auto px-6">
<div class="grid md:grid-cols-4 gap-8 mb-8">
<div>
<div class="flex items-center space-x-2 mb-4">
<i data-feather="map-pin" class="text-purple-400 w-6 h-6"></i>
<span class="text-xl font-bold">TravelinLite Pro</span>
</div>
<p class="text-gray-400">
Your gateway to featherweight adventures around the world.
</p>
</div>
<div>
<h4 class="font-semibold mb-4">Quick Links</h4>
<ul class="space-y-2 text-gray-400">
<li><a href="index.html" class="hover:text-white transition-colors">Home</a></li>
<li><a href="destinations.html" class="hover:text-white transition-colors">Destinations</a></li>
<li><a href="packages.html" class="hover:text-white transition-colors">Packages</a></li>
<li><a href="blog.html" class="hover:text-white transition-colors">Blog</a></li>
</ul>
</div>
<div>
<h4 class="font-semibold mb-4">Support</h4>
<ul class="space-y-2 text-gray-400">
<li><a href="contact.html" class="hover:text-white transition-colors">Contact</a></li>
<li><a href="#" class="hover:text-white transition-colors">Help Center</a></li>
<li><a href="#" class="hover:text-white transition-colors">Safety Info</a></li>
<li><a href="#" class="hover:text-white transition-colors">Terms</a></li>
</ul>
</div>
<div>
<h4 class="font-semibold mb-4">Follow Us</h4>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white transition-colors">
<i data-feather="facebook" class="w-6 h-6"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition-colors">
<i data-feather="twitter" class="w-6 h-6"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition-colors">
<i data-feather="instagram" class="w-6 h-6"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition-colors">
<i data-feather="youtube" class="w-6 h-6"></i>
</a>
</div>
</div>
</div>
<div class="border-t border-gray-800 pt-8 text-center text-gray-400">
<p>&copy; 2024 TravelinLite Pro. All rights reserved. Made with ❤️ for travelers.</p>
</div>
</div>
</footer>
<script>
feather.replace();
// Destination data
const destinations = [
{
id: 1,
name: "Bali, Indonesia",
type: "tropical",
description: "Island paradise with stunning beaches and rich cultural heritage",
price: "$899",
image: "https://static.photos/nature/640x360/201",
duration: "7 days",
rating: 4.9
},
{
id: 2,
name: "Tokyo, Japan",
type: "urban",
description: "Futuristic cityscape blending tradition with cutting-edge technology",
price: "$1,299",
image: "https://static.photos/cityscape/640x360/202",
duration: "5 days",
rating: 4.8
},
{
id: 3,
name: "Santorini, Greece",
type: "cultural",
description: "Iconic white buildings and breathtaking sunset views over the Aegean Sea",
price: "$1,099",
image: "https://static.photos/travel/640x360/207",
duration: "6 days",
rating: 4.9
},
{
id: 4,
name: "Swiss Alps",
type: "adventure",
description: "Majestic mountain ranges perfect for hiking and winter sports",
price: "$1,499",
image: "https://static.photos/nature/640x360/208",
duration: "8 days",
rating: 4.7
},
{
id: 5,
name: "New Zealand",
type: "adventure",
description: "Dramatic landscapes from fjords to volcanic plateaus",
price: "$1,799",
image: "https://static.photos/nature/640x360/209",
duration: "10 days",
rating: 4.8
},
{
id: 6,
name: "Marrakech, Morocco",
type: "cultural",
description: "Vibrant markets and historic architecture in North Africa",
price: "$799",
image: "https://static.photos/travel/640x360/210",
duration: "5 days",
rating: 4.6
}
];
// Render destinations
function renderDestinations(filter = 'all') {
const grid = document.getElementById('destinationsGrid');
grid.innerHTML = '';
const filteredDestinations = filter === 'all'
? destinations
: destinations.filter(dest => dest.type === filter);
filteredDestinations.forEach(dest => {
const card = document.createElement('div');
card.className = 'bg-white rounded-2xl overflow-hidden shadow-lg card-hover';
card.innerHTML = `
<img src="${dest.image}" alt="${dest.name}" class="w-full h-48 object-cover">
<div class="p-6">
<div class="flex justify-between items-start mb-3">
<h3 class="text-xl font-bold">${dest.name}</h3>
<div class="flex items-center space-x-1">
<i data-feather="star" class="w-4 h-4 text-yellow-400"></i>
<span class="text-sm font-semibold">${dest.rating}</span>
</div>
<p class="text-gray-600 text-sm mb-4">${dest.description}</p>
<div class="flex justify-between items-center">
<span class="text-purple-600 font-bold">${dest.price}</span>
<span class="text-gray-500 text-sm">${dest.duration}</span>
</div>
<button class="w-full mt-4 bg-purple-600 text-white py-2 rounded-full hover:bg-purple-700 transition-colors">
View Details
</button>
</div>
`;
grid.appendChild(card);
});
feather.replace();
}
// Filter functionality
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.addEventListener('click', function() {
document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
this.classList.add('active');
const filterType = this.textContent.trim().toLowerCase();
let filter = 'all';
if (filterType.includes('tropical')) filter = 'tropical';
else if (filterType.includes('urban')) filter = 'urban';
else if (filterType.includes('adventure')) filter = 'adventure';
else if (filterType.includes('cultural')) filter = 'cultural';
renderDestinations(filter);
});
}
// Initial render
renderDestinations();
// Newsletter subscription
document.querySelector('#newsletterEmail').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
subscribeNewsletter();
}
});
document.querySelector('#newsletterEmail').nextElementSibling.addEventListener('click', subscribeNewsletter);
function subscribeNewsletter() {
const email = document.getElementById('newsletterEmail').value;
if (email && email.includes('@')) {
alert('Thank you for subscribing to our newsletter!');
document.getElementById('newsletterEmail').value = '';
} else {
alert('Please enter a valid email address.');
}
}
// Animate cards on scroll
const animateOnScroll = () => {
const elements = document.querySelectorAll('.card-hover');
elements.forEach(element => {
const elementTop = element.getBoundingClientRect().top;
const elementBottom = element.getBoundingClientRect().bottom;
if (elementTop < window.innerHeight && elementBottom > 0) {
element.classList.add('slide-in');
}
});
};
window.addEventListener('scroll', animateOnScroll);
animateOnScroll();
</script>
</body>
</html>