porkz commited on
Commit
ffe510b
·
verified ·
1 Parent(s): 1e8262c

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +421 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Holobox
3
- emoji: 💻
4
  colorFrom: green
5
- colorTo: red
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: holobox
3
+ emoji: 🐳
4
  colorFrom: green
5
+ colorTo: blue
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,421 @@
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>HOLOBOX - 8-bit Chiptune Jukebox</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://cdn.jsdelivr.net/npm/@tonejs/[email protected]/build/Midi.min.js"></script>
9
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
10
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
11
+ <style>
12
+ @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
13
+
14
+ body {
15
+ background-color: #0a0a1a;
16
+ font-family: 'Press Start 2P', cursive;
17
+ overflow: hidden;
18
+ height: 100vh;
19
+ display: flex;
20
+ justify-content: center;
21
+ align-items: center;
22
+ }
23
+
24
+ .holobox {
25
+ position: relative;
26
+ width: 400px;
27
+ height: 500px;
28
+ background-color: #111;
29
+ border-radius: 10px;
30
+ box-shadow:
31
+ 0 0 10px #0ff,
32
+ 0 0 20px #0ff,
33
+ 0 0 30px #0ff,
34
+ inset 0 0 10px rgba(0, 255, 255, 0.5);
35
+ padding: 20px;
36
+ border: 4px solid #333;
37
+ }
38
+
39
+ .screen {
40
+ width: 100%;
41
+ height: 250px;
42
+ background-color: #000;
43
+ border: 4px solid #333;
44
+ margin-bottom: 20px;
45
+ position: relative;
46
+ overflow: hidden;
47
+ box-shadow: inset 0 0 20px rgba(0, 255, 255, 0.3);
48
+ }
49
+
50
+ .pixel-grid {
51
+ position: absolute;
52
+ top: 0;
53
+ left: 0;
54
+ width: 100%;
55
+ height: 100%;
56
+ background-image:
57
+ linear-gradient(rgba(0, 255, 255, 0.1) 1px, transparent 1px),
58
+ linear-gradient(90deg, rgba(0, 255, 255, 0.1) 1px, transparent 1px);
59
+ background-size: 20px 20px;
60
+ }
61
+
62
+ .title {
63
+ color: #0ff;
64
+ text-align: center;
65
+ font-size: 24px;
66
+ margin-bottom: 10px;
67
+ text-shadow: 0 0 5px #0ff;
68
+ letter-spacing: 2px;
69
+ }
70
+
71
+ .buttons {
72
+ display: flex;
73
+ justify-content: space-around;
74
+ margin-top: 30px;
75
+ }
76
+
77
+ .btn {
78
+ width: 80px;
79
+ height: 80px;
80
+ border-radius: 50%;
81
+ background-color: #222;
82
+ border: 4px solid #333;
83
+ display: flex;
84
+ justify-content: center;
85
+ align-items: center;
86
+ cursor: pointer;
87
+ transition: all 0.3s;
88
+ position: relative;
89
+ box-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
90
+ }
91
+
92
+ .btn:hover {
93
+ transform: scale(1.05);
94
+ box-shadow: 0 0 15px #0ff;
95
+ }
96
+
97
+ .btn.active {
98
+ box-shadow: 0 0 20px #0ff, 0 0 30px #0ff;
99
+ background-color: #0ff;
100
+ }
101
+
102
+ .btn i {
103
+ font-size: 30px;
104
+ color: #0ff;
105
+ }
106
+
107
+ .btn.active i {
108
+ color: #000;
109
+ }
110
+
111
+ .btn::before {
112
+ content: '';
113
+ position: absolute;
114
+ top: -5px;
115
+ left: -5px;
116
+ right: -5px;
117
+ bottom: -5px;
118
+ border-radius: 50%;
119
+ border: 2px solid #0ff;
120
+ opacity: 0;
121
+ transition: all 0.3s;
122
+ }
123
+
124
+ .btn:hover::before {
125
+ opacity: 1;
126
+ }
127
+
128
+ .btn.active::before {
129
+ opacity: 1;
130
+ animation: pulse 1.5s infinite;
131
+ }
132
+
133
+ @keyframes pulse {
134
+ 0% {
135
+ transform: scale(1);
136
+ opacity: 0.7;
137
+ }
138
+ 70% {
139
+ transform: scale(1.3);
140
+ opacity: 0;
141
+ }
142
+ 100% {
143
+ transform: scale(1);
144
+ opacity: 0;
145
+ }
146
+ }
147
+
148
+ .display {
149
+ background-color: #111;
150
+ color: #0ff;
151
+ padding: 10px;
152
+ border: 2px solid #333;
153
+ margin-top: 20px;
154
+ font-size: 12px;
155
+ text-align: center;
156
+ min-height: 40px;
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: center;
160
+ text-shadow: 0 0 5px #0ff;
161
+ box-shadow: inset 0 0 10px rgba(0, 255, 255, 0.2);
162
+ }
163
+
164
+ .pixel {
165
+ position: absolute;
166
+ width: 10px;
167
+ height: 10px;
168
+ background-color: #0ff;
169
+ opacity: 0;
170
+ }
171
+
172
+ .equalizer {
173
+ position: absolute;
174
+ bottom: 10px;
175
+ left: 0;
176
+ width: 100%;
177
+ height: 60px;
178
+ display: flex;
179
+ justify-content: center;
180
+ align-items: flex-end;
181
+ gap: 5px;
182
+ }
183
+
184
+ .bar {
185
+ width: 10px;
186
+ background-color: #0ff;
187
+ border-radius: 2px;
188
+ transition: height 0.1s;
189
+ box-shadow: 0 0 5px #0ff;
190
+ }
191
+
192
+ .scanlines {
193
+ position: absolute;
194
+ top: 0;
195
+ left: 0;
196
+ width: 100%;
197
+ height: 100%;
198
+ background: linear-gradient(
199
+ rgba(0, 0, 0, 0) 50%,
200
+ rgba(0, 255, 255, 0.1) 50%
201
+ );
202
+ background-size: 100% 4px;
203
+ pointer-events: none;
204
+ }
205
+
206
+ .glitch {
207
+ position: absolute;
208
+ top: 0;
209
+ left: 0;
210
+ width: 100%;
211
+ height: 100%;
212
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"><rect width="100%" height="1" fill="%230ff" opacity="0.1"/></svg>');
213
+ animation: glitch 5s infinite;
214
+ opacity: 0.3;
215
+ pointer-events: none;
216
+ }
217
+
218
+ @keyframes glitch {
219
+ 0%, 100% { transform: translate(0); }
220
+ 20% { transform: translate(-2px, 2px); }
221
+ 40% { transform: translate(-2px, -2px); }
222
+ 60% { transform: translate(2px, 2px); }
223
+ 80% { transform: translate(2px, -2px); }
224
+ }
225
+
226
+ .corner {
227
+ position: absolute;
228
+ width: 30px;
229
+ height: 30px;
230
+ border-color: #0ff;
231
+ border-style: solid;
232
+ border-width: 0;
233
+ opacity: 0.7;
234
+ }
235
+
236
+ .corner-tl {
237
+ top: 10px;
238
+ left: 10px;
239
+ border-top-width: 3px;
240
+ border-left-width: 3px;
241
+ }
242
+
243
+ .corner-tr {
244
+ top: 10px;
245
+ right: 10px;
246
+ border-top-width: 3px;
247
+ border-right-width: 3px;
248
+ }
249
+
250
+ .corner-bl {
251
+ bottom: 10px;
252
+ left: 10px;
253
+ border-bottom-width: 3px;
254
+ border-left-width: 3px;
255
+ }
256
+
257
+ .corner-br {
258
+ bottom: 10px;
259
+ right: 10px;
260
+ border-bottom-width: 3px;
261
+ border-right-width: 3px;
262
+ }
263
+ </style>
264
+ </head>
265
+ <body>
266
+ <div class="holobox">
267
+ <div class="corner corner-tl"></div>
268
+ <div class="corner corner-tr"></div>
269
+ <div class="corner corner-bl"></div>
270
+ <div class="corner corner-br"></div>
271
+
272
+ <div class="title">HOLOBOX</div>
273
+ <div class="screen">
274
+ <div class="pixel-grid"></div>
275
+ <div class="glitch"></div>
276
+ <div class="scanlines"></div>
277
+ <div class="equalizer" id="equalizer"></div>
278
+ </div>
279
+ <div class="display" id="display">READY</div>
280
+ <div class="buttons">
281
+ <div class="btn" id="btn1" data-song="1">
282
+ <i class="fas fa-space-shuttle"></i>
283
+ </div>
284
+ <div class="btn" id="btn2" data-song="2">
285
+ <i class="fas fa-robot"></i>
286
+ </div>
287
+ <div class="btn" id="btn3" data-song="3">
288
+ <i class="fas fa-gamepad"></i>
289
+ </div>
290
+ </div>
291
+ </div>
292
+
293
+ <script>
294
+ document.addEventListener('DOMContentLoaded', function() {
295
+ // Initialize Tone.js
296
+ Tone.start();
297
+
298
+ // Create equalizer bars
299
+ const equalizer = document.getElementById('equalizer');
300
+ for (let i = 0; i < 30; i++) {
301
+ const bar = document.createElement('div');
302
+ bar.className = 'bar';
303
+ bar.style.height = '5px';
304
+ equalizer.appendChild(bar);
305
+ }
306
+
307
+ // Create pixel animation
308
+ const screen = document.querySelector('.screen');
309
+ for (let i = 0; i < 50; i++) {
310
+ const pixel = document.createElement('div');
311
+ pixel.className = 'pixel';
312
+ pixel.style.left = Math.random() * 100 + '%';
313
+ pixel.style.top = Math.random() * 100 + '%';
314
+ pixel.style.opacity = Math.random() * 0.5;
315
+ screen.appendChild(pixel);
316
+
317
+ animatePixel(pixel);
318
+ }
319
+
320
+ function animatePixel(pixel) {
321
+ const duration = 2000 + Math.random() * 3000;
322
+ const delay = Math.random() * 5000;
323
+
324
+ setTimeout(() => {
325
+ pixel.style.transition = `all ${duration}ms linear`;
326
+ pixel.style.left = Math.random() * 100 + '%';
327
+ pixel.style.top = Math.random() * 100 + '%';
328
+
329
+ setTimeout(() => {
330
+ pixel.style.transition = 'none';
331
+ pixel.style.left = Math.random() * 100 + '%';
332
+ pixel.style.top = Math.random() * 100 + '%';
333
+ animatePixel(pixel);
334
+ }, duration);
335
+ }, delay);
336
+ }
337
+
338
+ // MIDI player setup
339
+ let currentPlayer = null;
340
+ const display = document.getElementById('display');
341
+ const buttons = document.querySelectorAll('.btn');
342
+
343
+ // Sample MIDI files (in reality you would load actual MIDI files)
344
+ const songs = [
345
+ {
346
+ name: "GALACTIC CRUISE",
347
+ // This would be replaced with actual MIDI file loading
348
+ play: function() {
349
+ display.textContent = "PLAYING: GALACTIC CRUISE";
350
+ startEqualizer();
351
+ return { stop: function() { stopEqualizer(); } };
352
+ }
353
+ },
354
+ {
355
+ name: "ROBOT DANCE",
356
+ play: function() {
357
+ display.textContent = "PLAYING: ROBOT DANCE";
358
+ startEqualizer();
359
+ return { stop: function() { stopEqualizer(); } };
360
+ }
361
+ },
362
+ {
363
+ name: "ARCADE BLAST",
364
+ play: function() {
365
+ display.textContent = "PLAYING: ARCADE BLAST";
366
+ startEqualizer();
367
+ return { stop: function() { stopEqualizer(); } };
368
+ }
369
+ }
370
+ ];
371
+
372
+ // Equalizer animation
373
+ let equalizerInterval;
374
+ function startEqualizer() {
375
+ const bars = document.querySelectorAll('.bar');
376
+ clearInterval(equalizerInterval);
377
+
378
+ equalizerInterval = setInterval(() => {
379
+ bars.forEach(bar => {
380
+ const height = 5 + Math.random() * 55;
381
+ bar.style.height = height + 'px';
382
+ bar.style.opacity = 0.1 + (height / 60) * 0.9;
383
+ });
384
+ }, 100);
385
+ }
386
+
387
+ function stopEqualizer() {
388
+ clearInterval(equalizerInterval);
389
+ const bars = document.querySelectorAll('.bar');
390
+ bars.forEach(bar => {
391
+ bar.style.height = '5px';
392
+ bar.style.opacity = '0.1';
393
+ });
394
+ }
395
+
396
+ // Button click handlers
397
+ buttons.forEach(btn => {
398
+ btn.addEventListener('click', function() {
399
+ const songIndex = parseInt(this.getAttribute('data-song')) - 1;
400
+
401
+ // Stop current song if playing
402
+ if (currentPlayer) {
403
+ currentPlayer.stop();
404
+ document.querySelector('.btn.active')?.classList.remove('active');
405
+ }
406
+
407
+ // Start new song
408
+ currentPlayer = songs[songIndex].play();
409
+ this.classList.add('active');
410
+ });
411
+ });
412
+
413
+ // Simulate CRT power-on effect
414
+ setTimeout(() => {
415
+ screen.style.boxShadow = 'inset 0 0 20px rgba(0, 255, 255, 0.5)';
416
+ display.style.textShadow = '0 0 5px #0ff';
417
+ }, 500);
418
+ });
419
+ </script>
420
+ <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=porkz/holobox" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
421
+ </html>