// aerOS Guest v2 — data: i18n + restaurant menu (hotel restaurant) with diet tags, calories, badges. (function () { const TR = { brand: 'Vadi Brasserie', brandSub: 'Radisson Collection · Vadistanbul', tableLabel: 'Masa', roomLabel: 'Oda', viewOnly: 'Görüntüleme', search: 'Yemek, içecek ara…', all: 'Tümü', featured: 'Şefin Önerileri', popular: 'En Sevilenler', filters: 'Filtreler', clear: 'Temizle', apply: 'Uygula', diet: 'Diyet', priceRange: 'Fiyat aralığı', veg: 'Vejetaryen', vegan: 'Vegan', gf: 'Glutensiz', spicy: 'Acılı', noResults: 'Sonuç bulunamadı', addToCart: 'Sepete ekle', add: 'Ekle', size: 'Porsiyon', extras: 'Ekstralar', note: 'Not', itemNote: 'Özel istek (ör. az pişmiş)', allergens: 'Alerjenler', cal: 'kcal', prepTime: 'dk hazırlık', cart: 'Sepet', cartEmpty: 'Sepetiniz boş', cartEmptyDesc: 'Menüden lezzetli bir şeyler ekleyin.', browseMenu: 'Menüye dön', subtotal: 'Ara toplam', service: 'Servis (%10)', total: 'Toplam', placeOrder: 'Siparişi onayla', cartNote: 'Siparişe not ekle', orderNotePh: 'Mutfağa iletmek istedikleriniz…', orderPlaced: 'Siparişiniz alındı', orderPlacedDesc: 'Mutfak hazırlamaya başladı. Masanıza getireceğiz.', estTime: 'Tahmini', min: 'dk', track_received: 'Alındı', track_preparing: 'Hazırlanıyor', track_ontheway: 'Yolda', track_served: 'Serviste', newOrder: 'Yeni sipariş', upsell: 'Yanına ne dersiniz?', callWaiter: 'Garson çağır', waiterTitle: 'Masa servisi', waiterDesc: 'Bir dokunuşla isteğinizi iletin.', callStaff: 'Garson çağır', requestBill: 'Hesap iste', requestWater: 'Su iste', extraNapkins: 'Peçete iste', sent: 'İsteğiniz iletildi', onWay: 'Ekibimiz birazdan masanızda.', chefPick: 'Şef öneri', popularBadge: 'Popüler', newBadge: 'Yeni', spicyBadge: 'Acı', signature: 'İmza', welcome: 'Hoş geldiniz', menuOf: 'menüsü', viewMenu: 'Menüyü gör', open: 'Açık', items: 'ürün', // shell / nav home: 'Anasayfa', services: 'Otel Hizmetleri', servicesShort: 'Hizmetler', messages: 'Mesajlar', settings: 'Ayarlar', selectOutlet: 'Nereden sipariş veriyorsunuz?', roomService: 'Oda Servisi', back: 'Geri', ot_restaurant: 'Restoran', ot_lobby: 'Lobi Bar', ot_pool: 'Havuz Bar', ot_cafe: 'Kafe', // services spa: 'SPA & Fitness', transfer: 'Havaalanı & Transfer', events: 'Etkinlikler', tour: 'Şehir Turu', wifi: 'Wi-Fi', meeting: 'Toplantı & Davet', gallery: 'Galeri', news: 'Gazete & Dergi', tv: 'TV Rehberi', social: 'Sosyal Medya', concierge: 'Concierge', conciergeSub: 'Resepsiyon · genelde birkaç dk içinde yanıt', msgPlaceholder: 'Resepsiyona mesaj yazın…', book: 'Rezervasyon yap', request: 'Talep gönder', surname: 'Soyad', date: 'Tarih', time: 'Saat', passengers: 'Yolcu', flightNo: 'Uçuş no', route: 'Güzergah', vehicle: 'Araç', roundTrip: 'Gidiş-dönüş', selectTier: 'Süre / fiyat seçin', reserved: 'Talebiniz alındı', people: 'kişi', wifiName: 'Ağ adı', wifiPass: 'Şifre', copy: 'Kopyala', copied: 'Kopyalandı', connect: 'Bağlan', announceTitle: 'Yaz Açılış Brunch\u2019ı', announceDesc: 'Bu pazar 11:00–15:00 · canlı müzik eşliğinde sınırsız brunch.', announceCta: 'Detayları gör', // settings panel setTheme: 'Tema', setCurrency: 'Para birimi', setLayout: 'Kart düzeni', setCatNav: 'Kategori navigasyonu', setContent: 'İçerik & görünüm', setDesc: 'Menüyü kendinize göre ayarlayın', layList: 'Liste', layGallery: 'Galeri', layMagazine: 'Dergi', layText: 'Metin', navPills: 'Hap', navTabs: 'Sekme', optFeatured: 'Şef önerileri şeridi', optBadge: 'Rozetler (şef/popüler)', optDiet: 'Diyet etiketleri', optCal: 'Kalori bilgisi', optPrice: 'Fiyatları göster', optAnim: 'Animasyonlar', allergenInfo: 'Alerjen bilgisi', allergenNote: 'Alerjiniz varsa lütfen servis ekibimizi bilgilendirin.', close: 'Kapat', }; const EN = { brand: 'Vadi Brasserie', brandSub: 'Radisson Collection · Vadistanbul', tableLabel: 'Table', roomLabel: 'Room', viewOnly: 'View only', search: 'Search dishes, drinks…', all: 'All', featured: "Chef's Picks", popular: 'Most Loved', filters: 'Filters', clear: 'Clear', apply: 'Apply', diet: 'Diet', priceRange: 'Price range', veg: 'Vegetarian', vegan: 'Vegan', gf: 'Gluten-free', spicy: 'Spicy', noResults: 'No results', addToCart: 'Add to cart', add: 'Add', size: 'Portion', extras: 'Extras', note: 'Note', itemNote: 'Special request (e.g. medium rare)', allergens: 'Allergens', cal: 'kcal', prepTime: 'min prep', cart: 'Cart', cartEmpty: 'Your cart is empty', cartEmptyDesc: 'Add something delicious from the menu.', browseMenu: 'Back to menu', subtotal: 'Subtotal', service: 'Service (10%)', total: 'Total', placeOrder: 'Confirm order', cartNote: 'Add a note', orderNotePh: 'Anything for the kitchen…', orderPlaced: 'Order received', orderPlacedDesc: 'The kitchen has started. We will bring it to your table.', estTime: 'Est.', min: 'min', track_received: 'Received', track_preparing: 'Preparing', track_ontheway: 'On the way', track_served: 'Served', newOrder: 'New order', upsell: 'Anything to go with it?', callWaiter: 'Call waiter', waiterTitle: 'Table service', waiterDesc: 'Send a request in one tap.', callStaff: 'Call waiter', requestBill: 'Request bill', requestWater: 'Request water', extraNapkins: 'Request napkins', sent: 'Request sent', onWay: 'Our team will be at your table shortly.', chefPick: "Chef's pick", popularBadge: 'Popular', newBadge: 'New', spicyBadge: 'Spicy', signature: 'Signature', welcome: 'Welcome', menuOf: 'menu', viewMenu: 'View menu', open: 'Open', items: 'items', home: 'Home', services: 'Hotel Services', servicesShort: 'Services', messages: 'Messages', settings: 'Settings', selectOutlet: 'Where are you ordering from?', roomService: 'Room Service', back: 'Back', ot_restaurant: 'Restaurant', ot_lobby: 'Lobby Bar', ot_pool: 'Pool Bar', ot_cafe: 'Cafe', spa: 'SPA & Fitness', transfer: 'Airport & Transfer', events: 'Events', tour: 'City Tour', wifi: 'Wi-Fi', meeting: 'Meetings & Events', gallery: 'Gallery', news: 'Press & Magazines', tv: 'TV Guide', social: 'Social Media', concierge: 'Concierge', conciergeSub: 'Front desk · usually replies within minutes', msgPlaceholder: 'Message the front desk…', book: 'Book now', request: 'Send request', surname: 'Surname', date: 'Date', time: 'Time', passengers: 'Passengers', flightNo: 'Flight no', route: 'Route', vehicle: 'Vehicle', roundTrip: 'Round trip', selectTier: 'Select duration / price', reserved: 'Request received', people: 'pax', wifiName: 'Network', wifiPass: 'Password', copy: 'Copy', copied: 'Copied', connect: 'Connect', announceTitle: 'Summer Opening Brunch', announceDesc: 'This Sunday 11:00–15:00 · unlimited brunch with live music.', announceCta: 'See details', setTheme: 'Theme', setCurrency: 'Currency', setLayout: 'Card layout', setCatNav: 'Category navigation', setContent: 'Content & display', setDesc: 'Tailor the menu to your taste', layList: 'List', layGallery: 'Gallery', layMagazine: 'Magazine', layText: 'Text', navPills: 'Pills', navTabs: 'Tabs', optFeatured: "Chef's picks rail", optBadge: 'Badges (chef/popular)', optDiet: 'Diet tags', optCal: 'Calorie info', optPrice: 'Show prices', optAnim: 'Animations', allergenInfo: 'Allergen info', allergenNote: 'If you have an allergy, please inform our service team.', close: 'Close', }; const CATS = [ { id: 'c1', name: 'Başlangıçlar', en: 'Starters' }, { id: 'c2', name: 'Çorbalar', en: 'Soups' }, { id: 'c3', name: 'Ana Yemekler', en: 'Mains' }, { id: 'c4', name: 'Izgara', en: 'From the Grill' }, { id: 'c5', name: 'Tatlılar', en: 'Desserts' }, { id: 'c6', name: 'Sıcak İçecekler', en: 'Hot Drinks' }, { id: 'c7', name: 'Kokteyller', en: 'Cocktails' }, ]; const ALLERGENS = { gluten: 'Gluten', milk: 'Süt', egg: 'Yumurta', nuts: 'Kuruyemiş', fish: 'Balık', soy: 'Soya', sesame: 'Susam', shellfish: 'Kabuklu' }; // P: id, cat, name, en, desc, en_desc, price, cal, prep, diet[], allergens[], color, badge, portions[], mods[] const P = (o) => ({ portions: [], mods: [], diet: [], allergens: [], ...o }); const PRODUCTS = [ P({ id: 'p1', cat: 'c1', name: 'Humus Tabağı', en: 'Hummus Plate', desc: 'Nohut ezmesi, tahin, sızma zeytinyağı, sıcak pita', en_desc: 'Chickpea purée, tahini, olive oil, warm pita', price: 180, cal: 320, prep: 8, diet: ['veg', 'vegan'], allergens: ['gluten', 'sesame'], color: '#9bbf4a', mods: [{ id: 'm1', label: 'Ekstra pita', en: 'Extra pita', price: 25 }, { id: 'm2', label: 'Acı sos', en: 'Hot sauce', price: 0 }] }), P({ id: 'p2', cat: 'c1', name: 'Burrata & Domates', en: 'Burrata & Tomato', desc: 'Taze burrata, kiraz domates, fesleğen, balzamik', en_desc: 'Fresh burrata, cherry tomato, basil, balsamic', price: 240, cal: 410, prep: 7, diet: ['veg', 'gf'], allergens: ['milk'], color: '#c2d985', badge: 'chef' }), P({ id: 'p3', cat: 'c1', name: 'Karides Güveç', en: 'Shrimp Casserole', desc: 'Tereyağında karides, sarımsak, taze kekik', en_desc: 'Buttered shrimp, garlic, fresh thyme', price: 320, cal: 380, prep: 12, diet: ['gf', 'spicy'], allergens: ['shellfish', 'milk'], color: '#e0763c' }), P({ id: 'p4', cat: 'c2', name: 'Mercimek Çorbası', en: 'Lentil Soup', desc: 'Geleneksel kırmızı mercimek, limon, kıtır kruton', en_desc: 'Red lentil, lemon, crisp croutons', price: 120, cal: 210, prep: 5, diet: ['veg', 'vegan'], allergens: ['gluten'], color: '#d9a441' }), P({ id: 'p5', cat: 'c2', name: 'Mantar Velouté', en: 'Mushroom Velouté', desc: 'Kremalı orman mantarı, trüf yağı', en_desc: 'Creamy wild mushroom, truffle oil', price: 160, cal: 290, prep: 6, diet: ['veg', 'gf'], allergens: ['milk'], color: '#a98a6a' }), P({ id: 'p6', cat: 'c3', name: 'Levrek Fileto', en: 'Sea Bass Fillet', desc: 'Izgara levrek, mevsim sebzeleri, limon beurre blanc', en_desc: 'Grilled sea bass, seasonal veg, lemon beurre blanc', price: 460, cal: 520, prep: 18, diet: ['gf'], allergens: ['fish', 'milk'], color: '#8fb3c9', badge: 'popular', portions: [{ id: 'sm', label: 'Standart', en: 'Standard', price: 0 }, { id: 'lg', label: 'Büyük', en: 'Large', price: 90 }] }), P({ id: 'p7', cat: 'c3', name: 'El Açması Mantı', en: 'Turkish Dumplings', desc: 'El açması mantı, sarımsaklı yoğurt, tereyağı sos', en_desc: 'Hand-rolled dumplings, garlic yogurt, butter sauce', price: 280, cal: 640, prep: 16, diet: [], allergens: ['gluten', 'milk', 'egg'], color: '#d98c5f' }), P({ id: 'p8', cat: 'c3', name: 'Mantarlı Risotto', en: 'Mushroom Risotto', desc: 'Arborio pirinç, mantar, parmesan, trüf yağı', en_desc: 'Arborio rice, mushroom, parmesan, truffle oil', price: 320, cal: 580, prep: 20, diet: ['veg', 'gf'], allergens: ['milk'], color: '#c9b287' }), P({ id: 'p9', cat: 'c4', name: 'Kuzu Pirzola', en: 'Lamb Chops', desc: 'Közde kuzu pirzola, kekikli patates, demi-glace', en_desc: 'Charcoal lamb chops, thyme potato, demi-glace', price: 580, cal: 720, prep: 22, diet: ['gf'], allergens: [], color: '#b5654a', badge: 'signature', portions: [{ id: 's4', label: '4 parça', en: '4 pieces', price: 0 }, { id: 's6', label: '6 parça', en: '6 pieces', price: 160 }] }), P({ id: 'p10', cat: 'c4', name: 'Dry-Aged Antrikot', en: 'Dry-Aged Ribeye', desc: '300gr dinlendirilmiş antrikot, izgara sebze', en_desc: '300g dry-aged ribeye, grilled vegetables', price: 720, cal: 890, prep: 25, diet: ['gf'], allergens: [], color: '#a14b3a', badge: 'popular', mods: [{ id: 'md', label: 'Az pişmiş', en: 'Medium rare', price: 0 }, { id: 'wd', label: 'İyi pişmiş', en: 'Well done', price: 0 }, { id: 'pep', label: 'Karabiber sos', en: 'Pepper sauce', price: 40 }] }), P({ id: 'p11', cat: 'c4', name: 'Sebze Şiş', en: 'Grilled Vegetables', desc: 'Mevsim sebzeleri, nar ekşili glaze', en_desc: 'Seasonal vegetables, pomegranate glaze', price: 220, cal: 260, prep: 14, diet: ['veg', 'vegan', 'gf'], allergens: [], color: '#7fae4f' }), P({ id: 'p12', cat: 'c5', name: 'Antep Künefe', en: 'Pistachio Kunefe', desc: 'Antep fıstıklı künefe, kaymak, şerbet', en_desc: 'Pistachio kunefe, clotted cream, syrup', price: 180, cal: 540, prep: 12, diet: ['veg'], allergens: ['gluten', 'milk', 'nuts'], color: '#d9923f', badge: 'chef' }), P({ id: 'p13', cat: 'c5', name: 'Çikolatalı Sufle', en: 'Chocolate Soufflé', desc: 'Sıcak çikolata sufle, vanilyalı dondurma', en_desc: 'Warm chocolate soufflé, vanilla ice cream', price: 200, cal: 480, prep: 15, diet: ['veg'], allergens: ['gluten', 'milk', 'egg'], color: '#7a5230' }), P({ id: 'p14', cat: 'c6', name: 'Türk Kahvesi', en: 'Turkish Coffee', desc: 'Geleneksel türk kahvesi, lokum ikramı', en_desc: 'Traditional Turkish coffee, Turkish delight', price: 90, cal: 15, prep: 6, diet: ['vegan', 'gf'], allergens: [], color: '#8a6240', mods: [{ id: 's0', label: 'Sade', en: 'No sugar', price: 0 }, { id: 's1', label: 'Az şekerli', en: 'Light sugar', price: 0 }, { id: 's2', label: 'Şekerli', en: 'Sweet', price: 0 }] }), P({ id: 'p15', cat: 'c6', name: 'Cappuccino', en: 'Cappuccino', desc: 'Çift shot espresso, buharda süt köpüğü', en_desc: 'Double espresso, steamed milk foam', price: 110, cal: 120, prep: 4, diet: ['veg'], allergens: ['milk'], color: '#a87f55' }), P({ id: 'p16', cat: 'c7', name: 'Vadi Spritz', en: 'Vadi Spritz', desc: 'Aperol, prosecco, soda, taze portakal', en_desc: 'Aperol, prosecco, soda, fresh orange', price: 280, cal: 180, prep: 4, diet: ['vegan', 'gf'], allergens: [], color: '#e08a3c', badge: 'new' }), P({ id: 'p17', cat: 'c7', name: 'Negroni', en: 'Negroni', desc: 'Cin, Campari, kırmızı vermut, portakal kabuğu', en_desc: 'Gin, Campari, sweet vermouth, orange peel', price: 320, cal: 210, prep: 5, diet: ['vegan', 'gf'], allergens: [], color: '#b5413a' }), ]; const OUTLETS = [ { id: 'o1', name: 'Vadi Brasserie', type: 'restaurant', desc: 'Akdeniz mutfağı', en: 'Mediterranean', color: '#E0742F' }, { id: 'o2', name: 'Sky Lobby Bar', type: 'lobby', desc: 'Kokteyl & atıştırmalık', en: 'Cocktails & bites', color: '#2F7D6B' }, { id: 'o3', name: 'Aqua Pool Bar', type: 'pool', desc: 'Havuz başı serinlik', en: 'Poolside refresh', color: '#3E8FB0' }, { id: 'o4', name: 'Collection Café', type: 'cafe', desc: 'Kahve & tatlı', en: 'Coffee & sweets', color: '#C99A3E' }, ]; const WAITER_ACTIONS = [ { id: 'call', label: 'callStaff', icon: 'headset', color: '#E0742F' }, { id: 'bill', label: 'requestBill', icon: 'creditcard', color: '#2F7D6B' }, { id: 'water', label: 'requestWater', icon: 'coffee', color: '#3E8FB0' }, { id: 'napkins', label: 'extraNapkins', icon: 'file', color: '#9E2B36' }, ]; // allergen descriptions (for info popup) const ALLERGEN_DESC = { tr: { gluten: 'Buğday, arpa, çavdar gibi tahıl glüteni içerir.', milk: 'Süt ve süt ürünleri (laktoz) içerir.', egg: 'Yumurta ve yumurta ürünleri içerir.', nuts: 'Fındık, fıstık, badem gibi sert kabuklu yemiş içerir.', fish: 'Balık ve balık ürünleri içerir.', soy: 'Soya ve soya türevleri içerir.', sesame: 'Susam tohumu içerir.', shellfish: 'Karides, midye gibi kabuklu deniz ürünü içerir.' }, en: { gluten: 'Contains cereal gluten (wheat, barley, rye).', milk: 'Contains milk and dairy (lactose).', egg: 'Contains eggs and egg products.', nuts: 'Contains tree nuts (hazelnut, almond, etc.).', fish: 'Contains fish and fish products.', soy: 'Contains soy and soy derivatives.', sesame: 'Contains sesame seeds.', shellfish: 'Contains shellfish (shrimp, mussels, etc.).' }, }; // hotel services (ported from v1) const SERVICE_TILES = ['spa', 'transfer', 'events', 'tour', 'wifi', 'meeting', 'gallery', 'news']; const SERVICE_META = { spa: { icon: 'spa', color: '#5FAE5F' }, transfer: { icon: 'car', color: '#2F7D6B' }, events: { icon: 'ticket', color: '#C99A3E' }, tour: { icon: 'map', color: '#D14D7A' }, wifi: { icon: 'wifi', color: '#3E8FB0' }, meeting: { icon: 'clipboard', color: '#6C5CE0' }, gallery: { icon: 'image', color: '#B5783A' }, news: { icon: 'newspaper', color: '#7C8696' }, concierge: { icon: 'chat', color: '#E0742F' }, tv: { icon: 'tv', color: '#475569' }, social: { icon: 'globe', color: '#0E8AAE' }, }; const SPA_SERVICES = [ { id: 's1', name: 'İsveç Masajı', en: 'Swedish Massage', color: '#5FAE5F', tiers: [{ d: '50 dk', p: 1200 }, { d: '80 dk', p: 1800 }] }, { id: 's2', name: 'Aromaterapi', en: 'Aromatherapy', color: '#2F7D6B', tiers: [{ d: '60 dk', p: 1500 }] }, { id: 's3', name: 'Hamam & Kese', en: 'Turkish Bath', color: '#C99A3E', tiers: [{ d: '45 dk', p: 900 }] }, { id: 's4', name: 'Fitness PT', en: 'Personal Training', color: '#6C5CE0', tiers: [{ d: '60 dk', p: 800 }] }, ]; const ROUTES = [ { id: 'rt1', label: 'İstanbul Havalimanı (IST)', en: 'Istanbul Airport (IST)', price: 2400 }, { id: 'rt2', label: 'Sabiha Gökçen (SAW)', en: 'Sabiha Gökçen (SAW)', price: 1800 }, { id: 'rt3', label: 'Şehir Merkezi', en: 'City Centre', price: 1200 }, ]; const VEHICLES = [ { id: 'v1', label: 'Mercedes S-Class', cap: 3, mult: 1 }, { id: 'v2', label: 'Mercedes Vito VIP', cap: 6, mult: 1.3 }, { id: 'v3', label: 'Sprinter VIP', cap: 12, mult: 1.7 }, ]; const EVENTS = [ { id: 'e1', title: 'Yaz Açılış Brunch\u2019ı', en: 'Summer Opening Brunch', date: '8 Haziran · 11:00', color: '#E0742F' }, { id: 'e2', title: 'Canlı Caz Akşamı', en: 'Live Jazz Night', date: '12 Haziran · 21:00', color: '#6C5CE0' }, { id: 'e3', title: 'Şef\u2019in Özel Menüsü', en: "Chef's Special Menu", date: '20 Haziran · 19:30', color: '#C99A3E' }, ]; const BRAND = { name: 'Radisson Collection', sub: 'Vadistanbul', wifiSsid: 'Radisson_Guest', wifiPass: 'welcome2026' }; window.G2DATA = { TR, EN, CATS, ALLERGENS, ALLERGEN_DESC, PRODUCTS, OUTLETS, WAITER_ACTIONS, SERVICE_TILES, SERVICE_META, SPA_SERVICES, ROUTES, VEHICLES, EVENTS, BRAND }; })();