naklitechie commited on
Commit
f1d7b6e
·
verified ·
1 Parent(s): 2aeac7e

Add 1 files

Browse files
Files changed (1) hide show
  1. index.html +351 -482
index.html CHANGED
@@ -6,6 +6,7 @@
6
  <title>Ad Engine Dashboard</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
  .sidebar {
11
  transition: all 0.3s ease;
@@ -85,6 +86,17 @@
85
  background-color: #3b82f6;
86
  transition: width 0.3s ease;
87
  }
 
 
 
 
 
 
 
 
 
 
 
88
  </style>
89
  </head>
90
  <body class="bg-gray-50">
@@ -99,11 +111,11 @@
99
  </div>
100
  <nav class="flex-1 overflow-y-auto p-4">
101
  <div class="space-y-2">
102
- <a href="#" class="nav-link flex items-center p-3 rounded-lg text-gray-700 hover:bg-blue-50 hover:text-blue-600 transition" data-page="dashboard">
103
  <i class="fas fa-tachometer-alt mr-3"></i>
104
  Dashboard
105
  </a>
106
- <a href="#" class="nav-link flex items-center p-3 rounded-lg bg-blue-50 text-blue-600 font-medium" data-page="campaigns">
107
  <i class="fas fa-bullhorn mr-3"></i>
108
  Campaigns
109
  </a>
@@ -144,48 +156,141 @@
144
  <button class="mr-4 text-gray-500 hover:text-gray-700">
145
  <i class="fas fa-bars"></i>
146
  </button>
147
- <h2 class="text-xl font-semibold text-gray-800">Campaigns</h2>
148
  </div>
149
  <div class="flex items-center space-x-4">
150
  <div class="relative">
151
  <input type="text" placeholder="Search..." class="pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
152
  <i class="fas fa-search absolute left-3 top-3 text-gray-400"></i>
153
  </div>
154
- <button class="text-gray-500 hover:text-gray-700">
155
  <i class="fas fa-bell"></i>
 
156
  </button>
157
  </div>
158
  </header>
159
 
160
- <!-- Campaign Sub Navigation -->
161
- <div class="bg-white border-b border-gray-200 px-6">
162
- <div class="flex space-x-6">
163
- <a href="#" class="tab py-4 active" data-subpage="listing">All Campaigns</a>
164
- <a href="#" class="tab py-4" data-subpage="preview">Creative Preview</a>
165
- <a href="#" class="tab py-4" data-subpage="setup">New Campaign</a>
166
- </div>
167
- </div>
168
-
169
- <!-- Page Content -->
170
  <main class="flex-1 overflow-y-auto p-6 bg-gray-50">
171
- <!-- Listing Page -->
172
- <div id="listing-page" class="page active">
 
173
  <div class="flex justify-between items-center mb-6">
174
- <h3 class="text-lg font-semibold text-gray-800">Active Campaigns</h3>
175
- <div class="flex space-x-3">
176
- <select class="border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
177
- <option>All Status</option>
178
- <option>Active</option>
179
- <option>Paused</option>
180
- <option>Pending</option>
181
- </select>
182
- <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition flex items-center">
183
- <i class="fas fa-plus mr-2"></i> New Campaign
184
  </button>
185
  </div>
186
  </div>
187
 
188
- <div class="bg-white rounded-lg shadow overflow-hidden">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  <div class="overflow-x-auto">
190
  <table class="min-w-full divide-y divide-gray-200">
191
  <thead class="bg-gray-50">
@@ -195,8 +300,8 @@
195
  <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Impressions</th>
196
  <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Clicks</th>
197
  <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">CTR</th>
198
- <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Budget</th>
199
- <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th>
200
  </tr>
201
  </thead>
202
  <tbody class="bg-white divide-y divide-gray-200">
@@ -218,11 +323,8 @@
218
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">245,678</td>
219
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">12,345</td>
220
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">5.03%</td>
221
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$5,000</td>
222
- <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
223
- <button class="text-blue-600 hover:text-blue-900 mr-3">Edit</button>
224
- <button class="text-red-600 hover:text-red-900">Pause</button>
225
- </td>
226
  </tr>
227
  <tr>
228
  <td class="px-6 py-4 whitespace-nowrap">
@@ -237,509 +339,275 @@
237
  </div>
238
  </td>
239
  <td class="px-6 py-4 whitespace-nowrap">
240
- <span class="status-badge status-paused">Paused</span>
241
  </td>
242
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">189,234</td>
243
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">8,765</td>
244
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.63%</td>
245
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$3,500</td>
246
- <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
247
- <button class="text-blue-600 hover:text-blue-900 mr-3">Edit</button>
248
- <button class="text-green-600 hover:text-green-900">Resume</button>
249
- </td>
250
  </tr>
251
  <tr>
252
  <td class="px-6 py-4 whitespace-nowrap">
253
  <div class="flex items-center">
254
- <div class="flex-shrink-0 h-10 w-10 bg-yellow-100 rounded-lg flex items-center justify-center">
255
- <i class="fas fa-gift text-yellow-600"></i>
256
  </div>
257
  <div class="ml-4">
258
- <div class="text-sm font-medium text-gray-900">Holiday Special</div>
259
- <div class="text-sm text-gray-500">Retargeting</div>
260
  </div>
261
  </div>
262
  </td>
263
  <td class="px-6 py-4 whitespace-nowrap">
264
- <span class="status-badge status-pending">Pending</span>
265
- </td>
266
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
267
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
268
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
269
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$7,500</td>
270
- <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
271
- <button class="text-blue-600 hover:text-blue-900 mr-3">Edit</button>
272
- <button class="text-gray-600 hover:text-gray-900">Cancel</button>
273
  </td>
 
 
 
 
 
274
  </tr>
275
  <tr>
276
  <td class="px-6 py-4 whitespace-nowrap">
277
  <div class="flex items-center">
278
- <div class="flex-shrink-0 h-10 w-10 bg-green-100 rounded-lg flex items-center justify-center">
279
- <i class="fas fa-newspaper text-green-600"></i>
280
  </div>
281
  <div class="ml-4">
