S-Dreamer commited on
Commit
2cb178d
·
verified ·
1 Parent(s): 6dbf71d

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +941 -19
  3. prompts.txt +0 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Module Builder
3
- emoji: 🐠
4
- colorFrom: red
5
- colorTo: yellow
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: module-builder
3
+ emoji: 🐳
4
+ colorFrom: pink
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,941 @@
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>Viper C2 Module Builder</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
+ <script>
10
+ tailwind.config = {
11
+ theme: {
12
+ extend: {
13
+ colors: {
14
+ viper: {
15
+ primary: '#dc2626',
16
+ secondary: '#1e293b',
17
+ accent: '#7c3aed',
18
+ dark: '#0f172a',
19
+ light: '#f8fafc'
20
+ }
21
+ },
22
+ animation: {
23
+ 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
24
+ 'spin-slow': 'spin 2s linear infinite'
25
+ }
26
+ }
27
+ }
28
+ }
29
+ </script>
30
+ <style>
31
+ @keyframes float {
32
+ 0%, 100% { transform: translateY(0); }
33
+ 50% { transform: translateY(-5px); }
34
+ }
35
+ .float-animation {
36
+ animation: float 3s ease-in-out infinite;
37
+ }
38
+ .sidebar {
39
+ transition: all 0.3s ease;
40
+ box-shadow: 4px 0 6px -1px rgba(0, 0, 0, 0.1);
41
+ }
42
+ .sidebar.collapsed {
43
+ width: 70px;
44
+ }
45
+ .sidebar.collapsed .sidebar-text,
46
+ .sidebar.collapsed .logo-text,
47
+ .sidebar.collapsed .quick-actions-title {
48
+ display: none;
49
+ }
50
+ .sidebar.collapsed .nav-item {
51
+ justify-content: center;
52
+ }
53
+ .main-content {
54
+ transition: all 0.3s ease;
55
+ }
56
+ .main-content.expanded {
57
+ margin-left: 70px;
58
+ }
59
+ .json-viewer {
60
+ font-family: 'Fira Code', monospace;
61
+ white-space: pre;
62
+ background-color: #0f172a;
63
+ color: #e2e8f0;
64
+ padding: 1rem;
65
+ border-radius: 0.5rem;
66
+ max-height: 300px;
67
+ overflow-y: auto;
68
+ border: 1px solid #1e293b;
69
+ font-size: 0.875rem;
70
+ line-height: 1.5;
71
+ }
72
+ .status-valid {
73
+ background-color: #10b981;
74
+ }
75
+ .status-invalid {
76
+ background-color: #ef4444;
77
+ }
78
+ .status-deployed {
79
+ background-color: #3b82f6;
80
+ }
81
+ .status-pending {
82
+ background-color: #f59e0b;
83
+ }
84
+ .module-card:hover {
85
+ transform: translateY(-2px);
86
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
87
+ }
88
+ .notification-badge {
89
+ position: absolute;
90
+ top: -0.25rem;
91
+ right: -0.25rem;
92
+ width: 1.25rem;
93
+ height: 1.25rem;
94
+ border-radius: 50%;
95
+ background-color: #dc2626;
96
+ color: white;
97
+ font-size: 0.75rem;
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ }
102
+ .dropdown-menu {
103
+ opacity: 0;
104
+ visibility: hidden;
105
+ transform: translateY(-10px);
106
+ transition: all 0.3s ease;
107
+ }
108
+ .dropdown-menu.active {
109
+ opacity: 1;
110
+ visibility: visible;
111
+ transform: translateY(0);
112
+ }
113
+ .nav-item.active {
114
+ background-color: #1e293b;
115
+ border-left: 3px solid #dc2626;
116
+ }
117
+ .search-input:focus + .search-icon {
118
+ color: #dc2626;
119
+ }
120
+ .terminal {
121
+ background-color: #0f172a;
122
+ color: #e2e8f0;
123
+ font-family: 'Fira Code', monospace;
124
+ border-radius: 0.5rem;
125
+ padding: 1rem;
126
+ height: 300px;
127
+ overflow-y: auto;
128
+ }
129
+ .terminal-line {
130
+ margin-bottom: 0.5rem;
131
+ line-height: 1.5;
132
+ }
133
+ .terminal-prompt {
134
+ color: #10b981;
135
+ }
136
+ .terminal-command {
137
+ color: #60a5fa;
138
+ }
139
+ .terminal-output {
140
+ color: #e2e8f0;
141
+ }
142
+ .terminal-error {
143
+ color: #ef4444;
144
+ }
145
+ .glow-effect {
146
+ box-shadow: 0 0 10px rgba(220, 38, 38, 0.5);
147
+ }
148
+ @media (max-width: 768px) {
149
+ .sidebar {
150
+ position: absolute;
151
+ z-index: 50;
152
+ height: 100%;
153
+ }
154
+ .sidebar.collapsed {
155
+ transform: translateX(-100%);
156
+ }
157
+ .main-content.expanded {
158
+ margin-left: 0;
159
+ }
160
+ }
161
+ </style>
162
+ </head>
163
+ <body class="bg-viper-light">
164
+ <div class="flex h-screen overflow-hidden">
165
+ <!-- Sidebar -->
166
+ <div id="sidebar" class="sidebar bg-viper-dark text-white w-64 flex flex-col z-10">
167
+ <div class="p-4 flex items-center space-x-2 border-b border-gray-700">
168
+ <div class="relative">
169
+ <i class="fas fa-bug text-viper-primary text-2xl float-animation"></i>
170
+ <div class="absolute -bottom-1 -right-1 w-3 h-3 bg-green-500 rounded-full border-2 border-viper-dark"></div>
171
+ </div>
172
+ <span class="logo-text text-xl font-bold bg-gradient-to-r from-viper-primary to-viper-accent bg-clip-text text-transparent">Viper C2</span>
173
+ </div>
174
+ <div class="flex-1 overflow-y-auto">
175
+ <nav class="p-4 space-y-1">
176
+ <a href="#" class="nav-item flex items-center space-x-3 p-3 rounded hover:bg-gray-700 active">
177
+ <i class="fas fa-tachometer-alt text-gray-300"></i>
178
+ <span class="sidebar-text font-medium">Dashboard</span>
179
+ </a>
180
+ <a href="#" class="nav-item flex items-center space-x-3 p-3 rounded hover:bg-gray-700">
181
+ <i class="fas fa-plus-circle text-gray-300"></i>
182
+ <span class="sidebar-text font-medium">Create Module</span>
183
+ </a>
184
+ <a href="#" class="nav-item flex items-center space-x-3 p-3 rounded hover:bg-gray-700">
185
+ <i class="fas fa-rocket text-gray-300"></i>
186
+ <span class="sidebar-text font-medium">Deployments</span>
187
+ <span class="ml-auto bg-viper-primary text-xs px-2 py-1 rounded-full">3</span>
188
+ </a>
189
+ <a href="#" class="nav-item flex items-center space-x-3 p-3 rounded hover:bg-gray-700">
190
+ <i class="fas fa-history text-gray-300"></i>
191
+ <span class="sidebar-text font-medium">Execution History</span>
192
+ </a>
193
+ <a href="#" class="nav-item flex items-center space-x-3 p-3 rounded hover:bg-gray-700">
194
+ <i class="fas fa-server text-gray-300"></i>
195
+ <span class="sidebar-text font-medium">Listeners</span>
196
+ </a>
197
+ <a href="#" class="nav-item flex items-center space-x-3 p-3 rounded hover:bg-gray-700">
198
+ <i class="fas fa-cog text-gray-300"></i>
199
+ <span class="sidebar-text font-medium">Settings</span>
200
+ </a>
201
+ </nav>
202
+ <div class="p-4 border-t border-gray-700">
203
+ <h3 class="quick-actions-title text-xs uppercase font-semibold text-gray-400 mb-2">Quick Actions</h3>
204
+ <div class="space-y-2">
205
+ <button onclick="showCreateModuleModal()" class="w-full flex items-center space-x-3 p-2 rounded hover:bg-gray-700 text-sm transition-all duration-200 hover:translate-x-1">
206
+ <i class="fas fa-plus text-green-400"></i>
207
+ <span class="sidebar-text">New Module</span>
208
+ </button>
209
+ <button onclick="showTestModuleModal()" class="w-full flex items-center space-x-3 p-2 rounded hover:bg-gray-700 text-sm transition-all duration-200 hover:translate-x-1">
210
+ <i class="fas fa-play text-blue-400"></i>
211
+ <span class="sidebar-text">Test Module</span>
212
+ </button>
213
+ <button onclick="showDeployModal()" class="w-full flex items-center space-x-3 p-2 rounded hover:bg-gray-700 text-sm transition-all duration-200 hover:translate-x-1">
214
+ <i class="fas fa-paper-plane text-purple-400"></i>
215
+ <span class="sidebar-text">Quick Deploy</span>
216
+ </button>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ <div class="p-4 border-t border-gray-700 flex items-center justify-between">
221
+ <div class="flex items-center space-x-3">
222
+ <div class="relative">
223
+ <div class="w-8 h-8 rounded-full bg-gradient-to-br from-viper-primary to-viper-accent flex items-center justify-center">
224
+ <span class="text-white font-bold text-xs">AD</span>
225
+ </div>
226
+ <div class="absolute bottom-0 right-0 w-3 h-3 bg-green-500 rounded-full border-2 border-viper-dark"></div>
227
+ </div>
228
+ <div class="sidebar-text">
229
+ <div class="font-medium">Admin User</div>
230
+ <div class="text-xs text-gray-400">admin@viper.local</div>
231
+ </div>
232
+ </div>
233
+ <button onclick="toggleSidebar()" class="text-gray-400 hover:text-white transition-transform hover:rotate-180 duration-300">
234
+ <i class="fas fa-chevron-left"></i>
235
+ </button>
236
+ </div>
237
+ </div>
238
+
239
+ <!-- Main Content -->
240
+ <div id="main-content" class="main-content flex-1 overflow-auto bg-gray-50">
241
+ <!-- Top Navigation -->
242
+ <header class="bg-white shadow-sm sticky top-0 z-10">
243
+ <div class="px-4 py-3 flex items-center justify-between">
244
+ <div class="flex items-center space-x-4">
245
+ <button onclick="toggleSidebar()" class="text-gray-600 hover:text-gray-900 md:hidden">
246
+ <i class="fas fa-bars"></i>
247
+ </button>
248
+ <h1 class="text-xl font-semibold text-gray-800 flex items-center">
249
+ <span>Module Builder</span>
250
+ <span class="ml-2 text-xs bg-viper-primary text-white px-2 py-1 rounded-full">BETA</span>
251
+ </h1>
252
+ </div>
253
+ <div class="flex items-center space-x-4">
254
+ <div class="relative hidden md:block">
255
+ <input type="text" placeholder="Search modules..." class="search-input pl-10 pr-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-viper-primary w-64 transition-all duration-300">
256
+ <i class="fas fa-search search-icon absolute left-3 top-3 text-gray-400 transition-colors duration-300"></i>
257
+ </div>
258
+ <div class="relative">
259
+ <button id="notification-btn" class="p-2 text-gray-600 hover:text-gray-900 relative">
260
+ <i class="fas fa-bell"></i>
261
+ <div class="notification-badge">3</div>
262
+ </button>
263
+ <div id="notification-dropdown" class="dropdown-menu absolute right-0 mt-2 w-72 bg-white rounded-md shadow-lg py-1 z-20 border border-gray-200">
264
+ <div class="px-4 py-2 border-b border-gray-200">
265
+ <h3 class="text-sm font-medium text-gray-800">Notifications</h3>
266
+ </div>
267
+ <div class="max-h-60 overflow-y-auto">
268
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 border-b border-gray-100">
269
+ <div class="flex items-center">
270
+ <div class="flex-shrink-0">
271
+ <i class="fas fa-check-circle text-green-500 mr-2"></i>
272
+ </div>
273
+ <div>
274
+ <p class="font-medium">Module validated</p>
275
+ <p class="text-xs text-gray-500">New module "persistence" is ready</p>
276
+ </div>
277
+ </div>
278
+ </a>
279
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 border-b border-gray-100">
280
+ <div class="flex items-center">
281
+ <div class="flex-shrink-0">
282
+ <i class="fas fa-exclamation-triangle text-yellow-500 mr-2"></i>
283
+ </div>
284
+ <div>
285
+ <p class="font-medium">Deployment warning</p>
286
+ <p class="text-xs text-gray-500">Listener "aws-east" has low uptime</p>
287
+ </div>
288
+ </div>
289
+ </a>
290
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
291
+ <div class="flex items-center">
292
+ <div class="flex-shrink-0">
293
+ <i class="fas fa-server text-blue-500 mr-2"></i>
294
+ </div>
295
+ <div>
296
+ <p class="font-medium">New agent connected</p>
297
+ <p class="text-xs text-gray-500">Agent "win10-prod" is now active</p>
298
+ </div>
299
+ </div>
300
+ </a>
301
+ </div>
302
+ <div class="px-4 py-2 border-t border-gray-200 text-center">
303
+ <a href="#" class="text-xs font-medium text-viper-primary hover:text-viper-accent">View all notifications</a>
304
+ </div>
305
+ </div>
306
+ </div>
307
+ <div class="relative">
308
+ <button id="user-menu-btn" class="flex items-center space-x-2 focus:outline-none">
309
+ <div class="w-8 h-8 rounded-full bg-gradient-to-br from-viper-primary to-viper-accent flex items-center justify-center">
310
+ <span class="text-white font-bold text-xs">AD</span>
311
+ </div>
312
+ <span class="hidden md:inline text-sm font-medium text-gray-700">Admin</span>
313
+ <i class="fas fa-chevron-down hidden md:inline text-xs text-gray-500"></i>
314
+ </button>
315
+ <div id="user-menu-dropdown" class="dropdown-menu absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1 z-20 border border-gray-200">
316
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Your Profile</a>
317
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Settings</a>
318
+ <div class="border-t border-gray-200"></div>
319
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Sign out</a>
320
+ </div>
321
+ </div>
322
+ </div>
323
+ </div>
324
+ </header>
325
+
326
+ <!-- Content -->
327
+ <main class="p-6">
328
+ <!-- Dashboard Overview -->
329
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6">
330
+ <div class="bg-white rounded-lg shadow p-6 flex items-center">
331
+ <div class="p-3 rounded-full bg-green-100 text-green-600 mr-4">
332
+ <i class="fas fa-check-circle text-xl"></i>
333
+ </div>
334
+ <div>
335
+ <p class="text-sm text-gray-500">Valid Modules</p>
336
+ <p class="text-2xl font-bold">24</p>
337
+ </div>
338
+ </div>
339
+ <div class="bg-white rounded-lg shadow p-6 flex items-center">
340
+ <div class="p-3 rounded-full bg-blue-100 text-blue-600 mr-4">
341
+ <i class="fas fa-rocket text-xl"></i>
342
+ </div>
343
+ <div>
344
+ <p class="text-sm text-gray-500">Active Deployments</p>
345
+ <p class="text-2xl font-bold">8</p>
346
+ </div>
347
+ </div>
348
+ <div class="bg-white rounded-lg shadow p-6 flex items-center">
349
+ <div class="p-3 rounded-full bg-yellow-100 text-yellow-600 mr-4">
350
+ <i class="fas fa-exclamation-triangle text-xl"></i>
351
+ </div>
352
+ <div>
353
+ <p class="text-sm text-gray-500">Pending Tests</p>
354
+ <p class="text-2xl font-bold">3</p>
355
+ </div>
356
+ </div>
357
+ <div class="bg-white rounded-lg shadow p-6 flex items-center">
358
+ <div class="p-3 rounded-full bg-purple-100 text-purple-600 mr-4">
359
+ <i class="fas fa-server text-xl"></i>
360
+ </div>
361
+ <div>
362
+ <p class="text-sm text-gray-500">Active Listeners</p>
363
+ <p class="text-2xl font-bold">5</p>
364
+ </div>
365
+ </div>
366
+ </div>
367
+
368
+ <!-- Recent Modules -->
369
+ <div class="bg-white rounded-lg shadow overflow-hidden mb-6">
370
+ <div class="px-6 py-4 border-b border-gray-200 flex items-center justify-between">
371
+ <h2 class="text-lg font-semibold text-gray-800">Recent Modules</h2>
372
+ <button onclick="showCreateModuleModal()" class="text-sm bg-viper-primary text-white px-4 py-2 rounded-md hover:bg-red-700 transition-colors flex items-center">
373
+ <i class="fas fa-plus mr-2"></i> New Module
374
+ </button>
375
+ </div>
376
+ <div class="divide-y divide-gray-200">
377
+ <div class="grid grid-cols-12 gap-4 p-6 hover:bg-gray-50 transition-colors module-card">
378
+ <div class="col-span-12 md:col-span-6 lg:col-span-4 flex items-center">
379
+ <div class="p-2 rounded-full bg-blue-100 text-blue-600 mr-4">
380
+ <i class="fas fa-network-wired"></i>
381
+ </div>
382
+ <div>
383
+ <p class="font-medium">Network Scanner</p>
384
+ <p class="text-sm text-gray-500">v1.2.0</p>
385
+ </div>
386
+ </div>
387
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
388
+ <p class="text-sm text-gray-500">Type</p>
389
+ <p class="font-medium">Recon</p>
390
+ </div>
391
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
392
+ <p class="text-sm text-gray-500">Status</p>
393
+ <span class="px-2 py-1 text-xs rounded-full bg-green-100 text-green-800">Validated</span>
394
+ </div>
395
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
396
+ <p class="text-sm text-gray-500">Last Modified</p>
397
+ <p class="font-medium">2 hours ago</p>
398
+ </div>
399
+ <div class="col-span-6 md:col-span-3 lg:col-span-2 flex items-center justify-end space-x-2">
400
+ <button class="p-2 text-gray-400 hover:text-viper-primary rounded-full hover:bg-gray-100">
401
+ <i class="fas fa-play"></i>
402
+ </button>
403
+ <button class="p-2 text-gray-400 hover:text-blue-500 rounded-full hover:bg-gray-100">
404
+ <i class="fas fa-edit"></i>
405
+ </button>
406
+ <button class="p-2 text-gray-400 hover:text-red-500 rounded-full hover:bg-gray-100">
407
+ <i class="fas fa-trash"></i>
408
+ </button>
409
+ </div>
410
+ </div>
411
+ <div class="grid grid-cols-12 gap-4 p-6 hover:bg-gray-50 transition-colors module-card">
412
+ <div class="col-span-12 md:col-span-6 lg:col-span-4 flex items-center">
413
+ <div class="p-2 rounded-full bg-purple-100 text-purple-600 mr-4">
414
+ <i class="fas fa-user-secret"></i>
415
+ </div>
416
+ <div>
417
+ <p class="font-medium">Credential Dumper</p>
418
+ <p class="text-sm text-gray-500">v2.1.3</p>
419
+ </div>
420
+ </div>
421
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
422
+ <p class="text-sm text-gray-500">Type</p>
423
+ <p class="font-medium">Post-Exploit</p>
424
+ </div>
425
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
426
+ <p class="text-sm text-gray-500">Status</p>
427
+ <span class="px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800">Deployed</span>
428
+ </div>
429
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
430
+ <p class="text-sm text-gray-500">Last Modified</p>
431
+ <p class="font-medium">1 day ago</p>
432
+ </div>
433
+ <div class="col-span-6 md:col-span-3 lg:col-span-2 flex items-center justify-end space-x-2">
434
+ <button class="p-2 text-gray-400 hover:text-viper-primary rounded-full hover:bg-gray-100">
435
+ <i class="fas fa-play"></i>
436
+ </button>
437
+ <button class="p-2 text-gray-400 hover:text-blue-500 rounded-full hover:bg-gray-100">
438
+ <i class="fas fa-edit"></i>
439
+ </button>
440
+ <button class="p-2 text-gray-400 hover:text-red-500 rounded-full hover:bg-gray-100">
441
+ <i class="fas fa-trash"></i>
442
+ </button>
443
+ </div>
444
+ </div>
445
+ <div class="grid grid-cols-12 gap-4 p-6 hover:bg-gray-50 transition-colors module-card">
446
+ <div class="col-span-12 md:col-span-6 lg:col-span-4 flex items-center">
447
+ <div class="p-2 rounded-full bg-red-100 text-red-600 mr-4">
448
+ <i class="fas fa-lock"></i>
449
+ </div>
450
+ <div>
451
+ <p class="font-medium">Persistence</p>
452
+ <p class="text-sm text-gray-500">v1.0.0</p>
453
+ </div>
454
+ </div>
455
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
456
+ <p class="text-sm text-gray-500">Type</p>
457
+ <p class="font-medium">Privilege</p>
458
+ </div>
459
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
460
+ <p class="text-sm text-gray-500">Status</p>
461
+ <span class="px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800">Testing</span>
462
+ </div>
463
+ <div class="col-span-6 md:col-span-3 lg:col-span-2">
464
+ <p class="text-sm text-gray-500">Last Modified</p>
465
+ <p class="font-medium">3 days ago</p>
466
+ </div>
467
+ <div class="col-span-6 md:col-span-3 lg:col-span-2 flex items-center justify-end space-x-2">
468
+ <button class="p-2 text-gray-400 hover:text-viper-primary rounded-full hover:bg-gray-100">
469
+ <i class="fas fa-play"></i>
470
+ </button>
471
+ <button class="p-2 text-gray-400 hover:text-blue-500 rounded-full hover:bg-gray-100">
472
+ <i class="fas fa-edit"></i>
473
+ </button>
474
+ <button class="p-2 text-gray-400 hover:text-red-500 rounded-full hover:bg-gray-100">
475
+ <i class="fas fa-trash"></i>
476
+ </button>
477
+ </div>
478
+ </div>
479
+ </div>
480
+ <div class="px-6 py-3 border-t border-gray-200 text-center">
481
+ <a href="#" class="text-sm font-medium text-viper-primary hover:text-viper-accent">View all modules</a>
482
+ </div>
483
+ </div>
484
+
485
+ <!-- Recent Activity and Terminal -->
486
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
487
+ <!-- Recent Activity -->
488
+ <div class="bg-white rounded-lg shadow overflow-hidden">
489
+ <div class="px-6 py-4 border-b border-gray-200">
490
+ <h2 class="text-lg font-semibold text-gray-800">Recent Activity</h2>
491
+ </div>
492
+ <div class="divide-y divide-gray-200">
493
+ <div class="p-4 flex items-start">
494
+ <div class="flex-shrink-0">
495
+ <div class="p-2 rounded-full bg-green-100 text-green-600">
496
+ <i class="fas fa-check"></i>
497
+ </div>
498
+ </div>
499
+ <div class="ml-3">
500
+ <p class="text-sm font-medium text-gray-900">Module validation complete</p>
501
+ <p class="text-sm text-gray-500">"Network Scanner" passed all tests</p>
502
+ <p class="text-xs text-gray-400 mt-1">10 minutes ago</p>
503
+ </div>
504
+ </div>
505
+ <div class="p-4 flex items-start">
506
+ <div class="flex-shrink-0">
507
+ <div class="p-2 rounded-full bg-blue-100 text-blue-600">
508
+ <i class="fas fa-rocket"></i>
509
+ </div>
510
+ </div>
511
+ <div class="ml-3">
512
+ <p class="text-sm font-medium text-gray-900">New deployment</p>
513
+ <p class="text-sm text-gray-500">"Credential Dumper" deployed to 3 agents</p>
514
+ <p class="text-xs text-gray-400 mt-1">2 hours ago</p>
515
+ </div>
516
+ </div>
517
+ <div class="p-4 flex items-start">
518
+ <div class="flex-shrink-0">
519
+ <div class="p-2 rounded-full bg-yellow-100 text-yellow-600">
520
+ <i class="fas fa-exclamation-triangle"></i>
521
+ </div>
522
+ </div>
523
+ <div class="ml-3">
524
+ <p class="text-sm font-medium text-gray-900">Test warning</p>
525
+ <p class="text-sm text-gray-500">"Persistence" module has compatibility issues</p>
526
+ <p class="text-xs text-gray-400 mt-1">1 day ago</p>
527
+ </div>
528
+ </div>
529
+ <div class="p-4 flex items-start">
530
+ <div class="flex-shrink-0">
531
+ <div class="p-2 rounded-full bg-purple-100 text-purple-600">
532
+ <i class="fas fa-server"></i>
533
+ </div>
534
+ </div>
535
+ <div class="ml-3">
536
+ <p class="text-sm font-medium text-gray-900">New agent connected</p>
537
+ <p class="text-sm text-gray-500">Agent "win10-dev" from 192.168.1.45</p>
538
+ <p class="text-xs text-gray-400 mt-1">2 days ago</p>
539
+ </div>
540
+ </div>
541
+ </div>
542
+ </div>
543
+
544
+ <!-- Terminal Output -->
545
+ <div class="bg-white rounded-lg shadow overflow-hidden">
546
+ <div class="px-6 py-4 border-b border-gray-200 flex items-center justify-between">
547
+ <h2 class="text-lg font-semibold text-gray-800">Terminal</h2>
548
+ <div class="flex space-x-2">
549
+ <button class="p-1 text-gray-400 hover:text-green-500">
550
+ <i class="fas fa-play"></i>
551
+ </button>
552
+ <button class="p-1 text-gray-400 hover:text-red-500">
553
+ <i class="fas fa-stop"></i>
554
+ </button>
555
+ <button class="p-1 text-gray-400 hover:text-blue-500">
556
+ <i class="fas fa-redo"></i>
557
+ </button>
558
+ </div>
559
+ </div>
560
+ <div class="terminal">
561
+ <div class="terminal-line">
562
+ <span class="terminal-prompt">$</span> <span class="terminal-command">viper --validate persistence</span>
563
+ </div>
564
+ <div class="terminal-line terminal-output">
565
+ Starting validation for module: persistence
566
+ </div>
567
+ <div class="terminal-line terminal-output">
568
+ [✓] Syntax check passed
569
+ </div>
570
+ <div class="terminal-line terminal-output">
571
+ [✓] Dependencies verified
572
+ </div>
573
+ <div class="terminal-line terminal-output">
574
+ [✓] Security checks completed
575
+ </div>
576
+ <div class="terminal-line terminal-output">
577
+ [✓] Test environment initialized
578
+ </div>
579
+ <div class="terminal-line terminal-output">
580
+ Running functional tests...
581
+ </div>
582
+ <div class="terminal-line terminal-output">
583
+ [✓] Test 1: Registry key creation
584
+ </div>
585
+ <div class="terminal-line terminal-output">
586
+ [✓] Test 2: Scheduled task setup
587
+ </div>
588
+ <div class="terminal-line terminal-output">
589
+ [!] Warning: Test 3: Service creation - requires admin
590
+ </div>
591
+ <div class="terminal-line terminal-output">
592
+ Validation complete: 2/3 tests passed
593
+ </div>
594
+ <div class="terminal-line">
595
+ <span class="terminal-prompt">$</span> <span class="terminal-command">_</span>
596
+ </div>
597
+ </div>
598
+ </div>
599
+ </div>
600
+ </main>
601
+ </div>
602
+ </div>
603
+
604
+ <!-- Create Module Modal -->
605
+ <div id="create-module-modal" class="fixed inset-0 z-50 hidden overflow-y-auto">
606
+ <div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
607
+ <div class="fixed inset-0 transition-opacity" aria-hidden="true">
608
+ <div class="absolute inset-0 bg-gray-500 opacity-75"></div>
609
+ </div>
610
+ <span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span>
611
+ <div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full">
612
+ <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
613
+ <div class="sm:flex sm:items-start">
614
+ <div class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-viper-primary sm:mx-0 sm:h-10 sm:w-10">
615
+ <i class="fas fa-plus text-white"></i>
616
+ </div>
617
+ <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
618
+ <h3 class="text-lg leading-6 font-medium text-gray-900">Create New Module</h3>
619
+ <div class="mt-2">
620
+ <p class="text-sm text-gray-500">Fill in the details below to create a new C2 module.</p>
621
+ </div>
622
+ </div>
623
+ </div>
624
+ <div class="mt-6 grid grid-cols-1 gap-y-6 gap-x-4 sm:grid-cols-6">
625
+ <div class="sm:col-span-3">
626
+ <label for="module-name" class="block text-sm font-medium text-gray-700">Module Name</label>
627
+ <input type="text" name="module-name" id="module-name" class="mt-1 focus:ring-viper-primary focus:border-viper-primary block w-full shadow-sm sm:text-sm border-gray-300 rounded-md">
628
+ </div>
629
+ <div class="sm:col-span-3">
630
+ <label for="module-type" class="block text-sm font-medium text-gray-700">Module Type</label>
631
+ <select id="module-type" name="module-type" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-viper-primary focus:border-viper-primary sm:text-sm">
632
+ <option>Reconnaissance</option>
633
+ <option>Privilege Escalation</option>
634
+ <option>Lateral Movement</option>
635
+ <option>Post-Exploitation</option>
636
+ <option>Persistence</option>
637
+ <option>Evasion</option>
638
+ </select>
639
+ </div>
640
+ <div class="sm:col-span-6">
641
+ <label for="module-description" class="block text-sm font-medium text-gray-700">Description</label>
642
+ <textarea id="module-description" name="module-description" rows="3" class="mt-1 shadow-sm focus:ring-viper-primary focus:border-viper-primary block w-full sm:text-sm border border-gray-300 rounded-md"></textarea>
643
+ </div>
644
+ <div class="sm:col-span-6">
645
+ <label for="module-code" class="block text-sm font-medium text-gray-700">Module Code</label>
646
+ <div class="mt-1">
647
+ <textarea id="module-code" name="module-code" rows="10" class="shadow-sm focus:ring-viper-primary focus:border-viper-primary block w-full sm:text-sm border border-gray-300 rounded-md font-mono text-sm"></textarea>
648
+ </div>
649
+ </div>
650
+ </div>
651
+ </div>
652
+ <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
653
+ <button type="button" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-viper-primary text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-viper-primary sm:ml-3 sm:w-auto sm:text-sm">
654
+ Create Module
655
+ </button>
656
+ <button type="button" onclick="hideCreateModuleModal()" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-viper-primary sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">
657
+ Cancel
658
+ </button>
659
+ </div>
660
+ </div>
661
+ </div>
662
+ </div>
663
+
664
+ <!-- Test Module Modal -->
665
+ <div id="test-module-modal" class="fixed inset-0 z-50 hidden overflow-y-auto">
666
+ <div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
667
+ <div class="fixed inset-0 transition-opacity" aria-hidden="true">
668
+ <div class="absolute inset-0 bg-gray-500 opacity-75"></div>
669
+ </div>
670
+ <span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span>
671
+ <div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full">
672
+ <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
673
+ <div class="sm:flex sm:items-start">
674
+ <div class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-500 sm:mx-0 sm:h-10 sm:w-10">
675
+ <i class="fas fa-play text-white"></i>
676
+ </div>
677
+ <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
678
+ <h3 class="text-lg leading-6 font-medium text-gray-900">Test Module</h3>
679
+ <div class="mt-2">
680
+ <p class="text-sm text-gray-500">Select a module to test in the sandbox environment.</p>
681
+ </div>
682
+ </div>
683
+ </div>
684
+ <div class="mt-6 grid grid-cols-1 gap-y-6 gap-x-4 sm:grid-cols-6">
685
+ <div class="sm:col-span-6">
686
+ <label for="test-module-select" class="block text-sm font-medium text-gray-700">Module to Test</label>
687
+ <select id="test-module-select" name="test-module-select" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm">
688
+ <option>Network Scanner</option>
689
+ <option>Credential Dumper</option>
690
+ <option>Persistence</option>
691
+ <option>Keylogger</option>
692
+ <option>Process Injector</option>
693
+ </select>
694
+ </div>
695
+ <div class="sm:col-span-6">
696
+ <label for="test-environment" class="block text-sm font-medium text-gray-700">Test Environment</label>
697
+ <select id="test-environment" name="test-environment" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm">
698
+ <option>Windows 10 (x64)</option>
699
+ <option>Windows Server 2019</option>
700
+ <option>Ubuntu 20.04</option>
701
+ <option>Custom Sandbox</option>
702
+ </select>
703
+ </div>
704
+ <div class="sm:col-span-6">
705
+ <label class="block text-sm font-medium text-gray-700">Test Options</label>
706
+ <div class="mt-2 space-y-2">
707
+ <div class="flex items-center">
708
+ <input id="full-test" name="test-options" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300" checked>
709
+ <label for="full-test" class="ml-3 block text-sm font-medium text-gray-700">Full Test (All checks)</label>
710
+ </div>
711
+ <div class="flex items-center">
712
+ <input id="quick-test" name="test-options" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300">
713
+ <label for="quick-test" class="ml-3 block text-sm font-medium text-gray-700">Quick Test (Basic validation only)</label>
714
+ </div>
715
+ <div class="flex items-center">
716
+ <input id="custom-test" name="test-options" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300">
717
+ <label for="custom-test" class="ml-3 block text-sm font-medium text-gray-700">Custom Test</label>
718
+ </div>
719
+ </div>
720
+ </div>
721
+ </div>
722
+ </div>
723
+ <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
724
+ <button type="button" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-500 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
725
+ Run Test
726
+ </button>
727
+ <button type="button" onclick="hideTestModuleModal()" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">
728
+ Cancel
729
+ </button>
730
+ </div>
731
+ </div>
732
+ </div>
733
+ </div>
734
+
735
+ <!-- Deploy Module Modal -->
736
+ <div id="deploy-modal" class="fixed inset-0 z-50 hidden overflow-y-auto">
737
+ <div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
738
+ <div class="fixed inset-0 transition-opacity" aria-hidden="true">
739
+ <div class="absolute inset-0 bg-gray-500 opacity-75"></div>
740
+ </div>
741
+ <span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span>
742
+ <div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full">
743
+ <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
744
+ <div class="sm:flex sm:items-start">
745
+ <div class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-purple-500 sm:mx-0 sm:h-10 sm:w-10">
746
+ <i class="fas fa-paper-plane text-white"></i>
747
+ </div>
748
+ <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
749
+ <h3 class="text-lg leading-6 font-medium text-gray-900">Deploy Module</h3>
750
+ <div class="mt-2">
751
+ <p class="text-sm text-gray-500">Select a module and target agents for deployment.</p>
752
+ </div>
753
+ </div>
754
+ </div>
755
+ <div class="mt-6 grid grid-cols-1 gap-y-6 gap-x-4 sm:grid-cols-6">
756
+ <div class="sm:col-span-6">
757
+ <label for="deploy-module-select" class="block text-sm font-medium text-gray-700">Module to Deploy</label>
758
+ <select id="deploy-module-select" name="deploy-module-select" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm">
759
+ <option>Network Scanner</option>
760
+ <option>Credential Dumper</option>
761
+ <option>Persistence</option>
762
+ <option>Keylogger</option>
763
+ <option>Process Injector</option>
764
+ </select>
765
+ </div>
766
+ <div class="sm:col-span-6">
767
+ <label class="block text-sm font-medium text-gray-700">Target Agents</label>
768
+ <div class="mt-2 space-y-2 max-h-40 overflow-y-auto border border-gray-200 rounded-md p-2">
769
+ <div class="flex items-center">
770
+ <input id="agent1" name="agents" type="checkbox" class="focus:ring-purple-500 h-4 w-4 text-purple-600 border-gray-300 rounded">
771
+ <label for="agent1" class="ml-3 block text-sm font-medium text-gray-700">win10-prod (192.168.1.10)</label>
772
+ </div>
773
+ <div class="flex items-center">
774
+ <input id="agent2" name="agents" type="checkbox" class="focus:ring-purple-500 h-4 w-4 text-purple-600 border-gray-300 rounded">
775
+ <label for="agent2" class="ml-3 block text-sm font-medium text-gray-700">win10-dev (192.168.1.45)</label>
776
+ </div>
777
+ <div class="flex items-center">
778
+ <input id="agent3" name="agents" type="checkbox" class="focus:ring-purple-500 h-4 w-4 text-purple-600 border-gray-300 rounded">
779
+ <label for="agent3" class="ml-3 block text-sm font-medium text-gray-700">ws2019-dc (192.168.1.100)</label>
780
+ </div>
781
+ <div class="flex items-center">
782
+ <input id="agent4" name="agents" type="checkbox" class="focus:ring-purple-500 h-4 w-4 text-purple-600 border-gray-300 rounded">
783
+ <label for="agent4" class="ml-3 block text-sm font-medium text-gray-700">ubuntu-web (192.168.1.150)</label>
784
+ </div>
785
+ </div>
786
+ </div>
787
+ <div class="sm:col-span-6">
788
+ <label for="deploy-options" class="block text-sm font-medium text-gray-700">Deployment Options</label>
789
+ <select id="deploy-options" name="deploy-options" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-purple-500 focus:border-purple-500 sm:text-sm">
790
+ <option>Standard Deployment</option>
791
+ <option>Stealth Mode</option>
792
+ <option>High Priority</option>
793
+ <option>Delayed Execution</option>
794
+ </select>
795
+ </div>
796
+ <div class="sm:col-span-6">
797
+ <label for="deploy-params" class="block text-sm font-medium text-gray-700">Parameters (JSON)</label>
798
+ <div class="mt-1">
799
+ <textarea id="deploy-params" name="deploy-params" rows="4" class="shadow-sm focus:ring-purple-500 focus:border-purple-500 block w-full sm:text-sm border border-gray-300 rounded-md font-mono text-sm"></textarea>
800
+ </div>
801
+ </div>
802
+ </div>
803
+ </div>
804
+ <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
805
+ <button type="button" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-purple-500 text-base font-medium text-white hover:bg-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500 sm:ml-3 sm:w-auto sm:text-sm">
806
+ Deploy Now
807
+ </button>
808
+ <button type="button" onclick="hideDeployModal()" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">
809
+ Cancel
810
+ </button>
811
+ </div>
812
+ </div>
813
+ </div>
814
+ </div>
815
+
816
+ <script>
817
+ // Toggle sidebar
818
+ function toggleSidebar() {
819
+ const sidebar = document.getElementById('sidebar');
820
+ const mainContent = document.getElementById('main-content');
821
+
822
+ sidebar.classList.toggle('collapsed');
823
+ mainContent.classList.toggle('expanded');
824
+
825
+ // Change the chevron icon direction
826
+ const toggleBtn = sidebar.querySelector('button');
827
+ const icon = toggleBtn.querySelector('i');
828
+
829
+ if (sidebar.classList.contains('collapsed')) {
830
+ icon.classList.remove('fa-chevron-left');
831
+ icon.classList.add('fa-chevron-right');
832
+ } else {
833
+ icon.classList.remove('fa-chevron-right');
834
+ icon.classList.add('fa-chevron-left');
835
+ }
836
+ }
837
+
838
+ // Show modals
839
+ function showCreateModuleModal() {
840
+ document.getElementById('create-module-modal').classList.remove('hidden');
841
+ }
842
+
843
+ function showTestModuleModal() {
844
+ document.getElementById('test-module-modal').classList.remove('hidden');
845
+ }
846
+
847
+ function showDeployModal() {
848
+ document.getElementById('deploy-modal').classList.remove('hidden');
849
+ }
850
+
851
+ // Hide modals
852
+ function hideCreateModuleModal() {
853
+ document.getElementById('create-module-modal').classList.add('hidden');
854
+ }
855
+
856
+ function hideTestModuleModal() {
857
+ document.getElementById('test-module-modal').classList.add('hidden');
858
+ }
859
+
860
+ function hideDeployModal() {
861
+ document.getElementById('deploy-modal').classList.add('hidden');
862
+ }
863
+
864
+ // Close modals when clicking outside
865
+ window.addEventListener('click', function(event) {
866
+ if (event.target.classList.contains('fixed')) {
867
+ event.target.classList.add('hidden');
868
+ }
869
+ });
870
+
871
+ // Dropdown menus
872
+ document.addEventListener('DOMContentLoaded', function() {
873
+ // Notification dropdown
874
+ const notificationBtn = document.getElementById('notification-btn');
875
+ const notificationDropdown = document.getElementById('notification-dropdown');
876
+
877
+ notificationBtn.addEventListener('click', function(e) {
878
+ e.stopPropagation();
879
+ notificationDropdown.classList.toggle('active');
880
+ userMenuDropdown.classList.remove('active');
881
+ });
882
+
883
+ // User menu dropdown
884
+ const userMenuBtn = document.getElementById('user-menu-btn');
885
+ const userMenuDropdown = document.getElementById('user-menu-dropdown');
886
+
887
+ userMenuBtn.addEventListener('click', function(e) {
888
+ e.stopPropagation();
889
+ userMenuDropdown.classList.toggle('active');
890
+ notificationDropdown.classList.remove('active');
891
+ });
892
+
893
+ // Close dropdowns when clicking outside
894
+ document.addEventListener('click', function() {
895
+ notificationDropdown.classList.remove('active');
896
+ userMenuDropdown.classList.remove('active');
897
+ });
898
+
899
+ // Prevent dropdown from closing when clicking inside
900
+ notificationDropdown.addEventListener('click', function(e) {
901
+ e.stopPropagation();
902
+ });
903
+
904
+ userMenuDropdown.addEventListener('click', function(e) {
905
+ e.stopPropagation();
906
+ });
907
+ });
908
+
909
+ // Terminal animation
910
+ function animateTerminal() {
911
+ const terminal = document.querySelector('.terminal');
912
+ if (!terminal) return;
913
+
914
+ const lines = terminal.querySelectorAll('.terminal-line');
915
+ let delay = 0;
916
+
917
+ lines.forEach(line => {
918
+ setTimeout(() => {
919
+ line.style.opacity = '1';
920
+ }, delay);
921
+ delay += 100;
922
+ });
923
+ }
924
+
925
+ // Initialize terminal animation
926
+ setTimeout(animateTerminal, 500);
927
+
928
+ // Module card hover effect
929
+ const moduleCards = document.querySelectorAll('.module-card');
930
+ moduleCards.forEach(card => {
931
+ card.style.transition = 'all 0.3s ease';
932
+ });
933
+
934
+ // Mobile menu toggle
935
+ function toggleMobileMenu() {
936
+ const sidebar = document.getElementById('sidebar');
937
+ sidebar.classList.toggle('hidden');
938
+ }
939
+ </script>
940
+ <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=S-Dreamer/module-builder" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
941
+ </html>
prompts.txt ADDED
File without changes