"use client"; import { motion, AnimatePresence } from "framer-motion"; import { useState, useEffect } from "react"; import type { DemoData } from "@/data/demos"; const fadeUp = { hidden: { opacity: 0, y: 35 }, show: { opacity: 1, y: 0, transition: { duration: 0.75, ease: [0.25, 0.46, 0.45, 0.94] as [number, number, number, number] } }, }; const stagger = { hidden: {}, show: { transition: { staggerChildren: 0.08 } }, }; const translations = { tr: { navHeritage: "Mirasımız", navSpecial: "Şefin Seçimi", navBakery: "Günlük Ekmekler", navServices: "Ayrıcalıklar", navBooking: "Rezervasyon", badge: "SIGNATURE STEAKHOUSE & GASTRONOMY", heroTitlePart1: "Lezzet", heroTitlePart2: "Sanatı & Ateşin", heroTitlePart3: "Mirasımız", heroDesc: "Ateş, duman ve Palermo zanaatkarlığıyla şekillenen lezzet dolu bir yolculuk. Karaköy limanında, seçkin gurmeler için özenle tasarlanan imza steakhouse koordinatları.", learnMore: "Heritage Keşfet", reserveTable: "Rezervasyon Yap", heritageTitle: "Zanaat Hikayesi", heritageHeader: "LEZZETİN ANATOMİSİ", heritageDesc: "Karaköy limanının en eski taş duvarları arasında, Palermo'nun asırlık pişirme tekniklerini modern gastronomi vizyonuyla harmanlıyoruz. Ağır ateşte dinlendirilmiş Wagyu etlerinden, odun fırınında pişen taze ekşi mayalara uzanan bir tutku.", specialTitle: "Şefin İmzası", specialHeader: "HAFTALIK SPESİYALLER", specialDesc: "Taze mevsim otları, el yapımı soslar ve meşe odununda dinlendirilmiş Wagyu lezzetlerini keşfedin.", bakeryTitle: "Zanaat Fırınımız", bakeryHeader: "GÜNLÜK EKŞİ MAYALAR", bakeryDesc: "Her sabah 05:00'te taş fırınımızda maya kokusuyla başlayan hikaye. İtalyan unları, doğal ekşi maya ve 48 saatlik fermantasyon ile elde açılan eşsiz ekmekler.", servicesTitle: "Ayrıcalıklarımız", servicesHeader: "MİSAFİRLERİMİZ İÇİN PREMIUM SEÇENEKLER", reviewsTitle: "Gurme Değerlendirmeleri", reviewsHeader: "MİSAFİRLERİMİZİN DİLİNDEN HİKAYELER", bookingTitle: "Masa Rezervasyonu", bookingHeader: "REZERVASYON YAPIN", bookingDesc: "Seçkin caz akustiği ve loş kehribar aydınlatmalı salonumuzda masanızı şimdiden ayırtın.", fieldsName: "Ad Soyad", fieldsPhone: "Telefon Numarası", fieldsDate: "Randevu Tarihi", fieldsTime: "Rezervasyon Saati", fieldsGuests: "Kişi Sayısı", fieldsNotes: "Özel İstek / Not", fieldsNotesPlaceholder: "Diyet hassasiyetleri, VIP uşak talepleri, yıldönümü vb...", dispatchForm: "REZERVASYON TALEBİNİ GÖNDER", guarantee: "Bu formu doldurarak doğrulanmış bir rezervasyon sağlarsınız. Masalar, rezervasyon saatinden itibaren 15 dakika boyunca adınıza tutulur.", footerDesc: "Geleneksel zanaat, ağır ateşte meşe odununda dinlendirilmiş imza Wagyu bonfileleri ve Palermo fırıncılık mirası.", privacyRegs: "Gizlilik Sözleşmesi", termsStay: "Kullanım Şartları", dismiss: "KAPAT", contactTitle: "Hızlı Rezervasyon", contactDesc: "Karaköy salon koordinatörümüzün sizi hemen araması için bilgilerinizi bırakın.", submit: "Gönder", alacarteTitle: "À la Carte Deneyimi", alacarteDesc: "Seçkin malzemelerle hazırlanan meşe odununda dinlendirilmiş Wagyu imza yemeklerimizi keşfedin.", specialEventTitle: "Özel Kutlamalar", specialEventDesc: "Doğum günü, evlilik yıldönümü ve kutlamalar için kişiselleştirilmiş şef menüleri.", cateringTitle: "Kurumsal Akustik", cateringDesc: "İş yemekleri ve kurumsal lansman organizasyonları için premium gurme catering hizmeti.", deliveryTitle: "Tavola Evinizde", deliveryDesc: "Özel korumalı kuryelerimizle en taze gurme lezzetleri kapınıza getiriyoruz.", categoryTitle1: "Başlangıçlar", categoryTitle2: "Ana Yemekler", categoryTitle3: "Tatlılar", // Menus Localized menuHummus: "Ev Yapımı Hummus", menuHummusDesc: "Fırından taze lavaş ve soğuk sıkım İtalyan trüf yağı ile.", menuBruschetta: "Karidesli Bruschetta", menuBruschettaDesc: "Taze marine domates, fesleğen ve sarımsak emülsiyonu.", menuBurrata: "Burrata Salatası", menuBurrataDesc: "Cherry domates, fesleğen sosu ve taze roka yaprakları.", menuWagyu: "Wagyu Bonfile", menuWagyuDesc: "Fırınlanmış kuşkonmaz ve trüf mantarlı patates püresi eşliğinde.", menuLevrek: "Levrek Fileto", menuLevrekDesc: "Limonlu tereyağı sosu, kapari ve taze bahçe otları.", menuRisotto: "Mantar Risotto", menuRisottoDesc: "Yabani orman mantarları ve Parmigiano Reggiano peyniri ile.", menuBrule: "Crème Brûlée", menuBruleDesc: "Gerçek Madagaskar vanilyası ve karamelize şeker kıtırı.", menuFondant: "Çikolatalı Fondant", menuFondantDesc: "Belçika çikolatası dolgulu sıcak kek, vanilyalı dondurma.", menuKunefe: "Karaköy Künefesi", menuKunefeDesc: "Halis tereyağlı çıtır tel kadayıf ve manda kaymağı.", }, en: { navHeritage: "Our Heritage", navSpecial: "Chef's Specials", navBakery: "Daily Bakery", navServices: "Leisures", navBooking: "Reservation", badge: "SIGNATURE STEAKHOUSE & GASTRONOMY", heroTitlePart1: "Crafting", heroTitlePart2: "Flame & Steak", heroTitlePart3: "Heritage", heroDesc: "A journey of raw ingredients transformed by fire, smoke, and Palermo craftsmanship. Exquisite coordinates situated at Karaköy docks designed for refined palates.", learnMore: "Explore Heritage", reserveTable: "Reserve Table", heritageTitle: "Heritage Narrative", heritageHeader: "ANATOMY OF FLAVOR", heritageDesc: "Surrounded by Karaköy's historical stone walls, we merge Palermo's ancient wood-fired baking roots with modern culinary vision. A passion spanning oak-aged Wagyu steaks and sourdough crusts.", specialTitle: "Signature Cuts", specialHeader: "WEEKLY CULINARY SPECS", specialDesc: "Discover fresh orchard herbs, house-made sauces, and oak-fired Wagyu steak creations.", bakeryTitle: "Chalkboard Bakery", bakeryHeader: "DAILY SOURDOUGH BOULES", bakeryDesc: "Every morning at 05:00 AM, our stone ovens fill with sourdough fragrance. Hand-stretched using premium Italian flour and 48-hour fermentation.", servicesTitle: "Boutique Leisures", servicesHeader: "PREMIUM SERVICES FOR REFINED GUESTS", reviewsTitle: "Gourmet Diaries", reviewsHeader: "LOVED BY GLOBAL WRITERS", bookingTitle: "Table Booking", bookingHeader: "SECURE RESERVATION", bookingDesc: "Reserve your private velvet booth or live-cooking counter inside our acoustic jazz lounge.", fieldsName: "Full Name", fieldsPhone: "Phone Number", fieldsDate: "Target Date", fieldsTime: "Reservation Time", fieldsGuests: "Guest Count", fieldsNotes: "Bespoke Requests", fieldsNotesPlaceholder: "Dietary restrictions, VIP butler dispatch, anniversary settings...", dispatchForm: "SEND RESERVATION REQUEST", guarantee: "Submitting this form registers a verified priority slot. Tables are held exactly for 15 minutes beyond the scheduled time.", footerDesc: "Traditional craft, signature oak-aged Wagyu beef cuts, and Palermo baking heritage.", privacyRegs: "Privacy Policy", termsStay: "Terms of Service", dismiss: "DISMISS", contactTitle: "Quick Reservation", contactDesc: "Leave your contact details and our salon representative will call you back immediately.", submit: "Submit", alacarteTitle: "À la Carte Gastronomy", alacarteDesc: "Savor our signature oak-aged Wagyu ribeye cuts built with the finest local ingredients.", specialEventTitle: "Bespoke Gatherings", specialEventDesc: "Custom tasting menus and sommelier coordination for birthdays and private lounges.", cateringTitle: "Corporate Acoustics", cateringDesc: "Professional gourmet catering configurations for corporate launches and executive dinners.", deliveryTitle: "Tavola at Home", deliveryDesc: "Delivering hot gourmet culinary setups directly to your address via priority dispatch.", categoryTitle1: "Appetizers", categoryTitle2: "Main Courses", categoryTitle3: "Desserts", // Menus Localized menuHummus: "House-Crafted Hummus", menuHummusDesc: "Served with hot wood-fired flatbread and cold pressed truffle oil mist.", menuBruschetta: "Shrimp Bruschetta", menuBruschettaDesc: "Marinated cherry tomatoes, botanical basil, garlic emulsion.", menuBurrata: "Creamy Burrata", menuBurrataDesc: "Heirloom tomatoes, organic basil pesto, taze baby wild rocket.", menuWagyu: "A5 Wagyu Ribeye", menuWagyuDesc: "Accompanied by fire-charred asparagus and black truffle potato mash.", menuLevrek: "Sea Bass Filet", menuLevrekDesc: "Citrus butter reduction, capillary capers, and taze orchard herbs.", menuRisotto: "Wild Mushroom Risotto", menuRisottoDesc: "Foraged forest mushrooms, aged Parmigiano Reggiano, micro greens.", menuBrule: "Crème Brûlée", menuBruleDesc: "Infused with organic Madagascar vanilla and caramelized sugar crust.", menuFondant: "Molten Lava Fondant", menuFondantDesc: "Rich Belgian chocolate cake shell with house vanilla bean gelato.", menuKunefe: "Traditional Künefe", menuKunefeDesc: "Crisp shredded pastry loaded with melted unsalted cheese, thick buffalo cream.", } }; export default function RestoranTemplate({ data }: { data: DemoData }) { const { firma, istatistikler = [], hizmetler = [], menu = [], yorumlar = [] } = data; const [showBookingModal, setShowBookingModal] = useState(false); const [aktifKategori, setAktifKategori] = useState(0); const [lang, setLang] = useState<"tr" | "en">("tr"); const [preloader, setPreloader] = useState(true); const t = translations[lang]; // Lenis Smooth Scroll Integration useEffect(() => { let lenis: any; import("@studio-freight/lenis").then(({ default: Lenis }) => { lenis = new Lenis({ duration: 1.2, easing: (x: number) => Math.min(1, 1.001 - Math.pow(2, -10 * x)) }); function raf(time: number) { lenis.raf(time); requestAnimationFrame(raf); } requestAnimationFrame(raf); }); return () => lenis?.destroy(); }, []); // Preloader Curtain Timer useEffect(() => { const timer = setTimeout(() => { setPreloader(false); }, 1500); return () => clearTimeout(timer); }, []); // Localized stats label mappings const getLocalizedStatLabel = (deger: string) => { if (deger.includes("Heritage")) return lang === "tr" ? "Yıllık Köklü Miras" : "Years of Heritage"; if (deger.includes("Dishes")) return lang === "tr" ? "İmza Tabaklar" : "Signature Dishes"; if (deger.includes("Rating")) return lang === "tr" ? "Ortalama Değerlendirme" : "Average Guest Rating"; return lang === "tr" ? "Aylık Gurme Misafir" : "Monthly Diners"; }; // Localized services text mappings const getLocalizedServiceText = (baslik: string) => { if (baslik.includes("Carte")) return { title: t.alacarteTitle, desc: t.alacarteDesc }; if (baslik.includes("Günler")) return { title: t.specialEventTitle, desc: t.specialEventDesc }; if (baslik.includes("Kurumsal")) return { title: t.cateringTitle, desc: t.cateringDesc }; return { title: t.deliveryTitle, desc: t.deliveryDesc }; }; // Custom vector icons for services (No generic emojis) const getServiceIconSvg = (ikon: string) => { switch (ikon) { case "alacarte": return ( ); case "special": return ( ); case "catering": return ( ); default: return ( ); } }; // Localized menu items const getLocalizedMenuItemText = (ad: string) => { if (ad.includes("Hummus")) return { title: t.menuHummus, desc: t.menuHummusDesc }; if (ad.includes("Bruschetta")) return { title: t.menuBruschetta, desc: t.menuBruschettaDesc }; if (ad.includes("Burrata")) return { title: t.menuBurrata, desc: t.menuBurrataDesc }; if (ad.includes("Wagyu")) return { title: t.menuWagyu, desc: t.menuWagyuDesc }; if (ad.includes("Levrek")) return { title: t.menuLevrek, desc: t.menuLevrekDesc }; if (ad.includes("Risotto")) return { title: t.menuRisotto, desc: t.menuRisottoDesc }; if (ad.includes("Brûlée")) return { title: t.menuBrule, desc: t.menuBruleDesc }; if (ad.includes("Fondant")) return { title: t.menuFondant, desc: t.menuFondantDesc }; return { title: t.menuKunefe, desc: t.menuKunefeDesc }; }; const getLocalizedCategoryTitle = (kategori: string) => { if (kategori.includes("Başlangıç")) return t.categoryTitle1; if (kategori.includes("Ana")) return t.categoryTitle2; return t.categoryTitle3; }; const css = ` @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500;600;700;800&display=swap'); :root { --color-restaurant-gold: #C5A880; --color-restaurant-charcoal: #090A0C; --color-restaurant-slate: #13151A; } .font-serif-editorial { font-family: 'Playfair Display', Georgia, serif; } .font-sans-clean { font-family: 'Inter', sans-serif; } .shadow-premium { box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.4); } .grain-overlay { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.025'/%3E%3C/svg%3E"); } .marquee-text-flow { white-space: nowrap; animation: marquee 25s linear infinite; } @keyframes marquee { 0% { transform: translateX(0%); } 100% { transform: translateX(-50%); } } .hero-title-clamp { font-size: clamp(38px, 6vw, 90px); letter-spacing: -0.01em; line-height: 0.95; } `; return ( <> {/* ── IMZA AN: CURTAIN REVEAL PRELOADER ── */} {preloader && (
LEZZET MUTFAĞI
interactive prototype
)}
{/* Grain texture */}
{/* Ambient glow blobs */}
{/* ── FLOATING CONCEPT BANNER ── */}
{lang === "tr" ? "Bu web sitesi Ayris Tech tarafından hazırlanmış bir konsept çalışmasıdır." : "This website is a premium concept prototype designed by Ayris Tech."}
{/* ── FLOATING NAVBAR ── */}
{/* Logo */} {firma.adi} {/* Links */} {/* Language Selector + Reserve Button */}
{/* Language Switcher */}
setShowBookingModal(true)} className="text-[10px] font-sans-clean font-black tracking-[2.5px] uppercase text-black bg-[#C5A880] hover:bg-[#d5b990] px-6 py-3.5 rounded-xl transition-all cursor-pointer shadow-[0_4px_12px_rgba(197,168,128,0.15)] hidden sm:block" whileHover={{ scale: 1.02 }} whileTap={{ scale: 0.98 }} > {t.reserveTable}
{/* ── HERO SECTION WITH EDITORIAL BACKGROUND zoom ── */}
{t.badge} {t.heroTitlePart1}
{t.heroTitlePart2}
{t.heroTitlePart3}
{t.heroDesc} {t.learnMore}
{/* ── IMZA AN: INFINITE MARQUEE BAND ── */}
{lang === "tr" ? "Lezzet Mutfağı Karaköy" : "Karaköy Culinary Heritage"} · {lang === "tr" ? "İmza Steakhouse ve Gastronomi" : "Signature Wagyu Steak cuts"} · {lang === "tr" ? "Geleneksel Pişirme Teknikleri" : "Wood-Fired Fermented Sourdough"} · {lang === "tr" ? "Palermo Zanaat Kültürü" : "Palermo Baking Roots"} · {lang === "tr" ? "Lezzet Mutfağı Karaköy" : "Karaköy Culinary Heritage"} · {lang === "tr" ? "İmza Steakhouse ve Gastronomi" : "Signature Wagyu Steak cuts"} · {lang === "tr" ? "Geleneksel Pişirme Teknikleri" : "Wood-Fired Fermented Sourdough"} · {lang === "tr" ? "Palermo Zanaat Kültürü" : "Palermo Baking Roots"} ·
{/* ── SECTION 2: HERITAGE / ABOUT US (3 COLUMN SPLIT) ── */}
{/* Left text column */} {t.heritageTitle} {t.heritageHeader} {t.heritageDesc} {/* Stat pile inside heritage */} {istatistikler.map((stat, sIdx) => (

{stat.deger}

{getLocalizedStatLabel(stat.etiket)}

))}
{/* Right layered imagery column */}
{/* eslint-disable-next-line @next/next/no-img-element */} Chef Plating Wagyu Ribeye
{/* ── SECTION 3: ŞEFİN SEÇİMİ (DOTTED MENU GRID) ── */}
{/* Left Col: Gourmet active sauté shot */}
{/* eslint-disable-next-line @next/next/no-img-element */} Flaming Gourmet sauté preparation {/* Small tag inside photo */}

