Files

725 lines
45 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Ordenax landing — EN/AR i18n, scroll animations, mobile nav and forms. */
const STRINGS = {
en: {
// Nav
"nav.shoppers": "Shoppers",
"nav.stores": "Stores",
"nav.wholesale": "Wholesale",
"nav.contact": "Contact",
"nav.cta": "Get started",
"common.learnMore": "Learn more",
"common.seeHow": "See how it works",
"common.seePricing": "See pricing",
// Footer
"footer.tag": "Marketplace · POS · Wholesale — bilingual by construction.",
"footer.product": "Product",
"footer.company": "Company",
"footer.privacy": "Privacy",
"footer.terms": "Terms",
"footer.legal": "© 2026 Ordenax. Made in Saudi Arabia.",
// Home
"home.hero.eyebrow": "Saudi grocery platform",
"home.hero.title": "Groceries from your local stores, delivered.",
"home.hero.lede": "Shop, sell, and restock on one platform — in Arabic and English, online or offline.",
"home.hero.cta1": "Start shopping",
"home.hero.cta2": "Run your store",
"home.hero.badge1": "Bilingual EN / AR",
"home.hero.badge2": "Works without internet",
"home.hero.badge3": "SAR · VAT included",
"home.pillars.eyebrow": "One platform, three wins",
"home.pillars.title": "Built for every side of grocery",
"home.pillars.m.title": "Shop local",
"home.pillars.m.body": "Fresh groceries from nearby stores, same-day delivery, and stock you can actually trust.",
"home.pillars.p.title": "Sell smarter",
"home.pillars.p.body": "One simple POS for counter sales, app orders, and uninterrupted selling — even when the internet drops.",
"home.pillars.w.title": "Restock wholesale",
"home.pillars.w.body": "Refill shelves straight from suppliers with clear invoices, real-time catalogs, and no inventory traps.",
"home.how.eyebrow": "How it works",
"home.how.title": "From shelf to doorstep in three steps",
"home.how.s1.title": "Order",
"home.how.s1.body": "A shopper picks products from a nearby store — in English or Arabic.",
"home.how.s2.title": "Prepare",
"home.how.s2.body": "The store receives, packs and confirms the order on the Ordenax system.",
"home.how.s3.title": "Deliver",
"home.how.s3.body": "A delivery partner drops it at the door. The store keeps the payment directly.",
"home.stats.s1": "partner stores",
"home.stats.s2": "monthly orders",
"home.stats.s3": "average delivery",
"home.stats.s3suffix": " min",
"home.stats.s4": "languages",
"home.testimonials.eyebrow": "What partners say",
"home.testimonials.title": "Loved by stores. Trusted by shoppers.",
"home.testimonials.t1.body": "\"We doubled our weekly orders within two months. The system is simple and our customers love ordering in Arabic.\"",
"home.testimonials.t1.name": "Abdullah, Al-Salam Market",
"home.testimonials.t2.body": "\"I can shop from the same grocer I visit every week, but now it comes to my door. Same quality, less hassle.\"",
"home.testimonials.t2.name": "Noura, Riyadh",
"home.testimonials.t3.body": "\"Restocking used to take three phone calls. Now we order once and the invoice is ready before delivery.\"",
"home.testimonials.t3.name": "Fahad, Green Cart",
"home.cta.title": "Ready to shop, sell, or supply?",
"home.cta.lede": "Join the grocery platform built for the Kingdom.",
"home.cta.button": "Request a demo",
// Home — deeper content
"home.why.eyebrow": "Why Ordenax",
"home.why.title": "Grocery made simple for everyone.",
"home.why.lede": "We built Ordenax around one idea: your neighborhood store should be as easy to reach as a global app — and just as reliable.",
"home.shoppers.eyebrow": "For shoppers",
"home.shoppers.title": "Your weekly shop, done in minutes.",
"home.shoppers.lede": "No more crowded aisles, sold-out shelves, or wondering when your order will arrive.",
"home.shoppers.b1.title": "Shop stores you already trust",
"home.shoppers.b1.body": "Your favorite neighborhood grocer, bakery, and produce stand — all in one place.",
"home.shoppers.b2.title": "Get it fast",
"home.shoppers.b2.body": "Same-day delivery in as little as 25 minutes, because fresh shouldn't mean waiting.",
"home.shoppers.b3.title": "Never guess stock again",
"home.shoppers.b3.body": "If it's on the app, it's on the shelf. No substitutions you didn't ask for.",
"home.shoppers.b4.title": "Reorder in one tap",
"home.shoppers.b4.body": "Save your weekly basket and repeat it whenever life gets busy.",
"home.owners.eyebrow": "For store owners",
"home.owners.title": "Run your store, not your paperwork.",
"home.owners.lede": "Everything you need to sell more, stress less, and keep every riyal in your account.",
"home.owners.b1.title": "Keep every sale",
"home.owners.b1.body": "No commission. No withheld funds. Customer payments go straight to you.",
"home.owners.b2.title": "One screen, every channel",
"home.owners.b2.body": "Counter sales, app orders, and wholesale restocking — all flowing into one simple system.",
"home.owners.b3.title": "Sell even when offline",
"home.owners.b3.body": "The internet drops. Your sales don't. Everything syncs automatically once you're back online.",
"home.owners.b4.title": "Grow without the guesswork",
"home.owners.b4.body": "Real-time inventory, clear reports, and a direct line to nearby shoppers who want what you sell.",
// Shoppers
"shoppers.hero.eyebrow": "For shoppers",
"shoppers.hero.title": "Your neighborhood store, now in your pocket.",
"shoppers.hero.lede": "Order fresh groceries from trusted local stores and get same-day delivery — in Arabic or English.",
"shoppers.hero.cta": "Download the app",
"shoppers.benefits.eyebrow": "Why shop on Ordenax",
"shoppers.benefits.title": "Fresh, fast and familiar",
"shoppers.benefits.b1.title": "Same-day delivery",
"shoppers.benefits.b1.body": "Get your groceries in as little as 25 minutes from stores you already know.",
"shoppers.benefits.b2.title": "Real stock",
"shoppers.benefits.b2.body": "If it's on the app, it's on the shelf — no more canceled items after checkout.",
"shoppers.benefits.b3.title": "Bilingual by design",
"shoppers.benefits.b3.body": "Switch between Arabic and English anytime. Product names, search and checkout follow you.",
"shoppers.benefits.b4.title": "Support local",
"shoppers.benefits.b4.body": "Every order goes directly to a store in your community — your money stays in the neighborhood.",
"shoppers.benefits.b5.title": "Easy reorder",
"shoppers.benefits.b5.body": "Repeat your weekly list in one tap. Save favorites and scheduled baskets for busy days.",
"shoppers.benefits.b6.title": "Pay with confidence",
"shoppers.benefits.b6.body": "Choose cash on delivery or trusted local payment options. The store handles your payment directly.",
"shoppers.categories.eyebrow": "Everything you need",
"shoppers.categories.title": "From pantry to produce",
"shoppers.categories.lede": "Browse thousands of products across the categories your family uses every day.",
"shoppers.categories.l1": "Fresh fruit and vegetables",
"shoppers.categories.l2": "Dairy, eggs and chilled goods",
"shoppers.categories.l3": "Rice, oil, spices and staples",
"shoppers.categories.l4": "Household and personal care",
"shoppers.categories.l5": "Beverages, snacks and bakery",
"shoppers.faq.title": "Common questions",
"shoppers.faq.q1": "Who delivers my order?",
"shoppers.faq.a1": "Your chosen store prepares the order and a local delivery partner brings it to you. You can track the status in the app.",
"shoppers.faq.q2": "Can I pay with cash?",
"shoppers.faq.a2": "Yes. The store collects your payment directly — cash on delivery or local digital payments, whichever you prefer.",
"shoppers.faq.q3": "What if an item is out of stock?",
"shoppers.faq.a3": "Stores update availability in real time. If something changes, they will contact you to suggest a replacement or refund.",
"shoppers.cta.title": "Your first order is waiting",
"shoppers.cta.lede": "Download the app and shop the stores you already trust.",
"shoppers.cta.button": "Get the app",
// Stores
"stores.hero.eyebrow": "For store owners",
"stores.hero.title": "Turn your counter into a modern grocery business.",
"stores.hero.lede": "Get more orders, simplify daily work, and keep every payment in your own hands.",
"stores.hero.cta": "Request a demo",
"stores.benefits.eyebrow": "Why stores choose Ordenax",
"stores.benefits.title": "Everything you need to grow",
"stores.benefits.b1.title": "More orders",
"stores.benefits.b1.body": "Reach nearby shoppers through the app and turn your store into a local online brand.",
"stores.benefits.b2.title": "Your money, your account",
"stores.benefits.b2.body": "You collect customer payments directly. We never hold your funds or take a slice of every sale.",
"stores.benefits.b3.title": "One simple screen",
"stores.benefits.b3.body": "Counter sales and app orders flow into one place — no switching between apps and notebooks.",
"stores.benefits.b4.title": "Works without internet",
"stores.benefits.b4.body": "Keep ringing sales even when the connection drops. Everything syncs automatically once you're back online.",
"stores.benefits.b5.title": "Bilingual for your team",
"stores.benefits.b5.body": "Your staff can use Arabic or English — labels, receipts, and reports switch instantly.",
"stores.benefits.b6.title": "Restock in minutes",
"stores.benefits.b6.body": "Order wholesale supplies straight from the app, with clear invoices and predictable delivery.",
"stores.pricing.eyebrow": "Pricing",
"stores.pricing.title": "Simple subscriptions, no hidden cuts",
"stores.pricing.lede": "No marketplace commission. Just pick the POS plan that fits your store.",
"stores.pricing.period": "/month",
"stores.pricing.badge": "Most popular",
"stores.pricing.p1.title": "Starter",
"stores.pricing.p1.f1": "1 store location",
"stores.pricing.p1.f2": "Counter POS",
"stores.pricing.p1.f3": "Basic reports",
"stores.pricing.p1.f4": "Email support",
"stores.pricing.p2.title": "Growth",
"stores.pricing.p2.f1": "Up to 3 staff devices",
"stores.pricing.p2.f2": "Counter + app orders",
"stores.pricing.p2.f3": "Live inventory",
"stores.pricing.p2.f4": "Priority support",
"stores.pricing.p3.title": "Enterprise",
"stores.pricing.p3.f1": "Multiple branches",
"stores.pricing.p3.f2": "Advanced analytics",
"stores.pricing.p3.f3": "Wholesale integrations",
"stores.pricing.p3.f4": "Dedicated account manager",
"stores.pricing.cta": "Choose plan",
"stores.testimonials.eyebrow": "Store stories",
"stores.testimonials.title": "Built for Saudi stores",
"stores.testimonials.t1.body": "\"We used to write every order by hand. Now we manage counter, app and wholesale orders in one place.\"",
"stores.testimonials.t1.name": "Khalid, Al-Andalus Market",
"stores.testimonials.t2.body": "\"The bilingual interface made training our staff effortless. Sales kept flowing even during network issues.\"",
"stores.testimonials.t2.name": "Sara, Fresh Corner",
"stores.testimonials.t3.body": "\"Our customers pay us directly, and the subscription is predictable. No surprises at the end of the month.\"",
"stores.testimonials.t3.name": "Omar, Daily Mart",
"stores.cta.title": "Ready to upgrade your store?",
"stores.cta.lede": "Book a 15-minute demo and see how Ordenax fits your counter.",
"stores.cta.button": "Book a demo",
// Wholesale
"wholesale.hero.eyebrow": "For suppliers and distributors",
"wholesale.hero.title": "Supply the stores that feed the Kingdom.",
"wholesale.hero.lede": "A digital wholesale channel that connects your products to neighborhood stores across Saudi Arabia.",
"wholesale.hero.cta": "Become a supplier",
"wholesale.hero.cta2": "For stores",
"wholesale.suppliers.eyebrow": "Why suppliers partner with us",
"wholesale.suppliers.title": "Reach more stores with less overhead",
"wholesale.suppliers.b1.title": "Ready store network",
"wholesale.suppliers.b1.body": "Access hundreds of active grocery stores already ordering through Ordenax.",
"wholesale.suppliers.b2.title": "Demand insights",
"wholesale.suppliers.b2.body": "See what stores are buying, when they restock, and which products move fastest.",
"wholesale.suppliers.b3.title": "Reliable logistics",
"wholesale.suppliers.b3.body": "Coordinate deliveries through your own fleet or our trusted logistics partners.",
"wholesale.suppliers.b4.title": "Clear invoices",
"wholesale.suppliers.b4.body": "Every order generates an invoice with correct VAT breakdown and payment status.",
"wholesale.suppliers.b5.title": "Digital catalog",
"wholesale.suppliers.b5.body": "Publish SKUs, photos and prices once. Stores see updates in real time.",
"wholesale.suppliers.b6.title": "Local support",
"wholesale.suppliers.b6.body": "Work with a Saudi-based team that understands retail, seasons and supply cycles.",
"wholesale.stores.eyebrow": "For stores",
"wholesale.stores.title": "Restock without the runaround",
"wholesale.stores.lede": "Find what you need, compare suppliers, and keep your shelves full — all from one screen.",
"wholesale.stores.f1": "Wide catalog of groceries, household and chilled goods",
"wholesale.stores.f2": "Competitive wholesale prices updated daily",
"wholesale.stores.f3": "Predictable delivery windows you can plan around",
"wholesale.stores.f4": "One invoice per order with clear VAT",
"wholesale.stores.cta": "See store plans",
"wholesale.stores.panel.eyebrow": "How wholesale works",
"wholesale.stores.panel.l1": "Browse catalog",
"wholesale.stores.panel.v1": "1",
"wholesale.stores.panel.l2": "Place order",
"wholesale.stores.panel.v2": "2",
"wholesale.stores.panel.l3": "Receive delivery",
"wholesale.stores.panel.v3": "3",
"wholesale.stores.panel.l4": "Pay invoice",
"wholesale.stores.panel.v4": "4",
"wholesale.faq.title": "Wholesale questions",
"wholesale.faq.q1": "Who can become a supplier?",
"wholesale.faq.a1": "Licensed distributors, manufacturers and importers of food, beverages, household or personal-care products in Saudi Arabia.",
"wholesale.faq.q2": "How do stores pay?",
"wholesale.faq.a2": "Stores pay against the supplier's invoice through agreed payment terms — bank transfer, credit or cash on delivery.",
"wholesale.faq.q3": "Do I need to list my whole catalog?",
"wholesale.faq.a3": "No. Start with your best-moving items and expand as you see demand from the network.",
"wholesale.cta.title": "Grow your wholesale reach",
"wholesale.cta.lede": "Talk to our partnerships team and see how Ordenax fits your distribution business.",
"wholesale.cta.button": "Talk to sales",
// Contact
"contact.hero.eyebrow": "Contact",
"contact.hero.title": "Let's talk grocery.",
"contact.hero.lede": "Request a demo, become a partner store, or join our supplier network.",
"contact.form.eyebrow": "Get in touch",
"contact.form.title": "Send us a message",
"contact.form.lede": "Fill in the form and our team will reply within one business day.",
"contact.form.nameLabel": "Name",
"contact.form.namePlaceholder": "Your name",
"contact.form.emailLabel": "Email",
"contact.form.emailPlaceholder": "you@example.com",
"contact.form.phoneLabel": "Phone",
"contact.form.phonePlaceholder": "+966 50 000 0000",
"contact.form.interestLabel": "I'm interested in",
"contact.form.interest.default": "Select an option",
"contact.form.interest.store": "Running my store on Ordenax",
"contact.form.interest.shopper": "Shopping as a consumer",
"contact.form.interest.supplier": "Supplying products wholesale",
"contact.form.interest.other": "Something else",
"contact.form.messageLabel": "Message",
"contact.form.messagePlaceholder": "Tell us about your business",
"contact.form.submit": "Send message",
"contact.form.success": "Thank you — we'll be in touch soon.",
"contact.form.invalidEmail": "Please enter a valid email address.",
"contact.form.required": "Please fill in all required fields.",
"contact.info.office.title": "Headquarters",
"contact.info.office.body": "Riyadh, Kingdom of Saudi Arabia",
"contact.info.email.title": "Email",
"contact.info.phone.title": "Phone",
"contact.info.hours.title": "Business hours",
"contact.info.hours.body": "Sunday to Thursday, 9:00 AM – 6:00 PM KSA",
"contact.cta.title": "Prefer to talk now?",
"contact.cta.lede": "Call us during business hours or request a callback.",
"contact.cta.button": "Call +966 9200 123 45",
},
ar: {
"nav.shoppers": "المتسوّقون",
"nav.stores": "المتاجر",
"nav.wholesale": "الجملة",
"nav.contact": "تواصل",
"nav.cta": "ابدأ الآن",
"common.learnMore": "اعرف المزيد",
"common.seeHow": "كيف تعمل",
"common.seePricing": "الأسعار",
"footer.tag": "السوق · نقاط البيع · الجملة — ثنائية اللغة من الأساس.",
"footer.product": "المنتج",
"footer.company": "الشركة",
"footer.privacy": "الخصوصية",
"footer.terms": "الشروط",
"footer.legal": "© 2026 أورديناكس. صُنع في المملكة العربية السعودية.",
"home.hero.eyebrow": "منصة بقالة سعودية",
"home.hero.title": "بقالتك من متاجر حيّك، حتى باب البيت.",
"home.hero.lede": "تسوّق، بيع، ووردّد المخزون على منصة واحدة — بالعربية والإنجليزية، متصل أو غير متصل.",
"home.hero.cta1": "ابدأ التسوّق",
"home.hero.cta2": "أدِر متجرك",
"home.hero.badge1": "ثنائية اللغة EN / AR",
"home.hero.badge2": "تعمل دون اتصال",
"home.hero.badge3": "ريال سعودي · الضريبة مشمولة",
"home.trust.label": "ثقة متاجر الأحياء في",
"home.pillars.eyebrow": "منصة واحدة، ثلاثة مكاسب",
"home.pillars.title": "مبنية لكل جانب من البقالة",
"home.pillars.m.title": "تسوّق محليًا",
"home.pillars.m.body": "بقالة طازجة من متاجر قريبة، توصيل في نفس اليوم، ومخزون يمكنك الوثوق به فعلًا.",
"home.pillars.p.title": "بيع بذكاء",
"home.pillars.p.body": "نقطة بيع واحدة تجمع مبيعات الكاشير والطلبات الإلكترونية — تستمر حتى عند انقطاع الإنترنت.",
"home.pillars.w.title": "أعِد التخزين بالجملة",
"home.pillars.w.body": "أعِد ملء الرفوف مباشرة من المورّدين، بفواتير واضحة، كتالوجات لحظية، وبدون تعقيدات المخزون.",
"home.how.eyebrow": "كيف تعمل",
"home.how.title": "من الرف إلى باب البيت في ثلاث خطوات",
"home.how.s1.title": "اطلب",
"home.how.s1.body": "يختار المتسوّق منتجات من متجر قريب — بالعربية أو الإنجليزية.",
"home.how.s2.title": "جهّز",
"home.how.s2.body": "يتلقّى المتجر الطلب ويغلّفه ويؤكّده عبر نظام أورديناكس.",
"home.how.s3.title": "وصّل",
"home.how.s3.body": "يوصل شريك التوصيل الطلب إلى الباب، ويحتفظ المتجر بالمدفوعات مباشرة.",
"home.stats.s1": "متجر شريك",
"home.stats.s2": "طلب شهريًا",
"home.stats.s3": "متوسط التوصيل",
"home.stats.s3suffix": " دقيقة",
"home.stats.s4": "لغات",
"home.testimonials.eyebrow": "ماذا يقول الشركاء",
"home.testimonials.title": "يحبّه المتاجر. ويثق به المتسوّقون.",
"home.testimonials.t1.body": "\"ضاعفنا طلباتنا الأسبوعية في شهرين. النظام بسيط وعملاؤنا يحبّون الطلب بالعربية.\"",
"home.testimonials.t1.name": "عبدالله، سوق السلام",
"home.testimonials.t2.body": "\"أستطيع التسوّق من نفس البقال الذي أزوره كل أسبوع، لكن الآن يصل إلى باب بيتي. نفس الجودة، أقل جهد.\"",
"home.testimonials.t2.name": "نورة، الرياض",
"home.testimonials.t3.body": "\"كان إعادة التخزين يتطلّب ثلاث مكالمات هاتفية. الآن نطلب مرة واحدة والفاتورة جاهزة قبل التوصيل.\"",
"home.testimonials.t3.name": "فهد، العربة الخضراء",
"home.cta.title": "جاهز للتسوّق، البيع، أو التوريد؟",
"home.cta.lede": "انضم إلى منصة البقالة المصممة للمملكة.",
"home.cta.button": "اطلب عرضًا",
// Home — deeper content
"home.why.eyebrow": "لمَ أورديناكس",
"home.why.title": "البقالة أصبحت سهلة للجميع.",
"home.why.lede": "بنينا أورديناكس على فكرة واحدة: متجر حيك يجب أن يكون سهل الوصول كأي تطبيق عالمي — وموثوق مثله.",
"home.shoppers.eyebrow": "للمتسوّقين",
"home.shoppers.title": "تسوّقك الأسبوعي، ينتهي في دقائق.",
"home.shoppers.lede": "لا ممرات مزدحمة، لا رفوف فارغة، ولا تساؤل عن موعد وصول طلبك.",
"home.shoppers.b1.title": "تسوّق من متاجر تثق بها",
"home.shoppers.b1.body": "بقالتك المفضلة، المخبوزات، ومحل الخضروات — كلها في مكان واحد.",
"home.shoppers.b2.title": "احصل عليها بسرعة",
"home.shoppers.b2.body": "توصيل في نفس اليوم خلال 25 دقيقة، لأن الطازج لا يجب أن يعني الانتظار.",
"home.shoppers.b3.title": "لا تخمّن المخزون بعد الآن",
"home.shoppers.b3.body": "إذا كان المنتج في التطبيق فهو على الرف. لا بدائل لم تطلبها.",
"home.shoppers.b4.title": "أعِد الطلب بنقرة واحدة",
"home.shoppers.b4.body": "احفظ سلتك الأسبوعية وكرّرها كلما ازدحم الوقت.",
"home.owners.eyebrow": "لأصحاب المتاجر",
"home.owners.title": "أدِر متجرك، لا أوراقك.",
"home.owners.lede": "كل ما تحتاجه لبيع المزيد، والتوتر الأقل، والحفاظ على كل ريال في حسابك.",
"home.owners.b1.title": "احتفظ بكل بيعة",
"home.owners.b1.body": "لا عمولة. لا أموال محجوزة. مدفوعات العملاء تصل إليك مباشرة.",
"home.owners.b2.title": "شاشة واحدة، كل القنوات",
"home.owners.b2.body": "مبيعات الكاشير، طلبات التطبيق، وإعادة التخزين بالجملة — كلها في نظام واحد بسيط.",
"home.owners.b3.title": "بيع حتى دون اتصال",
"home.owners.b3.body": "الإنترنت ينقطع. المبيعات لا. كل شيء يتزامن تلقائيًا بمجرد عودة الاتصال.",
"home.owners.b4.title": "نمُ دون تخمين",
"home.owners.b4.body": "مخزون لحظي، تقارير واضحة، وخط مباشر مع المتسوّقين القريبين الذين يريدون ما تبيعه.",
"shoppers.hero.eyebrow": "للمتسوّقين",
"shoppers.hero.title": "متجر حيك، الآن في جيبك.",
"shoppers.hero.lede": "اطلب البقالة الطازجة من متاجر محلية موثوقة واحصل على توصيل في نفس اليوم — بالعربية أو الإنجليزية.",
"shoppers.hero.cta": "حمّل التطبيق",
"shoppers.benefits.eyebrow": "لمَ التسوّق عبر أورديناكس",
"shoppers.benefits.title": "طازج، سريع ومألوف",
"shoppers.benefits.b1.title": "توصيل في نفس اليوم",
"shoppers.benefits.b1.body": "احصل على بقالتك في 25 دقيقة فقط من المتاجر التي تعرفها.",
"shoppers.benefits.b2.title": "مخزون حقيقي",
"shoppers.benefits.b2.body": "إذا كان المنتج في التطبيق فهو على الرف — لا مزيد من إلغاء العناصر بعد الدفع.",
"shoppers.benefits.b3.title": "ثنائي اللغة من الأساس",
"shoppers.benefits.b3.body": "بدّل بين العربية والإنجليزية في أي وقت. أسماء المنتجات والبحث والدفع يتبعانك.",
"shoppers.benefits.b4.title": "ادعم المحلي",
"shoppers.benefits.b4.body": "كل طلب يذهب مباشرة إلى متجر في مجتمعك — مالك يبقى في الحي.",
"shoppers.benefits.b5.title": "إعادة الطلب بسهولة",
"shoppers.benefits.b5.body": "كرّر قائمتك الأسبوعية بنقرة واحدة. احفظ المفضلات والسلال المجدولة للأيام المزدحمة.",
"shoppers.benefits.b6.title": "ادفع بثقة",
"shoppers.benefits.b6.body": "اختر الدفع عند الاستلام أو خيارات دفع محلية موثوقة. المتجر يتولّى الدفع مباشرة.",
"shoppers.categories.eyebrow": "كل ما تحتاجه",
"shoppers.categories.title": "من المخزن إلى الخضروات",
"shoppers.categories.lede": "تصفّح آلاف المنتجات في الفئات التي تستخدمها عائلتك يوميًا.",
"shoppers.categories.l1": "فاكهة وخضروات طازجة",
"shoppers.categories.l2": "ألبان، بيض ومنتجات مبردة",
"shoppers.categories.l3": "أرز، زيت، بهارات ومواد أساسية",
"shoppers.categories.l4": "منتجات المنزل والعناية الشخصية",
"shoppers.categories.l5": "مشروبات، خفائف ومخبوزات",
"shoppers.faq.title": "أسئلة شائعة",
"shoppers.faq.q1": "من يوصّل طلبي؟",
"shoppers.faq.a1": "المتجر الذي اخترته يجهّز الطلب وشريك توصيل محلي يأتيك به. يمكنك تتبّع الحالة في التطبيق.",
"shoppers.faq.q2": "هل يمكن الدفع نقدًا؟",
"shoppers.faq.a2": "نعم. يحصّل المتجر المدفوعات مباشرة — الدفع عند الاستلام أو الدفع الرقمي المحلي، حسب رغبتك.",
"shoppers.faq.q3": "ماذا إذا نفذ المنتج من المخزون؟",
"shoppers.faq.a3": "تُحدّث المتاجر التوفر لحظيًا. إذا تغيّر شيء، سيتواصلون معك لاقتراح بديل أو استرداد.",
"shoppers.cta.title": "طلبك الأول بانتظارك",
"shoppers.cta.lede": "حمّل التطبيق وتسوّق من المتاجر التي تثق بها.",
"shoppers.cta.button": "احصل على التطبيق",
"stores.hero.eyebrow": "لأصحاب المتاجر",
"stores.hero.title": "حوّل كاشيرك إلى أعمال بقالة عصرية.",
"stores.hero.lede": "احصل على مزيد من الطلبات، بسّط العمل اليومي، وابقَ المدفوعات في يدك.",
"stores.hero.cta": "اطلب عرضًا",
"stores.benefits.eyebrow": "لمَ تختار المتاجر أورديناكس",
"stores.benefits.title": "كل ما تحتاجه للنمو",
"stores.benefits.b1.title": "مزيد من الطلبات",
"stores.benefits.b1.body": "وصل إلى المتسوّقين القريبين عبر التطبيق وحوّل متجرك إلى علامة محلية إلكترونية.",
"stores.benefits.b2.title": "مالك، حسابك",
"stores.benefits.b2.body": "تحصّل مدفوعات العملاء مباشرة. لا نحتفظ بأموالك ولا نأخذ نسبة من كل بيعة.",
"stores.benefits.b3.title": "شاشة واحدة بسيطة",
"stores.benefits.b3.body": "تتدفق مبيعات الكاشير وطلبات التطبيق في مكان واحد — لا حاجة للتنقل بين التطبيقات والدفاتر.",
"stores.benefits.b4.title": "تعمل دون اتصال",
"stores.benefits.b4.body": "واصل البيع حتى عند انقطاع الاتصال. كل شيء يتزامن تلقائيًا بمجرد عودة الاتصال.",
"stores.benefits.b5.title": "ثنائية اللغة لفريقك",
"stores.benefits.b5.body": "يمكن لموظفيك استخدام العربية أو الإنجليزية — الملصقات والفواتير والتقارير تتبدّل فورًا.",
"stores.benefits.b6.title": "أعِد التخزين في دقائق",
"stores.benefits.b6.body": "اطلب مستلزمات الجملة مباشرة من التطبيق، بفواتير واضحة وتوصيل متوقع.",
"stores.pricing.eyebrow": "الأسعار",
"stores.pricing.title": "اشتراكات بسيطة، بدون عمولات خفية",
"stores.pricing.lede": "لا توجد عمولة سوق. اختر خطة نقاط البيع التي تناسب متجرك.",
"stores.pricing.period": "/شهر",
"stores.pricing.badge": "الأكثر شيوعًا",
"stores.pricing.p1.title": "البداية",
"stores.pricing.p1.f1": "موقع متجر واحد",
"stores.pricing.p1.f2": "نقطة بيع للكاشير",
"stores.pricing.p1.f3": "تقارير أساسية",
"stores.pricing.p1.f4": "دعم عبر البريد",
"stores.pricing.p2.title": "النمو",
"stores.pricing.p2.f1": "حتى 3 أجهزة موظفين",
"stores.pricing.p2.f2": "كاشير + طلبات التطبيق",
"stores.pricing.p2.f3": "مخزون مباشر",
"stores.pricing.p2.f4": "دعم أولوي",
"stores.pricing.p3.title": "المؤسسات",
"stores.pricing.p3.f1": "فروع متعددة",
"stores.pricing.p3.f2": "تحليلات متقدمة",
"stores.pricing.p3.f3": "تكاملات الجملة",
"stores.pricing.p3.f4": "مدير حساب مخصص",
"stores.pricing.cta": "اختر الخطة",
"stores.testimonials.eyebrow": "قصص المتاجر",
"stores.testimonials.title": "مبنية للمتاجر السعودية",
"stores.testimonials.t1.body": "\"كنّا نكتب كل طلب يدويًا. الآن ندير طلبات الكاشير والتطبيق والجملة في مكان واحد.\"",
"stores.testimonials.t1.name": "خالد، سوق الأندلس",
"stores.testimonials.t2.body": "\"الواجهة الثنائية اللغة جعلت تدريب موظفينا سهلًا. المبيعات استمرت حتى أثناء مشاكل الشبكة.\"",
"stores.testimonials.t2.name": "سارة، فريش كورنر",
"stores.testimonials.t3.body": "\"عملاؤنا يدفعون لنا مباشرة، والاشتراك متوقع. لا مفاجآت في نهاية الشهر.\"",
"stores.testimonials.t3.name": "عمر، دايلي مارت",
"stores.cta.title": "جاهز لترقية متجرك؟",
"stores.cta.lede": "احجز عرضًا مدته 15 دقيقة وشاهد كيف تناسب أورديناكس كاشيرك.",
"stores.cta.button": "احجز عرضًا",
"wholesale.hero.eyebrow": "للمورّدين والموزعين",
"wholesale.hero.title": "زوّد المتاجر التي تغذّي المملكة.",
"wholesale.hero.lede": "قناة جملة رقمية تربط منتجاتك بمتاجر الأحياء في جميع أنحاء المملكة العربية السعودية.",
"wholesale.hero.cta": "كن مورّدًا",
"wholesale.hero.cta2": "للمتاجر",
"wholesale.suppliers.eyebrow": "لمَ يتعاون المورّدون معنا",
"wholesale.suppliers.title": "وصل إلى مزيد من المتاجر بتكاليف أقل",
"wholesale.suppliers.b1.title": "شبكة متاجر جاهزة",
"wholesale.suppliers.b1.body": "وصول إلى مئات المتاجر النشطة التي تطلب بالفعل عبر أورديناكس.",
"wholesale.suppliers.b2.title": "رؤى الطلب",
"wholesale.suppliers.b2.body": "اعرف ما تشتريه المتاجر، ومتى تعيد التخزين، والمنتجات الأسرع مبيعًا.",
"wholesale.suppliers.b3.title": "خدمات لوجستية موثوقة",
"wholesale.suppliers.b3.body": "نسّق التوصيلات عبر أسطولك الخاص أو شركائنا اللوجستيين الموثوقين.",
"wholesale.suppliers.b4.title": "فواتير واضحة",
"wholesale.suppliers.b4.body": "يولّد كل طلب فاتورة بتوضيح الضريبة وحالة الدفع.",
"wholesale.suppliers.b5.title": "كتالوج رقمي",
"wholesale.suppliers.b5.body": "انشر الأصناف والصور والأسعار مرة واحدة. ترى المتاجر التحديثات لحظيًا.",
"wholesale.suppliers.b6.title": "دعم محلي",
"wholesale.suppliers.b6.body": "اعمل مع فريق سعودي يفهم التجزئة والمواسم ودورات التوريد.",
"wholesale.stores.eyebrow": "للمتاجر",
"wholesale.stores.title": "أعِد التخزين دون عناء",
"wholesale.stores.lede": "اعثر على ما تحتاجه، قارن بين المورّدين، وابقَ رفوفك ممتلئة — كل ذلك من شاشة واحدة.",
"wholesale.stores.f1": "كتالوج واسع من البقالة والمنزل والمنتجات المبردة",
"wholesale.stores.f2": "أسعار جملة تنافسية تُحدّث يوميًا",
"wholesale.stores.f3": "نوافذ توصيل متوقعة يمكنك التخطيط حولها",
"wholesale.stores.f4": "فاتورة واحدة لكل طلب بضريبة واضحة",
"wholesale.stores.cta": "انظر خطط المتاجر",
"wholesale.stores.panel.eyebrow": "كيف تعمل الجملة",
"wholesale.stores.panel.l1": "تصفّح الكتالوج",
"wholesale.stores.panel.v1": "1",
"wholesale.stores.panel.l2": "قدّم الطلب",
"wholesale.stores.panel.v2": "2",
"wholesale.stores.panel.l3": "استلم التوصيل",
"wholesale.stores.panel.v3": "3",
"wholesale.stores.panel.l4": "ادفع الفاتورة",
"wholesale.stores.panel.v4": "4",
"wholesale.faq.title": "أسئلة الجملة",
"wholesale.faq.q1": "من يمكنه أن يصبح مورّدًا؟",
"wholesale.faq.a1": "موزّعون ومصنّعون ومستوردون مرخّصون لمنتجات غذائية أو مشروبات أو منزلية أو عناية شخصية في المملكة العربية السعودية.",
"wholesale.faq.q2": "كيف تدفع المتاجر؟",
"wholesale.faq.a2": "تدفع المتاجر بناءً على فاتورة المورّد وفق شروط دفع متفق عليها — تحويل بنكي أو ائتمان أو دفع عند الاستلام.",
"wholesale.faq.q3": "هل عليّ إدراج كامل كتالوجي؟",
"wholesale.faq.a3": "لا. ابدأ بأكثر منتجاتك مبيعًا ووسّع مع رؤية الطلب من الشبكة.",
"wholesale.cta.title": "وسّع نطاق جملتك",
"wholesale.cta.lede": "تحدث إلى فريق الشراكات وشاهد كيف تناسب أورديناكس أعمال التوزيع لديك.",
"wholesale.cta.button": "تحدث إلى المبيعات",
"contact.hero.eyebrow": "تواصل",
"contact.hero.title": "لنتحدث عن البقالة.",
"contact.hero.lede": "اطلب عرضًا، كن متجرًا شريكًا، أو انضم إلى شبكة مورّدينا.",
"contact.form.eyebrow": "تواصل معنا",
"contact.form.title": "أرسل لنا رسالة",
"contact.form.lede": "املأ النموذج وسيردّ فريقنا خلال يوم عمل واحد.",
"contact.form.nameLabel": "الاسم",
"contact.form.namePlaceholder": "اسمك",
"contact.form.emailLabel": "البريد الإلكتروني",
"contact.form.emailPlaceholder": "you@example.com",
"contact.form.phoneLabel": "الهاتف",
"contact.form.phonePlaceholder": "+966 50 000 0000",
"contact.form.interestLabel": "أنا مهتم بـ",
"contact.form.interest.default": "اختر خيارًا",
"contact.form.interest.store": "تشغيل متجري على أورديناكس",
"contact.form.interest.shopper": "التسوّق كمستهلك",
"contact.form.interest.supplier": "توريد منتجات بالجملة",
"contact.form.interest.other": "شيء آخر",
"contact.form.messageLabel": "الرسالة",
"contact.form.messagePlaceholder": "أخبرنا عن عملك",
"contact.form.submit": "إرسال الرسالة",
"contact.form.success": "شكرًا لك — سنتواصل معك قريبًا.",
"contact.form.invalidEmail": "يرجى إدخال بريد إلكتروني صحيح.",
"contact.form.required": "يرجى ملء جميع الحقول المطلوبة.",
"contact.info.office.title": "المقر الرئيسي",
"contact.info.office.body": "الرياض، المملكة العربية السعودية",
"contact.info.email.title": "البريد الإلكتروني",
"contact.info.phone.title": "الهاتف",
"contact.info.hours.title": "ساعات العمل",
"contact.info.hours.body": "من الأحد إلى الخميس، 9:00 ص – 6:00 م بتوقيت السعودية",
"contact.cta.title": "تفضّل التحدث الآن؟",
"contact.cta.lede": "اتصل بنا خلال ساعات العمل أو اطلب معاودة الاتصال.",
"contact.cta.button": "اتصل +966 9200 123 45",
},
};
const TITLES = {
home: { en: "Ordenax — Groceries from your local stores, delivered", ar: "أورديناكس — بقالتك من متاجر حيّك، حتى باب البيت" },
shoppers: { en: "For shoppers — Ordenax", ar: "للمتسوّقين — أورديناكس" },
stores: { en: "For stores — Ordenax", ar: "للمتاجر — أورديناكس" },
wholesale: { en: "Wholesale supply — Ordenax", ar: "التوريد بالجملة — أورديناكس" },
contact: { en: "Contact — Ordenax", ar: "تواصل — أورديناكس" },
};
const html = document.documentElement;
const body = document.body;
const toggle = document.getElementById("lang-toggle");
const header = document.querySelector(".site-header");
const menuToggle = document.querySelector(".menu-toggle");
const mobileNav = document.getElementById("mobile-nav");
const page = body.dataset.page || "home";
function applyLang(lang) {
const dict = STRINGS[lang];
html.lang = lang;
html.dir = lang === "ar" ? "rtl" : "ltr";
document.title = (TITLES[page] && TITLES[page][lang]) || TITLES.home[lang];
document.querySelectorAll("[data-i18n]").forEach((el) => {
const key = el.getAttribute("data-i18n");
if (dict[key] !== undefined) el.textContent = dict[key];
});
document.querySelectorAll("[data-i18n-placeholder]").forEach((el) => {
const key = el.getAttribute("data-i18n-placeholder");
if (dict[key] !== undefined) el.setAttribute("placeholder", dict[key]);
});
toggle.textContent = lang === "ar" ? "English" : "العربية";
localStorage.setItem("ordenax-lang", lang);
}
let lang = localStorage.getItem("ordenax-lang") || "ar";
applyLang(lang);
function refreshHeroReveal() {
if (!heroTitle || page !== "home") return;
heroTitle.classList.remove("text-reveal");
const text = heroTitle.textContent;
heroTitle.innerHTML = text
.split(/(\s+)/)
.map((word, i) => (word.trim() ? `<span class="word" style="animation-delay: ${0.25 + i * 0.08}s">${word}</span>` : word))
.join("");
heroTitle.classList.add("text-reveal");
}
toggle.addEventListener("click", () => {
body.classList.add("is-switching-lang");
setTimeout(() => {
lang = html.lang === "ar" ? "en" : "ar";
applyLang(lang);
refreshHeroReveal();
body.classList.remove("is-switching-lang");
}, 120);
});
/* Current page nav highlight */
document.querySelectorAll('.nav a[href], .mobile-nav a[href]').forEach((a) => {
const href = a.getAttribute("href").replace('.html', '');
if (href === page || (page === 'home' && href === 'index')) {
a.setAttribute("aria-current", "page");
}
});
/* Mobile nav */
function closeMobileNav() {
mobileNav.classList.remove("is-open");
menuToggle.setAttribute("aria-expanded", "false");
mobileNav.setAttribute("aria-hidden", "true");
body.style.overflow = "";
}
menuToggle.addEventListener("click", () => {
const open = !mobileNav.classList.contains("is-open");
if (open) {
mobileNav.classList.add("is-open");
menuToggle.setAttribute("aria-expanded", "true");
mobileNav.setAttribute("aria-hidden", "false");
body.style.overflow = "hidden";
} else {
closeMobileNav();
}
});
mobileNav.querySelectorAll("a").forEach((a) => a.addEventListener("click", closeMobileNav));
/* Header show/hide on scroll */
let lastScrollY = 0;
let ticking = false;
function onScroll() {
const y = window.scrollY;
if (y > 20) header.classList.add("is-scrolled");
else header.classList.remove("is-scrolled");
if (y > lastScrollY && y > 120) header.classList.add("is-hidden");
else header.classList.remove("is-hidden");
lastScrollY = y;
ticking = false;
}
window.addEventListener("scroll", () => {
if (!ticking) { window.requestAnimationFrame(onScroll); ticking = true; }
}, { passive: true });
/* Hero entrance */
document.querySelectorAll(".hero").forEach((hero) => {
hero.classList.add("is-ready");
});
/* Scroll reveal */
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add("is-visible");
if (entry.target.dataset.animate === "stat") animateCounter(entry.target);
observer.unobserve(entry.target);
}
});
}, { threshold: 0.15, rootMargin: "0px 0px -40px 0px" });
document.querySelectorAll('[data-animate="card"], [data-animate="step"], [data-animate="fade"], [data-animate="stat"]').forEach((el) => {
observer.observe(el);
});
/* Stagger cards within grids */
document.querySelectorAll(".grid").forEach((grid) => {
grid.querySelectorAll(".reveal").forEach((el, i) => {
el.style.transitionDelay = `${i * 80}ms`;
});
});
/* Counter animation */
function animateCounter(stat) {
const numEl = stat.querySelector(".stat-number");
const target = parseInt(numEl.dataset.target, 10);
if (Number.isNaN(target)) return;
let start = 0;
const duration = 1600;
const startTime = performance.now();
function step(now) {
const progress = Math.min((now - startTime) / duration, 1);
const ease = 1 - Math.pow(1 - progress, 3);
numEl.textContent = Math.floor(start + (target - start) * ease).toString();
if (progress < 1) requestAnimationFrame(step);
}
requestAnimationFrame(step);
}
/* Contact form */
const contactForm = document.getElementById("contact-form");
if (contactForm) {
const note = document.getElementById("form-note");
contactForm.addEventListener("submit", (event) => {
event.preventDefault();
const dict = STRINGS[html.lang];
const email = contactForm.email.value.trim();
const name = contactForm.name.value.trim();
const interest = contactForm.interest.value;
if (!name || !email || !interest) {
note.textContent = dict["contact.form.required"];
return;
}
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
note.textContent = dict["contact.form.invalidEmail"];
contactForm.email.focus();
return;
}
note.textContent = dict["contact.form.success"];
contactForm.reset();
});
}
/* Parallax scroll */
const parallaxElements = document.querySelectorAll("[data-parallax]");
if (parallaxElements.length && !window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
let parallaxTicking = false;
function updateParallax() {
const y = window.scrollY;
parallaxElements.forEach((el) => {
const speed = parseFloat(el.dataset.parallax) || 0.1;
const offset = y * speed;
el.style.transform = `translate3d(0, ${offset}px, 0)`;
});
parallaxTicking = false;
}
window.addEventListener("scroll", () => {
if (!parallaxTicking) {
window.requestAnimationFrame(updateParallax);
parallaxTicking = true;
}
}, { passive: true });
}
/* Hero word-by-word reveal on home */
const heroTitle = document.querySelector(".hero-apple .hero-title");
refreshHeroReveal();