Heather Rasley commited on
Commit
f736f07
·
verified ·
1 Parent(s): 124488f

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +391 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Surprises
3
- emoji: 🐢
4
- colorFrom: pink
5
- colorTo: green
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: surprises
3
+ emoji: 🐳
4
+ colorFrom: blue
5
+ colorTo: red
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,391 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>The Ultimate Meaningless Surprise</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .confetti {
11
+ position: absolute;
12
+ width: 10px;
13
+ height: 10px;
14
+ background-color: #f00;
15
+ opacity: 0;
16
+ }
17
+ .floating {
18
+ animation: float 3s ease-in-out infinite;
19
+ }
20
+ @keyframes float {
21
+ 0%, 100% { transform: translateY(0); }
22
+ 50% { transform: translateY(-20px); }
23
+ }
24
+ .spin {
25
+ animation: spin 1s linear infinite;
26
+ }
27
+ @keyframes spin {
28
+ from { transform: rotate(0deg); }
29
+ to { transform: rotate(360deg); }
30
+ }
31
+ .pulse {
32
+ animation: pulse 1s infinite;
33
+ }
34
+ @keyframes pulse {
35
+ 0% { transform: scale(1); }
36
+ 50% { transform: scale(1.1); }
37
+ 100% { transform: scale(1); }
38
+ }
39
+ .rainbow-text {
40
+ background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);
41
+ -webkit-background-clip: text;
42
+ background-clip: text;
43
+ color: transparent;
44
+ animation: rainbow 5s linear infinite;
45
+ background-size: 400% 100%;
46
+ }
47
+ @keyframes rainbow {
48
+ 0% { background-position: 0% 50%; }
49
+ 100% { background-position: 100% 50%; }
50
+ }
51
+ .progress-bar {
52
+ height: 20px;
53
+ border-radius: 10px;
54
+ transition: width 0.3s ease;
55
+ }
56
+ .tada {
57
+ animation: tada 1s;
58
+ }
59
+ @keyframes tada {
60
+ 0% { transform: scale(1); }
61
+ 10%, 20% { transform: scale(0.9) rotate(-3deg); }
62
+ 30%, 50%, 70%, 90% { transform: scale(1.1) rotate(3deg); }
63
+ 40%, 60%, 80% { transform: scale(1.1) rotate(-3deg); }
64
+ 100% { transform: scale(1) rotate(0); }
65
+ }
66
+ </style>
67
+ </head>
68
+ <body class="bg-gradient-to-br from-purple-900 via-blue-800 to-indigo-900 min-h-screen text-white overflow-x-hidden">
69
+ <div class="container mx-auto px-4 py-12">
70
+ <!-- Main clicker -->
71
+ <div class="bg-gradient-to-r from-pink-500 to-yellow-500 rounded-xl shadow-2xl p-8 max-w-md mx-auto text-center cursor-pointer transform transition-all hover:scale-105" id="clicker">
72
+ <i class="fas fa-hand-pointer text-6xl mb-4 pulse"></i>
73
+ <h1 class="text-4xl font-bold mb-2 rainbow-text" id="title">CLICK ME!</h1>
74
+ <p class="text-xl mb-4" id="subtitle">For the most amazing surprise!</p>
75
+ <div class="bg-black bg-opacity-30 rounded-lg p-4 mb-4">
76
+ <div class="flex justify-between mb-1">
77
+ <span id="levelText">Level 1</span>
78
+ <span id="clickCount">0 clicks</span>
79
+ </div>
80
+ <div class="w-full bg-gray-700 rounded-full h-4">
81
+ <div class="progress-bar bg-green-500 h-4 rounded-full" id="progressBar" style="width: 0%"></div>
82
+ </div>
83
+ </div>
84
+ <p class="text-sm italic" id="hint">Keep clicking to unlock better rewards!</p>
85
+ </div>
86
+
87
+ <!-- Reward display -->
88
+ <div class="bg-white bg-opacity-20 rounded-xl shadow-lg p-6 max-w-md mx-auto mt-8 backdrop-blur-sm hidden" id="rewardContainer">
89
+ <h2 class="text-2xl font-bold mb-4 text-center" id="rewardTitle">LEVEL 1 REWARD</h2>
90
+ <div class="flex justify-center mb-4" id="rewardIcon">
91
+ <i class="fas fa-smile text-6xl text-yellow-400"></i>
92
+ </div>
93
+ <p class="text-center mb-4" id="rewardDescription">You got a smile! Isn't this exciting?</p>
94
+ <button class="w-full bg-green-600 hover:bg-green-700 text-white font-bold py-3 px-6 rounded-lg transition-all" id="continueButton">
95
+ Continue to Next Level
96
+ </button>
97
+ </div>
98
+
99
+ <!-- The Grand Finale (hidden initially) -->
100
+ <div class="fixed inset-0 bg-black bg-opacity-90 flex items-center justify-center hidden" id="grandFinale">
101
+ <div class="text-center p-8 max-w-2xl">
102
+ <h1 class="text-6xl font-bold mb-6 rainbow-text">CONGRATULATIONS!</h1>
103
+ <p class="text-3xl mb-8">You've reached the ULTIMATE REWARD!</p>
104
+
105
+ <div class="bg-white bg-opacity-20 rounded-xl p-8 mb-8 backdrop-blur-sm">
106
+ <div class="text-9xl mb-6" id="finalReward">🤷‍♂️</div>
107
+ <p class="text-2xl">After all that clicking...</p>
108
+ <p class="text-xl mt-2">This is literally all you get.</p>
109
+ <p class="text-lg mt-4 italic">Was it worth it?</p>
110
+ </div>
111
+
112
+ <div class="text-sm text-gray-400 mt-8">
113
+ <p>Total clicks: <span id="totalClicks">0</span></p>
114
+ <p>Time wasted: <span id="timeWasted">0</span> seconds</p>
115
+ </div>
116
+
117
+ <button class="bg-purple-600 hover:bg-purple-700 text-white font-bold py-3 px-8 rounded-full text-xl transition-all mt-6" id="closeFinale">
118
+ Close
119
+ </button>
120
+ </div>
121
+ </div>
122
+ </div>
123
+
124
+ <script>
125
+ // Game state
126
+ let clickCount = 0;
127
+ let level = 1;
128
+ let startTime = Date.now();
129
+ const clickThresholds = [10, 25, 50, 100, 200, 500];
130
+ const levelRewards = [
131
+ { icon: 'fa-smile', text: 'A Smile', desc: 'The journey begins with a simple smile.' },
132
+ { icon: 'fa-thumbs-up', text: 'A Thumbs Up', desc: 'Great job! Here\'s approval in emoji form.' },
133
+ { icon: 'fa-star', text: 'A Star', desc: 'Shiny! But completely useless.' },
134
+ { icon: 'fa-trophy', text: 'A Trophy', desc: 'For your dedication to meaningless clicking.' },
135
+ { icon: 'fa-crown', text: 'A Crown', desc: 'You\'re the king/queen of pointless effort!' },
136
+ { icon: 'fa-gem', text: 'A Gem', desc: 'Fake digital jewelry for your troubles.' },
137
+ { icon: 'fa-question', text: '???', desc: 'The ultimate mystery reward awaits...' }
138
+ ];
139
+ const finalRewards = ['🤷‍♂️', '🫥', '💩', '🪤', '🎣', '🪄', '🫧', '🌬️'];
140
+
141
+ // DOM elements
142
+ const clicker = document.getElementById('clicker');
143
+ const title = document.getElementById('title');
144
+ const subtitle = document.getElementById('subtitle');
145
+ const levelText = document.getElementById('levelText');
146
+ const clickCountDisplay = document.getElementById('clickCount');
147
+ const progressBar = document.getElementById('progressBar');
148
+ const hint = document.getElementById('hint');
149
+ const rewardContainer = document.getElementById('rewardContainer');
150
+ const rewardTitle = document.getElementById('rewardTitle');
151
+ const rewardIcon = document.getElementById('rewardIcon');
152
+ const rewardDescription = document.getElementById('rewardDescription');
153
+ const continueButton = document.getElementById('continueButton');
154
+ const grandFinale = document.getElementById('grandFinale');
155
+ const totalClicks = document.getElementById('totalClicks');
156
+ const timeWasted = document.getElementById('timeWasted');
157
+ const finalReward = document.getElementById('finalReward');
158
+ const closeFinale = document.getElementById('closeFinale');
159
+
160
+ // Click handler
161
+ clicker.addEventListener('click', function() {
162
+ clickCount++;
163
+ clickCountDisplay.textContent = `${clickCount} clicks`;
164
+
165
+ // Update progress
166
+ const progress = Math.min(100, (clickCount / clickThresholds[level-1]) * 100);
167
+ progressBar.style.width = `${progress}%`;
168
+
169
+ // Random color change
170
+ if (Math.random() > 0.7) {
171
+ const colors = ['from-pink-500 to-yellow-500', 'from-purple-500 to-pink-500', 'from-blue-500 to-teal-500', 'from-red-500 to-orange-500'];
172
+ clicker.className = clicker.className.replace(/from-\S+ to-\S+/, colors[Math.floor(Math.random() * colors.length)]);
173
+ }
174
+
175
+ // Random animations
176
+ if (Math.random() > 0.9) {
177
+ clicker.classList.add('tada');
178
+ setTimeout(() => clicker.classList.remove('tada'), 1000);
179
+ }
180
+
181
+ // Level up check
182
+ if (level <= clickThresholds.length && clickCount >= clickThresholds[level-1]) {
183
+ showReward();
184
+ }
185
+
186
+ // Update hints
187
+ updateHints();
188
+ });
189
+
190
+ // Show reward
191
+ function showReward() {
192
+ const reward = levelRewards[level-1];
193
+
194
+ rewardTitle.textContent = `LEVEL ${level} REWARD`;
195
+ rewardIcon.innerHTML = `<i class="fas ${reward.icon} text-6xl text-yellow-400"></i>`;
196
+ rewardDescription.textContent = reward.desc;
197
+
198
+ if (level < clickThresholds.length) {
199
+ continueButton.textContent = `Continue to Level ${level+1}`;
200
+ } else {
201
+ continueButton.textContent = 'Claim Ultimate Reward';
202
+ }
203
+
204
+ rewardContainer.classList.remove('hidden');
205
+ clicker.classList.add('hidden');
206
+
207
+ // Confetti
208
+ createConfetti();
209
+ }
210
+
211
+ // Continue button
212
+ continueButton.addEventListener('click', function() {
213
+ if (level < clickThresholds.length) {
214
+ level++;
215
+ levelText.textContent = `Level ${level}`;
216
+ clickCount = 0;
217
+ clickCountDisplay.textContent = `${clickCount} clicks`;
218
+ progressBar.style.width = '0%';
219
+
220
+ // Update title based on level
221
+ const titles = [
222
+ "KEEP CLICKING!",
223
+ "MORE! MORE!",
224
+ "DON'T STOP NOW!",
225
+ "YOU'RE COMMITTED!",
226
+ "ALMOST THERE!",
227
+ "FINAL PUSH!"
228
+ ];
229
+ title.textContent = titles[level-1] || "WHY ARE YOU STILL CLICKING?";
230
+
231
+ rewardContainer.classList.add('hidden');
232
+ clicker.classList.remove('hidden');
233
+ } else {
234
+ // Show grand finale
235
+ showGrandFinale();
236
+ }
237
+ });
238
+
239
+ // Show grand finale
240
+ function showGrandFinale() {
241
+ totalClicks.textContent = clickCount;
242
+ const seconds = Math.floor((Date.now() - startTime) / 1000);
243
+ timeWasted.textContent = seconds;
244
+
245
+ // Random final reward
246
+ finalReward.textContent = finalRewards[Math.floor(Math.random() * finalRewards.length)];
247
+
248
+ rewardContainer.classList.add('hidden');
249
+ grandFinale.classList.remove('hidden');
250
+
251
+ // Fireworks
252
+ createFireworks();
253
+ }
254
+
255
+ // Close finale
256
+ closeFinale.addEventListener('click', function() {
257
+ grandFinale.classList.add('hidden');
258
+
259
+ // Reset game
260
+ level = 1;
261
+ clickCount = 0;
262
+ levelText.textContent = `Level ${level}`;
263
+ clickCountDisplay.textContent = `${clickCount} clicks`;
264
+ progressBar.style.width = '0%';
265
+ title.textContent = 'CLICK ME!';
266
+ subtitle.textContent = 'For the most amazing surprise!';
267
+
268
+ clicker.classList.remove('hidden');
269
+ });
270
+
271
+ // Update hints
272
+ function updateHints() {
273
+ const hints = [
274
+ "Just a few more clicks!",
275
+ "You're doing great!",
276
+ "This next reward will be worth it!",
277
+ "Legend says the ultimate reward is amazing!",
278
+ "Your persistence is admirable!",
279
+ "Almost there!",
280
+ "The next level has better rewards!",
281
+ "Don't give up now!",
282
+ "Think of all the bragging rights!",
283
+ "Your friends will be so jealous!",
284
+ "This is definitely not a waste of time!",
285
+ "The algorithm is impressed!",
286
+ "Your click accuracy is remarkable!",
287
+ "You could stop now... but will you?",
288
+ "The servers are working hard for you!",
289
+ "Your mouse must be exhausted!",
290
+ "This is the most productive thing you've done today!",
291
+ "The CEO will hear about this!",
292
+ "Your dedication is being recorded!",
293
+ "This is scientifically proven to be meaningful!"
294
+ ];
295
+
296
+ if (clickCount % 15 === 0) {
297
+ hint.textContent = hints[Math.floor(Math.random() * hints.length)];
298
+ hint.classList.add('animate-pulse');
299
+ setTimeout(() => hint.classList.remove('animate-pulse'), 1000);
300
+ }
301
+ }
302
+
303
+ // Confetti effect
304
+ function createConfetti() {
305
+ for (let i = 0; i < 100; i++) {
306
+ const confetti = document.createElement('div');
307
+ confetti.classList.add('confetti');
308
+
309
+ // Random properties
310
+ const size = Math.random() * 10 + 5;
311
+ const color = `hsl(${Math.random() * 360}, 100%, 50%)`;
312
+ const left = Math.random() * 100;
313
+ const animationDuration = Math.random() * 3 + 2;
314
+
315
+ confetti.style.width = `${size}px`;
316
+ confetti.style.height = `${size}px`;
317
+ confetti.style.backgroundColor = color;
318
+ confetti.style.left = `${left}%`;
319
+ confetti.style.top = '-10px';
320
+ confetti.style.opacity = '1';
321
+ confetti.style.borderRadius = Math.random() > 0.5 ? '50%' : '0';
322
+ confetti.style.animation = `fall ${animationDuration}s linear forwards`;
323
+
324
+ // Add keyframes dynamically
325
+ const style = document.createElement('style');
326
+ style.innerHTML = `
327
+ @keyframes fall {
328
+ 0% { transform: translateY(0) rotate(0deg); opacity: 1; }
329
+ 100% { transform: translateY(100vh) rotate(${Math.random() * 360}deg); opacity: 0; }
330
+ }
331
+ `;
332
+ document.head.appendChild(style);
333
+
334
+ document.body.appendChild(confetti);
335
+
336
+ // Remove confetti after animation
337
+ setTimeout(() => {
338
+ confetti.remove();
339
+ style.remove();
340
+ }, animationDuration * 1000);
341
+ }
342
+ }
343
+
344
+ // Fireworks effect
345
+ function createFireworks() {
346
+ const colors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'];
347
+
348
+ function createFirework(x, y) {
349
+ const particles = 50;
350
+ for (let i = 0; i < particles; i++) {
351
+ const particle = document.createElement('div');
352
+ particle.style.position = 'fixed';
353
+ particle.style.width = '6px';
354
+ particle.style.height = '6px';
355
+ particle.style.borderRadius = '50%';
356
+ particle.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];
357
+ particle.style.left = `${x}%`;
358
+ particle.style.top = `${y}%`;
359
+ particle.style.transform = 'translate(-50%, -50%) scale(0)';
360
+ particle.style.transition = 'transform 0.5s ease-out, opacity 0.5s ease-out';
361
+
362
+ document.body.appendChild(particle);
363
+
364
+ // Animate
365
+ setTimeout(() => {
366
+ const angle = (i / particles) * Math.PI * 2;
367
+ const distance = Math.random() * 20 + 10;
368
+ const xPos = x + Math.cos(angle) * distance;
369
+ const yPos = y + Math.sin(angle) * distance;
370
+
371
+ particle.style.transform = `translate(-50%, -50%) translate(${Math.cos(angle) * distance}%, ${Math.sin(angle) * distance}%) scale(1)`;
372
+ particle.style.opacity = '0';
373
+ }, 10);
374
+
375
+ // Remove after animation
376
+ setTimeout(() => {
377
+ particle.remove();
378
+ }, 1000);
379
+ }
380
+ }
381
+
382
+ // Create multiple fireworks
383
+ for (let i = 0; i < 10; i++) {
384
+ setTimeout(() => {
385
+ createFirework(Math.random() * 80 + 10, Math.random() * 80 + 10);
386
+ }, i * 300);
387
+ }
388
+ }
389
+ </script>
390
+ <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=heatherrasley/surprises" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body>
391
+ </html>