282
- <div class="text-sm font-medium text-gray-900">Content Marketing</div>
283
- <div class="text-sm text-gray-500">Awareness</div>
284
  </div>
285
  </div>
286
  </td>
287
  <td class="px-6 py-4 whitespace-nowrap">
288
- <span class="status-badge status-active">Active</span>
289
- </td>
290
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">321,456</td>
291
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">15,678</td>
292
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.88%</td>
293
- <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$6,000</td>
294
- <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
295
- <button class="text-blue-600 hover:text-blue-900 mr-3">Edit</button>
296
- <button class="text-red-600 hover:text-red-900">Pause</button>
297
  </td>
 
 
 
 
 
298
  </tr>
299
  </tbody>
300
  </table>
301
  </div>
302
- <div class="bg-white px-4 py-3 flex items-center justify-between border-t border-gray-200 sm:px-6">
303
- <div class="flex-1 flex justify-between sm:hidden">
304
- <a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"> Previous </a>
305
- <a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"> Next </a>
306
- </div>
307
- <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
308
- <div>
309
- <p class="text-sm text-gray-700">
310
- Showing <span class="font-medium">1</span> to <span class="font-medium">4</span> of <span class="font-medium">12</span> results
311
- </p>
312
- </div>
313
- <div>
314
- <nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
315
- <a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
316
- <span class="sr-only">Previous</span>
317
- <i class="fas fa-chevron-left"></i>
318
- </a>
319
- <a href="#" aria-current="page" class="z-10 bg-blue-50 border-blue-500 text-blue-600 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 1 </a>
320
- <a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 2 </a>
321
- <a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 3 </a>
322
- <a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
323
- <span class="sr-only">Next</span>
324
- <i class="fas fa-chevron-right"></i>
325
- </a>
326
- </nav>
327
- </div>
328
- </div>
329
- </div>
330
  </div>
331
- </div>
332
 
333
- <!-- Preview Page -->
334
- <div id="preview-page" class="page">
335
- <div class="flex justify-between items-center mb-6">
336
- <h3 class="text-lg font-semibold text-gray-800">Creative Preview</h3>
337
- <div class="flex space-x-3">
338
- <select class="border border-gray-300 rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
339
- <option>All Formats</option>
340
- <option>Banner</option>
341
- <option>Video</option>
342
- <option>Native</option>
343
- </select>
344
- <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition flex items-center">
345
- <i class="fas fa-filter mr-2"></i> Filter
346
- </button>
347
  </div>
348
- </div>
349
-
350
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
351
- <!-- Ad Preview 1 -->
352
- <div class="bg-white rounded-lg shadow overflow-hidden">
353
- <div class="p-4 border-b border-gray-200">
354
- <div class="flex justify-between items-center">
355
- <h4 class="font-medium text-gray-800">Standard Banner (300x250)</h4>
356
- <span class="status-badge status-active">Active</span>
357
  </div>
358
- <p class="text-sm text-gray-500 mt-1">Summer Sale Campaign</p>
359
- </div>
360
- <div class="p-4">
361
- <div class="ad-preview-container">
362
- <div class="ad-preview w-full max-w-xs">
363
- <img src="https://via.placeholder.com/300x250" alt="Ad Preview" class="w-full">
364
- <div class="p-3">
365
- <h5 class="font-bold text-lg">Summer Sale!</h5>
366
- <p class="text-sm text-gray-600">Up to 50% off on selected items</p>
367
- <button class="mt-2 bg-blue-600 text-white px-3 py-1 rounded text-sm">Shop Now</button>
368
- </div>
369
- </div>
370
  </div>
 
 
 
371
  </div>
372
- <div class="px-4 py-3 bg-gray-50 flex justify-between items-center">
373
- <div class="text-sm text-gray-500">
374
- <span class="font-medium">CTR:</span> 4.8%
375
  </div>
376
- <div class="flex space-x-2">
377
- <button class="text-blue-600 hover:text-blue-800">
378
- <i class="fas fa-edit"></i>
379
- </button>
380
- <button class="text-green-600 hover:text-green-800">
381
- <i class="fas fa-chart-line"></i>
382
- </button>
383
- <button class="text-red-600 hover:text-red-800">
384
- <i class="fas fa-trash"></i>
385
- </button>
386
  </div>
 
 
 
387
  </div>
388
- </div>
389
-
390
- <!-- Ad Preview 2 -->
391
- <div class="bg-white rounded-lg shadow overflow-hidden">
392
- <div class="p-4 border-b border-gray-200">
393
- <div class="flex justify-between items-center">
394
- <h4 class="font-medium text-gray-800">Video Ad (16:9)</h4>
395
- <span class="status-badge status-paused">Paused</span>
396
  </div>
397
- <p class="text-sm text-gray-500 mt-1">Mobile App Campaign</p>
398
- </div>
399
- <div class="p-4">
400
- <div class="ad-preview-container">
401
- <div class="ad-preview w-full max-w-xs">
402
- <div class="relative">
403
- <img src="https://via.placeholder.com/320x180" alt="Video Thumbnail" class="w-full">
404
- <div class="absolute inset-0 flex items-center justify-center">
405
- <button class="bg-black bg-opacity-50 text-white rounded-full p-3">
406
- <i class="fas fa-play"></i>
407
- </button>
408
- </div>
409
- </div>
410
- <div class="p-3">
411
- <h5 class="font-bold text-lg">Try Our New App</h5>
412
- <p class="text-sm text-gray-600">Download now and get 30 days free trial</p>
413
- </div>
414
- </div>
415
  </div>
 
 
 
416
  </div>
417
- <div class="px-4 py-3 bg-gray-50 flex justify-between items-center">
418
- <div class="text-sm text-gray-500">
419
- <span class="font-medium">CTR:</span> 3.2%
420
  </div>
421
- <div class="flex space-x-2">
422
- <button class="text-blue-600 hover:text-blue-800">
423
- <i class="fas fa-edit"></i>
424
- </button>
425
- <button class="text-green-600 hover:text-green-800">
426
- <i class="fas fa-chart-line"></i>
427
- </button>
428
- <button class="text-red-600 hover:text-red-800">
429
- <i class="fas fa-trash"></i>
430
- </button>
431
  </div>
 
 
 
