/* global React */ // ============================================ // A_LIZ HAIRDRESSER — Layout components // ============================================ const { useState, useEffect, useRef, useCallback } = React; const { LANGS, pick } = window.AL_DATA; const WHATSAPP_NUMBER = "905388745166"; const WA_LINK = `https://wa.me/${WHATSAPP_NUMBER}`; const WA_LINK_INNER = `https://wa.me/${WHATSAPP_NUMBER}`; // ========== LANGUAGE CONTEXT ========== const LangContext = React.createContext({ lang: "tr", setLang: () => {} }); function LangProvider({ children }) { const [lang, setLangState] = useState(() => { return localStorage.getItem("aliz_lang") || "tr"; }); const setLang = useCallback((l) => { setLangState(l); localStorage.setItem("aliz_lang", l); const langDef = LANGS.find((x) => x.code === l); document.documentElement.lang = l; document.documentElement.dir = langDef && langDef.rtl ? "rtl" : "ltr"; }, []); useEffect(() => { const langDef = LANGS.find((x) => x.code === lang); document.documentElement.lang = lang; document.documentElement.dir = langDef && langDef.rtl ? "rtl" : "ltr"; }, [lang]); return {children}; } const useLang = () => React.useContext(LangContext); const useT = () => { const { lang } = useLang(); return useCallback((key) => pick(key, lang), [lang]); }; // ========== BRAND LOCKUP (crisp typographic logo) ========== function BrandLock({ variant = "dark" }) { return ( AL A_Liz Hairdresser · İstanbul ); } // Flag swatch (renders the SVG flag from LANGS) function Flag({ lang: code, size = 18 }) { const def = LANGS.find((l) => l.code === code); if (!def || !def.flag) return null; return ( ); } // ========== ROUTER (History API — clean URLs) ========== const VALID_ROUTES = ['home','services','gallery','about','contact','appointment','privacy','terms','cookies']; const RouteContext = React.createContext({ route: "home", go: () => {} }); function RouteProvider({ children }) { const getRoute = () => { const path = window.location.pathname.replace(/^\//, '').replace(/\/$/, ''); const r = path || 'home'; return VALID_ROUTES.includes(r) ? r : 'home'; }; const [route, setRoute] = useState(getRoute); useEffect(() => { const handle = () => { setRoute(getRoute()); window.scrollTo({ top: 0, behavior: "instant" }); }; window.addEventListener("popstate", handle); return () => window.removeEventListener("popstate", handle); }, []); const go = useCallback((r) => { const path = r === 'home' ? '/' : '/' + r; window.history.pushState({}, '', path); setRoute(r); window.scrollTo({ top: 0, behavior: "instant" }); }, []); window.AL_NAV = go; return {children}; } const useRoute = () => React.useContext(RouteContext); // ========== REVEAL HOOK ========== function useReveal() { const ref = useRef(null); useEffect(() => { if (!ref.current) return; const el = ref.current; const io = new IntersectionObserver( (entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add("in"); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: "0px 0px -40px 0px" } ); el.querySelectorAll(".reveal, .reveal-watch").forEach((n) => io.observe(n)); return () => io.disconnect(); }, []); return ref; } // ========== 3D TILT HOOK ========== function useTilt(opts = {}) { const { max = 8, scale = 1.02, perspective = 1000 } = opts; const ref = useRef(null); // Skip tilt on touch/mobile for performance const isTouch = typeof window !== 'undefined' && ('ontouchstart' in window || window.matchMedia('(hover: none)').matches); if (isTouch) return ref; useEffect(() => { const el = ref.current; if (!el) return; let rect; const onEnter = () => { rect = el.getBoundingClientRect(); }; const onMove = (e) => { if (!rect) rect = el.getBoundingClientRect(); const x = (e.clientX - rect.left) / rect.width - 0.5; const y = (e.clientY - rect.top) / rect.height - 0.5; el.style.transform = `perspective(${perspective}px) rotateX(${-y * max}deg) rotateY(${x * max}deg) scale(${scale})`; el.style.setProperty("--mx", `${(x + 0.5) * 100}%`); el.style.setProperty("--my", `${(y + 0.5) * 100}%`); }; const onLeave = () => { el.style.transform = `perspective(${perspective}px) rotateX(0) rotateY(0) scale(1)`; }; el.addEventListener("mouseenter", onEnter); el.addEventListener("mousemove", onMove); el.addEventListener("mouseleave", onLeave); return () => { el.removeEventListener("mouseenter", onEnter); el.removeEventListener("mousemove", onMove); el.removeEventListener("mouseleave", onLeave); }; }, [max, scale, perspective]); return ref; } // ========== COUNT-UP HOOK ========== function useCountUp(target, duration = 1600) { const [val, setVal] = useState(0); const ref = useRef(null); useEffect(() => { const el = ref.current; if (!el) return; const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (!e.isIntersecting) return; io.unobserve(el); const start = performance.now(); const tick = (now) => { const p = Math.min(1, (now - start) / duration); const eased = 1 - Math.pow(1 - p, 3); setVal(target * eased); if (p < 1) requestAnimationFrame(tick); else setVal(target); }; requestAnimationFrame(tick); }); }, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' }); io.observe(el); return () => io.disconnect(); }, [target, duration]); return [val, ref]; } // ========== ICONS ========== const Icon = { Arrow: () => ( ), Wa: () => ( ), Phone: () => ( ), Globe: () => ( ), Star: () => ( ), Instagram: () => ( ), TikTok: () => ( ), Facebook: () => ( ), YouTube: () => ( ), Mail: () => ( ), Pin: () => ( ), Clock: () => ( ), }; // ========== ANNOUNCEMENT BAR ========== function Announcement() { const { lang } = useLang(); const [visible, setVisible] = useState(true); const trackRef = useRef(null); const animRef = useRef(null); useEffect(() => { document.body.classList.toggle("has-announce", visible); return () => document.body.classList.remove("has-announce"); }, [visible]); // rAF loop — CSS cascade'i tamamen atlar, inline style kullanır useEffect(() => { if (!visible || !trackRef.current) return; const el = trackRef.current; // Tüm mevcut animasyonları iptal et if (el.getAnimations) el.getAnimations().forEach(a => a.cancel()); el.style.transform = ''; let offset = 0; let lastTs = null; let paused = false; let raf; const step = (ts) => { if (lastTs !== null && !paused) { const dt = Math.min(ts - lastTs, 50); // max 50ms adım const total = el.scrollWidth / 2; if (total > 0) { offset -= (total / 30000) * dt; if (offset < -total) offset += total; el.style.cssText = `transform: translateX(${offset}px) !important;`; } } lastTs = ts; raf = requestAnimationFrame(step); }; raf = requestAnimationFrame(step); const pause = () => { paused = true; }; const play = () => { paused = false; lastTs = null; }; el.addEventListener('mouseenter', pause); el.addEventListener('mouseleave', play); return () => { cancelAnimationFrame(raf); el.removeEventListener('mouseenter', pause); el.removeEventListener('mouseleave', play); el.style.transform = ''; }; }, [visible]); if (!visible) return null; const items = { tr: [ { pre: "✦ Özel Teklif", msg: "Ayak Masajı", tag: "sadece", price: "10 €" }, { pre: "◆ Yaz Sezonu", msg: "Kampanya fiyatları için bizimle iletişime geçin", tag: "", price: "" }, ], en: [ { pre: "✦ Special Offer", msg: "Foot Massage", tag: "only", price: "10 €" }, { pre: "◆ Summer Season", msg: "Contact us for campaign prices", tag: "", price: "" }, ], de: [ { pre: "✦ Sonderangebot", msg: "Fußmassage", tag: "nur", price: "10 €" }, { pre: "◆ Sommersaison", msg: "Kontaktieren Sie uns für Aktionspreise", tag: "", price: "" }, ], fr: [ { pre: "✦ Offre Spéciale", msg: "Massage des Pieds", tag: "seulement", price: "10 €" }, { pre: "◆ Saison Estivale", msg: "Contactez-nous pour les tarifs promotionnels", tag: "", price: "" }, ], ar: [ { pre: "✦ عرض خاص", msg: "مساج القدم", tag: "فقط", price: "10 €" }, { pre: "◆ موسم الصيف", msg: "تواصل معنا للأسعار الترويجية", tag: "", price: "" }, ], ru: [ { pre: "✦ Спецпредложение", msg: "Массаж ног", tag: "всего", price: "10 €" }, { pre: "◆ Летний сезон", msg: "Свяжитесь с нами для уточнения акционных цен", tag: "", price: "" }, ], it: [ { pre: "✦ Offerta Speciale", msg: "Massaggio ai Piedi", tag: "solo", price: "10 €" }, { pre: "◆ Stagione Estiva", msg: "Contattateci per i prezzi promozionali", tag: "", price: "" }, ], es: [ { pre: "✦ Oferta Especial", msg: "Masaje de Pies", tag: "solo", price: "10 €" }, { pre: "◆ Temporada Verano", msg: "Contáctenos para precios de campaña", tag: "", price: "" }, ], }; const list = items[lang] || items.tr; // Build one segment — repeated 4x for seamless loop const Segment = () => ( {list.map((c, i) => ( {c.pre} · {c.msg} {c.price && ( {c.tag && {c.tag}} {c.price} )} ))} ); return (
); } // ========== NAV ========== function Nav() { const { route, go } = useRoute(); const { lang, setLang } = useLang(); const t = useT(); const [scrolled, setScrolled] = useState(false); const [open, setOpen] = useState(false); const [langOpen, setLangOpen] = useState(false); const langRef = useRef(null); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 30); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); useEffect(() => { const onClick = (e) => { if (langRef.current && !langRef.current.contains(e.target)) setLangOpen(false); }; document.addEventListener("click", onClick); return () => document.removeEventListener("click", onClick); }, []); const links = [ ["home", "nav_home"], ["services", "nav_services"], ["gallery", "nav_gallery"], ["about", "nav_about"], ["appointment", "nav_appointment"], ["contact", "nav_contact"], ]; const onNav = (key) => { setOpen(false); go(key); }; const currentLang = LANGS.find((l) => l.code === lang) || LANGS[0]; return ( ); } // ========== WHATSAPP FAB ========== function WhatsAppFab() { const t = useT(); return ( {t("cta_book")} · WhatsApp ); } // ========== FOOTER ========== function Footer() { const t = useT(); const { go } = useRoute(); const year = new Date().getFullYear(); return ( ); } // ========== CTA STRIP ========== function CtaStrip() { const t = useT(); const { go } = useRoute(); return (
{t("cta_eyebrow")}