Flaming sauté

Live from karaköy kitchen

🔥
{/* Right Col: The Dotted Menu List */} {t.specialTitle} {t.specialHeader} {t.specialDesc} {/* Dotted lines menu item lists */}
{menu[aktifKategori]?.urunler.map((item) => { const text = getLocalizedMenuItemText(item.ad); return (
{text.title}
{item.fiyat}

{text.desc}

); })}
{/* Menu categories tabs */} {menu.map((kat, idx) => ( ))}
{/* ── SECTION 4: CHALKBOARD BAKERY ── */}
{/* Left Side: Sourdough Details */} {t.bakeryTitle} {t.bakeryHeader} {t.bakeryDesc} {/* Sourdough Boule metrics */}
{[ { title: lang === "tr" ? "Geleneksel İtalyan Ciabatta" : "Traditional Italian Ciabatta", desc: "1250g | 45 min | 230°C", body: lang === "tr" ? "Altın çıtır kabuklu, bol gözenekli Palermo klasiği." : "Gold crispy crust, high hydration classic boules." }, { title: lang === "tr" ? "Çavdar Sourdough Boule" : "Rye Sourdough Boule", desc: "750g | 38 min | 240°C", body: lang === "tr" ? "Aktif karbon, çavdar ve özel ekşi maya ile pişirilmiş tahıllı ekmek." : "Baked with active charcoal, organic rye, and local sourdough." } ].map((bread, bIdx) => (

{bread.title}

{bread.desc}

{bread.body}

))}
{/* Right Side: Flatlay image */}
{/* eslint-disable-next-line @next/next/no-img-element */} Sourdough flatlay chalkboard
{/* ── SECTION 5: SERVICES (SVG ICONS - NO EMOJIS) ── */}
{t.servicesTitle}

