-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshop.html
More file actions
189 lines (162 loc) · 7.38 KB
/
shop.html
File metadata and controls
189 lines (162 loc) · 7.38 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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="High-quality custom 3D printed models delivered fast. Shop unique prints made by Serhii.">
<meta name="keywords" content="3D print, custom 3d printing, PLA, fidget toys, keychains, Serhii">
<meta name="author" content="Serhii">
<title>Shop · Serhii</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
brand: "#10b981",
},
},
},
};
</script>
<style>
.gradient-text {
background: linear-gradient(to right, #10b981, #34d399);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
</style>
</head>
<body class="bg-gray-900 text-white min-h-screen">
<!-- NAVBAR -->
<header class="fixed inset-x-0 top-0 z-50 bg-gray-900/90 backdrop-blur border-b border-white/10">
<nav class="mx-auto flex max-w-7xl items-center justify-between px-4 sm:px-6 lg:px-8 h-14" aria-label="Global">
<div class="flex items-center gap-2">
<a href="/" class="flex items-center gap-2 group">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-brand group-hover:scale-110 transition-transform">
<path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"/>
<path d="M12 22V12"/>
<polyline points="3.29 7 12 12 20.71 7"/>
<path d="m7.5 4.27 9 5.15"/>
</svg>
<span class="font-bold">Serhii</span>
</a>
</div>
<div class="flex items-center gap-6 text-sm">
<a href="/shop" class="text-brand font-semibold">Shop</a>
<a href="/learn" class="text-gray-300 hover:text-white transition">Learn</a>
<a href="/contact" class="text-gray-300 hover:text-white transition">Contact</a>
</div>
</nav>
</header>
<!-- HERO SECTION -->
<div class="relative pt-20 pb-8 px-6">
<!-- TOP BG BLOB -->
<div aria-hidden="true"
class="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80">
<div
class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[40rem]
-translate-x-1/2 rotate-30 bg-gradient-to-tr from-emerald-500 via-cyan-400 to-blue-500 opacity-30
sm:left-[calc(50%-30rem)] sm:w-[70rem]">
</div>
</div>
<div class="max-w-7xl mx-auto">
<h1 class="text-4xl sm:text-5xl font-bold tracking-tight mb-2">
<span class="gradient-text">Shop</span>
</h1>
</div>
<!-- BOTTOM BG BLOB -->
<div aria-hidden="true"
class="absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl">
<div
class="relative left-[calc(50%+3rem)] aspect-[1155/678] w-[40rem]
-translate-x-1/2 bg-gradient-to-tr from-purple-500 via-emerald-400 to-cyan-500 opacity-30
sm:left-[calc(50%+36rem)] sm:w-[70rem]">
</div>
</div>
</div>
<!-- PRODUCTS SECTION -->
<main class="max-w-7xl mx-auto px-6 pb-24">
<div id="shopItems" class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6 gap-4"></div>
</main>
<!-- FOOTER -->
<footer class="border-t border-white/10 py-8 text-sm text-gray-400">
<div class="mx-auto max-w-7xl px-6">
<div class="flex flex-col sm:flex-row items-center justify-between gap-4">
<div class="flex items-center gap-2">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" stroke="currentColor" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-brand">
<path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"/>
<path d="M12 22V12"/>
<polyline points="3.29 7 12 12 20.71 7"/>
<path d="m7.5 4.27 9 5.15"/>
</svg>
<p>© 2025 Serhii. All rights reserved.</p>
</div>
<div class="flex gap-6">
<a href="/contact" class="hover:text-white transition">Contact</a>
<a href="/shop" class="hover:text-white transition">Shop</a>
<a href="/learn" class="hover:text-white transition">Learn</a>
</div>
</div>
</div>
</footer>
<script>
function addShopItem(name, price, image, link) {
const container = document.getElementById("shopItems");
const card = document.createElement("div");
card.className = "group relative bg-gray-800/50 backdrop-blur-sm border border-white/10 rounded-xl overflow-hidden hover:border-brand/50 transition-all duration-300 hover:shadow-lg hover:shadow-brand/20 hover:scale-105";
// Create image container
const imgContainer = document.createElement("div");
imgContainer.className = "relative overflow-hidden";
const img = document.createElement("img");
img.src = image;
img.alt = name;
img.className = "w-full h-40 sm:h-48 object-cover";
imgContainer.appendChild(img);
// Create content container
const contentDiv = document.createElement("div");
contentDiv.className = "p-3";
// Create title
const title = document.createElement("h3");
title.className = "text-sm font-semibold text-white truncate";
title.textContent = name;
// Create price
const priceEl = document.createElement("p");
priceEl.className = "text-brand font-bold text-sm mb-2";
priceEl.textContent = price;
// Create buy button
const buyBtn = document.createElement("a");
buyBtn.href = link;
buyBtn.target = "_blank";
buyBtn.className = "flex items-center justify-center gap-1 w-full bg-brand text-black font-semibold px-3 py-2 rounded-lg hover:bg-brand/80 transition-all text-xs";
buyBtn.innerHTML = `
<span>Buy</span>
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
</svg>
`;
// Assemble everything
contentDiv.appendChild(title);
contentDiv.appendChild(priceEl);
contentDiv.appendChild(buyBtn);
card.appendChild(imgContainer);
card.appendChild(contentDiv);
container.appendChild(card);
}
// Add products
addShopItem("Fidget Spinner", "$1.25", "./images/fidgetspinner.png",
"https://www.paypal.com/ncp/payment/JDDULBSP3A4XN");
addShopItem("Fidget Gyro Ring", "$1.00", "./images/gyroringfidget.png",
"https://www.paypal.com/ncp/payment/99836MVB6AZKA");
addShopItem("Door Unlocker", "$1.50", "./images/unlocker.png",
"https://www.paypal.com/ncp/payment/BT9X7R8B6A4GW");
addShopItem("Sword", "$15.00", "./images/sword.png",
"https://www.paypal.com/ncp/payment/U4ATUL6P8NBG4");
addShopItem("Dragon", "$20.00", "./images/dragon.png",
"https://www.paypal.com/ncp/payment/G4KKAXJA7QBYL");
addShopItem("Air Slides", "$35.00", "./images/shoes.png",
"https://www.paypal.com/ncp/payment/E7R82UPT6U9U6");
</script>
</body>
</html>