suryalokula commited on
Commit
d120441
·
verified ·
1 Parent(s): e4bcb3e

Add 1 files

Browse files
Files changed (1) hide show
  1. index.html +581 -43
index.html CHANGED
@@ -1,46 +1,584 @@
1
  <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>My app</title>
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <meta charset="utf-8">
 
 
7
  <style>
8
- body {
9
- display: flex;
10
- justify-content: center;
11
- align-items: center;
12
- overflow: hidden;
13
- height: 100dvh;
14
- font-family: "Arial", sans-serif;
15
- text-align: center;
16
- }
17
- .arrow {
18
- position: absolute;
19
- bottom: 32px;
20
- left: 0px;
21
- width: 100px;
22
- transform: rotate(30deg);
23
- }
24
- h1 {
25
- font-size: 50px;
26
- }
27
- h1 span {
28
- color: #acacac;
29
- font-size: 32px;
30
- }
31
- @media screen and (max-width: 640px) {
32
- .arrow {
33
- display: none;
34
- }
35
- }
 
 
 
 
 
 
 
 
 
 
 
36
  </style>
37
- </head>
38
- <body>
39
- <h1>
40
- <span>I'm ready to work,</span><br />
41
- Ask me anything.
42
- </h1>
43
- <img src="https://enzostvs-deepsite.hf.space/arrow.svg" class="arrow" />
44
- <script></script>
45
- <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=suryalokula/deepseek" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body>
46
- </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>CareerConnect - Job & Internship Alerts</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
  <style>
10
+ /* Custom animations */
11
+ @keyframes fadeIn {
12
+ from { opacity: 0; transform: translateY(10px); }
13
+ to { opacity: 1; transform: translateY(0); }
14
+ }
15
+
16
+ .fade-in {
17
+ animation: fadeIn 0.3s ease-out forwards;
18
+ }
19
+
20
+ /* Custom scrollbar */
21
+ ::-webkit-scrollbar {
22
+ width: 8px;
23
+ }
24
+
25
+ ::-webkit-scrollbar-track {
26
+ background: #f1f1f1;
27
+ border-radius: 10px;
28
+ }
29
+
30
+ ::-webkit-scrollbar-thumb {
31
+ background: #888;
32
+ border-radius: 10px;
33
+ }
34
+
35
+ ::-webkit-scrollbar-thumb:hover {
36
+ background: #555;
37
+ }
38
+
39
+ /* Pulse animation for notifications */
40
+ @keyframes pulse {
41
+ 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4); }
42
+ 70% { box-shadow: 0 0 0 10px rgba(59, 130, 246, 0); }
43
+ 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); }
44
+ }
45
+
46
+ .pulse {
47
+ animation: pulse 2s infinite;
48
+ }
49
  </style>
