/* global React */ // ============================================ // A_LIZ HAIRDRESSER — Inner pages // ============================================ const { SERVICES: ALL_SERVICES, GALLERY: ALL_GALLERY, CATEGORIES, SERVICE_META, SERVICE_DETAILS } = window.AL_DATA; const { useLang: useLangInner, useT: useTInner, useReveal: useRevealInner, useRoute: useRouteInner, Icon: IconInner, CtaStrip: CtaStripInner, WA_LINK: WA_LINK_INNER, usePageSEO: usePageSEOInner } = window; const { useState: useStateP, useEffect: useEffectP } = React; // pick helper for {tr,en,...} objects function L(obj, lang) { if (!obj) return ""; return obj[lang] || obj.tr || obj.en || ""; } // Build a WhatsApp link prefilled with the service name function svcWaLink(name) { const msg = `Merhaba, "${name}" hizmeti için randevu / bilgi almak istiyorum.`; return `https://wa.me/905388745166?text=${encodeURIComponent(msg)}`; } // ========== PAGE HEAD ========== function PageHead({ crumb, eyebrowKey, titleKey, ledeKey }) { const t = useTInner(); const { go } = useRouteInner(); return (
go('home')}>{t("nav_home")} {crumb}

{t(titleKey)}

{t(ledeKey)}

); } // ========== SERVICE DETAIL DRAWER ========== function ServiceDrawer({ svc, lang, onClose }) { const t = useTInner(); useEffectP(() => { const onKey = (e) => { if (e.key === "Escape") onClose(); }; document.addEventListener("keydown", onKey); document.body.style.overflow = "hidden"; document.body.classList.add("drawer-open"); return () => { document.removeEventListener("keydown", onKey); document.body.style.overflow = ""; document.body.classList.remove("drawer-open"); }; }, [onClose]); if (!svc) return null; const meta = SERVICE_META[svc.id] || {}; const detail = SERVICE_DETAILS[svc.id] || {}; const name = svc.names[lang] || svc.names.tr; return (
e.stopPropagation()}>
{name}
{name} {svc.names.en}

{name}

{L(detail.long, lang) || (svc.desc[lang] || svc.desc.tr)}

{meta.dur && (
{t("svc_dur_k")} {L(meta.dur, lang)}
)} {meta.brand && (
{t("svc_brand_k")} {meta.brand}
)}
{detail.forWhom && (
{t("svc_forwhom_k")}

{L(detail.forWhom, lang)}

)} {detail.steps && (
{t("svc_process_k")}
{detail.steps.map((s, i) => (
{i + 1} {L(s, lang)}
))}
)} {t("cta_book")} · {t("cta_whatsapp")}
); } // ========== SERVICES PAGE ========== function ServicesPage() { usePageSEOInner('services'); const t = useTInner(); const { lang } = useLangInner(); const ref = useRevealInner(); const [cat, setCat] = useStateP("all"); const [active, setActive] = useStateP(null); const filtered = cat === "all" ? ALL_SERVICES : ALL_SERVICES.filter((s) => (SERVICE_META[s.id] || {}).cat === cat); return ( <>
{/* Category tabs */}
{CATEGORIES.map((c) => { const count = c.id === "all" ? ALL_SERVICES.length : ALL_SERVICES.filter((s) => (SERVICE_META[s.id] || {}).cat === c.id).length; return ( ); })}
{/* Service list */}
{filtered.map((svc, i) => { const meta = SERVICE_META[svc.id] || {}; return ( ); })}
{active && setActive(null)} />} ); } // ========== GALLERY PAGE ========== function GalleryPage() { usePageSEOInner('gallery'); const t = useTInner(); const ref = useRevealInner(); const { lang } = useLangInner(); const comingSoon = { tr: { tag: "Yakında", title: "Yeni çekimlerimiz geliyor.", sub: "Salonumuzdan taze kareler — en kısa sürede burada.", note: "Bu arada Instagram'dan canlı takip edebilirsiniz." }, en: { tag: "Coming Soon", title: "Fresh shots on their way.", sub: "Behind-the-scenes moments from our salon — arriving shortly.", note: "Follow us on Instagram for live updates." }, ar: { tag: "قريباً", title: "صور جديدة في الطريق.", sub: "لحظات من صالوننا — ستصل قريباً.", note: "تابعونا على إنستغرام." }, ru: { tag: "Скоро", title: "Новые съёмки уже в пути.", sub: "Живые кадры из нашего салоне — совсем скоро.", note: "Следите за нами в Instagram." }, it: { tag: "In Arrivo", title: "Nuovi scatti in arrivo.", sub: "Momenti dal nostro salon — disponibili a breve.", note: "Seguici su Instagram per aggiornamenti." }, de: { tag: "Demnächst", title: "Neue Aufnahmen kommen.", sub: "Frische Blicke aus unserem Salon — bald hier.", note: "Folgt uns auf Instagram." }, fr: { tag: "Bientôt", title: "Nouvelles photos en chemin.", sub: "Des instants de notre salon — à venir très prochainement.", note: "Suivez-nous sur Instagram." }, es: { tag: "Próximamente", title: "Nuevas fotos en camino.", sub: "Momentos de nuestro salon — llegando pronto.", note: "Síguenos en Instagram." }, }; const cs = comingSoon[lang] || comingSoon.tr; const preview = ALL_GALLERY.slice(0, 6); return ( <> {/* Coming soon banner */}
{cs.tag}

