Boobs00 commited on
Commit
ab7801f
·
verified ·
1 Parent(s): 475e3b7

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +661 -19
  3. prompts.txt +1 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Windy
3
- emoji: 📈
4
- colorFrom: gray
5
- colorTo: blue
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: windy
3
+ emoji: 🐳
4
+ colorFrom: red
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,661 @@
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>CyberpunkDesktop</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script>
9
+ tailwind.config = {
10
+ theme: {
11
+ extend: {
12
+ colors: {
13
+ cyberpink: '#ff2a6d',
14
+ cyberblue: '#05d9fe',
15
+ cyberpurple: '#d300c5',
16
+ cyberdark: '#0d0221',
17
+ cybergray: '#1a1a2e',
18
+ },
19
+ fontFamily: {
20
+ 'cyber': ['"Rajdhani"', 'sans-serif'],
21
+ },
22
+ boxShadow: {
23
+ 'neon-pink': '0 0 10px #ff2a6d, 0 0 20px #ff2a6d, 0 0 30px #ff2a6d',
24
+ 'neon-blue': '0 0 10px #05d9fe, 0 0 20px #05d9fe, 0 0 30px #05d9fe',
25
+ 'neon-purple': '0 0 10px #d300c5, 0 0 20px #d300c5, 0 0 30px #d300c5',
26
+ }
27
+ }
28
+ }
29
+ }
30
+ </script>
31
+ <link href="https://fonts.googleapis.com/css2?family=Rajdhani:wght@300;400;500;600;700&display=swap" rel="stylesheet">
32
+ <style>
33
+ /* Custom CSS for elements Tailwind can't handle */
34
+ body {
35
+ background-color: #0d0221;
36
+ background-image:
37
+ linear-gradient(rgba(5, 217, 254, 0.1) 1px, transparent 1px),
38
+ linear-gradient(90deg, rgba(5, 217, 254, 0.1) 1px, transparent 1px);
39
+ background-size: 20px 20px;
40
+ overflow: hidden;
41
+ user-select: none;
42
+ font-family: 'Rajdhani', sans-serif;
43
+ }
44
+
45
+ .window {
46
+ backdrop-filter: blur(10px);
47
+ background: rgba(26, 26, 46, 0.7);
48
+ border: 1px solid rgba(5, 217, 254, 0.3);
49
+ box-shadow: 0 0 15px rgba(5, 217, 254, 0.2);
50
+ }
51
+
52
+ .window-header {
53
+ background: linear-gradient(90deg, rgba(5, 217, 254, 0.2), rgba(255, 42, 109, 0.2));
54
+ }
55
+
56
+ .taskbar {
57
+ backdrop-filter: blur(10px);
58
+ background: rgba(13, 2, 33, 0.7);
59
+ border-top: 1px solid rgba(5, 217, 254, 0.3);
60
+ }
61
+
62
+ .icon:hover {
63
+ filter: drop-shadow(0 0 5px #05d9fe) drop-shadow(0 0 10px #ff2a6d);
64
+ }
65
+
66
+ .resize-handle {
67
+ background: transparent;
68
+ z-index: 10;
69
+ }
70
+
71
+ .resize-handle:hover {
72
+ background: rgba(5, 217, 254, 0.3);
73
+ }
74
+
75
+ .terminal-cursor {
76
+ animation: blink 1s infinite;
77
+ }
78
+
79
+ @keyframes blink {
80
+ 0%, 100% { opacity: 1; }
81
+ 50% { opacity: 0; }
82
+ }
83
+
84
+ .context-menu {
85
+ backdrop-filter: blur(10px);
86
+ background: rgba(26, 26, 46, 0.9);
87
+ border: 1px solid rgba(255, 42, 109, 0.5);
88
+ box-shadow: 0 0 15px rgba(255, 42, 109, 0.3);
89
+ }
90
+
91
+ .context-menu-item:hover {
92
+ background: rgba(255, 42, 109, 0.3);
93
+ }
94
+
95
+ .ghost-window {
96
+ border: 2px dashed rgba(5, 217, 254, 0.7);
97
+ background: rgba(5, 217, 254, 0.1);
98
+ pointer-events: none;
99
+ }
100
+ </style>
101
+ </head>
102
+ <body class="h-screen w-screen text-white font-cyber flex flex-col">
103
+ <!-- Desktop Icons -->
104
+ <div id="desktop" class="flex-1 relative overflow-hidden">
105
+ <!-- Desktop icons will be added here by JavaScript -->
106
+ </div>
107
+
108
+ <!-- Taskbar -->
109
+ <div class="taskbar h-12 flex items-center px-2">
110
+ <button id="start-button" class="h-10 px-3 flex items-center gap-2 hover:bg-cyberpurple hover:bg-opacity-20 rounded transition-all">
111
+ <span class="text-cyberpink font-bold">START</span>
112
+ </button>
113
+ <div id="taskbar-items" class="flex-1 flex items-center gap-1 ml-2">
114
+ <!-- Taskbar items will be added here by JavaScript -->
115
+ </div>
116
+ <div class="text-cyberblue text-sm font-medium px-2">
117
+ <span id="clock">00:00:00</span>
118
+ </div>
119
+ </div>
120
+
121
+ <!-- Windows -->
122
+ <div id="windows-container">
123
+ <!-- Windows will be added here by JavaScript -->
124
+ </div>
125
+
126
+ <!-- Context Menu -->
127
+ <div id="context-menu" class="context-menu absolute hidden w-48 py-1 rounded z-50">
128
+ <div class="context-menu-item px-4 py-2 cursor-pointer hover:text-cyberpink" onclick="openApp('explorer')">Open Explorer</div>
129
+ <div class="context-menu-item px-4 py-2 cursor-pointer hover:text-cyberpink" onclick="openApp('notepad')">New Text File</div>
130
+ <div class="context-menu-item px-4 py-2 cursor-pointer hover:text-cyberpink" onclick="location.reload()">Refresh</div>
131
+ </div>
132
+
133
+ <!-- Ghost Window for Resizing -->
134
+ <div id="ghost-window" class="ghost-window absolute hidden z-40"></div>
135
+
136
+ <script>
137
+ // App definitions
138
+ const apps = [
139
+ {
140
+ id: 'explorer',
141
+ title: 'File Explorer',
142
+ icon: '📁',
143
+ content: `
144
+ <div class="p-4">
145
+ <h3 class="text-cyberpink mb-4">File Explorer</h3>
146
+ <div class="grid grid-cols-4 gap-4">
147
+ <div class="icon p-2 rounded hover:bg-cyberblue hover:bg-opacity-10 cursor-pointer">
148
+ <div class="text-4xl text-center">📁</div>
149
+ <div class="text-center mt-1 text-xs">Documents</div>
150
+ </div>
151
+ <div class="icon p-2 rounded hover:bg-cyberblue hover:bg-opacity-10 cursor-pointer">
152
+ <div class="text-4xl text-center">🎵</div>
153
+ <div class="text-center mt-1 text-xs">Music</div>
154
+ </div>
155
+ <div class="icon p-2 rounded hover:bg-cyberblue hover:bg-opacity-10 cursor-pointer">
156
+ <div class="text-4xl text-center">🖼️</div>
157
+ <div class="text-center mt-1 text-xs">Pictures</div>
158
+ </div>
159
+ <div class="icon p-2 rounded hover:bg-cyberblue hover:bg-opacity-10 cursor-pointer">
160
+ <div class="text-4xl text-center">🎮</div>
161
+ <div class="text-center mt-1 text-xs">Games</div>
162
+ </div>
163
+ </div>
164
+ </div>
165
+ `
166
+ },
167
+ {
168
+ id: 'notepad',
169
+ title: 'Notepad',
170
+ icon: '📝',
171
+ content: `
172
+ <div class="flex flex-col h-full">
173
+ <textarea class="flex-1 bg-transparent p-4 outline-none resize-none" placeholder="Type something..."></textarea>
174
+ </div>
175
+ `
176
+ },
177
+ {
178
+ id: 'calculator',
179
+ title: 'Calculator',
180
+ icon: '🧮',
181
+ content: `
182
+ <div class="p-4">
183
+ <div class="bg-cybergray rounded p-2 mb-4 text-right text-xl h-10" id="calc-display">0</div>
184
+ <div class="grid grid-cols-4 gap-2">
185
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('7')">7</button>
186
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('8')">8</button>
187
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('9')">9</button>
188
+ <button class="calc-btn bg-cyberblue bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('+')">+</button>
189
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('4')">4</button>
190
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('5')">5</button>
191
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('6')">6</button>
192
+ <button class="calc-btn bg-cyberblue bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('-')">-</button>
193
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('1')">1</button>
194
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('2')">2</button>
195
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('3')">3</button>
196
+ <button class="calc-btn bg-cyberblue bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('*')">×</button>
197
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('0')">0</button>
198
+ <button class="calc-btn bg-cyberpink bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('.')">.</button>
199
+ <button class="calc-btn bg-cyberblue bg-opacity-20 hover:bg-opacity-30" onclick="calcClear()">C</button>
200
+ <button class="calc-btn bg-cyberblue bg-opacity-20 hover:bg-opacity-30" onclick="calcInput('/')">÷</button>
201
+ <button class="calc-btn col-span-4 bg-cyberpurple bg-opacity-20 hover:bg-opacity-30" onclick="calcEquals()">=</button>
202
+ </div>
203
+ </div>
204
+ `
205
+ },
206
+ {
207
+ id: 'terminal',
208
+ title: 'Terminal',
209
+ icon: '💻',
210
+ content: `
211
+ <div class="flex flex-col h-full p-2 bg-black bg-opacity-50">
212
+ <div class="flex-1 overflow-y-auto font-mono text-sm" id="terminal-output">
213
+ <div>CyberTerminal v1.0</div>
214
+ <div>Type "help" for available commands</div>
215
+ <div class="terminal-line">&nbsp;</div>
216
+ </div>
217
+ <div class="flex items-center">
218
+ <span class="text-cyberpink mr-2">$</span>
219
+ <input type="text" id="terminal-input" class="flex-1 bg-transparent outline-none" autocomplete="off" onkeydown="handleTerminalInput(event)">
220
+ <span class="terminal-cursor ml-1">█</span>
221
+ </div>
222
+ </div>
223
+ `
224
+ }
225
+ ];
226
+
227
+ // State management
228
+ let activeWindowId = null;
229
+ let zIndexCounter = 1;
230
+ let isDragging = false;
231
+ let isResizing = false;
232
+ let resizeDirection = null;
233
+ let dragOffset = { x: 0, y: 0 };
234
+ let originalWindowSize = { width: 0, height: 0 };
235
+ let originalMousePos = { x: 0, y: 0 };
236
+
237
+ // Initialize the desktop
238
+ function initDesktop() {
239
+ const desktop = document.getElementById('desktop');
240
+
241
+ apps.forEach(app => {
242
+ // Create desktop icon
243
+ const icon = document.createElement('div');
244
+ icon.className = 'icon absolute flex flex-col items-center w-16 p-2 cursor-pointer';
245
+ icon.style.left = `${Math.random() * (window.innerWidth - 100)}px`;
246
+ icon.style.top = `${Math.random() * (window.innerHeight - 150)}px`;
247
+ icon.innerHTML = `
248
+ <div class="text-4xl">${app.icon}</div>
249
+ <div class="text-xs mt-1 text-center">${app.title}</div>
250
+ `;
251
+ icon.onclick = () => openApp(app.id);
252
+ desktop.appendChild(icon);
253
+ });
254
+
255
+ // Update clock every second
256
+ updateClock();
257
+ setInterval(updateClock, 1000);
258
+
259
+ // Setup context menu
260
+ document.addEventListener('contextmenu', (e) => {
261
+ e.preventDefault();
262
+ const contextMenu = document.getElementById('context-menu');
263
+ contextMenu.style.left = `${e.clientX}px`;
264
+ contextMenu.style.top = `${e.clientY}px`;
265
+ contextMenu.classList.remove('hidden');
266
+ });
267
+
268
+ // Close context menu on click elsewhere
269
+ document.addEventListener('click', () => {
270
+ document.getElementById('context-menu').classList.add('hidden');
271
+ });
272
+
273
+ // Setup window dragging and resizing
274
+ setupWindowInteractions();
275
+ }
276
+
277
+ // Open an application window
278
+ function openApp(appId) {
279
+ const app = apps.find(a => a.id === appId);
280
+ if (!app) return;
281
+
282
+ // Check if window already exists
283
+ let windowElement = document.getElementById(`window-${appId}`);
284
+
285
+ if (!windowElement) {
286
+ // Create new window
287
+ windowElement = document.createElement('div');
288
+ windowElement.id = `window-${appId}`;
289
+ windowElement.className = 'window rounded-lg overflow-hidden absolute flex flex-col';
290
+ windowElement.style.width = '400px';
291
+ windowElement.style.height = '300px';
292
+ windowElement.style.left = `${Math.random() * (window.innerWidth - 400)}px`;
293
+ windowElement.style.top = `${Math.random() * (window.innerHeight - 350)}px`;
294
+
295
+ windowElement.innerHTML = `
296
+ <div class="window-header h-8 flex items-center justify-between px-3 cursor-move">
297
+ <div class="flex items-center gap-2">
298
+ <span>${app.icon}</span>
299
+ <span class="font-medium">${app.title}</span>
300
+ </div>
301
+ <div class="flex gap-2">
302
+ <button class="w-4 h-4 rounded-full bg-yellow-500 hover:bg-yellow-400" onclick="minimizeWindow('${appId}')"></button>
303
+ <button class="w-4 h-4 rounded-full bg-green-500 hover:bg-green-400" onclick="maximizeWindow('${appId}')"></button>
304
+ <button class="w-4 h-4 rounded-full bg-red-500 hover:bg-red-400" onclick="closeWindow('${appId}')"></button>
305
+ </div>
306
+ </div>
307
+ <div class="flex-1 overflow-auto">
308
+ ${app.content}
309
+ </div>
310
+ <div class="resize-handle absolute bottom-0 right-0 w-3 h-3 cursor-nwse-resize"></div>
311
+ `;
312
+
313
+ document.getElementById('windows-container').appendChild(windowElement);
314
+
315
+ // Add to taskbar
316
+ addToTaskbar(appId);
317
+ }
318
+
319
+ // Bring to front
320
+ bringToFront(windowElement);
321
+
322
+ // Show window if minimized
323
+ windowElement.classList.remove('hidden');
324
+
325
+ // Update active window
326
+ activeWindowId = appId;
327
+
328
+ // Initialize app-specific functionality
329
+ if (appId === 'terminal') {
330
+ initTerminal();
331
+ }
332
+ }
333
+
334
+ // Close a window
335
+ function closeWindow(appId) {
336
+ const windowElement = document.getElementById(`window-${appId}`);
337
+ if (windowElement) {
338
+ windowElement.remove();
339
+ removeFromTaskbar(appId);
340
+ }
341
+ }
342
+
343
+ // Minimize a window
344
+ function minimizeWindow(appId) {
345
+ const windowElement = document.getElementById(`window-${appId}`);
346
+ if (windowElement) {
347
+ windowElement.classList.add('hidden');
348
+ }
349
+ }
350
+
351
+ // Maximize a window
352
+ function maximizeWindow(appId) {
353
+ const windowElement = document.getElementById(`window-${appId}`);
354
+ if (windowElement) {
355
+ if (windowElement.classList.contains('maximized')) {
356
+ // Restore
357
+ windowElement.classList.remove('maximized');
358
+ windowElement.style.width = originalWindowSize.width + 'px';
359
+ windowElement.style.height = originalWindowSize.height + 'px';
360
+ windowElement.style.left = originalWindowSize.left + 'px';
361
+ windowElement.style.top = originalWindowSize.top + 'px';
362
+ } else {
363
+ // Maximize
364
+ originalWindowSize = {
365
+ width: parseInt(windowElement.style.width),
366
+ height: parseInt(windowElement.style.height),
367
+ left: parseInt(windowElement.style.left),
368
+ top: parseInt(windowElement.style.top)
369
+ };
370
+
371
+ windowElement.classList.add('maximized');
372
+ windowElement.style.width = (window.innerWidth - 20) + 'px';
373
+ windowElement.style.height = (window.innerHeight - 60) + 'px';
374
+ windowElement.style.left = '10px';
375
+ windowElement.style.top = '10px';
376
+ }
377
+ }
378
+ }
379
+
380
+ // Bring window to front
381
+ function bringToFront(windowElement) {
382
+ zIndexCounter++;
383
+ windowElement.style.zIndex = zIndexCounter;
384
+ activeWindowId = windowElement.id.replace('window-', '');
385
+ }
386
+
387
+ // Add window to taskbar
388
+ function addToTaskbar(appId) {
389
+ const app = apps.find(a => a.id === appId);
390
+ if (!app) return;
391
+
392
+ const taskbarItems = document.getElementById('taskbar-items');
393
+ const existingItem = document.getElementById(`taskbar-${appId}`);
394
+
395
+ if (!existingItem) {
396
+ const item = document.createElement('div');
397
+ item.id = `taskbar-${appId}`;
398
+ item.className = 'flex items-center gap-2 px-3 py-1 rounded hover:bg-cyberblue hover:bg-opacity-20 cursor-pointer';
399
+ item.innerHTML = `
400
+ <span>${app.icon}</span>
401
+ <span class="text-sm">${app.title}</span>
402
+ `;
403
+ item.onclick = () => {
404
+ const windowElement = document.getElementById(`window-${appId}`);
405
+ if (windowElement) {
406
+ if (windowElement.classList.contains('hidden')) {
407
+ windowElement.classList.remove('hidden');
408
+ bringToFront(windowElement);
409
+ } else {
410
+ bringToFront(windowElement);
411
+ }
412
+ } else {
413
+ openApp(appId);
414
+ }
415
+ };
416
+ taskbarItems.appendChild(item);
417
+ }
418
+ }
419
+
420
+ // Remove window from taskbar
421
+ function removeFromTaskbar(appId) {
422
+ const item = document.getElementById(`taskbar-${appId}`);
423
+ if (item) {
424
+ item.remove();
425
+ }
426
+ }
427
+
428
+ // Update the clock
429
+ function updateClock() {
430
+ const now = new Date();
431
+ const hours = now.getHours().toString().padStart(2, '0');
432
+ const minutes = now.getMinutes().toString().padStart(2, '0');
433
+ const seconds = now.getSeconds().toString().padStart(2, '0');
434
+ document.getElementById('clock').textContent = `${hours}:${minutes}:${seconds}`;
435
+ }
436
+
437
+ // Setup window interactions (dragging and resizing)
438
+ function setupWindowInteractions() {
439
+ document.addEventListener('mousedown', (e) => {
440
+ // Check if we're clicking on a window header
441
+ const header = e.target.closest('.window-header');
442
+ if (header) {
443
+ const windowElement = header.closest('.window');
444
+ if (windowElement) {
445
+ // Bring to front
446
+ bringToFront(windowElement);
447
+
448
+ // Setup dragging
449
+ isDragging = true;
450
+ dragOffset = {
451
+ x: e.clientX - windowElement.getBoundingClientRect().left,
452
+ y: e.clientY - windowElement.getBoundingClientRect().top
453
+ };
454
+
455
+ // Prevent text selection during drag
456
+ document.body.style.userSelect = 'none';
457
+ }
458
+ }
459
+
460
+ // Check if we're clicking on a resize handle
461
+ const resizeHandle = e.target.closest('.resize-handle');
462
+ if (resizeHandle) {
463
+ const windowElement = resizeHandle.closest('.window');
464
+ if (windowElement) {
465
+ // Bring to front
466
+ bringToFront(windowElement);
467
+
468
+ // Setup resizing
469
+ isResizing = true;
470
+ resizeDirection = 'se'; // southeast by default
471
+ originalWindowSize = {
472
+ width: parseInt(windowElement.style.width),
473
+ height: parseInt(windowElement.style.height)
474
+ };
475
+ originalMousePos = { x: e.clientX, y: e.clientY };
476
+
477
+ // Create ghost window
478
+ const ghostWindow = document.getElementById('ghost-window');
479
+ ghostWindow.style.width = originalWindowSize.width + 'px';
480
+ ghostWindow.style.height = originalWindowSize.height + 'px';
481
+ ghostWindow.style.left = windowElement.style.left;
482
+ ghostWindow.style.top = windowElement.style.top;
483
+ ghostWindow.classList.remove('hidden');
484
+
485
+ // Prevent text selection during resize
486
+ document.body.style.userSelect = 'none';
487
+ }
488
+ }
489
+ });
490
+
491
+ document.addEventListener('mousemove', (e) => {
492
+ if (isDragging) {
493
+ const windowElement = document.getElementById(`window-${activeWindowId}`);
494
+ if (windowElement) {
495
+ let newLeft = e.clientX - dragOffset.x;
496
+ let newTop = e.clientY - dragOffset.y;
497
+
498
+ // Constrain to viewport
499
+ newLeft = Math.max(0, Math.min(newLeft, window.innerWidth - windowElement.offsetWidth));
500
+ newTop = Math.max(0, Math.min(newTop, window.innerHeight - windowElement.offsetHeight));
501
+
502
+ windowElement.style.left = `${newLeft}px`;
503
+ windowElement.style.top = `${newTop}px`;
504
+ }
505
+ }
506
+
507
+ if (isResizing) {
508
+ const windowElement = document.getElementById(`window-${activeWindowId}`);
509
+ if (windowElement) {
510
+ const ghostWindow = document.getElementById('ghost-window');
511
+
512
+ const deltaX = e.clientX - originalMousePos.x;
513
+ const deltaY = e.clientY - originalMousePos.y;
514
+
515
+ let newWidth = originalWindowSize.width;
516
+ let newHeight = originalWindowSize.height;
517
+
518
+ if (resizeDirection.includes('e')) {
519
+ newWidth = Math.max(150, originalWindowSize.width + deltaX);
520
+ }
521
+ if (resizeDirection.includes('s')) {
522
+ newHeight = Math.max(100, originalWindowSize.height + deltaY);
523
+ }
524
+
525
+ ghostWindow.style.width = `${newWidth}px`;
526
+ ghostWindow.style.height = `${newHeight}px`;
527
+ }
528
+ }
529
+ });
530
+
531
+ document.addEventListener('mouseup', () => {
532
+ if (isDragging) {
533
+ isDragging = false;
534
+ document.body.style.userSelect = '';
535
+ }
536
+
537
+ if (isResizing) {
538
+ isResizing = false;
539
+ document.body.style.userSelect = '';
540
+
541
+ const windowElement = document.getElementById(`window-${activeWindowId}`);
542
+ const ghostWindow = document.getElementById('ghost-window');
543
+
544
+ if (windowElement && ghostWindow) {
545
+ windowElement.style.width = ghostWindow.style.width;
546
+ windowElement.style.height = ghostWindow.style.height;
547
+ }
548
+
549
+ ghostWindow.classList.add('hidden');
550
+ }
551
+ });
552
+ }
553
+
554
+ // Calculator functions
555
+ function calcInput(value) {
556
+ const display = document.getElementById('calc-display');
557
+ if (display.textContent === '0' && value !== '.') {
558
+ display.textContent = value;
559
+ } else {
560
+ display.textContent += value;
561
+ }
562
+ }
563
+
564
+ function calcClear() {
565
+ document.getElementById('calc-display').textContent = '0';
566
+ }
567
+
568
+ function calcEquals() {
569
+ const display = document.getElementById('calc-display');
570
+ try {
571
+ // Replace × with * and ÷ with / for eval
572
+ const expression = display.textContent.replace(/×/g, '*').replace(/÷/g, '/');
573
+ display.textContent = eval(expression).toString();
574
+ } catch (e) {
575
+ display.textContent = 'Error';
576
+ }
577
+ }
578
+
579
+ // Terminal functions
580
+ function initTerminal() {
581
+ // Clear terminal input
582
+ const terminalInput = document.getElementById('terminal-input');
583
+ if (terminalInput) {
584
+ terminalInput.value = '';
585
+ terminalInput.focus();
586
+ }
587
+ }
588
+
589
+ function handleTerminalInput(e) {
590
+ if (e.key === 'Enter') {
591
+ const input = document.getElementById('terminal-input');
592
+ const command = input.value.trim();
593
+ input.value = '';
594
+
595
+ processTerminalCommand(command);
596
+ }
597
+ }
598
+
599
+ function processTerminalCommand(command) {
600
+ const output = document.getElementById('terminal-output');
601
+
602
+ // Add the command to output
603
+ const commandLine = document.createElement('div');
604
+ commandLine.innerHTML = `<span class="text-cyberpink">$</span> ${command}`;
605
+ output.appendChild(commandLine);
606
+
607
+ // Process command
608
+ let response = '';
609
+ switch (command.toLowerCase()) {
610
+ case 'help':
611
+ response = `
612
+ Available commands:<br>
613
+ - help: Show this help<br>
614
+ - clear: Clear terminal<br>
615
+ - about: Show system info<br>
616
+ - hack: Initiate hacking sequence (just kidding)<br>
617
+ `;
618
+ break;
619
+ case 'clear':
620
+ output.innerHTML = '';
621
+ output.appendChild(document.createElement('div'));
622
+ return;
623
+ case 'about':
624
+ response = `
625
+ CyberTerminal v1.0<br>
626
+ Running on CyberpunkDesktop<br>
627
+ System status: <span class="text-cyberblue">OPERATIONAL</span>
628
+ `;
629
+ break;
630
+ case 'hack':
631
+ response = `
632
+ <span class="text-cyberpink">INITIATING HACKING SEQUENCE...</span><br>
633
+ Accessing mainframe...<br>
634
+ Bypassing firewalls...<br>
635
+ <span class="text-cyberblue">ERROR: Not a real terminal</span><br>
636
+ Just kidding! This is a simulation.
637
+ `;
638
+ break;
639
+ case '':
640
+ response = '';
641
+ break;
642
+ default:
643
+ response = `<span class="text-cyberpink">Command not found: ${command}</span>`;
644
+ }
645
+
646
+ const responseLine = document.createElement('div');
647
+ responseLine.innerHTML = response;
648
+ output.appendChild(responseLine);
649
+
650
+ // Add empty line
651
+ output.appendChild(document.createElement('div'));
652
+
653
+ // Scroll to bottom
654
+ output.scrollTop = output.scrollHeight;
655
+ }
656
+
657
+ // Initialize when DOM is loaded
658
+ document.addEventListener('DOMContentLoaded', initDesktop);
659
+ </script>
660
+ <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=Boobs00/windy" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
661
+ </html>
prompts.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ Hey DeepSite, let’s rock this—generate me a full‑stack, static HTML Hugging Face Space named “CyberpunkDesktop,” using the **static HTML SDK** so it’s pure, lightweight, and instantly deployable. **1. Describe It** - **SDK & Config**: In `README.md`, set `sdk: static` and declare metadata (`title: CyberpunkDesktop`, `emoji: 💻`, `colorFrom: indigo`). - **Folder Structure**: Create `/index.html`, `/styles.css`, `/script.js`, and `/assets/` (for images/icons). **2. Generate The Code** - **Layout & Styling**: Build a full‑screen neon grid desktop with draggable icons (File Explorer, Notepad, Calculator, Chrome, Terminal). Use Tailwind CSS plus custom neon/glassmorphism for taskbar, start button, and icon hovers. - **Interactive Windows**: Hidden by default; pop open with smooth fade‑in. Headers allow **drag‑and‑drop** repositioning (z‑index bump). Include standard controls (minimize, maximize, close) with neon outlines. - **Resizing Handles**: Add eight handles (corners + sides) enforcing a minimum size of 150×100px. - **Ghost Preview**: During resize, show a dashed, semi‑transparent overlay that follows the cursor—commit changes on mouse‑up. - **Context & Apps**: Right‑click on desktop for a context menu (Refresh, Open Explorer, New Text File). Implement interactive Calculator (basic arithmetic) and Terminal (commands: help, clear, about, hack). **3. Preview & Refine** - **Inline Comments**: Sprinkle cheeky, rebellious comments to guide future devs and reinforce brand voice. - **Modularity**: Keep HTML for structure, CSS (Tailwind + custom) for style, JS for behavior. No external libraries unless absolutely necessary. - **Deploy‑Ready**: Ensure the Space runs out‑of‑the‑box on Hugging Face with zero additional setup. Drop in three files (`index.html`, `styles.css`, `script.js`) plus an `assets/` folder—deliver a cyberpunk masterpiece that breaks the mold and owns the digital frontier!