"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 ── */}
{getLocalizedStatLabel(stat.etiket)}
{/* Small tag inside photo */}
Live from karaköy kitchen
{text.desc}
{bread.body}
{s.desc}
“{y.yorum}”
{t.bookingDesc}
{t.guarantee}
{lang === "tr" ? "Karaköy Rezervasyon Hattı" : "Karakoy Booking Desk"}