resul commited on
Commit
021d4b3
·
verified ·
1 Parent(s): bf4e65d

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +651 -19
index.html CHANGED
@@ -1,19 +1,651 @@
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="tr" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>HackLink Market V1 | Premium SEO Link Platform</title>
7
+
8
+ <!-- Tailwind CSS -->
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+
11
+ <!-- Vue 3 -->
12
+ <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
13
+
14
+ <!-- Lucide Icons -->
15
+ <script src="https://unpkg.com/lucide-vue-next@latest"></script>
16
+
17
+ <!-- Google Fonts: Inter for that "Refined Admin" feel -->
18
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
19
+
20
+ <style>
21
+ :root {
22
+ --slate-950: #020617;
23
+ --slate-900: #0f172a;
24
+ --indigo-600: #4f46e5;
25
+ --indigo-500: #6366f1;
26
+ --amber-500: #f59e0b;
27
+ --emerald-500: #10b981;
28
+ --glass: rgba(15, 23, 42, 0.6);
29
+ }
30
+
31
+ body {
32
+ font-family: 'Inter', sans-serif;
33
+ background-color: var(--slate-950);
34
+ color: #e2e8f0;
35
+ overflow-x: hidden;
36
+ }
37
+
38
+ /* Custom Scrollbar */
39
+ ::-webkit-scrollbar {
40
+ width: 8px;
41
+ height: 8px;
42
+ }
43
+ ::-webkit-scrollbar-track {
44
+ background: var(--slate-950);
45
+ }
46
+ ::-webkit-scrollbar-thumb {
47
+ background: var(--slate-800);
48
+ border-radius: 4px;
49
+ }
50
+ ::-webkit-scrollbar-thumb:hover {
51
+ background: var(--slate-700);
52
+ }
53
+
54
+ /* Glassmorphism Utilities */
55
+ .glass-panel {
56
+ background: var(--glass);
57
+ backdrop-filter: blur(12px);
58
+ -webkit-backdrop-filter: blur(12px);
59
+ border: 1px solid rgba(255, 255, 255, 0.05);
60
+ }
61
+
62
+ .glass-card {
63
+ background: rgba(30, 41, 59, 0.4);
64
+ backdrop-filter: blur(8px);
65
+ -webkit-backdrop-filter: blur(8px);
66
+ border: 1px solid rgba(255, 255, 255, 0.03);
67
+ }
68
+
69
+ /* Animations */
70
+ .fade-enter-active, .fade-leave-active {
71
+ transition: opacity 0.3s ease;
72
+ }
73
+ .fade-enter-from, .fade-leave-to {
74
+ opacity: 0;
75
+ }
76
+
77
+ .slide-enter-active, .slide-leave-active {
78
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
79
+ }
80
+ .slide-enter-from, .slide-leave-to {
81
+ transform: translateX(-100%);
82
+ }
83
+ </style>
84
+ </head>
85
+ <body>
86
+
87
+ <div id="app" class="flex h-screen w-full">
88
+
89
+ <!-- SIDEBAR -->
90
+ <aside :class="['fixed md:static inset-y-0 left-0 z-50 w-64 glass-panel transition-transform duration-300 ease-in-out transform ' + (sidebarOpen ? 'translate-x-0' : '-translate-x-full md:translate-x-0')]" class="hidden md:flex flex-col">
91
+ <!-- Logo -->
92
+ <div class="h-16 flex items-center px-6 border-b border-white/5">
93
+ <div class="flex items-center gap-3">
94
+ <div class="w-8 h-8 rounded-lg bg-gradient-to-br from-indigo-500 to-purple-600 flex items-center justify-center shadow-lg shadow-indigo-500/20">
95
+ <lucide-icon name="link" class="text-white w-5 h-5" />
96
+ </div>
97
+ <span class="font-bold text-xl tracking-tight text-white">HackLink<span class="text-indigo-400">.Market</span></span>
98
+ </div>
99
+ <button @click="sidebarOpen = false" class="md:hidden ml-auto text-gray-400 hover:text-white">
100
+ <lucide-icon name="x" class="w-6 h-6" />
101
+ </button>
102
+ </div>
103
+
104
+ <!-- Nav Links -->
105
+ <nav class="flex-1 overflow-y-auto py-6 px-3 space-y-1">
106
+ <p class="px-3 text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2">Platform</p>
107
+ <button v-for="link in navLinks" :key="link.name"
108
+ @click="navigate(link.path)"
109
+ class="w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 group"
110
+ :class="activePage === link.path ? 'bg-indigo-600/10 text-indigo-400 border border-indigo-500/20' : 'text-gray-400 hover:bg-white/5 hover:text-white'">
111
+ <lucide-icon :name="link.icon" class="w-5 h-5 transition-transform group-hover:scale-110" />
112
+ <span class="font-medium">{{ link.name }}</span>
113
+ </button>
114
+
115
+ <p class="px-3 text-xs font-semibold text-gray-500 uppercase tracking-wider mt-6 mb-2">Management</p>
116
+ <button v-for="adminLink in adminNavLinks" :key="adminLink.name"
117
+ @click="navigate(adminLink.path)"
118
+ class="w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 group"
119
+ :class="activePage === adminLink.path ? 'bg-emerald-600/10 text-emerald-400 border border-emerald-500/20' : 'text-gray-400 hover:bg-white/5 hover:text-white'">
120
+ <lucide-icon :name="adminLink.icon" class="w-5 h-5 transition-transform group-hover:scale-110" />
121
+ <span class="font-medium">{{ adminLink.name }}</span>
122
+ </button>
123
+ </nav>
124
+
125
+ <!-- User Mini-Profile in Sidebar -->
126
+ <div class="p-4 border-t border-white/5">
127
+ <div class="flex items-center gap-3 p-2 rounded-lg glass-card">
128
+ <div class="w-10 h-10 rounded-full bg-gradient-to-r from-slate-700 to-slate-600 flex items-center justify-center text-white font-bold">
129
+ {{ user.name.charAt(0) }}
130
+ </div>
131
+ <div class="flex-1 min-w-0">
132
+ <p class="text-sm font-medium text-white truncate">{{ user.name }}</p>
133
+ <p class="text-xs text-gray-400 truncate">{{ user.email }}</p>
134
+ </div>
135
+ <lucide-icon name="chevron-right" class="w-4 h-4 text-gray-500" />
136
+ </div>
137
+ </div>
138
+ </aside>
139
+
140
+ <!-- MAIN CONTENT -->
141
+ <div class="flex-1 flex flex-col h-screen overflow-hidden relative">
142
+
143
+ <!-- HEADER -->
144
+ <header class="h-16 glass-panel border-b border-white/5 flex items-center justify-between px-4 md:px-8 z-40">
145
+ <div class="flex items-center gap-4">
146
+ <button @click="sidebarOpen = true" class="md:hidden p-2 text-gray-400 hover:text-white rounded-lg hover:bg-white/10">
147
+ <lucide-icon name="menu" class="w-6 h-6" />
148
+ </button>
149
+ <h2 class="text-xl font-semibold text-white hidden sm:block">{{ pageTitles[activePage] }}</h2>
150
+ </div>
151
+
152
+ <div class="flex items-center gap-4 md:gap-6">
153
+ <!-- Balance Display -->
154
+ <div class="flex items-center gap-3 px-4 py-2 glass-card rounded-full border border-white/5 shadow-sm">
155
+ <div class="flex flex-col items-end">
156
+ <span class="text-[10px] uppercase tracking-wider text-gray-400 font-semibold">Bakiye</span>
157
+ <span class="text-lg font-bold text-emerald-400 leading-none">{{ user.balance.toLocaleString() }} ₺</span>
158
+ </div>
159
+ <div class="h-8 w-px bg-white/10 mx-2"></div>
160
+ <button @click="showTopUpModal = true" class="p-2 rounded-full bg-indigo-600 hover:bg-indigo-500 text-white transition-colors shadow-lg shadow-indigo-600/20">
161
+ <lucide-icon name="plus-circle" class="w-5 h-5" />
162
+ </button>
163
+ </div>
164
+
165
+ <!-- Notifications -->
166
+ <div class="relative">
167
+ <button @click="toggleNotifications" class="p-2 text-gray-400 hover:text-white hover:bg-white/10 rounded-lg transition-colors relative">
168
+ <lucide-icon name="bell" class="w-6 h-6" />
169
+ <span v-if="notifications.length > 0" class="absolute top-1.5 right-1.5 w-2.5 h-2.5 bg-amber-500 rounded-full border-2 border-slate-900 animate-pulse"></span>
170
+ </button>
171
+
172
+ <!-- Notification Dropdown -->
173
+ <div v-if="showNotifDropdown" class="absolute right-0 mt-2 w-80 glass-panel rounded-xl shadow-2xl border border-white/5 overflow-hidden animate-in fade-in zoom-in duration-200 origin-top-right">
174
+ <div class="px-4 py-3 border-b border-white/5 flex justify-between items-center">
175
+ <h3 class="font-semibold text-white">Bildirimler</h3>
176
+ <button @click="clearNotifications" class="text-xs text-indigo-400 hover:text-indigo-300">Tümünü Temizle</button>
177
+ </div>
178
+ <div class="max-h-80 overflow-y-auto p-2 space-y-2">
179
+ <div v-for="notif in notifications" :key="notif.id" class="p-3 rounded-lg hover:bg-white/5 transition-colors border border-transparent hover:border-white/5">
180
+ <div class="flex items-start gap-3">
181
+ <div :class="[
182
+ 'w-2 h-2 mt-1.5 rounded-full flex-shrink-0',
183
+ notif.type === 'critical' ? 'bg-amber-500' : notif.type === 'system' ? 'bg-indigo-500' : 'bg-emerald-500'
184
+ ]"></div>
185
+ <div>
186
+ <p class="text-sm text-gray-200">{{ notif.message }}</p>
187
+ <p class="text-xs text-gray-500 mt-1">{{ notif.time }}</p>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ <div v-if="notifications.length === 0" class="text-center py-8 text-gray-500 text-sm">
192
+ Yeni bildirim yok
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+
198
+ <!-- Profile Menu -->
199
+ <div class="relative">
200
+ <button @click="toggleProfile" class="flex items-center gap-2 p-1 pr-3 rounded-lg hover:bg-white/10 transition-colors border border-transparent hover:border-white/5">
201
+ <div class="w-8 h-8 rounded-full bg-gradient-to-r from-slate-700 to-slate-600 flex items-center justify-center text-white text-xs font-bold">
202
+ {{ user.name.charAt(0) }}
203
+ </div>
204
+ <div class="hidden md:block text-left">
205
+ <p class="text-xs font-medium text-white leading-none">{{ user.name }}</p>
206
+ <p class="text-[10px] text-gray-400 leading-none mt-0.5">
207
+ {{ user.twoFactor ? '2FA Aktif' : '2FA Pasif' }}
208
+ </p>
209
+ </div>
210
+ <lucide-icon name="chevron-down" class="w-4 h-4 text-gray-400 ml-1 hidden md:block" />
211
+ </button>
212
+
213
+ <div v-if="showProfileDropdown" class="absolute right-0 mt-2 w-48 glass-panel rounded-xl shadow-2xl border border-white/5 overflow-hidden py-1 animate-in fade-in zoom-in duration-200 origin-top-right z-50">
214
+ <button class="w-full px-4 py-2 text-left text-sm text-gray-300 hover:bg-white/5 hover:text-white transition-colors flex items-center gap-2">
215
+ <lucide-icon name="user" class="w-4 h-4" /> Profilim
216
+ </button>
217
+ <button class="w-full px-4 py-2 text-left text-sm text-gray-300 hover:bg-white/5 hover:text-white transition-colors flex items-center gap-2">
218
+ <lucide-icon name="settings" class="w-4 h-4" /> Ayarlar
219
+ </button>
220
+ <div class="border-t border-white/5 my-1"></div>
221
+ <button @click="logout" class="w-full px-4 py-2 text-left text-sm text-red-400 hover:bg-red-500/10 transition-colors flex items-center gap-2">
222
+ <lucide-icon name="log-out" class="w-4 h-4" /> Çıkış Yap
223
+ </button>
224
+ </div>
225
+ </div>
226
+ </div>
227
+ </header>
228
+
229
+ <!-- PAGE CONTENT -->
230
+ <main class="flex-1 overflow-y-auto p-4 md:p-8 relative">
231
+ <!-- Background Decor -->
232
+ <div class="fixed inset-0 z-0 pointer-events-none overflow-hidden">
233
+ <div class="absolute top-0 left-1/4 w-96 h-96 bg-indigo-600/10 rounded-full blur-[100px]"></div>
234
+ <div class="absolute bottom-0 right-1/4 w-96 h-96 bg-emerald-600/10 rounded-full blur-[100px]"></div>
235
+ </div>
236
+
237
+ <div class="relative z-10 max-w-7xl mx-auto">
238
+
239
+ <!-- DASHBOARD -->
240
+ <div v-if="activePage === 'dashboard'" class="space-y-6">
241
+ <!-- Stats Grid -->
242
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
243
+ <div class="glass-card p-6 rounded-xl border border-white/5 shadow-lg">
244
+ <div class="flex items-center justify-between">
245
+ <div>
246
+ <p class="text-sm text-gray-400 font-medium">Toplam Link</p>
247
+ <h3 class="text-3xl font-bold text-white mt-1">{{ dashboardStats.totalLinks }}</h3>
248
+ </div>
249
+ <div class="p-3 bg-indigo-500/10 rounded-lg text-indigo-400">
250
+ <lucide-icon name="link" class="w-6 h-6" />
251
+ </div>
252
+ </div>
253
+ <div class="mt-4 flex items-center text-xs text-emerald-400">
254
+ <lucide-icon name="trending-up" class="w-3 h-3 mr-1" />
255
+ <span>+12% bu hafta</span>
256
+ </div>
257
+ </div>
258
+
259
+ <div class="glass-card p-6 rounded-xl border border-white/5 shadow-lg">
260
+ <div class="flex items-center justify-between">
261
+ <div>
262
+ <p class="text-sm text-gray-400 font-medium">Harcanan Kredi</p>
263
+ <h3 class="text-3xl font-bold text-white mt-1">{{ dashboardStats.spent.toLocaleString() }}</h3>
264
+ </div>
265
+ <div class="p-3 bg-amber-500/10 rounded-lg text-amber-400">
266
+ <lucide-icon name="credit-card" class="w-6 h-6" />
267
+ </div>
268
+ </div>
269
+ <div class="mt-4 flex items-center text-xs text-gray-500">
270
+ <span>Son 30 gün</span>
271
+ </div>
272
+ </div>
273
+
274
+ <div class="glass-card p-6 rounded-xl border border-white/5 shadow-lg">
275
+ <div class="flex items-center justify-between">
276
+ <div>
277
+ <p class="text-sm text-gray-400 font-medium">Aktif Linkler</p>
278
+ <h3 class="text-3xl font-bold text-white mt-1">{{ dashboardStats.activeLinks }}</h3>
279
+ </div>
280
+ <div class="p-3 bg-emerald-500/10 rounded-lg text-emerald-400">
281
+ <lucide-icon name="circle-check" class="w-6 h-6" />
282
+ </div>
283
+ </div>
284
+ <div class="mt-4 flex items-center text-xs text-emerald-400">
285
+ <lucide-icon name="shield-check" class="w-3 h-3 mr-1" />
286
+ <span>Yüksek Güvenilirlik</span>
287
+ </div>
288
+ </div>
289
+
290
+ <div class="glass-card p-6 rounded-xl border border-white/5 shadow-lg">
291
+ <div class="flex items-center justify-between">
292
+ <div>
293
+ <p class="text-sm text-gray-400 font-medium">Güvenlik Durumu</p>
294
+ <h3 class="text-3xl font-bold text-white mt-1">Güvenli</h3>
295
+ </div>
296
+ <div class="p-3 bg-slate-700/10 rounded-lg text-slate-400">
297
+ <lucide-icon name="shield" class="w-6 h-6" />
298
+ </div>
299
+ </div>
300
+ <div class="mt-4 flex items-center text-xs text-emerald-400">
301
+ <lucide-icon name="lock" class="w-3 h-3 mr-1" />
302
+ <span>2FA Aktif</span>
303
+ </div>
304
+ </div>
305
+ </div>
306
+
307
+ <!-- Charts Section -->
308
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
309
+ <!-- Activity Chart -->
310
+ <div class="lg:col-span-2 glass-card p-6 rounded-xl border border-white/5 shadow-lg">
311
+ <div class="flex items-center justify-between mb-6">
312
+ <h3 class="text-lg font-semibold text-white">Kredi Aktivitesi (7 Günlük)</h3>
313
+ <select class="bg-slate-800 text-xs text-gray-300 border border-white/10 rounded-lg px-2 py-1 outline-none">
314
+ <option>Tüm Zamanlar</option>
315
+ <option>Son 7 Gün</option>
316
+ </select>
317
+ </div>
318
+ <!-- Simulated Chart using CSS -->
319
+ <div class="h-64 w-full flex items-end justify-between gap-2 px-4">
320
+ <div v-for="(val, i) in chartData" :key="i" class="group relative w-full h-full flex flex-col justify-end">
321
+ <div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-indigo-600/20 to-indigo-500/0 h-full w-full z-0"></div>
322
+ <div :style="{ height: val + '%' }" class="w-full bg-indigo-500 rounded-t-md hover:bg-indigo-400 transition-all duration-300 relative z-10 group-hover:shadow-[0_0_15px_rgba(99,102,241,0.5)]">
323
+ <div class="opacity-0 group-hover:opacity-100 absolute -top-8 left-1/2 -translate-x-1/2 bg-slate-900 text-white text-xs py-1 px-2 rounded border border-white/20 whitespace-nowrap transition-opacity">
324
+ {{ val * 10 }} Kredi
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </div>
329
+ <div class="flex justify-between mt-4 text-xs text-gray-500 px-4">
330
+ <span>Mon</span><span>Tue</span><span>Wed</span><span>Thu</span><span>Fri</span><span>Sat</span><span>Sun</span>
331
+ </div>
332
+ </div>
333
+
334
+ <!-- Site Pool Distribution -->
335
+ <div class="glass-card p-6 rounded-xl border border-white/5 shadow-lg flex flex-col">
336
+ <h3 class="text-lg font-semibold text-white mb-6">Site Havuzu Dağılımı</h3>
337
+ <div class="flex-1 flex items-center justify-center relative">
338
+ <!-- CSS Doughnut Chart Simulation -->
339
+ <div class="w-48 h-48 rounded-full relative flex items-center justify-center">
340
+ <div class="absolute inset-0 rounded-full border-[16px] border-indigo-600 opacity-20"></div>
341
+ <div class="absolute inset-0 rounded-full border-[16px] border-emerald-500 opacity-40 transform -rotate-45"></div>
342
+ <div class="absolute inset-0 rounded-full border-[16px] border-amber-500 opacity-40 transform rotate-90"></div>
343
+ <div class="text-center z-10">
344
+ <span class="block text-3xl font-bold text-white">{{ dashboardStats.totalLinks }}</span>
345
+ <span class="text-xs text-gray-400 uppercase tracking-wider">Toplam Site</span>
346
+ </div>
347
+ </div>
348
+ </div>
349
+ <div class="mt-6 space-y-3">
350
+ <div class="flex items-center justify-between text-sm">
351
+ <div class="flex items-center gap-2">
352
+ <div class="w-3 h-3 rounded-full bg-indigo-500"></div>
353
+ <span class="text-gray-300">.com (65%)</span>
354
+ </div>
355
+ <span class="text-white font-mono">1,340</span>
356
+ </div>
357
+ <div class="flex items-center justify-between text-sm">
358
+ <div class="flex items-center gap-2">
359
+ <div class="w-3 h-3 rounded-full bg-emerald-500"></div>
360
+ <span class="text-gray-300">.net (20%)</span>
361
+ </div>
362
+ <span class="text-white font-mono">412</span>
363
+ </div>
364
+ <div class="flex items-center justify-between text-sm">
365
+ <div class="flex items-center gap-2">
366
+ <div class="w-3 h-3 rounded-full bg-amber-500"></div>
367
+ <span class="text-gray-300">Other (15%)</span>
368
+ </div>
369
+ <span class="text-white font-mono">308</span>
370
+ </div>
371
+ </div>
372
+ </div>
373
+ </div>
374
+ </div>
375
+
376
+ <!-- MARKET -->
377
+ <div v-if="activePage === 'market'" class="space-y-6">
378
+ <!-- Filter Bar -->
379
+ <div class="glass-card p-4 rounded-xl border border-white/5 flex flex-col md:flex-row gap-4 justify-between items-center">
380
+ <div class="flex gap-2 w-full md:w-auto">
381
+ <div class="relative flex-1 md:w-64">
382
+ <lucide-icon name="search" class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-500 w-4 h-4" />
383
+ <input type="text" placeholder="Site adı, kategori ara..." class="w-full bg-slate-950/50 border border-white/10 rounded-lg py-2 pl-9 pr-4 text-sm text-white focus:outline-none focus:border-indigo-500 transition-colors">
384
+ </div>
385
+ <select class="bg-slate-950/50 border border-white/10 rounded-lg px-3 py-2 text-sm text-gray-300 focus:outline-none focus:border-indigo-500">
386
+ <option>Tüm Kategoriler</option>
387
+ <option>Sosyal Medya</option>
388
+ <option>Teknoloji</option>
389
+ <option>E-ticaret</option>
390
+ </select>
391
+ <select class="bg-slate-950/50 border border-white/10 rounded-lg px-3 py-2 text-sm text-gray-300 focus:outline-none focus:border-indigo-500">
392
+ <option>DA Yükselen</option>
393
+ <option>PA Yüksek</option>
394
+ <option>Fiyat: Düşük-Yüksek</option>
395
+ </select>
396
+ </div>
397
+ <div class="flex gap-2">
398
+ <button @click="toggleMarketView" class="px-4 py-2 bg-slate-800 hover:bg-slate-700 rounded-lg text-sm text-white transition-colors">
399
+ <lucide-icon name="list" class="w-4 h-4 inline mr-1" /> Liste
400
+ </button>
401
+ <button class="px-4 py-2 bg-slate-800 hover:bg-slate-700 rounded-lg text-sm text-white transition-colors">
402
+ <lucide-icon name="grid" class="w-4 h-4 inline mr-1" /> Kılavuz
403
+ </button>
404
+ </div>
405
+ </div>
406
+
407
+ <!-- Market Table -->
408
+ <div class="glass-card rounded-xl border border-white/5 overflow-hidden shadow-lg">
409
+ <div class="overflow-x-auto">
410
+ <table class="w-full text-left border-collapse">
411
+ <thead>
412
+ <tr class="bg-slate-900/50 border-b border-white/5 text-xs uppercase text-gray-400 font-semibold tracking-wider">
413
+ <th class="p-4"><input type="checkbox" class="rounded bg-slate-800 border-gray-600 text-indigo-600 focus:ring-indigo-600" /></th>
414
+ <th class="p-4">Site Adresi</th>
415
+ <th class="p-4">Kategori</th>
416
+ <th class="p-4">DA / PA</th>
417
+ <th class="p-4 text-center">SS (Spam Score)</th>
418
+ <th class="p-4 text-right">Fiyat</th>
419
+ <th class="p-4 text-center">Durum</th>
420
+ <th class="p-4 text-right">İşlem</th>
421
+ </tr>
422
+ </thead>
423
+ <tbody class="divide-y divide-white/5">
424
+ <tr v-for="link in marketLinks" :key="link.id" class="hover:bg-white/5 transition-colors group">
425
+ <td class="p-4">
426
+ <input type="checkbox" v-model="selectedMarketLinks" :value="link.id" class="rounded bg-slate-800 border-gray-600 text-indigo-600 focus:ring-indigo-600" />
427
+ </td>
428
+ <td class="p-4">
429
+ <div class="font-medium text-white hover:text-indigo-400 cursor-pointer transition-colors">{{ link.url }}</div>
430
+ <div class="text-xs text-gray-500 mt-0.5">{{ link.domain }}</div>
431
+ </td>
432
+ <td class="p-4">
433
+ <span class="px-2 py-1 rounded-md bg-slate-800 text-xs text-gray-300 border border-white/5">{{ link.category }}</span>
434
+ </td>
435
+ <td class="p-4 font-mono text-sm">
436
+ <div class="flex items-center gap-2">
437
+ <span class="text-emerald-400 font-bold">{{ link.da }}</span>
438
+ <span class="text-gray-600">/</span>
439
+ <span class="text-gray-300">{{ link.pa }}</span>
440
+ </div>
441
+ </td>
442
+ <td class="p-4 text-center">
443
+ <span :class="[
444
+ 'inline-flex items-center justify-center w-6 h-6 rounded-full text-xs font-bold',
445
+ link.spamScore > 5 ? 'bg-red-500/20 text-red-400' : 'bg-emerald-500/20 text-emerald-400'
446
+ ]">
447
+ {{ link.spamScore }}
448
+ </span>
449
+ </td>
450
+ <td class="p-4 text-right font-medium text-white">{{ link.price }} ₺</td>
451
+ <td class="p-4 text-center">
452
+ <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-emerald-500/10 text-emerald-400 border border-emerald-500/20">
453
+ Aktif
454
+ </span>
455
+ </td>
456
+ <td class="p-4 text-right">
457
+ <button @click="addToBulk(link)" class="text-indigo-400 hover:text-indigo-300 hover:bg-indigo-500/10 px-3 py-1.5 rounded-lg transition-colors text-sm font-medium">
458
+ Ekle
459
+ </button>
460
+ </td>
461
+ </tr>
462
+ </tbody>
463
+ </table>
464
+ </div>
465
+ <div class="p-4 border-t border-white/5 flex justify-between items-center bg-slate-900/30">
466
+ <span class="text-sm text-gray-500">Toplam {{ marketLinks.length }} sonuç bulundu</span>
467
+ <div class="flex gap-2">
468
+ <button class="px-3 py-1 text-sm text-gray-400 hover:text-white bg-slate-800 rounded hover:bg-slate-700 disabled:opacity-50" :disabled="true">Önceki</button>
469
+ <button class="px-3 py-1 text-sm text-white bg-indigo-600 rounded hover:bg-indigo-500">Sonraki</button>
470
+ </div>
471
+ </div>
472
+ </div>
473
+ </div>
474
+
475
+ <!-- BULK ADD MODAL (CRITICAL UI) -->
476
+ <div v-if="showBulkModal" class="fixed inset-0 z-[60] flex items-center justify-center p-4">
477
+ <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" @click="showBulkModal = false"></div>
478
+ <div class="relative w-full max-w-2xl glass-panel rounded-2xl shadow-2xl border border-white/10 overflow-hidden flex flex-col max-h-[90vh] animate-in fade-in zoom-in duration-200">
479
+
480
+ <!-- Modal Header -->
481
+ <div class="px-6 py-4 border-b border-white/5 flex justify-between items-center bg-slate-900/50">
482
+ <div>
483
+ <h3 class="text-lg font-bold text-white flex items-center gap-2">
484
+ <lucide-icon name="layers" class="text-indigo-400 w-5 h-5" />
485
+ Toplu İşlem Paneli
486
+ </h3>
487
+ <p class="text-xs text-gray-400 mt-1">Seçilen siteler için link ekleme işlemi</p>
488
+ </div>
489
+ <button @click="showBulkModal = false" class="text-gray-400 hover:text-white transition-colors">
490
+ <lucide-icon name="x" class="w-5 h-5" />
491
+ </button>
492
+ </div>
493
+
494
+ <!-- Modal Body -->
495
+ <div class="flex-1 overflow-y-auto p-6 space-y-6">
496
+
497
+ <!-- Selected Summary -->
498
+ <div class="bg-indigo-900/20 border border-indigo-500/30 rounded-xl p-4 flex items-center justify-between">
499
+ <div class="flex items-center gap-3">
500
+ <div class="bg-indigo-600 text-white p-2 rounded-lg">
501
+ <lucide-icon name="file-text" class="w-5 h-5" />
502
+ </div>
503
+ <div>
504
+ <p class="text-xs text-indigo-300 uppercase font-bold">Toplam Seçilen Site</p>
505
+ <p class="text-2xl font-bold text-white">{{ selectedMarketLinks.length }}</p>
506
+ </div>
507
+ </div>
508
+ <div class="text-right">
509
+ <p class="text-xs text-gray-400 uppercase">Temel Fiyat</p>
510
+ <p class="text-xl font-mono text-emerald-400">{{ basePrice }} ₺ / site</p>
511
+ </div>
512
+ </div>
513
+
514
+ <!-- Dynamic Input List -->
515
+ <div class="space-y-3">
516
+ <div class="flex justify-between items-center mb-2">
517
+ <h4 class="text-sm font-semibold text-gray-300 flex items-center gap-2">
518
+ <lucide-icon name="plus-circle" class="w-4 h-4 text-emerald-500" />
519
+ Site ve Anahtar Kelime Listesi
520
+ </h4>
521
+ <button @click="addBulkEntry" class="text-xs text-indigo-400 hover:text-indigo-300 font-medium flex items-center gap-1">
522
+ <lucide-icon name="plus" class="w-3 h-3" /> + Ek site ve kelime ekle
523
+ </button>
524
+ </div>
525
+
526
+ <div class="space-y-3">
527
+ <div v-for="(entry, index) in bulkEntries" :key="index" class="glass-card rounded-xl p-4 border border-white/5 relative group hover:border-indigo-500/30 transition-colors">
528
+ <button @click="removeBulkEntry(index)" class="absolute top-3 right-3 text-gray-500 hover:text-red-400 opacity-0 group-hover:opacity-100 transition-opacity">
529
+ <lucide-icon name="trash-2" class="w-4 h-4" />
530
+ </button>
531
+
532
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
533
+ <div class="md:col-span-2">
534
+ <label class="block text-xs text-gray-400 mb-1 ml-1">Site Adresi (URL)</label>
535
+ <div class="flex items-center bg-slate-950/50 border border-white/10 rounded-lg px-3 py-2 focus-within:border-indigo-500 transition-colors">
536
+ <lucide-icon name="globe" class="w-4 h-4 text-gray-500 mr-2" />
537
+ <input type="text" v-model="entry.url" placeholder="https://ornek.com" class="bg-transparent w-full outline-none text-sm text-white placeholder-gray-600" />
538
+ </div>
539
+ </div>
540
+ <div>
541
+ <label class="block text-xs text-gray-400 mb-1 ml-1">Anahtar Kelime</label>
542
+ <input type="text" v-model="entry.keyword" placeholder="SEO optimizasyonu..." class="w-full bg-slate-950/50 border border-white/10 rounded-lg px-3 py-2 text-sm text-white outline-none focus:border-indigo-500 transition-colors" />
543
+ </div>
544
+ </div>
545
+ </div>
546
+ </div>
547
+ </div>
548
+
549
+ <!-- Settings & Calculation -->
550
+ <div class="border-t border-white/5 pt-6 space-y-4">
551
+ <div class="flex flex-col md:flex-row gap-4 items-start md:items-center justify-between bg-slate-950/30 p-4 rounded-xl">
552
+ <div class="flex items-center gap-3 w-full md:w-auto">
553
+ <div class="relative">
554
+ <input type="checkbox" id="googleOnly" v-model="googleOnlyToggle" class="peer sr-only" />
555
+ <div class="w-10 h-6 bg-slate-700 peer-checked:bg-amber-600 rounded-full relative transition-colors cursor-pointer border border-white/10">
556
+ <div class="absolute top-1 left-1 w-4 h-4 bg-white rounded-full transition-transform peer-checked:translate-x-4 shadow-sm"></div>
557
+ </div>
558
+ </div>
559
+ <label for="googleOnly" class="text-sm text-gray-300 cursor-pointer select-none">
560
+ <span class="block font-medium text-white">Sadece Google Görsün</span>
561
+ <span class="text-xs text-gray-500">Gizlilik modu (+%20 ekstra)</span>
562
+ </label>
563
+ </div>
564
+
565
+ <div class="flex items-center gap-2 w-full md:w-auto">
566
+ <span class="text-sm text-gray-400">Süre:</span>
567
+ <select v-model="duration" class="bg-slate-800 border border-white/10 rounded-lg px-3 py-1.5 text-sm text-white outline-none focus:border-indigo-500">
568
+ <option v-for="m in [1,3,6,12]" :key="m" :value="m">{{ m }} Ay</option>
569
+ </select>
570
+ </div>
571
+ </div>
572
+
573
+ <!-- Total Calculation Banner -->
574
+ <div class="bg-gradient-to-r from-emerald-900/40 to-emerald-800/40 border border-emerald-500/30 rounded-xl p-4 flex flex-col md:flex-row justify-between items-center">
575
+ <div class="mb-4 md:mb-0">
576
+ <p class="text-xs text-emerald-300 uppercase font-bold mb-1">Toplam Tahmini Tutar</p>
577
+ <div class="flex items-baseline gap-1">
578
+ <span class="text-3xl font-bold text-white">{{ calculatedTotal }}</span>
579
+ <span class="text-emerald-200">₺</span>
580
+ </div>
581
+ <p class="text-xs text-emerald-400/80 mt-1">
582
+ ({{ selectedMarketLinks.length }} Site × {{ bulkEntries.length }} Kelime × {{ pricePerItem }} ₺)
583
+ </p>
584
+ </div>
585
+ <button @click="processBulkOrder" class="w-full md:w-auto px-8 py-3 bg-emerald-600 hover:bg-emerald-500 text-white font-bold rounded-xl shadow-lg shadow-emerald-600/20 transition-all transform hover:scale-105 flex items-center justify-center gap-2">
586
+ <lucide-icon name="credit-card" class="w-5 h-5" />
587
+ Siparişi Tamamla
588
+ </button>
589
+ </div>
590
+ </div>
591
+ </div>
592
+ </div>
593
+ </div>
594
+
595
+ <!-- MY LINKS -->
596
+ <div v-if="activePage === 'myLinks'" class="space-y-6">
597
+ <div class="flex gap-4 mb-6">
598
+ <button @click="filterLinks = 'all'" :class="['px-4 py-2 rounded-lg text-sm font-medium transition-colors', filterLinks === 'all' ? 'bg-indigo-600 text-white' : 'bg-slate-800 text-gray-400 hover:bg-slate-700']">Tümü</button>
599
+ <button @click="filterLinks = 'active'" :class="['px-4 py-2 rounded-lg text-sm font-medium transition-colors', filterLinks === 'active' ? 'bg-indigo-600 text-white' : 'bg-slate-800 text-gray-400 hover:bg-slate-700']">Aktif</button>
600
+ <button @click="filterLinks = 'expiring'" :class="['px-4 py-2 rounded-lg text-sm font-medium transition-colors', filterLinks === 'expiring' ? 'bg-indigo-600 text-white' : 'bg-slate-800 text-gray-400 hover:bg-slate-700']">Yakında Biten</button>
601
+ <button @click="filterLinks = 'expired'" :class="['px-4 py-2 rounded-lg text-sm font-medium transition-colors', filterLinks === 'expired' ? 'bg-indigo-600 text-white' : 'bg-slate-800 text-gray-400 hover:bg-slate-700']">Bitmiş</button>
602
+ </div>
603
+
604
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
605
+ <div v-for="link in filteredMyLinks" class="glass-card rounded-xl p-5 border border-white/5 hover:border-indigo-500/30 transition-all hover:shadow-lg hover:shadow-indigo-500/10 group">
606
+ <div class="flex justify-between items-start mb-4">
607
+ <div class="flex items-center gap-3">
608
+ <div class="w-10 h-10 rounded-lg bg-slate-800 flex items-center justify-center text-indigo-400 group-hover:bg-indigo-600 group-hover:text-white transition-colors">
609
+ <lucide-icon name="link" class="w-5 h-5" />
610
+ </div>
611
+ <div>
612
+ <h4 class="font-bold text-white">{{ link.targetUrl }}</h4>
613
+ <p class="text-xs text-gray-500">{{ link.sourceDomain }}</p>
614
+ </div>
615
+ </div>
616
+ <span :class="[
617
+ 'px-2 py-1 rounded text-xs font-bold',
618
+ link.status === 'Active' ? 'bg-emerald-500/20 text-emerald-400' :
619
+ link.status === 'Expiring' ? 'bg-amber-500/20 text-amber-400' : 'bg-red-500/20 text-red-400'
620
+ ]">{{ link.status }}</span>
621
+ </div>
622
+
623
+ <div class="space-y-3">
624
+ <div class="flex justify-between text-sm">
625
+ <span class="text-gray-400">Süre</span>
626
+ <span class="text-white font-mono">{{ link.duration }} Ay</span>
627
+ </div>
628
+ <div class="flex justify-between text-sm">
629
+ <span class="text-gray-400">Bitiş Tarihi</span>
630
+ <span class="text-white font-mono">{{ link.endDate }}</span>
631
+ </div>
632
+ <div class="flex justify-between text-sm">
633
+ <span class="text-gray-400">Maliyet</span>
634
+ <span class="text-emerald-400 font-mono font-bold">{{ link.cost }} ₺</span>
635
+ </div>
636
+ </div>
637
+
638
+ <div class="mt-5 pt-4 border-t border-white/5 flex gap-2">
639
+ <button class="flex-1 py-2 rounded-lg bg-slate-800 hover:bg-slate-700 text-xs text-white transition-colors">
640
+ <lucide-icon name="edit" class="w-3 h-3 inline mr-1" /> Düzenle
641
+ </button>
642
+ <button v-if="link.status !== 'Active'" class="flex-1 py-2 rounded-lg bg-indigo-600 hover:bg-indigo-500 text-xs text-white transition-colors">
643
+ <lucide-icon name="refresh-cw" class="w-3 h-3 inline mr-1" /> Yenile
644
+ </button>
645
+ </div>
646
+ </div>
647
+ </div>
648
+ </div>
649
+
650
+ <!-- PREMIUM INDEXER -->
651
+ <div v-if="activePage ===