| | <!DOCTYPE html> |
| | <html lang="en" class="dark"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>YourHand.co - Handcrafted Marketplace</title> |
| | <script src="https://cdn.tailwindcss.com"></script> |
| | <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| | <script src="https://unpkg.com/feather-icons"></script> |
| | <script> |
| | tailwind.config = { |
| | darkMode: 'class', |
| | theme: { |
| | extend: { |
| | colors: { |
| | primary: { |
| | 500: '#d946ef', |
| | }, |
| | secondary: { |
| | 500: '#d946ef', |
| | } |
| | } |
| | } |
| | } |
| | } |
| | </script> |
| | <style> |
| | .vanta-bg { |
| | position: absolute; |
| | z-index: -1; |
| | top: 0; |
| | left: 0; |
| | width: 100%; |
| | height: 100%; |
| | opacity: 0.2; |
| | } |
| | .gradient-text { |
| | background: linear-gradient(90deg, #d946ef 0%, #a855f7 100%); |
| | -webkit-background-clip: text; |
| | background-clip: text; |
| | color: transparent; |
| | } |
| | .card-hover:hover { |
| | transform: translateY(-5px); |
| | box-shadow: 0 25px 50px -12px rgba(216, 70, 239, 0.25); |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-900 text-gray-100 min-h-screen"> |
| | |
| | <nav class="bg-gray-800 border-b border-gray-700 px-4 py-3"> |
| | <div class="max-w-7xl mx-auto flex items-center justify-between"> |
| | <div class="flex items-center space-x-2"> |
| | <i data-feather="hand" class="text-primary-500 w-8 h-8"></i> |
| | <span class="text-2xl font-bold gradient-text">YourHand.co</span> |
| | </div> |
| | <div class="hidden md:flex space-x-6"> |
| | <a href="#" class="hover:text-primary-500 transition">Home</a> |
| | <a href="#marketplace" class="hover:text-primary-500 transition">Marketplace</a> |
| | <a href="#food-rescue" class="hover:text-primary-500 transition">Food Rescue</a> |
| | <a href="#about" class="hover:text-primary-500 transition">About</a> |
| | <a href="#contact" class="hover:text-primary-500 transition">Contact</a> |
| | </div> |
| | <div class="flex items-center space-x-4"> |
| | <a href="cart.html" class="p-2 rounded-full hover:bg-gray-700 transition relative"> |
| | <i data-feather="shopping-cart" class="w-5 h-5"></i> |
| | <span id="cartCounter" class="absolute -top-1 -right-1 bg-primary-500 text-white text-xs rounded-full h-5 w-5 flex items-center justify-center hidden">0</span> |
| | </a> |
| | <a href="login.html" class="p-2 rounded-full hover:bg-gray-700 transition"> |
| | <i data-feather="user" class="w-5 h-5"></i> |
| | </a> |
| | <button id="theme-toggle" class="p-2 rounded-full hover:bg-gray-700 transition"> |
| | <i data-feather="moon" class="w-5 h-5"></i> |
| | </button> |
| | <a href="register.html" class="hidden md:block bg-primary-500 hover:bg-primary-600 text-white font-medium py-2 px-4 rounded-lg transition"> |
| | Register |
| | </a> |
| | <button class="md:hidden p-2 rounded-full hover:bg-gray-700 transition"> |
| | <i data-feather="menu" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </nav> |
| |
|
| | |
| | <section class="relative overflow-hidden py-20 px-4"> |
| | <div class="max-w-7xl mx-auto text-center relative z-10"> |
| | <h1 class="text-5xl md:text-7xl font-bold mb-6"> |
| | <span class="gradient-text">Handmade</span> Meets <span class="gradient-text">Sustainability</span> |
| | </h1> |
| | <p class="text-xl md:text-2xl text-gray-300 mb-10 max-w-3xl mx-auto"> |
| | Discover unique handcrafted items and rescue delicious food - all in one place. Support local artisans and reduce food waste. |
| | </p> |
| | <div class="flex flex-col sm:flex-row justify-center gap-4"> |
| | <a href="#marketplace" class="bg-primary-500 hover:bg-primary-600 text-white font-bold py-3 px-8 rounded-full transition transform hover:scale-105"> |
| | Shop Handmade |
| | </a> |
| | <a href="#food-rescue" class="bg-gray-700 hover:bg-gray-600 text-white font-bold py-3 px-8 rounded-full transition transform hover:scale-105"> |
| | Rescue Food |
| | </a> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | <script> |
| | function initFoodMap() { |
| | if (navigator.geolocation) { |
| | navigator.geolocation.getCurrentPosition(function(position) { |
| | const userPosition = [position.coords.longitude, position.coords.latitude]; |
| | |
| | const map = new AMap.Map("foodMap", { |
| | viewMode: "3D", |
| | zoom: 12, |
| | center: userPosition, |
| | mapStyle: "amap://styles/dark" |
| | }); |
| | |
| | new AMap.Marker({ |
| | position: userPosition, |
| | map: map, |
| | title: "Your Location", |
| | icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png" |
| | }); |
| | |
| | |
| | const foodLocations = [ |
| | { |
| | position: [userPosition[0] + 0.008, userPosition[1] + 0.008], |
| | title: "Bakery Delight", |
| | offer: "Bread Surprise Bag", |
| | price: "$3.99", |
| | distance: "0.3 mi" |
| | }, |
| | { |
| | position: [userPosition[0] + 0.015, userPosition[1] - 0.01], |
| | title: "GreenEats", |
| | offer: "Vegetarian Lunch Box", |
| | price: "$4.80", |
| | distance: "0.7 mi" |
| | }, |
| | { |
| | position: [userPosition[0] - 0.02, userPosition[1] - 0.015], |
| | title: "Ocean Bites", |
| | offer: "Sushi Surprise Pack", |
| | price: "$6.00", |
| | distance: "1.2 mi" |
| | } |
| | ]; |
| | |
| | |
| | foodLocations.forEach(location => { |
| | const marker = new AMap.Marker({ |
| | position: location.position, |
| | map: map, |
| | title: location.title, |
| | icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_r.png" |
| | }); |
| | |
| | const infoWindow = new AMap.InfoWindow({ |
| | content: ` |
| | <div class="text-gray-800 p-2"> |
| | <h3 class="font-bold">${location.title}</h3> |
| | <p>Offer: ${location.offer}</p> |
| | <p>Price: ${location.price}</p> |
| | <p>Distance: ${location.distance}</p> |
| | </div> |
| | `, |
| | offset: new AMap.Pixel(0, -30) |
| | }); |
| | |
| | marker.on('click', () => { |
| | infoWindow.open(map, marker.getPosition()); |
| | }); |
| | }); |
| | }); |
| | } |
| | } |
| | |
| | function initMaps() { |
| | initMap(); |
| | initFoodMap(); |
| | } |
| | |
| | document.addEventListener('DOMContentLoaded', initMaps); |
| | </script> |
| | <script src="https://webapi.amap.com/maps?v=2.0&key=YOUR_PETAL_MAP_KEY"></script> |
| | <script> |
| | |
| | function initMap() { |
| | if (navigator.geolocation) { |
| | navigator.geolocation.getCurrentPosition(function(position) { |
| | const userPosition = [position.coords.longitude, position.coords.latitude]; |
| | |
| | const map = new AMap.Map("productsMap", { |
| | viewMode: "3D", |
| | zoom: 12, |
| | center: userPosition, |
| | mapStyle: "amap://styles/dark" |
| | }); |
| | |
| | new AMap.Marker({ |
| | position: userPosition, |
| | map: map, |
| | title: "Your Location", |
| | icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png" |
| | }); |
| | |
| | |
| | const products = [ |
| | { |
| | position: [userPosition[0] + 0.01, userPosition[1] + 0.01], |
| | title: "Handwoven Macrame", |
| | price: "$45", |
| | distance: "0.5 mi" |
| | }, |
| | { |
| | position: [userPosition[0] + 0.02, userPosition[1] - 0.01], |
| | title: "Ceramic Mug Set", |
| | price: "$28", |
| | distance: "1.2 mi" |
| | }, |
| | { |
| | position: [userPosition[0] - 0.03, userPosition[1] - 0.02], |
| | title: "Leather Wallet", |
| | price: "$75", |
| | distance: "2.5 mi" |
| | } |
| | ]; |
| | |
| | |
| | products.forEach(product => { |
| | const marker = new AMap.Marker({ |
| | position: product.position, |
| | map: map, |
| | title: product.title, |
| | icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_r.png" |
| | }); |
| | |
| | const infoWindow = new AMap.InfoWindow({ |
| | content: ` |
| | <div class="text-gray-800 p-2"> |
| | <h3 class="font-bold">${product.title}</h3> |
| | <p>Price: ${product.price}</p> |
| | <p>Distance: ${product.distance}</p> |
| | </div> |
| | `, |
| | offset: new AMap.Pixel(0, -30) |
| | }); |
| | |
| | marker.on('click', () => { |
| | infoWindow.open(map, marker.getPosition()); |
| | }); |
| | }); |
| | }); |
| | } |
| | } |
| | |
| | |
| | window.initMap = initMap; |
| | document.addEventListener('DOMContentLoaded', initMap); |
| | </script> |
| | |
| | <section id="marketplace" class="py-16 px-4 bg-gray-800"> |
| | <div class="max-w-7xl mx-auto"> |
| | |
| | <div class="mb-10 bg-gray-700 rounded-xl overflow-hidden h-96"> |
| | <div id="productsMap" class="w-full h-full"></div> |
| | </div> |
| | <div class="flex items-center justify-between mb-10"> |
| | <h2 class="text-3xl font-bold"> |
| | <span class="gradient-text">Etsy-style</span> Marketplace |
| | </h2> |
| | <a href="#" class="flex items-center text-primary-500 hover:text-primary-400 transition"> |
| | View all <i data-feather="chevron-right" class="ml-1 w-5 h-5"></i> |
| | </a> |
| | </div> |
| | |
| | <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6"> |
| | |
| | <div class="bg-gray-700 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-60 overflow-hidden"> |
| | <img src="http://static.photos/craft/640x360/1" alt="Handmade Product" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | $45 |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <div class="flex items-center justify-between mb-1"> |
| | <div class="flex items-center"> |
| | <div class="w-6 h-6 rounded-full overflow-hidden mr-2"> |
| | <img src="http://static.photos/people/200x200/1" alt="Seller" class="w-full h-full object-cover"> |
| | </div> |
| | <span class="text-sm text-gray-300">CraftyHands</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-xs"> |
| | <i data-feather="map-pin" class="w-3 h-3 mr-1"></i> |
| | <span>1.2mi</span> |
| | </div> |
| | </div> |
| | <h3 class="font-bold mb-2">Handwoven Macrame Wall Hanging</h3> |
| | <div class="flex items-center justify-between"> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4"></i> |
| | <span class="text-gray-400 text-sm ml-1">(24)</span> |
| | </div> |
| | <button |
| | class="text-primary-500 hover:text-primary-400 transition" |
| | data-add-to-cart |
| | data-product-id="macrame-wall-hanging" |
| | data-product-name="Handwoven Macrame Wall Hanging" |
| | data-product-price="45" |
| | data-product-image="http://static.photos/craft/640x360/1"> |
| | <i data-feather="shopping-cart" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="bg-gray-700 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-60 overflow-hidden"> |
| | <img src="http://static.photos/craft/640x360/2" alt="Handmade Product" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | $28 |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <div class="flex items-center justify-between mb-1"> |
| | <div class="flex items-center"> |
| | <div class="w-6 h-6 rounded-full overflow-hidden mr-2"> |
| | <img src="http://static.photos/people/200x200/2" alt="Seller" class="w-full h-full object-cover"> |
| | </div> |
| | <span class="text-sm text-gray-300">EarthCeramics</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-xs"> |
| | <i data-feather="map-pin" class="w-3 h-3 mr-1"></i> |
| | <span>0.8mi</span> |
| | </div> |
| | </div> |
| | <h3 class="font-bold mb-2">Hand-thrown Ceramic Mug Set</h3> |
| | <div class="flex items-center justify-between"> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <span class="text-gray-400 text-sm ml-1">(56)</span> |
| | </div> |
| | <button |
| | class="text-primary-500 hover:text-primary-400 transition" |
| | data-add-to-cart |
| | data-product-id="ceramic-mug-set" |
| | data-product-name="Hand-thrown Ceramic Mug Set" |
| | data-product-price="28" |
| | data-product-image="http://static.photos/craft/640x360/2"> |
| | <i data-feather="shopping-cart" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="bg-gray-700 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-60 overflow-hidden"> |
| | <img src="http://static.photos/craft/640x360/3" alt="Handmade Product" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | $75 |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <div class="flex items-center justify-between mb-1"> |
| | <div class="flex items-center"> |
| | <div class="w-6 h-6 rounded-full overflow-hidden mr-2"> |
| | <img src="http://static.photos/people/200x200/3" alt="Seller" class="w-full h-full object-cover"> |
| | </div> |
| | <span class="text-sm text-gray-300">LeatherCraft</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-xs"> |
| | <i data-feather="map-pin" class="w-3 h-3 mr-1"></i> |
| | <span>2.5mi</span> |
| | </div> |
| | </div> |
| | <h3 class="font-bold mb-2">Hand-stitched Leather Wallet</h3> |
| | <div class="flex items-center justify-between"> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4"></i> |
| | <span class="text-gray-400 text-sm ml-1">(18)</span> |
| | </div> |
| | <button |
| | class="text-primary-500 hover:text-primary-400 transition" |
| | data-add-to-cart |
| | data-product-id="leather-wallet" |
| | data-product-name="Hand-stitched Leather Wallet" |
| | data-product-price="75" |
| | data-product-image="http://static.photos/craft/640x360/3"> |
| | <i data-feather="shopping-cart" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="bg-gray-700 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-60 overflow-hidden"> |
| | <img src="http://static.photos/craft/640x360/4" alt="Handmade Product" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | $32 |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <div class="flex items-center justify-between mb-1"> |
| | <div class="flex items-center"> |
| | <div class="w-6 h-6 rounded-full overflow-hidden mr-2"> |
| | <img src="http://static.photos/people/200x200/4" alt="Seller" class="w-full h-full object-cover"> |
| | </div> |
| | <span class="text-sm text-gray-300">WoodArt</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-xs"> |
| | <i data-feather="map-pin" class="w-3 h-3 mr-1"></i> |
| | <span>1.7mi</span> |
| | </div> |
| | </div> |
| | <h3 class="font-bold mb-2">Hand-carved Wooden Spoon Set</h3> |
| | <div class="flex items-center justify-between"> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4"></i> |
| | <span class="text-gray-400 text-sm ml-1">(32)</span> |
| | </div> |
| | <button |
| | class="text-primary-500 hover:text-primary-400 transition" |
| | data-add-to-cart |
| | data-product-id="wooden-spoon-set" |
| | data-product-name="Hand-carved Wooden Spoon Set" |
| | data-product-price="32" |
| | data-product-image="http://static.photos/craft/640x360/4"> |
| | <i data-feather="shopping-cart" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </section> |
| | |
| | <section id="food-rescue" class="py-16 px-4 bg-gray-900"> |
| | <div class="max-w-7xl mx-auto"> |
| | |
| | <div class="mb-10 bg-gray-800 rounded-xl overflow-hidden h-96"> |
| | <div id="foodMap" class="w-full h-full"></div> |
| | </div> |
| | <div class="flex items-center justify-between mb-10"> |
| | <h2 class="text-3xl font-bold"> |
| | <span class="gradient-text">Too Good To Go</span> Style Food Rescue |
| | </h2> |
| | <a href="#" class="flex items-center text-primary-500 hover:text-primary-400 transition"> |
| | View all <i data-feather="chevron-right" class="ml-1 w-5 h-5"></i> |
| | </a> |
| | </div> |
| | |
| | <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6"> |
| | |
| | <div class="bg-gray-800 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-48 overflow-hidden"> |
| | <img src="http://static.photos/food/640x360/1" alt="Food Rescue" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | 75% OFF |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <h3 class="font-bold mb-1">Fresh Bakery Surprise Bag</h3> |
| | <p class="text-gray-400 text-sm mb-3">Bakery Delight • 0.3 mi</p> |
| | <div class="flex items-center justify-between"> |
| | <div> |
| | <span class="text-gray-400 line-through">$15</span> |
| | <span class="text-primary-500 font-bold ml-2">$3.99</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-sm"> |
| | <i data-feather="clock" class="w-4 h-4 mr-1"></i> |
| | <span>Pickup: 4-5 PM</span> |
| | </div> |
| | </div> |
| | <button |
| | class="w-full mt-4 bg-primary-500 hover:bg-primary-600 text-white font-bold py-2 px-4 rounded-lg transition" |
| | data-add-to-cart |
| | data-product-id="bakery-surprise" |
| | data-product-name="Fresh Bakery Surprise Bag" |
| | data-product-price="3.99" |
| | data-product-image="http://static.photos/food/640x360/1"> |
| | Add to Cart - $3.99 |
| | </button> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="bg-gray-800 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-48 overflow-hidden"> |
| | <img src="http://static.photos/food/640x360/2" alt="Food Rescue" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | 60% OFF |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <h3 class="font-bold mb-1">Vegetarian Lunch Box</h3> |
| | <p class="text-gray-400 text-sm mb-3">GreenEats • 0.7 mi</p> |
| | <div class="flex items-center justify-between"> |
| | <div> |
| | <span class="text-gray-400 line-through">$12</span> |
| | <span class="text-primary-500 font-bold ml-2">$4.80</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-sm"> |
| | <i data-feather="clock" class="w-4 h-4 mr-1"></i> |
| | <span>Pickup: 1-2 PM</span> |
| | </div> |
| | </div> |
| | <button |
| | class="w-full mt-4 bg-primary-500 hover:bg-primary-600 text-white font-bold py-2 px-4 rounded-lg transition" |
| | data-add-to-cart |
| | data-product-id="vegetarian-lunch" |
| | data-product-name="Vegetarian Lunch Box" |
| | data-product-price="4.80" |
| | data-product-image="http://static.photos/food/640x360/2"> |
| | Add to Cart - $4.80 |
| | </button> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="bg-gray-800 rounded-xl overflow-hidden shadow-lg transition duration-300 card-hover"> |
| | <div class="relative h-48 overflow-hidden"> |
| | <img src="http://static.photos/food/640x360/3" alt="Food Rescue" class="w-full h-full object-cover"> |
| | <div class="absolute top-2 right-2 bg-gray-900 text-primary-500 px-2 py-1 rounded-full text-xs font-bold"> |
| | 70% OFF |
| | </div> |
| | </div> |
| | <div class="p-4"> |
| | <h3 class="font-bold mb-1">Sushi Surprise Pack</h3> |
| | <p class="text-gray-400 text-sm mb-3">Ocean Bites • 1.2 mi</p> |
| | <div class="flex items-center justify-between"> |
| | <div> |
| | <span class="text-gray-400 line-through">$20</span> |
| | <span class="text-primary-500 font-bold ml-2">$6.00</span> |
| | </div> |
| | <div class="flex items-center text-gray-400 text-sm"> |
| | <i data-feather="clock" class="w-4 h-4 mr-1"></i> |
| | <span>Pickup: 8-9 PM</span> |
| | </div> |
| | </div> |
| | <button |
| | class="w-full mt-4 bg-primary-500 hover:bg-primary-600 text-white font-bold py-2 px-4 rounded-lg transition" |
| | data-add-to-cart |
| | data-product-id="sushi-pack" |
| | data-product-name="Sushi Surprise Pack" |
| | data-product-price="6.00" |
| | data-product-image="http://static.photos/food/640x360/3"> |
| | Add to Cart - $6.00 |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | |
| | <section class="py-16 px-4 bg-gray-800"> |
| | <div class="max-w-7xl mx-auto"> |
| | <div class="text-center mb-16"> |
| | <h2 class="text-3xl font-bold mb-4"> |
| | Why Choose <span class="gradient-text">YourHand.co</span>? |
| | </h2> |
| | <p class="text-xl text-gray-300 max-w-3xl mx-auto"> |
| | We combine the best of handmade craftsmanship and sustainable food practices in one platform. |
| | </p> |
| | </div> |
| | |
| | <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> |
| | <div class="bg-gray-700 p-6 rounded-xl text-center"> |
| | <div class="w-16 h-16 bg-primary-500 bg-opacity-20 rounded-full flex items-center justify-center mx-auto mb-4"> |
| | <i data-feather="shopping-bag" class="w-8 h-8 text-primary-500"></i> |
| | </div> |
| | <h3 class="text-xl font-bold mb-2">Unique Handmade Items</h3> |
| | <p class="text-gray-400"> |
| | Discover one-of-a-kind pieces crafted with love and care by talented artisans worldwide. |
| | </p> |
| | </div> |
| | |
| | <div class="bg-gray-700 p-6 rounded-xl text-center"> |
| | <div class="w-16 h-16 bg-primary-500 bg-opacity-20 rounded-full flex items-center justify-center mx-auto mb-4"> |
| | <i data-feather="heart" class="w-8 h-8 text-primary-500"></i> |
| | </div> |
| | <h3 class="text-xl font-bold mb-2">Support Small Businesses</h3> |
| | <p class="text-gray-400"> |
| | Your purchases directly support independent creators and their small businesses. |
| | </p> |
| | </div> |
| | |
| | <div class="bg-gray-700 p-6 rounded-xl text-center"> |
| | <div class="w-16 h-16 bg-primary-500 bg-opacity-20 rounded-full flex items-center justify-center mx-auto mb-4"> |
| | <i data-feather="globe" class="w-8 h-8 text-primary-500"></i> |
| | </div> |
| | <h3 class="text-xl font-bold mb-2">Reduce Food Waste</h3> |
| | <p class="text-gray-400"> |
| | Rescue delicious food at discounted prices while helping the environment. |
| | </p> |
| | </div> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | |
| | <section class="py-16 px-4 bg-gray-900"> |
| | <div class="max-w-7xl mx-auto"> |
| | <h2 class="text-3xl font-bold text-center mb-16"> |
| | What Our <span class="gradient-text">Community</span> Says |
| | </h2> |
| | |
| | <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> |
| | <div class="bg-gray-800 p-6 rounded-xl"> |
| | <div class="flex items-center mb-4"> |
| | <div class="w-12 h-12 rounded-full overflow-hidden mr-4"> |
| | <img src="http://static.photos/people/200x200/5" alt="User" class="w-full h-full object-cover"> |
| | </div> |
| | <div> |
| | <h4 class="font-bold">Jamie L.</h4> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | </div> |
| | </div> |
| | </div> |
| | <p class="text-gray-300"> |
| | "I've found the most beautiful handmade jewelry here that I can't find anywhere else. Plus, I love being able to rescue food from my favorite cafes!" |
| | </p> |
| | </div> |
| | |
| | <div class="bg-gray-800 p-6 rounded-xl"> |
| | <div class="flex items-center mb-4"> |
| | <div class="w-12 h-12 rounded-full overflow-hidden mr-4"> |
| | <img src="http://static.photos/people/200x200/6" alt="User" class="w-full h-full object-cover"> |
| | </div> |
| | <div> |
| | <h4 class="font-bold">Marcus T.</h4> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | </div> |
| | </div> |
| | </div> |
| | <p class="text-gray-300"> |
| | "As a small business owner, YourHand.co has given me the perfect platform to showcase my woodworking. The community is amazing and sales have been great!" |
| | </p> |
| | </div> |
| | |
| | <div class="bg-gray-800 p-6 rounded-xl"> |
| | <div class="flex items-center mb-4"> |
| | <div class="w-12 h-12 rounded-full overflow-hidden mr-4"> |
| | <img src="http://static.photos/people/200x200/7" alt="User" class="w-full h-full object-cover"> |
| | </div> |
| | <div> |
| | <h4 class="font-bold">Sophia K.</h4> |
| | <div class="flex items-center text-yellow-400"> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4 fill-current"></i> |
| | <i data-feather="star" class="w-4 h-4"></i> |
| | </div> |
| | </div> |
| | </div> |
| | <p class="text-gray-300"> |
| | "The food rescue program has saved me so much money on lunches! I get high-quality meals for a fraction of the price while reducing waste. Win-win!" |
| | </p> |
| | </div> |
| | </div> |
| | </div> |
| | </section> |
| | |
| | <section class="py-16 px-4 bg-gray-800"> |
| | <div class="max-w-7xl mx-auto"> |
| | <div class="flex items-center justify-between mb-10"> |
| | <h2 class="text-3xl font-bold"> |
| | <span class="gradient-text">Live Shopping</span> Broadcasts |
| | </h2> |
| | <a href="#" class="flex items-center text-primary-500 hover:text-primary-400 transition"> |
| | View all <i data-feather="chevron-right" class="ml-1 w-5 h-5"></i> |
| | </a> |
| | </div> |
| | |
| | <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> |
| | |
| | <div class="bg-gray-700 rounded-xl overflow-hidden shadow-lg"> |
| | <div class="relative h-96 overflow-hidden"> |
| | <div class="absolute inset-0 bg-black bg-opacity-50 flex items-center justify-center"> |
| | <div class="text-center"> |
| | <i data-feather="play-circle" class="w-16 h-16 text-primary-500 mx-auto mb-4"></i> |
| | <span class="text-white text-xl font-bold">Live Now</span> |
| | </div> |
| | </div> |
| | <img src="http://static.photos/workspace/1024x576/1" alt="Live Stream" class="w-full h-full object-cover"> |
| | <div class="absolute bottom-4 left-4 bg-red-500 text-white px-2 py-1 rounded-full text-xs font-bold"> |
| | LIVE |
| | </div> |
| | <div class="absolute bottom-4 right-4 bg-gray-900 text-white px-2 py-1 rounded-full text-xs font-bold"> |
| | 128 Viewers |
| | </div> |
| | </div> |
| | <div class="p-4 h-64 flex flex-col"> |
| | <div class="flex items-center mb-4"> |
| | <div class="w-10 h-10 rounded-full overflow-hidden mr-3"> |
| | <img src="http://static.photos/people/200x200/8" alt="Seller" class="w-full h-full object-cover"> |
| | </div> |
| | <div> |
| | <h4 class="font-bold">CraftyHands Studio</h4> |
| | <p class="text-sm text-gray-400">Macrame & Home Decor</p> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="flex-1 bg-gray-800 rounded-lg overflow-hidden flex flex-col"> |
| | <div id="chatMessages" class="flex-1 p-3 space-y-2 overflow-y-auto text-sm"> |
| | <div class="bg-gray-700 rounded-lg p-2 max-w-xs"> |
| | <span class="font-bold text-primary-500">Sarah:</span> Love that wall hanging! |
| | </div> |
| | <div class="bg-gray-700 rounded-lg p-2 max-w-xs ml-auto"> |
| | <span class="font-bold text-green-500">Seller:</span> Thanks! It's 100% handmade. |
| | </div> |
| | </div> |
| | <div class="border-t border-gray-700 p-2"> |
| | <div class="flex"> |
| | <input type="text" placeholder="Type your message..." |
| | class="flex-1 bg-gray-700 border border-gray-600 rounded-l-lg px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary-500"> |
| | <button class="bg-primary-500 hover:bg-primary-600 text-white px-3 py-2 rounded-r-lg transition"> |
| | <i data-feather="send" class="w-4 h-4"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <button class="mt-4 w-full bg-primary-500 hover:bg-primary-600 text-white font-bold py-2 px-4 rounded-lg transition"> |
| | Buy Now - $45.00 |
| | </button> |
| | </div> |
| | </div> |
| | |
| | |
| | <div> |
| | <h3 class="text-xl font-bold mb-4">Upcoming Streams</h3> |
| | <div class="space-y-4"> |
| | |
| | <div class="bg-gray-700 rounded-lg p-4 flex items-center"> |
| | <div class="w-16 h-16 rounded-lg overflow-hidden mr-3"> |
| | <img src="http://static.photos/craft/200x200/5" alt="Upcoming" class="w-full h-full object-cover"> |
| | </div> |
| | <div class="flex-1"> |
| | <h4 class="font-bold">Pottery Workshop</h4> |
| | <p class="text-sm text-gray-400">Tomorrow, 3PM EST</p> |
| | </div> |
| | <button class="bg-gray-600 hover:bg-gray-500 text-white px-3 py-1 rounded-lg text-sm transition"> |
| | Remind Me |
| | </button> |
| | </div> |
| | |
| | |
| | <div class="bg-gray-700 rounded-lg p-4 flex items-center"> |
| | <div class="w-16 h-16 rounded-lg overflow-hidden mr-3"> |
| | <img src="http://static.photos/food/200x200/5" alt="Upcoming" class="w-full h-full object-cover"> |
| | </div> |
| | <div class="flex-1"> |
| | <h4 class="font-bold">Bakery Surprise Box</h4> |
| | <p class="text-sm text-gray-400">Friday, 10AM EST</p> |
| | </div> |
| | <button class="bg-gray-600 hover:bg-gray-500 text-white px-3 py-1 rounded-lg text-sm transition"> |
| | Remind Me |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | |
| | <section class="py-20 px-4 bg-gradient-to-r from-gray-800 to-gray-900"> |
| | <div class="max-w-4xl mx-auto text-center"> |
| | <h2 class="text-3xl md:text-5xl font-bold mb-6"> |
| | Ready to Join the <span class="gradient-text">YourHand.co</span> Community? |
| | </h2> |
| | <p class="text-xl text-gray-300 mb-10"> |
| | Whether you're looking for unique handmade items or want to rescue delicious food while saving money, we've got you covered. |
| | </p> |
| | <div class="flex flex-col sm:flex-row justify-center gap-4"> |
| | <a href="#" class="bg-primary-500 hover:bg-primary-600 text-white font-bold py-3 px-8 rounded-full transition transform hover:scale-105"> |
| | Shop Now |
| | </a> |
| | <a href="register.html?role=seller" class="bg-gray-700 hover:bg-gray-600 text-white font-bold py-3 px-8 rounded-full transition transform hover:scale-105"> |
| | Become a Seller |
| | </a> |
| | </div> |
| | </div> |
| | </section> |
| | |
| | <script> |
| | |
| | function initMaps() { |
| | initMap(); |
| | initFoodMap(); |
| | } |
| | |
| | |
| | const chatMessages = document.getElementById('chatMessages'); |
| | const chatInput = document.querySelector('#chatMessages + div input'); |
| | const chatSendBtn = document.querySelector('#chatMessages + div button'); |
| | |
| | chatSendBtn.addEventListener('click', () => { |
| | if (chatInput.value.trim() !== '') { |
| | const messageDiv = document.createElement('div'); |
| | messageDiv.className = 'bg-gray-700 rounded-lg p-2 max-w-xs ml-auto'; |
| | messageDiv.innerHTML = `<span class="font-bold">You:</span> ${chatInput.value}`; |
| | chatMessages.appendChild(messageDiv); |
| | chatInput.value = ''; |
| | chatMessages.scrollTop = chatMessages.scrollHeight; |
| | } |
| | }); |
| | |
| | |
| | setInterval(() => { |
| | const messages = [ |
| | {user: 'Alex', text: 'How long did that take to make?'}, |
| | {user: 'Seller', text: 'About 8 hours total work!', isSeller: true}, |
| | {user: 'Jamie', text: 'Do you do custom colors?'}, |
| | {user: 'Taylor', text: 'Just bought one - so excited!'} |
| | ]; |
| | |
| | const randomMsg = messages[Math.floor(Math.random() * messages.length)]; |
| | const messageDiv = document.createElement('div'); |
| | messageDiv.className = 'bg-gray-700 rounded-lg p-2 max-w-xs'; |
| | if (randomMsg.isSeller) { |
| | messageDiv.innerHTML = `<span class="font-bold text-green-500">Seller:</span> ${randomMsg.text}`; |
| | } else { |
| | messageDiv.innerHTML = `<span class="font-bold text-primary-500">${randomMsg.user}:</span> ${randomMsg.text}`; |
| | } |
| | chatMessages.appendChild(messageDiv); |
| | chatMessages.scrollTop = chatMessages.scrollHeight; |
| | }, 10000); |
| | </script> |
| |
|
| | |
| | <footer class="bg-gray-900 border-t border-gray-800 py-12 px-4 relative z-10"> |
| | <div class="max-w-7xl mx-auto"> |
| | <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> |
| | <div> |
| | <div class="flex items-center space-x-2 mb-4"> |
| | <i data-feather="hand" class="text-primary-500 w-8 h-8"></i> |
| | <span class="text-2xl font-bold gradient-text">YourHand.co</span> |
| | </div> |
| | <p class="text-gray-400 mb-4"> |
| | Where handmade meets sustainability. Supporting artisans and reducing food waste. |
| | </p> |
| | <div class="flex space-x-4"> |
| | <a href="#" class="text-gray-400 hover:text-primary-500 transition"> |
| | <i data-feather="facebook" class="w-5 h-5"></i> |
| | </a> |
| | <a href="#" class="text-gray-400 hover:text-primary-500 transition"> |
| | <i data-feather="instagram" class="w-5 h-5"></i> |
| | </a> |
| | <a href="#" class="text-gray-400 hover:text-primary-500 transition"> |
| | <i data-feather="twitter" class="w-5 h-5"></i> |
| | </a> |
| | <a href="#" class="text-gray-400 hover:text-primary-500 transition"> |
| | <i data-feather="youtube" class="w-5 h-5"></i> |
| | </a> |
| | </div> |
| | </div> |
| | |
| | <div> |
| | <h3 class="text-lg font-bold mb-4">Marketplace</h3> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">All Categories</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">New Arrivals</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Best Sellers</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Gift Ideas</a></li> |
| | <li> |
| | <a href="login.html" class="text-gray-400 hover:text-primary-500 transition">Become a Seller</a> |
| | </li> |
| | </ul> |
| | </div> |
| | |
| | <div> |
| | <h3 class="text-lg font-bold mb-4">Food Rescue</h3> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Nearby Offers</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">How It Works</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">For Businesses</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Impact</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">FAQ</a></li> |
| | </ul> |
| | </div> |
| | |
| | <div> |
| | <h3 class="text-lg font-bold mb-4">Company</h3> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">About Us</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Careers</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Blog</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Press</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-primary-500 transition">Contact</a></li> |
| | </ul> |
| | </div> |
| | </div> |
| | |
| | <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center"> |
| | <p class="text-gray-500 text-sm mb-4 md:mb-0"> |
| | © 2023 YourHand.co. All rights reserved. |
| | </p> |
| | <div class="flex space-x-6"> |
| | <a href="#" class="text-gray-500 hover:text-primary-500 text-sm transition">Privacy Policy</a> |
| | <a href="#" class="text-gray-500 hover:text-primary-500 text-sm transition">Terms of Service</a> |
| | <a href="#" class="text-gray-500 hover:text-primary-500 text-sm transition">Cookie Policy</a> |
| | </div> |
| | </div> |
| | </div> |
| | </footer> |
| |
|
| | <script> |
| | |
| | const themeToggle = document.getElementById('theme-toggle'); |
| | const html = document.documentElement; |
| | |
| | themeToggle.addEventListener('click', () => { |
| | html.classList.toggle('dark'); |
| | const icon = themeToggle.querySelector('i'); |
| | if (html.classList.contains('dark')) { |
| | icon.setAttribute('data-feather', 'moon'); |
| | } else { |
| | icon.setAttribute('data-feather', 'sun'); |
| | } |
| | feather.replace(); |
| | }); |
| | |
| | feather.replace(); |
| | |
| | |
| | function loadGoogleMaps() { |
| | const script = document.createElement('script'); |
| | script.src = `https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMaps`; |
| | script.async = true; |
| | script.defer = true; |
| | document.head.appendChild(script); |
| | } |
| | |
| | window.initMap = initMap; |
| | document.addEventListener('DOMContentLoaded', initMap); |
| | |
| | let cart = JSON.parse(localStorage.getItem('cart')) || []; |
| | |
| | function updateCartCounter() { |
| | const counter = document.getElementById('cartCounter'); |
| | const totalItems = cart.reduce((total, item) => total + item.quantity, 0); |
| | counter.textContent = totalItems; |
| | totalItems > 0 ? counter.classList.remove('hidden') : counter.classList.add('hidden'); |
| | } |
| | |
| | |
| | document.querySelectorAll('[data-add-to-cart]').forEach(button => { |
| | button.addEventListener('click', function() { |
| | const productId = this.dataset.productId; |
| | const productName = this.dataset.productName; |
| | const productPrice = parseFloat(this.dataset.productPrice); |
| | const productImage = this.dataset.productImage; |
| | |
| | |
| | const existingItem = cart.find(item => item.id === productId); |
| | if (existingItem) { |
| | existingItem.quantity += 1; |
| | } else { |
| | cart.push({ |
| | id: productId, |
| | name: productName, |
| | price: productPrice, |
| | image: productImage, |
| | quantity: 1 |
| | }); |
| | } |
| | |
| | localStorage.setItem('cart', JSON.stringify(cart)); |
| | updateCartCounter(); |
| | |
| | |
| | const notification = document.createElement('div'); |
| | notification.className = 'fixed bottom-4 right-4 bg-green-500 text-white px-4 py-2 rounded-lg shadow-lg z-50 animate-bounce'; |
| | notification.innerHTML = ` |
| | <div class="flex items-center"> |
| | <i data-feather="check-circle" class="w-5 h-5 mr-2"></i> |
| | Added to cart! |
| | </div> |
| | `; |
| | document.body.appendChild(notification); |
| | feather.replace(); |
| | |
| | setTimeout(() => { |
| | notification.remove(); |
| | }, 3000); |
| | }); |
| | }); |
| | |
| | updateCartCounter(); |
| | |
| | |
| | const chatWidget = document.createElement('div'); |
| | chatWidget.innerHTML = ` |
| | <div class="fixed bottom-6 right-6 z-50"> |
| | <button id="chatToggle" class="w-14 h-14 bg-primary-500 rounded-full shadow-lg flex items-center justify-center text-white hover:bg-primary-600 transition transform hover:scale-110"> |
| | <i data-feather="message-circle" class="w-6 h-6"></i> |
| | </button> |
| | <div id="chatWindow" class="hidden absolute bottom-16 right-0 w-80 bg-gray-800 rounded-xl shadow-xl border border-gray-700 overflow-hidden"> |
| | <div class="bg-gray-700 px-4 py-3 flex justify-between items-center border-b border-gray-600"> |
| | <h3 class="font-bold">Chat Support</h3> |
| | <button id="closeChat" class="text-gray-400 hover:text-white"> |
| | <i data-feather="x" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | <div id="chatMessages" class="h-64 overflow-y-auto p-4 space-y-3"> |
| | <div class="bg-gray-700 rounded-lg p-3 text-sm max-w-xs"> |
| | <p>Hello! How can we help you today?</p> |
| | <span class="text-xs text-gray-400 block mt-1">Just now</span> |
| | </div> |
| | </div> |
| | <div class="border-t border-gray-700 p-3"> |
| | <div class="flex"> |
| | <input type="text" placeholder="Type your message..." |
| | class="flex-1 bg-gray-700 border border-gray-600 rounded-l-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500"> |
| | <button class="bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-r-lg transition"> |
| | <i data-feather="send" class="w-5 h-5"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | `; |
| | document.body.appendChild(chatWidget); |
| | feather.replace(); |
| | |
| | |
| | const chatToggle = document.getElementById('chatToggle'); |
| | const chatWindow = document.getElementById('chatWindow'); |
| | const closeChat = document.getElementById('chatClose'); |
| | |
| | chatToggle.addEventListener('click', () => { |
| | chatWindow.classList.toggle('hidden'); |
| | feather.replace(); |
| | }); |
| | |
| | closeChat.addEventListener('click', () => { |
| | chatWindow.classList.add('hidden'); |
| | }); |
| | </script> |
| | </body> |
| | </html> |
| |
|