{t.servicesHeader}

{hizmetler.map((h, i) => { const s = getLocalizedServiceText(h.baslik); return (
{getServiceIconSvg(h.ikon)}

{s.title}

{s.desc}

); })}
{/* ── SECTION 6: TESTIMONIALS (YORUMLAR) ── */}
{t.reviewsTitle}

{t.reviewsHeader}

{yorumlar.map((y, i) => (
{[...Array(y.puan || 5)].map((_, j) => ( ))}

“{y.yorum}”

{y.emoji}

{y.yazar.split("—")[0]}

{y.tarih}
))}
{/* ── SECTION 7: RANDEVU AL / RESERVATION ── */}
{t.bookingTitle}

{t.bookingHeader}

{t.bookingDesc}

{[ { label: t.fieldsName, placeholder: lang === "tr" ? "Adınız Soyadınız" : "Your Full Name", type: "text", full: false }, { label: t.fieldsPhone, placeholder: "05xx xxx xx xx", type: "tel", full: false }, { label: t.fieldsDate, placeholder: "", type: "date", full: false }, { label: t.fieldsTime, placeholder: "", type: "time", full: false }, { label: t.fieldsGuests, placeholder: "2", type: "number", full: false }, { label: t.fieldsNotes, placeholder: t.fieldsNotesPlaceholder, type: "text", full: true }, ].map((field, i) => (
))}

