"use client";

import { FormEvent, useEffect, useRef, useState } from "react";
import { BriefcaseBusiness, Building2, CalendarDays, Check, ChevronLeft, ChevronRight, Headphones, Handshake, Loader2, MessageCircle, Paperclip, Search, Send, Sparkles, X } from "lucide-react";
import { MarketingFooter, MarketingHeader } from "@/components/marketing-shell";
import "../platform/platform.css";
import "./contact.css";

type Lang = "ar" | "en";
type Intent = "sales" | "demo" | "enterprise" | "support" | "partnership" | "general";
type Settings = { phone:string|null; whatsapp:string|null; businessHours:unknown; office:unknown; social:unknown; privacyUrl:string|null; termsUrl:string|null; calendarConnected:boolean; emailConnected:boolean; demoDurationMinutes:number; maxFiles:number; maxFileBytes:number; allowedFileTypes:string[] };
type Account = { name:string; email:string; workspace?: {id:string;name:string;plan:string}|null } | null;
type Result = { reference:string; requestType:Intent; nextStep?:string };

const intentIcons = { sales: BriefcaseBusiness, demo: CalendarDays, enterprise: Building2, support: Headphones, partnership: Handshake, general: MessageCircle };
const empty = { name:"", email:"", phone:"", country:"SA", company:"", jobTitle:"", companySize:"", industry:"", subject:"", message:"", goals:[] as string[], details:{} as Record<string, unknown>, marketingConsent:false };
function clientUuid(){const bytes=new Uint8Array(16);crypto.getRandomValues(bytes);bytes[6]=(bytes[6]&15)|64;bytes[8]=(bytes[8]&63)|128;const h=[...bytes].map(x=>x.toString(16).padStart(2,"0")).join("");return `${h.slice(0,8)}-${h.slice(8,12)}-${h.slice(12,16)}-${h.slice(16,20)}-${h.slice(20)}`}

