thikanaa 0.1.18 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -5,7 +5,7 @@ type Message = {
5
5
  content: string;
6
6
  };
7
7
  interface ChatPopupProps {
8
- apiUrl?: string;
8
+ apiUrl: string;
9
9
  assistantName?: string;
10
10
  initialMessage?: string;
11
11
  enablePdfUpload?: boolean;
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ type Message = {
5
5
  content: string;
6
6
  };
7
7
  interface ChatPopupProps {
8
- apiUrl?: string;
8
+ apiUrl: string;
9
9
  assistantName?: string;
10
10
  initialMessage?: string;
11
11
  enablePdfUpload?: boolean;
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
- "use strict";var C=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var re=Object.prototype.hasOwnProperty;var ae=(n,i)=>{for(var p in i)C(n,p,{get:i[p],enumerable:!0})},ne=(n,i,p,w)=>{if(i&&typeof i=="object"||typeof i=="function")for(let c of te(i))!re.call(n,c)&&c!==p&&C(n,c,{get:()=>i[c],enumerable:!(w=ee(i,c))||w.enumerable});return n};var oe=n=>ne(C({},"__esModule",{value:!0}),n);var le={};ae(le,{ChatPopup:()=>de});module.exports=oe(le);var r=require("react");var H="data:image/png;base64,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";var e=require("react/jsx-runtime"),ie=["What can you help me with?","Summarize the uploaded document","How do I get started?"],M=n=>n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),Y=n=>M(n).replace(/\n/g,"<br>"),f={Send:()=>(0,e.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,e.jsx)("path",{d:"m22 2-7 20-4-9-9-4Z"}),(0,e.jsx)("path",{d:"M22 2 11 13"})]}),Paperclip:()=>(0,e.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,e.jsx)("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),X:()=>(0,e.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,e.jsx)("path",{d:"M18 6 6 18"}),(0,e.jsx)("path",{d:"m6 6 12 12"})]}),Minimize:()=>(0,e.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,e.jsx)("path",{d:"M5 12h14"})}),FileText:()=>(0,e.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,e.jsx)("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),(0,e.jsx)("path",{d:"M14 2v4a2 2 0 0 0 2 2h4"}),(0,e.jsx)("path",{d:"M10 9H8"}),(0,e.jsx)("path",{d:"M16 13H8"}),(0,e.jsx)("path",{d:"M16 17H8"})]}),Sparkles:()=>(0,e.jsx)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,e.jsx)("path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"})})},de=({apiUrl:n="https://cerebro.malaymishra.com",assistantName:i="Thikana",initialMessage:p,enablePdfUpload:w=!0,suggestions:c=ie,onMessageSend:j,onResponseReceive:K})=>{let[b,W]=(0,r.useState)(""),[g,h]=(0,r.useState)([]),[k,A]=(0,r.useState)(!1),[v,X]=(0,r.useState)(!1),[x,U]=(0,r.useState)(()=>typeof window>"u"?null:localStorage.getItem("thikana_session_id")),y=(0,r.useRef)(x),[L,O]=(0,r.useState)({enabled:!1,pdfName:null}),[E,V]=(0,r.useState)({width:380,height:560}),[P,Z]=(0,r.useState)(!1),[J,T]=(0,r.useState)(!1),N=(0,r.useRef)(null),_=(0,r.useRef)(null),m=(0,r.useRef)(null),z=(0,r.useRef)(null),I=(0,r.useRef)(null),B=g.some(t=>t.role==="user");(0,r.useEffect)(()=>{function t(a){N.current&&!N.current.contains(a.target)&&T(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[]),(0,r.useEffect)(()=>{if(g.length===0){let t=localStorage.getItem("thikana_messages");h(t?JSON.parse(t):[{role:"assistant",content:p||`Hey, I'm ${i}. Ask me anything, or drop in a PDF and I'll dig through it for you.`}])}},[p,i,g.length]),(0,r.useEffect)(()=>{y.current=x,!(typeof window>"u")&&(x?localStorage.setItem("thikana_session_id",x):localStorage.removeItem("thikana_session_id"))},[x]),(0,r.useEffect)(()=>{(async()=>{try{let a=await fetch(`${n}/status`);if(!a.ok)return;let s=await a.json();O({enabled:!!s.rag_enabled,pdfName:s.pdf_name??null})}catch{}})()},[n]);let G=()=>{z.current?.scrollIntoView({behavior:"smooth"})};(0,r.useEffect)(()=>{G()},[g,k]);let S=async t=>{if(!t.trim()||k)return;let a={role:"user",content:t};j&&j(a);let s=[...g,a];h(s),W(""),A(!0);try{let d=await fetch(`${n}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:t,...y.current?{session_id:y.current}:{}})});if(!d.ok){let $=await d.json().catch(()=>({}));throw new Error($.error||"Failed to get response")}let o=await d.json(),l=o.answer||"";o.session_id&&o.session_id!==y.current&&U(o.session_id),K&&K(l);let u={role:"assistant",content:l},D=[...s,u];h(D),localStorage.setItem("thikana_messages",JSON.stringify(D))}catch(d){console.error("Error calling AI:",d);let o={role:"assistant",content:"Sorry, something went wrong. Please try again."},l=[...s,o];h(l),localStorage.setItem("thikana_messages",JSON.stringify(l))}finally{A(!1)}},q=async t=>{if(!t||v)return;if(!t.name.toLowerCase().endsWith(".pdf")){alert("Please select a PDF file.");return}X(!0);let a={role:"assistant",content:`Uploading <b>${M(t.name)}</b>\u2026`};h(s=>[...s,a]);try{let s=new FormData;s.append("file",t);let d=await fetch(`${n}/upload-pdf`,{method:"POST",body:s}),o=await d.json();if(!d.ok)throw new Error(o.error||"Upload failed");O({enabled:!0,pdfName:o.filename});let l={role:"assistant",content:`Got it \u2014 <b>${M(o.filename)}</b> indexed (${o.chunks} chunks). Ask me anything about it.`};h(u=>[...u,l])}catch(s){let d={role:"assistant",content:`Upload failed: ${M(s.message||"unknown error")}`};h(o=>[...o,d])}finally{X(!1),I.current&&(I.current.value="")}},F=async()=>{try{await fetch(`${n}/reset-rag`,{method:"POST"}),O({enabled:!1,pdfName:null});let t={role:"assistant",content:"PDF removed. Back to plain chat."};h(a=>[...a,t])}catch(t){console.error("Reset RAG failed",t)}};(0,r.useEffect)(()=>{m.current&&(m.current.style.height="auto",m.current.style.height=`${Math.min(m.current.scrollHeight,100)}px`)},[b]);let Q=(0,r.useCallback)(t=>{t.preventDefault(),t.target.setPointerCapture(t.pointerId),Z(!0)},[]);return(0,r.useEffect)(()=>{if(!P)return;let t=s=>{if(!_.current)return;let d=_.current.getBoundingClientRect(),o=d.right-s.clientX,l=d.bottom-s.clientY,u=window.innerWidth<=768,D=u?window.innerWidth-40:800,$=u?window.innerHeight-100:800;o>320&&o<D&&V(R=>({...R,width:o})),l>360&&l<$&&V(R=>({...R,height:l}))},a=()=>Z(!1);return window.addEventListener("pointermove",t),window.addEventListener("pointerup",a),()=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",a)}},[P]),(0,e.jsxs)("div",{className:"thk-root",ref:N,children:[J&&(0,e.jsxs)("div",{ref:_,className:`thk-popup ${P?"thk-resizing":""}`,style:{width:`${E.width}px`,height:`${E.height}px`},role:"dialog","aria-label":`${i} chat`,children:[(0,e.jsx)("div",{className:"thk-resize-handle",onPointerDown:Q,"aria-hidden":!0}),(0,e.jsxs)("header",{className:"thk-header",children:[(0,e.jsxs)("div",{className:"thk-header-left",children:[(0,e.jsx)("div",{className:"thk-avatar",children:(0,e.jsx)(f.Sparkles,{})}),(0,e.jsxs)("div",{className:"thk-header-text",children:[(0,e.jsx)("div",{className:"thk-name",children:i}),(0,e.jsxs)("div",{className:"thk-status",children:[(0,e.jsx)("span",{className:"thk-status-dot"}),"Online"]})]})]}),(0,e.jsx)("button",{className:"thk-icon-btn",onClick:()=>T(!1),"aria-label":"Close chat",title:"Close",children:(0,e.jsx)(f.Minimize,{})})]}),L.enabled&&L.pdfName&&(0,e.jsxs)("div",{className:"thk-rag-pill",children:[(0,e.jsx)(f.FileText,{}),(0,e.jsx)("span",{className:"thk-rag-name",children:L.pdfName}),(0,e.jsx)("button",{className:"thk-rag-remove",onClick:F,"aria-label":"Remove PDF",title:"Remove PDF",children:(0,e.jsx)(f.X,{})})]}),(0,e.jsxs)("div",{className:"thk-messages",children:[g.map((t,a)=>(0,e.jsx)("div",{className:`thk-msg-row ${t.role==="user"?"thk-msg-row-user":"thk-msg-row-ai"}`,children:(0,e.jsx)("div",{className:`thk-msg ${t.role==="user"?"thk-msg-user":"thk-msg-ai"}`,dangerouslySetInnerHTML:{__html:t.role==="user"?Y(t.content):t.content.includes("<")?t.content:Y(t.content)}})},a)),k&&(0,e.jsx)("div",{className:"thk-msg-row thk-msg-row-ai",children:(0,e.jsxs)("div",{className:"thk-msg thk-msg-ai thk-typing",children:[(0,e.jsx)("span",{}),(0,e.jsx)("span",{}),(0,e.jsx)("span",{})]})}),!B&&!k&&c.length>0&&(0,e.jsx)("div",{className:"thk-suggestions",children:c.map((t,a)=>(0,e.jsx)("button",{className:"thk-suggestion",onClick:()=>S(t),children:t},a))}),(0,e.jsx)("div",{ref:z})]}),(0,e.jsxs)("div",{className:"thk-input",children:[w&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("input",{ref:I,type:"file",accept:"application/pdf",style:{display:"none"},onChange:t=>{let a=t.target.files?.[0];a&&q(a)}}),(0,e.jsx)("button",{type:"button",className:"thk-icon-btn thk-attach",onClick:()=>I.current?.click(),disabled:v||k,"aria-label":"Attach PDF",title:"Attach PDF",children:(0,e.jsx)(f.Paperclip,{})})]}),(0,e.jsx)("textarea",{ref:m,rows:1,placeholder:v?"Uploading PDF\u2026":"Message Thikana...",value:b,disabled:v,onKeyDown:t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),S(b))},onChange:t=>W(t.target.value)}),(0,e.jsx)("button",{onClick:()=>S(b),disabled:!b.trim()||k||v,className:"thk-send","aria-label":"Send message",children:(0,e.jsx)(f.Send,{})})]})]}),(0,e.jsx)("button",{className:"thk-bubble",onClick:()=>T(t=>!t),"aria-label":J?"Close chat":"Open chat",children:(0,e.jsx)("img",{alt:"",src:typeof H=="string"?H:H.src})})]})};0&&(module.exports={ChatPopup});
1
+ "use client";
2
+ "use strict";var ee=Object.create;var H=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var ae=Object.getPrototypeOf,ne=Object.prototype.hasOwnProperty;var oe=(n,s)=>{for(var l in s)H(n,l,{get:s[l],enumerable:!0})},z=(n,s,l,w)=>{if(s&&typeof s=="object"||typeof s=="function")for(let c of re(s))!ne.call(n,c)&&c!==l&&H(n,c,{get:()=>s[c],enumerable:!(w=te(s,c))||w.enumerable});return n};var se=(n,s,l)=>(l=n!=null?ee(ae(n)):{},z(s||!n||!n.__esModule?H(l,"default",{value:n,enumerable:!0}):l,n)),ie=n=>z(H({},"__esModule",{value:!0}),n);var pe={};oe(pe,{ChatPopup:()=>he});module.exports=ie(pe);var r=require("react"),Y=se(require("marked-react"));var M="data:image/png;base64,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";var e=require("react/jsx-runtime"),le=["What can you help me with?","Summarize the uploaded document","How do I get started?"],f={Send:()=>(0,e.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,e.jsx)("path",{d:"m22 2-7 20-4-9-9-4Z"}),(0,e.jsx)("path",{d:"M22 2 11 13"})]}),Paperclip:()=>(0,e.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,e.jsx)("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),X:()=>(0,e.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,e.jsx)("path",{d:"M18 6 6 18"}),(0,e.jsx)("path",{d:"m6 6 12 12"})]}),Minimize:()=>(0,e.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,e.jsx)("path",{d:"M5 12h14"})}),FileText:()=>(0,e.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,e.jsx)("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),(0,e.jsx)("path",{d:"M14 2v4a2 2 0 0 0 2 2h4"}),(0,e.jsx)("path",{d:"M10 9H8"}),(0,e.jsx)("path",{d:"M16 13H8"}),(0,e.jsx)("path",{d:"M16 17H8"})]}),Sparkles:()=>(0,e.jsx)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,e.jsx)("path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"})})},he=({apiUrl:n="https://cerebro.malaymishra.com",assistantName:s="Thikana",initialMessage:l,enablePdfUpload:w=!0,suggestions:c=le,onMessageSend:C,onResponseReceive:j})=>{let[b,K]=(0,r.useState)(""),[g,p]=(0,r.useState)([]),[k,W]=(0,r.useState)(!1),[v,A]=(0,r.useState)(!1),[x,U]=(0,r.useState)(()=>typeof window>"u"?null:localStorage.getItem("thikana_session_id")),y=(0,r.useRef)(x),[O,P]=(0,r.useState)({enabled:!1,pdfName:null}),[X,E]=(0,r.useState)({width:380,height:560}),[L,V]=(0,r.useState)(!1),[Z,N]=(0,r.useState)(!1),T=(0,r.useRef)(null),S=(0,r.useRef)(null),m=(0,r.useRef)(null),J=(0,r.useRef)(null),I=(0,r.useRef)(null),B=g.some(t=>t.role==="user");(0,r.useEffect)(()=>{function t(a){T.current&&!T.current.contains(a.target)&&N(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[]),(0,r.useEffect)(()=>{if(g.length===0){let t=localStorage.getItem("thikana_messages");p(t?JSON.parse(t):[{role:"assistant",content:l||`Hey, I'm ${s}. Ask me anything, or drop in a PDF and I'll dig through it for you.`}])}},[l,s,g.length]),(0,r.useEffect)(()=>{y.current=x,!(typeof window>"u")&&(x?localStorage.setItem("thikana_session_id",x):localStorage.removeItem("thikana_session_id"))},[x]),(0,r.useEffect)(()=>{(async()=>{try{let a=await fetch(`${n}/status`);if(!a.ok)return;let i=await a.json();P({enabled:!!i.rag_enabled,pdfName:i.pdf_name??null})}catch{}})()},[n]);let G=()=>{J.current?.scrollIntoView({behavior:"smooth"})};(0,r.useEffect)(()=>{G()},[g,k]);let _=async t=>{if(!t.trim()||k)return;let a={role:"user",content:t};C&&C(a);let i=[...g,a];p(i),K(""),W(!0);try{let d=await fetch(`${n}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:t,...y.current?{session_id:y.current}:{}})});if(!d.ok){let $=await d.json().catch(()=>({}));throw new Error($.error||"Failed to get response")}let o=await d.json(),h=o.answer||"";o.session_id&&o.session_id!==y.current&&U(o.session_id),j&&j(h);let u={role:"assistant",content:h},D=[...i,u];p(D),localStorage.setItem("thikana_messages",JSON.stringify(D))}catch(d){console.error("Error calling AI:",d);let o={role:"assistant",content:"Sorry, something went wrong. Please try again."},h=[...i,o];p(h),localStorage.setItem("thikana_messages",JSON.stringify(h))}finally{W(!1)}},q=async t=>{if(!t||v)return;if(!t.name.toLowerCase().endsWith(".pdf")){alert("Please select a PDF file.");return}A(!0);let a={role:"assistant",content:`Uploading \`${t.name}\`\u2026`};p(i=>[...i,a]);try{let i=new FormData;i.append("file",t);let d=await fetch(`${n}/upload-pdf`,{method:"POST",body:i}),o=await d.json();if(!d.ok)throw new Error(o.error||"Upload failed");P({enabled:!0,pdfName:o.filename});let h={role:"assistant",content:`Got it \u2014 \`${o.filename}\` indexed (${o.chunks} chunks). Ask me anything about it.`};p(u=>[...u,h])}catch(i){let d={role:"assistant",content:`Upload failed: ${i.message||"unknown error"}`};p(o=>[...o,d])}finally{A(!1),I.current&&(I.current.value="")}},F=async()=>{try{await fetch(`${n}/reset-rag`,{method:"POST"}),P({enabled:!1,pdfName:null});let t={role:"assistant",content:"PDF removed. Back to plain chat."};p(a=>[...a,t])}catch(t){console.error("Reset RAG failed",t)}};(0,r.useEffect)(()=>{m.current&&(m.current.style.height="auto",m.current.style.height=`${Math.min(m.current.scrollHeight,100)}px`)},[b]);let Q=(0,r.useCallback)(t=>{t.preventDefault(),t.target.setPointerCapture(t.pointerId),V(!0)},[]);return(0,r.useEffect)(()=>{if(!L)return;let t=i=>{if(!S.current)return;let d=S.current.getBoundingClientRect(),o=d.right-i.clientX,h=d.bottom-i.clientY,u=window.innerWidth<=768,D=u?window.innerWidth-40:800,$=u?window.innerHeight-100:800;o>320&&o<D&&E(R=>({...R,width:o})),h>360&&h<$&&E(R=>({...R,height:h}))},a=()=>V(!1);return window.addEventListener("pointermove",t),window.addEventListener("pointerup",a),()=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",a)}},[L]),(0,e.jsxs)("div",{className:"thk-root",ref:T,children:[Z&&(0,e.jsxs)("div",{ref:S,className:`thk-popup ${L?"thk-resizing":""}`,style:{width:`${X.width}px`,height:`${X.height}px`},role:"dialog","aria-label":`${s} chat`,children:[(0,e.jsx)("div",{className:"thk-resize-handle",onPointerDown:Q,"aria-hidden":!0}),(0,e.jsxs)("header",{className:"thk-header",children:[(0,e.jsxs)("div",{className:"thk-header-left",children:[(0,e.jsx)("div",{className:"thk-avatar",children:(0,e.jsx)(f.Sparkles,{})}),(0,e.jsxs)("div",{className:"thk-header-text",children:[(0,e.jsx)("div",{className:"thk-name",children:s}),(0,e.jsxs)("div",{className:"thk-status",children:[(0,e.jsx)("span",{className:"thk-status-dot"}),"Online"]})]})]}),(0,e.jsx)("button",{className:"thk-icon-btn",onClick:()=>N(!1),"aria-label":"Close chat",title:"Close",children:(0,e.jsx)(f.Minimize,{})})]}),O.enabled&&O.pdfName&&(0,e.jsxs)("div",{className:"thk-rag-pill",children:[(0,e.jsx)(f.FileText,{}),(0,e.jsx)("span",{className:"thk-rag-name",children:O.pdfName}),(0,e.jsx)("button",{className:"thk-rag-remove",onClick:F,"aria-label":"Remove PDF",title:"Remove PDF",children:(0,e.jsx)(f.X,{})})]}),(0,e.jsxs)("div",{className:"thk-messages",children:[g.map((t,a)=>(0,e.jsx)("div",{className:`thk-msg-row ${t.role==="user"?"thk-msg-row-user":"thk-msg-row-ai"}`,children:(0,e.jsx)("div",{className:`thk-msg ${t.role==="user"?"thk-msg-user":"thk-msg-ai"}`,children:t.role==="user"?t.content:(0,e.jsx)(Y.default,{children:t.content})})},a)),k&&(0,e.jsx)("div",{className:"thk-msg-row thk-msg-row-ai",children:(0,e.jsxs)("div",{className:"thk-msg thk-msg-ai thk-typing",children:[(0,e.jsx)("span",{}),(0,e.jsx)("span",{}),(0,e.jsx)("span",{})]})}),!B&&!k&&c.length>0&&(0,e.jsx)("div",{className:"thk-suggestions",children:c.map((t,a)=>(0,e.jsx)("button",{className:"thk-suggestion",onClick:()=>_(t),children:t},a))}),(0,e.jsx)("div",{ref:J})]}),(0,e.jsxs)("div",{className:"thk-input",children:[w&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("input",{ref:I,type:"file",accept:"application/pdf",style:{display:"none"},onChange:t=>{let a=t.target.files?.[0];a&&q(a)}}),(0,e.jsx)("button",{type:"button",className:"thk-icon-btn thk-attach",onClick:()=>I.current?.click(),disabled:v||k,"aria-label":"Attach PDF",title:"Attach PDF",children:(0,e.jsx)(f.Paperclip,{})})]}),(0,e.jsx)("textarea",{ref:m,rows:1,placeholder:v?"Uploading PDF\u2026":"Message Thikana...",value:b,disabled:v,onKeyDown:t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),_(b))},onChange:t=>K(t.target.value)}),(0,e.jsx)("button",{onClick:()=>_(b),disabled:!b.trim()||k||v,className:"thk-send","aria-label":"Send message",children:(0,e.jsx)(f.Send,{})})]})]}),(0,e.jsx)("button",{className:"thk-bubble",onClick:()=>N(t=>!t),"aria-label":Z?"Close chat":"Open chat",children:(0,e.jsx)("img",{alt:"",src:typeof M=="string"?M:M.src})})]})};0&&(module.exports={ChatPopup});
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/chat-popup.tsx"],"sourcesContent":["export * from \"./components/chat-popup\";\n","import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport \"./chat-popup.css\";\n\nimport chatbot from \"../assets/chatbot-black.png\";\n\ntype Message = {\n role: \"user\" | \"assistant\" | \"system\";\n content: string;\n};\n\nexport interface ChatPopupProps {\n apiUrl?: string;\n assistantName?: string;\n initialMessage?: string;\n enablePdfUpload?: boolean;\n suggestions?: string[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n}\n\nconst DEFAULT_SUGGESTIONS = [\n \"What can you help me with?\",\n \"Summarize the uploaded document\",\n \"How do I get started?\",\n];\n\nconst escapeHtml = (s: string) =>\n s\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n\nconst renderText = (s: string) => escapeHtml(s).replace(/\\n/g, \"<br>\");\n\n// shadcn-style inline icons (lucide) — keeps zero icon deps\nconst Icon = {\n Send: () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m22 2-7 20-4-9-9-4Z\" />\n <path d=\"M22 2 11 13\" />\n </svg>\n ),\n Paperclip: () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n ),\n X: () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n ),\n Minimize: () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M5 12h14\" />\n </svg>\n ),\n FileText: () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M10 9H8\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n </svg>\n ),\n Sparkles: () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\" />\n </svg>\n ),\n};\n\nexport const ChatPopup = ({\n apiUrl = \"https://cerebro.malaymishra.com\",\n assistantName = \"Thikana\",\n initialMessage,\n enablePdfUpload = true,\n suggestions = DEFAULT_SUGGESTIONS,\n onMessageSend,\n onResponseReceive,\n}: ChatPopupProps) => {\n const [input, setInput] = useState<string>(\"\");\n const [internalMessages, setInternalMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isUploading, setIsUploading] = useState(false);\n const [sessionId, setSessionId] = useState<string | null>(() => {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(\"thikana_session_id\");\n });\n const sessionIdRef = useRef<string | null>(sessionId);\n const [ragInfo, setRagInfo] = useState<{ enabled: boolean; pdfName: string | null }>({\n enabled: false,\n pdfName: null,\n });\n const [dimensions, setDimensions] = useState({ width: 380, height: 560 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const hasUserMessages = internalMessages.some((m) => m.role === \"user\");\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpenPopup(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (internalMessages.length === 0) {\n const savedMsgs = localStorage.getItem(\"thikana_messages\");\n if (savedMsgs) {\n setInternalMessages(JSON.parse(savedMsgs));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hey, I'm ${assistantName}. Ask me anything, or drop in a PDF and I'll dig through it for you.`,\n },\n ]);\n }\n }\n }, [initialMessage, assistantName, internalMessages.length]);\n\n useEffect(() => {\n sessionIdRef.current = sessionId;\n if (typeof window === \"undefined\") return;\n if (sessionId) {\n localStorage.setItem(\"thikana_session_id\", sessionId);\n } else {\n localStorage.removeItem(\"thikana_session_id\");\n }\n }, [sessionId]);\n\n useEffect(() => {\n const fetchStatus = async () => {\n try {\n const res = await fetch(`${apiUrl}/status`);\n if (!res.ok) return;\n const data = await res.json();\n setRagInfo({\n enabled: !!data.rag_enabled,\n pdfName: data.pdf_name ?? null,\n });\n } catch {\n // server not reachable — ignore\n }\n };\n fetchStatus();\n }, [apiUrl]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [internalMessages, isLoading]);\n\n const callModel = async (userInput: string) => {\n if (!userInput.trim() || isLoading) return;\n\n const userMessage: Message = { role: \"user\", content: userInput };\n if (onMessageSend) onMessageSend(userMessage);\n\n const newMessages = [...internalMessages, userMessage];\n setInternalMessages(newMessages);\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const response = await fetch(`${apiUrl}/chat`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n question: userInput,\n ...(sessionIdRef.current ? { session_id: sessionIdRef.current } : {}),\n }),\n });\n\n if (!response.ok) {\n const err = await response.json().catch(() => ({}));\n throw new Error(err.error || \"Failed to get response\");\n }\n\n const data = await response.json();\n const answer: string = data.answer || \"\";\n\n if (data.session_id && data.session_id !== sessionIdRef.current) {\n setSessionId(data.session_id);\n }\n\n if (onResponseReceive) onResponseReceive(answer);\n\n const assistantMessage: Message = { role: \"assistant\", content: answer };\n const updated = [...newMessages, assistantMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const failMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, something went wrong. Please try again.\",\n };\n const updated = [...newMessages, failMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } finally {\n setIsLoading(false);\n }\n };\n\n const uploadPdf = async (file: File) => {\n if (!file || isUploading) return;\n if (!file.name.toLowerCase().endsWith(\".pdf\")) {\n alert(\"Please select a PDF file.\");\n return;\n }\n\n setIsUploading(true);\n const noticeMsg: Message = {\n role: \"assistant\",\n content: `Uploading <b>${escapeHtml(file.name)}</b>…`,\n };\n setInternalMessages((prev) => [...prev, noticeMsg]);\n\n try {\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const res = await fetch(`${apiUrl}/upload-pdf`, {\n method: \"POST\",\n body: formData,\n });\n\n const data = await res.json();\n if (!res.ok) throw new Error(data.error || \"Upload failed\");\n\n setRagInfo({ enabled: true, pdfName: data.filename });\n\n const successMsg: Message = {\n role: \"assistant\",\n content: `Got it — <b>${escapeHtml(data.filename)}</b> indexed (${data.chunks} chunks). Ask me anything about it.`,\n };\n setInternalMessages((prev) => [...prev, successMsg]);\n } catch (e: any) {\n const errMsg: Message = {\n role: \"assistant\",\n content: `Upload failed: ${escapeHtml(e.message || \"unknown error\")}`,\n };\n setInternalMessages((prev) => [...prev, errMsg]);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) fileInputRef.current.value = \"\";\n }\n };\n\n const resetRag = async () => {\n try {\n await fetch(`${apiUrl}/reset-rag`, { method: \"POST\" });\n setRagInfo({ enabled: false, pdfName: null });\n const msg: Message = {\n role: \"assistant\",\n content: \"PDF removed. Back to plain chat.\",\n };\n setInternalMessages((prev) => [...prev, msg]);\n } catch (e) {\n console.error(\"Reset RAG failed\", e);\n }\n };\n\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 100)}px`;\n }\n }, [input]);\n\n const handlePointerDown = useCallback((e: React.PointerEvent) => {\n e.preventDefault();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handlePointerMove = (e: PointerEvent) => {\n if (!wrapperRef.current) return;\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n const isMobile = window.innerWidth <= 768;\n const maxW = isMobile ? window.innerWidth - 40 : 800;\n const maxH = isMobile ? window.innerHeight - 100 : 800;\n if (newWidth > 320 && newWidth < maxW) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 360 && newHeight < maxH) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handlePointerUp = () => setIsResizing(false);\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"thk-root\" ref={containerRef}>\n {openPopup && (\n <div\n ref={wrapperRef}\n className={`thk-popup ${isResizing ? \"thk-resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n }}\n role=\"dialog\"\n aria-label={`${assistantName} chat`}\n >\n <div className=\"thk-resize-handle\" onPointerDown={handlePointerDown} aria-hidden />\n\n <header className=\"thk-header\">\n <div className=\"thk-header-left\">\n <div className=\"thk-avatar\">\n <Icon.Sparkles />\n </div>\n <div className=\"thk-header-text\">\n <div className=\"thk-name\">{assistantName}</div>\n <div className=\"thk-status\">\n <span className=\"thk-status-dot\" />\n Online\n </div>\n </div>\n </div>\n <button\n className=\"thk-icon-btn\"\n onClick={() => setOpenPopup(false)}\n aria-label=\"Close chat\"\n title=\"Close\"\n >\n <Icon.Minimize />\n </button>\n </header>\n\n {ragInfo.enabled && ragInfo.pdfName && (\n <div className=\"thk-rag-pill\">\n <Icon.FileText />\n <span className=\"thk-rag-name\">{ragInfo.pdfName}</span>\n <button\n className=\"thk-rag-remove\"\n onClick={resetRag}\n aria-label=\"Remove PDF\"\n title=\"Remove PDF\"\n >\n <Icon.X />\n </button>\n </div>\n )}\n\n <div className=\"thk-messages\">\n {internalMessages.map((msg, index) => (\n <div\n key={index}\n className={`thk-msg-row ${msg.role === \"user\" ? \"thk-msg-row-user\" : \"thk-msg-row-ai\"}`}\n >\n <div\n className={`thk-msg ${msg.role === \"user\" ? \"thk-msg-user\" : \"thk-msg-ai\"}`}\n dangerouslySetInnerHTML={{\n __html:\n msg.role === \"user\"\n ? renderText(msg.content)\n : msg.content.includes(\"<\")\n ? msg.content\n : renderText(msg.content),\n }}\n />\n </div>\n ))}\n\n {isLoading && (\n <div className=\"thk-msg-row thk-msg-row-ai\">\n <div className=\"thk-msg thk-msg-ai thk-typing\">\n <span /><span /><span />\n </div>\n </div>\n )}\n\n {!hasUserMessages && !isLoading && suggestions.length > 0 && (\n <div className=\"thk-suggestions\">\n {suggestions.map((s, i) => (\n <button\n key={i}\n className=\"thk-suggestion\"\n onClick={() => callModel(s)}\n >\n {s}\n </button>\n ))}\n </div>\n )}\n\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"thk-input\">\n {enablePdfUpload && (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"application/pdf\"\n style={{ display: \"none\" }}\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) uploadPdf(f);\n }}\n />\n <button\n type=\"button\"\n className=\"thk-icon-btn thk-attach\"\n onClick={() => fileInputRef.current?.click()}\n disabled={isUploading || isLoading}\n aria-label=\"Attach PDF\"\n title=\"Attach PDF\"\n >\n <Icon.Paperclip />\n </button>\n </>\n )}\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder={isUploading ? \"Uploading PDF…\" : \"Message Thikana...\"}\n value={input}\n disabled={isUploading}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n callModel(input);\n }\n }}\n onChange={(e) => setInput(e.target.value)}\n />\n <button\n onClick={() => callModel(input)}\n disabled={!input.trim() || isLoading || isUploading}\n className=\"thk-send\"\n aria-label=\"Send message\"\n >\n <Icon.Send />\n </button>\n </div>\n </div>\n )}\n\n <button\n className=\"thk-bubble\"\n onClick={() => setOpenPopup((prev) => !prev)}\n aria-label={openPopup ? \"Close chat\" : \"Open chat\"}\n >\n <img\n alt=\"\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </button>\n </div>\n );\n};\n"],"mappings":"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","names":["index_exports","__export","ChatPopup","__toCommonJS","import_react","import_jsx_runtime","DEFAULT_SUGGESTIONS","escapeHtml","s","renderText","Icon","ChatPopup","apiUrl","assistantName","initialMessage","enablePdfUpload","suggestions","onMessageSend","onResponseReceive","input","setInput","internalMessages","setInternalMessages","isLoading","setIsLoading","isUploading","setIsUploading","sessionId","setSessionId","sessionIdRef","ragInfo","setRagInfo","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","wrapperRef","textareaRef","messagesEndRef","fileInputRef","hasUserMessages","m","handleClickOutside","event","savedMsgs","res","data","scrollToBottom","callModel","userInput","userMessage","newMessages","response","err","answer","assistantMessage","updated","error","failMessage","uploadPdf","file","noticeMsg","prev","formData","successMsg","e","errMsg","resetRag","msg","handlePointerDown","handlePointerMove","rect","newWidth","newHeight","isMobile","maxW","maxH","handlePointerUp","index","i","f","chatbot_black_default"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/chat-popup.tsx"],"sourcesContent":["export * from \"./components/chat-popup\";\n","\"use client\";\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport Markdown from \"marked-react\";\nimport \"./chat-popup.css\";\n\nimport chatbot from \"../assets/chatbot-black.png\";\n\ntype Message = {\n role: \"user\" | \"assistant\" | \"system\";\n content: string;\n};\n\nexport interface ChatPopupProps {\n apiUrl: string;\n assistantName?: string;\n initialMessage?: string;\n enablePdfUpload?: boolean;\n suggestions?: string[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n}\n\nconst DEFAULT_SUGGESTIONS = [\n \"What can you help me with?\",\n \"Summarize the uploaded document\",\n \"How do I get started?\",\n];\n\n// shadcn-style inline icons (lucide) — keeps zero icon deps\nconst Icon = {\n Send: () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m22 2-7 20-4-9-9-4Z\" />\n <path d=\"M22 2 11 13\" />\n </svg>\n ),\n Paperclip: () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n ),\n X: () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n ),\n Minimize: () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n ),\n FileText: () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M10 9H8\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n </svg>\n ),\n Sparkles: () => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\" />\n </svg>\n ),\n};\n\nexport const ChatPopup = ({\n apiUrl = \"https://cerebro.malaymishra.com\",\n assistantName = \"Thikana\",\n initialMessage,\n enablePdfUpload = true,\n suggestions = DEFAULT_SUGGESTIONS,\n onMessageSend,\n onResponseReceive,\n}: ChatPopupProps) => {\n const [input, setInput] = useState<string>(\"\");\n const [internalMessages, setInternalMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isUploading, setIsUploading] = useState(false);\n const [sessionId, setSessionId] = useState<string | null>(() => {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(\"thikana_session_id\");\n });\n const sessionIdRef = useRef<string | null>(sessionId);\n const [ragInfo, setRagInfo] = useState<{\n enabled: boolean;\n pdfName: string | null;\n }>({\n enabled: false,\n pdfName: null,\n });\n const [dimensions, setDimensions] = useState({ width: 380, height: 560 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const hasUserMessages = internalMessages.some((m) => m.role === \"user\");\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpenPopup(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (internalMessages.length === 0) {\n const savedMsgs = localStorage.getItem(\"thikana_messages\");\n if (savedMsgs) {\n setInternalMessages(JSON.parse(savedMsgs));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hey, I'm ${assistantName}. Ask me anything, or drop in a PDF and I'll dig through it for you.`,\n },\n ]);\n }\n }\n }, [initialMessage, assistantName, internalMessages.length]);\n\n useEffect(() => {\n sessionIdRef.current = sessionId;\n if (typeof window === \"undefined\") return;\n if (sessionId) {\n localStorage.setItem(\"thikana_session_id\", sessionId);\n } else {\n localStorage.removeItem(\"thikana_session_id\");\n }\n }, [sessionId]);\n\n useEffect(() => {\n const fetchStatus = async () => {\n try {\n const res = await fetch(`${apiUrl}/status`);\n if (!res.ok) return;\n const data = await res.json();\n setRagInfo({\n enabled: !!data.rag_enabled,\n pdfName: data.pdf_name ?? null,\n });\n } catch {\n // server not reachable — ignore\n }\n };\n fetchStatus();\n }, [apiUrl]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [internalMessages, isLoading]);\n\n const callModel = async (userInput: string) => {\n if (!userInput.trim() || isLoading) return;\n\n const userMessage: Message = { role: \"user\", content: userInput };\n if (onMessageSend) onMessageSend(userMessage);\n\n const newMessages = [...internalMessages, userMessage];\n setInternalMessages(newMessages);\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const response = await fetch(`${apiUrl}/chat`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n question: userInput,\n ...(sessionIdRef.current ? { session_id: sessionIdRef.current } : {}),\n }),\n });\n\n if (!response.ok) {\n const err = await response.json().catch(() => ({}));\n throw new Error(err.error || \"Failed to get response\");\n }\n\n const data = await response.json();\n const answer: string = data.answer || \"\";\n\n if (data.session_id && data.session_id !== sessionIdRef.current) {\n setSessionId(data.session_id);\n }\n\n if (onResponseReceive) onResponseReceive(answer);\n\n const assistantMessage: Message = { role: \"assistant\", content: answer };\n const updated = [...newMessages, assistantMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const failMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, something went wrong. Please try again.\",\n };\n const updated = [...newMessages, failMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } finally {\n setIsLoading(false);\n }\n };\n\n const uploadPdf = async (file: File) => {\n if (!file || isUploading) return;\n if (!file.name.toLowerCase().endsWith(\".pdf\")) {\n alert(\"Please select a PDF file.\");\n return;\n }\n\n setIsUploading(true);\n const noticeMsg: Message = {\n role: \"assistant\",\n content: `Uploading \\`${file.name}\\`…`,\n };\n setInternalMessages((prev) => [...prev, noticeMsg]);\n\n try {\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const res = await fetch(`${apiUrl}/upload-pdf`, {\n method: \"POST\",\n body: formData,\n });\n\n const data = await res.json();\n if (!res.ok) throw new Error(data.error || \"Upload failed\");\n\n setRagInfo({ enabled: true, pdfName: data.filename });\n\n const successMsg: Message = {\n role: \"assistant\",\n content: `Got it — \\`${data.filename}\\` indexed (${data.chunks} chunks). Ask me anything about it.`,\n };\n setInternalMessages((prev) => [...prev, successMsg]);\n } catch (e: any) {\n const errMsg: Message = {\n role: \"assistant\",\n content: `Upload failed: ${e.message || \"unknown error\"}`,\n };\n setInternalMessages((prev) => [...prev, errMsg]);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) fileInputRef.current.value = \"\";\n }\n };\n\n const resetRag = async () => {\n try {\n await fetch(`${apiUrl}/reset-rag`, { method: \"POST\" });\n setRagInfo({ enabled: false, pdfName: null });\n const msg: Message = {\n role: \"assistant\",\n content: \"PDF removed. Back to plain chat.\",\n };\n setInternalMessages((prev) => [...prev, msg]);\n } catch (e) {\n console.error(\"Reset RAG failed\", e);\n }\n };\n\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 100)}px`;\n }\n }, [input]);\n\n const handlePointerDown = useCallback((e: React.PointerEvent) => {\n e.preventDefault();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handlePointerMove = (e: PointerEvent) => {\n if (!wrapperRef.current) return;\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n const isMobile = window.innerWidth <= 768;\n const maxW = isMobile ? window.innerWidth - 40 : 800;\n const maxH = isMobile ? window.innerHeight - 100 : 800;\n if (newWidth > 320 && newWidth < maxW) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 360 && newHeight < maxH) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handlePointerUp = () => setIsResizing(false);\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"thk-root\" ref={containerRef}>\n {openPopup && (\n <div\n ref={wrapperRef}\n className={`thk-popup ${isResizing ? \"thk-resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n }}\n role=\"dialog\"\n aria-label={`${assistantName} chat`}\n >\n <div\n className=\"thk-resize-handle\"\n onPointerDown={handlePointerDown}\n aria-hidden\n />\n\n <header className=\"thk-header\">\n <div className=\"thk-header-left\">\n <div className=\"thk-avatar\">\n <Icon.Sparkles />\n </div>\n <div className=\"thk-header-text\">\n <div className=\"thk-name\">{assistantName}</div>\n <div className=\"thk-status\">\n <span className=\"thk-status-dot\" />\n Online\n </div>\n </div>\n </div>\n <button\n className=\"thk-icon-btn\"\n onClick={() => setOpenPopup(false)}\n aria-label=\"Close chat\"\n title=\"Close\"\n >\n <Icon.Minimize />\n </button>\n </header>\n\n {ragInfo.enabled && ragInfo.pdfName && (\n <div className=\"thk-rag-pill\">\n <Icon.FileText />\n <span className=\"thk-rag-name\">{ragInfo.pdfName}</span>\n <button\n className=\"thk-rag-remove\"\n onClick={resetRag}\n aria-label=\"Remove PDF\"\n title=\"Remove PDF\"\n >\n <Icon.X />\n </button>\n </div>\n )}\n\n <div className=\"thk-messages\">\n {internalMessages.map((msg, index) => (\n <div\n key={index}\n className={`thk-msg-row ${msg.role === \"user\" ? \"thk-msg-row-user\" : \"thk-msg-row-ai\"}`}\n >\n <div\n className={`thk-msg ${msg.role === \"user\" ? \"thk-msg-user\" : \"thk-msg-ai\"}`}\n >\n {msg.role === \"user\" ? (\n msg.content\n ) : (\n <Markdown>{msg.content}</Markdown>\n )}\n </div>\n </div>\n ))}\n\n {isLoading && (\n <div className=\"thk-msg-row thk-msg-row-ai\">\n <div className=\"thk-msg thk-msg-ai thk-typing\">\n <span />\n <span />\n <span />\n </div>\n </div>\n )}\n\n {!hasUserMessages && !isLoading && suggestions.length > 0 && (\n <div className=\"thk-suggestions\">\n {suggestions.map((s, i) => (\n <button\n key={i}\n className=\"thk-suggestion\"\n onClick={() => callModel(s)}\n >\n {s}\n </button>\n ))}\n </div>\n )}\n\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"thk-input\">\n {enablePdfUpload && (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"application/pdf\"\n style={{ display: \"none\" }}\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) uploadPdf(f);\n }}\n />\n <button\n type=\"button\"\n className=\"thk-icon-btn thk-attach\"\n onClick={() => fileInputRef.current?.click()}\n disabled={isUploading || isLoading}\n aria-label=\"Attach PDF\"\n title=\"Attach PDF\"\n >\n <Icon.Paperclip />\n </button>\n </>\n )}\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder={\n isUploading ? \"Uploading PDF…\" : \"Message Thikana...\"\n }\n value={input}\n disabled={isUploading}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n callModel(input);\n }\n }}\n onChange={(e) => setInput(e.target.value)}\n />\n <button\n onClick={() => callModel(input)}\n disabled={!input.trim() || isLoading || isUploading}\n className=\"thk-send\"\n aria-label=\"Send message\"\n >\n <Icon.Send />\n </button>\n </div>\n </div>\n )}\n\n <button\n className=\"thk-bubble\"\n onClick={() => setOpenPopup((prev) => !prev)}\n aria-label={openPopup ? \"Close chat\" : \"Open chat\"}\n >\n <img\n alt=\"\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </button>\n </div>\n );\n};\n"],"mappings":"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","names":["index_exports","__export","ChatPopup","__toCommonJS","import_react","import_marked_react","import_jsx_runtime","DEFAULT_SUGGESTIONS","Icon","ChatPopup","apiUrl","assistantName","initialMessage","enablePdfUpload","suggestions","onMessageSend","onResponseReceive","input","setInput","internalMessages","setInternalMessages","isLoading","setIsLoading","isUploading","setIsUploading","sessionId","setSessionId","sessionIdRef","ragInfo","setRagInfo","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","wrapperRef","textareaRef","messagesEndRef","fileInputRef","hasUserMessages","m","handleClickOutside","event","savedMsgs","res","data","scrollToBottom","callModel","userInput","userMessage","newMessages","response","err","answer","assistantMessage","updated","error","failMessage","uploadPdf","file","noticeMsg","prev","formData","successMsg","e","errMsg","resetRag","msg","handlePointerDown","handlePointerMove","rect","newWidth","newHeight","isMobile","maxW","maxH","handlePointerUp","index","Markdown","s","i","f","chatbot_black_default"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,3 @@
1
- import{useState as h,useRef as u,useEffect as c,useCallback as ae}from"react";var H="data:image/png;base64,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";import{Fragment as oe,jsx as t,jsxs as o}from"react/jsx-runtime";var ne=["What can you help me with?","Summarize the uploaded document","How do I get started?"],M=d=>d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),U=d=>M(d).replace(/\n/g,"<br>"),f={Send:()=>o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"m22 2-7 20-4-9-9-4Z"}),t("path",{d:"M22 2 11 13"})]}),Paperclip:()=>t("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),X:()=>o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M18 6 6 18"}),t("path",{d:"m6 6 12 12"})]}),Minimize:()=>t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:t("path",{d:"M5 12h14"})}),FileText:()=>o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),t("path",{d:"M14 2v4a2 2 0 0 0 2 2h4"}),t("path",{d:"M10 9H8"}),t("path",{d:"M16 13H8"}),t("path",{d:"M16 17H8"})]}),Sparkles:()=>t("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t("path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"})})},ge=({apiUrl:d="https://cerebro.malaymishra.com",assistantName:w="Thikana",initialMessage:C,enablePdfUpload:B=!0,suggestions:j=ne,onMessageSend:K,onResponseReceive:W})=>{let[b,A]=h(""),[p,l]=h([]),[g,X]=h(!1),[v,E]=h(!1),[x,G]=h(()=>typeof window>"u"?null:localStorage.getItem("thikana_session_id")),y=u(x),[L,O]=h({enabled:!1,pdfName:null}),[V,Z]=h({width:380,height:560}),[P,J]=h(!1),[z,T]=h(!1),N=u(null),_=u(null),m=u(null),Y=u(null),I=u(null),q=p.some(e=>e.role==="user");c(()=>{function e(r){N.current&&!N.current.contains(r.target)&&T(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),c(()=>{if(p.length===0){let e=localStorage.getItem("thikana_messages");l(e?JSON.parse(e):[{role:"assistant",content:C||`Hey, I'm ${w}. Ask me anything, or drop in a PDF and I'll dig through it for you.`}])}},[C,w,p.length]),c(()=>{y.current=x,!(typeof window>"u")&&(x?localStorage.setItem("thikana_session_id",x):localStorage.removeItem("thikana_session_id"))},[x]),c(()=>{(async()=>{try{let r=await fetch(`${d}/status`);if(!r.ok)return;let n=await r.json();O({enabled:!!n.rag_enabled,pdfName:n.pdf_name??null})}catch{}})()},[d]);let F=()=>{Y.current?.scrollIntoView({behavior:"smooth"})};c(()=>{F()},[p,g]);let S=async e=>{if(!e.trim()||g)return;let r={role:"user",content:e};K&&K(r);let n=[...p,r];l(n),A(""),X(!0);try{let s=await fetch(`${d}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:e,...y.current?{session_id:y.current}:{}})});if(!s.ok){let $=await s.json().catch(()=>({}));throw new Error($.error||"Failed to get response")}let a=await s.json(),i=a.answer||"";a.session_id&&a.session_id!==y.current&&G(a.session_id),W&&W(i);let k={role:"assistant",content:i},D=[...n,k];l(D),localStorage.setItem("thikana_messages",JSON.stringify(D))}catch(s){console.error("Error calling AI:",s);let a={role:"assistant",content:"Sorry, something went wrong. Please try again."},i=[...n,a];l(i),localStorage.setItem("thikana_messages",JSON.stringify(i))}finally{X(!1)}},Q=async e=>{if(!e||v)return;if(!e.name.toLowerCase().endsWith(".pdf")){alert("Please select a PDF file.");return}E(!0);let r={role:"assistant",content:`Uploading <b>${M(e.name)}</b>\u2026`};l(n=>[...n,r]);try{let n=new FormData;n.append("file",e);let s=await fetch(`${d}/upload-pdf`,{method:"POST",body:n}),a=await s.json();if(!s.ok)throw new Error(a.error||"Upload failed");O({enabled:!0,pdfName:a.filename});let i={role:"assistant",content:`Got it \u2014 <b>${M(a.filename)}</b> indexed (${a.chunks} chunks). Ask me anything about it.`};l(k=>[...k,i])}catch(n){let s={role:"assistant",content:`Upload failed: ${M(n.message||"unknown error")}`};l(a=>[...a,s])}finally{E(!1),I.current&&(I.current.value="")}},ee=async()=>{try{await fetch(`${d}/reset-rag`,{method:"POST"}),O({enabled:!1,pdfName:null});let e={role:"assistant",content:"PDF removed. Back to plain chat."};l(r=>[...r,e])}catch(e){console.error("Reset RAG failed",e)}};c(()=>{m.current&&(m.current.style.height="auto",m.current.style.height=`${Math.min(m.current.scrollHeight,100)}px`)},[b]);let te=ae(e=>{e.preventDefault(),e.target.setPointerCapture(e.pointerId),J(!0)},[]);return c(()=>{if(!P)return;let e=n=>{if(!_.current)return;let s=_.current.getBoundingClientRect(),a=s.right-n.clientX,i=s.bottom-n.clientY,k=window.innerWidth<=768,D=k?window.innerWidth-40:800,$=k?window.innerHeight-100:800;a>320&&a<D&&Z(R=>({...R,width:a})),i>360&&i<$&&Z(R=>({...R,height:i}))},r=()=>J(!1);return window.addEventListener("pointermove",e),window.addEventListener("pointerup",r),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",r)}},[P]),o("div",{className:"thk-root",ref:N,children:[z&&o("div",{ref:_,className:`thk-popup ${P?"thk-resizing":""}`,style:{width:`${V.width}px`,height:`${V.height}px`},role:"dialog","aria-label":`${w} chat`,children:[t("div",{className:"thk-resize-handle",onPointerDown:te,"aria-hidden":!0}),o("header",{className:"thk-header",children:[o("div",{className:"thk-header-left",children:[t("div",{className:"thk-avatar",children:t(f.Sparkles,{})}),o("div",{className:"thk-header-text",children:[t("div",{className:"thk-name",children:w}),o("div",{className:"thk-status",children:[t("span",{className:"thk-status-dot"}),"Online"]})]})]}),t("button",{className:"thk-icon-btn",onClick:()=>T(!1),"aria-label":"Close chat",title:"Close",children:t(f.Minimize,{})})]}),L.enabled&&L.pdfName&&o("div",{className:"thk-rag-pill",children:[t(f.FileText,{}),t("span",{className:"thk-rag-name",children:L.pdfName}),t("button",{className:"thk-rag-remove",onClick:ee,"aria-label":"Remove PDF",title:"Remove PDF",children:t(f.X,{})})]}),o("div",{className:"thk-messages",children:[p.map((e,r)=>t("div",{className:`thk-msg-row ${e.role==="user"?"thk-msg-row-user":"thk-msg-row-ai"}`,children:t("div",{className:`thk-msg ${e.role==="user"?"thk-msg-user":"thk-msg-ai"}`,dangerouslySetInnerHTML:{__html:e.role==="user"?U(e.content):e.content.includes("<")?e.content:U(e.content)}})},r)),g&&t("div",{className:"thk-msg-row thk-msg-row-ai",children:o("div",{className:"thk-msg thk-msg-ai thk-typing",children:[t("span",{}),t("span",{}),t("span",{})]})}),!q&&!g&&j.length>0&&t("div",{className:"thk-suggestions",children:j.map((e,r)=>t("button",{className:"thk-suggestion",onClick:()=>S(e),children:e},r))}),t("div",{ref:Y})]}),o("div",{className:"thk-input",children:[B&&o(oe,{children:[t("input",{ref:I,type:"file",accept:"application/pdf",style:{display:"none"},onChange:e=>{let r=e.target.files?.[0];r&&Q(r)}}),t("button",{type:"button",className:"thk-icon-btn thk-attach",onClick:()=>I.current?.click(),disabled:v||g,"aria-label":"Attach PDF",title:"Attach PDF",children:t(f.Paperclip,{})})]}),t("textarea",{ref:m,rows:1,placeholder:v?"Uploading PDF\u2026":"Message Thikana...",value:b,disabled:v,onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),S(b))},onChange:e=>A(e.target.value)}),t("button",{onClick:()=>S(b),disabled:!b.trim()||g||v,className:"thk-send","aria-label":"Send message",children:t(f.Send,{})})]})]}),t("button",{className:"thk-bubble",onClick:()=>T(e=>!e),"aria-label":z?"Close chat":"Open chat",children:t("img",{alt:"",src:typeof H=="string"?H:H.src})})]})};export{ge as ChatPopup};
1
+ "use client";
2
+ import{useState as l,useRef as k,useEffect as h,useCallback as te}from"react";import re from"marked-react";var H="data:image/png;base64,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";import{Fragment as ne,jsx as t,jsxs as o}from"react/jsx-runtime";var ae=["What can you help me with?","Summarize the uploaded document","How do I get started?"],u={Send:()=>o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"m22 2-7 20-4-9-9-4Z"}),t("path",{d:"M22 2 11 13"})]}),Paperclip:()=>t("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),X:()=>o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M18 6 6 18"}),t("path",{d:"m6 6 12 12"})]}),Minimize:()=>t("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:t("path",{d:"M5 12h14"})}),FileText:()=>o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),t("path",{d:"M14 2v4a2 2 0 0 0 2 2h4"}),t("path",{d:"M10 9H8"}),t("path",{d:"M16 13H8"}),t("path",{d:"M16 17H8"})]}),Sparkles:()=>t("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t("path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"})})},ge=({apiUrl:f="https://cerebro.malaymishra.com",assistantName:w="Thikana",initialMessage:R,enablePdfUpload:Y=!0,suggestions:C=ae,onMessageSend:j,onResponseReceive:K})=>{let[b,W]=l(""),[p,d]=l([]),[c,A]=l(!1),[v,X]=l(!1),[x,U]=l(()=>typeof window>"u"?null:localStorage.getItem("thikana_session_id")),y=k(x),[M,O]=l({enabled:!1,pdfName:null}),[E,V]=l({width:380,height:560}),[P,Z]=l(!1),[J,L]=l(!1),N=k(null),T=k(null),m=k(null),z=k(null),I=k(null),B=p.some(e=>e.role==="user");h(()=>{function e(r){N.current&&!N.current.contains(r.target)&&L(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),h(()=>{if(p.length===0){let e=localStorage.getItem("thikana_messages");d(e?JSON.parse(e):[{role:"assistant",content:R||`Hey, I'm ${w}. Ask me anything, or drop in a PDF and I'll dig through it for you.`}])}},[R,w,p.length]),h(()=>{y.current=x,!(typeof window>"u")&&(x?localStorage.setItem("thikana_session_id",x):localStorage.removeItem("thikana_session_id"))},[x]),h(()=>{(async()=>{try{let r=await fetch(`${f}/status`);if(!r.ok)return;let n=await r.json();O({enabled:!!n.rag_enabled,pdfName:n.pdf_name??null})}catch{}})()},[f]);let G=()=>{z.current?.scrollIntoView({behavior:"smooth"})};h(()=>{G()},[p,c]);let S=async e=>{if(!e.trim()||c)return;let r={role:"user",content:e};j&&j(r);let n=[...p,r];d(n),W(""),A(!0);try{let s=await fetch(`${f}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:e,...y.current?{session_id:y.current}:{}})});if(!s.ok){let _=await s.json().catch(()=>({}));throw new Error(_.error||"Failed to get response")}let a=await s.json(),i=a.answer||"";a.session_id&&a.session_id!==y.current&&U(a.session_id),K&&K(i);let g={role:"assistant",content:i},D=[...n,g];d(D),localStorage.setItem("thikana_messages",JSON.stringify(D))}catch(s){console.error("Error calling AI:",s);let a={role:"assistant",content:"Sorry, something went wrong. Please try again."},i=[...n,a];d(i),localStorage.setItem("thikana_messages",JSON.stringify(i))}finally{A(!1)}},q=async e=>{if(!e||v)return;if(!e.name.toLowerCase().endsWith(".pdf")){alert("Please select a PDF file.");return}X(!0);let r={role:"assistant",content:`Uploading \`${e.name}\`\u2026`};d(n=>[...n,r]);try{let n=new FormData;n.append("file",e);let s=await fetch(`${f}/upload-pdf`,{method:"POST",body:n}),a=await s.json();if(!s.ok)throw new Error(a.error||"Upload failed");O({enabled:!0,pdfName:a.filename});let i={role:"assistant",content:`Got it \u2014 \`${a.filename}\` indexed (${a.chunks} chunks). Ask me anything about it.`};d(g=>[...g,i])}catch(n){let s={role:"assistant",content:`Upload failed: ${n.message||"unknown error"}`};d(a=>[...a,s])}finally{X(!1),I.current&&(I.current.value="")}},F=async()=>{try{await fetch(`${f}/reset-rag`,{method:"POST"}),O({enabled:!1,pdfName:null});let e={role:"assistant",content:"PDF removed. Back to plain chat."};d(r=>[...r,e])}catch(e){console.error("Reset RAG failed",e)}};h(()=>{m.current&&(m.current.style.height="auto",m.current.style.height=`${Math.min(m.current.scrollHeight,100)}px`)},[b]);let Q=te(e=>{e.preventDefault(),e.target.setPointerCapture(e.pointerId),Z(!0)},[]);return h(()=>{if(!P)return;let e=n=>{if(!T.current)return;let s=T.current.getBoundingClientRect(),a=s.right-n.clientX,i=s.bottom-n.clientY,g=window.innerWidth<=768,D=g?window.innerWidth-40:800,_=g?window.innerHeight-100:800;a>320&&a<D&&V($=>({...$,width:a})),i>360&&i<_&&V($=>({...$,height:i}))},r=()=>Z(!1);return window.addEventListener("pointermove",e),window.addEventListener("pointerup",r),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",r)}},[P]),o("div",{className:"thk-root",ref:N,children:[J&&o("div",{ref:T,className:`thk-popup ${P?"thk-resizing":""}`,style:{width:`${E.width}px`,height:`${E.height}px`},role:"dialog","aria-label":`${w} chat`,children:[t("div",{className:"thk-resize-handle",onPointerDown:Q,"aria-hidden":!0}),o("header",{className:"thk-header",children:[o("div",{className:"thk-header-left",children:[t("div",{className:"thk-avatar",children:t(u.Sparkles,{})}),o("div",{className:"thk-header-text",children:[t("div",{className:"thk-name",children:w}),o("div",{className:"thk-status",children:[t("span",{className:"thk-status-dot"}),"Online"]})]})]}),t("button",{className:"thk-icon-btn",onClick:()=>L(!1),"aria-label":"Close chat",title:"Close",children:t(u.Minimize,{})})]}),M.enabled&&M.pdfName&&o("div",{className:"thk-rag-pill",children:[t(u.FileText,{}),t("span",{className:"thk-rag-name",children:M.pdfName}),t("button",{className:"thk-rag-remove",onClick:F,"aria-label":"Remove PDF",title:"Remove PDF",children:t(u.X,{})})]}),o("div",{className:"thk-messages",children:[p.map((e,r)=>t("div",{className:`thk-msg-row ${e.role==="user"?"thk-msg-row-user":"thk-msg-row-ai"}`,children:t("div",{className:`thk-msg ${e.role==="user"?"thk-msg-user":"thk-msg-ai"}`,children:e.role==="user"?e.content:t(re,{children:e.content})})},r)),c&&t("div",{className:"thk-msg-row thk-msg-row-ai",children:o("div",{className:"thk-msg thk-msg-ai thk-typing",children:[t("span",{}),t("span",{}),t("span",{})]})}),!B&&!c&&C.length>0&&t("div",{className:"thk-suggestions",children:C.map((e,r)=>t("button",{className:"thk-suggestion",onClick:()=>S(e),children:e},r))}),t("div",{ref:z})]}),o("div",{className:"thk-input",children:[Y&&o(ne,{children:[t("input",{ref:I,type:"file",accept:"application/pdf",style:{display:"none"},onChange:e=>{let r=e.target.files?.[0];r&&q(r)}}),t("button",{type:"button",className:"thk-icon-btn thk-attach",onClick:()=>I.current?.click(),disabled:v||c,"aria-label":"Attach PDF",title:"Attach PDF",children:t(u.Paperclip,{})})]}),t("textarea",{ref:m,rows:1,placeholder:v?"Uploading PDF\u2026":"Message Thikana...",value:b,disabled:v,onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),S(b))},onChange:e=>W(e.target.value)}),t("button",{onClick:()=>S(b),disabled:!b.trim()||c||v,className:"thk-send","aria-label":"Send message",children:t(u.Send,{})})]})]}),t("button",{className:"thk-bubble",onClick:()=>L(e=>!e),"aria-label":J?"Close chat":"Open chat",children:t("img",{alt:"",src:typeof H=="string"?H:H.src})})]})};export{ge as ChatPopup};
2
3
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/chat-popup.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport \"./chat-popup.css\";\n\nimport chatbot from \"../assets/chatbot-black.png\";\n\ntype Message = {\n role: \"user\" | \"assistant\" | \"system\";\n content: string;\n};\n\nexport interface ChatPopupProps {\n apiUrl?: string;\n assistantName?: string;\n initialMessage?: string;\n enablePdfUpload?: boolean;\n suggestions?: string[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n}\n\nconst DEFAULT_SUGGESTIONS = [\n \"What can you help me with?\",\n \"Summarize the uploaded document\",\n \"How do I get started?\",\n];\n\nconst escapeHtml = (s: string) =>\n s\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n\nconst renderText = (s: string) => escapeHtml(s).replace(/\\n/g, \"<br>\");\n\n// shadcn-style inline icons (lucide) — keeps zero icon deps\nconst Icon = {\n Send: () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m22 2-7 20-4-9-9-4Z\" />\n <path d=\"M22 2 11 13\" />\n </svg>\n ),\n Paperclip: () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n ),\n X: () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n ),\n Minimize: () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M5 12h14\" />\n </svg>\n ),\n FileText: () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M10 9H8\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n </svg>\n ),\n Sparkles: () => (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\" />\n </svg>\n ),\n};\n\nexport const ChatPopup = ({\n apiUrl = \"https://cerebro.malaymishra.com\",\n assistantName = \"Thikana\",\n initialMessage,\n enablePdfUpload = true,\n suggestions = DEFAULT_SUGGESTIONS,\n onMessageSend,\n onResponseReceive,\n}: ChatPopupProps) => {\n const [input, setInput] = useState<string>(\"\");\n const [internalMessages, setInternalMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isUploading, setIsUploading] = useState(false);\n const [sessionId, setSessionId] = useState<string | null>(() => {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(\"thikana_session_id\");\n });\n const sessionIdRef = useRef<string | null>(sessionId);\n const [ragInfo, setRagInfo] = useState<{ enabled: boolean; pdfName: string | null }>({\n enabled: false,\n pdfName: null,\n });\n const [dimensions, setDimensions] = useState({ width: 380, height: 560 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const hasUserMessages = internalMessages.some((m) => m.role === \"user\");\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpenPopup(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (internalMessages.length === 0) {\n const savedMsgs = localStorage.getItem(\"thikana_messages\");\n if (savedMsgs) {\n setInternalMessages(JSON.parse(savedMsgs));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hey, I'm ${assistantName}. Ask me anything, or drop in a PDF and I'll dig through it for you.`,\n },\n ]);\n }\n }\n }, [initialMessage, assistantName, internalMessages.length]);\n\n useEffect(() => {\n sessionIdRef.current = sessionId;\n if (typeof window === \"undefined\") return;\n if (sessionId) {\n localStorage.setItem(\"thikana_session_id\", sessionId);\n } else {\n localStorage.removeItem(\"thikana_session_id\");\n }\n }, [sessionId]);\n\n useEffect(() => {\n const fetchStatus = async () => {\n try {\n const res = await fetch(`${apiUrl}/status`);\n if (!res.ok) return;\n const data = await res.json();\n setRagInfo({\n enabled: !!data.rag_enabled,\n pdfName: data.pdf_name ?? null,\n });\n } catch {\n // server not reachable — ignore\n }\n };\n fetchStatus();\n }, [apiUrl]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [internalMessages, isLoading]);\n\n const callModel = async (userInput: string) => {\n if (!userInput.trim() || isLoading) return;\n\n const userMessage: Message = { role: \"user\", content: userInput };\n if (onMessageSend) onMessageSend(userMessage);\n\n const newMessages = [...internalMessages, userMessage];\n setInternalMessages(newMessages);\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const response = await fetch(`${apiUrl}/chat`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n question: userInput,\n ...(sessionIdRef.current ? { session_id: sessionIdRef.current } : {}),\n }),\n });\n\n if (!response.ok) {\n const err = await response.json().catch(() => ({}));\n throw new Error(err.error || \"Failed to get response\");\n }\n\n const data = await response.json();\n const answer: string = data.answer || \"\";\n\n if (data.session_id && data.session_id !== sessionIdRef.current) {\n setSessionId(data.session_id);\n }\n\n if (onResponseReceive) onResponseReceive(answer);\n\n const assistantMessage: Message = { role: \"assistant\", content: answer };\n const updated = [...newMessages, assistantMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const failMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, something went wrong. Please try again.\",\n };\n const updated = [...newMessages, failMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } finally {\n setIsLoading(false);\n }\n };\n\n const uploadPdf = async (file: File) => {\n if (!file || isUploading) return;\n if (!file.name.toLowerCase().endsWith(\".pdf\")) {\n alert(\"Please select a PDF file.\");\n return;\n }\n\n setIsUploading(true);\n const noticeMsg: Message = {\n role: \"assistant\",\n content: `Uploading <b>${escapeHtml(file.name)}</b>…`,\n };\n setInternalMessages((prev) => [...prev, noticeMsg]);\n\n try {\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const res = await fetch(`${apiUrl}/upload-pdf`, {\n method: \"POST\",\n body: formData,\n });\n\n const data = await res.json();\n if (!res.ok) throw new Error(data.error || \"Upload failed\");\n\n setRagInfo({ enabled: true, pdfName: data.filename });\n\n const successMsg: Message = {\n role: \"assistant\",\n content: `Got it — <b>${escapeHtml(data.filename)}</b> indexed (${data.chunks} chunks). Ask me anything about it.`,\n };\n setInternalMessages((prev) => [...prev, successMsg]);\n } catch (e: any) {\n const errMsg: Message = {\n role: \"assistant\",\n content: `Upload failed: ${escapeHtml(e.message || \"unknown error\")}`,\n };\n setInternalMessages((prev) => [...prev, errMsg]);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) fileInputRef.current.value = \"\";\n }\n };\n\n const resetRag = async () => {\n try {\n await fetch(`${apiUrl}/reset-rag`, { method: \"POST\" });\n setRagInfo({ enabled: false, pdfName: null });\n const msg: Message = {\n role: \"assistant\",\n content: \"PDF removed. Back to plain chat.\",\n };\n setInternalMessages((prev) => [...prev, msg]);\n } catch (e) {\n console.error(\"Reset RAG failed\", e);\n }\n };\n\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 100)}px`;\n }\n }, [input]);\n\n const handlePointerDown = useCallback((e: React.PointerEvent) => {\n e.preventDefault();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handlePointerMove = (e: PointerEvent) => {\n if (!wrapperRef.current) return;\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n const isMobile = window.innerWidth <= 768;\n const maxW = isMobile ? window.innerWidth - 40 : 800;\n const maxH = isMobile ? window.innerHeight - 100 : 800;\n if (newWidth > 320 && newWidth < maxW) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 360 && newHeight < maxH) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handlePointerUp = () => setIsResizing(false);\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"thk-root\" ref={containerRef}>\n {openPopup && (\n <div\n ref={wrapperRef}\n className={`thk-popup ${isResizing ? \"thk-resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n }}\n role=\"dialog\"\n aria-label={`${assistantName} chat`}\n >\n <div className=\"thk-resize-handle\" onPointerDown={handlePointerDown} aria-hidden />\n\n <header className=\"thk-header\">\n <div className=\"thk-header-left\">\n <div className=\"thk-avatar\">\n <Icon.Sparkles />\n </div>\n <div className=\"thk-header-text\">\n <div className=\"thk-name\">{assistantName}</div>\n <div className=\"thk-status\">\n <span className=\"thk-status-dot\" />\n Online\n </div>\n </div>\n </div>\n <button\n className=\"thk-icon-btn\"\n onClick={() => setOpenPopup(false)}\n aria-label=\"Close chat\"\n title=\"Close\"\n >\n <Icon.Minimize />\n </button>\n </header>\n\n {ragInfo.enabled && ragInfo.pdfName && (\n <div className=\"thk-rag-pill\">\n <Icon.FileText />\n <span className=\"thk-rag-name\">{ragInfo.pdfName}</span>\n <button\n className=\"thk-rag-remove\"\n onClick={resetRag}\n aria-label=\"Remove PDF\"\n title=\"Remove PDF\"\n >\n <Icon.X />\n </button>\n </div>\n )}\n\n <div className=\"thk-messages\">\n {internalMessages.map((msg, index) => (\n <div\n key={index}\n className={`thk-msg-row ${msg.role === \"user\" ? \"thk-msg-row-user\" : \"thk-msg-row-ai\"}`}\n >\n <div\n className={`thk-msg ${msg.role === \"user\" ? \"thk-msg-user\" : \"thk-msg-ai\"}`}\n dangerouslySetInnerHTML={{\n __html:\n msg.role === \"user\"\n ? renderText(msg.content)\n : msg.content.includes(\"<\")\n ? msg.content\n : renderText(msg.content),\n }}\n />\n </div>\n ))}\n\n {isLoading && (\n <div className=\"thk-msg-row thk-msg-row-ai\">\n <div className=\"thk-msg thk-msg-ai thk-typing\">\n <span /><span /><span />\n </div>\n </div>\n )}\n\n {!hasUserMessages && !isLoading && suggestions.length > 0 && (\n <div className=\"thk-suggestions\">\n {suggestions.map((s, i) => (\n <button\n key={i}\n className=\"thk-suggestion\"\n onClick={() => callModel(s)}\n >\n {s}\n </button>\n ))}\n </div>\n )}\n\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"thk-input\">\n {enablePdfUpload && (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"application/pdf\"\n style={{ display: \"none\" }}\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) uploadPdf(f);\n }}\n />\n <button\n type=\"button\"\n className=\"thk-icon-btn thk-attach\"\n onClick={() => fileInputRef.current?.click()}\n disabled={isUploading || isLoading}\n aria-label=\"Attach PDF\"\n title=\"Attach PDF\"\n >\n <Icon.Paperclip />\n </button>\n </>\n )}\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder={isUploading ? \"Uploading PDF…\" : \"Message Thikana...\"}\n value={input}\n disabled={isUploading}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n callModel(input);\n }\n }}\n onChange={(e) => setInput(e.target.value)}\n />\n <button\n onClick={() => callModel(input)}\n disabled={!input.trim() || isLoading || isUploading}\n className=\"thk-send\"\n aria-label=\"Send message\"\n >\n <Icon.Send />\n </button>\n </div>\n </div>\n )}\n\n <button\n className=\"thk-bubble\"\n onClick={() => setOpenPopup((prev) => !prev)}\n aria-label={openPopup ? \"Close chat\" : \"Open chat\"}\n >\n <img\n alt=\"\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </button>\n </div>\n );\n};\n"],"mappings":"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","names":["useState","useRef","useEffect","useCallback","Fragment","jsx","jsxs","DEFAULT_SUGGESTIONS","escapeHtml","s","renderText","Icon","ChatPopup","apiUrl","assistantName","initialMessage","enablePdfUpload","suggestions","onMessageSend","onResponseReceive","input","setInput","useState","internalMessages","setInternalMessages","isLoading","setIsLoading","isUploading","setIsUploading","sessionId","setSessionId","sessionIdRef","useRef","ragInfo","setRagInfo","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","wrapperRef","textareaRef","messagesEndRef","fileInputRef","hasUserMessages","m","useEffect","handleClickOutside","event","savedMsgs","res","data","scrollToBottom","callModel","userInput","userMessage","newMessages","response","err","answer","assistantMessage","updated","error","failMessage","uploadPdf","file","noticeMsg","prev","formData","successMsg","e","errMsg","resetRag","msg","handlePointerDown","useCallback","handlePointerMove","rect","newWidth","newHeight","isMobile","maxW","maxH","handlePointerUp","index","i","f","chatbot_black_default"]}
1
+ {"version":3,"sources":["../src/components/chat-popup.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport Markdown from \"marked-react\";\nimport \"./chat-popup.css\";\n\nimport chatbot from \"../assets/chatbot-black.png\";\n\ntype Message = {\n role: \"user\" | \"assistant\" | \"system\";\n content: string;\n};\n\nexport interface ChatPopupProps {\n apiUrl: string;\n assistantName?: string;\n initialMessage?: string;\n enablePdfUpload?: boolean;\n suggestions?: string[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n}\n\nconst DEFAULT_SUGGESTIONS = [\n \"What can you help me with?\",\n \"Summarize the uploaded document\",\n \"How do I get started?\",\n];\n\n// shadcn-style inline icons (lucide) — keeps zero icon deps\nconst Icon = {\n Send: () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m22 2-7 20-4-9-9-4Z\" />\n <path d=\"M22 2 11 13\" />\n </svg>\n ),\n Paperclip: () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n ),\n X: () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n ),\n Minimize: () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n ),\n FileText: () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M10 9H8\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n </svg>\n ),\n Sparkles: () => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\" />\n </svg>\n ),\n};\n\nexport const ChatPopup = ({\n apiUrl = \"https://cerebro.malaymishra.com\",\n assistantName = \"Thikana\",\n initialMessage,\n enablePdfUpload = true,\n suggestions = DEFAULT_SUGGESTIONS,\n onMessageSend,\n onResponseReceive,\n}: ChatPopupProps) => {\n const [input, setInput] = useState<string>(\"\");\n const [internalMessages, setInternalMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isUploading, setIsUploading] = useState(false);\n const [sessionId, setSessionId] = useState<string | null>(() => {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(\"thikana_session_id\");\n });\n const sessionIdRef = useRef<string | null>(sessionId);\n const [ragInfo, setRagInfo] = useState<{\n enabled: boolean;\n pdfName: string | null;\n }>({\n enabled: false,\n pdfName: null,\n });\n const [dimensions, setDimensions] = useState({ width: 380, height: 560 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const hasUserMessages = internalMessages.some((m) => m.role === \"user\");\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpenPopup(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (internalMessages.length === 0) {\n const savedMsgs = localStorage.getItem(\"thikana_messages\");\n if (savedMsgs) {\n setInternalMessages(JSON.parse(savedMsgs));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hey, I'm ${assistantName}. Ask me anything, or drop in a PDF and I'll dig through it for you.`,\n },\n ]);\n }\n }\n }, [initialMessage, assistantName, internalMessages.length]);\n\n useEffect(() => {\n sessionIdRef.current = sessionId;\n if (typeof window === \"undefined\") return;\n if (sessionId) {\n localStorage.setItem(\"thikana_session_id\", sessionId);\n } else {\n localStorage.removeItem(\"thikana_session_id\");\n }\n }, [sessionId]);\n\n useEffect(() => {\n const fetchStatus = async () => {\n try {\n const res = await fetch(`${apiUrl}/status`);\n if (!res.ok) return;\n const data = await res.json();\n setRagInfo({\n enabled: !!data.rag_enabled,\n pdfName: data.pdf_name ?? null,\n });\n } catch {\n // server not reachable — ignore\n }\n };\n fetchStatus();\n }, [apiUrl]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [internalMessages, isLoading]);\n\n const callModel = async (userInput: string) => {\n if (!userInput.trim() || isLoading) return;\n\n const userMessage: Message = { role: \"user\", content: userInput };\n if (onMessageSend) onMessageSend(userMessage);\n\n const newMessages = [...internalMessages, userMessage];\n setInternalMessages(newMessages);\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const response = await fetch(`${apiUrl}/chat`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n question: userInput,\n ...(sessionIdRef.current ? { session_id: sessionIdRef.current } : {}),\n }),\n });\n\n if (!response.ok) {\n const err = await response.json().catch(() => ({}));\n throw new Error(err.error || \"Failed to get response\");\n }\n\n const data = await response.json();\n const answer: string = data.answer || \"\";\n\n if (data.session_id && data.session_id !== sessionIdRef.current) {\n setSessionId(data.session_id);\n }\n\n if (onResponseReceive) onResponseReceive(answer);\n\n const assistantMessage: Message = { role: \"assistant\", content: answer };\n const updated = [...newMessages, assistantMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const failMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, something went wrong. Please try again.\",\n };\n const updated = [...newMessages, failMessage];\n setInternalMessages(updated);\n localStorage.setItem(\"thikana_messages\", JSON.stringify(updated));\n } finally {\n setIsLoading(false);\n }\n };\n\n const uploadPdf = async (file: File) => {\n if (!file || isUploading) return;\n if (!file.name.toLowerCase().endsWith(\".pdf\")) {\n alert(\"Please select a PDF file.\");\n return;\n }\n\n setIsUploading(true);\n const noticeMsg: Message = {\n role: \"assistant\",\n content: `Uploading \\`${file.name}\\`…`,\n };\n setInternalMessages((prev) => [...prev, noticeMsg]);\n\n try {\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const res = await fetch(`${apiUrl}/upload-pdf`, {\n method: \"POST\",\n body: formData,\n });\n\n const data = await res.json();\n if (!res.ok) throw new Error(data.error || \"Upload failed\");\n\n setRagInfo({ enabled: true, pdfName: data.filename });\n\n const successMsg: Message = {\n role: \"assistant\",\n content: `Got it — \\`${data.filename}\\` indexed (${data.chunks} chunks). Ask me anything about it.`,\n };\n setInternalMessages((prev) => [...prev, successMsg]);\n } catch (e: any) {\n const errMsg: Message = {\n role: \"assistant\",\n content: `Upload failed: ${e.message || \"unknown error\"}`,\n };\n setInternalMessages((prev) => [...prev, errMsg]);\n } finally {\n setIsUploading(false);\n if (fileInputRef.current) fileInputRef.current.value = \"\";\n }\n };\n\n const resetRag = async () => {\n try {\n await fetch(`${apiUrl}/reset-rag`, { method: \"POST\" });\n setRagInfo({ enabled: false, pdfName: null });\n const msg: Message = {\n role: \"assistant\",\n content: \"PDF removed. Back to plain chat.\",\n };\n setInternalMessages((prev) => [...prev, msg]);\n } catch (e) {\n console.error(\"Reset RAG failed\", e);\n }\n };\n\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 100)}px`;\n }\n }, [input]);\n\n const handlePointerDown = useCallback((e: React.PointerEvent) => {\n e.preventDefault();\n (e.target as HTMLElement).setPointerCapture(e.pointerId);\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handlePointerMove = (e: PointerEvent) => {\n if (!wrapperRef.current) return;\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n const isMobile = window.innerWidth <= 768;\n const maxW = isMobile ? window.innerWidth - 40 : 800;\n const maxH = isMobile ? window.innerHeight - 100 : 800;\n if (newWidth > 320 && newWidth < maxW) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 360 && newHeight < maxH) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handlePointerUp = () => setIsResizing(false);\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"thk-root\" ref={containerRef}>\n {openPopup && (\n <div\n ref={wrapperRef}\n className={`thk-popup ${isResizing ? \"thk-resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n }}\n role=\"dialog\"\n aria-label={`${assistantName} chat`}\n >\n <div\n className=\"thk-resize-handle\"\n onPointerDown={handlePointerDown}\n aria-hidden\n />\n\n <header className=\"thk-header\">\n <div className=\"thk-header-left\">\n <div className=\"thk-avatar\">\n <Icon.Sparkles />\n </div>\n <div className=\"thk-header-text\">\n <div className=\"thk-name\">{assistantName}</div>\n <div className=\"thk-status\">\n <span className=\"thk-status-dot\" />\n Online\n </div>\n </div>\n </div>\n <button\n className=\"thk-icon-btn\"\n onClick={() => setOpenPopup(false)}\n aria-label=\"Close chat\"\n title=\"Close\"\n >\n <Icon.Minimize />\n </button>\n </header>\n\n {ragInfo.enabled && ragInfo.pdfName && (\n <div className=\"thk-rag-pill\">\n <Icon.FileText />\n <span className=\"thk-rag-name\">{ragInfo.pdfName}</span>\n <button\n className=\"thk-rag-remove\"\n onClick={resetRag}\n aria-label=\"Remove PDF\"\n title=\"Remove PDF\"\n >\n <Icon.X />\n </button>\n </div>\n )}\n\n <div className=\"thk-messages\">\n {internalMessages.map((msg, index) => (\n <div\n key={index}\n className={`thk-msg-row ${msg.role === \"user\" ? \"thk-msg-row-user\" : \"thk-msg-row-ai\"}`}\n >\n <div\n className={`thk-msg ${msg.role === \"user\" ? \"thk-msg-user\" : \"thk-msg-ai\"}`}\n >\n {msg.role === \"user\" ? (\n msg.content\n ) : (\n <Markdown>{msg.content}</Markdown>\n )}\n </div>\n </div>\n ))}\n\n {isLoading && (\n <div className=\"thk-msg-row thk-msg-row-ai\">\n <div className=\"thk-msg thk-msg-ai thk-typing\">\n <span />\n <span />\n <span />\n </div>\n </div>\n )}\n\n {!hasUserMessages && !isLoading && suggestions.length > 0 && (\n <div className=\"thk-suggestions\">\n {suggestions.map((s, i) => (\n <button\n key={i}\n className=\"thk-suggestion\"\n onClick={() => callModel(s)}\n >\n {s}\n </button>\n ))}\n </div>\n )}\n\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"thk-input\">\n {enablePdfUpload && (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"application/pdf\"\n style={{ display: \"none\" }}\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) uploadPdf(f);\n }}\n />\n <button\n type=\"button\"\n className=\"thk-icon-btn thk-attach\"\n onClick={() => fileInputRef.current?.click()}\n disabled={isUploading || isLoading}\n aria-label=\"Attach PDF\"\n title=\"Attach PDF\"\n >\n <Icon.Paperclip />\n </button>\n </>\n )}\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder={\n isUploading ? \"Uploading PDF…\" : \"Message Thikana...\"\n }\n value={input}\n disabled={isUploading}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n callModel(input);\n }\n }}\n onChange={(e) => setInput(e.target.value)}\n />\n <button\n onClick={() => callModel(input)}\n disabled={!input.trim() || isLoading || isUploading}\n className=\"thk-send\"\n aria-label=\"Send message\"\n >\n <Icon.Send />\n </button>\n </div>\n </div>\n )}\n\n <button\n className=\"thk-bubble\"\n onClick={() => setOpenPopup((prev) => !prev)}\n aria-label={openPopup ? \"Close chat\" : \"Open chat\"}\n >\n <img\n alt=\"\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </button>\n </div>\n );\n};\n"],"mappings":"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","names":["useState","useRef","useEffect","useCallback","Markdown","Fragment","jsx","jsxs","DEFAULT_SUGGESTIONS","Icon","ChatPopup","apiUrl","assistantName","initialMessage","enablePdfUpload","suggestions","onMessageSend","onResponseReceive","input","setInput","useState","internalMessages","setInternalMessages","isLoading","setIsLoading","isUploading","setIsUploading","sessionId","setSessionId","sessionIdRef","useRef","ragInfo","setRagInfo","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","wrapperRef","textareaRef","messagesEndRef","fileInputRef","hasUserMessages","m","useEffect","handleClickOutside","event","savedMsgs","res","data","scrollToBottom","callModel","userInput","userMessage","newMessages","response","err","answer","assistantMessage","updated","error","failMessage","uploadPdf","file","noticeMsg","prev","formData","successMsg","e","errMsg","resetRag","msg","handlePointerDown","useCallback","handlePointerMove","rect","newWidth","newHeight","isMobile","maxW","maxH","handlePointerUp","index","Markdown","s","i","f","chatbot_black_default"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thikanaa",
3
- "version": "0.1.18",
3
+ "version": "0.2.0",
4
4
  "description": "A beautiful, AI-powered chat popup component for React and Next.js applications",
5
5
  "keywords": [
6
6
  "react",
@@ -31,6 +31,7 @@
31
31
  "@ai-sdk/google": "^3.0.15",
32
32
  "@ai-sdk/groq": "^3.0.16",
33
33
  "ai": "^6.0.57",
34
+ "marked-react": "^4.0.0",
34
35
  "zod": "^4.3.6"
35
36
  },
36
37
  "peerDependencies": {