{t.guarantee}

setShowBookingModal(true)} className="w-full md:w-auto px-10 py-4.5 rounded-xl text-[#090A0C] font-sans-clean font-black tracking-[2px] uppercase bg-[#C5A880] hover:bg-[#d5b990] transition-colors cursor-pointer text-xs shrink-0 shadow-[0_5px_15px_rgba(197,168,128,0.15)]" whileHover={{ scale: 1.02 }} whileTap={{ scale: 0.98 }} > {t.dispatchForm}
{/* ── FOOTER ── */}
{firma.adi}

{firma.slogan} — {t.footerDesc}

📍 {firma.adres}

📞 {firma.telefon}

{lang === "tr" ? "Şefin Menüsü" : "Tasting Menu"}

{menu.map((kat, idx) => ( {getLocalizedCategoryTitle(kat.kategori)} ))}

{lang === "tr" ? "Karaköy Restoran" : "Karakoy Steakhouse"}

{[t.navHeritage, t.navSpecial, t.navBakery, t.navServices].map(item => ( {item} ))}

© 2026 {firma.adi}. All rights reserved.

{/* ── FAST BOOKING OVERLAY MODAL ── */} {showBookingModal && (

{t.contactTitle}

{lang === "tr" ? "Karaköy Rezervasyon Hattı" : "Karakoy Booking Desk"}

setShowBookingModal(false)} > {t.submit}
)}
); }