export default function ContactPage({ lang }: { lang: Lang }) {
  const ar = lang === "ar";
  const [intent, setIntent] = useState<Intent>("sales");
  const [form, setForm] = useState(empty);
  const [settings, setSettings] = useState<Settings|null>(null);
  const [account, setAccount] = useState<Account>(null);
  const [tickets, setTickets] = useState<Record<string,unknown>[]>([]);
  const [files, setFiles] = useState<File[]>([]);
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState("");
  const [result, setResult] = useState<Result|null>(null);
  const [demoStep, setDemoStep] = useState(1);
  const [faqQuery, setFaqQuery] = useState("");
  const [chatOpen, setChatOpen] = useState(false);
  const [chatStep, setChatStep] = useState(0);
  const [chatData, setChatData] = useState({ industry:"", problem:"", teamSize:"", channel:"" });
  const formRef = useRef<HTMLDivElement>(null);
  const session = useRef("");
  const Copy = ar ? copyAr : copyEn;
  const Arrow = ar ? ChevronLeft : ChevronRight;

  useEffect(() => {
    document.documentElement.lang = lang;
    document.documentElement.dir = ar ? "rtl" : "ltr";
    session.current = sessionStorage.getItem("nexora-contact-session") || clientUuid();
    sessionStorage.setItem("nexora-contact-session", session.current);
    const chosen = new URLSearchParams(location.search).get("intent") as Intent;
    queueMicrotask(()=>{ if (Object.hasOwn(intentIcons, chosen)) setIntent(chosen); });
    void fetch("/api/contact", { cache:"no-store" }).then(async r => { if (!r.ok) throw new Error(); const data=await r.json() as {settings:Settings;account:Account;tickets:Record<string,unknown>[]}; setSettings(data.settings); setAccount(data.account); setTickets(data.tickets||[]); if(data.account) setForm(v=>({...v,name:data.account!.name,email:data.account!.email})); }).catch(()=>setError(Copy.loadError));
    track("contact_page_viewed");
  }, [ar, lang, Copy.loadError]);

  function track(eventName:string, requestType?:Intent) {
    if (!session.current) return;
    void fetch("/api/contact/events", { method:"POST", headers:{"content-type":"application/json"}, body:JSON.stringify({ eventName, requestType, path:location.pathname, sessionId:session.current }) }).catch(()=>{});
  }
  function choose(next:Intent) {
    setIntent(next); setError(""); setResult(null); setDemoStep(1); track("contact_type_selected", next);
    requestAnimationFrame(()=>formRef.current?.scrollIntoView({behavior:"smooth",block:"start"}));
  }
  function update(name:string, value:unknown) { setForm(v=>({...v,[name]:value})); }
  function details(name:string, value:unknown) { setForm(v=>({...v,details:{...v.details,[name]:value}})); }
  function toggleGoal(value:string) { setForm(v=>({...v,goals:v.goals.includes(value)?v.goals.filter(x=>x!==value):[...v.goals,value]})); }
  async function submit(event?:FormEvent, source="Direct") {
    event?.preventDefault(); setLoading(true); setError(""); track("form_started", intent);
    try {
      const utm=Object.fromEntries(["utm_source","utm_medium","utm_campaign","utm_content","utm_term"].map(k=>[k,new URLSearchParams(location.search).get(k)||""]).filter(([,v])=>v));
      const payload={...form, requestType:intent, honeypot:"", idempotencyKey:clientUuid(), source:new URLSearchParams(location.search).get("utm_source")||source, utm};
      const body=new FormData(); body.set("payload",JSON.stringify(payload)); files.forEach(f=>body.append("files",f));
      const response=await fetch("/api/contact",{method:"POST",body}); const data=await response.json() as Result&{field?:string;error?:string};
      if(!response.ok) throw new Error(data.field?`${Copy.required}: ${fieldLabel(data.field,ar)}`:Copy.submitError);
      setResult(data); track(intent==="demo"?"demo_requested":intent==="enterprise"?"enterprise_requested":"form_submitted",intent);
      formRef.current?.scrollIntoView({behavior:"smooth"});
    } catch(e) { setError(e instanceof Error?e.message:Copy.submitError); track("form_error",intent); }
    finally { setLoading(false); }
  }
  const faqs=(ar?faqAr:faqEn).filter(([q,a])=>(q+a).toLowerCase().includes(faqQuery.toLowerCase()));
  const nav=ar?[["intents","أسباب التواصل"],["contact-form","النموذج"],["faq","الأسئلة"],["ai-help","اسأل NEXORA"]] as const:[["intents","Contact paths"],["contact-form","Form"],["faq","FAQ"],["ai-help","Ask NEXORA"]] as const;

  return <main className="contact-page" dir={ar?"rtl":"ltr"}>
    <MarketingHeader isAr={ar} navLinks={nav} languageHref={ar?"/en/contact":"/contact"} menuId="contact-mobile-menu" />
    <section className="contact-hero pf-container">
      <div><span className="contact-eyebrow"><Sparkles /> NEXORA AI</span><h1>{Copy.hero}</h1><p>{Copy.intro}</p><div className="contact-actions"><button className="pf-button primary" onClick={()=>choose("sales")}>{Copy.sales}</button><button className="pf-button secondary" onClick={()=>choose("demo")}>{Copy.demo}</button></div></div>
      <div className="routing-visual" aria-label={Copy.routingVisual}>
        <div className="routing-source"><MessageCircle/><span>{Copy.visitor}</span></div><div className="routing-line"><i/><i/><i/></div><div className="routing-engine"><Sparkles/><b>NEXORA</b><small>{Copy.validateRoute}</small></div><div className="routing-teams"><span>{Copy.salesTeam}</span><span>{Copy.supportTeam}</span><span>{Copy.partnersTeam}</span></div>
      </div>
    </section>

    <section id="intents" className="contact-section pf-container"><div className="section-heading"><span>{Copy.choosePath}</span><h2>{Copy.reason}</h2><p>{Copy.reasonText}</p></div><div className="intent-grid">{(Object.keys(intentIcons) as Intent[]).map(key=>{const Icon=intentIcons[key];return <button key={key} className={intent===key?"intent-card active":"intent-card"} onClick={()=>choose(key)} aria-pressed={intent===key}><Icon/><b>{Copy.intents[key][0]}</b><span>{Copy.intents[key][1]}</span><Arrow/></button>})}</div></section>

    <section id="contact-form" ref={formRef} className="contact-workspace pf-container">
      <aside><span>{Copy.selected}</span><h2>{Copy.intents[intent][0]}</h2><p>{Copy.formDescriptions[intent]}</p><div className="route-chip"><span>{Copy.routesTo}</span><b>{Copy.teams[intent]}</b></div>{intent==="demo"&&!settings?.calendarConnected&&<div className="honesty-note"><CalendarDays/><span><b>{Copy.requestDemoOnly}</b>{Copy.noFakeCalendar}</span></div>}{intent==="support"&&!account&&<div className="honesty-note"><Headphones/><span><b>{Copy.customerSupport}</b>{Copy.signInSupport}</span></div>}</aside>
      <div className="form-card">
        {result ? <Success result={result} ar={ar} Copy={Copy} onReset={()=>{setResult(null);setForm(account?{...empty,name:account.name,email:account.email}:empty);setFiles([])}} /> : intent==="support"&&!account ? <div className="signin-state"><Headphones/><h3>{Copy.signInTitle}</h3><p>{Copy.signInText}</p><a className="pf-button primary" href={`/signin-with-chatgpt?return_to=${encodeURIComponent(`${ar?"":"/en"}/contact?intent=support`)}`} target="_top">{Copy.signIn}</a></div> : <form onSubmit={submit} noValidate>
          {intent==="demo"&&<DemoProgress step={demoStep} ar={ar}/>} 
          {(intent!=="demo"||demoStep===1)&&<CommonFields form={form} update={update} ar={ar} intent={intent} account={account}/>} 
          {intent==="demo"&&demoStep===2&&<BusinessFields form={form} update={update} ar={ar}/>} 
          {intent==="demo"&&demoStep===3&&<ChoiceGrid title={Copy.demoInterests} values={demoInterests} selected={form.goals} toggle={toggleGoal}/>} 
          {intent==="demo"&&demoStep===4&&<div className="calendar-request"><CalendarDays/><h3>{settings?.calendarConnected?Copy.chooseTime:Copy.requestReview}</h3><p>{settings?.calendarConnected?Copy.realAvailability:Copy.coordination}</p>{settings?.calendarConnected&&<><label>{Copy.timezone}<input value={String(form.details.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone)} onChange={e=>details("timezone",e.target.value)}/></label><label>{Copy.preferredTime}<input type="datetime-local" onChange={e=>details("requestedDate",e.target.value)}/></label></>}</div>}
          {intent==="sales"&&<><BusinessFields form={form} update={update} ar={ar}/><ChoiceGrid title={Copy.primaryGoal} values={ar?goals:goalsEn} selected={form.goals} toggle={toggleGoal}/><SalesFields details={form.details} set={details} ar={ar}/></>}
          {intent==="enterprise"&&<><BusinessFields form={form} update={update} ar={ar}/><EnterpriseFields details={form.details} set={details} ar={ar}/></>}
          {intent==="partnership"&&<PartnershipFields details={form.details} set={details} ar={ar}/>} 
          {intent==="support"&&<SupportFields details={form.details} set={details} account={account} ar={ar}/>} 
          {(intent!=="demo"||demoStep===4)&&<><label>{intent==="general"?Copy.messageSubject:Copy.subject}<input value={form.subject} onChange={e=>update("subject",e.target.value)} required={["general","support"].includes(intent)}/></label><label>{Copy.message}<textarea value={form.message} onChange={e=>update("message",e.target.value)} minLength={10} maxLength={5000} required/></label></>}
          {["support","enterprise"].includes(intent)&&<label className="file-upload"><Paperclip/><span>{Copy.attachments}<small>{Copy.filesNote}</small></span><input type="file" multiple accept=".pdf,.png,.jpg,.jpeg" onChange={e=>setFiles(Array.from(e.target.files||[]).slice(0,settings?.maxFiles||3))}/></label>}
          {(intent!=="demo"||demoStep===4)&&<><label className="check-row"><input type="checkbox" checked={form.marketingConsent} onChange={e=>update("marketingConsent",e.target.checked)}/><span>{Copy.marketing}</span></label><p className="privacy-line">{Copy.privacy}{settings?.privacyUrl&&<a href={settings.privacyUrl}>{Copy.privacyPolicy}</a>}{settings?.termsUrl&&<a href={settings.termsUrl}>{Copy.terms}</a>}</p></>}
          {error&&<div className="form-error" role="alert">{error}<button type="button" onClick={()=>setError("")}>{Copy.dismiss}</button></div>}
          <div className="form-footer">{intent==="demo"&&demoStep>1&&<button type="button" className="pf-button secondary" onClick={()=>setDemoStep(s=>s-1)}>{Copy.back}</button>}{intent==="demo"&&demoStep<4?<button type="button" className="pf-button primary" onClick={()=>setDemoStep(s=>s+1)}>{Copy.next}<Arrow/></button>:<button className="pf-button primary" disabled={loading}>{loading?<Loader2 className="spin"/>:<Send/>}{Copy.submit[intent]}</button>}</div>
        </form>}
      </div>
    </section>

    {account&&tickets.length>0&&<section className="tickets pf-container"><div className="section-heading"><span>{Copy.customerPortal}</span><h2>{Copy.yourTickets}</h2></div><div className="ticket-list">{tickets.map(t=><article key={String(t.reference)}><b>{String(t.reference)}</b><span>{String(t.subject||t.category)}</span><em>{String(t.status)}</em></article>)}</div></section>}

    <section id="faq" className="faq-contact pf-container"><div className="section-heading"><span>FAQ</span><h2>{Copy.faqTitle}</h2><p>{Copy.faqText}</p></div><label className="faq-search"><Search/><span className="sr-only">{Copy.search}</span><input value={faqQuery} onChange={e=>setFaqQuery(e.target.value)} placeholder={Copy.search}/></label><div className="faq-list">{faqs.map(([q,a])=><details key={q}><summary>{q}</summary><p>{a}</p></details>)}{!faqs.length&&<div className="empty-faq"><p>{Copy.noAnswer}</p><button onClick={()=>choose("general")} className="pf-button secondary">{Copy.contactUs}</button></div>}</div></section>

    <section id="ai-help" className="ai-contact pf-container"><div><span className="contact-eyebrow"><Sparkles/>{Copy.demoMode}</span><h2>{Copy.askAi}</h2><p>{Copy.aiText}</p></div><button className="pf-button primary" onClick={()=>{setChatOpen(true);track("chat_started")}}>{Copy.startChat}</button></section>
    <MarketingFooter isAr={ar} navLinks={nav}/>
    <button className="chat-launcher" onClick={()=>{setChatOpen(true);track("chat_started")}} aria-label={Copy.startChat}><Sparkles/></button>
    {chatOpen&&<AiPanel ar={ar} Copy={Copy} step={chatStep} data={chatData} setData={setChatData} next={()=>setChatStep(s=>Math.min(4,s+1))} close={()=>setChatOpen(false)} handoff={()=>{setIntent("sales");setForm(v=>({...v,industry:chatData.industry,companySize:chatData.teamSize,message:`${chatData.problem} — ${chatData.channel}`}));setChatOpen(false);track("human_handoff_requested","sales");requestAnimationFrame(()=>formRef.current?.scrollIntoView({behavior:"smooth"}))}}/>}
  </main>;
}

