/* listgetbuy — landing root: header, mode toggle, hero, footer */ const MAIN_LABELS = { tr: { buyerLabel: 'Alıcıyım', sellerLabel: 'Satıcıyım', login: 'Giriş Yap', badge: 'LİSTELE, TEKLİF AL', heroTitle: 'Fiyatı sen kovalama. Sana gelsin.', heroSubtitle: 'Ne almak istediğini yaz, bütçeni belirle. Satıcılar teklifleriyle rekabet etsin, fiyat sen izlerken düşsün. En iyi teklif kazansın.', motto: 'Alan memnun, Satan memnun', startCTA: 'Hemen Başla', scrollCTA: 'KAYDIR, NASIL ÇALIŞTIĞINI GÖR', footerTitle: 'Listele. Teklif al. Ucuza al.', footerSubtitle: 'Bir tarafta ucuza alan alıcı, diğer tarafta reklamsız satan satıcı. İkisi de kazanır.', footerStartBuyer: 'Alıcı olarak başla', footerStartSeller: 'Satıcı olarak başla' }, en: { buyerLabel: 'I\'m a Buyer', sellerLabel: 'I\'m a Seller', login: 'Log In', badge: 'LIST, GET OFFERS', heroTitle: 'Don\'t chase the price. Let it come to you.', heroSubtitle: 'Write down what you want to buy, set your budget. Sellers underbid each other, watch the price drop. The lowest offer wins.', motto: 'Happy Buyer, Happy Seller', startCTA: 'Get Started', scrollCTA: 'SCROLL TO SEE HOW IT WORKS', footerTitle: 'List. Get offers. Buy cheaper.', footerSubtitle: 'On one side, the buyer gets it cheaper; on the other, the seller sells without ads. Both win.', footerStartBuyer: 'Start as a buyer', footerStartSeller: 'Start as a seller' }, de: { buyerLabel: 'Ich bin Käufer', sellerLabel: 'Ich bin Verkäufer', login: 'Einloggen', badge: 'INSERIEREN, ANGEBOTE ERHALTEN', heroTitle: 'Jag dem Preis nicht hinterher. Lass ihn zu dir kommen.', heroSubtitle: 'Schreibe auf, was du kaufen möchtest, setze dein Budget. Verkäufer unterbieten sich gegenseitig, sieh zu, wie der Preis sinkt. Das niedrigste Angebot gewinnt.', motto: 'Zufriedener Käufer, Zufriedener Verkäufer', startCTA: 'Loslegen', scrollCTA: 'SCROLLEN, UM ZU SEHEN WIE ES FUNKTIONIERT', footerTitle: 'Inserieren. Angebote erhalten. Günstiger kaufen.', footerSubtitle: 'Auf der einen Seite kauft der Käufer günstiger, auf der anderen verkauft der Verkäufer ohne Werbung. Beide gewinnen.', footerStartBuyer: 'Als Käufer starten', footerStartSeller: 'Als Verkäufer starten' } }; function detectLanguage() { const saved = localStorage.getItem('listgetbuy_lang'); if (saved && ['tr', 'en', 'de'].includes(saved)) return saved; const browserLang = (navigator.language || navigator.userLanguage || 'tr').toLowerCase(); if (browserLang.startsWith('de')) return 'de'; if (browserLang.startsWith('en')) return 'en'; return 'tr'; } function Header({ mode, setMode, labels }) { return (
{/* Mobile Login Icon */} { e.currentTarget.style.background = 'var(--green)'; e.currentTarget.style.color = '#fff'; }} onMouseLeave={(e) => { e.currentTarget.style.background = 'var(--green-soft)'; e.currentTarget.style.color = 'var(--green-ink)'; }} >
{[['alici', labels.buyerLabel], ['satici', labels.sellerLabel]].map(([m, label]) => ( ))}
e.target.style.opacity = 0.85} onMouseLeave={(e) => e.target.style.opacity = 1} >{labels.login}
); } function BuyerHero({ labels }) { return (
{labels.badge}

{labels.heroTitle.split('. ')[0]}.
{labels.heroTitle.split('. ')[1]}

{labels.heroSubtitle}

✨ {labels.motto}
e.target.style.opacity = 0.9} onMouseLeave={(e) => e.target.style.opacity = 1} > {labels.startCTA}
{labels.scrollCTA}
); } function Footer({ setMode, lang, setLang, labels }) { return ( ); } function BenefitsSection({ mode, lang }) { const buyerBenefits = { tr: [ { title: 'Düşen Fiyatlar', desc: 'Satıcılar teklif verdikçe fiyat düşer, aradığınız ürünü bütçenizin altında bir fiyata kolayca satın alırsınız.', img: 'https://images.unsplash.com/photo-1561069934-eee225952461?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' }, { title: 'Güvenli Ödeme', desc: 'Ödemeniz havuzda güvenle bekler. Siz ürünü teslim alıp onaylayana kadar satıcıya aktarılmaz.', img: 'https://images.unsplash.com/photo-1698128255721-f9a9ad2da830?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' }, { title: 'Avantajlı Rekabet', desc: 'Her online satılan ürünün pazarlaması için harcanan para rekabette herkes için avantaj yaratır. Zaman kazandırır, hızlı ticareti sağlar.', img: 'https://images.unsplash.com/photo-1695654686808-8e90bd2c6923?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' } ], en: [ { title: 'Dropping Prices', desc: 'As sellers compete and make lower offers, watch the price drop and buy the product below your budget.', img: 'https://images.unsplash.com/photo-1561069934-eee225952461?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' }, { title: 'Secure Payment', desc: 'Your payment is kept safely in escrow. It will not be released to the seller until you receive and approve the item.', img: 'https://images.unsplash.com/photo-1698128255721-f9a9ad2da830?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' }, { title: 'Advantageous Competition', desc: 'The budget spent on marketing for each online-sold product creates an advantage for everyone in the competition, saving time and enabling fast trade.', img: 'https://images.unsplash.com/photo-1695654686808-8e90bd2c6923?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' } ], de: [ { title: 'Sinkende Preise', desc: 'Da Verkäufer miteinander konkurrieren und niedrigere Angebote machen, sinkt der Preis unter Ihr Budget.', img: 'https://images.unsplash.com/photo-1561069934-eee225952461?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' }, { title: 'Sichere Zahlung', desc: 'Ihre Zahlung wird sicher auf einem Treuhandkonto verwahrt und erst freigegeben, wenn Sie den Artikel erhalten und genehmigen.', img: 'https://images.unsplash.com/photo-1698128255721-f9a9ad2da830?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' }, { title: 'Vorteilhafter Wettbewerb', desc: 'Das für das Marketing jedes online verkauften Produkts ausgegebene Budget schafft einen Vorteil für alle im Wettbewerb, spart Zeit und ermöglicht schnellen Handel.', img: 'https://images.unsplash.com/photo-1695654686808-8e90bd2c6923?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' } ] }; const sellerBenefits = { tr: [ { title: 'Hazır Müşteri', desc: 'Müşteri aramakla zaman kaybetmeyin. Alıcısı ve bütçesi belli olan hazır taleplere anında teklif verin.', img: 'https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?auto=format&fit=crop&w=1600&h=1000&q=80' }, { title: 'Sıfır Reklam Gideri', desc: 'Görünmek için vitrin dopingi veya arama reklamı ücreti ödemezsiniz. Rekabetinizi sadece fiyatınızla yaparsınız.', img: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&w=1600&h=1000&q=80' }, { title: 'Hızlı Satış', desc: 'En iyi teklifi siz verdiğinizde süre bitiminde satış doğrudan size kalır, pazarlık süreciyle uğraşmazsınız.', img: 'https://images.unsplash.com/photo-1461896836934-ffe607ba8211?auto=format&fit=crop&w=1600&h=1000&q=80' } ], en: [ { title: 'Ready Customers', desc: 'Do not waste time searching for clients. Bid directly on active demands with established buyer budgets.', img: 'https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?auto=format&fit=crop&w=1600&h=1000&q=80' }, { title: 'Zero Ad Spend', desc: 'No need to pay for search prominence or listing boosts. Compete pure and clean with your best price.', img: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&w=1600&h=1000&q=80' }, { title: 'Fast Sales', desc: 'If yours is the lowest offer when time expires, the sale is awarded directly to you. No extra negotiation.', img: 'https://images.unsplash.com/photo-1461896836934-ffe607ba8211?auto=format&fit=crop&w=1600&h=1000&q=80' } ], de: [ { title: 'Bereite Kunden', desc: 'Suchen Sie nicht lange nach Kunden. Bieten Sie direkt auf aktive Nachfragen mit bereits festgelegten Budgets.', img: 'https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?auto=format&fit=crop&w=1600&h=1000&q=80' }, { title: 'Keine Werbekosten', desc: 'Zahlen Sie keine Gebühren für Hervorhebungen oder Banner. Konkurrieren Sie fair und direkt über Ihren Preis.', img: 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&w=1600&h=1000&q=80' }, { title: 'Schneller Verkauf', desc: 'Wenn Sie bei Ablauf der Zeit das beste Angebot haben, geht der Zuschlag direkt an Sie. Kein weiteres Verhandeln.', img: 'https://images.unsplash.com/photo-1461896836934-ffe607ba8211?auto=format&fit=crop&w=1600&h=1000&q=80' } ] }; const pool = mode === 'alici' ? buyerBenefits : sellerBenefits; const currentSlides = pool[lang] || pool.tr; return (
{currentSlides.map((slide, index) => (
{/* Dark Overlay */}
{/* Text Content */}

{slide.title}

{slide.desc}

))}
); } function App() { const [lang, setLangState] = React.useState(detectLanguage()); const [mode, setMode] = React.useState('alici'); const [config, setConfig] = React.useState({}); const setLang = (code) => { localStorage.setItem('listgetbuy_lang', code); setLangState(code); }; React.useEffect(() => { window.scrollTo({ top: 0 }); }, [mode]); React.useEffect(() => { const SUPABASE_URL = 'https://vucrkhsjjknggfdmvpjf.supabase.co'; const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InZ1Y3JraHNqamtuZ2dmZG12cGpmIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODA3NzM1MjIsImV4cCI6MjA5NjM0OTUyMn0.oqzRrMpDOsvvDc6toUUi4-EcSBFn2IifAyW526YswDI'; fetch(`${SUPABASE_URL}/rest/v1/app_config?select=*`, { headers: { 'apikey': SUPABASE_ANON_KEY, 'Authorization': `Bearer ${SUPABASE_ANON_KEY}` } }) .then(res => res.json()) .then(data => { if (Array.isArray(data)) { const cfg = Object.fromEntries(data.map(r => [r.key, r.value])); setConfig(cfg); } }) .catch(err => console.error('Failed to load SEO configs:', err)); }, []); React.useEffect(() => { const defaultTitles = { tr: 'ListGetBuy — Fiyatı sen kovalama. Sana gelsin.', en: "ListGetBuy — Don't chase the price. Let it come to you.", de: 'ListGetBuy — Jag dem Preis nicht hinterher. Lass ihn zu dir kommen.' }; const defaultDescriptions = { tr: 'Ne almak istediğini yaz, bütçeni belirle. Satıcılar teklifleriyle rekabet etsin, fiyat sen izlerken düşsün. Alan memnun, Satan memnun!', en: 'Write down what you want to buy, set your budget. Sellers underbid each other, watch the price drop. Happy Buyer, Happy Seller!', de: 'Schreibe auf, was du kaufen möchtest, setze dein Budget. Verkäufer unterbieten sich gegenseitig, sieh zu, wie der Preis sinkt. Zufriedener Käufer, Zufriedener Verkäufer!' }; const titleKey = `seo_title_${lang}`; const descKey = `seo_desc_${lang}`; const title = config[titleKey] || defaultTitles[lang] || defaultTitles.tr; const description = config[descKey] || defaultDescriptions[lang] || defaultDescriptions.tr; const keywords = config['seo_keywords'] || ''; const ogImage = config['seo_image'] || ''; const gaId = config['seo_google_analytics'] || ''; document.title = title; // Helper to update meta tags const updateMetaTag = (name, content, isProperty = false) => { if (!content) return; const attr = isProperty ? 'property' : 'name'; let el = document.querySelector(`meta[${attr}="${name}"]`); if (!el) { el = document.createElement('meta'); el.setAttribute(attr, name); document.head.appendChild(el); } el.content = content; }; updateMetaTag('description', description); if (keywords) updateMetaTag('keywords', keywords); updateMetaTag('og:title', title, true); updateMetaTag('og:description', description, true); if (ogImage) updateMetaTag('og:image', ogImage, true); updateMetaTag('twitter:title', title); updateMetaTag('twitter:description', description); if (ogImage) updateMetaTag('twitter:image', ogImage); if (gaId) { if (!window.GA_INJECTED) { window.GA_INJECTED = true; const script = document.createElement('script'); script.async = true; script.src = `https://www.googletagmanager.com/gtag/js?id=${gaId}`; document.head.appendChild(script); const initScript = document.createElement('script'); initScript.innerHTML = ` window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${gaId}'); `; document.head.appendChild(initScript); } } }, [lang, config]); const labels = MAIN_LABELS[lang] || MAIN_LABELS.tr; return (
{mode === 'alici' ? (
) : (
)}
); } ReactDOM.createRoot(document.getElementById('root')).render();