// extras2.jsx — Hesap Devir Wizard + Karşılaştırma Modu + Arama Sonuçları + Hukuki sayfa const { useState: _x2S, useEffect: _x2E, useMemo: _x2M } = React; // ═══════════════════════════════════════════════════════════════ // 1) HESAP DEVİR / ŞİFRE DEĞİŞTİRME WIZARD // ═══════════════════════════════════════════════════════════════ function TransferWizard({ L, lang, theme, listing }) { const [step, setStep] = _x2S(2); const steps = lang === 'tr' ? ['Giriş yap', 'E-postayı değiştir', 'Şifreyi değiştir', '2FA kur', 'Tamamla'] : ['Log in', 'Change email', 'Change password', 'Set up 2FA', 'Finish']; return (
{lang === 'tr' ? 'TESLİMAT · ADIM 3/5' : 'DELIVERY · STEP 3/5'}

{lang === 'tr' ? <>Hesabı güvene al : <>Secure your account}

{/* Stepper */}
{steps.map((s, i) => (
{i < step ? : i + 1}
{s}
))}
{/* Main */}
3
{lang === 'tr' ? 'Yeni şifre oluştur' : 'Create new password'}
{lang === 'tr' ? 'Kendi seçtiğin güçlü bir şifre kullan. En az 14 karakter, semboller dahil.' : 'Strong password, min 14 chars with symbols.'}
{lang === 'tr' ? 'Mevcut şifre' : 'Current password'}
{lang === 'tr' ? 'Yeni şifre' : 'New password'}
{/* Strength */}
{[1,2,3,4].map(i =>
)}
{lang === 'tr' ? '● güçlü' : '● strong'}
{lang === 'tr' ? 'Tekrar yaz' : 'Confirm'}
{/* Side — checklist + tip */}
); } // ═══════════════════════════════════════════════════════════════ // 2) KARŞILAŞTIRMA MODU — novel UX // ═══════════════════════════════════════════════════════════════ function CompareScreen({ L, lang, theme }) { const picks = [LISTINGS[0], LISTINGS[3], LISTINGS[6]]; const metrics = [ { k: 'followers', label: lang === 'tr' ? 'Takipçi' : 'Followers', fmt: (v) => fmtNum(v), raw: (l) => l.followers }, { k: 'age', label: lang === 'tr' ? 'Hesap yaşı' : 'Account age', fmt: (v) => fmtAge(v, lang, L), raw: (l) => l.age }, { k: 'er', label: 'ER', fmt: (v) => `%${v.toFixed(1)}`, raw: (l) => l.er }, { k: 'price', label: lang === 'tr' ? 'Fiyat' : 'Price', fmt: (v) => fmtPrice(v, lang), raw: (l) => l.price, lowerBetter: true }, { k: 'verified', label: lang === 'tr' ? 'Mavi tik' : 'Verified', fmt: (v) => v ? '✓' : '—', raw: (l) => l.verified }, ]; const winner = (m, val) => { const vals = picks.map(m.raw); const best = m.lowerBetter ? Math.min(...vals) : Math.max(...vals); return val === best; }; return (
{lang === 'tr' ? 'YENİLİK · YAN YANA' : 'NEW · SIDE BY SIDE'}

{lang === 'tr' ? <>Hangisi senin için? : <>Which one fits you?}

