-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwishlist.html
More file actions
230 lines (203 loc) · 11.1 KB
/
wishlist.html
File metadata and controls
230 lines (203 loc) · 11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Your Wishlist | THREE CROWN WEAR</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap" rel="stylesheet">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script src="https://unpkg.com/lucide@latest"></script>
<link rel="stylesheet" href="css/styles.css">
<meta name="description" content="Your saved favorites from THREE CROWN WEAR. Curate your personal collection of monochrome luxury.">
</head>
<body class="bg-pure-black text-pure-white selection:bg-pure-white selection:text-pure-black">
<!-- Navigation -->
<nav id="navbar" class="fixed top-0 left-0 right-0 z-50 transition-all duration-700 bg-pure-black/80 backdrop-blur-md border-b border-white/10 py-8 px-6 md:px-12">
<div class="max-w-[1800px] mx-auto flex items-center justify-between">
<a href="index.html" class="font-display text-xl tracking-[0.3em] font-medium hover:opacity-70 transition-opacity">
THREE CROWN WEAR
</a>
<div class="hidden lg:flex items-center gap-16">
<a href="shop.html" class="nav-link">Collections</a>
<a href="about.html" class="nav-link">Kingdom</a>
<a href="contact.html" class="nav-link">Contact</a>
</div>
<div class="flex items-center gap-8">
<button id="search-trigger" class="hover:opacity-60 transition-opacity">
<i data-lucide="search" class="w-5 h-5"></i>
</button>
<a href="wishlist.html" class="relative hover:opacity-60 transition-opacity text-red-500">
<i data-lucide="heart" class="w-5 h-5" fill="currentColor"></i>
<span id="wishlist-count" class="absolute -top-2 -right-2 w-4 h-4 bg-red-500 text-pure-white text-[10px] rounded-full flex items-center justify-center hidden">0</span>
</a>
<button id="cart-btn" class="relative hover:opacity-60 transition-opacity">
<i data-lucide="shopping-bag" class="w-5 h-5"></i>
<span id="cart-count" class="absolute -top-2 -right-2 w-4 h-4 bg-pure-white text-pure-black text-[10px] rounded-full flex items-center justify-center hidden">0</span>
</button>
<button class="lg:hidden" id="menu-btn">
<i data-lucide="menu" class="w-6 h-6"></i>
</button>
</div>
</div>
</nav>
<!-- Main Content -->
<main class="pt-40 pb-24 px-6 md:px-12 min-h-screen">
<div class="max-w-[1800px] mx-auto">
<!-- Header -->
<div class="mb-24">
<span class="text-[10px] tracking-[0.5em] uppercase text-white/40 block mb-6">Personal Archive</span>
<h1 class="font-display text-5xl md:text-7xl uppercase tracking-[0.1em] mb-8">Your Wishlist</h1>
<p class="text-white/40 max-w-2xl text-sm tracking-wide leading-relaxed">
Curate your personal collection of sovereign pieces. These artifacts await your command.
</p>
</div>
<!-- Wishlist Grid -->
<div id="wishlist-container" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8">
<!-- Dynamic content loaded here -->
</div>
<!-- Empty State -->
<div id="wishlist-empty" class="hidden text-center py-32">
<i data-lucide="heart" class="w-16 h-16 mx-auto mb-8 text-white/20"></i>
<h3 class="font-display text-2xl uppercase tracking-[0.2em] mb-4">Kingdom Awaits</h3>
<p class="text-white/40 mb-12 text-sm tracking-widest">Your wishlist is empty. Begin curating your collection.</p>
<a href="shop.html" class="btn-primary inline-block">Browse Collections</a>
</div>
</div>
</main>
<!-- Search Modal -->
<div id="search-modal" class="fixed inset-0 z-[100] bg-pure-black/95 backdrop-blur-xl hidden opacity-0">
<div class="h-full flex flex-col items-center justify-center px-6">
<button id="close-search" class="absolute top-12 right-12 text-white/40 hover:text-white transition-all">
<i data-lucide="x" class="w-8 h-8"></i>
</button>
<div class="w-full max-w-3xl">
<input type="text" id="search-input" placeholder="Search the archive..."
class="w-full bg-transparent border-b-2 border-white/20 py-6 text-3xl md:text-5xl font-display tracking-wider focus:outline-none focus:border-white transition-all text-center placeholder:text-white/20">
</div>
</div>
</div>
<!-- Cart Drawer -->
<div id="cart-overlay" class="fixed inset-0 z-[100] bg-black/80 hidden" onclick="ThreeCrown.toggleCart(false)"></div>
<div id="cart-drawer" class="fixed top-0 right-0 bottom-0 w-full max-w-md bg-pure-black border-l border-white/10 z-[100] transform translate-x-full transition-transform duration-500">
<div class="h-full flex flex-col">
<div class="p-8 border-b border-white/10 flex justify-between items-center">
<h3 class="font-display text-xl tracking-[0.2em] uppercase">Your Kingdom</h3>
<button id="close-cart" class="text-white/40 hover:text-white transition-all">
<i data-lucide="x" class="w-6 h-6"></i>
</button>
</div>
<div id="cart-items" class="flex-1 overflow-y-auto p-8">
<!-- Cart items rendered here -->
</div>
<div class="p-8 border-t border-white/10">
<div class="flex justify-between items-center mb-8">
<span class="text-sm tracking-widest uppercase text-white/60">Subtotal</span>
<span id="cart-total" class="font-display text-2xl">$0.00</span>
</div>
<a href="checkout.html" class="btn-primary w-full text-center block">Proceed to Checkout</a>
</div>
</div>
</div>
<!-- Footer -->
<footer class="border-t border-white/10 py-24 px-6 md:px-12 bg-pure-black">
<div class="max-w-[1800px] mx-auto">
<div class="grid grid-cols-1 md:grid-cols-4 gap-16 mb-24">
<div>
<h4 class="font-display text-lg mb-6">THREE CROWN WEAR</h4>
<p class="text-sm text-white/40 leading-relaxed">Defining monochrome excellence since 2024. The sovereign's choice in luxury apparel.</p>
</div>
<div>
<h4 class="text-[10px] tracking-[0.3em] uppercase text-white/40 mb-6">Explore</h4>
<ul class="space-y-4 text-sm">
<li><a href="shop.html" class="hover:text-white/60 transition-all">Collections</a></li>
<li><a href="about.html" class="hover:text-white/60 transition-all">Our Story</a></li>
<li><a href="contact.html" class="hover:text-white/60 transition-all">Contact</a></li>
</ul>
</div>
<div>
<h4 class="text-[10px] tracking-[0.3em] uppercase text-white/40 mb-6">Legal</h4>
<ul class="space-y-4 text-sm">
<li><a href="privacy.html" class="hover:text-white/60 transition-all">Privacy Policy</a></li>
<li><a href="terms.html" class="hover:text-white/60 transition-all">Terms of Service</a></li>
</ul>
</div>
<div>
<h4 class="text-[10px] tracking-[0.3em] uppercase text-white/40 mb-6">Connect</h4>
<div class="flex gap-6">
<a href="#" class="hover:text-white/60 transition-all"><i data-lucide="instagram" class="w-5 h-5"></i></a>
<a href="#" class="hover:text-white/60 transition-all"><i data-lucide="twitter" class="w-5 h-5"></i></a>
<a href="#" class="hover:text-white/60 transition-all"><i data-lucide="facebook" class="w-5 h-5"></i></a>
</div>
</div>
</div>
<div class="border-t border-white/10 pt-12 flex flex-col md:flex-row justify-between items-center gap-6">
<p class="text-[10px] tracking-[0.2em] uppercase text-white/20">© 2024 THREE CROWN WEAR. All Rights Reserved.</p>
<p class="text-[10px] tracking-[0.2em] uppercase text-white/20">Designed for the Modern Sovereign</p>
</div>
</div>
</footer>
<!-- Toast Container -->
<div id="toast-container" class="fixed bottom-12 right-12 z-[100] flex flex-col gap-4"></div>
<script src="js/main.js"></script>
<script>
const WishlistPage = {
init() {
this.renderWishlist();
ThreeCrown.initWishlist();
lucide.createIcons();
},
renderWishlist() {
const container = document.getElementById('wishlist-container');
const emptyState = document.getElementById('wishlist-empty');
const products = JSON.parse(localStorage.getItem('tcw_products') || '[]');
const wishlist = JSON.parse(localStorage.getItem('tcw_wishlist') || '[]');
if (wishlist.length === 0) {
container.innerHTML = '';
emptyState.classList.remove('hidden');
return;
}
emptyState.classList.add('hidden');
const wishlistProducts = products.filter(p => wishlist.includes(p.id));
container.innerHTML = wishlistProducts.map(product => `
<div class="glass-card group relative overflow-hidden animate-fade-in">
<div class="aspect-[3/4] overflow-hidden relative">
<img src="${product.images[0]}" alt="${sanitizeHTML(product.name)}"
class="w-full h-full object-cover transition-transform duration-700 group-hover:scale-105">
<!-- Remove from Wishlist Button -->
<button onclick="WishlistPage.removeFromWishlist('${product.id}')"
class="absolute top-4 right-4 w-10 h-10 bg-red-500/90 backdrop-blur-sm flex items-center justify-center hover:bg-red-600 transition-all z-10">
<i data-lucide="trash-2" class="w-5 h-5 text-white"></i>
</button>
<!-- Quick Add to Cart -->
<div class="absolute inset-x-0 bottom-0 p-4 translate-y-full group-hover:translate-y-0 transition-transform duration-300">
<a href="product.html?id=${product.id}" class="btn-primary w-full text-center block text-xs">
View Artifact
</a>
</div>
</div>
<div class="p-6">
<p class="text-[10px] tracking-[0.3em] uppercase text-white/40 mb-2">${sanitizeHTML(product.category)}</p>
<h3 class="font-display text-lg tracking-[0.1em] mb-3 truncate">${sanitizeHTML(product.name)}</h3>
<div class="flex justify-between items-center">
<span class="font-display text-xl">$${product.price.toFixed(2)}</span>
${product.isLimitedEdition ? '<span class="text-[9px] tracking-[0.3em] uppercase bg-white/10 px-2 py-1">Limited</span>' : ''}
</div>
</div>
</div>
`).join('');
lucide.createIcons();
},
removeFromWishlist(productId) {
ThreeCrown.toggleWishlist(productId);
this.renderWishlist();
}
};
document.addEventListener('DOMContentLoaded', () => {
WishlistPage.init();
});
</script>
</body>
</html>