import React, { useState, useEffect, useRef } from 'react'; import ReactDOM from 'react-dom/client'; import { Menu, X, MapPin, Phone, Mail, Instagram, Facebook, ArrowRight, Clock, ExternalLink, ChevronRight, FileText, Download, Upload } from 'lucide-react'; const CONFIG = { restaurant: { name: "nagomi", address: "J. Jasinskio g. 14B", city: "Vilnius, Lithuania", building: "Yellowstone Business Center", phone: "+370 687 52295", email: "labas@nagomi.lt", }, links: { reservation: { lt: "https://widget.tablein.com/lt/widget/nagomi", en: "https://widget.tablein.com/en/widget/nagomi" }, menu: "https://order.site/nagomi/en/ltu/vilnius/restaurant/nagomi-sf", order: "https://order.site/nagomi/en/ltu/vilnius/restaurant/nagomi-sf", wolt: "https://wolt.com/lt/ltu/vilnius/restaurant/nagomi-j-jasinskio-g", instagram: "https://www.instagram.com/nagomivilnius/", facebook: "https://www.facebook.com/profile.php?id=61575997382296" } }; const MENU_PDF_PATHS = { food: { lt: "assets/main-menu/nagomi-menu-lt.pdf", en: "assets/main-menu/nagomi-menu-en.pdf" }, drinks: { lt: "assets/cocktails-menu/cocktails-lt.pdf", en: "assets/cocktails-menu/cocktails-en.pdf" } }; // Careers form submission target: a PHP script (see php/submit-application.php) // that stores the application in MySQL and emails the CV to the restaurant. // Adjust this path if you deploy the php/ folder somewhere other than alongside index.html. const CAREERS_FORM_ENDPOINT = "php/submit-application.php"; const DICTIONARY = { lt: { nav: { experience: "Patirtis", menu: "Meniu", lunch: "Verslo Pietūs", bar: "Baras", about: "Apie mus", careers: "Karjera", contact: "Kontaktai" }, actions: { reserve: "Staliukų rezervacija", viewMenu: "Žiūrėti meniu", downloadMenu: "Atsisiųsti PDF", orderOnline: "Užsakyti į namus", getDirections: "Gauti nuorodas" }, hero: { title1: "nagomi", title2: "KAITEN SUSHI", title3: "VILNIUJE", subtitle: "Šiuolaikinė japonų virtuvės patirtis." }, experience: { tag: <>„Nagomi“ patirtis, title: "Leiskis į autentišką skonių kelionę", subtitle: "Pristatome suši takelio (jap. kaiten sushi) konceptą", paragraphs: [ "Tai japonų sukurta dinamiška, žaisminga ir itin rafinuota valgymo patirtis, kur maistas atkeliauja pas tave – tiesiai ant judančio takelio.", "Kiekviena lėkštutė skirtingos spalvos, spalva nurodo jos kainą. Imk patinkančius patiekalus ir mėgaukis!" ], cta: "Meniu" }, kaitenBelt: { title: "KAITEN RITMAS", subtitle: "NEPERTRAUKIAMAS MEISTRIŠKUMO SRAUTAS TIESIAI PRIEŠ JŪSŲ AKIS." }, menuPreview: { tag: "Kulinarija", title: "SUKURTA SU MEILE", text: "Kuriame su meile maistui ir pagarba japonų kulinarinėms tradicijoms, subtiliai jas derindami su šiuolaikiniais skoniais ir netikėtais deriniais. Mūsų virtuvėje japonų įkvėpimas susitinka su kūrybiška fusion interpretacija.", cta: "Restorano Meniu" }, lunch: { title: "VERSLO PIETŪS", time: "Darbo dienomis 11:00–14:00" }, bar: { tag: "Gėrimai", title: "KOKTEILIŲ BARAS", text: ( <>

Mūsų kokteilių meniu apjungia japonišką estetiką ir šiuolaikinės miksologijos principus. Gėrimai kuriami naudojant natūralius ingredientus, naminius sirupus ir šviežias sultis.