function CommonFields({form,update,ar,intent,account}:{form:typeof empty;update:(n:string,v:unknown)=>void;ar:boolean;intent:Intent;account:Account}) { const c=ar?labelsAr:labelsEn; return <div className="field-grid"><label>{c.name}<input value={form.name} onChange={e=>update("name",e.target.value)} required readOnly={intent==="support"&&!!account}/></label><label>{c.email}<input type="email" value={form.email} onChange={e=>update("email",e.target.value)} required readOnly={intent==="support"&&!!account}/></label>{intent!=="demo"&&<label>{c.phone}{intent==="general"&&<small>{c.optional}</small>}<div className="phone-field"><select aria-label={c.countryCode}><option>+966</option><option>+971</option><option>+20</option><option>+1</option></select><input inputMode="tel" value={form.phone} onChange={e=>update("phone",e.target.value)} required={["sales","enterprise","partnership"].includes(intent)}/></div></label>}{["sales","demo","enterprise","partnership"].includes(intent)&&<label>{c.country}<select value={form.country} onChange={e=>update("country",e.target.value)} required><option value="SA">{c.saudi}</option><option value="AE">{c.uae}</option><option value="EG">{c.egypt}</option><option value="OTHER">{c.other}</option></select></label>}</div> }
function BusinessFields({form,update,ar}:{form:typeof empty;update:(n:string,v:unknown)=>void;ar:boolean}) {const c=ar?labelsAr:labelsEn;return <div className="field-grid"><label>{c.company}<input value={form.company} onChange={e=>update("company",e.target.value)} required/></label><label>{c.industry}<select value={form.industry} onChange={e=>update("industry",e.target.value)} required><option value="">{c.choose}</option>{(ar?industries:industriesEn).map(x=><option key={x} value={x}>{x}</option>)}</select></label><label>{c.companySize}<select value={form.companySize} onChange={e=>update("companySize",e.target.value)}><option value="">{c.choose}</option>{["1-10","11-50","51-200","201-500","501-1000","1000+"].map(x=><option key={x}>{x}</option>)}</select></label><label>{c.job}<input value={form.jobTitle} onChange={e=>update("jobTitle",e.target.value)}/></label></div>}
function ChoiceGrid({title,values,selected,toggle}:{title:string;values:string[];selected:string[];toggle:(x:string)=>void}) {return <fieldset className="choices"><legend>{title}</legend>{values.map(x=><button key={x} type="button" className={selected.includes(x)?"selected":""} onClick={()=>toggle(x)} aria-pressed={selected.includes(x)}>{selected.includes(x)&&<Check/>}{x}</button>)}</fieldset>}
function SalesFields({details,set,ar}:{details:Record<string,unknown>;set:(n:string,v:unknown)=>void;ar:boolean}) {const c=ar?labelsAr:labelsEn;return <div className="field-grid"><label>{c.teamSize}<input type="number" min="1" value={String(details.teamSize||"")} onChange={e=>set("teamSize",Number(e.target.value))}/></label><label>{c.channels}<input value={String(details.channels||"")} onChange={e=>set("channels",e.target.value)}/></label><label>{c.volume}<select value={String(details.conversationVolume||"")} onChange={e=>set("conversationVolume",e.target.value)}><option value="">{c.optional}</option><option>0-1000</option><option>1000-10000</option><option>10000-50000</option><option>50000+</option></select></label></div>}
function EnterpriseFields({details,set,ar}:{details:Record<string,unknown>;set:(n:string,v:unknown)=>void;ar:boolean}) {const c=ar?labelsAr:labelsEn;return <div className="field-grid">{[["website",c.website],["departments",c.departments],["agents",c.agents],["channelsCount",c.expectedChannels],["whatsappNumbers",c.whatsappNumbers],["conversationVolume",c.volume]].map(([k,l])=><label key={k}>{l}<input value={String(details[k]||"")} onChange={e=>set(k,e.target.value)}/></label>)}<ChoiceGrid title={c.requirements} values={["Voice AI","API","SSO","White Label",c.customIntegrations,c.security,c.deployment]} selected={(details.requirements as string[])||[]} toggle={x=>set("requirements",((details.requirements as string[])||[]).includes(x)?(details.requirements as string[]).filter(v=>v!==x):[...((details.requirements as string[])||[]),x])}/></div>}
function PartnershipFields({details,set,ar}:{details:Record<string,unknown>;set:(n:string,v:unknown)=>void;ar:boolean}) {void details;const c=ar?labelsAr:labelsEn;return <div className="field-grid"><label>{c.partnership}<select onChange={e=>set("partnershipType",e.target.value)}>{["Technology Partner","Integration Partner","Reseller","Agency","Consulting Partner","Strategic Partnership","Other"].map(x=><option key={x}>{x}</option>)}</select></label><label>{c.website}<input onChange={e=>set("website",e.target.value)}/></label><label className="full">{c.companyDescription}<textarea onChange={e=>set("companyDescription",e.target.value)}/></label></div>}
function SupportFields({details,set,account,ar}:{details:Record<string,unknown>;set:(n:string,v:unknown)=>void;account:Account;ar:boolean}) {void details;const c=ar?labelsAr:labelsEn;return <><div className="account-strip"><span>{c.workspace}</span><b>{account?.workspace?.name}</b><span>{c.plan}</span><b>{account?.workspace?.plan}</b></div><div className="field-grid"><label>{c.category}<select onChange={e=>set("category",e.target.value)}>{["AI Agent","Inbox","WhatsApp","CRM","Automation","Campaign","Billing","Subscription","Login","Integration","API","Voice","Bug","Feature Request","Other"].map(x=><option key={x}>{x}</option>)}</select></label><label>{c.module}<input onChange={e=>set("module",e.target.value)}/></label><label>{c.priority}<select onChange={e=>set("priority",e.target.value)}><option value="normal">{c.normal}</option><option value="high">{c.high}</option><option value="urgent">{c.urgent}</option></select></label></div></>}
function DemoProgress({step,ar}:{step:number;ar:boolean}) {const names=ar?["بياناتك","الشركة","اهتماماتك","الطلب"]:["Your details","Company","Interests","Request"];return <ol className="demo-progress">{names.map((x,i)=><li key={x} className={step>=i+1?"active":""}><span>{i+1}</span>{x}</li>)}</ol>}
function Success({result,ar,Copy,onReset}:{result:Result;ar:boolean;Copy:typeof copyAr;onReset:()=>void}) {return <div className="success-screen"><span><Check/></span><h2>{Copy.success}</h2><p>{Copy.successText}</p><dl><div><dt>{Copy.reference}</dt><dd dir="ltr">{result.reference}</dd></div><div><dt>{Copy.requestType}</dt><dd>{Copy.intents[result.requestType][0]}</dd></div><div><dt>{Copy.nextStep}</dt><dd>{Copy.teamWillReview}</dd></div></dl><div><a href={`${ar?"":"/en"}/platform`} className="pf-button primary">{Copy.explorePlatform}</a><a href={`${ar?"":"/en"}/pricing`} className="pf-button secondary">{Copy.reviewPricing}</a><button onClick={onReset}>{Copy.newRequest}</button></div></div>}
function AiPanel({ar,Copy,step,data,setData,next,close,handoff}:{ar:boolean;Copy:typeof copyAr;step:number;data:{industry:string;problem:string;teamSize:string;channel:string};setData:(x:{industry:string;problem:string;teamSize:string;channel:string})=>void;next:()=>void;close:()=>void;handoff:()=>void}) {const questions=ar?["ما نوع شركتك أو قطاعك؟","ما المشكلة التي تريد حلها؟","كم عدد أعضاء فريقك؟","ما القناة الأساسية؟"]:["What is your industry?","What problem do you want to solve?","How many people are on your team?","What is your main channel?"];const keys=(['industry','problem','teamSize','channel'] as const);return <div className="chat-backdrop" onClick={close}><aside className="ai-panel" onClick={e=>e.stopPropagation()} role="dialog" aria-modal="true" aria-label={Copy.askAi}><header><span><Sparkles/><b>{Copy.aiAssistant}</b><small>{Copy.demoMode}</small></span><button onClick={close} aria-label={Copy.dismiss}><X/></button></header><div className="ai-messages"><p>{Copy.aiWelcome}</p>{step<4?<label>{questions[step]}<input autoFocus value={data[keys[step]]} onChange={e=>setData({...data,[keys[step]]:e.target.value})}/><button className="pf-button primary" disabled={!data[keys[step]]} onClick={next}>{Copy.next}</button></label>:<div className="ai-summary"><h3>{Copy.summary}</h3><p>{data.industry}</p><p>{data.problem}</p><p>{data.teamSize} · {data.channel}</p><small>{Copy.aiDisclaimer}</small><button className="pf-button primary" onClick={handoff}>{Copy.human}</button></div>}</div></aside></div>}
function fieldLabel(key:string,ar:boolean){return (ar?labelsAr:labelsEn)[key as keyof typeof labelsAr]||key}

