{"version":3,"file":"ChatBot.joEiFvbS.mjs","names":["_Fragment"],"sources":["https:/framerusercontent.com/modules/8hcovRRMsWmORT854PIq/4YQPt2GsokB3H2zVIDpP/ChatBot.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{motion,AnimatePresence}from\"framer-motion\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls}from\"framer\";export default function ChatBot(){const[open,setOpen]=useState(false);const[messages,setMessages]=useState([]);const[input,setInput]=useState(\"\");const[conversationHistory,setConversationHistory]=useState([]);const chatEndRef=useRef(null);const[screenWidth,setScreenWidth]=useState(window.innerWidth);const[screenHeight,setScreenHeight]=useState(window.innerHeight);const[isTyping,setIsTyping]=useState(false);const[hasIntro,setHasIntro]=useState(false);useEffect(()=>{const handleResize=()=>{setScreenWidth(window.innerWidth);setScreenHeight(window.innerHeight);};window.addEventListener(\"resize\",handleResize);return()=>window.removeEventListener(\"resize\",handleResize);},[]);const toggleChat=()=>{const newOpen=!open;setOpen(newOpen);if(newOpen&&!hasIntro){const introMessage={role:\"Bot\",content:\"Hello! I'm Don Nano, NanoSealNB's AI assistant. I'm here to help you with any GoNano-related questions you have!\"};setMessages(prev=>[...prev,introMessage]);setHasIntro(true);}};useEffect(()=>{if(chatEndRef.current){chatEndRef.current.scrollIntoView({behavior:\"smooth\"});}},[messages]);const linkify=text=>{const markdownLinkRegex=/\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)/g;let processed=text.replace(markdownLinkRegex,(_,_label,url)=>{return`<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">Click here</a>`;});const rawUrlRegex=RegExp(\"(?<![\\\"'()>])\\\\bhttps?:\\\\/\\\\/[^\\\\s<>\\\"')]+\",\"g\");processed=processed.replace(rawUrlRegex,url=>{const cleanUrl=url.replace(/[.,!?;:]+$/,\"\");return`<a href=\"${cleanUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">Click here</a>`;});return processed;};const typewriterEffect=async fullText=>{const words=fullText.split(\" \");let currentText=\"\";for(let i=0;i<words.length;i++){currentText+=(i>0?\" \":\"\")+words[i];const formatted=linkify(currentText.replaceAll(\"\\\\n\\\\n\",\"<br /><br />\"));setMessages(prev=>[...prev.slice(0,-1),{role:\"Bot\",content:formatted}]);await new Promise(r=>setTimeout(r,80));}setIsTyping(false);};const sendMessage=async()=>{if(!input.trim())return;const userMessage={role:\"User\",content:input};setMessages(prev=>[...prev,userMessage]);setConversationHistory(prev=>[...prev,{role:\"user\",content:input}]);setInput(\"\");setIsTyping(true);setMessages(prev=>[...prev,{role:\"Bot\",content:\"...\"}]);try{const res=await fetch(\"https://v0-new-project-k2jqdteu8tt.vercel.app/api/chat\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({messages:[{role:\"system\",content:\"You're chatting with NanoSealNB's Don Nano, AI Assistant.\"},...conversationHistory,{role:\"user\",content:input}]})});const reader=res.body?.getReader();const decoder=new TextDecoder;let rawResponse=\"\";let done=false;while(!done){const{value,done:doneReading}=await reader.read();done=doneReading;if(value){rawResponse+=decoder.decode(value,{stream:true});}}const matches=[...rawResponse.matchAll(/0:\"(.*?)\"/g)];const plainText=matches.map(m=>m[1]).join(\"\");await typewriterEffect(plainText);setConversationHistory(prev=>[...prev,{role:\"assistant\",content:plainText}]);}catch(err){setIsTyping(false);setMessages(prev=>[...prev.slice(0,-1),{role:\"Bot\",content:\"Something went wrong. Please try again.\"}]);}};const iconSize=Math.min(screenWidth*.12,100);const windowWidth=Math.min(screenWidth*.9,480);const windowHeight=Math.min(screenHeight*.8,640);const getRoleLabel=role=>{if(role===\"User\")return\"User:\";if(role===\"Bot\")return\"Don Nano:\";return role+\":\";};return /*#__PURE__*/_jsxs(motion.div,{initial:false,animate:{width:open?windowWidth:iconSize,height:open?windowHeight:iconSize,borderRadius:open?16:iconSize/2},transition:{duration:.3},style:{position:\"fixed\",bottom:20,right:20,background:\"#fff\",overflow:\"hidden\",boxShadow:\"0 8px 20px rgba(0,0,0,0.3)\",display:\"flex\",flexDirection:\"column\",zIndex:1e3},children:[/*#__PURE__*/_jsx(\"div\",{onClick:toggleChat,style:{background:\"#3b1d68\",color:\"white\",display:\"flex\",alignItems:\"center\",justifyContent:open?\"space-between\":\"center\",padding:open?\"18px 20px\":0,fontSize:open?20:iconSize*.4,height:open?\"auto\":\"100%\",width:\"100%\",cursor:\"pointer\",flexShrink:0},children:open?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{children:\"Don Nano, AI Assistant\"}),/*#__PURE__*/_jsx(\"button\",{style:{background:\"none\",border:\"none\",color:\"white\",fontSize:24,cursor:\"pointer\"},onClick:toggleChat,children:\"✖️\"})]}):\"💬\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:open&&/*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},exit:{opacity:0,y:30},transition:{duration:.3},style:{flex:1,display:\"flex\",flexDirection:\"column\",minHeight:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,padding:20,overflowY:\"auto\",fontSize:16,fontFamily:\"Segoe UI, sans-serif\"},children:[messages.map((m,i)=>{const previousRole=messages[i-1]?.role;const isNewSpeaker=previousRole&&previousRole!==m.role;return /*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:10,marginTop:isNewSpeaker?16:4},children:[/*#__PURE__*/_jsx(\"strong\",{children:getRoleLabel(m.role)}),\" \",m.role===\"Bot\"?/*#__PURE__*/_jsx(\"span\",{style:{wordBreak:\"break-word\"},dangerouslySetInnerHTML:{__html:linkify(m.content)}}):/*#__PURE__*/_jsx(\"span\",{children:m.content})]},i);}),/*#__PURE__*/_jsx(\"div\",{ref:chatEndRef})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",borderTop:\"1px solid #eee\",background:\"#f5f5f5\",padding:\"0 10px\"},children:[/*#__PURE__*/_jsx(\"input\",{type:\"text\",value:input,onChange:e=>setInput(e.target.value),onKeyDown:e=>e.key===\"Enter\"&&sendMessage(),placeholder:\"Type your message...\",style:{flex:1,border:\"none\",padding:16,fontSize:16,outline:\"none\",background:\"transparent\"}}),/*#__PURE__*/_jsx(\"button\",{onClick:sendMessage,style:{background:\"#3b1d68\",color:\"white\",border:\"none\",padding:\"0 16px\",fontSize:16,cursor:\"pointer\"},children:\"Send\"})]})]},\"chat\")})]});}addPropertyControls(ChatBot,{});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ChatBot\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ChatBot.map"],"mappings":"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"}