{"version":3,"file":"MagicChatbot.B01zbvbB.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/yWz2pU66VCVGRaDRFhPy/xMsZ18WT0oenrnsNUs9h/MagicChatbot.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";import{useState,useEffect,useRef}from\"react\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function MagicChat(props){// --- CONFIG ---\nconst API_URL=\"https://undo-lamp-suspended-specialties.trycloudflare.com/api/k7p5w-chat\";const SITE_KEY=\"0x4AAAAAAB8DAugZzCDc51WW\";// --- STATE ---\nconst[isOpen,setIsOpen]=useState(false);const[isLoggedIn,setIsLoggedIn]=useState(false);const[isLoading,setIsLoading]=useState(false);// Date utilizator\nconst[userData,setUserData]=useState({name:\"\",email:\"\"});// Chat\nconst[messages,setMessages]=useState([]);const[inputVal,setInputVal]=useState(\"\");// Terms & Conditions\nconst[termsAccepted,setTermsAccepted]=useState(false);// Turnstile\nconst[turnstileToken,setTurnstileToken]=useState(\"\");const[turnstileError,setTurnstileError]=useState(\"\");const turnstileContainerRef=useRef(null);// Feedback\nconst[isFeedbackActive,setIsFeedbackActive]=useState(false);const[isChatBlocked,setIsChatBlocked]=useState(false);const[resetCountdown,setResetCountdown]=useState(0);const inactivityTimerRef=useRef(null);const hasUserSentMessageRef=useRef(false);// Refs\nconst messagesEndRef=useRef(null);const sessionIdRef=useRef(\"\");// --- INIT & LOCAL STORAGE ---\nuseEffect(()=>{// 1. Session ID\nlet sid=localStorage.getItem(\"magicsalon_session_id\");if(!sid){sid=\"session_\"+Date.now()+\"_\"+Math.random().toString(36).substring(2);localStorage.setItem(\"magicsalon_session_id\",sid);}sessionIdRef.current=sid;// 2. Check Login\nconst storedName=localStorage.getItem(\"magicsalon_user_name\");const storedEmail=localStorage.getItem(\"magicsalon_user_email\");if(storedName&&storedEmail){setUserData({name:storedName,email:storedEmail});setIsLoggedIn(true);// Restore chat blocked state (user must click a feedback button to continue)\nif(localStorage.getItem(\"magicsalon_chat_blocked\")===\"1\"){setIsChatBlocked(true);}// Restore saved messages or show welcome\nconst savedMessages=localStorage.getItem(\"magicsalon_messages\");if(savedMessages){try{const parsed=JSON.parse(savedMessages);if(parsed.length>0){setMessages(parsed);hasUserSentMessageRef.current=parsed.some(m=>m.role===\"user\");}}catch(e){// fallback to welcome message\n}}setMessages(prev=>{if(prev.length>0)return prev;return[{id:1,role:\"assistant\",text:`Bună din nou, ${storedName}! 👋\n\nSunt asistentul AI Magic, cu ce informații \\xeeți pot fi de folos?`,buttons:[{text:\"📅 Programare\",action:\"programare\"},{text:\"📢 Reclamatie\",action:\"reclamatie\"}]}];});}// 3. Load Turnstile Script\nif(!document.getElementById(\"turnstile-script\")){const script=document.createElement(\"script\");script.id=\"turnstile-script\";script.src=\"https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit\";script.async=true;document.head.appendChild(script);}// 4. Ensure Viewport Meta for Mobile Responsiveness\nconst existingMeta=document.querySelector('meta[name=\"viewport\"]');if(existingMeta){existingMeta.setAttribute(\"content\",\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\");}else{const meta=document.createElement(\"meta\");meta.name=\"viewport\";meta.content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\";document.head.appendChild(meta);}},[]);// --- PERSIST MESSAGES ---\nuseEffect(()=>{if(messages.length>0){localStorage.setItem(\"magicsalon_messages\",JSON.stringify(messages));}},[messages]);// --- SCROLL AUTO ---\nuseEffect(()=>{if(messagesEndRef.current){messagesEndRef.current.scrollIntoView({behavior:\"smooth\"});}},[messages,isOpen,isLoading]);// --- TURNSTILE RENDER ---\nuseEffect(()=>{if(isOpen&&!isLoggedIn&&turnstileContainerRef.current){const renderWidget=()=>{if(window.turnstile){try{turnstileContainerRef.current.innerHTML=\"\";window.turnstile.render(turnstileContainerRef.current,{sitekey:SITE_KEY,callback:function(token){console.log(\"Token received:\",token);setTurnstileToken(token);setTurnstileError(\"\");}});}catch(err){console.error(\"Turnstile render error\",err);}}else{setTimeout(renderWidget,100);}};renderWidget();}},[isOpen,isLoggedIn]);// --- FEEDBACK HELPERS ---\nconst isFeedbackShown=()=>localStorage.getItem(\"magicsalon_feedback_shown\")===\"1\";const setFeedbackShown=()=>localStorage.setItem(\"magicsalon_feedback_shown\",\"1\");const resetInactivityTimer=()=>{if(inactivityTimerRef.current)clearTimeout(inactivityTimerRef.current);if(!hasUserSentMessageRef.current||isFeedbackShown())return;inactivityTimerRef.current=setTimeout(()=>{const feedbackMsg={id:Date.now(),role:\"assistant\",text:\"Sperăm că informațiile de p\\xe2nă acum ți-au fost utile! 😊\\nNe-ar plăcea să știm părerea ta:\",buttons:[{text:\"⭐ Foarte util\",action:\"feedback-great\"},{text:\"😐 Ok\",action:\"feedback-ok\"},{text:\"👎 Nemulțumit\",action:\"feedback-bad\"},{text:\"✍️ Lasă un mesaj\",action:\"feedback-text\"}]};setMessages(prev=>{const updated=[...prev,feedbackMsg];// Save explicitly so it persists even if user leaves immediately\nlocalStorage.setItem(\"magicsalon_messages\",JSON.stringify(updated));return updated;});setFeedbackShown();// Block chat input immediately when feedback prompt appears\nsetIsChatBlocked(true);localStorage.setItem(\"magicsalon_chat_blocked\",\"1\");},35e3);};const finalizeFeedback=()=>{// Start visible countdown\nsetResetCountdown(4);let seconds=4;const interval=setInterval(()=>{seconds--;setResetCountdown(seconds);if(seconds<=0){clearInterval(interval);localStorage.removeItem(\"magicsalon_feedback_shown\");localStorage.removeItem(\"magicsalon_messages\");localStorage.removeItem(\"magicsalon_chat_blocked\");setIsFeedbackActive(false);setIsChatBlocked(false);setResetCountdown(0);hasUserSentMessageRef.current=false;if(inactivityTimerRef.current)clearTimeout(inactivityTimerRef.current);setMessages([{id:Date.now(),role:\"assistant\",text:`Bună din nou, ${userData.name}! 👋\n\nSunt asistentul AI Magic, cu ce informații \\xeeți pot fi de folos?`,buttons:[{text:\"📅 Programare\",action:\"programare\"},{text:\"📢 Reclamatie\",action:\"reclamatie\"}]}]);}},1e3);};const trackFeedback=async(feedbackType,feedbackText=null)=>{if(!sessionIdRef.current)return;try{const response=await fetch(API_URL,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({action:\"feedbackSelection\",sessionId:sessionIdRef.current,userName:userData.name,userEmail:userData.email,feedbackType,feedbackText,metadata:{domain:window.location.hostname,page:window.location.pathname}})});const data=await response.json();console.log(\"📊 Feedback response:\",response.status,data);}catch(error){console.error(\"❌ Failed to save feedback:\",error);}};// --- TRACKING HELPERS ---\nconst trackAction=async(actionType,optionLabel)=>{if(!sessionIdRef.current)return;const payload={action:actionType,sessionId:sessionIdRef.current,userName:userData.name,userEmail:userData.email,[actionType===\"programareSelection\"?\"programareChoice\":\"reclamatieChoice\"]:optionLabel,chatInput:`[${actionType===\"programareSelection\"?\"Programare\":\"Reclamatie\"}] ${optionLabel}`,metadata:{domain:window.location.hostname,page:window.location.pathname}};try{await fetch(API_URL,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(payload)});console.log(`📊 ${actionType} saved:`,optionLabel);}catch(error){console.error(`❌ Failed to save ${actionType}`,error);}};// --- ACTIONS ---\nconst handleLogin=e=>{e.preventDefault();if(!userData.name||!userData.email){setTurnstileError(\"Te rugăm să completezi toate c\\xe2mpurile.\");return;}// Simple email validation\nconst emailRegex=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;if(!emailRegex.test(userData.email)){setTurnstileError(\"Te rugăm să introduci o adresă de email validă.\");return;}// Check Terms\nif(!termsAccepted){setTurnstileError(\"Te rugăm să accepți termenii și condițiile.\");return;}// Check Turnstile\nif(window.turnstile&&!turnstileToken){setTurnstileError(\"Te rugăm să completezi verificarea de securitate.\");return;}localStorage.setItem(\"magicsalon_user_name\",userData.name);localStorage.setItem(\"magicsalon_user_email\",userData.email);setIsLoggedIn(true);setTurnstileError(\"\");// Initial Greeting\nsetTimeout(()=>{setMessages([{id:Date.now(),role:\"assistant\",text:`Bună, ${userData.name}! Sunt asistentul AI Magic, cu ce informații \\xeeți pot fi de folos?`,buttons:[{text:\"📅 Programare\",action:\"programare\"},{text:\"📢 Reclamatie\",action:\"reclamatie\"}]}]);},500);};const handleReset=()=>{if(confirm(\"Sigur vrei să resetezi chat-ul? Vei trebui să te identifici din nou.\")){localStorage.removeItem(\"magicsalon_user_name\");localStorage.removeItem(\"magicsalon_user_email\");localStorage.removeItem(\"magicsalon_feedback_shown\");localStorage.removeItem(\"magicsalon_messages\");localStorage.removeItem(\"magicsalon_chat_blocked\");// Keep session ID, remove user data\nsetUserData({name:\"\",email:\"\"});setMessages([]);setIsLoggedIn(false);setTurnstileToken(\"\");setTurnstileError(\"\");setTermsAccepted(false);setIsFeedbackActive(false);setIsChatBlocked(false);hasUserSentMessageRef.current=false;if(inactivityTimerRef.current)clearTimeout(inactivityTimerRef.current);}};const handleSend=async(manualText=null)=>{if(isChatBlocked&&!isFeedbackActive)return;const textToSend=manualText||inputVal;if(!textToSend.trim())return;// 1. Add User Message\nconst userMsg={id:Date.now(),role:\"user\",text:textToSend};setMessages(prev=>[...prev,userMsg]);setInputVal(\"\");hasUserSentMessageRef.current=true;resetInactivityTimer();// Dacă e feedback text, salvează direct fără webhook\nif(isFeedbackActive){setIsLoading(true);await trackFeedback(\"text\",textToSend);setIsFeedbackActive(false);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Mulțumim pentru feedback! Părerea ta ne ajută să ne \\xeembunătățim serviciile. 💖\"}]);setIsLoading(false);finalizeFeedback();},400);return;}setIsLoading(true);// 2. API Request\ntry{const payload={turnstileToken:turnstileToken||\"returning_user\",sessionId:sessionIdRef.current,chatInput:textToSend,userName:userData.name,userEmail:userData.email,turnstileValidated:true,metadata:{domain:window.location.hostname,page:window.location.pathname,timestamp:Date.now(),gdprConsent:true}};const res=await fetch(API_URL,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(payload)});const json=await res.json();const replyText=json.data?.output||json.data?.response||json.message||\"Am primit mesajul.\";setMessages(prev=>[...prev,{id:Date.now()+1,role:\"assistant\",text:replyText}]);}catch(err){console.error(err);setMessages(prev=>[...prev,{id:Date.now()+1,role:\"assistant\",text:\"⚠️ A apărut o eroare de conexiune. Te rog \\xeencearcă din nou.\"}]);}finally{setIsLoading(false);}};// Button Actions\nconst handleButtonClick=action=>{if(isChatBlocked&&!action.startsWith(\"feedback-\"))return;if(action===\"programare\"){setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"📅 Programare\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Perfect! Alege cum vrei să te programezi:\",buttons:[{text:\"🌐 Online\",action:\"programare-online\"},{text:\"📱 Descarcă aplicația\",action:\"download-app\"},{text:\"💬 WhatsApp\",action:\"whatsapp\"},{text:\"📞 Sună la *3000\",action:\"phone\"}]}]);},500);}else if(action===\"reclamatie\"){setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"📢 Reclamatie\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Alege cum vrei să faci o reclamație:\",buttons:[{text:\"💬 WhatsApp suport\",action:\"reclamatie-whatsapp\"},{text:\"📞 Sună la *3000\\n(tasta 0)\",action:\"reclamatie-phone\"},{text:\"✍️ Spune-ne mai multe\",action:\"reclamatie-describe\"}]}]);},500);}else if(action===\"programare-online\"){trackAction(\"programareSelection\",\"Online\");setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"🌐 Online\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Perfect! 🎉\\n\\nTe redirecționez către platforma de programări online.\\n\\nPoți alege salonul, serviciul și ora care ți se potrivește! 💖✨\"}]);window.open(\"https://programari.saloanelemagic.ro\",\"_blank\");},500);}else if(action===\"download-app\"){trackAction(\"programareSelection\",\"Descarcă aplicația\");setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"📱 Descarcă aplicația\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Perfect! 🎉\\n\\nTe redirectionez pentru a descărca aplicația Magic Salon...\\n\\nCu aplicația poți:\\n✅ Programări 24/7\\n✅ Vezi toate locațiile\\n✅ Acumulezi M Coins\\n✅ Oferte exclusive\\n\\n\\xceți doresc o experiență minunată! 💖✨\"}]);window.open(\"https://api.saloanelemagic.ro/api/redirect/qr?redirect_url=null\",\"_blank\");},500);}else if(action===\"whatsapp\"||action===\"reclamatie-whatsapp\"){const isReclamatie=action===\"reclamatie-whatsapp\";if(isReclamatie){trackAction(\"reclamatieSelection\",\"WhatsApp suport\");}else{trackAction(\"programareSelection\",\"WhatsApp\");}setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:isReclamatie?\"💬 WhatsApp suport\":\"💬 Contactează-ne pe WhatsApp\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:isReclamatie?\"Te redirecționăm către WhatsApp pentru a discuta cu echipa noastră de suport. Mulțumim!\":\"Perfect! 🎉\\n\\nTe redirectionez către WhatsApp pentru a discuta cu echipa noastră...\\n\\nEchipa noastră \\xeeți va răspunde imediat și te va ajuta cu programarea! 💬✨\"}]);window.open(\"https://api.whatsapp.com/send/?phone=%2B40786723486&text&type=phone_number&app_absent=0\",\"_blank\");},500);}else if(action===\"phone\"||action===\"reclamatie-phone\"){const isReclamatie=action===\"reclamatie-phone\";if(isReclamatie){trackAction(\"reclamatieSelection\",\"Sună la *3000 (tasta 0)\");}else{trackAction(\"programareSelection\",\"Sună la *3000\");}setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:isReclamatie?\"📞 Sună la *3000 și tastează 0\":\"📞 Sună la *3000\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:isReclamatie?\"Sună la *3000 și selectează tasta 0 pentru suport. Echipa noastră te va ajuta cu prioritate.\":\"Perfect! 📞\\n\\nPoți să ne suni direct la *3000 pentru programare sau informații!\\n\\nEchipa noastră este disponibilă să te ajute! 💖✨\"}]);window.open(\"tel:*3000\",\"_self\");},500);}else if(action===\"reclamatie-describe\"){trackAction(\"reclamatieSelection\",\"Spune-ne mai multe\");setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"✍️ Spune-ne mai multe\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Scrie mai jos ce s-a \\xeent\\xe2mplat și revenim c\\xe2t mai rapid. Daca vrei sa fii contactat/a telefonic poti sa pui nr de telefon mai jos\"}]);},400);}else if(action===\"feedback-great\"){trackFeedback(\"Foarte util\");setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"⭐ Foarte util\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Mulțumim pentru feedback! Ne bucurăm că ți-am fost de ajutor! 💖\"}]);finalizeFeedback();},400);}else if(action===\"feedback-ok\"){trackFeedback(\"Ok\");setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"😐 Ok\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Mulțumim pentru feedback! Vom \\xeencerca să ne \\xeembunătățim serviciile. 💪\"}]);finalizeFeedback();},400);}else if(action===\"feedback-bad\"){trackFeedback(\"Nemulțumit\");setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"👎 Nemulțumit\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Ne pare rău să auzim asta. Vom ține cont de părerea ta pentru a ne \\xeembunătăți. 🙏\"}]);finalizeFeedback();},400);}else if(action===\"feedback-text\"){setIsFeedbackActive(true);setMessages(prev=>[...prev,{id:Date.now(),role:\"user\",text:\"✍️ Lasă un mesaj\"}]);setTimeout(()=>{setMessages(prev=>[...prev,{id:Date.now(),role:\"assistant\",text:\"Scrie-ne părerea ta mai jos, orice sugestie ne ajută! 📝\"}]);},400);}};// --- RENDER ---\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",bottom:20,right:20,zIndex:99999,fontFamily:\"'Poppins', sans-serif\"},children:[/*#__PURE__*/_jsx(\"style\",{children:cssStyles}),/*#__PURE__*/_jsx(AnimatePresence,{children:isOpen&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:20,scale:.9},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:20,scale:.9},transition:{duration:.2},className:\"chat-window open\",children:!isLoggedIn?// Welcome Form\n/*#__PURE__*/_jsxs(\"div\",{className:\"chat-welcome-form\",children:[/*#__PURE__*/_jsx(\"button\",{className:\"welcome-close\",onClick:()=>setIsOpen(false),children:\"-\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"welcome-content\",children:[/*#__PURE__*/_jsx(\"h2\",{children:\"Bun venit! 👋\"}),/*#__PURE__*/_jsx(\"p\",{children:\"Pentru a \\xeencepe conversația, te rog să completezi:\"}),/*#__PURE__*/_jsxs(\"form\",{onSubmit:handleLogin,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"form-field\",children:[/*#__PURE__*/_jsx(\"label\",{children:\"Nume *\"}),/*#__PURE__*/_jsx(\"input\",{value:userData.name,onChange:e=>setUserData({...userData,name:e.target.value}),placeholder:\"Numele tău\",required:true})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"form-field\",children:[/*#__PURE__*/_jsx(\"label\",{children:\"Email *\"}),/*#__PURE__*/_jsx(\"input\",{type:\"email\",value:userData.email,onChange:e=>setUserData({...userData,email:e.target.value}),placeholder:\"email@exemplu.ro\",required:true})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"terms-checkbox\",style:{display:\"flex\",alignItems:\"flex-start\",gap:\"8px\",marginBottom:\"0px\",marginTop:\"5px\"},children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",id:\"terms-check\",checked:termsAccepted,onChange:e=>setTermsAccepted(e.target.checked),style:{marginTop:\"3px\",accentColor:\"#FF1493\",width:\"16px\",height:\"16px\",cursor:\"pointer\",flexShrink:0}}),/*#__PURE__*/_jsxs(\"label\",{htmlFor:\"terms-check\",style:{fontSize:\"12px\",color:\"#666\",cursor:\"pointer\",lineHeight:\"1.4\",userSelect:\"none\"},children:[\"Sunt de acord cu\",\" \",/*#__PURE__*/_jsx(\"a\",{href:\"https://saloanelemagic.ro/termeni-si-conditii\",target:\"_blank\",rel:\"noopener noreferrer\",style:{color:\"#FF1493\",textDecoration:\"underline\"},children:\"termenii și condițiile\"})]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"turnstile-container\",ref:turnstileContainerRef,style:{minHeight:\"0px\"}}),turnstileError&&/*#__PURE__*/_jsx(\"div\",{className:\"form-error show\",style:{marginBottom:10},children:turnstileError}),/*#__PURE__*/_jsx(\"button\",{type:\"submit\",className:\"btn-start-chat\",children:\"\\xcencepe Conversația\"}),/*#__PURE__*/_jsx(\"p\",{className:\"privacy-note\",children:\"🔒 Datele tale sunt securizate și nu vor fi partajate\"})]})]})]}):// Chat Interface\n/*#__PURE__*/_jsxs(\"div\",{className:\"chat-interface\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"chat-header\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"h3\",{children:\"Bun venit la Saloanele Magic! \"}),/*#__PURE__*/_jsx(\"small\",{className:\"version-tag\",children:\"⚠️ Versiune experimentală\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:10,alignItems:\"center\"},children:[/*#__PURE__*/_jsx(\"button\",{className:\"chat-reset-btn\",onClick:handleReset,title:\"Resetează Chat\",children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M17.65 6.35C16.2 4.9 14.21 4 12 4 7.58 4 4 7.58 4 12s3.58 8 8 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"})})}),/*#__PURE__*/_jsx(\"button\",{className:\"chat-close\",onClick:()=>setIsOpen(false),children:\"-\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"chat-messages\",children:[messages.map(msg=>/*#__PURE__*/_jsx(\"div\",{className:`chat-message ${msg.role}`,children:/*#__PURE__*/_jsxs(\"div\",{className:\"message-bubble\",style:{backgroundColor:msg.role===\"user\"?props.tint:\"white\"},children:[/*#__PURE__*/_jsx(\"div\",{dangerouslySetInnerHTML:{__html:msg.text.replace(/\\n/g,\"<br>\")}}),msg.buttons&&/*#__PURE__*/_jsx(\"div\",{className:\"chat-buttons\",children:msg.buttons.map((btn,idx)=>/*#__PURE__*/_jsx(\"button\",{className:\"chat-button\",style:{color:props.tint,borderColor:props.tint},onClick:()=>handleButtonClick(btn.action),children:btn.text},idx))})]})},msg.id)),isLoading&&/*#__PURE__*/_jsxs(\"div\",{className:\"typing-indicator show\",children:[/*#__PURE__*/_jsx(\"span\",{}),/*#__PURE__*/_jsx(\"span\",{}),/*#__PURE__*/_jsx(\"span\",{})]}),/*#__PURE__*/_jsx(\"div\",{ref:messagesEndRef})]}),isChatBlocked&&!isFeedbackActive?/*#__PURE__*/_jsx(\"div\",{className:\"chat-input-area\",style:{justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"13px\",color:\"#999\"},children:resetCountdown>0?`Chat-ul se va reseta \\xeen ${resetCountdown} secunde...`:\"Chat-ul s-a incheiat. Multumim!\"})}):/*#__PURE__*/_jsxs(\"div\",{className:\"chat-input-area\",children:[/*#__PURE__*/_jsx(\"input\",{value:inputVal,onChange:e=>setInputVal(e.target.value),onKeyDown:e=>e.key===\"Enter\"&&handleSend(),placeholder:isFeedbackActive?\"Scrie-ne părerea ta...\":\"Scrie mesajul tău aici...\",style:{borderColor:props.tint}}),/*#__PURE__*/_jsx(\"button\",{className:\"chat-send-button\",onClick:()=>handleSend(),disabled:isLoading,style:{backgroundColor:props.tint},children:\"➤\"})]})]})})}),/*#__PURE__*/_jsx(motion.button,{onClick:()=>setIsOpen(!isOpen),whileHover:{scale:1.05},whileTap:{scale:.95},className:\"chat-floating-button\",style:{backgroundColor:props.tint},children:/*#__PURE__*/_jsxs(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M7 9h2v2H7zm4 0h2v2h-2zm4 0h2v2h-2z\"})]})})]});}addPropertyControls(MagicChat,{tint:{title:\"Theme Color\",type:ControlType.Color,defaultValue:\"#FF1493\"}});// CSS extracted from magicsalon-chat-custom.html\nconst cssStyles=`\n        @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');\n\n        * { box-sizing: border-box; }\n\n        .chat-floating-button {\n            position: fixed;\n            bottom: 20px;\n            right: 20px;\n            width: 60px;\n            height: 60px;\n            background: #FF1493;\n            border: none;\n            border-radius: 50%;\n            cursor: pointer;\n            box-shadow: 0 8px 24px rgba(255, 20, 147, 0.35);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            transition: all 0.3s ease;\n            z-index: 9999;\n            animation: chatPulse 2s ease-in-out infinite;\n        }\n\n        .chat-floating-button:hover {\n            background: #D01178;\n            transform: translateY(-2px) scale(1.05);\n            box-shadow: 0 12px 32px rgba(255, 20, 147, 0.45);\n            animation: none;\n        }\n\n        @keyframes chatPulse {\n            0%, 100% { box-shadow: 0 8px 24px rgba(255, 20, 147, 0.35); }\n            50% { box-shadow: 0 8px 24px rgba(255, 20, 147, 0.5), 0 0 0 8px rgba(255, 20, 147, 0.15); }\n        }\n\n        .chat-floating-button svg {\n            width: 28px;\n            height: 28px;\n            fill: white;\n        }\n\n        .chat-window {\n            position: fixed;\n            bottom: 90px;\n            right: 20px;\n            width: 380px;\n            height: 550px;\n            background: white;\n            border-radius: 16px;\n            box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);\n            display: flex;\n            flex-direction: column;\n            z-index: 9999;\n            overflow: hidden;\n        }\n\n        .chat-header {\n            background: linear-gradient(135deg, #FF1493, #FF69B4);\n            color: white;\n            padding: 20px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n\n        .version-tag {\n            display: inline-block;\n            background: rgba(255, 255, 255, 0.2);\n            color: white;\n            padding: 3px 8px;\n            border-radius: 12px;\n            font-size: 10px;\n            margin-top: 3px;\n            font-weight: 500;\n        }\n\n        .chat-header h3 {\n            font-size: 19px;\n            font-weight: 600;\n            margin: 0;\n            margin-bottom: 2px;\n        }\n\n        .chat-close {\n            background: none;\n            border: none;\n            color: white;\n            font-size: 32px;\n            cursor: pointer;\n            padding: 0;\n            width: 35px;\n            height: 35px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-weight: 300;\n            line-height: 1;\n        }\n\n        .chat-reset-btn {\n            background: transparent;\n            border: none;\n            color: #ffffff;\n            cursor: pointer;\n            padding: 0;\n            width: 28px;\n            height: 28px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            transition: all 0.3s ease;\n        }\n\n        .chat-reset-btn svg {\n            width: 16px;\n            height: 16px;\n            fill: currentColor;\n            transition: transform 0.3s ease;\n        }\n\n        .chat-reset-btn:hover {\n            color: #FFEEFF;\n            transform: scale(1.05);\n            filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.4));\n        }\n\n        .chat-reset-btn:hover svg {\n            transform: rotate(180deg);\n        }\n\n        .chat-messages {\n            flex: 1;\n            padding: 20px;\n            overflow-y: auto;\n            -webkit-overflow-scrolling: touch;\n            overscroll-behavior: contain;\n            background: #f8f9fa;\n        }\n\n        .chat-message {\n            margin-bottom: 16px;\n            display: flex;\n        }\n\n        .chat-message.user { justify-content: flex-end; }\n        .chat-message.assistant { justify-content: flex-start; }\n\n        .message-bubble {\n            max-width: 75%;\n            padding: 12px 16px;\n            border-radius: 18px;\n            word-wrap: break-word;\n            line-height: 1.5;\n            font-size: 15px;\n        }\n\n        .chat-message.user .message-bubble {\n            color: white; /* Bg handled by inline style for tint support */\n            border-radius: 18px 18px 4px 18px;\n        }\n\n        .chat-message.assistant .message-bubble {\n            background: white;\n            color: #333;\n            border-radius: 18px 18px 18px 4px;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n        }\n\n        .chat-input-area {\n            padding: 16px;\n            background: white;\n            border-top: 1px solid #e9ecef;\n            display: flex;\n            gap: 10px;\n            align-items: center;\n        }\n\n        .chat-input-area input {\n            flex: 1;\n            min-width: 0;\n            padding: 12px 16px;\n            border: 2px solid #e9ecef;\n            border-radius: 12px;\n            font-family: 'Poppins', sans-serif;\n            font-size: 15px;\n            outline: none;\n            transition: all 0.3s ease;\n        }\n\n        .chat-input-area input:focus {\n            border-color: #FF1493;\n            box-shadow: 0 0 0 3px rgba(255, 20, 147, 0.1);\n        }\n\n        .chat-send-button {\n            background: #FF1493;\n            border: none;\n            border-radius: 12px;\n            padding: 12px 16px;\n            color: white;\n            font-weight: 700;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            flex-shrink: 0;\n            min-width: 50px;\n            max-width: 55px;\n            white-space: nowrap;\n            font-size: 22px;\n            text-align: center;\n            line-height: 1;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .chat-send-button:hover {\n            background: #D01178;\n        }\n\n        .chat-send-button:disabled {\n            background: #ccc !important;\n            cursor: not-allowed;\n        }\n\n        .chat-footer {\n            padding: 12px;\n            text-align: center;\n            font-size: 12px;\n            color: #6c757d;\n            background: #f8f9fa;\n            border-top: 1px solid #e9ecef;\n        }\n\n        .chat-footer a {\n            color: #6c757d;\n            text-decoration: underline;\n            font-weight: 600;\n        }\n\n        .chat-footer a:hover {\n            color: #495057;\n            text-decoration: underline;\n        }\n\n        .typing-indicator {\n            padding: 12px 16px;\n            background: white;\n            border-radius: 18px;\n            width: fit-content;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n            margin-bottom: 10px;\n            display: none;\n        }\n\n        .typing-indicator.show { display: block; }\n\n        .typing-indicator span {\n            display: inline-block;\n            width: 8px;\n            height: 8px;\n            background: #6c757d;\n            border-radius: 50%;\n            margin: 0 2px;\n            animation: typing 1.4s infinite;\n        }\n\n        .typing-indicator span:nth-child(2) { animation-delay: 0.2s; }\n        .typing-indicator span:nth-child(3) { animation-delay: 0.4s; }\n\n        @keyframes typing {\n            0%, 60%, 100% { transform: translateY(0); opacity: 0.5; }\n            30% { transform: translateY(-10px); opacity: 1; }\n        }\n\n        .chat-messages::-webkit-scrollbar { width: 6px; }\n        .chat-messages::-webkit-scrollbar-track { background: #f1f1f1; }\n        .chat-messages::-webkit-scrollbar-thumb { background: #FF1493; border-radius: 3px; }\n\n        .chat-buttons {\n            display: flex;\n            flex-direction: column;\n            gap: 8px;\n            margin-top: 12px;\n            justify-content: flex-start;\n            width: 100%;\n        }\n\n        .chat-button {\n            background: white;\n            color: #FF1493;\n            border: 2px solid #FF1493;\n            border-radius: 20px;\n            padding: 10px 20px;\n            font-size: 14px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            box-shadow: 0 2px 8px rgba(255, 20, 147, 0.25);\n            font-family: 'Poppins', sans-serif;\n            width: 100%;\n            text-align: center;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            white-space: pre-line;\n        }\n\n        .chat-button:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 4px 12px rgba(255, 20, 147, 0.4);\n            background: #FFF0F7;\n            border-color: #D01178;\n            color: #D01178;\n        }\n\n        .chat-welcome-form {\n            padding: 40px 30px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            height: 100%;\n            background: linear-gradient(135deg, #fff0f7 0%, #ffffff 100%);\n            position: relative;\n            flex-direction: column;\n        }\n\n        .welcome-close {\n            position: absolute;\n            top: 15px;\n            right: 15px;\n            background: none;\n            border: none;\n            color: #6c757d;\n            font-size: 28px;\n            cursor: pointer;\n            padding: 0;\n            width: 35px;\n            height: 35px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            transition: all 0.3s ease;\n            border-radius: 50%;\n        }\n\n        .welcome-close:hover {\n            background: rgba(0, 0, 0, 0.05);\n            color: #333;\n        }\n\n        .welcome-content {\n            width: 100%;\n            max-width: 350px;\n        }\n\n        .welcome-content h2 {\n            color: #FF1493;\n            margin-bottom: 10px;\n            font-size: 24px;\n        }\n\n        .welcome-content > p {\n            color: #666;\n            margin-bottom: 30px;\n            font-size: 15px;\n        }\n\n        .form-field { margin-bottom: 20px; }\n\n        .form-field label {\n            display: block;\n            color: #FF1493;\n            font-weight: 600;\n            margin-bottom: 8px;\n            font-size: 15px;\n        }\n\n        .form-field input {\n            width: 100%;\n            padding: 14px 16px;\n            border: 2px solid #e9ecef;\n            border-radius: 12px;\n            font-family: 'Poppins', sans-serif;\n            font-size: 15px;\n            outline: none;\n            transition: all 0.3s ease;\n        }\n\n        .form-field input:focus {\n            border-color: #FF1493;\n            box-shadow: 0 0 0 3px rgba(255, 20, 147, 0.1);\n        }\n\n        .btn-start-chat {\n            width: 100%;\n            background: linear-gradient(135deg, #FF1493, #FF69B4);\n            color: white;\n            border: none;\n            border-radius: 12px;\n            padding: 14px 20px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            font-size: 17px;\n            margin-top: 10px;\n        }\n\n        .btn-start-chat:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 8px 20px rgba(255, 20, 147, 0.4);\n        }\n\n        .privacy-note {\n            text-align: center;\n            font-size: 11px;\n            color: #999;\n            margin-top: 15px;\n            margin-bottom: 0;\n        }\n\n        .turnstile-container {\n            margin: 10px 0;\n            display: flex;\n            justify-content: center;\n        }\n\n        .form-error {\n            color: #dc3545;\n            font-size: 12px;\n            margin-top: 8px;\n            display: none;\n        }\n\n        .form-error.show { display: block; }\n\n        .chat-interface {\n            display: flex;\n            flex-direction: column;\n            height: 100%;\n        }\n\n        @media (max-width: 480px) {\n            .chat-floating-button {\n                width: 70px;\n                height: 70px;\n                bottom: 20px;\n                right: 20px;\n            }\n\n            .chat-floating-button svg {\n                width: 32px;\n                height: 32px;\n            }\n\n            .chat-window {\n                bottom: 100px !important;\n                right: 4vw !important;\n                left: 4vw !important;\n                width: 92vw !important;\n                max-width: 400px !important;\n                height: 70vh !important;\n                max-height: 70vh !important;\n                border-radius: 20px !important;\n                z-index: 100000;\n                box-shadow: 0 10px 40px rgba(0,0,0,0.2);\n            }\n\n            .chat-header {\n                border-top-left-radius: 20px;\n                border-top-right-radius: 20px;\n                padding-top: 20px;\n            }\n\n            .chat-welcome-form {\n                padding-top: 20px;\n                border-radius: 20px;\n                justify-content: flex-start;\n            }\n        }\n        `;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MagicChat\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MagicChatbot.map"],"mappings":"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"}