|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>NovaStyle | Trendy Fashion for Every Body</title> |
|
<script src="https://cdn.tailwindcss.com"></script> |
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
<style> |
|
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800;900&display=swap'); |
|
|
|
body { |
|
font-family: 'Montserrat', sans-serif; |
|
overflow-x: hidden; |
|
} |
|
|
|
.dropdown:hover .dropdown-menu { |
|
display: block; |
|
} |
|
|
|
.product-card:hover .quick-view { |
|
opacity: 1; |
|
} |
|
|
|
.hero-slide { |
|
animation: fade 8s infinite; |
|
} |
|
|
|
@keyframes fade { |
|
0%, 100% { opacity: 0 } |
|
20%, 80% { opacity: 1 } |
|
} |
|
|
|
.slide-1 { animation-delay: 0s; } |
|
.slide-2 { animation-delay: 4s; } |
|
|
|
.color-swatch { |
|
width: 25px; |
|
height: 25px; |
|
border-radius: 50%; |
|
display: inline-block; |
|
margin-right: 5px; |
|
border: 1px solid #e5e7eb; |
|
cursor: pointer; |
|
} |
|
|
|
.color-swatch.active { |
|
border: 2px solid #000; |
|
transform: scale(1.1); |
|
} |
|
|
|
.size-option { |
|
display: inline-block; |
|
padding: 8px 12px; |
|
margin: 0 5px 5px 0; |
|
border: 1px solid #d1d5db; |
|
cursor: pointer; |
|
} |
|
|
|
.size-option.active { |
|
background-color: #000; |
|
color: white; |
|
border-color: #000; |
|
} |
|
|
|
.size-option.disabled { |
|
color: #d1d5db; |
|
cursor: not-allowed; |
|
} |
|
|
|
|
|
.admin-nav { |
|
background-color: #1f2937; |
|
} |
|
|
|
.admin-nav a:hover { |
|
background-color: #374151; |
|
} |
|
|
|
.admin-main { |
|
min-height: calc(100vh - 64px); |
|
} |
|
|
|
.product-table th { |
|
background-color: #f3f4f6; |
|
} |
|
|
|
.product-table tr:nth-child(even) { |
|
background-color: #f9fafb; |
|
} |
|
</style> |
|
</head> |
|
<body class="bg-white text-gray-900"> |
|
|
|
<div id="admin-login-modal" class="fixed inset-0 z-50 hidden overflow-y-auto"> |
|
<div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> |
|
<div class="fixed inset-0 transition-opacity" aria-hidden="true"> |
|
<div class="absolute inset-0 bg-gray-500 opacity-75"></div> |
|
</div> |
|
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span> |
|
<div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-md sm:w-full"> |
|
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> |
|
<div class="sm:flex sm:items-start"> |
|
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left w-full"> |
|
<div class="flex justify-between items-start"> |
|
<h3 class="text-lg leading-6 font-medium text-gray-900 mb-4">Admin Login</h3> |
|
<button onclick="hideAdminLoginModal()" class="text-gray-500 hover:text-gray-700"> |
|
<i class="fas fa-times"></i> |
|
</button> |
|
</div> |
|
<form id="admin-login-form"> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="admin-username"> |
|
Username |
|
</label> |
|
<input type="text" id="admin-username" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required> |
|
</div> |
|
<div class="mb-6"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="admin-password"> |
|
Password |
|
</label> |
|
<input type="password" id="admin-password" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required> |
|
</div> |
|
<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> |
|
<button type="submit" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-pink-600 text-base font-medium text-white hover:bg-pink-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-pink-500 sm:ml-3 sm:w-auto sm:text-sm"> |
|
Login |
|
</button> |
|
<button type="button" onclick="hideAdminLoginModal()" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"> |
|
Cancel |
|
</button> |
|
</div> |
|
</form> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="admin-page" class="hidden"> |
|
|
|
<nav class="admin-nav text-white shadow-md"> |
|
<div class="container mx-auto px-4"> |
|
<div class="flex items-center justify-between h-16"> |
|
<div class="flex items-center"> |
|
<a href="#" class="text-xl font-bold">NovaStyle Admin</a> |
|
</div> |
|
<div class="flex items-center space-x-4"> |
|
<a href="#" class="hover:bg-gray-700 px-3 py-2 rounded" onclick="showAdminPage(false)">View Store</a> |
|
<button class="bg-pink-600 hover:bg-pink-700 px-4 py-2 rounded" onclick="logout()"> |
|
Logout <i class="fas fa-sign-out-alt ml-1"></i> |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
</nav> |
|
|
|
|
|
<div class="flex admin-main"> |
|
|
|
<div class="w-64 bg-gray-800 text-white shadow-lg"> |
|
<div class="p-4"> |
|
<h3 class="text-lg font-semibold">Admin Dashboard</h3> |
|
</div> |
|
<nav class="mt-4"> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-700 bg-gray-700" onclick="showSection('products')"> |
|
<i class="fas fa-tshirt mr-2"></i> Products |
|
</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-700" onclick="showSection('orders')"> |
|
<i class="fas fa-shopping-bag mr-2"></i> Orders |
|
</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-700" onclick="showSection('customers')"> |
|
<i class="fas fa-users mr-2"></i> Customers |
|
</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-700" onclick="showSection('analytics')"> |
|
<i class="fas fa-chart-line mr-2"></i> Analytics |
|
</a> |
|
</nav> |
|
</div> |
|
|
|
|
|
<div class="flex-1 p-8 bg-gray-50"> |
|
|
|
<div id="products-section"> |
|
<div class="flex justify-between items-center mb-6"> |
|
<h2 class="text-2xl font-bold">Product Management</h2> |
|
<button class="bg-pink-600 hover:bg-pink-700 text-white px-4 py-2 rounded" onclick="showAddProductModal()"> |
|
<i class="fas fa-plus mr-2"></i> Add Product |
|
</button> |
|
</div> |
|
|
|
<div class="bg-white rounded-lg shadow overflow-hidden"> |
|
<table class="min-w-full product-table"> |
|
<thead> |
|
<tr> |
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Image</th> |
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Name</th> |
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Price</th> |
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Stock</th> |
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th> |
|
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th> |
|
</tr> |
|
</thead> |
|
<tbody class="divide-y divide-gray-200" id="product-list"> |
|
|
|
</tbody> |
|
</table> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="orders-section" class="hidden"> |
|
<h2 class="text-2xl font-bold mb-6">Order Management</h2> |
|
<p class="text-gray-600">Order management functionality would go here.</p> |
|
</div> |
|
|
|
|
|
<div id="customers-section" class="hidden"> |
|
<h2 class="text-2xl font-bold mb-6">Customer Management</h2> |
|
<p class="text-gray-600">Customer management functionality would go here.</p> |
|
</div> |
|
|
|
|
|
<div id="analytics-section" class="hidden"> |
|
<h2 class="text-2xl font-bold mb-6">Analytics Dashboard</h2> |
|
<p class="text-gray-600">Analytics and reporting would go here.</p> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="add-product-modal" class="fixed inset-0 z-50 hidden overflow-y-auto"> |
|
<div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> |
|
<div class="fixed inset-0 transition-opacity" aria-hidden="true"> |
|
<div class="absolute inset-0 bg-gray-500 opacity-75"></div> |
|
</div> |
|
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span> |
|
<div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full"> |
|
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> |
|
<div class="sm:flex sm:items-start"> |
|
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left w-full"> |
|
<div class="flex justify-between items-start"> |
|
<h3 class="text-lg leading-6 font-medium text-gray-900 mb-4">Add New Product</h3> |
|
<button onclick="hideAddProductModal()" class="text-gray-500 hover:text-gray-700"> |
|
<i class="fas fa-times"></i> |
|
</button> |
|
</div> |
|
<form id="add-product-form"> |
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> |
|
<div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-name"> |
|
Product Name |
|
</label> |
|
<input type="text" id="product-name" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required> |
|
</div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-price"> |
|
Price ($) |
|
</label> |
|
<input type="number" step="0.01" id="product-price" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required> |
|
</div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-stock"> |
|
Stock Quantity |
|
</label> |
|
<input type="number" id="product-stock" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required> |
|
</div> |
|
</div> |
|
<div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-category"> |
|
Category |
|
</label> |
|
<select id="product-category" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"> |
|
<option value="dresses">Dresses</option> |
|
<option value="tops">Tops</option> |
|
<option value="bottoms">Bottoms</option> |
|
<option value="sets">Matching Sets</option> |
|
<option value="swimwear">Swimwear</option> |
|
</select> |
|
</div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-status"> |
|
Status |
|
</label> |
|
<select id="product-status" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"> |
|
<option value="active">Active</option> |
|
<option value="draft">Draft</option> |
|
<option value="archived">Archived</option> |
|
</select> |
|
</div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-image"> |
|
Image URL |
|
</label> |
|
<input type="text" id="product-image" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" placeholder="https://example.com/image.jpg"> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="mb-4"> |
|
<label class="block text-gray-700 text-sm font-bold mb-2" for="product-description"> |
|
Description |
|
</label> |
|
<textarea id="product-description" rows="3" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"></textarea> |
|
</div> |
|
<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> |
|
<button type="submit" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-pink-600 text-base font-medium text-white hover:bg-pink-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-pink-500 sm:ml-3 sm:w-auto sm:text-sm"> |
|
Add Product |
|
</button> |
|
<button type="button" onclick="hideAddProductModal()" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"> |
|
Cancel |
|
</button> |
|
</div> |
|
</form> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="store-page"> |
|
|
|
<div class="bg-black text-white text-center py-2 px-4 text-sm"> |
|
✨ FREE SHIPPING ON ORDERS OVER $75 | 30-DAY RETURNS ✨ |
|
</div> |
|
|
|
|
|
<header class="sticky top-0 z-50 bg-white shadow-sm"> |
|
<div class="container mx-auto px-4"> |
|
<div class="flex items-center justify-between py-4"> |
|
|
|
<div class="md:hidden"> |
|
<button id="mobile-menu-button" class="text-gray-700"> |
|
<i class="fas fa-bars text-xl"></i> |
|
</button> |
|
</div> |
|
|
|
|
|
<div class="flex-shrink-0"> |
|
<a href="#" class="text-2xl font-bold tracking-tight">NOVA<span class="text-pink-600">STYLE</span></a> |
|
</div> |
|
|
|
|
|
<nav class="hidden md:flex space-x-8"> |
|
<div class="dropdown relative"> |
|
<button class="font-medium hover:text-pink-600 flex items-center"> |
|
NEW ARRIVALS <i class="fas fa-chevron-down ml-1 text-xs"></i> |
|
</button> |
|
<div class="dropdown-menu absolute hidden bg-white shadow-lg mt-2 w-48 rounded-md py-1 z-10"> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Just Dropped 🔥</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Bestsellers</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Back in Stock</a> |
|
</div> |
|
</div> |
|
<div class="dropdown relative"> |
|
<button class="font-medium hover:text-pink-600 flex items-center"> |
|
CLOTHING <i class="fas fa-chevron-down ml-1 text-xs"></i> |
|
</button> |
|
<div class="dropdown-menu absolute hidden bg-white shadow-lg mt-2 w-48 rounded-md py-1 z-10"> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Dresses</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Tops</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Bottoms</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Matching Sets</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Jumpsuits & Rompers</a> |
|
</div> |
|
</div> |
|
<div class="dropdown relative"> |
|
<button class="font-medium hover:text-pink-600 flex items-center"> |
|
CURVE + PLUS <i class="fas fa-chevron-down ml-1 text-xs"></i> |
|
</button> |
|
<div class="dropdown-menu absolute hidden bg-white shadow-lg mt-2 w-48 rounded-md py-1 z-10"> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Dresses</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Tops</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Bottoms</a> |
|
<a href="#" class="block px-4 py-2 hover:bg-gray-100">Swimwear</a> |
|
</div> |
|
</div> |
|
<a href="#" class="font-medium hover:text-pink-600">SALE</a> |
|
<a href="#" class="font-medium hover:text-pink-600 hidden md:block" onclick="showAdminLoginModal()">ADMIN</a> |
|
</nav> |
|
|
|
|
|
<div class="flex items-center space-x-4"> |
|
<div class="hidden md:block relative"> |
|
<input type="text" placeholder="Search..." class="border border-gray-300 rounded-full py-1 px-4 text-sm w-48 focus:outline-none focus:ring-1 focus:ring-pink-500"> |
|
<button class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500"> |
|
<i class="fas fa-search"></i> |
|
</button> |
|
</div> |
|
<a href="#" class="text-gray-700 hover:text-pink-600"><i class="far fa-user text-xl"></i></a> |
|
<a href="#" class="text-gray-700 hover:text-pink-600 relative"> |
|
<i class="far fa-heart text-xl"></i> |
|
<span class="absolute -top-2 -right-2 bg-pink-600 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center">3</span> |
|
</a> |
|
<a href="#" class="text-gray-700 hover:text-pink-600 relative"> |
|
<i class="fas fa-shopping-bag text-xl"></i> |
|
<span class="absolute -top-2 -right-2 bg-pink-600 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center">2</span> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="mobile-menu" class="hidden md:hidden bg-white border-t"> |
|
<div class="container mx-auto px-4 py-2"> |
|
<div class="mb-2"> |
|
<input type="text" placeholder="Search..." class="border border-gray-300 rounded-full py-2 px-4 text-sm w-full focus:outline-none focus:ring-1 focus:ring-pink-500"> |
|
</div> |
|
<a href="#" class="block py-2 border-b">NEW ARRIVALS</a> |
|
<a href="#" class="block py-2 border-b">CLOTHING</a> |
|
<a href="#" class="block py-2 border-b">CURVE + PLUS</a> |
|
<a href="#" class="block py-2 border-b">SALE</a> |
|
<a href="#" class="block py-2 border-b" onclick="showAdminLoginModal()">ADMIN</a> |
|
<a href="#" class="block py-2 border-b">ACCOUNT</a> |
|
<a href="#" class="block py-2">WISHLIST</a> |
|
</div> |
|
</div> |
|
</header> |
|
|
|
|
|
<section class="relative overflow-hidden h-[500px]"> |
|
<div class="hero-slide slide-1 absolute inset-0 w-full h-full"> |
|
<div class="bg-gradient-to-r from-black to-transparent absolute inset-0 z-10"></div> |
|
<img src="https://images.unsplash.com/photo-1551232864-3f0890e580d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Summer Collection" class="w-full h-full object-cover"> |
|
<div class="absolute bottom-1/4 left-10 z-20 text-white max-w-md"> |
|
<h2 class="text-4xl font-bold mb-4">SUMMER VIBES JUST DROPPED 🌴</h2> |
|
<p class="text-lg mb-6">Get snatched in our hottest new swim & vacay styles</p> |
|
<a href="#" class="bg-pink-600 hover:bg-pink-700 text-white font-bold py-3 px-8 rounded-full inline-block transition duration-300">SHOP NOW</a> |
|
</div> |
|
</div> |
|
<div class="hero-slide slide-2 absolute inset-0 w-full h-full opacity-0"> |
|
<div class="bg-gradient-to-r from-black to-transparent absolute inset-0 z-10"></div> |
|
<img src="https://images.unsplash.com/photo-1556905055-8f358a7a4b2c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Night Out Collection" class="w-full h-full object-cover"> |
|
<div class="absolute bottom-1/4 left-10 z-20 text-white max-w-md"> |
|
<h2 class="text-4xl font-bold mb-4">NIGHT OUT ESSENTIALS ✨</h2> |
|
<p class="text-lg mb-6">Turn heads in our curve-hugging going out fits</p> |
|
<a href="#" class="bg-pink-600 hover:bg-pink-700 text-white font-bold py-3 px-8 rounded-full inline-block transition duration-300">SHOP NOW</a> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section class="py-12 bg-gray-50"> |
|
<div class="container mx-auto px-4"> |
|
<h2 class="text-3xl font-bold text-center mb-10">SHOP BY CATEGORY</h2> |
|
<div class="grid grid-cols-2 md:grid-cols-4 gap-4"> |
|
<a href="#" class="category-card relative overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1585487000160-6a376398702a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Dresses" class="w-full h-64 md:h-80 object-cover transition duration-300 group-hover:scale-105"> |
|
<div class="absolute inset-0 bg-black bg-opacity-30 flex items-center justify-center"> |
|
<h3 class="text-white text-2xl font-bold">DRESSES</h3> |
|
</div> |
|
</a> |
|
<a href="#" class="category-card relative overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1591047139829-d91aecb1c4f5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1976&q=80" alt="Tops" class="w-full h-64 md:h-80 object-cover transition duration-300 group-hover:scale-105"> |
|
<div class="absolute inset-0 bg-black bg-opacity-30 flex items-center justify-center"> |
|
<h3 class="text-white text-2xl font-bold">TOPS</h3> |
|
</div> |
|
</a> |
|
<a href="#" class="category-card relative overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1595950653106-6c9ebd64022e?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Bottoms" class="w-full h-64 md:h-80 object-cover transition duration-300 group-hover:scale-105"> |
|
<div class="absolute inset-0 bg-black bg-opacity-30 flex items-center justify-center"> |
|
<h3 class="text-white text-2xl font-bold">BOTTOMS</h3> |
|
</div> |
|
</a> |
|
<a href="#" class="category-card relative overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1617137968427-8599c93a6d62?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1964&q=80" alt="Matching Sets" class="w-full h-64 md:h-80 object-cover transition duration-300 group-hover:scale-105"> |
|
<div class="absolute inset-0 bg-black bg-opacity-30 flex items-center justify-center"> |
|
<h3 class="text-white text-2xl font-bold">MATCHING SETS</h3> |
|
</div> |
|
</a> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section class="py-12"> |
|
<div class="container mx-auto px-4"> |
|
<div class="flex justify-between items-center mb-8"> |
|
<h2 class="text-3xl font-bold">NEW ARRIVALS 🔥</h2> |
|
<a href="#" class="text-pink-600 font-medium hover:underline">VIEW ALL</a> |
|
</div> |
|
|
|
<div class="grid grid-cols-2 md:grid-cols-4 gap-6"> |
|
|
|
<div class="product-card relative"> |
|
<div class="relative overflow-hidden rounded-lg mb-3"> |
|
<img src="https://images.unsplash.com/photo-1539109136881-3be0616acf4b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Bodycon Dress" class="w-full h-80 object-cover"> |
|
<div class="quick-view absolute bottom-4 left-0 right-0 mx-auto opacity-0 transition-opacity duration-300"> |
|
<button class="bg-white text-black font-medium py-2 px-4 rounded-full w-3/4 mx-auto block hover:bg-black hover:text-white" onclick="showQuickViewModal()">QUICK VIEW</button> |
|
</div> |
|
<div class="absolute top-3 right-3"> |
|
<button class="bg-white rounded-full w-8 h-8 flex items-center justify-center hover:bg-pink-600 hover:text-white"> |
|
<i class="far fa-heart"></i> |
|
</button> |
|
</div> |
|
<div class="absolute top-3 left-3 bg-pink-600 text-white text-xs font-bold px-2 py-1 rounded">NEW</div> |
|
</div> |
|
<h3 class="font-medium">Caught Feelings Bodycon Dress</h3> |
|
<div class="flex justify-between items-center mt-1"> |
|
<span class="font-bold">$39.99</span> |
|
<div class="flex"> |
|
<div class="color-swatch bg-red-600 active"></div> |
|
<div class="color-swatch bg-black"></div> |
|
<div class="color-swatch bg-pink-400"></div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="product-card relative"> |
|
<div class="relative overflow-hidden rounded-lg mb-3"> |
|
<img src="https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1935&q=80" alt="Crop Top" class="w-full h-80 object-cover"> |
|
<div class="quick-view absolute bottom-4 left-0 right-0 mx-auto opacity-0 transition-opacity duration-300"> |
|
<button class="bg-white text-black font-medium py-2 px-4 rounded-full w-3/4 mx-auto block hover:bg-black hover:text-white" onclick="showQuickViewModal()">QUICK VIEW</button> |
|
</div> |
|
<div class="absolute top-3 right-3"> |
|
<button class="bg-white rounded-full w-8 h-8 flex items-center justify-center hover:bg-pink-600 hover:text-white"> |
|
<i class="far fa-heart"></i> |
|
</button> |
|
</div> |
|
</div> |
|
<h3 class="font-medium">Main Character Energy Crop Top</h3> |
|
<div class="flex justify-between items-center mt-1"> |
|
<div> |
|
<span class="font-bold text-pink-600">$24.99</span> |
|
<span class="text-gray-500 line-through text-sm ml-2">$34.99</span> |
|
</div> |
|
<div class="flex"> |
|
<div class="color-swatch bg-white active"></div> |
|
<div class="color-swatch bg-yellow-300"></div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="product-card relative"> |
|
<div class="relative overflow-hidden rounded-lg mb-3"> |
|
<img src="https://images.unsplash.com/photo-1551232864-3f0890e580d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Swimsuit" class="w-full h-80 object-cover"> |
|
<div class="quick-view absolute bottom-4 left-0 right-0 mx-auto opacity-0 transition-opacity duration-300"> |
|
<button class="bg-white text-black font-medium py-2 px-4 rounded-full w-3/4 mx-auto block hover:bg-black hover:text-white" onclick="showQuickViewModal()">QUICK VIEW</button> |
|
</div> |
|
<div class="absolute top-3 right-3"> |
|
<button class="bg-white rounded-full w-8 h-8 flex items-center justify-center hover:bg-pink-600 hover:text-white"> |
|
<i class="far fa-heart"></i> |
|
</button> |
|
</div> |
|
<div class="absolute top-3 left-3 bg-pink-600 text-white text-xs font-bold px-2 py-1 rounded">NEW</div> |
|
</div> |
|
<h3 class="font-medium">Beach Babe One-Piece Swimsuit</h3> |
|
<div class="flex justify-between items-center mt-1"> |
|
<span class="font-bold">$49.99</span> |
|
<div class="flex"> |
|
<div class="color-swatch bg-blue-500 active"></div> |
|
<div class="color-swatch bg-black"></div> |
|
<div class="color-swatch bg-red-600"></div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="product-card relative"> |
|
<div class="relative overflow-hidden rounded-lg mb-3"> |
|
<img src="https://images.unsplash.com/photo-1556905055-8f358a7a4b2c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Jumpsuit" class="w-full h-80 object-cover"> |
|
<div class="quick-view absolute bottom-4 left-0 right-0 mx-auto opacity-0 transition-opacity duration-300"> |
|
<button class="bg-white text-black font-medium py-2 px-4 rounded-full w-3/4 mx-auto block hover:bg-black hover:text-white" onclick="showQuickViewModal()">QUICK VIEW</button> |
|
</div> |
|
<div class="absolute top-3 right-3"> |
|
<button class="bg-white rounded-full w-8 h-8 flex items-center justify-center hover:bg-pink-600 hover:text-white"> |
|
<i class="far fa-heart"></i> |
|
</button> |
|
</div> |
|
<div class="absolute top-3 left-3 bg-black text-white text-xs font-bold px-2 py-1 rounded">BESTSELLER</div> |
|
</div> |
|
<h3 class="font-medium">Night Out Jumpsuit</h3> |
|
<div class="flex justify-between items-center mt-1"> |
|
<span class="font-bold">$59.99</span> |
|
<div class="flex"> |
|
<div class="color-swatch bg-black active"></div> |
|
<div class="color-swatch bg-emerald-600"></div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section class="py-16 bg-pink-600 text-white"> |
|
<div class="container mx-auto px-4 text-center"> |
|
<h2 class="text-4xl font-bold mb-4">SUMMER SALE IS ON! 🎉</h2> |
|
<p class="text-xl mb-8">Up to 60% off select styles. Limited time only!</p> |
|
<a href="#" class="bg-white text-pink-600 hover:bg-black hover:text-white font-bold py-3 px-8 rounded-full inline-block transition duration-300">SHOP THE SALE</a> |
|
</div> |
|
</section> |
|
|
|
|
|
<section class="py-12"> |
|
<div class="container mx-auto px-4"> |
|
<h2 class="text-3xl font-bold text-center mb-10">SHOP THE LOOK ✨</h2> |
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-8"> |
|
<div class="relative overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1556905055-8f358a7a4b2c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Night Out Look" class="w-full h-full object-cover transition duration-300 group-hover:scale-105"> |
|
<div class="absolute inset-0 bg-black bg-opacity-20 flex flex-col justify-end p-6"> |
|
<h3 class="text-white text-2xl font-bold mb-4">NIGHT OUT VIBES</h3> |
|
<div class="flex space-x-3"> |
|
<div class="bg-white rounded-full px-4 py-1 text-sm">Dress</div> |
|
<div class="bg-white rounded-full px-4 py-1 text-sm">Heels</div> |
|
<div class="bg-white rounded-full px-4 py-1 text-sm">Bag</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="relative overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1591047139829-d91aecb1c4f5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1976&q=80" alt="Casual Look" class="w-full h-full object-cover transition duration-300 group-hover:scale-105"> |
|
<div class="absolute inset-0 bg-black bg-opacity-20 flex flexocol justify-end p-6"> |
|
<h3 class="text-white text-2xl font-bold mb-4">CASUAL CHIC</h3> |
|
<div class="flex space-x-3"> |
|
<div class="bg-white rounded-full px-4 py-1 text-sm">Top</div> |
|
<div class="bg-white rounded-full px-4 py-1 text-sm">Jeans</div> |
|
<div class="bg-white rounded-full px-4 py-1 text-sm">Sneakers</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section class="py-12 bg-gray-50"> |
|
<div class="container mx-auto px-4"> |
|
<div class="flex flex-col items-center mb-10"> |
|
<h2 class="text-3xl font-bold mb-2">#NOVASTYLE</h2> |
|
<p class="text-gray-600">Tag us for a chance to be featured</p> |
|
</div> |
|
<div class="grid grid-cols-2 md:grid-cols-4 gap-2"> |
|
<a href="#" class="instagram-post overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1529139574466-a303027c1d8b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Instagram Post" class="w-full h-64 object-cover transition duration-300 group-hover:scale-110"> |
|
</a> |
|
<a href="#" class="instagram-post overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1492707892479-7bc8d5a4ee93?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1965&q=80" alt="Instagram Post" class="w-full h-64 object-cover transition duration-300 group-hover:scale-110"> |
|
</a> |
|
<a href="#" class="instagram-post overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1542295669297-4d352b042bca?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Instagram Post" class="w-full h-64 object-cover transition duration-300 group-hover:scale-110"> |
|
</a> |
|
<a href="#" class="instagram-post overflow-hidden rounded-lg group"> |
|
<img src="https://images.unsplash.com/photo-1551232864-3f0890e580d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Instagram Post" class="w-full h-64 object-cover transition duration-300 group-hover:scale-110"> |
|
</a> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<div id="quick-view-modal" class="fixed inset-0 z-50 hidden overflow-y-auto"> |
|
<div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> |
|
<div class="fixed inset-0 transition-opacity" aria-hidden="true"> |
|
<div class="absolute inset-0 bg-gray-500 opacity-75"></div> |
|
</div> |
|
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span> |
|
<div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-4xl sm:w-full"> |
|
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> |
|
<div class="sm:flex sm:items-start"> |
|
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left w-full"> |
|
<div class="flex justify-between items-start"> |
|
<h3 class="text-lg leading-6 font-medium text-gray-900 mb-4">Caught Feelings Bodycon Dress</h3> |
|
<button onclick="hideQuickViewModal()" class="text-gray-500 hover:text-gray-700"> |
|
<i class="fas fa-times"></i> |
|
</button> |
|
</div> |
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-8"> |
|
<div> |
|
<div class="relative overflow-hidden rounded-lg mb-4"> |
|
<img src="https://images.unsplash.com/photo-1539109136881-3be0616acf4b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Bodycon Dress" class="w-full h-auto"> |
|
</div> |
|
<div class="grid grid-cols-4 gap-2"> |
|
<div class="border rounded cursor-pointer"> |
|
<img src="https://images.unsplash.com/photo-1539109136881-3be0616acf4b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Thumbnail" class="w-full h-20 object-cover"> |
|
</div> |
|
<div class="border rounded cursor-pointer"> |
|
<img src="https://images.unsplash.com/photo-1551232864-3f0890e580d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80" alt="Thumbnail" class="w-full h-20 object-cover"> |
|
</div> |
|
<div class="border rounded cursor-pointer"> |
|
<img src="https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1935&q=80" alt="Thumbnail" class="w-full h-20 object-cover"> |
|
</div> |
|
<极速赛车开奖直播官网>极速赛车开奖直播官网> |
|
<img src="https://images.unsplash.com/photo-1591047139829-d91aecb1c4f5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto:format&fit=crop&w=1976&q=80" alt="Thumbnail" class="w-full h-20 object-cover"> |
|
</div> |
|
</div> |
|
</div> |
|
<div> |
|
<div class="flex justify-between items-center mb-4"> |
|
<span class="text-2xl font-bold">$39.99</span> |
|
<div class="极速赛车开奖直播官网 items-center"> |
|
<div class="flex mr-4"> |
|
<i class="fas fa-star text-yellow-400"></i> |
|
<i class="fas fa-star text-yellow-400"></i> |
|
<i class="fas fa-star text-yellow-400"></i> |
|
<i class="fas fa-star text-yellow-400"></i> |
|
<i class="fas fa-star-half-alt text-yellow-400"></i> |
|
</div> |
|
<a href="#reviews" class="text-sm text-gray-600 hover:underline">142 reviews</a> |
|
</div> |
|
</div> |
|
|
|
<div class="mb-6"> |
|
<h4 class="font-medium mb-2">COLOR: <span class="font-normal">Red</span></h4> |
|
<div class="flex"> |
|
<div class="color-swatch bg-red-600 active"></div> |
|
<div class="color-swatch bg-black"></div> |
|
<div class="color-swatch bg-pink-400"></div> |
|
</div> |
|
</div> |
|
|
|
<div class="mb-6"> |
|
<h4 class="font-medium mb-2">SIZE:</h4> |
|
<div> |
|
<span class="size-option">XS</span> |
|
<span class="size-option active">S</span> |
|
<span class="size-option">M</span> |
|
<span class="size-option">L</span> |
|
<span class="size-option">XL</span> |
|
<span class="size-option disabled">XXL</span> |
|
</div> |
|
<a href="#" class="text-sm text-gray-600 hover:underline mt-1 inline-block">Size Guide</a> |
|
</div> |
|
|
|
<div class="mb-6"> |
|
<button class="bg-black text-white font-bold py-3 px-6 rounded-full w-full hover:bg-pink-600 transition duration-300 mb-3">ADD TO CART</button> |
|
<button class="border border-black text-black font-bold py-3 px-6 rounded-full w-full hover:bg-gray-100 transition duration-300">ADD TO WISHLIST</button> |
|
</div> |
|
|
|
<div class="border-t pt-4"> |
|
<h4 class="font-medium mb-2">THE DEETS:</h4> |
|
<ul class="list-disc pl-5 text-sm"> |
|
<li>Figure-hugging bodycon silhouette</li> |
|
<li>Spaghetti straps with square neckline</li> |
|
<li>Mid-thigh length</li> |
|
<li>95% Polyester, 5% Spandex</li> |
|
<li>Machine wash cold, hang to dry</极速赛车开奖直播官网> |
|
</ul> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<footer class="bg-gray-900 text-white pt-12 pb-6"> |
|
<div class="container mx-auto px-4"> |
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8"> |
|
<div> |
|
<h3 class="text-xl font-bold mb-4">CUSTOMER SERVICE</h3> |
|
<ul class="space-y-2"> |
|
<li><a href="#" class="hover:text-pink-400">Contact Us</a></li> |
|
<li><a href="#" class="hover:text-pink-400">FAQs</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Shipping Info</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Returns & Exchanges</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Track Order</a></li> |
|
</ul> |
|
</div> |
|
<div> |
|
<h3 class="text-xl font-bold mb-4">ABOUT US</h3> |
|
<ul class="space-y-2"> |
|
<li><a href="#" class="hover:text-pink-400">Our Story</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Careers</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Blog</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Influencers</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Sustainability</a></li> |
|
</ul> |
|
</div> |
|
<div> |
|
<h3 class="text-xl font-bold mb-4">SHOP</h3> |
|
<ul class="space-y-2"> |
|
<li><a href="#" class="hover:text-pink-400">New Arrivals</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Bestsellers</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Sale</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Curve + Plus</a></li> |
|
<li><a href="#" class="hover:text-pink-400">Gift Cards</a></li> |
|
</ul> |
|
</div> |
|
<div> |
|
<h3 class="text-xl font-bold mb-4">JOIN OUR NOVA FAM</h3> |
|
<p class="mb-4">Get exclusive offers, styling tips, and first access to new drops!</p> |
|
<div class="flex mb-4"> |
|
<input type="email" placeholder="Your email" class="bg-gray-800 text-white px-4 py-2 rounded-l focus:outline-none w-full"> |
|
<button class="bg-pink-600 hover:bg-pink-700 px-4 py-2 rounded-r">SIGN UP</button> |
|
</div> |
|
<div class="flex space-x-4"> |
|
<a href="#" class="hover:text-pink-400"><i class="fab fa-instagram text-xl"></i></a> |
|
<a href="#" class="hover:text-pink-400"><i class="fab fa-tiktok text-xl"></i></a> |
|
<a href="#" class="hover:text-pink-400"><i class="fab fa-facebook text-xl"></i></a> |
|
<a href="#" class="hover:text-pink-400"><i class="fab fa-twitter text-xl"></i></a> |
|
<a href="#" class="hover:text-pink-400"><i class="fab fa-pinterest text-xl"></i></a> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="border-t border-gray-800 pt-6"> |
|
<div class="flex flex-col md:flex-row justify-between items-center"> |
|
<div class="mb-4 md:mb-0"> |
|
<p>© 2023 NovaStyle. All rights reserved.</p> |
|
</div> |
|
<div class="flex space-x-6"> |
|
<a href="#" class="hover:text-pink-400">Privacy Policy</a> |
|
<a href="#" class="hover:text-pink-400">Terms of Service</a> |
|
<a href="#" class="hover:text-pink-400">Accessibility</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</footer> |
|
</div> |
|
|
|
<script> |
|
|
|
const products = [ |
|
{ |
|
id: 1, |
|
name: "Caught Feelings Bodycon Dress", |
|
price: 39.99, |
|
stock: 42, |
|
status: "active", |
|
category: "dresses", |
|
image: "https://images.unsplash.com/photo-1539109136881-3be0616acf4b?ixlib=rb-4.0.3&ixid=M3wxMjA3极速赛车开奖直播官网fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80", |
|
description: "Figure-hugging bodycon silhouette with spaghetti straps and square neckline." |
|
}, |
|
{ |
|
id: 2, |
|
name: "Main Character Energy Crop Top", |
|
price: 24.99, |
|
stock: 18, |
|
status: "active", |
|
category: "tops", |
|
image: "https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1935&q=80", |
|
description: "Trendy crop top perfect for making you feel like the main character." |
|
}, |
|
{ |
|
id: 3, |
|
name: "Beach Babe One-Piece Swimsuit", |
|
price: 49.99, |
|
stock: 7, |
|
status: "active", |
|
category: "swimwear", |
|
image: "https://images.unsplash.com/photo-1551232864-3f0890e580d9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1887&q=80", |
|
description: "Flattering one-piece swimsuit with cheeky cut and adjustable straps." |
|
}, |
|
{ |
|
id: 4, |
|
name: "Night Out Jumpsuit", |
|
price: 59.99, |
|
stock: 0, |
|
status: "draft", |
|
category: "sets", |
|
image: "https://images.unsplash.com/photo-1556905055-8f358a7a4b2c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80", |
|
description: "Sleek black jumpsuit perfect for a night out with friends." |
|
} |
|
]; |
|
|
|
|
|
const ADMIN_CREDENTIALS = { |
|
username: "admin", |
|
password: "admin123" |
|
}; |
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
renderProductList(); |
|
|
|
|
|
document.getElementById('mobile-menu-button').addEventListener('click', function() { |
|
const menu = document.getElementById('mobile-menu'); |
|
menu.classList.toggle('hidden'); |
|
}); |
|
|
|
|
|
const quickViewButtons = document.querySelectorAll('.quick-view button'); |
|
const quickViewModal = document.getElementById('quick-view-modal'); |
|
|
|
quickViewButtons.forEach(button => { |
|
button.addEventListener('click', function() { |
|
showQuickViewModal(); |
|
}); |
|
}); |
|
|
|
|
|
const colorSwatches = document.querySelectorAll('.color-swatch'); |
|
colorSwatches.forEach(swatch => { |
|
swatch.addEventListener('click', function() { |
|
|
|
const parent = this.parentElement; |
|
parent.querySelectorAll('.color-swatch').forEach(s => { |
|
s.classList.remove('active'); |
|
}); |
|
|
|
this.classList.add('active'); |
|
}); |
|
}); |
|
|
|
|
|
const sizeOptions = document.querySelectorAll('.size-option:not(.disabled)'); |
|
sizeOptions.forEach(option => { |
|
option.addEventListener('click', function() { |
|
|
|
const parent = this.parentElement; |
|
parent.querySelectorAll('.size-option').forEach(o => { |
|
o.classList.remove('active'); |
|
}); |
|
|
|
this.classList.add('active'); |
|
}); |
|
}); |
|
|
|
|
|
document.getElementById('add-product-form').addEventListener('submit', function(e) { |
|
e.preventDefault(); |
|
addNewProduct(); |
|
}); |
|
|
|
|
|
document.getElementById('admin-login-form').addEventListener('submit', function(e) { |
|
e.preventDefault(); |
|
const username = document.getElementById('admin-username').value; |
|
const password = document.getElementById('admin-password').value; |
|
|
|
if (username === ADMIN_CREDENTIALS.username && password === ADMIN_CREDENTIALS.password) { |
|
hideAdminLoginModal(); |
|
showAdminPage(true); |
|
} else { |
|
alert('Invalid credentials. Please try again.'); |
|
} |
|
}); |
|
}); |
|
|
|
|
|
function showAdminLoginModal() { |
|
document.getElementById('admin-login-modal').classList.remove('hidden'); |
|
document.body.style.overflow = 'hidden'; |
|
} |
|
|
|
|
|
function hideAdminLoginModal() { |
|
document.getElementById('admin-login-modal').classList.add('hidden'); |
|
document.body.style.overflow = 'auto'; |
|
} |
|
|
|
|
|
function showQuickViewModal() { |
|
document.getElementById('quick-view-modal').classList.remove('hidden'); |
|
document.body.style.overflow = 'hidden'; |
|
} |
|
|
|
|
|
function hideQuickViewModal() { |
|
document.getElementById('quick-view-modal').classList.add('hidden'); |
|
document.body.style.overflow = 'auto'; |
|
} |
|
|
|
|
|
function renderProductList() { |
|
const productList = document.getElementById('product-list'); |
|
productList.innerHTML = ''; |
|
|
|
products.forEach(product => { |
|
const statusClass = product.status === 'active' ? 'bg-green-100 text-green-800' : |
|
product.status === 'draft' ? 'bg-yellow-100 text-yellow-800' : |
|
'bg-gray-100 text-gray-800'; |
|
|
|
const row = document.createElement('tr'); |
|
row.innerHTML = ` |
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
<div class="flex-shrink-0 h-10 w-10"> |
|
<img class="h-10 w-10 rounded-full" src="${product.image}" alt="${product.name}"> |
|
</div> |
|
</td> |
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
<div class="text-sm font-medium text-gray-900">${product.name}</div> |
|
<div class="text-sm text-gray-500">${product.category}</div> |
|
</td> |
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
<div class="text-sm text-gray-900">$${product.price.toFixed(2)}</div> |
|
</td> |
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
<div class="text-sm text-gray-900">${product.stock}</div> |
|
</td> |
|
<td class="px极速赛车开奖直播官网-6 py-4 whitespace-nowrap"> |
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full ${statusClass}"> |
|
${product.status.charAt(0).toUpperCase() + product.status.slice(1)} |
|
</span> |
|
</td> |
|
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium"> |
|
<button onclick="editProduct(${product.id})" class="text-indigo-600 hover:text-indigo-900 mr-3">Edit</button> |
|
<button onclick="deleteProduct(${product.id})" class="text-red-600 hover:text-red-900">Delete</button> |
|
</td> |
|
`; |
|
productList.appendChild(row); |
|
}); |
|
} |
|
|
|
|
|
function addNewProduct() { |
|
const name = document.getElementById('product-name').value; |
|
const price = parseFloat(document.getElementById('product-price').value); |
|
const stock = parseInt(document.getElementById('product-stock').value); |
|
const category = document.getElementById('product-category').value; |
|
const status = document.getElementById('product-status').value; |
|
const image = document.getElementById('product-image').value || 'https://via.placeholder.com/150'; |
|
const description = document.getElementById('product-description').value; |
|
|
|
const newProduct = { |
|
id: products.length > 0 ? Math.max(...products.map(p => p.id)) + 1 : 1, |
|
name, |
|
price, |
|
stock, |
|
status, |
|
category, |
|
image, |
|
description |
|
}; |
|
|
|
products.push(newProduct); |
|
renderProductList(); |
|
hideAddProductModal(); |
|
resetAddProductForm(); |
|
} |
|
|
|
|
|
function editProduct(id) { |
|
const product = products.find(p => p.id === id); |
|
if (product) { |
|
|
|
alert(`Editing product: ${product.name}`); |
|
} |
|
} |
|
|
|
|
|
function deleteProduct(id) { |
|
if (confirm('Are you sure you want to delete this product?')) { |
|
const index = products.findIndex(p => p.id === id); |
|
if (index !== -1) { |
|
products.splice(index, 1); |
|
renderProductList(); |
|
} |
|
} |
|
} |
|
|
|
|
|
function showAddProductModal() { |
|
document.getElementById('add-product-modal').classList.remove('hidden'); |
|
document.body.style.overflow = 'hidden'; |
|
} |
|
|
|
|
|
function hideAddProductModal() { |
|
document.getElementById('add-product-modal').classList.add('hidden'); |
|
document.body.style.overflow = 'auto'; |
|
} |
|
|
|
|
|
function resetAddProductForm() { |
|
document.getElementById('add-product-form').reset(); |
|
} |
|
|
|
|
|
function showAdminPage(show) { |
|
if (show) { |
|
document.getElementById('admin-page').classList.remove('hidden'); |
|
document.getElementById('store-page').classList.add('hidden'); |
|
} else { |
|
document.getElementById('admin-page').classList.add('hidden'); |
|
document.getElementById('store-page').classList.remove('hidden'); |
|
} |
|
} |
|
|
|
|
|
function showSection(section) { |
|
document.getElementById('products-section').classList.add('hidden'); |
|
document.getElementById('orders-section').classList.add('hidden'); |
|
document.getElementById('customers-section').classList.add('hidden'); |
|
document.getElementById('analytics-section').classList.add('hidden'); |
|
|
|
document.getElementById(`${section}-section`).classList.remove('hidden'); |
|
|
|
|
|
document.querySelectorAll('#admin-page nav a').forEach(link => { |
|
link.classList.remove('bg-gray-700'); |
|
}); |
|
event.target.classList.add('bg-gray-700'); |
|
} |
|
|
|
|
|
function logout() { |
|
showAdminPage(false); |
|
} |
|
</script> |
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=fifine07/store" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
</html> |