{t("cta_title")}

{t("cta_lede")}

go('appointment')}> {t("cta_book")} · {t("cta_whatsapp")}
); } // ========== SEO HOOK ========== const SEO_DATA = { home: { en: { title: 'A_Liz Hairdresser — Luxury Hair Salon in Sultanahmet, Istanbul', desc: 'Premium hair salon in the heart of Sultanahmet, Istanbul. Expert cuts, colour, balayage, keratin & bridal hair. Walk-in & WhatsApp booking. Open daily 10:00–24:00.' }, tr: { title: 'A_Liz Hairdresser — Sultanahmet\'in Lüks Kuaförü, İstanbul', desc: 'Sultanahmet\'in kalbinde premium kuaför salonu. Saç kesimi, renklendirme, balayage, keratin & gelin saçı. WhatsApp ile anında randevu. Her gün 10:00–24:00.' } }, services: { en: { title: 'Hair & Beauty Services | A_Liz Hairdresser Istanbul', desc: 'Explore 14 premium hair and beauty services at A_Liz Hairdresser Sultanahmet: cuts, colour, balayage, keratin, makeup, nail care, foot massage and more.' }, tr: { title: 'Hizmetlerimiz | A_Liz Hairdresser İstanbul', desc: 'A_Liz Hairdresser\'da 14 premium saç ve güzellik hizmeti: kesim, renklendirme, balayage, keratin, makyaj, tırnak bakımı, ayak masajı ve daha fazlası.' } }, gallery: { en: { title: 'Gallery | A_Liz Hairdresser Istanbul', desc: 'Browse our gallery of hair transformations at A_Liz Hairdresser, Sultanahmet, Istanbul. Before & after shots from our expert stylists.' }, tr: { title: 'Galeri | A_Liz Hairdresser İstanbul', desc: 'A_Liz Hairdresser\'ın saç dönüşüm galerisine göz atın. Uzman stilistlerimizden öncesi & sonrası çekimler.' } }, about: { en: { title: 'About Us | A_Liz Hairdresser Istanbul', desc: 'Learn about A_Liz Hairdresser — a luxury hair and beauty salon in Sultanahmet, Istanbul, serving guests in 8 languages with world-class brands.' }, tr: { title: 'Hakkımızda | A_Liz Hairdresser İstanbul', desc: 'A_Liz Hairdresser hakkında — Sultanahmet\'te 8 dilde hizmet veren, dünya markaları kullanan lüks kuaför ve güzellik salonu.' } }, contact: { en: { title: 'Contact & Location | A_Liz Hairdresser Istanbul', desc: 'Find A_Liz Hairdresser at Divanyolu Cad. No.50, Sultanahmet, Istanbul. Contact us via WhatsApp, phone or visit us. Open daily 10:00–24:00.' }, tr: { title: 'İletişim & Konum | A_Liz Hairdresser İstanbul', desc: 'A_Liz Hairdresser\'ı Divanyolu Cad. No.50, Sultanahmet, İstanbul\'da bulun. WhatsApp, telefon veya ziyaret ile iletişime geçin. Her gün 10:00–24:00.' } }, appointment: { en: { title: 'Book an Appointment | A_Liz Hairdresser Istanbul', desc: 'Book your appointment at A_Liz Hairdresser Sultanahmet easily online. Choose your date, time and services. Confirmation via WhatsApp.' }, tr: { title: 'Randevu Al | A_Liz Hairdresser İstanbul', desc: 'A_Liz Hairdresser\'da randevunuzu kolayca alın. Tarih, saat ve hizmet seçin. WhatsApp ile onay.' } }, }; function usePageSEO(route) { const { lang } = useLang(); useEffect(() => { const seo = SEO_DATA[route] || SEO_DATA.home; const d = seo[lang] || seo.en; document.title = d.title; const metaDesc = document.querySelector('meta[name="description"]'); if (metaDesc) metaDesc.setAttribute('content', d.desc); const ogTitle = document.querySelector('meta[property="og:title"]'); if (ogTitle) ogTitle.setAttribute('content', d.title); const ogDesc = document.querySelector('meta[property="og:description"]'); if (ogDesc) ogDesc.setAttribute('content', d.desc); const ogUrl = document.querySelector('meta[property="og:url"]'); if (ogUrl) ogUrl.setAttribute('content', 'https://www.alizhairdresser.com' + (route === 'home' ? '/' : '/' + route)); const canonical = document.querySelector('link[rel="canonical"]'); if (canonical) canonical.setAttribute('href', 'https://www.alizhairdresser.com' + (route === 'home' ? '/' : '/' + route)); return () => { document.title = 'A_Liz Hairdresser — Sultanahmet · Istanbul'; }; }, [route, lang]); } Object.assign(window, { LangProvider, RouteProvider, useLang, useT, useRoute, useReveal, useTilt, useCountUp, Icon, Nav, WhatsAppFab, Footer, CtaStrip, WA_LINK, Announcement, usePageSEO }); // ========== LOADING CURTAIN ========== function LoadingCurtain() { const [stage, setStage] = useState(0); // 0=initial, 1=logo-in, 2=lift, 3=gone useEffect(() => { if (sessionStorage.getItem("aliz_curtain_shown") === "1") { setStage(3); return; } const t1 = setTimeout(() => setStage(1), 80); const t2 = setTimeout(() => setStage(2), 1400); const t3 = setTimeout(() => { setStage(3); sessionStorage.setItem("aliz_curtain_shown", "1"); }, 2200); return () => { clearTimeout(t1); clearTimeout(t2); clearTimeout(t3); }; }, []); if (stage === 3) return null; const curtainCls = stage === 0 ? 'curtain' : stage === 1 ? 'curtain logo-in' : 'curtain logo-in lift'; return (
A_Liz
DİVANYOLU · ISTANBUL
); } // ========== CUSTOM CURSOR ========== function CustomCursor() { const dotRef = useRef(null); const ringRef = useRef(null); useEffect(() => { if (window.matchMedia("(pointer: coarse)").matches) return; // skip on touch const dot = dotRef.current; const ring = ringRef.current; let mx = 0, my = 0, rx = 0, ry = 0; const move = (e) => { mx = e.clientX; my = e.clientY; dot.style.transform = `translate(${mx}px, ${my}px)`; }; let raf; const loop = () => { rx += (mx - rx) * 0.18; ry += (my - ry) * 0.18; ring.style.transform = `translate(${rx}px, ${ry}px)`; raf = requestAnimationFrame(loop); }; raf = requestAnimationFrame(loop); const onOver = (e) => { const t = e.target; const link = t.closest("a, button, .service-card, .ig-tile, .ba-slider, .gal-item, .faq-trigger, [role=button]"); if (link) { ring.classList.add("hover"); if (link.closest(".btn-primary")) ring.classList.add("rose"); } else { ring.classList.remove("hover"); ring.classList.remove("rose"); } }; window.addEventListener("mousemove", move); window.addEventListener("mouseover", onOver); return () => { cancelAnimationFrame(raf); window.removeEventListener("mousemove", move); window.removeEventListener("mouseover", onOver); }; }, []); return ( <>
); } // ========== MAGNETIC BUTTON ========== function useMagnetic(strength = 0.3) { const ref = useRef(null); useEffect(() => { const el = ref.current; if (!el) return; const onMove = (e) => { const rect = el.getBoundingClientRect(); const x = e.clientX - (rect.left + rect.width / 2); const y = e.clientY - (rect.top + rect.height / 2); el.style.transform = `translate(${x * strength}px, ${y * strength}px)`; }; const onLeave = () => { el.style.transform = "translate(0,0)"; }; el.addEventListener("mousemove", onMove); el.addEventListener("mouseleave", onLeave); return () => { el.removeEventListener("mousemove", onMove); el.removeEventListener("mouseleave", onLeave); }; }, [strength]); return ref; } // ========== SPLIT-TEXT HEADING ========== function SplitHeading({ text, className = "" }) { const ref = useRef(null); useEffect(() => { if (!ref.current) return; const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add("in"); io.unobserve(e.target); } }); }, { threshold: 0.2 }); io.observe(ref.current); return () => io.disconnect(); }, []); const words = String(text).split(" "); return (