{/* Header row */}
{picks.map(l => (
{l.handle}
{L[`niche_${l.niche}`]}
))} {/* Metrics rows */} {metrics.map(m => (
{m.label}
{picks.map(l => { const v = m.raw(l); const win = winner(m, v); return (
{m.fmt(v)}
{win &&
★ BEST
}
); })}
))} {/* CTA row */}
{picks.map(l => (
))}
{/* Radar suggestion */}
{lang === 'tr' ? 'AI önerisi' : 'AI suggestion'}
{lang === 'tr' ? <>@byte.daily yaşı ve takipçisiyle en sağlam yatırım — ama ER en yüksek olan @gigglesnap (%7.9) hızlı büyüme istiyorsan daha iyi. : <>@byte.daily is the safest bet; @gigglesnap has the highest ER (7.9%) for fast growth.}
); } // ═══════════════════════════════════════════════════════════════ // 3) ARAMA SONUÇLARI — gelişmiş filtre + chip bar // ═══════════════════════════════════════════════════════════════ function SearchResults({ L, lang, theme }) { // URL'den q oku const initialQ = (typeof window !== 'undefined' && new URLSearchParams(window.location.search).get('q')) || '@city'; const [q, setQ] = _x2S(initialQ); const [showSuggest, setShowSuggest] = _x2S(false); const inputRef = React.useRef(null); // URL'i güncelle _x2E(() => { if (typeof window === 'undefined') return; const params = new URLSearchParams(window.location.search); if (q) params.set('q', q); else params.delete('q'); window.history.replaceState({}, '', window.location.pathname + (params.toString() ? '?' + params.toString() : '')); }, [q]); const hits = LISTINGS.filter(l => l.handle.toLowerCase().includes(q.toLowerCase().replace('@','')) || q.length < 2); // Autocomplete önerileri (handle + niche önerileri) const suggestions = _x2M(() => { if (q.length < 1) return []; const term = q.toLowerCase().replace('@',''); const handleHits = LISTINGS.filter(l => l.handle.toLowerCase().includes(term)).slice(0, 5); const niches = ['travel','fashion','food','tech','beauty','fitness','lifestyle'] .filter(n => n.includes(term) && term.length >= 2); return { handles: handleHits, niches }; }, [q]); const totalSuggest = (suggestions.handles?.length || 0) + (suggestions.niches?.length || 0); return (
{/* Search hero */}
{ setQ(e.target.value); setShowSuggest(true); }} onFocus={() => setShowSuggest(true)} onBlur={() => setTimeout(() => setShowSuggest(false), 200)} placeholder={lang === 'tr' ? 'Hesap ara: @kullanıcı, kategori, takipçi sayısı...' : 'Search: @username, category, follower count...'} style={{ paddingLeft: 48, fontSize: 17, padding: '16px 20px 16px 48px' }}/>
{/* Autocomplete dropdown */} {showSuggest && q.length > 0 && totalSuggest > 0 && (
{suggestions.niches?.length > 0 && (
{lang === 'tr' ? 'Kategoriler' : 'Categories'}
{suggestions.niches.map(n => ( { setQ(n); setShowSuggest(false); }} className="is-chip" style={{ cursor: 'pointer' }}> {n} ))}
)} {suggestions.handles?.length > 0 && ( )}
)}
{[lang === 'tr' ? 'Aged 3+ yıl' : 'Aged 3+', '50K–100K', L.niche_travel, L.niche_tech, `< 20K ₺`].map((c, i) => ( {c} ))} · {hits.length} {lang === 'tr' ? 'sonuç' : 'results'}
{/* Grid */}
{hits.map(l => {}} onView={() => window.location.href = `ilan.html?id=${l.id}`}/>)}
); } // ═══════════════════════════════════════════════════════════════ // 4) HUKUKI — KVKK / Mesafeli Satış / Ön Bilgilendirme // ═══════════════════════════════════════════════════════════════ function LegalPage({ L, lang, theme, initialTab }) { const [tab, setTab] = _x2S(initialTab || 'kvkk'); const tabs = [ { k: 'kvkk', label: 'KVKK' }, { k: 'sale', label: lang === 'tr' ? 'Mesafeli Satış' : 'Distance Sales' }, { k: 'prior', label: lang === 'tr' ? 'Ön Bilgilendirme' : 'Pre-info' }, { k: 'terms', label: lang === 'tr' ? 'Kullanım Koşulları' : 'Terms' }, ]; return (
{lang === 'tr' ? 'HUKUKİ METİNLER' : 'LEGAL'}