const industries=["السفر والسياحة","العقارات","المقاولات والهندسة","التجارة الإلكترونية","السيارات","التعليم والتدريب","الخدمات المهنية","الضيافة","الخدمات الصحية الإدارية","الخدمات المالية والتأمين","اللوجستيات والنقل","الصيانة والخدمات"];
const industriesEn=["Travel and tourism","Real estate","Construction and engineering","E-commerce and retail","Automotive","Education and training","Professional services","Hospitality","Administrative healthcare services","Financial services and insurance","Logistics and transport","Maintenance and field services"];
const goals=["خدمة العملاء","زيادة المبيعات","AI Agents","WhatsApp","CRM","Automation","Voice AI","الحجوزات","الحملات","Unified Inbox","إدارة Leads","API / Integration","حل مخصص"];
const goalsEn=["Customer service","Increase sales","AI Agents","WhatsApp","CRM","Automation","Voice AI","Bookings","Campaigns","Unified Inbox","Lead management","API / Integration","Custom solution"];
const demoInterests=["AI Agents","WhatsApp CRM","Unified Inbox","Sales Automation","Customer Service","Knowledge Base","Automation Studio","Voice AI","Analytics","Campaigns","Integrations","Enterprise Features"];
const labelsAr={name:"الاسم الكامل",email:"البريد الإلكتروني للعمل",phone:"رقم الجوال",country:"الدولة",countryCode:"رمز الدولة",company:"اسم الشركة",industry:"القطاع",companySize:"حجم الشركة",job:"المسمى الوظيفي (اختياري)",choose:"اختر",optional:"اختياري",saudi:"السعودية",uae:"الإمارات",egypt:"مصر",other:"دولة أخرى",teamSize:"عدد أعضاء الفريق",channels:"القنوات المستخدمة",volume:"حجم المحادثات التقريبي",website:"موقع الشركة",departments:"عدد الإدارات",agents:"عدد الوكلاء المتوقع",expectedChannels:"عدد القنوات المتوقع",whatsappNumbers:"أرقام WhatsApp المتوقعة",requirements:"متطلبات المؤسسة",customIntegrations:"تكاملات مخصصة",security:"متطلبات أمنية",deployment:"متطلبات النشر",partnership:"نوع الشراكة",companyDescription:"وصف الشركة",workspace:"مساحة العمل",plan:"الخطة",category:"نوع المشكلة",module:"الوحدة",priority:"الأولوية",normal:"عادية",high:"عالية",urgent:"عاجلة"};
const labelsEn={name:"Full name",email:"Work email",phone:"Phone number",country:"Country",countryCode:"Country code",company:"Company",industry:"Industry",companySize:"Company size",job:"Job title (optional)",choose:"Choose",optional:"Optional",saudi:"Saudi Arabia",uae:"United Arab Emirates",egypt:"Egypt",other:"Other country",teamSize:"Team members",channels:"Channels used",volume:"Approximate conversation volume",website:"Company website",departments:"Departments",agents:"Expected agents",expectedChannels:"Expected channels",whatsappNumbers:"Expected WhatsApp numbers",requirements:"Enterprise requirements",customIntegrations:"Custom integrations",security:"Security requirements",deployment:"Deployment requirements",partnership:"Partnership type",companyDescription:"Company description",workspace:"Workspace",plan:"Plan",category:"Issue type",module:"Module",priority:"Priority",normal:"Normal",high:"High",urgent:"Urgent"};
const faqAr=[["كيف أبدأ؟","اختر سبب التواصل ثم أرسل المعلومات الضرورية فقط. سيُنشئ النظام طلبًا مرجعيًا ويوجهه للفريق المناسب."],["هل توجد تجربة مجانية؟","تظهر التجربة فقط عندما تفعلها الإدارة في صفحة الأسعار؛ لا نفترض وجودها تلقائيًا."],["كيف تعمل AI Credits؟","هي وحدة لقياس استخدام الذكاء الاصطناعي، ويتغير الاستهلاك حسب النموذج وحجم المدخلات والمخرجات."],["هل يمكن ربط WhatsApp؟","تظهر القناة كمتصلة فقط بعد اكتمال تكامل رسمي. تحدث مع المبيعات لتقييم متطلباتك."],["هل توجد باقات Enterprise؟","نعم، يمكنك تقديم طلب مؤسسة لتحديد الحدود والصلاحيات والتكاملات المطلوبة."],["هل تدعم العربية؟","نعم، واجهة الموقع والمسارات الأساسية تدعم العربية RTL والإنجليزية LTR."]];
const faqEn=[["How do I get started?","Choose a contact path and submit only the information it needs. The system creates a reference and routes it to the right team."],["Is a free trial available?","A trial is shown only when an administrator enables it in pricing settings."],["How do AI credits work?","They meter AI usage; consumption varies by model and input and output size."],["Can I connect WhatsApp?","A channel is marked connected only after an official integration is complete."],["Do you offer Enterprise plans?","Yes. Submit an enterprise request to define limits, permissions, and integrations."],["Do you support Arabic?","Yes. Core site experiences support Arabic RTL and English LTR."]];
const copyAr={hero:"كيف يمكننا مساعدتك؟",intro:"سواء كنت تريد إنشاء أول وكيل ذكاء اصطناعي، أتمتة خدمة العملاء والمبيعات، أو بناء حل مخصص لمؤسستك، أخبرنا بما تحتاج وسنوجّه طلبك إلى الفريق المناسب.",sales:"تحدث مع المبيعات",demo:"احجز عرضًا توضيحيًا",visitor:"طلب زائر",validateRoute:"تحقق · سجل · وجّه",salesTeam:"المبيعات",supportTeam:"الدعم",partnersTeam:"الشراكات",routingVisual:"تحويل الطلب إلى الفريق المناسب",choosePath:"مسار واضح",reason:"ما سبب تواصلك؟",reasonText:"اختر المسار المناسب كي نطلب المعلومات الضرورية فقط.",intents:{sales:["المبيعات","اشتراك، منتج، أو احتياج تجاري"],demo:["طلب Demo","عرض مخصص لما تريد مشاهدته"],enterprise:["Enterprise","متطلبات المؤسسات والتكاملات"],support:["الدعم","تذكرة فعلية للعملاء الحاليين"],partnership:["الشراكات","تقنية، تكامل، وكالة أو تعاون"],general:["استفسار عام","سؤال مختصر أو موضوع آخر"]},selected:"المسار المحدد",formDescriptions:{sales:"يُنشئ طلبك جهة اتصال وLead داخل CRM مع درجة وتوجيه للفريق.",demo:"طلب متعدد الخطوات يساعد الفريق على تجهيز عرض مناسب.",enterprise:"اجمع متطلبات المؤسسة دون افتراض توفر أي تكامل غير منفذ.",support:"ينشئ Ticket مرتبطًا بحسابك ومساحة عملك.",partnership:"يسجل مقترح التعاون ويوجهه لفريق الشراكات.",general:"نموذج مختصر للاستفسارات التي لا تحتاج بيانات تجارية."},routesTo:"يُوجّه إلى",teams:{sales:"فريق المبيعات",demo:"فريق المبيعات",enterprise:"مبيعات المؤسسات",support:"فريق الدعم",partnership:"فريق الشراكات",general:"خدمة العملاء"},requestDemoOnly:"طلب تنسيق — ليس موعدًا مؤكدًا",noFakeCalendar:"التقويم غير متصل حاليًا؛ سيختار الفريق موعدًا معك بعد المراجعة.",customerSupport:"الدعم للعملاء الحاليين",signInSupport:"سجّل الدخول كي نربط التذكرة بمساحة العمل بدون إعادة بياناتك.",signInTitle:"سجّل الدخول لإنشاء تذكرة",signInText:"سنستخدم الاسم والبريد ومساحة العمل الموجودة في حسابك ثم نطلب تفاصيل المشكلة فقط.",signIn:"تسجيل الدخول",loadError:"تعذر تحميل إعدادات التواصل. يمكنك تعبئة النموذج والمحاولة.",required:"حقل مطلوب",submitError:"تعذر إرسال الطلب حاليًا. احتفظنا بالبيانات؛ حاول مرة أخرى.",demoInterests:"ما الذي تريد رؤيته؟",primaryGoal:"الهدف الأساسي",chooseTime:"اختر وقتًا متاحًا فعليًا",requestReview:"أرسل طلب العرض",realAvailability:"تعرض الأوقات القادمة من التكامل الحقيقي فقط.",coordination:"سنحفظ اهتماماتك ونوجه الطلب لفريق المبيعات لتنسيق الموعد.",timezone:"المنطقة الزمنية",preferredTime:"الوقت المفضل",messageSubject:"الموضوع",subject:"عنوان الطلب (اختياري)",message:"كيف يمكننا مساعدتك؟",attachments:"المرفقات",filesNote:"PDF أو PNG أو JPG — تُخزن بشكل خاص وتبقى قيد الفحص.",marketing:"أرغب اختياريًا في تلقي أخبار وعروض NEXORA AI.",privacy:"بإرسال النموذج، توافق على معالجة بياناتك لتنفيذ الطلب.",privacyPolicy:"سياسة الخصوصية",terms:"الشروط",dismiss:"إغلاق",back:"السابق",next:"التالي",submit:{sales:"إرسال طلب المبيعات",demo:"إرسال طلب العرض",enterprise:"طلب استشارة Enterprise",support:"إنشاء تذكرة دعم",partnership:"إرسال طلب الشراكة",general:"إرسال الاستفسار"},customerPortal:"بوابة العميل",yourTickets:"آخر تذاكر الدعم",faqTitle:"قد تجد إجابتك هنا",faqText:"ابحث في المعلومات العامة المعتمدة قبل إرسال الطلب.",search:"ابحث عن إجابة",noAnswer:"لم نجد إجابة مطابقة.",contactUs:"تواصل معنا",demoMode:"وضع توضيحي",askAi:"اسأل NEXORA AI",aiText:"مساعد إرشادي واضح الهوية يساعدك على اختيار المسار وجمع متطلبات أولية. لا يدّعي اتصالًا إنتاجيًا بنموذج AI.",startChat:"ابدأ المحادثة",success:"تم استلام طلبك بنجاح",successText:"حُفظ الطلب في النظام ووُجّه إلى الفريق المختص.",reference:"الرقم المرجعي",requestType:"نوع الطلب",nextStep:"الخطوة التالية",teamWillReview:"يراجع الفريق الطلب من مركز التواصل.",explorePlatform:"استكشف المنصة",reviewPricing:"راجع الأسعار",newRequest:"طلب جديد",aiAssistant:"مساعد NEXORA الإرشادي",aiWelcome:"أنا مساعد إرشادي آلي واضح الهوية. سأجمع أربع معلومات فقط، ويمكنك بعدها إرسالها كطلب للمبيعات.",summary:"ملخص احتياجك",aiDisclaimer:"لن يُنشأ Lead حتى تضغط التحدث مع موظف.",human:"التحدث مع موظف"};
const copyEn={...copyAr,hero:"How can we help?",intro:"Whether you want your first AI agent, automated customer service and sales, or an enterprise solution, tell us what you need and we will route it to the right team.",sales:"Talk to sales",demo:"Request a demo",visitor:"Visitor request",validateRoute:"Validate · capture · route",salesTeam:"Sales",supportTeam:"Support",partnersTeam:"Partnerships",routingVisual:"Route a request to the right team",choosePath:"A clear path",reason:"Why are you contacting us?",reasonText:"Choose a path so we ask only for information it needs.",intents:{sales:["Sales","Subscription, product, or commercial need"],demo:["Demo request","A tailored walkthrough of what matters"],enterprise:["Enterprise","Enterprise requirements and integrations"],support:["Support","A real ticket for existing customers"],partnership:["Partnerships","Technology, integration, agency, or cooperation"],general:["General inquiry","A short question or another topic"]},selected:"Selected path",formDescriptions:{sales:"Creates a contact and CRM lead with scoring and routing.",demo:"A structured request that helps sales prepare a relevant demo.",enterprise:"Capture enterprise requirements without claiming unbuilt integrations.",support:"Creates a ticket linked to your account and workspace.",partnership:"Captures the proposal and routes it to partnerships.",general:"A short form for questions that do not need business qualification."},routesTo:"Routes to",teams:{sales:"Sales team",demo:"Sales team",enterprise:"Enterprise sales",support:"Support team",partnership:"Partnerships team",general:"Customer service"},requestDemoOnly:"Coordination request — not a confirmed meeting",noFakeCalendar:"No calendar is connected, so the team will coordinate a time after review.",customerSupport:"Support for existing customers",signInSupport:"Sign in to connect the ticket to your workspace without re-entering account data.",signInTitle:"Sign in to create a ticket",signInText:"We will use your account name, email, and workspace, then ask only for issue details.",signIn:"Sign in",loadError:"Contact settings could not be loaded. You can complete the form and retry.",required:"Required field",submitError:"The request could not be sent. Your entries remain here; please retry.",demoInterests:"What would you like to see?",primaryGoal:"Primary goal",chooseTime:"Choose a real available time",requestReview:"Send your demo request",realAvailability:"Only times from a connected calendar are shown.",coordination:"We will save your interests and route the request to sales to coordinate a time.",timezone:"Timezone",preferredTime:"Preferred time",messageSubject:"Subject",subject:"Request title (optional)",message:"How can we help?",attachments:"Attachments",filesNote:"PDF, PNG, or JPG — stored privately and marked for scanning.",marketing:"I would optionally like to receive NEXORA AI news and offers.",privacy:"By submitting, you agree to processing required to handle this request.",privacyPolicy:"Privacy policy",terms:"Terms",dismiss:"Dismiss",back:"Back",next:"Next",submit:{sales:"Send sales request",demo:"Send demo request",enterprise:"Request Enterprise consultation",support:"Create support ticket",partnership:"Send partnership request",general:"Send inquiry"},customerPortal:"Customer portal",yourTickets:"Recent support tickets",faqTitle:"You may find your answer here",faqText:"Search approved public information before submitting a request.",search:"Search for an answer",noAnswer:"No matching answer was found.",contactUs:"Contact us",demoMode:"Demo mode",askAi:"Ask NEXORA AI",aiText:"A clearly identified guided assistant helps select a path and capture initial needs. It does not claim a production AI connection.",startChat:"Start chat",success:"Your request has been received",successText:"It is stored in the system and routed to the appropriate team.",reference:"Reference",requestType:"Request type",nextStep:"Next step",teamWillReview:"The team reviews it in Contact Center.",explorePlatform:"Explore the platform",reviewPricing:"Review pricing",newRequest:"New request",aiAssistant:"NEXORA guided assistant",aiWelcome:"I am a clearly identified automated guide. I will collect four details, then you can explicitly submit them to sales.",summary:"Your needs summary",aiDisclaimer:"No lead is created until you choose to talk to a person.",human:"Talk to a person"};