50
+ </head>
51
+ <body class="bg-gray-50 font-sans">
52
+ <!-- Header -->
53
+ <header class="bg-white shadow-sm sticky top-0 z-10">
54
+ <div class="container mx-auto px-4 py-3 flex justify-between items-center">
55
+ <div class="flex items-center space-x-2">
56
+ <i class="fas fa-briefcase text-blue-500 text-2xl"></i>
57
+ <h1 class="text-xl font-bold text-gray-800">CareerConnect</h1>
58
+ </div>
59
+ <div class="flex items-center space-x-4">
60
+ <button id="notificationBtn" class="relative p-2 rounded-full hover:bg-gray-100">
61
+ <i class="fas fa-bell text-gray-600"></i>
62
+ <span id="notificationCount" class="absolute -top-1 -right-1 bg-red-500 text-white text-xs rounded-full h-5 w-5 flex items-center justify-center hidden">0</span>
63
+ </button>
64
+ <button class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg transition duration-200">
65
+ <i class="fas fa-user-plus mr-2"></i>Sign Up
66
+ </button>
67
+ </div>
68
+ </div>
69
+ </header>
70
+
71
+ <!-- Main Content -->
72
+ <main class="container mx-auto px-4 py-6">
73
+ <!-- Hero Section -->
74
+ <section class="bg-gradient-to-r from-blue-500 to-indigo-600 rounded-xl p-6 mb-8 text-white">
75
+ <div class="max-w-2xl">
76
+ <h2 class="text-3xl font-bold mb-4">Find Your Dream Job or Internship</h2>
77
+ <p class="mb-6">Get personalized job and internship notifications based on your skills and preferences.</p>
78
+ <div class="flex flex-col sm:flex-row gap-3">
79
+ <input type="text" placeholder="Job title, keywords" class="flex-grow px-4 py-3 rounded-lg text-gray-800 focus:outline-none">
80
+ <input type="text" placeholder="Location" class="flex-grow px-4 py-3 rounded-lg text-gray-800 focus:outline-none">
81
+ <button class="bg-white text-blue-600 px-6 py-3 rounded-lg font-semibold hover:bg-gray-100 transition duration-200">
82
+ <i class="fas fa-search mr-2"></i>Search
83
+ </button>
84
+ </div>
85
+ </div>
86
+ </section>
87
+
88
+ <!-- Filter Section -->
89
+ <section class="bg-white rounded-xl shadow-sm p-4 mb-8">
90
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
91
+ <div class="flex items-center space-x-2">
92
+ <span class="text-gray-600">Filter by:</span>
93
+ <select class="border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-300">
94
+ <option>All Types</option>
95
+ <option>Full-time</option>
96
+ <option>Part-time</option>
97
+ <option>Internship</option>
98
+ <option>Contract</option>
99
+ </select>
100
+ <select class="border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-300">
101
+ <option>All Industries</option>
102
+ <option>Technology</option>
103
+ <option>Finance</option>
104
+ <option>Healthcare</option>
105
+ <option>Education</option>
106
+ <option>Marketing</option>
107
+ </select>
108
+ </div>
109
+ <div class="flex items-center space-x-2">
110
+ <span class="text-gray-600">Sort by:</span>
111
+ <select class="border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-300">
112
+ <option>Most Recent</option>
113
+ <option>Relevance</option>
114
+ <option>Salary: High to Low</option>
115
+ <option>Deadline</option>
116
+ </select>
117
+ </div>
118
+ </div>
119
+ </section>
120
+
121
+ <!-- Job Listings -->
122
+ <section class="mb-8">
123
+ <div class="flex justify-between items-center mb-4">
124
+ <h2 class="text-xl font-bold text-gray-800">Latest Opportunities</h2>
125
+ <div class="flex space-x-2">
126
+ <button id="showJobs" class="px-4 py-2 bg-blue-500 text-white rounded-lg">Jobs</button>
127
+ <button id="showInternships" class="px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300">Internships</button>
128
+ </div>
129
+ </div>
130
+
131
+ <div id="jobListings" class="grid gap-4">
132
+ <!-- Jobs will be loaded here -->
133
+ </div>
134
+
135
+ <div id="internshipListings" class="grid gap-4 hidden">
136
+ <!-- Internships will be loaded here -->
137
+ </div>
138
+
139
+ <div class="mt-6 text-center">
140
+ <button class="px-6 py-2 border border-blue-500 text-blue-500 rounded-lg hover:bg-blue-50 transition duration-200">
141
+ Load More
142
+ </button>
143
+ </div>
144
+ </section>
145
+
146
+ <!-- Features Section -->
147
+ <section class="bg-white rounded-xl shadow-sm p-6 mb-8">
148
+ <h2 class="text-xl font-bold text-gray-800 mb-6">Why Choose CareerConnect?</h2>
149
+ <div class="grid md:grid-cols-3 gap-6">
150
+ <div class="bg-blue-50 p-4 rounded-lg">
151
+ <div class="flex items-center mb-3">
152
+ <div class="bg-blue-100 p-3 rounded-full mr-3">
153
+ <i class="fas fa-bell text-blue-500"></i>
154
+ </div>
155
+ <h3 class="font-semibold">Instant Alerts</h3>
156
+ </div>
157
+ <p class="text-gray-600">Get real-time notifications for new job postings that match your profile.</p>
158
+ </div>
159
+ <div class="bg-purple-50 p-4 rounded-lg">
160
+ <div class="flex items-center mb-3">
161
+ <div class="bg-purple-100 p-3 rounded-full mr-3">
162
+ <i class="fas fa-filter text-purple-500"></i>
163
+ </div>
164
+ <h3 class="font-semibold">Smart Filters</h3>
165
+ </div>
166
+ <p class="text-gray-600">Customize your search with advanced filters for location, salary, and more.</p>
167
+ </div>
168
+ <div class="bg-green-50 p-4 rounded-lg">
169
+ <div class="flex items-center mb-3">
170
+ <div class="bg-green-100 p-3 rounded-full mr-3">
171
+ <i class="fas fa-chart-line text-green-500"></i>
172
+ </div>
173
+ <h3 class="font-semibold">Career Growth</h3>
174
+ </div>
175
+ <p class="text-gray-600">Discover opportunities that align with your long-term career goals.</p>
176
+ </div>
177
+ </div>
178
+ </section>
179
+ </main>
180
+
181
+ <!-- Notification Panel (Hidden by default) -->
182
+ <div id="notificationPanel" class="fixed top-16 right-4 w-80 bg-white rounded-xl shadow-lg z-20 hidden transform transition-all duration-300 ease-in-out">
183
+ <div class="p-4 border-b border-gray-200 flex justify-between items-center">
184
+ <h3 class="font-semibold">Notifications</h3>
185
+ <button id="closeNotifications" class="text-gray-500 hover:text-gray-700">
186
+ <i class="fas fa-times"></i>
187
+ </button>
188
+ </div>
189
+ <div id="notificationContent" class="max-h-96 overflow-y-auto">
190
+ <!-- Notifications will be loaded here -->
191
+ <div class="p-4 text-center text-gray-500">
192
+ No new notifications
193
+ </div>
194
+ </div>
195
+ <div class="p-3 border-t border-gray-200 text-center">
196
+ <button class="text-blue-500 text-sm font-medium hover:text-blue-600">View All</button>
197
+ </div>
198
+ </div>
199
+
200
+ <!-- Footer -->
201
+ <footer class="bg-gray-800 text-white py-8">
202
+ <div class="container mx-auto px-4">
203
+ <div class="grid md:grid-cols-4 gap-8">
204
+ <div>
205
+ <h3 class="text-lg font-semibold mb-4">CareerConnect</h3>
206
+ <p class="text-gray-400">Connecting talent with opportunity since 2023.</p>
207
+ <div class="flex space-x-4 mt-4">
208
+ <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-facebook-f"></i></a>
209
+ <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-twitter"></i></a>
210
+ <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-linkedin-in"></i></a>
211
+ <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-instagram"></i></a>
212
+ </div>
213
+ </div>
214
+ <div>
215
+ <h3 class="text-lg font-semibold mb-4">For Job Seekers</h3>
216
+ <ul class="space-y-2">
217
+ <li><a href="#" class="text-gray-400 hover:text-white">Browse Jobs</a></li>
218
+ <li><a href="#" class="text-gray-400 hover:text-white">Browse Internships</a></li>
219
+ <li><a href="#" class="text-gray-400 hover:text-white">Job Alerts</a></li>
220
+ <li><a href="#" class="text-gray-400 hover:text-white">Career Advice</a></li>
221
+ </ul>
222
+ </div>
223
+ <div>
224
+ <h3 class="text-lg font-semibold mb-4">For Employers</h3>
225
+ <ul class="space-y-2">
226
+ <li><a href="#" class="text-gray-400 hover:text-white">Post a Job</a></li>
227
+ <li><a href="#" class="text-gray-400 hover:text-white">Post an Internship</a></li>
228
+ <li><a href="#" class="text-gray-400 hover:text-white">Browse Candidates</a></li>
229
+ <li><a href="#" class="text-gray-400 hover:text-white">Pricing</a></li>
230
+ </ul>
231
+ </div>
232
+ <div>
233
+ <h3 class="text-lg font-semibold mb-4">Contact Us</h3>
234
+ <ul class="space-y-2">
235
+ <li class="flex items-center text-gray-400"><i class="fas fa-envelope mr-2"></i> support@careerconnect.com</li>
236
+ <li class="flex items-center text-gray-400"><i class="fas fa-phone mr-2"></i> +1 (555) 123-4567</li>
237
+ <li class="flex items-center text-gray-400"><i class="fas fa-map-marker-alt mr-2"></i> 123 Career St, San Francisco, CA</li>
238
+ </ul>
239
+ </div>
240
+ </div>
241
+ <div class="border-t border-gray-700 mt-8 pt-6 text-center text-gray-400">
242
+ <p>&copy; 2023 CareerConnect. All rights reserved.</p>
243
+ </div>
244
+ </div>
245
+ </footer>
246
+
247
+ <script>
248
+ // Sample data for jobs and internships
249
+ const jobData = [
250
+ {
251
+ id: 1,
252
+ title: "Frontend Developer",
253
+ company: "TechCorp",
254
+ location: "San Francisco, CA",
255
+ type: "Full-time",
256
+ salary: "$90,000 - $120,000",
257
+ posted: "2 days ago",
258
+ description: "We're looking for a skilled Frontend Developer with experience in React and modern JavaScript frameworks.",
259
+ logo: "💻",
260
+ urgent: true
261
+ },
262
+ {
263
+ id: 2,
264
+ title: "UX Designer",
265
+ company: "DesignHub",
266
+ location: "Remote",
267
+ type: "Full-time",
268
+ salary: "$85,000 - $110,000",
269
+ posted: "1 week ago",
270
+ description: "Join our design team to create beautiful and intuitive user experiences for our products.",
271
+ logo: "🎨",
272
+ urgent: false
273
+ },
274
+ {
275
+ id: 3,
276
+ title: "Data Scientist",
277
+ company: "AnalyticsPro",
278
+ location: "New York, NY",
279
+ type: "Full-time",
280
+ salary: "$100,000 - $140,000",
281
+ posted: "3 days ago",
282
+ description: "Work with large datasets to derive insights and build predictive models for our clients.",
283
+ logo: "📊",
284
+ urgent: true
285
+ },
286
+ {
287
+ id: 4,
288
+ title: "Marketing Manager",
289
+ company: "GrowthMarketing",
290
+ location: "Chicago, IL",
291
+ type: "Full-time",
292
+ salary: "$75,000 - $95,000",
293
+ posted: "5 days ago",
294
+ description: "Lead our marketing team and develop strategies to grow our customer base.",
295
+ logo: "📈",
296
+ urgent: false
297
+ }
298
+ ];
299
+
300
+ const internshipData = [
301
+ {
302
+ id: 101,
303
+ title: "Software Engineering Intern",
304
+ company: "TechStart",
305
+ location: "Austin, TX",
306
+ type: "Internship",
307
+ duration: "3 months",
308
+ stipend: "$4,000/month",
309
+ posted: "1 day ago",
310
+ description: "Gain hands-on experience working on real projects with our engineering team.",
311
+ logo: "👨‍💻",
312
+ deadline: "2023-12-15"
313
+ },
314
+ {
315
+ id: 102,
316
+ title: "Marketing Intern",
317
+ company: "BrandBoost",
318
+ location: "Remote",
319
+ type: "Internship",
320
+ duration: "6 months",
321
+ stipend: "$2,500/month",
322
+ posted: "4 days ago",
323
+ description: "Assist with social media campaigns, content creation, and market research.",
324
+ logo: "📢",
325
+ deadline: "2023-12-20"
326
+ },
327
+ {
328
+ id: 103,
329
+ title: "Data Analyst Intern",
330
+ company: "DataInsights",
331
+ location: "Boston, MA",
332
+ type: "Internship",
333
+ duration: "4 months",
334
+ stipend: "$3,500/month",
335
+ posted: "1 week ago",
336
+ description: "Work with our analytics team to process and visualize data for clients.",
337
+ logo: "🔍",
338
+ deadline: "2023-12-10"
339
+ }
340
+ ];
341
+
342
+ const notifications = [
343
+ {
344
+ id: 1,
345
+ title: "New job matches your profile",
346
+ content: "Frontend Developer at TechCorp matches your skills",
347
+ time: "2 hours ago",
348
+ read: false,
349
+ type: "job"
350
+ },
351
+ {
352
+ id: 2,
353
+ title: "Application deadline reminder",
354
+ content: "Software Engineering Intern at TechStart closes in 3 days",
355
+ time: "1 day ago",
356
+ read: false,
357
+ type: "internship"
358
+ },
359
+ {
360
+ id: 3,
361
+ title: "Profile viewed",
362
+ content: "Your profile was viewed by 3 recruiters this week",
363
+ time: "3 days ago",
364
+ read: true,
365
+ type: "update"
366
+ }
367
+ ];
368
+
369
+ // DOM Elements
370
+ const jobListingsEl = document.getElementById('jobListings');
371
+ const internshipListingsEl = document.getElementById('internshipListings');
372
+ const showJobsBtn = document.getElementById('showJobs');
373
+ const showInternshipsBtn = document.getElementById('showInternships');
374
+ const notificationBtn = document.getElementById('notificationBtn');
375
+ const notificationPanel = document.getElementById('notificationPanel');
376
+ const closeNotificationsBtn = document.getElementById('closeNotifications');
377
+ const notificationContent = document.getElementById('notificationContent');
378
+ const notificationCount = document.getElementById('notificationCount');
379
+
380
+ // Initialize the app
381
+ document.addEventListener('DOMContentLoaded', function() {
382
+ renderJobListings();
383
+ renderInternshipListings();
384
+ renderNotifications();
385
+ updateNotificationCount();
386
+ });
387
+
388
+ // Render job listings
389
+ function renderJobListings() {
390
+ jobListingsEl.innerHTML = '';
391
+
392
+ jobData.forEach(job => {
393
+ const jobEl = document.createElement('div');
394
+ jobEl.className = 'bg-white rounded-xl shadow-sm p-6 fade-in hover:shadow-md transition duration-200';
395
+ jobEl.innerHTML = `
396
+ <div class="flex flex-col sm:flex-row sm:items-center gap-4">
397
+ <div class="flex-shrink-0 w-16 h-16 bg-blue-100 rounded-lg flex items-center justify-center text-2xl">
398
+ ${job.logo}
399
+ </div>
400
+ <div class="flex-grow">
401
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2">
402
+ <div>
403
+ <h3 class="font-bold text-lg text-gray-800">${job.title}</h3>
404
+ <p class="text-gray-600">${job.company} • ${job.location}</p>
405
+ </div>
406
+ ${job.urgent ? '<span class="bg-red-100 text-red-800 text-xs px-2 py-1 rounded-full">Urgent</span>' : ''}
407
+ </div>
408
+ <div class="mt-3 flex flex-wrap gap-2">
409
+ <span class="bg-gray-100 text-gray-800 text-xs px-3 py-1 rounded-full">${job.type}</span>
410
+ <span class="bg-green-100 text-green-800 text-xs px-3 py-1 rounded-full">${job.salary}</span>
411
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Posted ${job.posted}</span>
412
+ </div>
413
+ <p class="mt-3 text-gray-700">${job.description}</p>
414
+ <div class="mt-4 flex justify-between items-center">
415
+ <button class="text-blue-500 hover:text-blue-700 font-medium">Save</button>
416
+ <button class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg transition duration-200">
417
+ Apply Now
418
+ </button>
419
+ </div>
420
+ </div>
421
+ </div>
422
+ `;
423
+ jobListingsEl.appendChild(jobEl);
424
+ });
425
+ }
426
+
427
+ // Render internship listings
428
+ function renderInternshipListings() {
429
+ internshipListingsEl.innerHTML = '';
430
+
431
+ internshipData.forEach(internship => {
432
+ const internshipEl = document.createElement('div');
433
+ internshipEl.className = 'bg-white rounded-xl shadow-sm p-6 fade-in hover:shadow-md transition duration-200';
434
+ internshipEl.innerHTML = `
435
+ <div class="flex flex-col sm:flex-row sm:items-center gap-4">
436
+ <div class="flex-shrink-0 w-16 h-16 bg-purple-100 rounded-lg flex items-center justify-center text-2xl">
437
+ ${internship.logo}
438
+ </div>
439
+ <div class="flex-grow">
440
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2">
441
+ <div>
442
+ <h3 class="font-bold text-lg text-gray-800">${internship.title}</h3>
443
+ <p class="text-gray-600">${internship.company} • ${internship.location}</p>
444
+ </div>
445
+ <span class="bg-yellow-100 text-yellow-800 text-xs px-2 py-1 rounded-full">Deadline: ${formatDate(internship.deadline)}</span>
446
+ </div>
447
+ <div class="mt-3 flex flex-wrap gap-2">
448
+ <span class="bg-gray-100 text-gray-800 text-xs px-3 py-1 rounded-full">${internship.type}</span>
449
+ <span class="bg-purple-100 text-purple-800 text-xs px-3 py-1 rounded-full">${internship.duration}</span>
450
+ <span class="bg-green-100 text-green-800 text-xs px-3 py-1 rounded-full">${internship.stipend}</span>
451
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Posted ${internship.posted}</span>
452
+ </div>
453
+ <p class="mt-3 text-gray-700">${internship.description}</p>
454
+ <div class="mt-4 flex justify-between items-center">
455
+ <button class="text-blue-500 hover:text-blue-700 font-medium">Save</button>
456
+ <button class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg transition duration-200">
457
+ Apply Now
458
+ </button>
459
+ </div>
460
+ </div>
461
+ </div>
462
+ `;
463
+ internshipListingsEl.appendChild(internshipEl);
464
+ });
465
+ }
466
+
467
+ // Format date
468
+ function formatDate(dateString) {
469
+ const options = { year: 'numeric', month: 'short', day: 'numeric' };
470
+ return new Date(dateString).toLocaleDateString('en-US', options);
471
+ }
472
+
473
+ // Toggle between jobs and internships
474
+ showJobsBtn.addEventListener('click', function() {
475
+ showJobsBtn.classList.remove('bg-gray-200', 'text-gray-700');
476
+ showJobsBtn.classList.add('bg-blue-500', 'text-white');
477
+ showInternshipsBtn.classList.remove('bg-blue-500', 'text-white');
478
+ showInternshipsBtn.classList.add('bg-gray-200', 'text-gray-700');
479
+ jobListingsEl.classList.remove('hidden');
480
+ internshipListingsEl.classList.add('hidden');
481
+ });
482
+
483
+ showInternshipsBtn.addEventListener('click', function() {
484
+ showInternshipsBtn.classList.remove('bg-gray-200', 'text-gray-700');
485
+ showInternshipsBtn.classList.add('bg-blue-500', 'text-white');
486
+ showJobsBtn.classList.remove('bg-blue-500', 'text-white');
487
+ showJobsBtn.classList.add('bg-gray-200', 'text-gray-700');
488
+ internshipListingsEl.classList.remove('hidden');
489
+ jobListingsEl.classList.add('hidden');
490
+ });
491
+
492
+ // Notification functionality
493
+ notificationBtn.addEventListener('click', function() {
494
+ notificationPanel.classList.toggle('hidden');
495
+ // Mark notifications as read when panel is opened
496
+ if (!notificationPanel.classList.contains('hidden')) {
497
+ notifications.forEach(notification => notification.read = true);
498
+ updateNotificationCount();
499
+ renderNotifications();
500
+ }
501
+ });
502
+
503
+ closeNotificationsBtn.addEventListener('click', function() {
504
+ notificationPanel.classList.add('hidden');
505
+ });
506
+
507
+ // Render notifications
508
+ function renderNotifications() {
509
+ notificationContent.innerHTML = '';
510
+
511
+ if (notifications.length === 0) {
512
+ notificationContent.innerHTML = '<div class="p-4 text-center text-gray-500">No new notifications</div>';
513
+ return;
514
+ }
515
+
516
+ notifications.forEach(notification => {
517
+ const notificationEl = document.createElement('div');
518
+ notificationEl.className = `p-4 border-b border-gray-100 ${!notification.read ? 'bg-blue-50' : ''}`;
519
+ notificationEl.innerHTML = `
520
+ <div class="flex items-start gap-3">
521
+ <div class="mt-1 flex-shrink-0">
522
+ ${getNotificationIcon(notification.type)}
523
+ </div>
524
+ <div>
525
+ <h4 class="font-medium text-gray-800">${notification.title}</h4>
526
+ <p class="text-sm text-gray-600 mt-1">${notification.content}</p>
527
+ <p class="text-xs text-gray-500 mt-2">${notification.time}</p>
528
+ </div>
529
+ </div>
530
+ `;
531
+ notificationContent.appendChild(notificationEl);
532
+ });
533
+ }
534
+
535
+ // Get appropriate icon for notification type
536
+ function getNotificationIcon(type) {
537
+ switch(type) {
538
+ case 'job':
539
+ return '<i class="fas fa-briefcase text-blue-500"></i>';
540
+ case 'internship':
541
+ return '<i class="fas fa-user-graduate text-purple-500"></i>';
542
+ default:
543
+ return '<i class="fas fa-info-circle text-gray-500"></i>';
544
+ }
545
+ }
546
+
547
+ // Update notification badge count
548
+ function updateNotificationCount() {
549
+ const unreadCount = notifications.filter(n => !n.read).length;
550
+ if (unreadCount > 0) {
551
+ notificationCount.textContent = unreadCount;
552
+ notificationCount.classList.remove('hidden');
553
+ notificationBtn.classList.add('pulse');
554
+ } else {
555
+ notificationCount.classList.add('hidden');
556
+ notificationBtn.classList.remove('pulse');
557
+ }
558
+ }
559
+
560
+ // Close notification panel when clicking outside
561
+ document.addEventListener('click', function(event) {
562
+ if (!notificationPanel.contains(event.target) && !notificationBtn.contains(event.target)) {
563
+ notificationPanel.classList.add('hidden');
564
+ }
565
+ });
566
+
567
+ // Simulate new notification every 30 seconds for demo purposes
568
+ setInterval(function() {
569
+ const types = ['job', 'internship', 'update'];
570
+ const newNotification = {
571
+ id: Date.now(),
572
+ title: "New " + (Math.random() > 0.5 ? "job" : "internship") + " available",
573
+ content: "A new opportunity matches your profile",
574
+ time: "Just now",
575
+ read: false,
576
+ type: types[Math.floor(Math.random() * types.length)]
577
+ };
578
+ notifications.unshift(newNotification);
579
+ updateNotificationCount();
580
+ renderNotifications();
581
+ }, 30000);
582
+ </script>
583
+ <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=suryalokula/deepseek" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body>
584
+ </html>