{lang === 'tr' ? 'Sözleşmeler ve aydınlatma' : 'Contracts & notices'}

{tabs.map(t => ( ))}
{tab === 'kvkk' && ( <>

6698 Sayılı KVKK Aydınlatma Metni

Veri Sorumlusu: OKxProject Yazılım A.Ş. — Maslak, İstanbul. instasatis.com üzerinden topladığımız kişisel veriler: ad-soyad, e-posta, telefon, IBAN bilgisi, fatura adresi, ödeme kayıtları ve site kullanım verileri.

İşleme amaçları: sipariş oluşturma, ödeme alma, hesap teslim etme, fatura düzenleme, iletişim, yasal yükümlülüklerin yerine getirilmesi.

Haklarınız: verilerinize erişme, düzeltme, silme, itiraz etme hakkınız vardır. Başvuru: kvkk@instasatis.com

)} {tab === 'sale' && ( <>

Mesafeli Satış Sözleşmesi

Madde 1 — Taraflar. Satıcı: OKxProject Yazılım A.Ş. (bundan sonra "SATICI"). Alıcı: siparişi oluşturan kullanıcı (bundan sonra "ALICI").

Madde 2 — Konu. ALICI'nın instasatis.com üzerinden elektronik ortamda sipariş verdiği Instagram hesap erişim bilgilerinin SATICI tarafından ALICI'ya teslim edilmesi.

Madde 3 — Cayma Hakkı. ALICI, teslimden itibaren 7 gün içinde iade talep edebilir. İadede hesap erişiminin SATICI'ya devredilmemiş olması şarttır.

)} {tab === 'prior' && ( <>

Ön Bilgilendirme Formu

Bu form, 6502 Sayılı Tüketicinin Korunması Hakkında Kanun ve Mesafeli Sözleşmeler Yönetmeliği uyarınca ALICI'yı bilgilendirme amacıyla düzenlenmiştir.

Ürün: Dijital hizmet / Instagram hesap erişim bilgileri. Teslim süresi: ödeme onayından itibaren ortalama 10 dk.

)} {tab === 'terms' && ( <>

Kullanım Koşulları

instasatis.com'u kullanarak bu koşulları kabul etmiş sayılırsınız. Site üzerinden satışa sunulan tüm hesaplar OKxProject Yazılım A.Ş. envanterindedir. Üçüncü taraf satıcı yoktur.

)}
); } // ═══════════════════════════════════════════════════════════════ // CATEGORY PAGE — /kategori.html?slug=seyahat // SEO-optimized landing for each niche; auto-pulls matching listings. // ═══════════════════════════════════════════════════════════════ const CATEGORY_META = { travel: { tr: { name: 'Seyahat', slug: 'seyahat', h1: 'Seyahat temalı Instagram hesapları', intro: 'Wanderlust kitlesine hitap eden, gezi fotoğrafları ve rota önerileriyle büyümüş hesaplar. Turizm acenteleri, otel zincirleri ve seyahat içerik üreticileri için ideal.', keywords: 'seyahat instagram hesabı satın al, gezgin hesap, travel page satışı' }, en: { name: 'Travel', slug: 'travel', h1: 'Travel Instagram accounts', intro: 'Pages built around wanderlust — photo journals, route guides, and destination round-ups. Perfect for travel agencies, hotels, and content creators.', keywords: 'buy travel instagram account, travel page for sale' } }, food: { tr: { name: 'Yemek', slug: 'yemek', h1: 'Yemek ve mutfak hesapları', intro: 'Tarif videoları, restoran rehberleri ve sokak lezzetleri. Restoran sahipleri, yemek markaları ve mutfak içerik üreticileri için.', keywords: 'yemek instagram hesabı, food page satın al, tarif sayfası' }, en: { name: 'Food', slug: 'food', h1: 'Food & cooking pages', intro: 'Recipe reels, restaurant guides, street-food round-ups. For restaurants, food brands, and culinary creators.', keywords: 'buy food instagram, recipe page' } }, fashion: { tr: { name: 'Moda', slug: 'moda', h1: 'Moda ve stil hesapları', intro: 'Outfit ilhamı, sezon trendleri ve marka iş birlikleri. Butikler, e-ticaret markaları ve stil içerik üreticileri için.', keywords: 'moda instagram hesabı, fashion sayfa, butik hesap' }, en: { name: 'Fashion',slug: 'fashion',h1: 'Fashion & style pages', intro: 'Outfit inspo, seasonal trends, brand collabs. For boutiques, e-com brands, and stylists.', keywords: 'fashion instagram for sale' } }, meme: { tr: { name: 'Mizah', slug: 'mizah', h1: 'Mizah ve meme hesapları', intro: 'Yüksek viralite, organik paylaşım ve kuvvetli kitle bağı. Hızlı erişim isteyen markalar ve içerik üreticileri için.', keywords: 'mizah hesabı satın al, meme sayfası, komedi instagram' }, en: { name: 'Memes', slug: 'memes', h1: 'Meme & humor pages', intro: 'High virality, strong organic shares.', keywords: 'meme page for sale' } }, sport: { tr: { name: 'Spor', slug: 'spor', h1: 'Spor ve takım hesapları', intro: 'Maç özetleri, takım fanlık sayfaları, fitness motivasyonu. Spor markaları ve bahis dışı dijital projeler için.', keywords: 'spor instagram hesabı, takım sayfası satın al' }, en: { name: 'Sports', slug: 'sports', h1: 'Sports pages', intro: 'Match recaps, team fan pages, fitness motivation.', keywords: 'sports instagram for sale' } }, tech: { tr: { name: 'Teknoloji', slug: 'teknoloji',h1: 'Teknoloji hesapları', intro: 'Cihaz incelemeleri, yazılım haberleri, gadget review. SaaS, e-ticaret elektronik ve tech medya için.', keywords: 'teknoloji instagram, tech page, gadget hesabı' }, en: { name: 'Tech', slug: 'tech', h1: 'Tech pages', intro: 'Device reviews, software news, gadget round-ups.', keywords: 'tech instagram for sale' } }, art: { tr: { name: 'Sanat', slug: 'sanat', h1: 'Sanat ve illüstrasyon hesapları', intro: 'Dijital sanat, illüstrasyon, fotoğrafçılık. Galeri ve sanatçı portfolyoları için.', keywords: 'sanat instagram hesabı, illüstrasyon sayfası' }, en: { name: 'Art', slug: 'art', h1: 'Art & illustration', intro: 'Digital art, illustration, photography.', keywords: 'art instagram for sale' } }, lifestyle: { tr: { name: 'Yaşam', slug: 'yasam', h1: 'Yaşam tarzı hesapları', intro: 'Günlük rutinler, dekorasyon, vlog içerikleri. Yaşam tarzı markaları için yüksek dönüşüm.', keywords: 'yaşam instagram hesabı, lifestyle sayfa' }, en: { name: 'Lifestyle', slug: 'lifestyle', h1: 'Lifestyle pages', intro: 'Daily routines, decor, vlog content.', keywords: 'lifestyle instagram for sale' } }, music: { tr: { name: 'Müzik', slug: 'muzik', h1: 'Müzik hesapları', intro: 'Klip paylaşımları, sanatçı fan sayfaları, playlist hesapları. Müzik prodüksiyon ve plak şirketleri için.', keywords: 'müzik instagram hesabı, sanatçı sayfası' }, en: { name: 'Music', slug: 'music', h1: 'Music pages', intro: 'Clip shares, artist fan pages, playlist accounts.', keywords: 'music instagram for sale' } }, beauty: { tr: { name: 'Güzellik', slug: 'guzellik', h1: 'Güzellik ve makyaj hesapları', intro: 'Makyaj eğitimleri, cilt bakım rutinleri, ürün incelemeleri. Kozmetik markaları için yüksek ROAS.', keywords: 'güzellik instagram, makyaj sayfası, kozmetik hesabı' }, en: { name: 'Beauty', slug: 'beauty', h1: 'Beauty pages', intro: 'Makeup tutorials, skincare routines, product reviews.', keywords: 'beauty instagram for sale' } }, fitness: { tr: { name: 'Fitness', slug: 'fitness', h1: 'Fitness ve sağlık hesapları', intro: 'Antrenman rutinleri, beslenme ipuçları, motivasyon. Spor salonu ve sağlık markaları için.', keywords: 'fitness instagram hesabı, antrenman sayfası' }, en: { name: 'Fitness',slug: 'fitness',h1: 'Fitness pages', intro: 'Workout routines, nutrition tips, motivation.', keywords: 'fitness instagram for sale' } }, auto: { tr: { name: 'Otomotiv', slug: 'otomotiv', h1: 'Otomotiv hesapları', intro: 'Araç incelemeleri, modifiye, otomobil fotoğrafçılığı. Galeri ve aksesuar markaları için.', keywords: 'otomotiv instagram, araba sayfası satın al' }, en: { name: 'Auto', slug: 'auto', h1: 'Auto pages', intro: 'Car reviews, mods, automotive photography.', keywords: 'auto instagram for sale' } }, }; // Slug ↔ niche helpers function slugToNiche(slug) { for (const [niche, meta] of Object.entries(CATEGORY_META)) { if (meta.tr.slug === slug || meta.en.slug === slug || niche === slug) return niche; } return null; } function CategoryPage({ L, lang, theme }) { // URL'den slug oku const slug = (typeof window !== 'undefined' && new URLSearchParams(window.location.search).get('slug')) || 'travel'; const niche = slugToNiche(slug) || 'travel'; const meta = CATEGORY_META[niche][lang] || CATEGORY_META[niche].tr; const allListings = LISTINGS.filter(l => l.niche === niche); const [sortBy, setSortBy] = _x2S('relevance'); const [favs, setFavs] = _x2S(() => loadJson(APP_KEYS.favs, [])); // Document title + meta description (client-side SEO) _x2E(() => { if (typeof document === 'undefined') return; document.title = `${meta.h1} — InstaSatış`; let descTag = document.querySelector('meta[name="description"]'); if (!descTag) { descTag = document.createElement('meta'); descTag.setAttribute('name', 'description'); document.head.appendChild(descTag); } descTag.setAttribute('content', meta.intro.slice(0, 160)); let kwTag = document.querySelector('meta[name="keywords"]'); if (!kwTag) { kwTag = document.createElement('meta'); kwTag.setAttribute('name', 'keywords'); document.head.appendChild(kwTag); } kwTag.setAttribute('content', meta.keywords); }, [meta.h1]); const sorted = _x2M(() => { const arr = [...allListings]; if (sortBy === 'price-asc') arr.sort((a, b) => a.price - b.price); else if (sortBy === 'price-desc') arr.sort((a, b) => b.price - a.price); else if (sortBy === 'followers') arr.sort((a, b) => b.followers - a.followers); else if (sortBy === 'er') arr.sort((a, b) => b.er - a.er); return arr; }, [allListings, sortBy]); const avgPrice = allListings.length ? Math.round(allListings.reduce((s, l) => s + l.price, 0) / allListings.length) : 0; const avgER = allListings.length ? (allListings.reduce((s, l) => s + l.er, 0) / allListings.length).toFixed(1) : 0; const totalFollowers = allListings.reduce((s, l) => s + l.followers, 0); const c = NICHE_COLORS[niche] || ['#888', '#666']; // Other categories for footer links const otherCategories = Object.entries(CATEGORY_META) .filter(([k]) => k !== niche) .slice(0, 8); return (
{/* Breadcrumb (also acts as JSON-LD source) */}
{lang === 'tr' ? 'Anasayfa' : 'Home'} {lang === 'tr' ? 'Kategoriler' : 'Categories'} {meta.name}
{/* Hero */}
{meta.name.charAt(0)}
{lang === 'tr' ? 'KATEGORİ' : 'CATEGORY'} · {allListings.length} {lang === 'tr' ? 'aktif ilan' : 'active listings'}

