thikanaa 0.1.11 → 0.1.13

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/README.md CHANGED
@@ -4,10 +4,11 @@
4
4
  Built with modern web technologies, Thikana offers a seamless, conversational interface that acts as a digital twin for your app, answering questions about his experience, skills, and projects in real-time.
5
5
 
6
6
  ## Live Working Example in [Machine Code Website](https://code.malaymishra.com/)
7
+ ### [Code Implementation](https://github.com/hi-malay/machine_coding/blob/main/src/App.jsx)
7
8
 
8
9
  ## ✨ Features
9
10
 
10
- - **Multi-Model AI Integration**: Leverages the power of **Groq** (Llama 3.3, 3.1) and **Google Gemini** (1.5 Flash) via the Vercel AI SDK.
11
+ - **Multi-Model AI Integration**: Leverages the power of **Groq** (Llama 3.3, 3.1, Open AI, Groq) and **Google Gemini** (3 Flash, 2.5 Flash) via the Vercel AI SDK.
11
12
  - **Intelligent Fallback Mechanism**: If one AI model is unavailable or hits rate limits, the system automatically tries the next best model to ensure zero downtime.
12
13
  - **Dynamic Context Injection**: Responds accurately based on a comprehensive professional dataset (experience at Adeptmind, expertise in Go, Python, React, and more).
13
14
  - **Modern UI/UX**: Features a sleek, responsive chat interface with glassmorphism effects and smooth micro-animations.
@@ -35,19 +36,12 @@ Built with modern web technologies, Thikana offers a seamless, conversational in
35
36
  yarn add thikanaa
36
37
  ```
37
38
 
38
- 3. **Set up Environment Variables**:
39
- Create a `.env` file in the root directory and add your API keys:
40
- ```env
41
- GROQ_API_KEY=your_groq_api_key_here
42
- GEMINI_API_KEY=your_gemini_api_key_here
43
- ```
44
-
45
- 4. **Run the development server**:
39
+ 3. **Run the development server**:
46
40
  ```bash
47
41
  yarn dev