432
  </div>
433
  </div>
434
-
435
- <!-- Ad Preview 3 -->
436
- <div class="bg-white rounded-lg shadow overflow-hidden">
437
- <div class="p-4 border-b border-gray-200">
438
- <div class="flex justify-between items-center">
439
- <h4 class="font-medium text-gray-800">Native Ad</h4>
440
- <span class="status-badge status-active">Active</span>
441
- </div>
442
- <p class="text-sm text-gray-500 mt-1">Content Marketing</p>
443
- </div>
444
- <div class="p-4">
445
- <div class="ad-preview-container">
446
- <div class="ad-preview w-full max-w-xs">
447
- <div class="p-4">
448
- <div class="flex items-start">
449
- <img src="https://via.placeholder.com/60" alt="Logo" class="w-12 h-12 rounded mr-3">
450
- <div>
451
- <p class="text-xs text-gray-500">Sponsored</p>
452
- <h5 class="font-bold text-sm">The Ultimate Guide to Marketing</h5>
453
- </div>
454
- </div>
455
- <img src="https://via.placeholder.com/280x150" alt="Content Image" class="w-full mt-3">
456
- <p class="text-sm text-gray-600 mt-2">Learn how to boost your marketing strategy with our comprehensive guide...</p>
457
- <button class="mt-2 text-blue-600 text-sm font-medium">Read More</button>
458
- </div>
459
- </div>
460
- </div>
461
- </div>
462
- <div class="px-4 py-3 bg-gray-50 flex justify-between items-center">
463
- <div class="text-sm text-gray-500">
464
- <span class="font-medium">CTR:</span> 6.1%
465
- </div>
466
- <div class="flex space-x-2">
467
- <button class="text-blue-600 hover:text-blue-800">
468
- <i class="fas fa-edit"></i>
469
- </button>
470
- <button class="text-green-600 hover:text-green-800">
471
- <i class="fas fa-chart-line"></i>
472
- </button>
473
- <button class="text-red-600 hover:text-red-800">
474
- <i class="fas fa-trash"></i>
475
- </button>
476
- </div>
477
- </div>
478
  </div>
479
  </div>
480
  </div>
481
 
482
- <!-- Campaign Setup Page -->
483
- <div id="setup-page" class="page">
484
- <div class="bg-white rounded-lg shadow overflow-hidden">
485
- <div class="p-6 border-b border-gray-200">
486
- <h3 class="text-lg font-semibold text-gray-800">New Campaign Setup</h3>
487
- <p class="text-sm text-gray-500 mt-1">Fill in the details below to create a new advertising campaign</p>
488
- </div>
489
-
490
- <!-- Progress Bar -->
491
- <div class="px-6 pt-4">
492
- <div class="flex justify-between mb-1">
493
- <span class="text-sm font-medium text-gray-700">Step <span id="current-step">1</span> of 4</span>
494
- <span class="text-sm text-gray-500">30% complete</span>
495
- </div>
496
- <div class="progress-bar">
497
- <div class="progress-fill" style="width: 30%"></div>
498
- </div>
499
  </div>
 
500
 