{cs.title}

{cs.sub}

{cs.note}

@a_lizhairdresser
{/* Blurred preview grid */}
{preview.map((g, i) => (
{`A_Liz
))}
); } // ========== ABOUT PAGE ========== function AboutPage() { usePageSEOInner('about'); const t = useTInner(); const ref = useRevealInner(); return ( <>
{t("rv_eyebrow")}

{t("about_h1")}

{t("about_p1")}

{t("about_p2")}

Salon
{[ { numStr: "i", t: "val1_t", d: "val1_d" }, { numStr: "ii", t: "val2_t", d: "val2_d" }, { numStr: "iii", t: "val3_t", d: "val3_d" }, ].map((v, i) => (
— {v.numStr} —

{t(v.t)}

{t(v.d)}

))}
); } // ========== CONTACT PAGE ========== function ContactPage() { usePageSEOInner('contact'); const t = useTInner(); const ref = useRevealInner(); const { lang } = useLangInner(); const hours = { tr: "Her gün 10:00 – 24:00", en: "Daily 10:00 – 24:00", ar: "يومياً 10:00 – 24:00", ru: "Ежедневно 10:00 – 24:00", it: "Ogni giorno 10:00 – 24:00", de: "Täglich 10:00 – 24:00", fr: "Tous les jours 10h – 24h", es: "Todos los días 10:00 – 24:00", }; const channels = [ { icon: , label: "WhatsApp", value: "+90 538 874 5166", sub: { tr: "Randevu & bilgi için yaz", en: "Message for booking & info", ar: "للحجز والاستفسار", ru: "Для записи и вопросов", it: "Per prenotare e info", de: "Für Termine & Infos", fr: "Réservation & renseignements", es: "Para citas e información" }, href: WA_LINK_INNER, }, { icon: , label: "Instagram", value: "@a_lizhairdresser", sub: { tr: "Güncel çalışmalar & haberler", en: "Latest work & news", ar: "أحدث الأعمال والأخبار", ru: "Последние работы и новости", it: "Ultime novità", de: "Aktuelle Arbeiten & News", fr: "Dernières créations & actualités", es: "Últimas obras y noticias" }, href: "https://www.instagram.com/a_lizhairdresser", }, { icon: , label: { tr: "Adres", en: "Address", ar: "العنوان", ru: "Адрес", it: "Indirizzo", de: "Adresse", fr: "Adresse", es: "Dirección" }, value: { tr: "Alemdar Mah., Divanyolu Cad. No.50, Divan Bazar / Fatih, İstanbul", en: "Alemdar, Divanyolu St. No.50, Divan Bazar / Fatih, Istanbul", ar: "ش. ديوانيولو رقم 50، ديفان بازار، الفاتح / إسطنبول", ru: "Дивайолу ул., д.50, Диван Базар, Фатих / Стамбул", it: "Via Divanyolu 50, Divan Bazar / Fatih, Istanbul", de: "Divanyolu Str. 50, Divan Bazar / Fatih, Istanbul", fr: "Rue Divanyolu 50, Divan Bazar / Fatih, Istanbul", es: "Divanyolu No.50, Divan Bazar / Fatih, Estambul" }, sub: { tr: "Sultanahmet'e 2 dk · Topkapı Sarayı'na 5 dk", en: "2 min to Sultanahmet · 5 min to Topkapi Palace", ar: "2 دقيقة من السلطان أحمد · 5 دقائق من قصر توبقابي", ru: "2 мин до Султанахмет · 5 мин до Дворца Топкапы", it: "2 min da Sultanahmet · 5 min da Palazzo Topkapi", de: "2 Min. zum Sultanahmet · 5 Min. zum Topkapi-Palast", fr: "2 min de Sultanahmet · 5 min du Palais Topkapi", es: "2 min a Sultanahmet · 5 min al Palacio Topkapi" }, href: "https://maps.google.com/?q=Alemdar+Mahallesi+Divanyolu+Caddesi+No+50+Fatih+Istanbul", }, ]; return ( <>
{/* Left — channels */} {/* Right — hours + CTA */}
{t("loc_hours_k")}
{hours[lang] || hours.tr}
{t("loc_hours_sub")}
{t("cta_book")} · WhatsApp
{/* Rich map — same as homepage */}
Ayasofya Topkapı Sultanahmet DİVANYOLU CAD. 2 dk 5 dk 2 dk
Divanyolu No.50
N
Google Maps'te Aç
); } // ========== PRIVACY / KVKK PAGE ========== function PrivacyPage() { const { lang } = useLangInner(); const { go } = useRouteInner(); const content = { tr: { eyebrow: "Yasal", title: "KVKK & Gizlilik Politikası", updated: "Son güncelleme: Ocak 2025", sections: [ { h: "1. Veri Sorumlusu", p: "A_LizHairdresser olarak, 6698 sayılı Kişisel Verilerin Korunması Kanunu (KVKK) kapsamında veri sorumlusu sıfatıyla hareket etmekteyiz. Salonumuz İstanbul Fatih, Alemdar Mahallesi, Divanyolu Caddesi No.50, Divan Bazar adresinde faaliyet göstermektedir. İletişim: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66" }, { h: "2. Toplanan Veriler", p: "Sitemizi ziyaret ettiğinizde veya randevu talebinde bulunduğunuzda aşağıdaki kişisel verileriniz işlenebilir: Ad ve soyad, telefon numarası, e-posta adresi, talep edilen hizmet bilgisi ve iletişim notları. Bu veriler yalnızca randevu yönetimi ve hizmet sunumu amacıyla kullanılmaktadır." }, { h: "3. Verilerin İşlenme Amacı", p: "Kişisel verileriniz; randevu oluşturma ve yönetimi, hizmet kalitesinin artırılması, sizinle iletişim kurulması ve yasal yükümlülüklerin yerine getirilmesi amaçlarıyla işlenmektedir. Verileriniz üçüncü taraflarla paylaşılmaz ve ticari amaçlarla kullanılmaz." }, { h: "4. Verilerin Saklanması", p: "Kişisel verileriniz, işlenme amacının gerektirdiği süre boyunca ve yasal yükümlülükler kapsamında saklanmaktadır. Bu süre sona erdiğinde verileriniz güvenli bir şekilde silinir veya anonim hale getirilir." }, { h: "5. Çerez Politikası", p: "Sitemizde teknik zorunluluk nedeniyle çerezler kullanılmaktadır. Bu çerezler site işlevselliğini sağlamak için gerekli olup kişisel veri içermez. Tarayıcı ayarlarınızdan çerez tercihlerinizi yönetebilirsiniz." }, { h: "6. Haklarınız", p: "KVKK'nın 11. maddesi kapsamında aşağıdaki haklara sahipsiniz: Kişisel verilerinizin işlenip işlenmediğini öğrenme, işlenmişse buna ilişkin bilgi talep etme, işlenme amacını ve amacına uygun kullanılıp kullanılmadığını öğrenme, yurt içinde veya yurt dışında verilerin aktarıldığı üçüncü kişileri bilme, eksik veya yanlış işlenen verilerin düzeltilmesini isteme, kişisel verilerin silinmesini veya yok edilmesini isteme." }, { h: "7. İletişim", p: "Kişisel verilerinizle ilgili taleplerinizi bize iletmek için: E-posta: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66 | Adres: Alemdar Mahallesi, Divanyolu Caddesi No.50, Divan Bazar, Fatih / İstanbul" }, ] }, en: { eyebrow: "Legal", title: "Privacy Policy", updated: "Last updated: January 2025", sections: [ { h: "1. Data Controller", p: "A_LizHairdresser acts as the data controller under KVKK Law No. 6698. Our salon is located at Alemdar Mahallesi, Divanyolu Caddesi No.50, Divan Bazar, Fatih / Istanbul. Contact: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66" }, { h: "2. Data We Collect", p: "When you visit our website or request an appointment, we may process the following personal data: first and last name, phone number, email address, requested service information and communication notes. This data is used solely for appointment management and service delivery." }, { h: "3. Purpose of Processing", p: "Your personal data is processed for: creating and managing appointments, improving service quality, communicating with you, and fulfilling legal obligations. Your data is not shared with third parties or used for commercial purposes." }, { h: "4. Data Retention", p: "Your personal data is retained for the period required by its processing purpose and applicable legal obligations. Once this period ends, your data is securely deleted or anonymised." }, { h: "5. Cookie Policy", p: "Our website uses technically necessary cookies to ensure site functionality. These cookies do not contain personal data. You can manage your cookie preferences through your browser settings." }, { h: "6. Your Rights", p: "Under Article 11 of KVKK, you have the right to: learn whether your personal data is being processed, request information about the processing, learn the purpose and whether it is being used accordingly, know the third parties to whom data is transferred, request correction of incomplete or incorrect data, and request deletion or destruction of personal data." }, { h: "7. Contact", p: "To submit a request regarding your personal data: Email: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66 | Address: Alemdar, Divanyolu St. No.50, Divan Bazar, Fatih / Istanbul" }, ] }, de: { eyebrow: "Rechtliches", title: "Datenschutzerklärung", updated: "Zuletzt aktualisiert: Januar 2025", sections: [ { h: "1. Verantwortlicher", p: "A_LizHairdresser handelt als Verantwortlicher gemäß KVKK-Gesetz Nr. 6698. Unser Salon befindet sich in Alemdar Mah., Divanyolu Cad. No.50, Divan Bazar, Fatih / Istanbul. Kontakt: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66" }, { h: "2. Erhobene Daten", p: "Bei einem Besuch unserer Website oder einer Terminanfrage können folgende personenbezogene Daten verarbeitet werden: Vor- und Nachname, Telefonnummer, E-Mail-Adresse, gewünschte Dienstleistung und Kommunikationsnotizen." }, { h: "3. Zweck der Verarbeitung", p: "Ihre Daten werden für Terminverwaltung, Serviceverbesserung und Kommunikation verwendet. Sie werden nicht an Dritte weitergegeben." }, { h: "4. Datenspeicherung", p: "Ihre Daten werden nur so lange gespeichert, wie es der Verarbeitungszweck erfordert, danach sicher gelöscht." }, { h: "5. Cookies", p: "Wir verwenden technisch notwendige Cookies für die Funktionalität der Website. Diese enthalten keine personenbezogenen Daten." }, { h: "6. Ihre Rechte", p: "Sie haben das Recht auf Auskunft, Berichtigung, Löschung und Einschränkung der Verarbeitung Ihrer personenbezogenen Daten." }, { h: "7. Kontakt", p: "E-Mail: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66 | Adresse: Divanyolu Str. 50, Divan Bazar, Fatih / Istanbul" }, ] }, fr: { eyebrow: "Légal", title: "Politique de confidentialité", updated: "Dernière mise à jour : Janvier 2025", sections: [ { h: "1. Responsable du traitement", p: "A_LizHairdresser agit en tant que responsable du traitement conformément à la loi KVKK n° 6698. Notre salon est situé à Alemdar Mah., Divanyolu Cad. No.50, Divan Bazar, Fatih / Istanbul. Contact: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66" }, { h: "2. Données collectées", p: "Lors de votre visite ou d'une demande de rendez-vous, nous pouvons traiter: nom et prénom, numéro de téléphone, adresse e-mail, service demandé et notes de communication." }, { h: "3. Finalité du traitement", p: "Vos données sont traitées pour la gestion des rendez-vous, l'amélioration du service et la communication. Elles ne sont pas partagées avec des tiers." }, { h: "4. Conservation", p: "Vos données sont conservées le temps nécessaire puis supprimées de manière sécurisée." }, { h: "5. Cookies", p: "Nous utilisons des cookies techniquement nécessaires qui ne contiennent pas de données personnelles." }, { h: "6. Vos droits", p: "Vous disposez des droits d'accès, de rectification, d'effacement et de limitation du traitement de vos données personnelles." }, { h: "7. Contact", p: "E-mail: info@alizhairdresser.com | WhatsApp: +90 538 874 51 66 | Adresse: Rue Divanyolu 50, Divan Bazar, Fatih / Istanbul" }, ] }, }; const c = content[lang] || content.en; const sectionIcons = ['🏛', '📋', '🎯', '🔒', '🍪', '⚖️', '✉️']; return (
{c.eyebrow}

{c.title}

{c.updated}

{c.sections.map((s, i) => (
{String(i + 1).padStart(2, '0')}

{s.h}

{s.p}

))}
{lang === 'tr' ? 'İletişim' : lang === 'de' ? 'Kontakt' : lang === 'fr' ? 'Contact' : 'Contact'}
info@alizhairdresser.com +90 538 874 51 66
Divanyolu Cad. No.50
Divan Bazar, Fatih
İstanbul
); } // ========== TERMS OF USE PAGE ========== function TermsPage() { const t = useTInner(); const { lang } = useLangInner(); const { go } = useRouteInner(); const content = { tr: { title: "Kullanım Koşulları", updated: "Son güncelleme: Ocak 2025", sections: [ { h: "1. Genel", p: "Bu web sitesi A_LizHairdresser tarafından işletilmektedir. Siteyi kullanarak aşağıdaki koşulları kabul etmiş sayılırsınız." }, { h: "2. Hizmetler", p: "Sunulan hizmetler ve fiyatlar önceden bildirim yapılmaksızın değiştirilebilir. Randevular WhatsApp üzerinden alınmaktadır." }, { h: "3. Fikri Mülkiyet", p: "Sitedeki tüm içerik, görseller ve metinler A_LizHairdresser'a aittir. İzinsiz kullanılamaz." }, { h: "4. Sorumluluk Sınırlaması", p: "Sitemizin kullanımından doğabilecek dolaylı zararlardan sorumlu değiliz." }, { h: "5. Değişiklikler", p: "Bu koşullar dilediğimiz zaman güncellenebilir. Güncel versiyonu takip etmenizi öneririz." }, { h: "6. İletişim", p: "Sorularınız için WhatsApp: +90 538 874 51 66 | Adres: Alemdar Mah., Divanyolu Cad. No.50, Divan Bazar, Fatih, İstanbul" }, ] }, en: { title: "Terms of Use", updated: "Last updated: January 2025", sections: [ { h: "1. General", p: "This website is operated by A_LizHairdresser. By using the site, you agree to the following terms." }, { h: "2. Services", p: "Services and prices may change without prior notice. Appointments are made via WhatsApp." }, { h: "3. Intellectual Property", p: "All content, images, and texts on this site belong to A_LizHairdresser and may not be used without permission." }, { h: "4. Limitation of Liability", p: "We are not responsible for any indirect damages arising from the use of our site." }, { h: "5. Changes", p: "These terms may be updated at any time. We recommend checking for the latest version." }, { h: "6. Contact", p: "For questions: WhatsApp: +90 538 874 51 66 | Address: Alemdar, Divanyolu St. No.50, Divan Bazar, Fatih, Istanbul" }, ] }, de: { title: "Nutzungsbedingungen", updated: "Zuletzt aktualisiert: Januar 2025", sections: [ { h: "1. Allgemeines", p: "Diese Website wird von A_LizHairdresser betrieben. Mit der Nutzung der Website stimmen Sie den folgenden Bedingungen zu." }, { h: "2. Dienstleistungen", p: "Dienstleistungen und Preise können ohne vorherige Ankündigung geändert werden." }, { h: "3. Geistiges Eigentum", p: "Alle Inhalte, Bilder und Texte gehören A_LizHairdresser und dürfen ohne Genehmigung nicht verwendet werden." }, { h: "4. Haftungsbeschränkung", p: "Wir haften nicht für indirekte Schäden, die aus der Nutzung unserer Website entstehen." }, { h: "5. Änderungen", p: "Diese Bedingungen können jederzeit aktualisiert werden." }, { h: "6. Kontakt", p: "WhatsApp: +90 538 874 51 66 | Adresse: Divanyolu Str. 50, Divan Bazar, Fatih, Istanbul" }, ] }, }; const c = content[lang] || content.en; return (
{lang === 'tr' ? 'Yasal' : lang === 'de' ? 'Rechtliches' : lang === 'fr' ? 'Légal' : 'Legal'}

{c.title}

{c.updated}

{c.sections.map((s, i) => (
{String(i + 1).padStart(2, '0')}

{s.h}

{s.p}

))}
{lang === 'tr' ? 'İletişim' : lang === 'de' ? 'Kontakt' : lang === 'fr' ? 'Contact' : 'Contact'}
info@alizhairdresser.com +90 538 874 51 66
); } // ========== COOKIE POLICY PAGE ========== function CookiePage() { const t = useTInner(); const { lang } = useLangInner(); const { go } = useRouteInner(); const content = { tr: { title: "Çerez Politikası", updated: "Son güncelleme: Ocak 2025", sections: [ { h: "Çerez Nedir?", p: "Çerezler, web sitelerinin tarayıcınıza kaydettiği küçük metin dosyalarıdır. Oturumunuzu hatırlamak ve size daha iyi hizmet sunmak için kullanılır." }, { h: "Kullandığımız Çerezler", p: "Zorunlu çerezler: Sitenin temel işlevleri için gereklidir. Analitik çerezler: Ziyaretçi istatistikleri için kullanılır. Pazarlama çerezleri: Kişiselleştirilmiş içerik için kullanılır." }, { h: "Çerez Yönetimi", p: "Tarayıcı ayarlarınızdan çerezleri devre dışı bırakabilirsiniz. Ancak bu durumda bazı site özellikleri düzgün çalışmayabilir." }, { h: "KVKK Kapsamı", p: "Çerez kullanımımız 6698 sayılı Kişisel Verilerin Korunması Kanunu (KVKK) kapsamında yürütülmektedir." }, { h: "İletişim", p: "Çerez politikamız hakkında sorularınız için: WhatsApp: +90 538 874 51 66" }, ] }, en: { title: "Cookie Policy", updated: "Last updated: January 2025", sections: [ { h: "What are Cookies?", p: "Cookies are small text files saved to your browser by websites. They are used to remember your session and provide better service." }, { h: "Cookies We Use", p: "Necessary cookies: Required for basic site functions. Analytics cookies: Used for visitor statistics. Marketing cookies: Used for personalised content." }, { h: "Managing Cookies", p: "You can disable cookies in your browser settings. However, some site features may not work properly as a result." }, { h: "Legal Basis", p: "Our cookie usage is conducted in accordance with KVKK Law No. 6698." }, { h: "Contact", p: "For questions about our cookie policy: WhatsApp: +90 538 874 51 66" }, ] }, de: { title: "Cookie-Richtlinie", updated: "Zuletzt aktualisiert: Januar 2025", sections: [ { h: "Was sind Cookies?", p: "Cookies sind kleine Textdateien, die Websites in Ihrem Browser speichern. Sie werden verwendet, um Ihre Sitzung zu speichern und besseren Service zu bieten." }, { h: "Verwendete Cookies", p: "Notwendige Cookies: Für grundlegende Funktionen erforderlich. Analytische Cookies: Für Besucherstatistiken. Marketing-Cookies: Für personalisierte Inhalte." }, { h: "Cookie-Verwaltung", p: "Sie können Cookies in Ihren Browsereinstellungen deaktivieren." }, { h: "Rechtliche Grundlage", p: "Unsere Cookie-Nutzung erfolgt gemäß KVKK-Gesetz Nr. 6698." }, { h: "Kontakt", p: "Für Fragen: WhatsApp: +90 538 874 51 66" }, ] }, }; const c = content[lang] || content.en; return (
{lang === 'tr' ? 'Yasal' : lang === 'de' ? 'Rechtliches' : lang === 'fr' ? 'Légal' : 'Legal'}

{c.title}

{c.updated}

{c.sections.map((s, i) => (
{String(i + 1).padStart(2, '0')}

{s.h}

{s.p}

))}
{lang === 'tr' ? 'İletişim' : lang === 'de' ? 'Kontakt' : lang === 'fr' ? 'Contact' : 'Contact'}
info@alizhairdresser.com
); } // ========== APPOINTMENT PAGE ========== function AppointmentPage() { usePageSEOInner('appointment'); const t = useTInner(); const { lang } = useLangInner(); const [step, setStep] = useStateP(1); // 1=calendar, 2=form const [guestType, setGuestType] = useStateP(null); const [selectedDate, setSelectedDate] = useStateP(null); const [selectedTime, setSelectedTime] = useStateP(null); const [month, setMonth] = useStateP(() => { const d = new Date(); return { year: d.getFullYear(), month: d.getMonth() }; }); const [form, setForm] = useStateP({ firstName: '', lastName: '', phone: '', note: '' }); const [services, setServices] = useStateP([]); const [errors, setErrors] = useStateP({}); const DAYS = { tr: ['Pzt','Sal','Çar','Per','Cum','Cmt','Paz'], en: ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'], de: ['Mo','Di','Mi','Do','Fr','Sa','So'], fr: ['Lu','Ma','Me','Je','Ve','Sa','Di'], ar: ['الإث','الثل','الأر','الخم','الجم','الس','الأح'], ru: ['Пн','Вт','Ср','Чт','Пт','Сб','Вс'], it: ['Lun','Mar','Mer','Gio','Ven','Sab','Dom'], es: ['Lu','Ma','Mi','Ju','Vi','Sá','Do'], }; const MONTHS = { tr: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], en: ['January','February','March','April','May','June','July','August','September','October','November','December'], de: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], fr: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'], ar: ['يناير','فبراير','مارس','أبريل','مايو','يونيو','يوليو','أغسطس','سبتمبر','أكتوبر','نوفمبر','ديسمبر'], ru: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], it: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], es: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], }; const GUEST_ICONS = { bayan: ( ), bay: ( ), cocuk: ( ), }; const GUEST_TYPES = { tr: [{ id:'bayan', label:'Bayan' }, { id:'bay', label:'Bay' }, { id:'cocuk', label:'Çocuk' }], en: [{ id:'bayan', label:'Lady' }, { id:'bay', label:'Gent' }, { id:'cocuk', label:'Child' }], de: [{ id:'bayan', label:'Damen' }, { id:'bay', label:'Herren' }, { id:'cocuk', label:'Kind' }], fr: [{ id:'bayan', label:'Femme' }, { id:'bay', label:'Homme' }, { id:'cocuk', label:'Enfant' }], ar: [{ id:'bayan', label:'سيدة' }, { id:'bay', label:'رجل' }, { id:'cocuk', label:'طفل' }], ru: [{ id:'bayan', label:'Женщина' }, { id:'bay', label:'Мужчина' }, { id:'cocuk', label:'Ребёнок' }], it: [{ id:'bayan', label:'Donna' }, { id:'bay', label:'Uomo' }, { id:'cocuk', label:'Bambino' }], es: [{ id:'bayan', label:'Dama' }, { id:'bay', label:'Caballero' }, { id:'cocuk', label:'Niño' }], }; const SVC_LIST = { tr: ['Saç Kesimi','Renklendirme','Balayage / Ombré','Keratin Bakım','Makyaj','Tırnak Bakımı','Ayak Masajı','Fön & Şekillendirme','Kaş & Kirpik','Gelin Saçı','Diğer'], en: ['Haircut','Colouring','Balayage / Ombré','Keratin Treatment','Makeup','Nail Care','Foot Massage','Blow Dry & Style','Brow & Lash','Bridal Hair','Other'], de: ['Haarschnitt','Färbung','Balayage / Ombré','Keratin','Makeup','Nagelbehandlung','Fußmassage','Föhnen','Brauen & Wimpern','Brautfrisur','Sonstiges'], fr: ['Coupe','Coloration','Balayage / Ombré','Kératine','Maquillage','Soin des ongles','Massage des pieds','Brushing','Sourcils & Cils','Coiffure mariée','Autre'], ar: ['قص الشعر','تلوين','بالاياج','كيراتين','مكياج','العناية بالأظافر','مساج القدم','تمليس','الحاجب والرمش','شعر العروس','أخرى'], ru: ['Стрижка','Окрашивание','Балаяж / Омбре','Кератин','Макияж','Уход за ногтями','Массаж ног','Укладка','Брови и ресницы','Свадебная прическа','Другое'], it: ['Taglio','Colorazione','Balayage / Ombré','Cheratina','Trucco','Cura delle unghie','Massaggio ai piedi','Piega','Sopracciglia & Ciglia','Acconciatura sposa','Altro'], es: ['Corte','Coloración','Balayage / Ombré','Queratina','Maquillaje','Cuidado de uñas','Masaje de pies','Peinado','Cejas & Pestañas','Peinado novia','Otro'], }; const days = DAYS[lang] || DAYS.en; const monthNames = MONTHS[lang] || MONTHS.en; const guestTypes = GUEST_TYPES[lang] || GUEST_TYPES.en; const svcList = SVC_LIST[lang] || SVC_LIST.en; // Time slots 10:00 - 00:00 every 30 min const timeSlots = []; for (let h = 10; h < 24; h++) { timeSlots.push(`${String(h).padStart(2,'0')}:00`); timeSlots.push(`${String(h).padStart(2,'0')}:30`); } // Calendar helpers const today = new Date(); today.setHours(0,0,0,0); const { year, month: m } = month; const firstDay = new Date(year, m, 1); const lastDay = new Date(year, m + 1, 0); // Monday-first: shift Sunday to end const startDow = (firstDay.getDay() + 6) % 7; const cells = []; for (let i = 0; i < startDow; i++) cells.push(null); for (let d = 1; d <= lastDay.getDate(); d++) cells.push(new Date(year, m, d)); const prevMonth = () => setMonth(p => { const d = new Date(p.year, p.month - 1, 1); return { year: d.getFullYear(), month: d.getMonth() }; }); const nextMonth = () => setMonth(p => { const d = new Date(p.year, p.month + 1, 1); return { year: d.getFullYear(), month: d.getMonth() }; }); const isPast = d => d && d < today; const isSelected = d => d && selectedDate && d.toDateString() === selectedDate.toDateString(); const toggleService = (s) => { setServices(prev => prev.includes(s) ? prev.filter(x => x !== s) : [...prev, s]); }; const canProceed = guestType && selectedDate && selectedTime; const buildWaMessage = () => { const gt = guestTypes.find(g => g.id === guestType); const dateStr = selectedDate ? selectedDate.toLocaleDateString(lang === 'tr' ? 'tr-TR' : lang === 'de' ? 'de-DE' : lang === 'ar' ? 'ar-SA' : 'en-GB', { weekday:'long', day:'numeric', month:'long', year:'numeric' }) : ''; const svcStr = services.length ? services.join(', ') : '—'; const msgs = { tr: `Merhaba, randevu almak istiyorum.\n\nAd Soyad: ${form.firstName} ${form.lastName}\nTelefon: ${form.phone}\nMisafir: ${gt?.label}\nTarih: ${dateStr}\nSaat: ${selectedTime}\nHizmet(ler): ${svcStr}${form.note ? '\nNot: ' + form.note : ''}`, en: `Hello, I'd like to book an appointment.\n\nName: ${form.firstName} ${form.lastName}\nPhone: ${form.phone}\nGuest: ${gt?.label}\nDate: ${dateStr}\nTime: ${selectedTime}\nService(s): ${svcStr}${form.note ? '\nNote: ' + form.note : ''}`, de: `Hallo, ich möchte einen Termin buchen.\n\nName: ${form.firstName} ${form.lastName}\nTelefon: ${form.phone}\nGast: ${gt?.label}\nDatum: ${dateStr}\nUhrzeit: ${selectedTime}\nDienstleistung(en): ${svcStr}${form.note ? '\nAnmerkung: ' + form.note : ''}`, fr: `Bonjour, je souhaite prendre rendez-vous.\n\nNom: ${form.firstName} ${form.lastName}\nTéléphone: ${form.phone}\nInvité: ${gt?.label}\nDate: ${dateStr}\nHeure: ${selectedTime}\nService(s): ${svcStr}${form.note ? '\nNote: ' + form.note : ''}`, }; return msgs[lang] || msgs.en; }; const handleSubmit = () => { const errs = {}; if (!form.firstName.trim()) errs.firstName = true; if (!form.lastName.trim()) errs.lastName = true; if (services.length === 0) errs.services = true; if (Object.keys(errs).length) { setErrors(errs); return; } const msg = encodeURIComponent(buildWaMessage()); window.open(`https://wa.me/905388745166?text=${msg}`, '_blank'); }; const labels = { title: { tr:'Randevu Al', en:'Book Appointment', de:'Termin buchen', fr:'Prendre RDV', ar:'احجز موعد', ru:'Запись', it:'Prenota', es:'Reservar' }, step1: { tr:'Tarih & Saat', en:'Date & Time', de:'Datum & Zeit', fr:'Date & Heure', ar:'التاريخ والوقت', ru:'Дата и время', it:'Data & Ora', es:'Fecha & Hora' }, step2: { tr:'Bilgileriniz', en:'Your Details', de:'Ihre Details', fr:'Vos coordonnées', ar:'بياناتك', ru:'Ваши данные', it:'I tuoi dati', es:'Tus datos' }, guest: { tr:'Misafir Tipi', en:'Guest Type', de:'Gasttyp', fr:'Type de client', ar:'نوع الضيف', ru:'Тип гостя', it:'Tipo ospite', es:'Tipo de cliente' }, pickDate: { tr:'Tarih Seçin', en:'Select Date', de:'Datum wählen', fr:'Choisir une date', ar:'اختر التاريخ', ru:'Выберите дату', it:'Seleziona data', es:'Seleccionar fecha' }, pickTime: { tr:'Saat Seçin', en:'Select Time', de:'Uhrzeit wählen', fr:"Choisir l'heure", ar:'اختر الوقت', ru:'Выберите время', it:'Seleziona orario', es:'Seleccionar hora' }, next: { tr:'Devam Et →', en:'Continue →', de:'Weiter →', fr:'Continuer →', ar:'متابعة →', ru:'Далее →', it:'Continua →', es:'Continuar →' }, back: { tr:'← Geri', en:'← Back', de:'← Zurück', fr:'← Retour', ar:'← رجوع', ru:'← Назад', it:'← Indietro', es:'← Atrás' }, firstName: { tr:'Ad', en:'First Name', de:'Vorname', fr:'Prénom', ar:'الاسم', ru:'Имя', it:'Nome', es:'Nombre' }, lastName: { tr:'Soyad', en:'Last Name', de:'Nachname', fr:'Nom', ar:'اللقب', ru:'Фамилия', it:'Cognome', es:'Apellido' }, phone: { tr:'Telefon', en:'Phone', de:'Telefon', fr:'Téléphone', ar:'الهاتف', ru:'Телефон', it:'Telefono', es:'Teléfono' }, note: { tr:'Not (isteğe bağlı)', en:'Note (optional)', de:'Notiz (optional)', fr:"Note (facultatif)", ar:'ملاحظة (اختياري)', ru:'Примечание', it:'Nota (opzionale)', es:'Nota (opcional)' }, services: { tr:'Hizmet Seçin', en:'Select Services', de:'Dienste wählen', fr:'Choisir services', ar:'اختر الخدمات', ru:'Выберите услуги', it:'Scegli servizi', es:'Seleccionar servicios' }, confirm: { tr:'WhatsApp ile Onayla', en:'Confirm via WhatsApp', de:'Per WhatsApp bestätigen', fr:'Confirmer via WhatsApp', ar:'تأكيد عبر واتساب', ru:'Подтвердить в WhatsApp', it:'Conferma via WhatsApp', es:'Confirmar por WhatsApp' }, required: { tr:'Bu alan zorunludur', en:'This field is required', de:'Pflichtfeld', fr:'Champ obligatoire', ar:'هذا الحقل مطلوب', ru:'Обязательное поле', it:'Campo obbligatorio', es:'Campo obligatorio' }, svcRequired: { tr:'En az bir hizmet seçin', en:'Please select at least one service', de:'Bitte mindestens einen Dienst wählen', fr:'Veuillez sélectionner au moins un service', ar:'يرجى اختيار خدمة واحدة على الأقل', ru:'Выберите хотя бы одну услугу', it:'Seleziona almeno un servizio', es:'Selecciona al menos un servicio' }, summary: { tr:'Özet', en:'Summary', de:'Zusammenfassung', fr:'Résumé', ar:'ملخص', ru:'Итог', it:'Riepilogo', es:'Resumen' }, }; const L = (obj) => obj[lang] || obj.en || Object.values(obj)[0]; return (
{/* Header */}
{L(labels.title)}

{L(labels.title)}

A_LizHairdresser · Divanyolu Cad. No.50, Fatih

{/* Step indicator */}
= 1 ? 'active' : ''}`}> 01 {L(labels.step1)}
= 2 ? 'active' : ''}`}> 02 {L(labels.step2)}
{step === 1 && (
{/* Guest type selector */}
{L(labels.guest)}
{guestTypes.map(g => ( ))}
{/* Calendar */}
{L(labels.pickDate)}
{monthNames[m]} {year}
{days.map(d =>
{d}
)} {cells.map((d, i) => ( ))}
{/* Time slots */}
{L(labels.pickTime)}
{timeSlots.map(ts => ( ))}
{/* Summary bar */} {(selectedDate || selectedTime) && (
{guestType && {guestTypes.find(g=>g.id===guestType)?.label}} {selectedDate && ·} {selectedDate && 📅 {selectedDate.toLocaleDateString(lang === 'tr' ? 'tr-TR' : 'en-GB', { day:'numeric', month:'long' })}} {selectedTime && ·} {selectedTime && 🕐 {selectedTime}}
)}
{!canProceed && (

{lang === 'tr' ? 'Devam etmek için misafir tipi, tarih ve saat seçin' : lang === 'de' ? 'Bitte Gasttyp, Datum und Uhrzeit wählen' : lang === 'fr' ? "Veuillez choisir le type de client, la date et l'heure" : lang === 'ar' ? 'يرجى اختيار نوع الضيف والتاريخ والوقت' : lang === 'ru' ? 'Выберите тип гостя, дату и время' : 'Please select guest type, date and time to continue'}

)}
)} {step === 2 && (
{/* Summary card */}
{L(labels.summary)}
👤{guestTypes.find(g=>g.id===guestType)?.label}
📅 {selectedDate?.toLocaleDateString(lang==='tr'?'tr-TR':'en-GB', { weekday:'long', day:'numeric', month:'long', year:'numeric' })}
🕐 {selectedTime}
{/* Form */}
{ setForm(p=>({...p,firstName:e.target.value})); setErrors(p=>({...p,firstName:false})); }} placeholder={L(labels.firstName)} /> {errors.firstName && {L(labels.required)}}
{ setForm(p=>({...p,lastName:e.target.value})); setErrors(p=>({...p,lastName:false})); }} placeholder={L(labels.lastName)} /> {errors.lastName && {L(labels.required)}}
setForm(p=>({...p,phone:e.target.value}))} placeholder="+90 5XX XXX XX XX" type="tel" />
{/* Services */}
{errors.services && {L(labels.svcRequired)}}
{svcList.map(s => ( ))}