48
42
  ```
49
43
 
50
- 5. **Open the app**:
44
+ 4. **Open the app**:
51
45
  Navigate to [http://localhost:3000](http://localhost:3000) to see the application in action.
52
46
 
53
47
  ## 📦 NPM Package Usage
@@ -79,6 +73,7 @@ const App = () => {
79
73
  >
80
74
  <ChatPopup
81
75
  systemPrompt="Your custom system prompt here"
76
+ feedData={"This is Raghu, a software engineer with 5 years of experience in building scalable and performant web applications. He is passionate about using the latest technologies to create innovative and user-friendly solutions."}
82
77
  assistantName="Thikana"
83
78
  apiUrl="/api/chatbot" // Your backend endpoint
84
79
  initialMessage="Hi this is Thikana! How can I help you today?"
@@ -88,7 +83,6 @@ const App = () => {
88
83
  content: 'All you list of messages',
89
84
  },
90
85
  ]}
91
- position="relative"
92
86
  onMessageSend={(message) => {
93
87
  console.log(message);
94
88
  }}
@@ -106,8 +100,8 @@ const App = () => {
106
100
  | Prop | Type | Description |
107
101
  | --- | --- | --- |
108
102
  | `systemPrompt` | `string` | Custom instructions for the AI model |
109
- | `portfolioData` | `any` | Base context data for the assistant |
110
- | `apiUrl` | `string` | Endpoint to call for AI responses (default: `/chatbot`) |
103
+ | `feedData` | `any` | Base context data for the assistant |
104
+ | `apiUrl` | `string(Optional)` | Endpoint to call for AI responses (default: `/chatbot`) |
111
105
  | `assistantName` | `string` | Name shown in the chat (default: `Thikana`) |
112
106
  | `model` | `string` | Specific model ID to use |
113
107
  | `messages` | `Message[](Optional)` | List of messages to display in the chat |
@@ -116,5 +110,5 @@ const App = () => {
116
110
 
117
111
  ---
118
112
 
119
- Crafted with ❤️ by **Malay Mishra**
113
+ Dev by **Malay Mishra**
120
114
 
package/dist/index.d.mts CHANGED
@@ -6,7 +6,7 @@ type Message = {
6
6
  };
7
7
  interface ChatPopupProps {
8
8
  systemPrompt?: string;
9
- portfolioData?: any;
9
+ feedData?: any;
10
10
  apiUrl?: string;
11
11
  assistantName?: string;
12
12
  initialMessage?: string;
@@ -14,9 +14,7 @@ interface ChatPopupProps {
14
14
  messages?: Message[];
15
15
  onMessageSend?: (message: Message) => void;
16
16
  onResponseReceive?: (response: string) => void;
17
- mockMode?: boolean;
18
- position?: "fixed" | "relative";
19
17
  }
20
- declare const ChatPopup: ({ systemPrompt, portfolioData: externalPortfolioData, apiUrl, assistantName, initialMessage, model, messages: externalMessages, onMessageSend, onResponseReceive, mockMode, position, }: ChatPopupProps) => react_jsx_runtime.JSX.Element;
18
+ declare const ChatPopup: ({ systemPrompt, feedData: externalfeedData, apiUrl, assistantName, initialMessage, model, onMessageSend, onResponseReceive, }: ChatPopupProps) => react_jsx_runtime.JSX.Element;
21
19
 
22
20
  export { ChatPopup, type ChatPopupProps };
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ type Message = {
6
6
  };
7
7
  interface ChatPopupProps {
8
8
  systemPrompt?: string;
9
- portfolioData?: any;
9
+ feedData?: any;
10
10
  apiUrl?: string;
11
11
  assistantName?: string;
12
12
  initialMessage?: string;
@@ -14,9 +14,7 @@ interface ChatPopupProps {
14
14
  messages?: Message[];
15
15
  onMessageSend?: (message: Message) => void;
16
16
  onResponseReceive?: (response: string) => void;
17
- mockMode?: boolean;
18
- position?: "fixed" | "relative";
19
17
  }
20
- declare const ChatPopup: ({ systemPrompt, portfolioData: externalPortfolioData, apiUrl, assistantName, initialMessage, model, messages: externalMessages, onMessageSend, onResponseReceive, mockMode, position, }: ChatPopupProps) => react_jsx_runtime.JSX.Element;
18
+ declare const ChatPopup: ({ systemPrompt, feedData: externalfeedData, apiUrl, assistantName, initialMessage, model, onMessageSend, onResponseReceive, }: ChatPopupProps) => react_jsx_runtime.JSX.Element;
21
19
 
22
20
  export { ChatPopup, type ChatPopupProps };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var k=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var G=(p,a)=>{for(var g in a)k(p,g,{get:a[g],enumerable:!0})},z=(p,a,g,f)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of U(a))!q.call(p,d)&&d!==g&&k(p,d,{get:()=>a[d],enumerable:!(f=Y(a,d))||f.enumerable});return p};var B=p=>z(k({},"__esModule",{value:!0}),p);var ee={};G(ee,{ChatPopup:()=>F});module.exports=B(ee);var t=require("react");var x="data:image/png;base64,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";var o=require("react/jsx-runtime"),F=({systemPrompt:p,portfolioData:a,apiUrl:g="https://thikana.malaymishra.com/chatbot",assistantName:f="Thikana",initialMessage:d,model:S,messages:l,onMessageSend:T,onResponseReceive:b,mockMode:C=!1,position:W="relative"})=>{let[h,L]=(0,t.useState)(""),[m,u]=(0,t.useState)([]),[w,M]=(0,t.useState)(!1),[j,A]=(0,t.useState)(null),[P,$]=(0,t.useState)({width:330,height:480}),[D,K]=(0,t.useState)(!1),[X,_]=(0,t.useState)(!1),I=(0,t.useRef)(null);(0,t.useEffect)(()=>{function e(n){I.current&&!I.current.contains(n.target)&&_(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]);let H=(0,t.useRef)(null),v=(0,t.useRef)(null),N=(0,t.useRef)(null),y=l||m,V=a||j;(0,t.useEffect)(()=>{if((!l||l.length===0)&&m.length===0){let e=localStorage.getItem("messages");u(e?JSON.parse(e):[{role:"assistant",content:d||`Hi this is ${f}! How can I help you today?`}])}},[l,d,f,m.length]),(0,t.useEffect)(()=>{a||(async()=>{try{let r=await(await fetch("https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json")).json();A(r)}catch(n){console.error("Error fetching portfolio data:",n)}})()},[a]);let J=()=>{N.current?.scrollIntoView({behavior:"smooth"})};(0,t.useEffect)(()=>{J()},[y]);let E=async e=>{if(C){await new Promise(s=>setTimeout(s,1e3));let i=["That's an interesting question! Let me help you with that.","I understand what you're asking. Here's what I think...","Great question! Based on what you've told me, I'd suggest...","Let me break that down for you.","I'm here to help! Here's my take on that..."],c=i[Math.floor(Math.random()*i.length)];return b&&b(c),c}let n=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:e,portfolioData:V,systemPrompt:p,model:S})});if(!n.ok){let i=await n.json();throw new Error(i.error||"Failed to get AI response")}let r=await n.json();return b&&b(r.text),r.text},R=async e=>{if(!e.trim()||w)return;let n={role:"user",content:e};T&&T(n);let r=[...y,n];l||u(r),L(""),M(!0);try{let c={role:"assistant",content:await E(r)},s=[...r,c];l||(u(s),localStorage.setItem("messages",JSON.stringify(s)))}catch(i){console.error("Error calling AI:",i);let c={role:"assistant",content:"Sorry, I encountered an error. Please try again later."},s=[...r,c];l||(u(s),localStorage.setItem("messages",JSON.stringify(s)))}finally{M(!1)}};(0,t.useEffect)(()=>{v.current&&(v.current.style.height="auto",v.current.style.height=`${Math.min(v.current.scrollHeight,100)}px`)},[h]);let Z=(0,t.useCallback)(e=>{e.preventDefault(),K(!0)},[]);return(0,t.useEffect)(()=>{if(!D)return;let e=r=>{if(!H.current)return;let i=H.current.getBoundingClientRect(),c=i.right-r.clientX,s=i.bottom-r.clientY;c>250&&c<800&&$(O=>({...O,width:c})),s>300&&s<800&&$(O=>({...O,height:s}))},n=()=>{K(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n)}},[D]),(0,o.jsxs)("div",{className:"chatbot-container",ref:I,children:[X&&(0,o.jsx)("div",{className:"chatbot-popup",children:(0,o.jsxs)("div",{ref:H,className:`chat-popup-wrapper ${D?"resizing":""}`,style:{width:`${P.width}px`,height:`${P.height}px`,position:W},children:[(0,o.jsx)("div",{className:"stretch-icon",onMouseDown:Z}),(0,o.jsxs)("div",{className:"messages-container",children:[y.map((e,n)=>(0,o.jsx)("div",{className:`message ${e.role==="user"?"user":"ai"}`,children:e.content},n)),w&&(0,o.jsx)("div",{className:"message ai loading",children:"Thinking..."}),(0,o.jsx)("div",{ref:N})]}),(0,o.jsxs)("div",{className:"input-container",children:[(0,o.jsx)("textarea",{ref:v,rows:1,placeholder:"What's on your mind?",value:h,onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),R(h))},onChange:e=>L(e.target.value)}),(0,o.jsx)("button",{onClick:()=>R(h),disabled:!h.trim()||w,className:"send-button",children:(0,o.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,o.jsx)("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),(0,o.jsx)("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})]})]})}),(0,o.jsx)("img",{onClick:()=>_(e=>!e),className:"chatbot-icon",alt:"chatbot",src:typeof x=="string"?x:x.src})]})};0&&(module.exports={ChatPopup});
1
+ "use strict";var H=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var Z=(s,a)=>{for(var l in a)H(s,l,{get:a[l],enumerable:!0})},Y=(s,a,l,g)=>{if(a&&typeof a=="object"||typeof a=="function")for(let c of J(a))!E.call(s,c)&&c!==l&&H(s,c,{get:()=>a[c],enumerable:!(g=V(a,c))||g.enumerable});return s};var U=s=>Y(H({},"__esModule",{value:!0}),s);var q={};Z(q,{ChatPopup:()=>G});module.exports=U(q);var t=require("react");var x="data:image/png;base64,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";var o=require("react/jsx-runtime"),G=({systemPrompt:s,feedData:a,apiUrl:l="https://thikana.malaymishra.com/chatbot",assistantName:g="Thikana",initialMessage:c,model:_,onMessageSend:O,onResponseReceive:y})=>{let[f,T]=(0,t.useState)(""),[u,h]=(0,t.useState)([]),[b,k]=(0,t.useState)(!1),[N,S]=(0,t.useState)(null),[M,L]=(0,t.useState)({width:330,height:480}),[D,$]=(0,t.useState)(!1),[C,K]=(0,t.useState)(!1),w=(0,t.useRef)(null);(0,t.useEffect)(()=>{function e(n){w.current&&!w.current.contains(n.target)&&K(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]);let m=(0,t.useRef)(null),v=(0,t.useRef)(null),P=(0,t.useRef)(null),W=a||N;(0,t.useEffect)(()=>{if(u.length===0){let e=localStorage.getItem("messages");h(e?JSON.parse(e):[{role:"assistant",content:c||`Hi this is ${g}! How can I help you today?`}])}},[c,g,u.length]),(0,t.useEffect)(()=>{a||(async()=>{try{let r=await(await fetch("https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json")).json();S(r)}catch(n){console.error("Error fetching portfolio data:",n)}})()},[a]);let j=()=>{P.current?.scrollIntoView({behavior:"smooth"})};(0,t.useEffect)(()=>{j()},[u]);let A=async e=>{let n=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:e,feedData:W,systemPrompt:s,model:_})});if(!n.ok){let p=await n.json();throw new Error(p.error||"Failed to get AI response")}let r=await n.json();return y&&y(r.text),r.text},R=async e=>{if(!e.trim()||b)return;let n={role:"user",content:e};O&&O(n);let r=[...u,n];h(r),T(""),k(!0);try{let d={role:"assistant",content:await A(r)},i=[...r,d];h(i),localStorage.setItem("messages",JSON.stringify(i))}catch(p){console.error("Error calling AI:",p);let d={role:"assistant",content:"Sorry, I encountered an error. Please try again later."},i=[...r,d];h(i),localStorage.setItem("messages",JSON.stringify(i))}finally{k(!1)}};(0,t.useEffect)(()=>{v.current&&(v.current.style.height="auto",v.current.style.height=`${Math.min(v.current.scrollHeight,100)}px`)},[f]);let X=(0,t.useCallback)(e=>{e.preventDefault(),$(!0)},[]);return(0,t.useEffect)(()=>{if(!D)return;let e=r=>{if(!m.current)return;let p=m.current.getBoundingClientRect(),d=p.right-r.clientX,i=p.bottom-r.clientY;d>250&&d<800&&L(I=>({...I,width:d})),i>300&&i<800&&L(I=>({...I,height:i}))},n=()=>{$(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n)}},[D]),(0,o.jsxs)("div",{className:"chatbot-container",ref:w,children:[C&&(0,o.jsx)("div",{className:"chatbot-popup",children:(0,o.jsxs)("div",{ref:m,className:`chat-popup-wrapper ${D?"resizing":""}`,style:{width:`${M.width}px`,height:`${M.height}px`,position:"relative"},children:[(0,o.jsx)("div",{className:"stretch-icon",onMouseDown:X}),(0,o.jsxs)("div",{className:"messages-container",children:[u.map((e,n)=>(0,o.jsx)("div",{className:`message ${e.role==="user"?"user":"ai"}`,children:e.content},n)),b&&(0,o.jsx)("div",{className:"message ai loading",children:"Thinking..."}),(0,o.jsx)("div",{ref:P})]}),(0,o.jsxs)("div",{className:"input-container",children:[(0,o.jsx)("textarea",{ref:v,rows:1,placeholder:"What's on your mind?",value:f,onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),R(f))},onChange:e=>T(e.target.value)}),(0,o.jsx)("button",{onClick:()=>R(f),disabled:!f.trim()||b,className:"send-button",children:(0,o.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,o.jsx)("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),(0,o.jsx)("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})]})]})}),(0,o.jsx)("img",{onClick:()=>K(e=>!e),className:"chatbot-icon",alt:"chatbot",src:typeof x=="string"?x:x.src})]})};0&&(module.exports={ChatPopup});
2
2
  //# 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 systemPrompt?: string;\n portfolioData?: any;\n apiUrl?: string;\n assistantName?: string;\n initialMessage?: string;\n model?: string;\n messages?: Message[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n mockMode?: boolean; // If true, uses mock responses instead of API calls\n position?: \"fixed\" | \"relative\"; // Position style for the wrapper\n}\n\nexport const ChatPopup = ({\n systemPrompt,\n portfolioData: externalPortfolioData,\n apiUrl = \"https://thikana.malaymishra.com/chatbot\",\n assistantName = \"Thikana\",\n initialMessage,\n model,\n messages: externalMessages,\n onMessageSend,\n onResponseReceive,\n mockMode = false,\n position = \"relative\",\n}: ChatPopupProps) => {\n const [input, setInput] = useState<string>(\"\");\n const [internalMessages, setInternalMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [internalPortfolioData, setInternalPortfolioData] = useState<any>(null);\n const [dimensions, setDimensions] = useState({ width: 330, height: 480 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\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\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const activeMessages = externalMessages || internalMessages;\n const activePortfolioData = externalPortfolioData || internalPortfolioData;\n\n useEffect(() => {\n if (!externalMessages || externalMessages.length === 0) {\n if (internalMessages.length === 0) {\n const saved = localStorage.getItem(\"messages\");\n if (saved) {\n setInternalMessages(JSON.parse(saved));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hi this is ${assistantName}! How can I help you today?`,\n },\n ]);\n }\n }\n }\n }, [\n externalMessages,\n initialMessage,\n assistantName,\n internalMessages.length,\n ]);\n\n useEffect(() => {\n if (!externalPortfolioData) {\n const fetchPortfolioData = async () => {\n try {\n const response = await fetch(\n \"https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json\",\n );\n const data = await response.json();\n setInternalPortfolioData(data);\n } catch (error) {\n console.error(\"Error fetching portfolio data:\", error);\n }\n };\n fetchPortfolioData();\n }\n }, [externalPortfolioData]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [activeMessages]);\n\n const getAIResponse = async (currentMessages: Message[]): Promise<string> => {\n // Mock mode for testing without API\n if (mockMode) {\n await new Promise((resolve) => setTimeout(resolve, 1000)); // Simulate API delay\n const mockResponses = [\n \"That's an interesting question! Let me help you with that.\",\n \"I understand what you're asking. Here's what I think...\",\n \"Great question! Based on what you've told me, I'd suggest...\",\n \"Let me break that down for you.\",\n \"I'm here to help! Here's my take on that...\",\n ];\n const response =\n mockResponses[Math.floor(Math.random() * mockResponses.length)];\n if (onResponseReceive) onResponseReceive(response);\n return response;\n }\n\n const response = await fetch(apiUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n messages: currentMessages,\n portfolioData: activePortfolioData,\n systemPrompt,\n model,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.error || \"Failed to get AI response\");\n }\n\n const data = await response.json();\n if (onResponseReceive) onResponseReceive(data.text);\n return data.text;\n };\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 = [...activeMessages, userMessage];\n\n if (!externalMessages) {\n setInternalMessages(newMessages);\n }\n\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const text = await getAIResponse(newMessages);\n\n const assistantMessage: Message = {\n role: \"assistant\",\n content: text,\n };\n\n const updatedMessages = [...newMessages, assistantMessage];\n if (!externalMessages) {\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n }\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const defaultFailMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, I encountered an error. Please try again later.\",\n };\n const updatedMessages = [...newMessages, defaultFailMessage];\n if (!externalMessages) {\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n }\n } finally {\n setIsLoading(false);\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 handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!wrapperRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n if (newWidth > 250 && newWidth < 800) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 300 && newHeight < 800) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"chatbot-container\" ref={containerRef}>\n {openPopup && (\n <div className=\"chatbot-popup\">\n <div\n ref={wrapperRef}\n className={`chat-popup-wrapper ${isResizing ? \"resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n position: position,\n }}\n >\n <div className=\"stretch-icon\" onMouseDown={handleMouseDown}></div>\n <div className=\"messages-container\">\n {activeMessages.map((msg: Message, index: number) => (\n <div\n key={index}\n className={`message ${msg.role === \"user\" ? \"user\" : \"ai\"}`}\n >\n {msg.content}\n </div>\n ))}\n {isLoading && (\n <div className=\"message ai loading\">Thinking...</div>\n )}\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"input-container\">\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder=\"What's on your mind?\"\n value={input}\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}\n className=\"send-button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n )}\n\n <img\n onClick={() => setOpenPopup((prev) => !prev)}\n className=\"chatbot-icon\"\n alt=\"chatbot\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </div>\n );\n};\n"],"mappings":"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","names":["index_exports","__export","ChatPopup","__toCommonJS","import_react","import_jsx_runtime","ChatPopup","systemPrompt","externalPortfolioData","apiUrl","assistantName","initialMessage","model","externalMessages","onMessageSend","onResponseReceive","mockMode","position","input","setInput","internalMessages","setInternalMessages","isLoading","setIsLoading","internalPortfolioData","setInternalPortfolioData","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","handleClickOutside","event","wrapperRef","textareaRef","messagesEndRef","activeMessages","activePortfolioData","saved","data","error","scrollToBottom","getAIResponse","currentMessages","resolve","mockResponses","response","errorData","callModel","userInput","userMessage","newMessages","assistantMessage","updatedMessages","defaultFailMessage","handleMouseDown","handleMouseMove","e","rect","newWidth","newHeight","prev","handleMouseUp","msg","index","chatbot_black_default"]}
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 systemPrompt?: string;\n feedData?: any;\n apiUrl?: string;\n assistantName?: string;\n initialMessage?: string;\n model?: string;\n messages?: Message[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n}\n\nexport const ChatPopup = ({\n systemPrompt,\n feedData: externalfeedData,\n apiUrl = \"https://thikana.malaymishra.com/chatbot\",\n assistantName = \"Thikana\",\n initialMessage,\n model,\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 [internalfeedData, setInternalfeedData] = useState<any>(null);\n const [dimensions, setDimensions] = useState({ width: 330, height: 480 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\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\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const activefeedData = externalfeedData || internalfeedData;\n\n useEffect(() => {\n if (internalMessages.length === 0) {\n const saved = localStorage.getItem(\"messages\");\n if (saved) {\n setInternalMessages(JSON.parse(saved));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hi this is ${assistantName}! How can I help you today?`,\n },\n ]);\n }\n }\n }, [initialMessage, assistantName, internalMessages.length]);\n\n useEffect(() => {\n if (!externalfeedData) {\n const fetchfeedData = async () => {\n try {\n const response = await fetch(\n \"https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json\",\n );\n const data = await response.json();\n setInternalfeedData(data);\n } catch (error) {\n console.error(\"Error fetching portfolio data:\", error);\n }\n };\n fetchfeedData();\n }\n }, [externalfeedData]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [internalMessages]);\n\n const getAIResponse = async (currentMessages: Message[]): Promise<string> => {\n const response = await fetch(apiUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n messages: currentMessages,\n feedData: activefeedData,\n systemPrompt,\n model,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.error || \"Failed to get AI response\");\n }\n\n const data = await response.json();\n if (onResponseReceive) onResponseReceive(data.text);\n return data.text;\n };\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\n setInternalMessages(newMessages);\n\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const text = await getAIResponse(newMessages);\n\n const assistantMessage: Message = {\n role: \"assistant\",\n content: text,\n };\n\n const updatedMessages = [...newMessages, assistantMessage];\n\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const defaultFailMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, I encountered an error. Please try again later.\",\n };\n const updatedMessages = [...newMessages, defaultFailMessage];\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n } finally {\n setIsLoading(false);\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 handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!wrapperRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n if (newWidth > 250 && newWidth < 800) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 300 && newHeight < 800) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"chatbot-container\" ref={containerRef}>\n {openPopup && (\n <div className=\"chatbot-popup\">\n <div\n ref={wrapperRef}\n className={`chat-popup-wrapper ${isResizing ? \"resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n position: \"relative\",\n }}\n >\n <div className=\"stretch-icon\" onMouseDown={handleMouseDown}></div>\n <div className=\"messages-container\">\n {internalMessages.map((msg: Message, index: number) => (\n <div\n key={index}\n className={`message ${msg.role === \"user\" ? \"user\" : \"ai\"}`}\n >\n {msg.content}\n </div>\n ))}\n {isLoading && (\n <div className=\"message ai loading\">Thinking...</div>\n )}\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"input-container\">\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder=\"What's on your mind?\"\n value={input}\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}\n className=\"send-button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n )}\n\n <img\n onClick={() => setOpenPopup((prev) => !prev)}\n className=\"chatbot-icon\"\n alt=\"chatbot\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </div>\n );\n};\n"],"mappings":"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","names":["index_exports","__export","ChatPopup","__toCommonJS","import_react","import_jsx_runtime","ChatPopup","systemPrompt","externalfeedData","apiUrl","assistantName","initialMessage","model","onMessageSend","onResponseReceive","input","setInput","internalMessages","setInternalMessages","isLoading","setIsLoading","internalfeedData","setInternalfeedData","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","handleClickOutside","event","wrapperRef","textareaRef","messagesEndRef","activefeedData","saved","data","error","scrollToBottom","getAIResponse","currentMessages","response","errorData","callModel","userInput","userMessage","newMessages","assistantMessage","updatedMessages","defaultFailMessage","handleMouseDown","handleMouseMove","e","rect","newWidth","newHeight","prev","handleMouseUp","msg","index","chatbot_black_default"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{useState as c,useRef as v,useEffect as p,useCallback as G}from"react";var u="data:image/png;base64,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";import{jsx as s,jsxs as f}from"react/jsx-runtime";var ne=({systemPrompt:S,portfolioData:b,apiUrl:C="https://thikana.malaymishra.com/chatbot",assistantName:O="Thikana",initialMessage:k,model:W,messages:i,onMessageSend:T,onResponseReceive:h,mockMode:j=!1,position:A="relative"})=>{let[d,L]=c(""),[x,l]=c([]),[m,M]=c(!1),[X,V]=c(null),[P,$]=c({width:330,height:480}),[w,K]=c(!1),[J,_]=c(!1),D=v(null);p(()=>{function e(t){D.current&&!D.current.contains(t.target)&&_(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]);let I=v(null),g=v(null),N=v(null),H=i||x,E=b||X;p(()=>{if((!i||i.length===0)&&x.length===0){let e=localStorage.getItem("messages");l(e?JSON.parse(e):[{role:"assistant",content:k||`Hi this is ${O}! How can I help you today?`}])}},[i,k,O,x.length]),p(()=>{b||(async()=>{try{let o=await(await fetch("https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json")).json();V(o)}catch(t){console.error("Error fetching portfolio data:",t)}})()},[b]);let Z=()=>{N.current?.scrollIntoView({behavior:"smooth"})};p(()=>{Z()},[H]);let Y=async e=>{if(j){await new Promise(n=>setTimeout(n,1e3));let a=["That's an interesting question! Let me help you with that.","I understand what you're asking. Here's what I think...","Great question! Based on what you've told me, I'd suggest...","Let me break that down for you.","I'm here to help! Here's my take on that..."],r=a[Math.floor(Math.random()*a.length)];return h&&h(r),r}let t=await fetch(C,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:e,portfolioData:E,systemPrompt:S,model:W})});if(!t.ok){let a=await t.json();throw new Error(a.error||"Failed to get AI response")}let o=await t.json();return h&&h(o.text),o.text},R=async e=>{if(!e.trim()||m)return;let t={role:"user",content:e};T&&T(t);let o=[...H,t];i||l(o),L(""),M(!0);try{let r={role:"assistant",content:await Y(o)},n=[...o,r];i||(l(n),localStorage.setItem("messages",JSON.stringify(n)))}catch(a){console.error("Error calling AI:",a);let r={role:"assistant",content:"Sorry, I encountered an error. Please try again later."},n=[...o,r];i||(l(n),localStorage.setItem("messages",JSON.stringify(n)))}finally{M(!1)}};p(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=`${Math.min(g.current.scrollHeight,100)}px`)},[d]);let U=G(e=>{e.preventDefault(),K(!0)},[]);return p(()=>{if(!w)return;let e=o=>{if(!I.current)return;let a=I.current.getBoundingClientRect(),r=a.right-o.clientX,n=a.bottom-o.clientY;r>250&&r<800&&$(y=>({...y,width:r})),n>300&&n<800&&$(y=>({...y,height:n}))},t=()=>{K(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",t),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",t)}},[w]),f("div",{className:"chatbot-container",ref:D,children:[J&&s("div",{className:"chatbot-popup",children:f("div",{ref:I,className:`chat-popup-wrapper ${w?"resizing":""}`,style:{width:`${P.width}px`,height:`${P.height}px`,position:A},children:[s("div",{className:"stretch-icon",onMouseDown:U}),f("div",{className:"messages-container",children:[H.map((e,t)=>s("div",{className:`message ${e.role==="user"?"user":"ai"}`,children:e.content},t)),m&&s("div",{className:"message ai loading",children:"Thinking..."}),s("div",{ref:N})]}),f("div",{className:"input-container",children:[s("textarea",{ref:g,rows:1,placeholder:"What's on your mind?",value:d,onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),R(d))},onChange:e=>L(e.target.value)}),s("button",{onClick:()=>R(d),disabled:!d.trim()||m,className:"send-button",children:f("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),s("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})]})]})}),s("img",{onClick:()=>_(e=>!e),className:"chatbot-icon",alt:"chatbot",src:typeof u=="string"?u:u.src})]})};export{ne as ChatPopup};
1
+ import{useState as i,useRef as h,useEffect as c,useCallback as Z}from"react";var u="data:image/png;base64,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";import{jsx as n,jsxs as f}from"react/jsx-runtime";var F=({systemPrompt:_,feedData:v,apiUrl:N="https://thikana.malaymishra.com/chatbot",assistantName:I="Thikana",initialMessage:H,model:S,onMessageSend:O,onResponseReceive:y})=>{let[p,T]=i(""),[d,l]=i([]),[x,k]=i(!1),[C,W]=i(null),[M,L]=i({width:330,height:480}),[b,$]=i(!1),[j,K]=i(!1),D=h(null);c(()=>{function e(t){D.current&&!D.current.contains(t.target)&&K(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]);let w=h(null),g=h(null),P=h(null),A=v||C;c(()=>{if(d.length===0){let e=localStorage.getItem("messages");l(e?JSON.parse(e):[{role:"assistant",content:H||`Hi this is ${I}! How can I help you today?`}])}},[H,I,d.length]),c(()=>{v||(async()=>{try{let o=await(await fetch("https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json")).json();W(o)}catch(t){console.error("Error fetching portfolio data:",t)}})()},[v]);let X=()=>{P.current?.scrollIntoView({behavior:"smooth"})};c(()=>{X()},[d]);let V=async e=>{let t=await fetch(N,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:e,feedData:A,systemPrompt:_,model:S})});if(!t.ok){let r=await t.json();throw new Error(r.error||"Failed to get AI response")}let o=await t.json();return y&&y(o.text),o.text},R=async e=>{if(!e.trim()||x)return;let t={role:"user",content:e};O&&O(t);let o=[...d,t];l(o),T(""),k(!0);try{let s={role:"assistant",content:await V(o)},a=[...o,s];l(a),localStorage.setItem("messages",JSON.stringify(a))}catch(r){console.error("Error calling AI:",r);let s={role:"assistant",content:"Sorry, I encountered an error. Please try again later."},a=[...o,s];l(a),localStorage.setItem("messages",JSON.stringify(a))}finally{k(!1)}};c(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=`${Math.min(g.current.scrollHeight,100)}px`)},[p]);let J=Z(e=>{e.preventDefault(),$(!0)},[]);return c(()=>{if(!b)return;let e=o=>{if(!w.current)return;let r=w.current.getBoundingClientRect(),s=r.right-o.clientX,a=r.bottom-o.clientY;s>250&&s<800&&L(m=>({...m,width:s})),a>300&&a<800&&L(m=>({...m,height:a}))},t=()=>{$(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",t),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",t)}},[b]),f("div",{className:"chatbot-container",ref:D,children:[j&&n("div",{className:"chatbot-popup",children:f("div",{ref:w,className:`chat-popup-wrapper ${b?"resizing":""}`,style:{width:`${M.width}px`,height:`${M.height}px`,position:"relative"},children:[n("div",{className:"stretch-icon",onMouseDown:J}),f("div",{className:"messages-container",children:[d.map((e,t)=>n("div",{className:`message ${e.role==="user"?"user":"ai"}`,children:e.content},t)),x&&n("div",{className:"message ai loading",children:"Thinking..."}),n("div",{ref:P})]}),f("div",{className:"input-container",children:[n("textarea",{ref:g,rows:1,placeholder:"What's on your mind?",value:p,onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),R(p))},onChange:e=>T(e.target.value)}),n("button",{onClick:()=>R(p),disabled:!p.trim()||x,className:"send-button",children:f("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[n("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),n("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})]})]})}),n("img",{onClick:()=>K(e=>!e),className:"chatbot-icon",alt:"chatbot",src:typeof u=="string"?u:u.src})]})};export{F as ChatPopup};
2
2
  //# 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 systemPrompt?: string;\n portfolioData?: any;\n apiUrl?: string;\n assistantName?: string;\n initialMessage?: string;\n model?: string;\n messages?: Message[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n mockMode?: boolean; // If true, uses mock responses instead of API calls\n position?: \"fixed\" | \"relative\"; // Position style for the wrapper\n}\n\nexport const ChatPopup = ({\n systemPrompt,\n portfolioData: externalPortfolioData,\n apiUrl = \"https://thikana.malaymishra.com/chatbot\",\n assistantName = \"Thikana\",\n initialMessage,\n model,\n messages: externalMessages,\n onMessageSend,\n onResponseReceive,\n mockMode = false,\n position = \"relative\",\n}: ChatPopupProps) => {\n const [input, setInput] = useState<string>(\"\");\n const [internalMessages, setInternalMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [internalPortfolioData, setInternalPortfolioData] = useState<any>(null);\n const [dimensions, setDimensions] = useState({ width: 330, height: 480 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\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\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const activeMessages = externalMessages || internalMessages;\n const activePortfolioData = externalPortfolioData || internalPortfolioData;\n\n useEffect(() => {\n if (!externalMessages || externalMessages.length === 0) {\n if (internalMessages.length === 0) {\n const saved = localStorage.getItem(\"messages\");\n if (saved) {\n setInternalMessages(JSON.parse(saved));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hi this is ${assistantName}! How can I help you today?`,\n },\n ]);\n }\n }\n }\n }, [\n externalMessages,\n initialMessage,\n assistantName,\n internalMessages.length,\n ]);\n\n useEffect(() => {\n if (!externalPortfolioData) {\n const fetchPortfolioData = async () => {\n try {\n const response = await fetch(\n \"https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json\",\n );\n const data = await response.json();\n setInternalPortfolioData(data);\n } catch (error) {\n console.error(\"Error fetching portfolio data:\", error);\n }\n };\n fetchPortfolioData();\n }\n }, [externalPortfolioData]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [activeMessages]);\n\n const getAIResponse = async (currentMessages: Message[]): Promise<string> => {\n // Mock mode for testing without API\n if (mockMode) {\n await new Promise((resolve) => setTimeout(resolve, 1000)); // Simulate API delay\n const mockResponses = [\n \"That's an interesting question! Let me help you with that.\",\n \"I understand what you're asking. Here's what I think...\",\n \"Great question! Based on what you've told me, I'd suggest...\",\n \"Let me break that down for you.\",\n \"I'm here to help! Here's my take on that...\",\n ];\n const response =\n mockResponses[Math.floor(Math.random() * mockResponses.length)];\n if (onResponseReceive) onResponseReceive(response);\n return response;\n }\n\n const response = await fetch(apiUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n messages: currentMessages,\n portfolioData: activePortfolioData,\n systemPrompt,\n model,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.error || \"Failed to get AI response\");\n }\n\n const data = await response.json();\n if (onResponseReceive) onResponseReceive(data.text);\n return data.text;\n };\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 = [...activeMessages, userMessage];\n\n if (!externalMessages) {\n setInternalMessages(newMessages);\n }\n\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const text = await getAIResponse(newMessages);\n\n const assistantMessage: Message = {\n role: \"assistant\",\n content: text,\n };\n\n const updatedMessages = [...newMessages, assistantMessage];\n if (!externalMessages) {\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n }\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const defaultFailMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, I encountered an error. Please try again later.\",\n };\n const updatedMessages = [...newMessages, defaultFailMessage];\n if (!externalMessages) {\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n }\n } finally {\n setIsLoading(false);\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 handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!wrapperRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n if (newWidth > 250 && newWidth < 800) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 300 && newHeight < 800) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"chatbot-container\" ref={containerRef}>\n {openPopup && (\n <div className=\"chatbot-popup\">\n <div\n ref={wrapperRef}\n className={`chat-popup-wrapper ${isResizing ? \"resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n position: position,\n }}\n >\n <div className=\"stretch-icon\" onMouseDown={handleMouseDown}></div>\n <div className=\"messages-container\">\n {activeMessages.map((msg: Message, index: number) => (\n <div\n key={index}\n className={`message ${msg.role === \"user\" ? \"user\" : \"ai\"}`}\n >\n {msg.content}\n </div>\n ))}\n {isLoading && (\n <div className=\"message ai loading\">Thinking...</div>\n )}\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"input-container\">\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder=\"What's on your mind?\"\n value={input}\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}\n className=\"send-button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n )}\n\n <img\n onClick={() => setOpenPopup((prev) => !prev)}\n className=\"chatbot-icon\"\n alt=\"chatbot\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </div>\n );\n};\n"],"mappings":"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","names":["useState","useRef","useEffect","useCallback","jsx","jsxs","ChatPopup","systemPrompt","externalPortfolioData","apiUrl","assistantName","initialMessage","model","externalMessages","onMessageSend","onResponseReceive","mockMode","position","input","setInput","useState","internalMessages","setInternalMessages","isLoading","setIsLoading","internalPortfolioData","setInternalPortfolioData","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","useRef","useEffect","handleClickOutside","event","wrapperRef","textareaRef","messagesEndRef","activeMessages","activePortfolioData","saved","data","error","scrollToBottom","getAIResponse","currentMessages","resolve","mockResponses","response","errorData","callModel","userInput","userMessage","newMessages","assistantMessage","updatedMessages","defaultFailMessage","handleMouseDown","useCallback","handleMouseMove","e","rect","newWidth","newHeight","prev","handleMouseUp","msg","index","chatbot_black_default"]}
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 systemPrompt?: string;\n feedData?: any;\n apiUrl?: string;\n assistantName?: string;\n initialMessage?: string;\n model?: string;\n messages?: Message[];\n onMessageSend?: (message: Message) => void;\n onResponseReceive?: (response: string) => void;\n}\n\nexport const ChatPopup = ({\n systemPrompt,\n feedData: externalfeedData,\n apiUrl = \"https://thikana.malaymishra.com/chatbot\",\n assistantName = \"Thikana\",\n initialMessage,\n model,\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 [internalfeedData, setInternalfeedData] = useState<any>(null);\n const [dimensions, setDimensions] = useState({ width: 330, height: 480 });\n const [isResizing, setIsResizing] = useState(false);\n const [openPopup, setOpenPopup] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\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\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const activefeedData = externalfeedData || internalfeedData;\n\n useEffect(() => {\n if (internalMessages.length === 0) {\n const saved = localStorage.getItem(\"messages\");\n if (saved) {\n setInternalMessages(JSON.parse(saved));\n } else {\n setInternalMessages([\n {\n role: \"assistant\",\n content:\n initialMessage ||\n `Hi this is ${assistantName}! How can I help you today?`,\n },\n ]);\n }\n }\n }, [initialMessage, assistantName, internalMessages.length]);\n\n useEffect(() => {\n if (!externalfeedData) {\n const fetchfeedData = async () => {\n try {\n const response = await fetch(\n \"https://raw.githubusercontent.com/hi-malay/portfolio-data/refs/heads/main/scrapped_data.json\",\n );\n const data = await response.json();\n setInternalfeedData(data);\n } catch (error) {\n console.error(\"Error fetching portfolio data:\", error);\n }\n };\n fetchfeedData();\n }\n }, [externalfeedData]);\n\n const scrollToBottom = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [internalMessages]);\n\n const getAIResponse = async (currentMessages: Message[]): Promise<string> => {\n const response = await fetch(apiUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n messages: currentMessages,\n feedData: activefeedData,\n systemPrompt,\n model,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.error || \"Failed to get AI response\");\n }\n\n const data = await response.json();\n if (onResponseReceive) onResponseReceive(data.text);\n return data.text;\n };\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\n setInternalMessages(newMessages);\n\n setInput(\"\");\n setIsLoading(true);\n\n try {\n const text = await getAIResponse(newMessages);\n\n const assistantMessage: Message = {\n role: \"assistant\",\n content: text,\n };\n\n const updatedMessages = [...newMessages, assistantMessage];\n\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n } catch (error) {\n console.error(\"Error calling AI:\", error);\n const defaultFailMessage: Message = {\n role: \"assistant\",\n content: \"Sorry, I encountered an error. Please try again later.\",\n };\n const updatedMessages = [...newMessages, defaultFailMessage];\n setInternalMessages(updatedMessages);\n localStorage.setItem(\"messages\", JSON.stringify(updatedMessages));\n } finally {\n setIsLoading(false);\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 handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n setIsResizing(true);\n }, []);\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!wrapperRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n const newWidth = rect.right - e.clientX;\n const newHeight = rect.bottom - e.clientY;\n\n if (newWidth > 250 && newWidth < 800) {\n setDimensions((prev) => ({ ...prev, width: newWidth }));\n }\n if (newHeight > 300 && newHeight < 800) {\n setDimensions((prev) => ({ ...prev, height: newHeight }));\n }\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isResizing]);\n\n return (\n <div className=\"chatbot-container\" ref={containerRef}>\n {openPopup && (\n <div className=\"chatbot-popup\">\n <div\n ref={wrapperRef}\n className={`chat-popup-wrapper ${isResizing ? \"resizing\" : \"\"}`}\n style={{\n width: `${dimensions.width}px`,\n height: `${dimensions.height}px`,\n position: \"relative\",\n }}\n >\n <div className=\"stretch-icon\" onMouseDown={handleMouseDown}></div>\n <div className=\"messages-container\">\n {internalMessages.map((msg: Message, index: number) => (\n <div\n key={index}\n className={`message ${msg.role === \"user\" ? \"user\" : \"ai\"}`}\n >\n {msg.content}\n </div>\n ))}\n {isLoading && (\n <div className=\"message ai loading\">Thinking...</div>\n )}\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"input-container\">\n <textarea\n ref={textareaRef}\n rows={1}\n placeholder=\"What's on your mind?\"\n value={input}\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}\n className=\"send-button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n )}\n\n <img\n onClick={() => setOpenPopup((prev) => !prev)}\n className=\"chatbot-icon\"\n alt=\"chatbot\"\n src={typeof chatbot === \"string\" ? chatbot : (chatbot as any).src}\n />\n </div>\n );\n};\n"],"mappings":"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","names":["useState","useRef","useEffect","useCallback","jsx","jsxs","ChatPopup","systemPrompt","externalfeedData","apiUrl","assistantName","initialMessage","model","onMessageSend","onResponseReceive","input","setInput","useState","internalMessages","setInternalMessages","isLoading","setIsLoading","internalfeedData","setInternalfeedData","dimensions","setDimensions","isResizing","setIsResizing","openPopup","setOpenPopup","containerRef","useRef","useEffect","handleClickOutside","event","wrapperRef","textareaRef","messagesEndRef","activefeedData","saved","data","error","scrollToBottom","getAIResponse","currentMessages","response","errorData","callModel","userInput","userMessage","newMessages","assistantMessage","updatedMessages","defaultFailMessage","handleMouseDown","useCallback","handleMouseMove","e","rect","newWidth","newHeight","prev","handleMouseUp","msg","index","chatbot_black_default"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thikanaa",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "A beautiful, AI-powered chat popup component for React and Next.js applications",
5
5
  "keywords": [
6
6
  "react",