501
- <!-- Form Steps -->
502
- <div class="p-6">
503
- <!-- Step 1: Campaign Details -->
504
- <div id="step-1" class="form-step active">
505
- <h4 class="font-medium text-gray-800 mb-4">Campaign Details</h4>
506
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
507
- <div>
508
- <label for="campaign-name" class="block text-sm font-medium text-gray-700 mb-1">Campaign Name</label>
509
- <input type="text" id="campaign-name" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="e.g. Summer Sale 2023">
510
- </div>
511
- <div>
512
- <label for="campaign-type" class="block text-sm font-medium text-gray-700 mb-1">Campaign Type</label>
513
- <select id="campaign-type" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
514
- <option>Select campaign type</option>
515
- <option>Brand Awareness</option>
516
- <option>Lead Generation</option>
517
- <option>Product Sales</option>
518
- <option>Traffic</option>
519
- <option>App Installs</option>
520
- </select>
521
- </div>
522
- <div>
523
- <label for="start-date" class="block text-sm font-medium text-gray-700 mb-1">Start Date</label>
524
- <input type="date" id="start-date" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
525
- </div>
526
- <div>
527
- <label for="end-date" class="block text-sm font-medium text-gray-700 mb-1">End Date (optional)</label>
528
- <input type="date" id="end-date" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
529
- </div>
530
- </div>
531
- <div class="mt-6">
532
- <label for="campaign-description" class="block text-sm font-medium text-gray-700 mb-1">Description</label>
533
- <textarea id="campaign-description" rows="3" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="Brief description of your campaign"></textarea>
534
- </div>
535
- </div>
536
-
537
- <!-- Step 2: Budget & Bidding -->
538
- <div id="step-2" class="form-step">
539
- <h4 class="font-medium text-gray-800 mb-4">Budget & Bidding</h4>
540
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
541
- <div>
542
- <label for="budget-type" class="block text-sm font-medium text-gray-700 mb-1">Budget Type</label>
543
- <select id="budget-type" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
544
- <option>Daily Budget</option>
545
- <option>Lifetime Budget</option>
546
- </select>
547
- </div>
548
- <div>
549
- <label for="budget-amount" class="block text-sm font-medium text-gray-700 mb-1">Budget Amount ($)</label>
550
- <input type="number" id="budget-amount" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="e.g. 1000">
551
- </div>
552
- <div>
553
- <label for="bid-strategy" class="block text-sm font-medium text-gray-700 mb-1">Bid Strategy</label>
554
- <select id="bid-strategy" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
555
- <option>Lowest Cost</option>
556
- <option>Target Cost</option>
557
- <option>Bid Cap</option>
558
- </select>
559
- </div>
560
- <div>
561
- <label for="bid-amount" class="block text-sm font-medium text-gray-700 mb-1">Bid Amount ($)</label>
562
- <input type="number" id="bid-amount" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="e.g. 0.50">
563
- </div>
564
- </div>
565
- <div class="mt-6">
566
- <label class="block text-sm font-medium text-gray-700 mb-2">Optimization Goal</label>
567
- <div class="grid grid-cols-2 md:grid-cols-4 gap-3">
568
- <div class="flex items-center">
569
- <input id="goal-impressions" name="optimization-goal" type="radio" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300">
570
- <label for="goal-impressions" class="ml-2 block text-sm text-gray-700">Impressions</label>
571
- </div>
572
- <div class="flex items-center">
573
- <input id="goal-clicks" name="optimization-goal" type="radio" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300" checked>
574
- <label for="goal-clicks" class="ml-2 block text-sm text-gray-700">Link Clicks</label>
575
- </div>
576
- <div class="flex items-center">
577
- <input id="goal-conversions" name="optimization-goal" type="radio" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300">
578
- <label for="goal-conversions" class="ml-2 block text-sm text-gray-700">Conversions</label>
579
- </div>
580
- <div class="flex items-center">
581
- <input id="goal-reach" name="optimization-goal" type="radio" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300">
582
- <label for="goal-reach" class="ml-2 block text-sm text-gray-700">Reach</label>
583
- </div>
584
- </div>
585
- </div>
586
- </div>
587
-
588
- <!-- Step 3: Targeting -->
589
- <div id="step-3" class="form-step">
590
- <h4 class="font-medium text-gray-800 mb-4">Audience Targeting</h4>
591
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
592
- <div>
593
- <label for="location" class="block text-sm font-medium text-gray-700 mb-1">Location</label>
594
- <select id="location" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
595
- <option>United States</option>
596
- <option>Canada</option>
597
- <option>United Kingdom</option>
598
- <option>Australia</option>
599
- <option>Germany</option>
600
- </select>
601
- </div>
602
- <div>
603
- <label for="age-range" class="block text-sm font-medium text-gray-700 mb-1">Age Range</label>
604
- <select id="age-range" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
605
- <option>18-65+</option>
606
- <option>18-24</option>
607
- <option>25-34</option>
608
- <option>35-44</option>
609
- <option>45-54</option>
610
- <option>55-65+</option>
611
- </select>
612
- </div>
613
- <div>
614
- <label for="gender" class="block text-sm font-medium text-gray-700 mb-1">Gender</label>
615
- <select id="gender" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
616
- <option>All</option>
617
- <option>Male</option>
618
- <option>Female</option>
619
- </select>
620
- </div>
621
- <div>
622
- <label for="language" class="block text-sm font-medium text-gray-700 mb-1">Language</label>
623
- <select id="language" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
624
- <option>English</option>
625
- <option>Spanish</option>
626
- <option>French</option>
627
- <option>German</option>
628
- </select>
629
- </div>
630
- </div>
631
- <div class="mt-6">
632
- <label for="interests" class="block text-sm font-medium text-gray-700 mb-1">Interests (optional)</label>
633
- <div class="flex flex-wrap gap-2">
634
- <span class="inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-blue-100 text-blue-800">Technology</span>
635
- <span class="inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-blue-100 text-blue-800">Fashion</span>
636
- <span class="inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-blue-100 text-blue-800">Sports</span>
637
- <span class="inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-blue-100 text-blue-800">Travel</span>
638
- <button class="inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-gray-100 text-gray-800 hover:bg-gray-200">
639
- <i class="fas fa-plus mr-1"></i> Add
640
- </button>
641
- </div>
642
- </div>
643
- <div class="mt-6">
644
- <label class="block text-sm font-medium text-gray-700 mb-2">Placements</label>
645
- <div class="grid grid-cols-2 md:grid-cols-4 gap-3">
646
- <div class="flex items-center">
647
- <input id="placement-facebook" name="placement" type="checkbox" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" checked>
648
- <label for="placement-facebook" class="ml-2 block text-sm text-gray-700">Facebook</label>
649
- </div>
650
- <div class="flex items-center">
651
- <input id="placement-instagram" name="placement" type="checkbox" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" checked>
652
- <label for="placement-instagram" class="ml-2 block text-sm text-gray-700">Instagram</label>
653
- </div>
654
- <div class="flex items-center">
655
- <input id="placement-audience-network" name="placement" type="checkbox" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
656
- <label for="placement-audience-network" class="ml-2 block text-sm text-gray-700">Audience Network</label>
657
- </div>
658
- <div class="flex items-center">
659
- <input id="placement-messenger" name="placement" type="checkbox" class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
660
- <label for="placement-messenger" class="ml-2 block text-sm text-gray-700">Messenger</label>
661
- </div>
662
- </div>
663
- </div>
664
- </div>
665
 
666
- <!-- Step 4: Creatives -->
667
- <div id="step-4" class="form-step">
668
- <h4 class="font-medium text-gray-800 mb-4">Ad Creatives</h4>
669
- <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
670
- <div>
671
- <label for="ad-format" class="block text-sm font-medium text-gray-700 mb-1">Ad Format</label>
672
- <select id="ad-format" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
673
- <option>Single Image</option>
674
- <option>Carousel</option>
675
- <option>Video</option>
676
- <option>Slideshow</option>
677
- <option>Collection</option>
678
- </select>
679
- </div>
680
- <div>
681
- <label for="ad-name" class="block text-sm font-medium text-gray-700 mb-1">Ad Name</label>
682
- <input type="text" id="ad-name" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="e.g. Summer Sale Banner">
683
- </div>
684
- </div>
685
- <div class="mt-6">
686
- <label class="block text-sm font-medium text-gray-700 mb-2">Upload Creative</label>
687
- <div class="mt-1 flex justify-center px-6 pt-5 pb-6 border-2 border-gray-300 border-dashed rounded-lg">
688
- <div class="space-y-1 text-center">
689
- <div class="flex text-sm text-gray-600">
690
- <label for="file-upload" class="relative cursor-pointer bg-white rounded-md font-medium text-blue-600 hover:text-blue-500 focus-within:outline-none">
691
- <span>Upload a file</span>
692
- <input id="file-upload" name="file-upload" type="file" class="sr-only">
693
- </label>
694
- <p class="pl-1">or drag and drop</p>
695
- </div>
696
- <p class="text-xs text-gray-500">PNG, JPG, GIF up to 10MB</p>
697
- </div>
698
- </div>
699
- </div>
700
- <div class="mt-6">
701
- <label for="primary-text" class="block text-sm font-medium text-gray-700 mb-1">Primary Text</label>
702
- <textarea id="primary-text" rows="2" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="Main text that appears in your ad"></textarea>
703
- </div>
704
- <div class="mt-4">
705
- <label for="headline" class="block text-sm font-medium text-gray-700 mb-1">Headline</label>
706
- <input type="text" id="headline" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="A short headline for your ad">
707
- </div>
708
- <div class="mt-4">
709
- <label for="description" class="block text-sm font-medium text-gray-700 mb-1">Description</label>
710
- <textarea id="description" rows="2" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="Additional text that appears below the headline"></textarea>
711
- </div>
712
- <div class="mt-4">
713
- <label for="call-to-action" class="block text-sm font-medium text-gray-700 mb-1">Call to Action</label>
714
- <select id="call-to-action" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
715
- <option>Shop Now</option>
716
- <option>Learn More</option>
717
- <option>Sign Up</option>
718
- <option>Download</option>
719
- <option>Book Now</option>
720
- <option>Contact Us</option>
721
- </select>
722
- </div>
723
- </div>
724
- </div>
725
 
