test-space / checkout.html
KingNish's picture
Implement product page, cart, and checkout functionality with icons and animations (#28)
c821e69 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Checkout</title>
<link rel="stylesheet" href="style.css">
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-gray-100">
<div class="container mx-auto p-8">
<h1 class="text-2xl font-bold mb-4">Checkout</h1>
<div id="cart-summary" class="mb-8">
<h2 class="text-xl font-semibold mb-2">Cart Summary</h2>
<table class="table-auto w-full">
<thead>
<tr>
<th class="px-4 py-2">Product</th>
<th class="px-4 py-2">Name</th>
<th class="px-4 py-2">Quantity</th>
<th class="px-4 py-2">Price</th>
</tr>
</thead>
<tbody id="cart-items">
</tbody>
</table>
<div class="mt-4 font-bold">
Total: <span id="cart-total"></span>
</div>
</div>
<div id="shipping-info" class="mb-8">
<h2 class="text-xl font-semibold mb-2">Shipping Information</h2>
<form id="shipping-form" class="max-w-lg">
<div class="mb-4">
<label for="name" class="block text-gray-700 text-sm font-bold mb-2">Name:</label>
<input type="text" id="name" name="name" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
<div class="mb-4">
<label for="address" class="block text-gray-700 text-sm font-bold mb-2">Address:</label>
<input type="text" id="address" name="address" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
<div class="mb-4">
<label for="city" class="block text-gray-700 text-sm font-bold mb-2">City:</label>
<input type="text" id="city" name="city" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
<div class="mb-4">
<label for="zip" class="block text-gray-700 text-sm font-bold mb-2">Zip Code:</label>
<input type="text" id="zip" name="zip" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
</form>
</div>
<div id="payment-info" class="mb-8">
<h2 class="text-xl font-semibold mb-2">Payment Information</h2>
<form id="payment-form" class="max-w-lg">
<div class="mb-4">
<label for="card-number" class="block text-gray-700 text-sm font-bold mb-2">Card Number:</label>
<input type="text" id="card-number" name="card-number" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
<div class="mb-4">
<label for="expiry" class="block text-gray-700 text-sm font-bold mb-2">Expiry Date:</label>
<input type="text" id="expiry" name="expiry" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
<div class="mb-4">
<label for="cvv" class="block text-gray-700 text-sm font-bold mb-2">CVV:</label>
<input type="text" id="cvv" name="cvv" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">
</div>
</form>
</div>
<button id="place-order" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline">Place Order</button>
<div id="confirmation-message" class="mt-8 text-green-500 font-bold hidden">
Your order has been placed!
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
const cartItems = JSON.parse(localStorage.getItem('cart')) || [];
const cartItemsContainer = document.getElementById('cart-items');
const cartTotalElement = document.getElementById('cart-total');
const placeOrderButton = document.getElementById('place-order');
const confirmationMessage = document.getElementById('confirmation-message');
let cartTotal = 0;
cartItems.forEach(item => {
const row = document.createElement('tr');
row.innerHTML = `
<td class="px-4 py-2"><img src="${item.image}" alt="${item.name}" class="w-16 h-16"></td>
<td class="px-4 py-2">${item.name}</td>
<td class="px-4 py-2">${item.quantity}</td>
<td class="px-4 py-2">$${item.price * item.quantity}</td>
`;
cartItemsContainer.appendChild(row);
cartTotal += item.price * item.quantity;
});
cartTotalElement.textContent = '$' + cartTotal;
placeOrderButton.addEventListener('click', function () {
confirmationMessage.classList.remove('hidden');
localStorage.removeItem('cart');
cartItemsContainer.innerHTML = '';
cartTotalElement.textContent = '$0';
});
});
</script>
</body>
</html>