Sake, yuzu, japoniški likerių atspalviai, vaisių ir prieskonių deriniai kuria meniu, kuriame Rytų skonių kultūra susitinka su vakarietišku požiūriu į kokteilių meną.

), cta: "Žiūrėti Gėrimų Meniu" }, about: { tag: "Mūsų vertybės", text: <>„Nagomi“ – tai harmonija, ramybė ir džiaugsmas dalintis akimirkomis. Šias vertybes perkėlėme į savo erdvę, kurioje japoniškos kaiten valgymo kultūros gyvybingumas susilieja su subtilia europietiško restorano elegancija. Kiekviena detalė – nuo interjero sprendimų iki meniu – apgalvota taip, kad sukurtų išskirtinę, jaukią ir įsimintiną patirtį. }, careers: { tag: "Prisijunkite prie mūsų", title: "KARJEROS GALIMYBĖS", text: <>Ieškote naujo iššūkio? Užpildykite anketą žemiau ir prisijunkite prie nagomi komandos., firstName: "Vardas", lastName: "Pavardė", phone: "Telefono numeris", email: "El. pašto adresas", experience: "Darbo patirtis", experiencePlaceholder: "Trumpai aprašykite savo ankstesnę darbo patirtį", workingHours: "Darbo valandos", fullTime: "Visa darbo diena", partTime: "Ne visa darbo diena", position: "Pageidaujama pozicija", positions: { sushiChef: "Sushi Šefas", kitchenHelp: "Virtuvės pagalbinis darbuotojas", waiter: "Padavėjas", waitress: "Padavėja", bartender: "Barmenas" }, selectPlaceholder: "Pasirinkite", salary: "Pageidaujamas atlyginimas (neprivaloma)", cv: "Prisekite CV", cvHint: "Spauskite, kad įkeltumėte CV (PDF arba Word)", ageConfirm: "Patvirtinu, kad esu vyresnis (-ė) nei 18 metų", submit: "Pateikti anketą", submitting: "Siunčiama...", successTitle: "Ačiū!", successText: "Jūsų anketa sėkmingai gauta. Netrukus su jumis susisieksime.", errorText: "Nepavyko išsiųsti anketos. Bandykite dar kartą arba parašykite mums el. paštu." }, location: { tag: "Apsilankykite", title: "KAIP MUS RASTI", mapTitle: "Nagomi vieta žemėlapyje", hoursLabel: "Darbo Laikas", contactLabel: "Kontaktai", addressLabel: "Adresas", hours: [ { day: "Pirmadienis", time: "Uždaryta" }, { day: "Antradienis - Ketvirtadienis", time: "11:00–22:00" }, { day: "Penktadienis", time: "11:00–23:00" }, { day: "Šeštadienis", time: "12:00–22:00" }, { day: "Sekmadienis", time: "12:00–20:00" } ] }, finalCta: { title: "JŪSŲ STALIUKAS LAUKIA", subtitle: "Prisijunkite prie mūsų nepamirštamai Kaiten suši patirčiai." }, footer: { rights: "Visos teisės saugomos.", privacy: "Privatumo politika", cookies: "Slapukų politika", careers: "Karjera", madeBy: "Developed by:" } }, en: { nav: { experience: "Experience", menu: "Menu", lunch: "Business Lunch", bar: "Bar", about: "About", careers: "Careers", contact: "Contact" }, actions: { reserve: "Reserve a Table", viewMenu: "View Menu", downloadMenu: "Download PDF", orderOnline: "Order Online", getDirections: "Get Directions" }, hero: { title1: "nagomi", title2: "KAITEN SUSHI", title3: "IN VILNIUS", subtitle: "A contemporary Japanese dining experience." }, experience: { tag: <>The Nagomi Experience, title: "Set off on an authentic journey of flavours", subtitle: "Introducing the sushi conveyor (Japanese kaiten sushi) concept", paragraphs: [ "A dynamic, playful and highly refined way of dining created in Japan, where the food comes to you – right on a moving conveyor.", "Every plate has its own colour, and the colour shows its price. Take the dishes you like and enjoy!" ], cta: "Menu" }, kaitenBelt: { title: "KAITEN RHYTHM", subtitle: "A CONTINUOUS STREAM OF CRAFTSMANSHIP RIGHT BEFORE YOUR EYES." }, menuPreview: { tag: "Culinary", title: "CRAFTED WITH LOVE", text: "We cook with love for food and respect for Japanese culinary traditions, subtly pairing them with contemporary flavours and unexpected combinations. In our kitchen, Japanese inspiration meets creative fusion interpretation.", cta: "Restaurant Menu" }, lunch: { title: "BUSINESS LUNCH", time: "Weekdays 11:00–14:00" }, bar: { tag: "Drinks", title: "THE COCKTAIL BAR", text: ( <>

Our cocktail menu blends Japanese aesthetics with modern mixology principles. Drinks are crafted using natural ingredients, house-made syrups, and fresh juices.

Sake, yuzu, Japanese liqueur nuances, and combinations of fruit and spice create a menu where Eastern flavour culture meets a Western approach to the cocktail craft.

), cta: "View Drinks Menu" }, about: { tag: "Our Values", text: <>“Nagomi” means harmony, calm and the joy of sharing moments. We brought these values into our space, where the vibrancy of Japanese kaiten dining culture blends with the subtle elegance of a European restaurant. Every detail – from the interior design to the menu – is considered to create an exceptional, cosy and memorable experience. }, careers: { tag: "Join Our Team", title: "CAREER OPPORTUNITIES", text: <>Looking for a new challenge? Fill out the form below to apply and join the nagomi team., firstName: "First Name", lastName: "Last Name", phone: "Phone Number", email: "Email Address", experience: "Work Experience", experiencePlaceholder: "Briefly describe your previous work experience", workingHours: "Working Hours", fullTime: "Full-time", partTime: "Part-time", position: "Desired Position", positions: { sushiChef: "Sushi Chef", kitchenHelp: "Kitchen Help", waiter: "Waiter", waitress: "Waitress", bartender: "Bartender" }, selectPlaceholder: "Select", salary: "Desired Salary (optional)", cv: "Attach your CV", cvHint: "Click to upload your CV (PDF or Word)", ageConfirm: "I confirm that I am over 18 years old", submit: "Submit Application", submitting: "Sending...", successTitle: "Thank you!", successText: "Your application has been received. We'll be in touch with you soon.", errorText: "We couldn't send your application. Please try again or email us directly." }, location: { tag: "Visit Us", title: "FIND US", mapTitle: "Nagomi location on the map", hoursLabel: "Opening Hours", contactLabel: "Contact", addressLabel: "Address", hours: [ { day: "Monday", time: "Closed" }, { day: "Tuesday - Thursday", time: "11:00–22:00" }, { day: "Friday", time: "11:00–23:00" }, { day: "Saturday", time: "12:00–22:00" }, { day: "Sunday", time: "12:00–20:00" } ] }, finalCta: { title: "YOUR TABLE IS WAITING", subtitle: "Join us for an unforgettable Kaiten sushi experience." }, footer: { rights: "All rights reserved.", privacy: "Privacy Policy", cookies: "Cookie Policy", careers: "Careers", madeBy: "Developed by:" } } }; const useIntersectionObserver = (options = {}) => { const [isIntersecting, setIsIntersecting] = useState(false); const ref = useRef(null); useEffect(() => { const observer = new IntersectionObserver(([entry]) => { if (entry.isIntersecting) { setIsIntersecting(true); if (ref.current) observer.unobserve(ref.current); } }, { threshold: 0.1, ...options }); if (ref.current) observer.observe(ref.current); return () => observer.disconnect(); }, [options]); return [ref, isIntersecting]; }; const FadeInSection = ({ children, className = "", delay = 0 }) => { const [ref, isVisible] = useIntersectionObserver(); return (
{children}
); }; const Button = ({ children, variant = 'primary', href, className = "", onClick, external }) => { const baseStyle = "inline-flex items-center justify-center px-8 py-3 text-sm tracking-widest uppercase transition-all duration-300 focus:outline-none rounded-full font-medium cursor-pointer"; const variants = { primary: "bg-[#C5B078] text-white hover:bg-[#b5a16c] shadow-md hover:shadow-lg", secondary: "bg-transparent text-[#1A1A1A] border border-[#C5B078] hover:bg-[#C5B078] hover:text-white", light: "bg-transparent text-[#F8F5EE] border border-[#F8F5EE] hover:bg-[#F8F5EE] hover:text-[#1A1A1A]", outline: "bg-transparent text-[#1A1A1A] border border-[#1A1A1A] hover:bg-[#1A1A1A] hover:text-[#F8F5EE]" }; if (href) { return ( {children} ); } return ( ); }; const SectionHeader = ({ tag, title, light = false }) => (
{tag && ( {tag} )} {title && (

{title}

)}
); const MenuModal = ({ isOpen, onClose, initialTab = 'food', t, lang }) => { const [activeTab, setActiveTab] = useState(initialTab); const activePdf = MENU_PDF_PATHS[activeTab][lang]; useEffect(() => { if (isOpen) { setActiveTab(initialTab); document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'unset'; } return () => { document.body.style.overflow = 'unset'; }; }, [isOpen, initialTab]); if (!isOpen) return null; return (

{lang === 'lt' ? 'MENIU' : 'MENU'}