726
- <!-- Form Navigation -->
727
- <div class="px-6 py-4 bg-gray-50 border-t border-gray-200 flex justify-between">
728
- <button id="prev-btn" class="px-4 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" disabled>
729
- Previous
730
- </button>
731
- <button id="next-btn" class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
732
- Next
733
- </button>
734
- </div>
735
  </div>
736
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
737
  </main>
738
  </div>
739
  </div>
740
 
741
  <script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
742
  // Page navigation
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
743
  document.querySelectorAll('.tab').forEach(tab => {
744
  tab.addEventListener('click', function() {
745
  // Remove active class from all tabs
@@ -748,12 +616,13 @@
748
  // Add active class to clicked tab
749
  this.classList.add('active');
750
 
751
- // Hide all pages
752
- document.querySelectorAll('.page').forEach(page => page.classList.remove('active'));
 
753
 
754
- // Show the selected page
755
- const pageId = this.getAttribute('data-subpage') + '-page';
756
- document.getElementById(pageId).classList.add('active');
757
  });
758
  });
759
 
@@ -761,7 +630,7 @@
761
  const steps = ['step-1', 'step-2', 'step-3', 'step-4'];
762
  let currentStep = 0;
763
 
764
- document.getElementById('next-btn').addEventListener('click', function() {
765
  if (currentStep < steps.length - 1) {
766
  document.getElementById(steps[currentStep]).classList.remove('active');
767
  currentStep++;
@@ -780,7 +649,7 @@
780
  }
781
  });
782
 
