Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>ShopLite Essentials</title> | |
| <link rel="stylesheet" href="style.css"> | |
| <!-- Tailwind CSS --> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <!-- Feather Icons --> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <!-- Tailwind Config for Custom Colors --> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: '#2563EB', // Blue 600 | |
| secondary: '#4F46E5', // Indigo 600 | |
| dark: '#1F2937', | |
| light: '#F3F4F6' | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| </head> | |
| <body class="bg-light text-dark font-sans antialiased flex flex-col min-h-screen"> | |
| <!-- Navbar Web Component --> | |
| <shop-navbar></shop-navbar> | |
| <!-- Main Content --> | |
| <main class="flex-grow container mx-auto px-4 py-8"> | |
| <!-- Hero Section --> | |
| <div class="text-center mb-12"> | |
| <h1 class="text-4xl md:text-5xl font-extrabold text-dark mb-4 tracking-tight"> | |
| Premium Gear for <span class="text-primary">Creators</span> | |
| </h1> | |
| <p class="text-gray-600 max-w-2xl mx-auto text-lg"> | |
| Discover our curated collection of high-quality tools designed to boost your productivity. | |
| Real data loading, interactive buttons, and seamless UX. | |
| </p> | |
| </div> | |
| <!-- Filters --> | |
| <div class="flex justify-center mb-8 space-x-4"> | |
| <button id="filter-all" class="px-6 py-2 rounded-full bg-primary text-white font-semibold shadow-lg hover:bg-blue-700 transition transform hover:-translate-y-0.5 active:translate-y-0">All</button> | |
| <button id="filter-tech" class="px-6 py-2 rounded-full bg-white text-gray-600 font-semibold shadow hover:bg-gray-50 transition transform hover:-translate-y-0.5 active:translate-y-0">Tech</button> | |
| <button id="filter-design" class="px-6 py-2 rounded-full bg-white text-gray-600 font-semibold shadow hover:bg-gray-50 transition transform hover:-translate-y-0.5 active:translate-y-0">Design</button> | |
| </div> | |
| <!-- Loader Component --> | |
| <shop-loader id="loader" class="flex justify-center py-12"></shop-loader> | |
| <!-- Product Grid --> | |
| <div id="product-grid" class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8"> | |
| <!-- Products will be injected here via JS --> | |
| </div> | |
| <!-- Toast Notification Container --> | |
| <div id="toast-container" class="fixed bottom-5 right-5 z-50 flex flex-col gap-2"></div> | |
| </main> | |
| <!-- Footer Web Component --> | |
| <shop-footer></shop-footer> | |
| <!-- Web Components Scripts --> | |
| <script src="components/navbar.js"></script> | |
| <script src="components/footer.js"></script> | |
| <script src="components/product-card.js"></script> | |
| <script src="components/loader.js"></script> | |
| <!-- Main Application Script --> | |
| <script src="script.js"></script> | |
| <!-- Feather Icons Initialization --> | |
| <script> | |
| feather.replace(); | |
| // Re-run feather replace periodically if dynamic content loads icons | |
| const observer = new MutationObserver(() => feather.replace()); | |
| observer.observe(document.body, { subtree: true, childList: true }); | |
| </script> | |
| <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script> | |
| </body> | |
| </html> |