{meta.h1}

{meta.intro}

{/* Stats strip */}
{[ { k: allListings.length, l: lang === 'tr' ? 'Aktif ilan' : 'Listings' }, { k: fmtNum(totalFollowers), l: lang === 'tr' ? 'Toplam takipçi' : 'Total followers' }, { k: avgER + '%', l: lang === 'tr' ? 'Ortalama ER' : 'Average ER' }, { k: fmtPrice(avgPrice, lang), l: lang === 'tr' ? 'Ortalama fiyat' : 'Average price' }, ].map((s, i) => (
{s.k}
{s.l}
))}
{/* Sort + listings */}

{lang === 'tr' ? `${meta.name} kategorisindeki ilanlar` : `Listings in ${meta.name}`}

{lang === 'tr' ? 'Sırala:' : 'Sort:'}
{sorted.length === 0 ? (
📭
{lang === 'tr' ? 'Bu kategoride henüz aktif ilan yok' : 'No active listings in this category'}
{lang === 'tr' ? 'Yakında yeni ilanlar eklenecek.' : 'New listings coming soon.'}
) : (
{sorted.map(l => ( { const next = favs.includes(l.id) ? favs.filter(x => x !== l.id) : [...favs, l.id]; setFavs(next); saveJson(APP_KEYS.favs, next); }} onView={() => window.location.href = `ilan.html?id=${l.id}`}/> ))}
)}
{/* SEO content blocks */}