{words.map((w, i) => ( {w}{i < words.length - 1 ? "\u00A0" : ""} ))}

); } // ========== BRAND WORDMARK LOGOS ========== // Typographic recreations — each evokes the brand's distinct DNA in monochrome function BrandLogo({ name }) { switch (name) { case "schwarzkopf": return ( Schwarzkopf ); case "loreal": return ( L'ORÉAL PROFESSIONNEL · PARIS ); case "olaplex": return OLAPLEX®; case "kerastase": return ( KÉRASTASE PARIS ); case "wella": return ( WELLA PROFESSIONALS ); case "rallis": return ( Rallis Professional ); // Press case "vogue": return VOGUE; case "elle": return ELLE; case "marie": return ( MARIE CLAIRE ); case "cosmo": return CosmopolitanTÜRKİYE; case "timeout": return ( Time Out ISTANBUL ); case "harpers": return ( HARPER'S BAZAAR ARABIA ); default: return {name}; } } // ========== OFFER POPUP (circular badge) ========== function OfferPopup() { const t = useT(); const { lang } = useLang(); const [shown, setShown] = useState(false); const [collapsed, setCollapsed] = useState(false); const [closed, setClosed] = useState(() => sessionStorage.getItem("aliz_offer_closed") === "1"); const messages = { tr: "Merhaba, sezon önerisi ayak masajı (€10) için randevu almak istiyorum.", en: "Hello, I'd like to book the seasonal foot massage (€10).", ar: "مرحباً، أود حجز جلسة تدليك القدمين الموسمية (€10).", ru: "Здравствуйте, хочу записаться на сезонный массаж стоп (€10).", it: "Ciao, vorrei prenotare il massaggio plantare stagionale (€10).", de: "Hallo, ich möchte die Saison-Fußmassage (€10) buchen.", fr: "Bonjour, je souhaite réserver le massage des pieds (€10).", es: "Hola, quisiera reservar el masaje de pies (€10).", }; const titles = { tr: "Ayak Masajı", en: "Foot Massage", ar: "تدليك القدمين", ru: "Массаж стоп", it: "Massaggio Plantare", de: "Fußmassage", fr: "Massage des Pieds", es: "Masaje de Pies", }; const offerLink = "https://wa.me/905388745166"; // Show with delay + auto-collapse after 5s useEffect(() => { if (closed) return; const t1 = setTimeout(() => setShown(true), 3800); const t2 = setTimeout(() => setCollapsed(true), 9500); // 9.5s total = 5.7s after appearing return () => { clearTimeout(t1); clearTimeout(t2); }; }, [closed]); const close = (e) => { if (e) { e.preventDefault(); e.stopPropagation(); } setShown(false); sessionStorage.setItem("aliz_offer_closed", "1"); setTimeout(() => setClosed(true), 600); }; const expand = (e) => { if (collapsed) { e.preventDefault(); e.stopPropagation(); setCollapsed(false); // re-collapse after 5s of full view setTimeout(() => setCollapsed(true), 5500); } }; if (closed) return null; return (
); } // ========== SCROLL PROGRESS ========== function ScrollProgress() { const [pct, setPct] = useState(0); useEffect(() => { const onScroll = () => { const d = document.documentElement; const scrolled = d.scrollTop || document.body.scrollTop; const total = d.scrollHeight - d.clientHeight; setPct(total > 0 ? (scrolled / total) * 100 : 0); }; window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); return
; } Object.assign(window, { LoadingCurtain, CustomCursor, useMagnetic, SplitHeading, BrandLogo, OfferPopup, CookieConsent, ScrollProgress }); // ========== COOKIE CONSENT (KVKK) ========== function CookieConsent() { const { lang } = useLang(); const t = useT(); const [status, setStatus] = useState(() => { return localStorage.getItem('cookie_consent') || null; }); const [showSettings, setShowSettings] = useState(false); const [analytics, setAnalytics] = useState(true); const [marketing, setMarketing] = useState(false); // Add body class while banner visible so page bottom isn't covered useEffect(() => { document.body.classList.toggle('has-cookie-banner', !status); return () => document.body.classList.remove('has-cookie-banner'); }, [status]); // Re-render when lang changes — state updates automatically via useT const accept = () => { localStorage.setItem('cookie_consent', 'all'); localStorage.setItem('cookie_consent_date', new Date().toISOString()); setStatus('all'); setShowSettings(false); }; const necessary = () => { localStorage.setItem('cookie_consent', 'necessary'); localStorage.setItem('cookie_consent_date', new Date().toISOString()); setStatus('necessary'); setShowSettings(false); }; const saveSettings = () => { const val = analytics || marketing ? (analytics && marketing ? 'all' : 'partial') : 'necessary'; localStorage.setItem('cookie_consent', val); localStorage.setItem('cookie_consent_date', new Date().toISOString()); setStatus(val); setShowSettings(false); }; if (status) return null; return (
{/* Main bar */} {!showSettings && (
{t("cookie_title")} {t("cookie_desc")}
)} {/* Settings panel */} {showSettings && (
{t("cookie_settings")}
{t("cookie_category_necessary")} {lang === "tr" ? "Sitenin temel işlevleri için zorunludur. Devre dışı bırakılamaz." : lang === "de" ? "Für die grundlegenden Funktionen der Website erforderlich. Nicht deaktivierbar." : lang === "fr" ? "Nécessaires au bon fonctionnement du site. Non désactivables." : lang === "ar" ? "ضرورية للوظائف الأساسية للموقع. لا يمكن تعطيلها." : lang === "ru" ? "Необходимы для базовых функций сайта. Нельзя отключить." : "Required for basic site functionality. Cannot be disabled."}
{t("cookie_always_on")}
{t("cookie_category_analytics")} {lang === "tr" ? "Ziyaretçi sayısı ve sayfa performansı ölçümü için kullanılır." : lang === "de" ? "Dient zur Messung von Besucherzahlen und Seitenleistung." : lang === "fr" ? "Utilisés pour mesurer le nombre de visiteurs et la performance du site." : lang === "ar" ? "تُستخدم لقياس عدد الزوار وأداء الصفحة." : lang === "ru" ? "Используются для измерения количества посетителей и производительности." : "Used to measure visitor numbers and page performance."}
{t("cookie_category_marketing")} {lang === "tr" ? "Kişiselleştirilmiş içerik ve reklam gösterimi için kullanılır." : lang === "de" ? "Für personalisierte Inhalte und Werbung verwendet." : lang === "fr" ? "Utilisés pour le contenu personnalisé et les publicités." : lang === "ar" ? "تُستخدم لعرض المحتوى والإعلانات المخصصة." : lang === "ru" ? "Используются для персонализированного контента и рекламы." : "Used for personalised content and advertising."}
{ window.AL_NAV && window.AL_NAV('privacy'); setStatus('navigated'); }}> {t("cookie_kvkk")} →
)}
); }