783
- document.getElementById('prev-btn').addEventListener('click', function() {
784
  if (currentStep > 0) {
785
  document.getElementById(steps[currentStep]).classList.remove('active');
786
  currentStep--;
 
6
  <title>Ad Engine Dashboard</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 src="https://cdn.jsdelivr.net/npm/chart.js"></script>
10
  <style>
11
  .sidebar {
12
  transition: all 0.3s ease;
 
86
  background-color: #3b82f6;
87
  transition: width 0.3s ease;
88
  }
89
+ .metric-card {
90
+ transition: all 0.3s ease;
91
+ }
92
+ .metric-card:hover {
93
+ transform: translateY(-3px);
94
+ box-shadow: 0 10px 15px rgba(0,0,0,0.1);
95
+ }
96
+ .chart-container {
97
+ position: relative;
98
+ height: 300px;
99
+ }
100
  </style>
101
  </head>
102
  <body class="bg-gray-50">
 
111
  </div>
112
  <nav class="flex-1 overflow-y-auto p-4">
113
  <div class="space-y-2">
114
+ <a href="#" class="nav-link flex items-center p-3 rounded-lg bg-blue-50 text-blue-600 font-medium" data-page="dashboard">
115
  <i class="fas fa-tachometer-alt mr-3"></i>
116
  Dashboard
117
  </a>
118
+ <a href="#" class="nav-link flex items-center p-3 rounded-lg text-gray-700 hover:bg-blue-50 hover:text-blue-600 transition" data-page="campaigns">
119
  <i class="fas fa-bullhorn mr-3"></i>
120
  Campaigns
121
  </a>
 
156
  <button class="mr-4 text-gray-500 hover:text-gray-700">
157
  <i class="fas fa-bars"></i>
158
  </button>
159
+ <h2 class="text-xl font-semibold text-gray-800">Dashboard</h2>
160
  </div>
161
  <div class="flex items-center space-x-4">
162
  <div class="relative">
163
  <input type="text" placeholder="Search..." class="pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
164
  <i class="fas fa-search absolute left-3 top-3 text-gray-400"></i>
165
  </div>
166
+ <button class="text-gray-500 hover:text-gray-700 relative">
167
  <i class="fas fa-bell"></i>
168
+ <span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span>
169
  </button>
170
  </div>
171
  </header>
172
 
173
+ <!-- Dashboard Content -->
 
 
 
 
 
 
 
 
 
174
  <main class="flex-1 overflow-y-auto p-6 bg-gray-50">
175
+ <!-- Dashboard Page -->
176
+ <div id="dashboard-page" class="page active">
177
+ <!-- Date Range Selector -->
178
  <div class="flex justify-between items-center mb-6">
179
+ <div>
180
+ <h3 class="text-lg font-semibold text-gray-800">Performance Overview</h3>
181
+ <p class="text-sm text-gray-500">Key metrics and analytics for your campaigns</p>
182
+ </div>
183
+ <div class="flex items-center space-x-2">
184
+ <button class="px-3 py-1 border border-gray-300 rounded-lg text-sm hover:bg-gray-50">Today</button>
185
+ <button class="px-3 py-1 border border-gray-300 rounded-lg text-sm bg-blue-50 text-blue-600 border-blue-200">Last 7 days</button>
186
+ <button class="px-3 py-1 border border-gray-300 rounded-lg text-sm hover:bg-gray-50">Last 30 days</button>
187
+ <button class="px-3 py-1 border border-gray-300 rounded-lg text-sm hover:bg-gray-50">
188
+ <i class="fas fa-calendar mr-1"></i> Custom
189
  </button>
190
  </div>
191
  </div>
192
 
193
+ <!-- Metrics Cards -->
194
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6">
195
+ <div class="metric-card bg-white p-6 rounded-lg shadow">
196
+ <div class="flex justify-between items-start">
197
+ <div>
198
+ <p class="text-sm font-medium text-gray-500">Impressions</p>
199
+ <h3 class="text-2xl font-bold mt-1">245,678</h3>
200
+ <p class="text-sm mt-2">
201
+ <span class="text-green-500 font-medium">+12.5%</span> vs last period
202
+ </p>
203
+ </div>
204
+ <div class="bg-blue-100 p-3 rounded-lg">
205
+ <i class="fas fa-eye text-blue-600 text-xl"></i>
206
+ </div>
207
+ </div>
208
+ </div>
209
+ <div class="metric-card bg-white p-6 rounded-lg shadow">
210
+ <div class="flex justify-between items-start">
211
+ <div>
212
+ <p class="text-sm font-medium text-gray-500">Clicks</p>
213
+ <h3 class="text-2xl font-bold mt-1">12,345</h3>
214
+ <p class="text-sm mt-2">
215
+ <span class="text-green-500 font-medium">+8.3%</span> vs last period
216
+ </p>
217
+ </div>
218
+ <div class="bg-green-100 p-3 rounded-lg">
219
+ <i class="fas fa-mouse-pointer text-green-600 text-xl"></i>
220
+ </div>
221
+ </div>
222
+ </div>
223
+ <div class="metric-card bg-white p-6 rounded-lg shadow">
224
+ <div class="flex justify-between items-start">
225
+ <div>
226
+ <p class="text-sm font-medium text-gray-500">CTR</p>
227
+ <h3 class="text-2xl font-bold mt-1">5.03%</h3>
228
+ <p class="text-sm mt-2">
229
+ <span class="text-red-500 font-medium">-0.7%</span> vs last period
230
+ </p>
231
+ </div>
232
+ <div class="bg-purple-100 p-3 rounded-lg">
233
+ <i class="fas fa-percentage text-purple-600 text-xl"></i>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ <div class="metric-card bg-white p-6 rounded-lg shadow">
238
+ <div class="flex justify-between items-start">
239
+ <div>
240
+ <p class="text-sm font-medium text-gray-500">Spend</p>
241
+ <h3 class="text-2xl font-bold mt-1">$3,456</h3>
242
+ <p class="text-sm mt-2">
243
+ <span class="text-green-500 font-medium">+15.2%</span> vs last period
244
+ </p>
245
+ </div>
246
+ <div class="bg-yellow-100 p-3 rounded-lg">
247
+ <i class="fas fa-dollar-sign text-yellow-600 text-xl"></i>
248
+ </div>
249
+ </div>
250
+ </div>
251
+ </div>
252
+
253
+ <!-- Charts Row -->
254
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
255
+ <!-- Performance Chart -->
256
+ <div class="bg-white p-6 rounded-lg shadow">
257
+ <div class="flex justify-between items-center mb-4">
258
+ <h4 class="font-medium text-gray-800">Performance Trends</h4>
259
+ <div class="flex space-x-2">
260
+ <button class="px-3 py-1 text-xs bg-blue-50 text-blue-600 rounded">Impressions</button>
261
+ <button class="px-3 py-1 text-xs bg-gray-100 text-gray-600 rounded hover:bg-gray-200">Clicks</button>
262
+ <button class="px-3 py-1 text-xs bg-gray-100 text-gray-600 rounded hover:bg-gray-200">CTR</button>
263
+ </div>
264
+ </div>
265
+ <div class="chart-container">
266
+ <canvas id="performanceChart"></canvas>
267
+ </div>
268
+ </div>
269
+
270
+ <!-- Channel Distribution -->
271
+ <div class="bg-white p-6 rounded-lg shadow">
272
+ <div class="flex justify-between items-center mb-4">
273
+ <h4 class="font-medium text-gray-800">Channel Distribution</h4>
274
+ <div class="flex space-x-2">
275
+ <button class="px-3 py-1 text-xs bg-blue-50 text-blue-600 rounded">Impressions</button>
276
+ <button class="px-3 py-1 text-xs bg-gray-100 text-gray-600 rounded hover:bg-gray-200">Clicks</button>
277
+ <button class="px-3 py-1 text-xs bg-gray-100 text-gray-600 rounded hover:bg-gray-200">Spend</button>
278
+ </div>
279
+ </div>
280
+ <div class="chart-container">
281
+ <canvas id="channelChart"></canvas>
282
+ </div>
283
+ </div>
284
+ </div>
285
+
286
+ <!-- Campaign Performance Table -->
287
+ <div class="bg-white rounded-lg shadow overflow-hidden mb-6">
288
+ <div class="p-6 border-b border-gray-200 flex justify-between items-center">
289
+ <h4 class="font-medium text-gray-800">Top Performing Campaigns</h4>
290
+ <button class="text-blue-600 text-sm font-medium hover:text-blue-800">
291
+ View All Campaigns <i class="fas fa-chevron-right ml-1"></i>
292
+ </button>
293
+ </div>
294
  <div class="overflow-x-auto">
295
  <table class="min-w-full divide-y divide-gray-200">
296
  <thead class="bg-gray-50">
 
300
  <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Impressions</th>
301
  <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Clicks</th>
302
  <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">CTR</th>
303
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Spend</th>
304
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">ROAS</th>
305
  </tr>
306
  </thead>
307
  <tbody class="bg-white divide-y divide-gray-200">
 
323
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">245,678</td>
324
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">12,345</td>
325
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">5.03%</td>
326
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$1,245</td>
327
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.2x</td>
 
 
 
328
  </tr>
329
  <tr>
330
  <td class="px-6 py-4 whitespace-nowrap">
 
339
  </div>
340
  </td>
341
  <td class="px-6 py-4 whitespace-nowrap">
342
+ <span class="status-badge status-active">Active</span>
343
  </td>
344
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">189,234</td>
345
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">8,765</td>
346
  <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.63%</td>
347
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$987</td>
348
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">3.8x</td>
 
 
 
349
  </tr>
350
  <tr>
351
  <td class="px-6 py-4 whitespace-nowrap">
352
  <div class="flex items-center">
353
+ <div class="flex-shrink-0 h-10 w-10 bg-green-100 rounded-lg flex items-center justify-center">
354
+ <i class="fas fa-newspaper text-green-600"></i>
355
  </div>
356
  <div class="ml-4">
357
+ <div class="text-sm font-medium text-gray-900">Content Marketing</div>
358
+ <div class="text-sm text-gray-500">Awareness</div>
359
  </div>
360
  </div>
361
  </td>
362
  <td class="px-6 py-4 whitespace-nowrap">
363
+ <span class="status-badge status-active">Active</span>
 
 
 
 
 
 
 
 
364
  </td>
365
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">321,456</td>
366
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">15,678</td>
367
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.88%</td>
368
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$1,532</td>
369
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2.9x</td>
370
  </tr>
371
  <tr>
372
  <td class="px-6 py-4 whitespace-nowrap">
373
  <div class="flex items-center">
374
+ <div class="flex-shrink-0 h-10 w-10 bg-yellow-100 rounded-lg flex items-center justify-center">
375
+ <i class="fas fa-gift text-yellow-600"></i>
376
  </div>
377
  <div class="ml-4">
378
+ <div class="text-sm font-medium text-gray-900">Holiday Special</div>
379
+ <div class="text-sm text-gray-500">Retargeting</div>
380
  </div>
381
  </div>
382
  </td>
383
  <td class="px-6 py-4 whitespace-nowrap">
384
+ <span class="status-badge status-paused">Paused</span>
 
 
 
 
 
 
 
 
385
  </td>
386
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">156,789</td>
387
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">7,543</td>
388
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.81%</td>
389
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">$876</td>
390
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">3.5x</td>
391
  </tr>
392
  </tbody>
393
  </table>
394
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395
  </div>
 
396
 
397
+ <!-- Recent Activity -->
398
+ <div class="bg-white rounded-lg shadow overflow-hidden">
399
+ <div class="p-6 border-b border-gray-200">
400
+ <h4 class="font-medium text-gray-800">Recent Activity</h4>
 
 
 
 
 
 
 
 
 
 
401
  </div>
402
+ <div class="divide-y divide-gray-200">
403
+ <div class="p-4 flex items-start">
404
+ <div class="bg-blue-100 p-3 rounded-full mr-4">
405
+ <i class="fas fa-bullhorn text-blue-600"></i>
 
 
 
 
 
406
  </div>
407
+ <div class="flex-1">
408
+ <p class="text-sm font-medium text-gray-800">New campaign "Summer Sale 2023" was launched</p>
409
+ <p class="text-xs text-gray-500 mt-1">2 hours ago</p>
 
 
 
 
 
 
 
 
 
410
  </div>
411
+ <button class="text-gray-400 hover:text-gray-600">
412
+ <i class="fas fa-ellipsis-v"></i>
413
+ </button>
414
  </div>
415
+ <div class="p-4 flex items-start">
416
+ <div class="bg-green-100 p-3 rounded-full mr-4">
417
+ <i class="fas fa-chart-line text-green-600"></i>
418
  </div>
419
+ <div class="flex-1">
420
+ <p class="text-sm font-medium text-gray-800">"Mobile App Launch" campaign exceeded CTR target by 15%</p>
421
+ <p class="text-xs text-gray-500 mt-1">5 hours ago</p>
 
 
 
 
 
 
 
422
  </div>
423
+ <button class="text-gray-400 hover:text-gray-600">
424
+ <i class="fas fa-ellipsis-v"></i>
425
+ </button>
426
  </div>
427
+ <div class="p-4 flex items-start">
428
+ <div class="bg-purple-100 p-3 rounded-full mr-4">
429
+ <i class="fas fa-users text-purple-600"></i>
 
 
 
 
 
430
  </div>
431
+ <div class="flex-1">
432
+ <p class="text-sm font-medium text-gray-800">New audience segment "High Value Customers" was created</p>
433
+ <p class="text-xs text-gray-500 mt-1">Yesterday</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  </div>
435
+ <button class="text-gray-400 hover:text-gray-600">
436
+ <i class="fas fa-ellipsis-v"></i>
437
+ </button>
438
  </div>
439
+ <div class="p-4 flex items-start">
440
+ <div class="bg-yellow-100 p-3 rounded-full mr-4">
441
+ <i class="fas fa-ad text-yellow-600"></i>
442
  </div>
443
+ <div class="flex-1">
444
+ <p class="text-sm font-medium text-gray-800">New creative set was approved for "Holiday Special" campaign</p>
445
+ <p class="text-xs text-gray-500 mt-1">2 days ago</p>
 
 
 
 
 
 
 
446
  </div>
447
+ <button class="text-gray-400 hover:text-gray-600">
448
+ <i class="fas fa-ellipsis-v"></i>
449
+ </button>
450
  </div>
451
  </div>
452
+ <div class="p-4 border-t border-gray-200 text-center">
453
+ <button class="text-blue-600 text-sm font-medium hover:text-blue-800">
454
+ View All Activity <i class="fas fa-chevron-right ml-1"></i>
455
+ </button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
  </div>
457
  </div>
458
  </div>
459
 
460
+ <!-- Campaigns Page -->
461
+ <div id="campaigns-page" class="page">
462
+ <!-- Campaign Sub Navigation -->
463
+ <div class="bg-white border-b border-gray-200 px-6 mb-6">
464
+ <div class="flex space-x-6">
465
+ <a href="#" class="tab py-4 active" data-subpage="listing">All Campaigns</a>
466
+ <a href="#" class="tab py-4" data-subpage="preview">Creative Preview</a>
467
+ <a href="#" class="tab py-4" data-subpage="setup">New Campaign</a>
 
 
 
 
 
 
 
 
 
468
  </div>
469
+ </div>
470
 
471
+ <!-- Listing Page -->
472
+ <div id="listing-page" class="page active">
473
+ <!-- ... (existing campaigns listing content) ... -->
474
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
475
 
476
+ <!-- Preview Page -->
477
+ <div id="preview-page" class="page">
478
+ <!-- ... (existing creative preview content) ... -->
479
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
480
 
481
+ <!-- Campaign Setup Page -->
482
+ <div id="setup-page" class="page">
483
+ <!-- ... (existing campaign setup content) ... -->
 
 
 
 
 
 
484
  </div>
485
  </div>
486
+
487
+ <!-- Other pages would go here -->
488
+ <div id="creatives-page" class="page">
489
+ <!-- Creatives content -->
490
+ </div>
491
+ <div id="audiences-page" class="page">
492
+ <!-- Audiences content -->
493
+ </div>
494
+ <div id="reports-page" class="page">
495
+ <!-- Reports content -->
496
+ </div>
497
+ <div id="settings-page" class="page">
498
+ <!-- Settings content -->
499
+ </div>
500
  </main>
501
  </div>
502
  </div>
503
 
504
  <script>
505
+ // Initialize charts
506
+ document.addEventListener('DOMContentLoaded', function() {
507
+ // Performance Chart
508
+ const performanceCtx = document.getElementById('performanceChart').getContext('2d');
509
+ const performanceChart = new Chart(performanceCtx, {
510
+ type: 'line',
511
+ data: {
512
+ labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
513
+ datasets: [
514
+ {
515
+ label: 'Impressions',
516
+ data: [12000, 19000, 15000, 22000, 25000, 28000, 32000],
517
+ borderColor: '#3b82f6',
518
+ backgroundColor: 'rgba(59, 130, 246, 0.05)',
519
+ borderWidth: 2,
520
+ fill: true,
521
+ tension: 0.4
522
+ },
523
+ {
524
+ label: 'Clicks',
525
+ data: [800, 1200, 1000, 1500, 1800, 2000, 2400],
526
+ borderColor: '#10b981',
527
+ backgroundColor: 'rgba(16, 185, 129, 0.05)',
528
+ borderWidth: 2,
529
+ fill: true,
530
+ tension: 0.4
531
+ }
532
+ ]
533
+ },
534
+ options: {
535
+ responsive: true,
536
+ maintainAspectRatio: false,
537
+ plugins: {
538
+ legend: {
539
+ position: 'top',
540
+ },
541
+ tooltip: {
542
+ mode: 'index',
543
+ intersect: false,
544
+ }
545
+ },
546
+ scales: {
547
+ y: {
548
+ beginAtZero: true,
549
+ grid: {
550
+ drawBorder: false
551
+ }
552
+ },
553
+ x: {
554
+ grid: {
555
+ display: false
556
+ }
557
+ }
558
+ }
559
+ }
560
+ });
561
+
562
+ // Channel Distribution Chart
563
+ const channelCtx = document.getElementById('channelChart').getContext('2d');
564
+ const channelChart = new Chart(channelCtx, {
565
+ type: 'doughnut',
566
+ data: {
567
+ labels: ['Facebook', 'Instagram', 'Audience Network', 'Messenger'],
568
+ datasets: [{
569
+ data: [35, 30, 20, 15],
570
+ backgroundColor: [
571
+ '#3b82f6',
572
+ '#8b5cf6',
573
+ '#ec4899',
574
+ '#14b8a6'
575
+ ],
576
+ borderWidth: 0,
577
+ }]
578
+ },
579
+ options: {
580
+ responsive: true,
581
+ maintainAspectRatio: false,
582
+ plugins: {
583
+ legend: {
584
+ position: 'right',
585
+ }
586
+ },
587
+ cutout: '70%'
588
+ }
589
+ });
590
+ });
591
+
592
  // Page navigation
593
+ document.querySelectorAll('.nav-link').forEach(link => {
594
+ link.addEventListener('click', function() {
595
+ // Remove active class from all nav links
596
+ document.querySelectorAll('.nav-link').forEach(l => l.classList.remove('bg-blue-50', 'text-blue-600', 'font-medium'));
597
+
598
+ // Add active class to clicked link
599
+ this.classList.add('bg-blue-50', 'text-blue-600', 'font-medium');
600
+
601
+ // Hide all pages
602
+ document.querySelectorAll('.page').forEach(page => page.classList.remove('active'));
603
+
604
+ // Show the selected page
605
+ const pageId = this.getAttribute('data-page') + '-page';
606
+ document.getElementById(pageId).classList.add('active');
607
+ });
608
+ });
609
+
610
+ // Sub-page navigation
611
  document.querySelectorAll('.tab').forEach(tab => {
612
  tab.addEventListener('click', function() {
613
  // Remove active class from all tabs
 
616
  // Add active class to clicked tab
617
  this.classList.add('active');
618
 
619
+ // Hide all sub-pages
620
+ const parentPage = this.closest('.page');
621
+ parentPage.querySelectorAll('.page').forEach(page => page.classList.remove('active'));
622
 
623
+ // Show the selected sub-page
624
+ const subPageId = this.getAttribute('data-subpage') + '-page';
625
+ parentPage.querySelector('#' + subPageId).classList.add('active');
626
  });
627
  });
628
 
 
630
  const steps = ['step-1', 'step-2', 'step-3', 'step-4'];
631
  let currentStep = 0;
632
 
633
+ document.getElementById('next-btn')?.addEventListener('click', function() {
634
  if (currentStep < steps.length - 1) {
635
  document.getElementById(steps[currentStep]).classList.remove('active');
636
  currentStep++;
 
649
  }
650
  });
651
 
652
+ document.getElementById('prev-btn')?.addEventListener('click', function() {
653
  if (currentStep > 0) {
654
  document.getElementById(steps[currentStep]).classList.remove('active');
655
  currentStep--;