{lang === 'tr' ? `Neden ${meta.name.toLowerCase()} hesabı?` : `Why a ${meta.name.toLowerCase()} account?`}

{lang === 'tr' ? `${meta.name} kategorisindeki Instagram hesapları, niş kitlesi sayesinde ortalama %${avgER} etkileşim oranıyla genel piyasanın 2-3 katı performans gösterir. Hazır bir ${meta.name.toLowerCase()} hesabı satın aldığında, sıfırdan kitle kurmak için harcanacak 6-12 ayı tamamen atlamış olursun. Reklam hesabı açma kısıtlamaları da yaşlı hesaplarda çok daha azdır.` : `${meta.name} accounts deliver ${avgER}% average engagement — 2-3× higher than general pages. Buying an established account skips 6-12 months of audience building.`}

{lang === 'tr' ? 'Doğrulama ve teslimat' : 'Verification & delivery'}

{lang === 'tr' ? 'Her ilan, ekibimiz tarafından elle inceleniyor: takipçi kalitesi, etkileşim geçmişi ve kitle coğrafyası ölçülüyor. Ödeme sonrası teslimat ortalama 5 dakika; kullanıcı adı, şifre, bağlı e-posta ve kurtarma bilgileri panelinde teslim edilir. 7 gün içinde sorun yaşarsan tam iade alırsın.' : 'Every listing is hand-reviewed: follower quality, engagement history, audience geography. Delivery within 5 minutes — username, password, linked email and recovery details. 7-day full refund.'}

{/* Other categories */}

{lang === 'tr' ? 'Diğer kategoriler' : 'Other categories'}

{otherCategories.map(([k, m]) => { const cc = NICHE_COLORS[k] || ['#888', '#666']; const mm = m[lang] || m.tr; return (
); } Object.assign(window, { TransferWizard, CompareScreen, SearchResults, LegalPage, CategoryPage, CATEGORY_META, slugToNiche });