sqibhe commited on
Commit
31b2839
Β·
verified Β·
1 Parent(s): 5867120

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +821 -19
  3. prompts.txt +1 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Collabflow
3
- emoji: πŸ“ˆ
4
- colorFrom: blue
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: collabflow
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,821 @@
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" class="h-full">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>CollabFlow - Creative Feedback Platform</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
+ darkMode: 'class',
12
+ theme: {
13
+ extend: {
14
+ colors: {
15
+ primary: {
16
+ 50: '#f0f9ff',
17
+ 100: '#e0f2fe',
18
+ 200: '#bae6fd',
19
+ 300: '#7dd3fc',
20
+ 400: '#38bdf8',
21
+ 500: '#0ea5e9',
22
+ 600: '#0284c7',
23
+ 700: '#0369a1',
24
+ 800: '#075985',
25
+ 900: '#0c4a6e',
26
+ },
27
+ secondary: {
28
+ 50: '#f5f3ff',
29
+ 100: '#ede9fe',
30
+ 200: '#ddd6fe',
31
+ 300: '#c4b5fd',
32
+ 400: '#a78bfa',
33
+ 500: '#8b5cf6',
34
+ 600: '#7c3aed',
35
+ 700: '#6d28d9',
36
+ 800: '#5b21b6',
37
+ 900: '#4c1d95',
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
43
+ </script>
44
+ <style>
45
+ .drawing-canvas {
46
+ position: absolute;
47
+ top: 0;
48
+ left: 0;
49
+ pointer-events: none;
50
+ z-index: 10;
51
+ }
52
+ .annotation-marker {
53
+ position: absolute;
54
+ width: 24px;
55
+ height: 24px;
56
+ background-color: rgba(59, 130, 246, 0.8);
57
+ border-radius: 50%;
58
+ cursor: pointer;
59
+ transform: translate(-50%, -50%);
60
+ z-index: 20;
61
+ }
62
+ .video-comment-marker {
63
+ position: absolute;
64
+ width: 100%;
65
+ height: 4px;
66
+ background-color: rgba(239, 68, 68, 0.8);
67
+ top: 0;
68
+ left: 0;
69
+ z-index: 20;
70
+ }
71
+ .comment-thread {
72
+ transition: all 0.2s ease;
73
+ }
74
+ .comment-thread:hover {
75
+ transform: translateY(-2px);
76
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
77
+ }
78
+ .emoji-picker {
79
+ position: absolute;
80
+ bottom: 100%;
81
+ right: 0;
82
+ z-index: 30;
83
+ background: white;
84
+ border-radius: 8px;
85
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
86
+ padding: 8px;
87
+ display: none;
88
+ }
89
+ .dark .emoji-picker {
90
+ background: #1f2937;
91
+ }
92
+ .mention-suggestions {
93
+ position: absolute;
94
+ bottom: 100%;
95
+ left: 0;
96
+ z-index: 30;
97
+ background: white;
98
+ border-radius: 8px;
99
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
100
+ max-height: 200px;
101
+ overflow-y: auto;
102
+ display: none;
103
+ }
104
+ .dark .mention-suggestions {
105
+ background: #1f2937;
106
+ }
107
+ .file-preview-container {
108
+ position: relative;
109
+ overflow: hidden;
110
+ }
111
+ .tooltip {
112
+ position: relative;
113
+ }
114
+ .tooltip .tooltip-text {
115
+ visibility: hidden;
116
+ width: 120px;
117
+ background-color: #111827;
118
+ color: #fff;
119
+ text-align: center;
120
+ border-radius: 6px;
121
+ padding: 5px;
122
+ position: absolute;
123
+ z-index: 1;
124
+ bottom: 125%;
125
+ left: 50%;
126
+ margin-left: -60px;
127
+ opacity: 0;
128
+ transition: opacity 0.3s;
129
+ }
130
+ .tooltip:hover .tooltip-text {
131
+ visibility: visible;
132
+ opacity: 1;
133
+ }
134
+ .dark .tooltip .tooltip-text {
135
+ background-color: #f3f4f6;
136
+ color: #111827;
137
+ }
138
+ /* Custom scrollbar */
139
+ ::-webkit-scrollbar {
140
+ width: 8px;
141
+ height: 8px;
142
+ }
143
+ ::-webkit-scrollbar-track {
144
+ background: #f1f1f1;
145
+ }
146
+ ::-webkit-scrollbar-thumb {
147
+ background: #888;
148
+ border-radius: 4px;
149
+ }
150
+ ::-webkit-scrollbar-thumb:hover {
151
+ background: #555;
152
+ }
153
+ .dark ::-webkit-scrollbar-track {
154
+ background: #374151;
155
+ }
156
+ .dark ::-webkit-scrollbar-thumb {
157
+ background: #6b7280;
158
+ }
159
+ .dark ::-webkit-scrollbar-thumb:hover {
160
+ background: #9ca3af;
161
+ }
162
+ </style>
163
+ </head>
164
+ <body class="h-full bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100 transition-colors duration-200">
165
+ <div id="app" class="flex flex-col h-full">
166
+ <!-- Header -->
167
+ <header class="bg-white dark:bg-gray-800 shadow-sm z-10">
168
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
169
+ <div class="flex justify-between items-center py-4">
170
+ <div class="flex items-center space-x-4">
171
+ <div class="flex items-center">
172
+ <i class="fas fa-comments text-primary-500 text-2xl mr-2"></i>
173
+ <h1 class="text-xl font-bold">CollabFlow</h1>
174
+ </div>
175
+ <nav class="hidden md:flex space-x-8">
176
+ <a href="#" class="text-primary-600 dark:text-primary-400 font-medium">Projects</a>
177
+ <a href="#" class="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-gray-100">Team</a>
178
+ <a href="#" class="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-gray-100">Activity</a>
179
+ <a href="#" class="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-gray-100">Reports</a>
180
+ </nav>
181
+ </div>
182
+ <div class="flex items-center space-x-4">
183
+ <button id="theme-toggle" class="p-2 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700">
184
+ <i class="fas fa-moon dark:hidden"></i>
185
+ <i class="fas fa-sun hidden dark:inline"></i>
186
+ </button>
187
+ <div class="relative">
188
+ <button id="notifications-btn" class="p-2 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700 relative">
189
+ <i class="fas fa-bell"></i>
190
+ <span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span>
191
+ </button>
192
+ <div id="notifications-dropdown" class="hidden absolute right-0 mt-2 w-72 bg-white dark:bg-gray-800 rounded-md shadow-lg py-1 z-50 border border-gray-200 dark:border-gray-700">
193
+ <div class="px-4 py-2 border-b border-gray-200 dark:border-gray-700">
194
+ <h3 class="font-medium">Notifications</h3>
195
+ </div>
196
+ <div class="max-h-60 overflow-y-auto">
197
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
198
+ <div class="flex items-start">
199
+ <div class="flex-shrink-0 pt-1">
200
+ <img class="h-8 w-8 rounded-full" src="https://randomuser.me/api/portraits/women/44.jpg" alt="">
201
+ </div>
202
+ <div class="ml-3">
203
+ <p class="text-sm font-medium">Sarah Johnson mentioned you in a comment</p>
204
+ <p class="text-xs text-gray-500 dark:text-gray-400">2 minutes ago</p>
205
+ </div>
206
+ </div>
207
+ </a>
208
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
209
+ <div class="flex items-start">
210
+ <div class="flex-shrink-0 pt-1">
211
+ <img class="h-8 w-8 rounded-full" src="https://randomuser.me/api/portraits/men/32.jpg" alt="">
212
+ </div>
213
+ <div class="ml-3">
214
+ <p class="text-sm font-medium">Michael Chen replied to your feedback</p>
215
+ <p class="text-xs text-gray-500 dark:text-gray-400">15 minutes ago</p>
216
+ </div>
217
+ </div>
218
+ </a>
219
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
220
+ <div class="flex items-start">
221
+ <div class="flex-shrink-0 pt-1">
222
+ <img class="h-8 w-8 rounded-full" src="https://randomuser.me/api/portraits/women/68.jpg" alt="">
223
+ </div>
224
+ <div class="ml-3">
225
+ <p class="text-sm font-medium">Emma Wilson uploaded a new version</p>
226
+ <p class="text-xs text-gray-500 dark:text-gray-400">1 hour ago</p>
227
+ </div>
228
+ </div>
229
+ </a>
230
+ </div>
231
+ <div class="px-4 py-2 border-t border-gray-200 dark:border-gray-700">
232
+ <a href="#" class="text-sm font-medium text-primary-600 dark:text-primary-400">View all notifications</a>
233
+ </div>
234
+ </div>
235
+ </div>
236
+ <div class="relative">
237
+ <button id="user-menu-btn" class="flex items-center space-x-2 focus:outline-none">
238
+ <img class="h-8 w-8 rounded-full" src="https://randomuser.me/api/portraits/men/75.jpg" alt="User profile">
239
+ <span class="hidden md:inline">Alex Johnson</span>
240
+ <i class="fas fa-chevron-down text-xs"></i>
241
+ </button>
242
+ <div id="user-menu-dropdown" class="hidden absolute right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-md shadow-lg py-1 z-50 border border-gray-200 dark:border-gray-700">
243
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">Your Profile</a>
244
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">Settings</a>
245
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">Integrations</a>
246
+ <div class="border-t border-gray-200 dark:border-gray-700"></div>
247
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">Sign out</a>
248
+ </div>
249
+ </div>
250
+ </div>
251
+ </div>
252
+ </div>
253
+ </header>
254
+
255
+ <!-- Main Content -->
256
+ <main class="flex-1 overflow-hidden">
257
+ <div class="flex h-full">
258
+ <!-- Sidebar -->
259
+ <aside class="hidden md:block w-64 bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 overflow-y-auto">
260
+ <div class="p-4">
261
+ <div class="flex items-center justify-between mb-6">
262
+ <h2 class="text-lg font-semibold">Website Redesign</h2>
263
+ <button class="p-1 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700">
264
+ <i class="fas fa-ellipsis-h"></i>
265
+ </button>
266
+ </div>
267
+
268
+ <div class="mb-6">
269
+ <div class="flex items-center justify-between mb-2">
270
+ <h3 class="text-sm font-medium text-gray-500 dark:text-gray-400">TEAM MEMBERS</h3>
271
+ <button class="text-primary-600 dark:text-primary-400 text-sm font-medium">Invite</button>
272
+ </div>
273
+ <div class="space-y-2">
274
+ <div class="flex items-center space-x-2">
275
+ <img class="h-6 w-6 rounded-full" src="https://randomuser.me/api/portraits/women/44.jpg" alt="">
276
+ <span class="text-sm">Sarah Johnson</span>
277
+ <span class="ml-auto text-xs px-2 py-1 bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 rounded-full">Admin</span>
278
+ </div>
279
+ <div class="flex items-center space-x-2">
280
+ <img class="h-6 w-6 rounded-full" src="https://randomuser.me/api/portraits/men/32.jpg" alt="">
281
+ <span class="text-sm">Michael Chen</span>
282
+ <span class="ml-auto text-xs px-2 py-1 bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 rounded-full">Editor</span>
283
+ </div>
284
+ <div class="flex items-center space-x-2">
285
+ <img class="h-6 w-6 rounded-full" src="https://randomuser.me/api/portraits/women/68.jpg" alt="">
286
+ <span class="text-sm">Emma Wilson</span>
287
+ </div>
288
+ <div class="flex items-center space-x-2">
289
+ <img class="h-6 w-6 rounded-full" src="https://randomuser.me/api/portraits/men/75.jpg" alt="">
290
+ <span class="text-sm">Alex Johnson</span>
291
+ </div>
292
+ </div>
293
+ </div>
294
+
295
+ <div class="mb-6">
296
+ <div class="flex items-center justify-between mb-2">
297
+ <h3 class="text-sm font-medium text-gray-500 dark:text-gray-400">FILES</h3>
298
+ <button class="text-primary-600 dark:text-primary-400 text-sm font-medium">Upload</button>
299
+ </div>
300
+ <div class="space-y-1">
301
+ <button class="w-full flex items-center space-x-2 px-2 py-1.5 rounded hover:bg-gray-100 dark:hover:bg-gray-700 text-left">
302
+ <i class="fas fa-file-image text-blue-500"></i>
303
+ <span class="text-sm">Homepage Design</span>
304
+ </button>
305
+ <button class="w-full flex items-center space-x-2 px-2 py-1.5 rounded hover:bg-gray-100 dark:hover:bg-gray-700 text-left">
306
+ <i class="fas fa-file-pdf text-red-500"></i>
307
+ <span class="text-sm">Style Guide.pdf</span>
308
+ </button>
309
+ <button class="w-full flex items-center space-x-2 px-2 py-1.5 rounded bg-gray-100 dark:bg-gray-700 text-left">
310
+ <i class="fas fa-video text-purple-500"></i>
311
+ <span class="text-sm">Product Demo.mp4</span>
312
+ </button>
313
+ <button class="w-full flex items-center space-x-2 px-2 py-1.5 rounded hover:bg-gray-100 dark:hover:bg-gray-700 text-left">
314
+ <i class="fas fa-file-alt text-yellow-500"></i>
315
+ <span class="text-sm">Content Draft.docx</span>
316
+ </button>
317
+ <button class="w-full flex items-center space-x-2 px-2 py-1.5 rounded hover:bg-gray-100 dark:hover:bg-gray-700 text-left">
318
+ <i class="fas fa-link text-green-500"></i>
319
+ <span class="text-sm">Staging Website</span>
320
+ </button>
321
+ </div>
322
+ </div>
323
+
324
+ <div>
325
+ <div class="flex items-center justify-between mb-2">
326
+ <h3 class="text-sm font-medium text-gray-500 dark:text-gray-400">INTEGRATIONS</h3>
327
+ </div>
328
+ <div class="flex space-x-2">
329
+ <button class="p-2 rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600">
330
+ <i class="fab fa-slack text-purple-500"></i>
331
+ </button>
332
+ <button class="p-2 rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600">
333
+ <i class="fab fa-google-drive text-blue-500"></i>
334
+ </button>
335
+ <button class="p-2 rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600">
336
+ <i class="fab fa-figma text-pink-500"></i>
337
+ </button>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ </aside>
342
+
343
+ <!-- Main Content Area -->
344
+ <div class="flex-1 flex flex-col overflow-hidden">
345
+ <!-- Toolbar -->
346
+ <div class="bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 px-4 py-2 flex items-center justify-between">
347
+ <div class="flex items-center space-x-2">
348
+ <button class="p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
349
+ <i class="fas fa-arrow-left"></i>
350
+ </button>
351
+ <h2 class="font-medium">Product Demo.mp4</h2>
352
+ <span class="text-xs px-2 py-1 bg-gray-100 dark:bg-gray-700 rounded-full">Version 3</span>
353
+ </div>
354
+ <div class="flex items-center space-x-2">
355
+ <div class="relative">
356
+ <button id="tools-btn" class="p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
357
+ <i class="fas fa-pencil-alt"></i>
358
+ </button>
359
+ <div id="tools-dropdown" class="hidden absolute right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-md shadow-lg py-1 z-50 border border-gray-200 dark:border-gray-700">
360
+ <button class="w-full flex items-center px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
361
+ <i class="fas fa-highlighter mr-2 text-yellow-500"></i>
362
+ <span>Highlight</span>
363
+ </button>
364
+ <button class="w-full flex items-center px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
365
+ <i class="fas fa-pen mr-2 text-blue-500"></i>
366
+ <span>Draw</span>
367
+ </button>
368
+ <button class="w-full flex items-center px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
369
+ <i class="fas fa-arrow-right mr-2 text-red-500"></i>
370
+ <span>Arrow</span>
371
+ </button>
372
+ <button class="w-full flex items-center px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
373
+ <i class="fas fa-square mr-2 text-green-500"></i>
374
+ <span>Rectangle</span>
375
+ </button>
376
+ <div class="border-t border-gray-200 dark:border-gray-700"></div>
377
+ <button class="w-full flex items-center px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700">
378
+ <i class="fas fa-eraser mr-2 text-gray-500"></i>
379
+ <span>Clear All</span>
380
+ </button>
381
+ </div>
382
+ </div>
383
+ <button class="p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
384
+ <i class="fas fa-history"></i>
385
+ </button>
386
+ <button class="p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
387
+ <i class="fas fa-download"></i>
388
+ </button>
389
+ <button class="p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
390
+ <i class="fas fa-share-alt"></i>
391
+ </button>
392
+ <button class="p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
393
+ <i class="fas fa-ellipsis-h"></i>
394
+ </button>
395
+ </div>
396
+ </div>
397
+
398
+ <!-- File Preview and Comments -->
399
+ <div class="flex-1 flex overflow-hidden">
400
+ <!-- File Preview Area -->
401
+ <div class="flex-1 overflow-auto p-4 bg-gray-100 dark:bg-gray-800">
402
+ <div class="file-preview-container bg-white dark:bg-gray-700 rounded-lg shadow-md overflow-hidden mx-auto max-w-4xl relative">
403
+ <video controls class="w-full">
404
+ <source src="https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4" type="video/mp4">
405
+ Your browser does not support the video tag.
406
+ </video>
407
+ <div class="video-comment-marker" style="left: 30%;"></div>
408
+ <div class="video-comment-marker" style="left: 65%;"></div>
409
+
410
+ <canvas class="drawing-canvas" width="1280" height="720"></canvas>
411
+
412
+ <div class="annotation-marker" style="top: 30%; left: 40%;"></div>
413
+ <div class="annotation-marker" style="top: 60%; left: 70%;"></div>
414
+ </div>
415
+
416
+ <div class="mt-6 bg-white dark:bg-gray-800 rounded-lg shadow-md p-4 max-w-4xl mx-auto">
417
+ <div class="flex items-center justify-between mb-4">
418
+ <h3 class="font-medium">Version History</h3>
419
+ <button class="text-primary-600 dark:text-primary-400 text-sm font-medium">Upload New Version</button>
420
+ </div>
421
+ <div class="space-y-2">
422
+ <div class="flex items-center space-x-3 p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
423
+ <div class="flex-shrink-0">
424
+ <div class="h-8 w-8 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center">
425
+ <i class="fas fa-file-video text-primary-600 dark:text-primary-400"></i>
426
+ </div>
427
+ </div>
428
+ <div class="flex-1 min-w-0">
429
+ <p class="text-sm font-medium truncate">Product Demo.mp4</p>
430
+ <p class="text-xs text-gray-500 dark:text-gray-400">Uploaded by Sarah Johnson β€’ 2 hours ago</p>
431
+ </div>
432
+ <div class="flex-shrink-0">
433
+ <span class="text-xs px-2 py-1 bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 rounded-full">Current</span>
434
+ </div>
435
+ </div>
436
+ <div class="flex items-center space-x-3 p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
437
+ <div class="flex-shrink-0">
438
+ <div class="h-8 w-8 rounded-full bg-gray-100 dark:bg-gray-700 flex items-center justify-center">
439
+ <i class="fas fa-file-video text-gray-500"></i>
440
+ </div>
441
+ </div>
442
+ <div class="flex-1 min-w-0">
443
+ <p class="text-sm font-medium truncate">Product Demo.mp4</p>
444
+ <p class="text-xs text-gray-500 dark:text-gray-400">Uploaded by Michael Chen β€’ Yesterday</p>
445
+ </div>
446
+ </div>
447
+ <div class="flex items-center space-x-3 p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
448
+ <div class="flex-shrink-0">
449
+ <div class="h-8 w-8 rounded-full bg-gray-100 dark:bg-gray-700 flex items-center justify-center">
450
+ <i class="fas fa-file-video text-gray-500"></i>
451
+ </div>
452
+ </div>
453
+ <div class="flex-1 min-w-0">
454
+ <p class="text-sm font-medium truncate">Product Demo.mp4</p>
455
+ <p class="text-xs text-gray-500 dark:text-gray-400">Uploaded by Emma Wilson β€’ 3 days ago</p>
456
+ </div>
457
+ </div>
458
+ </div>
459
+ </div>
460
+ </div>
461
+
462
+ <!-- Comments Sidebar -->
463
+ <div class="hidden lg:block w-80 bg-white dark:bg-gray-800 border-l border-gray-200 dark:border-gray-700 overflow-y-auto">
464
+ <div class="p-4">
465
+ <div class="flex items-center justify-between mb-4">
466
+ <h3 class="font-medium">Comments</h3>
467
+ <div class="flex items-center space-x-2">
468
+ <button class="p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
469
+ <i class="fas fa-filter"></i>
470
+ </button>
471
+ <button class="p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700">
472
+ <i class="fas fa-sort"></i>
473
+ </button>
474
+ </div>
475
+ </div>
476
+
477
+ <!-- Comment Thread -->
478
+ <div class="comment-thread bg-gray-50 dark:bg-gray-700 rounded-lg p-3 mb-3">
479
+ <div class="flex items-start mb-2">
480
+ <img class="h-8 w-8 rounded-full mr-2" src="https://randomuser.me/api/portraits/women/44.jpg" alt="">
481
+ <div class="flex-1">
482
+ <div class="flex items-center">
483
+ <span class="font-medium">Sarah Johnson</span>
484
+ <span class="ml-2 text-xs text-gray-500 dark:text-gray-400">2 min ago</span>
485
+ </div>
486
+ <p class="text-sm mt-1">The product demo at 0:30 needs more emphasis on the new features. Can we add a callout here?</p>
487
+ </div>
488
+ </div>
489
+ <div class="ml-10 pl-2 border-l-2 border-gray-300 dark:border-gray-600">
490
+ <div class="flex items-start mb-2">
491
+ <img class="h-6 w-6 rounded-full mr-2" src="https://randomuser.me/api/portraits/men/75.jpg" alt="">
492
+ <div class="flex-1">
493
+ <div class="flex items-center">
494
+ <span class="text-sm font-medium">Alex Johnson</span>
495
+ <span class="ml-2 text-xs text-gray-500 dark:text-gray-400">1 min ago</span>
496
+ </div>
497
+ <p class="text-xs mt-1">@Sarah Johnson I agree. I'll add a highlight effect there.</p>
498
+ </div>
499
+ </div>
500
+ </div>
501
+ <div class="flex items-center justify-between mt-2">
502
+ <div class="flex space-x-2">
503
+ <button class="text-xs text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
504
+ <i class="far fa-thumbs-up mr-1"></i> 2
505
+ </button>
506
+ <button class="text-xs text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
507
+ <i class="far fa-smile mr-1"></i> 1
508
+ </button>
509
+ </div>
510
+ <button class="text-xs text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
511
+ Reply
512
+ </button>
513
+ </div>
514
+ </div>
515
+
516
+ <!-- Comment Thread -->
517
+ <div class="comment-thread bg-gray-50 dark:bg-gray-700 rounded-lg p-3 mb-3">
518
+ <div class="flex items-start mb-2">
519
+ <img class="h-8 w-8 rounded-full mr-2" src="https://randomuser.me/api/portraits/men/32.jpg" alt="">
520
+ <div class="flex-1">
521
+ <div class="flex items-center">
522
+ <span class="font-medium">Michael Chen</span>
523
+ <span class="ml-2 text-xs text-gray-500 dark:text-gray-400">15 min ago</span>
524
+ </div>
525
+ <p class="text-sm mt-1">The transition at 1:05 feels abrupt. Maybe we can smooth it out?</p>
526
+ </div>
527
+ </div>
528
+ <div class="flex items-center justify-between mt-2">
529
+ <div class="flex space-x-2">
530
+ <button class="text-xs text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
531
+ <i class="far fa-thumbs-up mr-1"></i> 1
532
+ </button>
533
+ </div>
534
+ <button class="text-xs text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
535
+ Reply
536
+ </button>
537
+ </div>
538
+ </div>
539
+
540
+ <!-- New Comment Form -->
541
+ <div class="mt-6">
542
+ <div class="flex items-start">
543
+ <img class="h-8 w-8 rounded-full mr-2" src="https://randomuser.me/api/portraits/men/75.jpg" alt="">
544
+ <div class="flex-1">
545
+ <div class="relative">
546
+ <textarea class="w-full border border-gray-300 dark:border-gray-600 rounded-lg p-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-gray-700" rows="2" placeholder="Add a comment..."></textarea>
547
+ <div class="absolute bottom-2 right-2 flex space-x-1">
548
+ <button class="p-1 text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
549
+ <i class="far fa-smile"></i>
550
+ </button>
551
+ <button class="p-1 text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
552
+ <i class="fas fa-at"></i>
553
+ </button>
554
+ <button class="p-1 text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400">
555
+ <i class="fas fa-paperclip"></i>
556
+ </button>
557
+ </div>
558
+ </div>
559
+ <div class="flex justify-end mt-2">
560
+ <button class="px-3 py-1 bg-primary-600 hover:bg-primary-700 text-white text-sm font-medium rounded-md">
561
+ Post Comment
562
+ </button>
563
+ </div>
564
+ </div>
565
+ </div>
566
+ </div>
567
+ </div>
568
+ </div>
569
+ </div>
570
+ </div>
571
+ </div>
572
+ </main>
573
+ </div>
574
+
575
+ <script>
576
+ // Dark mode toggle
577
+ document.getElementById('theme-toggle').addEventListener('click', function() {
578
+ document.documentElement.classList.toggle('dark');
579
+ localStorage.setItem('darkMode', document.documentElement.classList.contains('dark'));
580
+ });
581
+
582
+ // Check for saved dark mode preference
583
+ if (localStorage.getItem('darkMode') === 'true') {
584
+ document.documentElement.classList.add('dark');
585
+ }
586
+
587
+ // Dropdown toggles
588
+ const dropdownToggles = {
589
+ 'notifications-btn': 'notifications-dropdown',
590
+ 'user-menu-btn': 'user-menu-dropdown',
591
+ 'tools-btn': 'tools-dropdown'
592
+ };
593
+
594
+ Object.entries(dropdownToggles).forEach(([btnId, dropdownId]) => {
595
+ const btn = document.getElementById(btnId);
596
+ const dropdown = document.getElementById(dropdownId);
597
+
598
+ btn.addEventListener('click', (e) => {
599
+ e.stopPropagation();
600
+ dropdown.classList.toggle('hidden');
601
+ });
602
+
603
+ // Close dropdown when clicking outside
604
+ document.addEventListener('click', (e) => {
605
+ if (!dropdown.contains(e.target) && !btn.contains(e.target)) {
606
+ dropdown.classList.add('hidden');
607
+ }
608
+ });
609
+ });
610
+
611
+ // Simple canvas drawing functionality
612
+ const canvas = document.querySelector('.drawing-canvas');
613
+ const ctx = canvas.getContext('2d');
614
+ let isDrawing = false;
615
+ let currentTool = 'pen';
616
+ let currentColor = '#3b82f6';
617
+
618
+ // Set canvas size to match video
619
+ function resizeCanvas() {
620
+ const video = document.querySelector('video');
621
+ if (video) {
622
+ canvas.style.width = video.clientWidth + 'px';
623
+ canvas.style.height = video.clientHeight + 'px';
624
+ }
625
+ }
626
+
627
+ window.addEventListener('resize', resizeCanvas);
628
+ resizeCanvas();
629
+
630
+ // Drawing tools
631
+ document.querySelectorAll('#tools-dropdown button').forEach(button => {
632
+ button.addEventListener('click', function() {
633
+ const icon = this.querySelector('i');
634
+ if (icon.classList.contains('fa-highlighter')) {
635
+ currentTool = 'highlight';
636
+ currentColor = 'rgba(250, 204, 21, 0.5)';
637
+ } else if (icon.classList.contains('fa-pen')) {
638
+ currentTool = 'pen';
639
+ currentColor = '#3b82f6';
640
+ } else if (icon.classList.contains('fa-arrow-right')) {
641
+ currentTool = 'arrow';
642
+ currentColor = '#ef4444';
643
+ } else if (icon.classList.contains('fa-square')) {
644
+ currentTool = 'rectangle';
645
+ currentColor = '#10b981';
646
+ } else if (icon.classList.contains('fa-eraser')) {
647
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
648
+ }
649
+ document.getElementById('tools-dropdown').classList.add('hidden');
650
+ });
651
+ });
652
+
653
+ // Drawing functionality
654
+ canvas.addEventListener('mousedown', startDrawing);
655
+ canvas.addEventListener('mousemove', draw);
656
+ canvas.addEventListener('mouseup', stopDrawing);
657
+ canvas.addEventListener('mouseout', stopDrawing);
658
+
659
+ function startDrawing(e) {
660
+ isDrawing = true;
661
+ draw(e);
662
+ }
663
+
664
+ function draw(e) {
665
+ if (!isDrawing) return;
666
+
667
+ const rect = canvas.getBoundingClientRect();
668
+ const x = (e.clientX - rect.left) * (canvas.width / rect.width);
669
+ const y = (e.clientY - rect.top) * (canvas.height / rect.height);
670
+
671
+ ctx.strokeStyle = currentColor;
672
+ ctx.lineWidth = 2;
673
+ ctx.lineCap = 'round';
674
+
675
+ if (currentTool === 'pen' || currentTool === 'highlight') {
676
+ ctx.lineTo(x, y);
677
+ ctx.stroke();
678
+ ctx.beginPath();
679
+ ctx.moveTo(x, y);
680
+ } else if (currentTool === 'arrow') {
681
+ // Simple arrow drawing
682
+ ctx.beginPath();
683
+ ctx.moveTo(x - 20, y);
684
+ ctx.lineTo(x, y);
685
+ ctx.lineTo(x - 10, y - 10);
686
+ ctx.moveTo(x, y);
687
+ ctx.lineTo(x - 10, y + 10);
688
+ ctx.stroke();
689
+ } else if (currentTool === 'rectangle') {
690
+ // Simple rectangle drawing
691
+ ctx.beginPath();
692
+ ctx.rect(x - 30, y - 20, 60, 40);
693
+ ctx.stroke();
694
+ }
695
+ }
696
+
697
+ function stopDrawing() {
698
+ isDrawing = false;
699
+ ctx.beginPath();
700
+ }
701
+
702
+ // Annotation marker click handlers
703
+ document.querySelectorAll('.annotation-marker').forEach(marker => {
704
+ marker.addEventListener('click', function() {
705
+ // In a real app, this would scroll to the corresponding comment
706
+ alert('Annotation clicked! This would scroll to the related comment in a real app.');
707
+ });
708
+ });
709
+
710
+ // Video comment marker click handlers
711
+ document.querySelectorAll('.video-comment-marker').forEach(marker => {
712
+ marker.addEventListener('click', function() {
713
+ const video = document.querySelector('video');
714
+ const markerLeft = parseFloat(marker.style.left);
715
+ const videoDuration = video.duration;
716
+ const seekTime = (markerLeft / 100) * videoDuration;
717
+ video.currentTime = seekTime;
718
+ video.play();
719
+
720
+ // In a real app, this would also highlight the corresponding comment
721
+ alert('Jumping to ' + seekTime.toFixed(1) + ' seconds. This would highlight the related comment in a real app.');
722
+ });
723
+ });
724
+
725
+ // Emoji picker functionality (simplified)
726
+ document.querySelectorAll('.fa-smile').forEach(icon => {
727
+ icon.addEventListener('click', function(e) {
728
+ e.stopPropagation();
729
+ const picker = document.createElement('div');
730
+ picker.className = 'emoji-picker';
731
+ picker.innerHTML = `
732
+ <div class="grid grid-cols-6 gap-1">
733
+ <span class="cursor-pointer hover:scale-125">πŸ˜€</span>
734
+ <span class="cursor-pointer hover:scale-125">πŸ˜‚</span>
735
+ <span class="cursor-pointer hover:scale-125">😍</span>
736
+ <span class="cursor-pointer hover:scale-125">πŸ‘</span>
737
+ <span class="cursor-pointer hover:scale-125">πŸ‘Ž</span>
738
+ <span class="cursor-pointer hover:scale-125">❀️</span>
739
+ </div>
740
+ `;
741
+
742
+ const rect = this.getBoundingClientRect();
743
+ picker.style.bottom = `${window.innerHeight - rect.top + 5}px`;
744
+ picker.style.right = `${window.innerWidth - rect.right}px`;
745
+
746
+ document.body.appendChild(picker);
747
+
748
+ // Close picker when clicking outside
749
+ const closePicker = (e) => {
750
+ if (!picker.contains(e.target) && e.target !== this) {
751
+ picker.remove();
752
+ document.removeEventListener('click', closePicker);
753
+ }
754
+ };
755
+
756
+ document.addEventListener('click', closePicker);
757
+
758
+ // Add emoji to comment
759
+ picker.querySelectorAll('span').forEach(emoji => {
760
+ emoji.addEventListener('click', () => {
761
+ alert(`Added ${emoji.textContent} reaction`);
762
+ picker.remove();
763
+ document.removeEventListener('click', closePicker);
764
+ });
765
+ });
766
+ });
767
+ });
768
+
769
+ // Mention functionality (simplified)
770
+ document.querySelectorAll('.fa-at').forEach(icon => {
771
+ icon.addEventListener('click', function(e) {
772
+ e.stopPropagation();
773
+ const mentionBox = document.createElement('div');
774
+ mentionBox.className = 'mention-suggestions';
775
+ mentionBox.innerHTML = `
776
+ <div class="py-1">
777
+ <div class="flex items-center px-3 py-1 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer">
778
+ <img class="h-6 w-6 rounded-full mr-2" src="https://randomuser.me/api/portraits/women/44.jpg" alt="">
779
+ <span>Sarah Johnson</span>
780
+ </div>
781
+ <div class="flex items-center px-3 py-1 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer">
782
+ <img class="h-6 w-6 rounded-full mr-2" src="https://randomuser.me/api/portraits/men/32.jpg" alt="">
783
+ <span>Michael Chen</span>
784
+ </div>
785
+ <div class="flex items-center px-3 py-1 hover:bg-gray-100 dark:hover:bg-gray-700 cursor-pointer">
786
+ <img class="h-6 w-6 rounded-full mr-2" src="https://randomuser.me/api/portraits/women/68.jpg" alt="">
787
+ <span>Emma Wilson</span>
788
+ </div>
789
+ </div>
790
+ `;
791
+
792
+ const rect = this.getBoundingClientRect();
793
+ mentionBox.style.bottom = `${window.innerHeight - rect.top + 5}px`;
794
+ mentionBox.style.left = `${rect.left}px`;
795
+
796
+ document.body.appendChild(mentionBox);
797
+
798
+ // Close mention box when clicking outside
799
+ const closeMentionBox = (e) => {
800
+ if (!mentionBox.contains(e.target) && e.target !== this) {
801
+ mentionBox.remove();
802
+ document.removeEventListener('click', closeMentionBox);
803
+ }
804
+ };
805
+
806
+ document.addEventListener('click', closeMentionBox);
807
+
808
+ // Add mention to comment
809
+ mentionBox.querySelectorAll('div').forEach(item => {
810
+ item.addEventListener('click', () => {
811
+ const name = item.querySelector('span').textContent;
812
+ alert(`Mentioned @${name}`);
813
+ mentionBox.remove();
814
+ document.removeEventListener('click', closeMentionBox);
815
+ });
816
+ });
817
+ });
818
+ });
819
+ </script>
820
+ <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=sqibhe/collabflow" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
821
+ </html>
prompts.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ "Develop a web-based collaborative feedback and content review platform that streamlines creative workflows for teams. The tool should enable real-time collaboration, allowing users to comment directly on 30+ file types, including websites (via URL embeds), PDFs, images, videos, and interactive Ceros content. The frontend must feature a responsive, user-friendly interface with dark/light mode toggle, annotation tools (highlighting, drawing, arrows), and threaded commenting with @mentions and emoji reactions. For videos, implement timestamp-based feedback to pin comments to specific moments. The backend should support version control to track and revert changes, role-based permissions (admin/editor/viewer), and automated notifications via email/Slack for updates. Ensure GDPR/CCPA compliance with data encryption, user consent management, and dynamic watermarking for sensitive files. Integrate third-party services like Slack, Google Drive, and Figma/Adobe Creative Cloud via APIs. Include an analytics dashboard to display metrics like feedback resolution time and user activity, with exportable PDF/CSV reports. Prioritize accessibility with WCAG-compliant UI elements, screen reader support, and a color contrast checker for design files. Use a MERN stack (MongoDB, Express, React, Node) or similar modern framework, and implement real-time sync using WebSocket (Socket.io) or Firebase. Store files on AWS S3 or Firebase Storage. Optional stretch goals include a React Native/Flutter mobile app, 3D/AR markup with Three.js, and voice/video feedback recording. Provide a detailed code structure, including frontend components, backend APIs, and database schemas, along with setup instructions for dependencies like file converters and WebSocket integration. Highlight technical challenges such as real-time synchronization, video timestamp parsing, and secure file handling."