khy_admin/preview/catalog.html
2025-09-19 21:51:10 -07:00

260 lines
8.8 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Product Catalog - KHY</title>
<link rel="stylesheet" href="../assets/styles/main.css" />
<style>
/* Force responsive behavior */
@media (min-width: 640px) {
.sm\:hidden {
display: none !important;
}
.sm\:flex {
display: flex !important;
}
}
/* Lazy loading styles */
.lazy-load {
opacity: 0.7;
transition: opacity 0.3s ease-in-out;
}
.lazy-load.loaded {
opacity: 1;
}
</style>
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Playfair+Display:wght@100;200;300;400;500;600;700&family=Poppins:wght@400;500;600&display=swap"
rel="stylesheet"
/>
</head>
<body class="bg-white font-sans text-gray-800">
<!-- Header -->
<header class="fixed w-full h-20 sm:h-28 top-0 left-0 bg-white shadow-[0_8px_24px_rgba(0,0,0,0.06)] border-b border-black/10 z-50">
<nav class="h-full">
<div
class="max-w-7xl mx-auto h-full flex items-center justify-between px-5"
>
</div>
</nav>
</header>
<main>
<!-- Hero Section -->
<section class="relative h-80 mt-20 sm:mt-28">
<!-- Background Image -->
<div class="absolute inset-0 w-full h-full">
<img
src="../assets/images/prod-catalog.jpg"
alt="Product catalog background"
class="w-full h-full object-cover object-center"
style="filter: blur(3px)"
/>
<!-- White Overlay -->
<div class="absolute inset-0 bg-white bg-opacity-60"></div>
<!-- Overlay Content -->
<div
class="absolute z-10 inset-0 flex items-center justify-center text-center text-black"
>
<h1
class="font-playfair font-medium text-3xl md:text-4xl lg:text-5xl leading-tight"
>
Product catalog
</h1>
</section>
<!-- Product Controls Section -->
<section class="relative w-full h-25 bg-floral-white py-6">
<div class="max-w-7xl mx-auto px-5">
<div class="flex justify-between items-center">
<!-- Left side: Filter and View Controls -->
<div class="flex items-center gap-4 relative">
<!-- Filter Button -->
<button
id="filter-toggle"
class="flex items-center gap-2 px-4 py-2 border border-light-silver rounded-md bg-white hover:bg-light-bg transition-colors"
>
<span class="text-lg"></span>
<span class="font-poppins text-lg text-black">Filter</span>
</button>
<!-- Categories Dropdown -->
<div
id="filter-dropdown"
class="hidden absolute top-12 left-0 w-56 bg-white border border-light-silver rounded-md shadow-lg p-3 space-y-2 z-20"
>
<!-- Categories will be injected dynamically -->
<div id="filter-categories" class="space-y-2"></div>
<div class="pt-2 flex justify-end gap-2">
<button id="filter-clear" class="text-quick-silver text-sm hover:text-black">Clear</button>
<button id="filter-apply" class="text-uc-gold text-sm hover:underline">Apply</button>
</div>
</div>
<!-- View Toggle Buttons (removed) -->
<!-- Results Count -->
<span class="font-poppins text-base text-quick-silver"
>Showing 116 of 32 results</span
>
</div>
<!-- Right side: Sort Dropdown -->
<div class="flex items-center gap-4">
<!-- Sort Dropdown -->
<div class="flex items-center gap-2">
<span class="font-poppins text-lg text-black">Sort by:</span>
<select
class="border border-light-silver rounded px-2 py-1 bg-white"
>
<option value="default">Default</option>
<option value="name-asc">Name: A to Z</option>
<option value="name-desc">Name: Z to A</option>
</select>
</div>
</div>
</div>
</div>
</section>
<!-- Product Grid Section -->
<section class="relative w-full bg-white py-12">
<div class="max-w-7xl mx-auto px-5">
<!-- Product Grid -->
<div
id="product-grid"
class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 mb-12"
>
<!-- Products will be loaded dynamically -->
</div>
<!-- Pagination -->
<div id="pagination" class="flex justify-center items-center space-x-10">
<!-- Pagination will be loaded dynamically -->
</div>
</section>
<!-- Features Section -->
<section class="relative bg-floral-white py-16">
<div class="max-w-7xl mx-auto px-5">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
<!-- High Quality -->
<div class="flex items-center space-x-4">
<div class="w-12 h-12">
<img
src="../assets/icons/trophy.png"
alt="Trophy"
class="w-full h-full object-contain"
/>
</div>
<div>
<h3
class="font-playfair font-semibold text-2xl text-black mb-1"
>
High Quality
</h3>
<p class="font-playfair font-normal text-lg text-gray-500">
crafted from top materials
</p>
</div>
</div>
<!-- Warranty Protection -->
<div class="flex items-center space-x-4">
<div class="w-12 h-12">
<img
src="../assets/icons/warranty.png"
alt="Guarantee"
class="w-full h-full object-contain"
/>
</div>
<div>
<h3
class="font-playfair font-semibold text-2xl text-black mb-1"
>
Warranty Protection
</h3>
<p class="font-playfair font-normal text-lg text-gray-500">
Over 2 years
</p>
</div>
</div>
<!-- Free Shipping -->
<div class="flex items-center space-x-4">
<div class="w-12 h-12">
<img
src="../assets/icons/shipping.png"
alt="Shipping"
class="w-full h-full object-contain"
/>
</div>
<div>
<h3
class="font-playfair font-semibold text-2xl text-black mb-1"
>
Free Shipping
</h3>
<p class="font-playfair font-normal text-lg text-gray-500">
Order over 150 $
</p>
</div>
</div>
<!-- 24/7 Support -->
<div class="flex items-center space-x-4">
<div class="w-12 h-12">
<img
src="../assets/icons/support.png"
alt="Support"
class="w-full h-full object-contain"
/>
</div>
<div>
<h3
class="font-playfair font-semibold text-2xl text-black mb-1"
>
24 / 7 Support
</h3>
<p class="font-playfair font-normal text-lg text-gray-500">
Dedicated support
</p>
</div>
</div>
</div>
</div>
</section>
</main>
<script src="../scripts/main.js?v=3.0"></script>
<script src="../scripts/products.js?v=3.0"></script>
<script>
// Listen for temporary data updates from admin dashboard
window.addEventListener('message', function(event) {
if (event.data.type === 'UPDATE_PREVIEW_DATA') {
// Update the products data with temporary changes
if (window.productManager && event.data.data.products) {
// Store temporary data for preview
window.productManager.tempProducts = event.data.data.products;
// Re-render with temporary data
window.productManager.renderProducts(window.productManager.tempProducts);
console.log('Preview updated with temporary data:', event.data.data.products.length, 'products');
}
}
});
</script>
</body>
</html>