Generaltoa commited on
Commit
4cb5a08
·
verified ·
1 Parent(s): a66c441

The Ad details page in Quora Ads showing:

Browse files

Ad ID and Ad Name

Ad Status (Active on 12/02)

Final URL with UTMs (utm_source=quora, utm_campaign=auto_insurance_dec, utm_content=ad_7739201)

Creative preview (Image Ad)

README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Adquill Dashboard
3
- emoji: 📚
4
  colorFrom: gray
5
- colorTo: purple
 
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: AdQuill Dashboard
 
3
  colorFrom: gray
4
+ colorTo: green
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/ad-details-card.js ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomAdDetailsCard extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ }
10
+
11
+ .detail-item {
12
+ transition: all 0.3s ease;
13
+ }
14
+
15
+ .detail-item:hover {
16
+ background: rgba(255, 255, 255, 0.05);
17
+ }
18
+
19
+ .copy-btn {
20
+ opacity: 0;
21
+ transition: all 0.3s ease;
22
+ }
23
+
24
+ .detail-item:hover .copy-btn {
25
+ opacity: 1;
26
+ }
27
+ </style>
28
+
29
+ <div class="card-hover glass-effect rounded-xl p-6">
30
+ <div class="flex items-center justify-between mb-6">
31
+ <h3 class="text-xl font-semibold">Ad Configuration</h3>
32
+ <button class="p-2 rounded-lg hover:bg-gray-700 transition-colors">
33
+ <i data-feather="edit-3" class="w-4 h-4"></i>
34
+ </button>
35
+ </div>
36
+
37
+ <div class="space-y-4">
38
+ <!-- Ad ID -->
39
+ <div class="detail-item p-4 rounded-lg border border-gray-700">
40
+ <div class="flex justify-between items-start">
41
+ <div>
42
+ <label class="text-sm text-gray-400 block">Ad ID</label>
43
+ <p class="font-mono text-lg">7739201</p>
44
+ </div>
45
+ <button onclick="copyToClipboard('7739201')" class="copy-btn p-2 rounded-lg hover:bg-gray-600 transition-colors">
46
+ <i data-feather="copy" class="w-4 h-4"></i>
47
+ </button>
48
+ </div>
49
+ </div>
50
+
51
+ <!-- Ad Name -->
52
+ <div class="detail-item p-4 rounded-lg border border-gray-700">
53
+ <div class="flex justify-between items-start">
54
+ <div>
55
+ <label class="text-sm text-gray-400 block">Ad Name</label>
56
+ <p class="text-lg">Auto Insurance December Campaign</p>
57
+ </div>
58
+ <button onclick="copyToClipboard('Auto Insurance December Campaign')" class="copy-btn p-2 rounded-lg hover:bg-gray-600 transition-colors">
59
+ <i data-feather="copy" class="w-4 h-4"></i>
60
+ </button>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- Status -->
65
+ <div class="detail-item p-4 rounded-lg border border-gray-700">
66
+ <div>
67
+ <label class="text-sm text-gray-400 block">Status</label>
68
+ <div class="flex items-center space-x-2 mt-1">
69
+ <div class="w-3 h-3 bg-green-500 rounded-full animate-pulse"></div>
70
+ <span class="font-medium">Active</span>
71
+ <span class="text-gray-400 text-sm">(since 12/02/2023)</span>
72
+ </div>
73
+ </div>
74
+ </div>
75
+
76
+ <!-- Final URL with UTMs -->
77
+ <div class="detail-item p-4 rounded-lg border border-gray-700">
78
+ <div class="flex justify-between items-start">
79
+ <div class="flex-1">
80
+ <label class="text-sm text-gray-400 block">Final URL with UTMs</label>
81
+ <div class="mt-2 p-3 bg-gray-800 rounded-lg">
82
+ <code class="text-sm break-all">
83
+ https://example.com/auto-insurance?utm_source=quora&utm_campaign=auto_insurance_dec&utm_content=ad_7739201
84
+ </code>
85
+ </div>
86
+ <div class="mt-3 grid grid-cols-1 md:grid-cols-3 gap-2 text-xs">
87
+ <div class="flex items-center space-x-2">
88
+ <span class="text-gray-400">utm_source:</span>
89
+ <code class="bg-gray-700 px-2 py-1 rounded">quora</code>
90
+ </div>
91
+ <div class="flex items-center space-x-2">
92
+ <span class="text-gray-400">utm_campaign:</span>
93
+ <code class="bg-gray-700 px-2 py-1 rounded">auto_insurance_dec</code>
94
+ </div>
95
+ <div class="flex items-center space-x-2">
96
+ <span class="text-gray-400">utm_content:</span>
97
+ <code class="bg-gray-700 px-2 py-1 rounded">ad_7739201</code>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <button onclick="copyToClipboard('https://example.com/auto-insurance?utm_source=quora&utm_campaign=auto_insurance_dec&utm_content=ad_7739201')" class="copy-btn p-2 rounded-lg hover:bg-gray-600 transition-colors ml-4">
102
+ <i data-feather="copy" class="w-4 h-4"></i>
103
+ </button>
104
+ </div>
105
+ </div>
106
+
107
+ <!-- Performance Metrics -->
108
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-4 mt-6">
109
+ <div class="text-center p-4 bg-gray-800 rounded-lg">
110
+ <div class="text-2xl font-bold text-green-400">1.2M</div>
111
+ <div class="text-sm text-gray-400 mt-1">Impressions</div>
112
+ </div>
113
+ <div class="text-center p-4 bg-gray-800 rounded-lg">
114
+ <div class="text-2xl font-bold text-blue-400">24.5K</div>
115
+ <div class="text-sm text-gray-400 mt-1">Clicks</div>
116
+ </div>
117
+ <div class="text-center p-4 bg-gray-800 rounded-lg">
118
+ <div class="text-2xl font-bold text-purple-400">2.04%</div>
119
+ <div class="text-sm text-gray-400 mt-1">CTR</div>
120
+ </div>
121
+ <div class="text-center p-4 bg-gray-800 rounded-lg">
122
+ <div class="text-2xl font-bold text-yellow-400">$1.42</div>
123
+ <div class="text-sm text-gray-400 mt-1">CPC</div>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ `;
129
+
130
+ setTimeout(() => {
131
+ if (this.shadowRoot.querySelector('[data-feather]')) {
132
+ feather.replace();
133
+ }
134
+ }, 100);
135
+ }
136
+ }
137
+
138
+ customElements.define('custom-ad-details-card', CustomAdDetailsCard);
components/ad-header.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomAdHeader extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ }
10
+
11
+ .gradient-text {
12
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
+ -webkit-background-clip: text;
14
+ -webkit-text-fill-color: transparent;
15
+ background-clip: text;
16
+ }
17
+ </style>
18
+
19
+ <div class="fade-in">
20
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between">
21
+ <div>
22
+ <h1 class="text-3xl font-bold gradient-text">Ad Details</h1>
23
+ <p class="text-gray-400 mt-2">Manage and monitor your Quora advertising campaign</p>
24
+ </div>
25
+
26
+ <div class="flex space-x-3 mt-4 md:mt-0">
27
+ <button onclick="shareAd()" class="flex items-center space-x-2 px-4 py-2 bg-gray-800 rounded-lg hover:bg-gray-700 transition-colors">
28
+ <i data-feather="share-2" class="w-4 h-4"></i>
29
+ <span>Share</span>
30
+ </button>
31
+
32
+ <button onclick="exportAdData()" class="flex items-center space-x-2 px-4 py-2 bg-blue-600 rounded-lg hover:bg-blue-700 transition-colors">
33
+ <i data-feather="download" class="w-4 h-4"></i>
34
+ <span>Export</span>
35
+ </button>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="mt-6 p-6 glass-effect rounded-xl">
40
+ <div class="flex items-center justify-between">
41
+ <div>
42
+ <h2 class="text-xl font-semibold">Auto Insurance December Campaign</h2>
43
+ <p class="text-gray-400 mt-1">Ad ID: 7739201</p>
44
+ </div>
45
+
46
+ <div class="flex items-center space-x-2 px-4 py-2 status-active rounded-full">
47
+ <i data-feather="check-circle" class="w-4 h-4"></i>
48
+ <span class="font-medium">Active</span>
49
+ <span class="text-sm opacity-90">(since 12/02)</span>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ `;
55
+
56
+ setTimeout(() => {
57
+ if (this.shadowRoot.querySelector('[data-feather]')) {
58
+ feather.replace();
59
+ }
60
+ }, 100);
61
+ }
62
+ }
63
+
64
+ customElements.define('custom-ad-header', CustomAdHeader);
components/ad-preview.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomAdPreview extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ }
10
+
11
+ .ad-container {
12
+ background: white;
13
+ border-radius: 12px;
14
+ overflow: hidden;
15
+ transition: all 0.3s ease;
16
+ }
17
+
18
+ .ad-container:hover {
19
+ transform: scale(1.02);
20
+ }
21
+ </style>
22
+
23
+ <div class="card-hover">
24
+ <div class="flex items-center justify-between mb-4">
25
+ <h3 class="text-xl font-semibold">Creative Preview</h3>
26
+ <button class="p-2 rounded-lg hover:bg-gray-700 transition-colors">
27
+ <i data-feather="refresh-cw" class="w-4 h-4"></i>
28
+ </button>
29
+ </div>
30
+
31
+ <div class="ad-container shadow-2xl">
32
+ <!-- Ad Image -->
33
+ <div class="h-48 bg-gradient-to-br from-blue-400 to-purple-500 relative overflow-hidden">
34
+ <img src="http://static.photos/finance/640x360/42" alt="Ad Creative" class="w-full h-full object-cover">
35
+ <div class="absolute top-4 right-4 bg-black bg-opacity-50 text-white px-2 py-1 rounded text-xs">
36
+ Image Ad
37
+ </div>
38
+ </div>
39
+
40
+ <!-- Ad Content -->
41
+ <div class="p-4 text-gray-900">
42
+ <h4 class="font-bold text-lg mb-2">Get Your Auto Insurance Quote Today!</h4>
43
+ <p class="text-sm text-gray-600 mb-3">
44
+ Compare rates from top providers. Save up to $500 annually on your auto insurance.
45
+ </p>
46
+
47
+ <div class="flex items-center justify-between text-xs text-gray-500">
48
+ <span>Sponsored • Quora Ads</span>
49
+ <button class="bg-blue-600 text-white px-3 py-1 rounded hover:bg-blue-700 transition-colors">
50
+ Learn More
51
+ </button>
52
+ </div>
53
+ </div>
54
+
55
+ <!-- Ad URL Preview -->
56
+ <div class="px-4 py-3 bg-gray-100 border-t">
57
+ <div class="text-xs text-gray-600 truncate">
58
+ example.com/auto-insurance
59
+ </div>
60
+ </div>
61
+ </div>
62
+
63
+ <div class="mt-4 text-center text-gray-400 text-sm">
64
+ <p>This is how your ad appears to users on Quora</p>
65
+ </div>
66
+
67
+ <!-- Quick Actions -->
68
+ <div class="mt-6 grid grid-cols-2 gap-3">
69
+ <button class="flex items-center justify-center space-x-2 p-3 bg-gray-800 rounded-lg hover:bg-gray-700 transition-colors">
70
+ <i data-feather="eye" class="w-4 h-4"></i>
71
+ <span>View Full</span>
72
+ </button>
73
+ <button class="flex items-center justify-center space-x-2 p-3 bg-blue-600 rounded-lg hover:bg-blue-700 transition-colors">
74
+ <i data-feather="external-link" class="w-4 h-4"></i>
75
+ <span>Test URL</span>
76
+ </button>
77
+ </div>
78
+ </div>
79
+ `;
80
+
81
+ setTimeout(() => {
82
+ if (this.shadowRoot.querySelector('[data-feather]')) {
83
+ feather.replace();
84
+ }
85
+ }, 100);
86
+ }
87
+ }
88
+
89
+ customElements.define('custom-ad-preview', CustomAdPreview);
components/navbar.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ }
10
+
11
+ nav {
12
+ background: rgba(17, 24, 39, 0.95);
13
+ backdrop-filter: blur(10px);
14
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
15
+ }
16
+
17
+ .nav-link {
18
+ transition: all 0.3s ease;
19
+ position: relative;
20
+ }
21
+
22
+ .nav-link:hover {
23
+ color: #60a5fa;
24
+ }
25
+
26
+ .nav-link::after {
27
+ content: '';
28
+ position: absolute;
29
+ bottom: -2px;
30
+ left: 0;
31
+ width: 0;
32
+ height: 2px;
33
+ background: #60a5fa;
34
+ transition: width 0.3s ease;
35
+ }
36
+
37
+ .nav-link:hover::after {
38
+ width: 100%;
39
+ }
40
+ </style>
41
+
42
+ <nav class="sticky top-0 z-40">
43
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
44
+ <div class="flex justify-between h-16 items-center">
45
+ <div class="flex items-center space-x-8">
46
+ <a href="/" class="flex items-center space-x-2 text-xl font-bold text-white">
47
+ <i data-feather="pen-tool"></i>
48
+ <span>AdQuill</span>
49
+ </a>
50
+
51
+ <div class="hidden md:flex space-x-6">
52
+ <a href="/dashboard" class="nav-link text-gray-300 hover:text-white">Dashboard</a>
53
+ <a href="/campaigns" class="nav-link text-gray-300 hover:text-white">Campaigns</a>
54
+ <a href="/analytics" class="nav-link text-gray-300 hover:text-white">Analytics</a>
55
+ <a href="/settings" class="nav-link text-gray-300 hover:text-white">Settings</a>
56
+ </div>
57
+ </div>
58
+
59
+ <div class="flex items-center space-x-4">
60
+ <button onclick="toggleTheme()" class="p-2 rounded-lg hover:bg-gray-700 transition-colors">
61
+ <i data-feather="moon"></i>
62
+ </button>
63
+
64
+ <div class="relative">
65
+ <button class="flex items-center space-x-2 p-2 rounded-lg hover:bg-gray-700 transition-colors">
66
+ <div class="w-8 h-8 bg-gradient-to-r from-purple-500 to-pink-500 rounded-full flex items-center justify-center">
67
+ <span class="text-white font-semibold text-sm">AQ</span>
68
+ </div>
69
+ <i data-feather="chevron-down" class="w-4 h-4"></i>
70
+ </button>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </nav>
76
+ `;
77
+
78
+ // Replace feather icons after rendering
79
+ setTimeout(() => {
80
+ if (this.shadowRoot.querySelector('[data-feather]')) {
81
+ feather.replace();
82
+ }
83
+ }, 100);
84
+ }
85
+ }
86
+
87
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,39 @@
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="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AdQuill Dashboard - Quora Ad Details</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <link rel="stylesheet" href="style.css">
12
+ <script src="components/navbar.js"></script>
13
+ <script src="components/ad-header.js"></script>
14
+ <script src="components/ad-details-card.js"></script>
15
+ <script src="components/ad-preview.js"></script>
16
+ </head>
17
+ <body class="bg-gray-900 text-white min-h-screen">
18
+ <custom-navbar></custom-navbar>
19
+
20
+ <main class="container mx-auto px-4 py-8">
21
+ <custom-ad-header></custom-ad-header>
22
+
23
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-8 mt-8">
24
+ <div class="lg:col-span-2">
25
+ <custom-ad-details-card></custom-ad-details-card>
26
+ </div>
27
+ <div class="lg:col-span-1">
28
+ <custom-ad-preview></custom-ad-preview>
29
+ </div>
30
+ </div>
31
+ </main>
32
+
33
+ <script src="script.js"></script>
34
+ <script>
35
+ feather.replace();
36
+ </script>
37
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
38
+ </body>
39
+ </html>
script.js ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Main application script
2
+ document.addEventListener('DOMContentLoaded', function() {
3
+ // Initialize tooltips
4
+ const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
5
+ const tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
6
+ return new bootstrap.Tooltip(tooltipTriggerEl);
7
+ });
8
+
9
+ // Copy to clipboard functionality
10
+ function copyToClipboard(text) {
11
+ navigator.clipboard.writeText(text).then(function() {
12
+ // Show success message
13
+ showNotification('Copied to clipboard!', 'success');
14
+ }).catch(function(err) {
15
+ console.error('Failed to copy: ', err);
16
+ showNotification('Failed to copy to clipboard', 'error');
17
+ });
18
+ }
19
+
20
+ // Notification system
21
+ function showNotification(message, type = 'info') {
22
+ const notification = document.createElement('div');
23
+ notification.className = `fixed top-4 right-4 z-50 p-4 rounded-lg shadow-lg transform transition-all duration-300 ${
24
+ type === 'success' ? 'bg-green-600' :
25
+ type === 'error' ? 'bg-red-600' : 'bg-blue-600'
26
+ }`;
27
+ notification.innerHTML = `
28
+ <div class="flex items-center space-x-2">
29
+ <i data-feather="${type === 'success' ? 'check-circle' : type === 'error' ? 'alert-circle' : 'info'}"></i>
30
+ <span>${message}</span>
31
+ </div>
32
+ `;
33
+
34
+ document.body.appendChild(notification);
35
+ feather.replace();
36
+
37
+ setTimeout(() => {
38
+ notification.remove();
39
+ }, 3000);
40
+ }
41
+
42
+ // Export functionality
43
+ window.exportAdData = function() {
44
+ const adData = {
45
+ adId: '7739201',
46
+ adName: 'Auto Insurance December Campaign',
47
+ status: 'Active',
48
+ finalUrl: 'https://example.com/auto-insurance?utm_source=quora&utm_campaign=auto_insurance_dec&utm_content=ad_7739201'
49
+ };
50
+
51
+ const blob = new Blob([JSON.stringify(adData, null, 2)], { type: 'application/json' });
52
+ const url = URL.createObjectURL(blob);
53
+ const a = document.createElement('a');
54
+ a.href = url;
55
+ a.download = `ad-data-${adData.adId}.json`;
56
+ a.click();
57
+ URL.revokeObjectURL(url);
58
+
59
+ showNotification('Ad data exported successfully!', 'success');
60
+ };
61
+
62
+ // Share functionality
63
+ window.shareAd = function() {
64
+ if (navigator.share) {
65
+ navigator.share({
66
+ title: 'Quora Ad Details',
67
+ text: 'Check out this Quora ad campaign',
68
+ url: window.location.href
69
+ }).then(() => {
70
+ showNotification('Shared successfully!', 'success');
71
+ }).catch(console.error);
72
+ } else {
73
+ copyToClipboard(window.location.href);
74
+ }
75
+ };
76
+
77
+ // Theme toggle (though we're sticking with dark mode)
78
+ window.toggleTheme = function() {
79
+ const html = document.documentElement;
80
+ html.classList.toggle('dark');
81
+ showNotification(`Theme switched to ${html.classList.contains('dark') ? 'dark' : 'light'} mode`);
82
+ };
83
+
84
+ // Initialize animations
85
+ const observerOptions = {
86
+ threshold: 0.1,
87
+ rootMargin: '0px 0px -50px 0px'
88
+ };
89
+
90
+ const observer = new IntersectionObserver((entries) => {
91
+ entries.forEach(entry => {
92
+ if (entry.isIntersecting) {
93
+ entry.target.classList.add('fade-in');
94
+ }
95
+ });
96
+ }, observerOptions);
97
+
98
+ // Observe all cards for animation
99
+ document.querySelectorAll('.card-hover').forEach(card => {
100
+ observer.observe(card);
101
+ });
102
+ });
style.css CHANGED
@@ -1,28 +1,89 @@
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
 
 
 
 
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
2
+
3
+ * {
4
+ margin: 0;
5
+ padding: 0;
6
+ box-sizing: border-box;
7
+ }
8
+
9
  body {
10
+ font-family: 'Inter', sans-serif;
11
+ }
12
+
13
+ .gradient-bg {
14
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
15
+ }
16
+
17
+ .status-active {
18
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
19
+ }
20
+
21
+ .status-paused {
22
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
23
+ }
24
+
25
+ .status-draft {
26
+ background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);
27
+ }
28
+
29
+ .card-hover {
30
+ transition: all 0.3s ease;
31
+ }
32
+
33
+ .card-hover:hover {
34
+ transform: translateY(-2px);
35
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3);
36
+ }
37
+
38
+ .glass-effect {
39
+ background: rgba(255, 255, 255, 0.1);
40
+ backdrop-filter: blur(10px);
41
+ border: 1px solid rgba(255, 255, 255, 0.2);
42
+ }
43
+
44
+ /* Custom scrollbar */
45
+ ::-webkit-scrollbar {
46
+ width: 6px;
47
+ }
48
+
49
+ ::-webkit-scrollbar-track {
50
+ background: #1f2937;
51
  }
52
 
53
+ ::-webkit-scrollbar-thumb {
54
+ background: #4b5563;
55
+ border-radius: 3px;
56
  }
57
 
58
+ ::-webkit-scrollbar-thumb:hover {
59
+ background: #6b7280;
 
 
 
60
  }
61
 
62
+ /* Animation classes */
63
+ .fade-in {
64
+ animation: fadeIn 0.5s ease-in;
 
 
 
65
  }
66
 
67
+ @keyframes fadeIn {
68
+ from {
69
+ opacity: 0;
70
+ transform: translateY(20px);
71
+ }
72
+ to {
73
+ opacity: 1;
74
+ transform: translateY(0);
75
+ }
76
  }
77
+
78
+ .slide-in {
79
+ animation: slideIn 0.3s ease-out;
80
+ }
81
+
82
+ @keyframes slideIn {
83
+ from {
84
+ transform: translateX(-100%);
85
+ }
86
+ to {
87
+ transform: translateX(0);
88
+ }
89
+ }