@headwai/chat-bubble 3.0.3 → 3.0.4

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.
@@ -1 +1 @@
1
- .chat-header.svelte-1dl0fot{color:#fff;padding:16px 20px;border-radius:12px 12px 0 0;box-shadow:0 2px 4px #0000001a;flex-shrink:0}.chat-header-content.svelte-1dl0fot{display:flex;align-items:center;justify-content:space-between;gap:12px}.chat-header-icon.svelte-1dl0fot{width:24px;height:24px;object-fit:contain;flex-shrink:0}.chat-title.svelte-1dl0fot{margin:0;font-size:16px;font-weight:600;text-align:center;font-family:inherit;flex:1}.chat-header-buttons.svelte-1dl0fot{display:flex;gap:8px;align-items:center;flex-shrink:0}.chat-new-button.svelte-1dl0fot,.chat-download-button.svelte-1dl0fot,.chat-close-button.svelte-1dl0fot{background:none;border:none;color:#fff;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;width:24px;height:24px}.chat-new-button.svelte-1dl0fot:hover,.chat-download-button.svelte-1dl0fot:hover,.chat-close-button.svelte-1dl0fot:hover{background-color:#ffffff1a;transform:scale(1.05)}.chat-new-button.svelte-1dl0fot:active,.chat-download-button.svelte-1dl0fot:active,.chat-close-button.svelte-1dl0fot:active{background-color:#fff3;transform:scale(.95)}.chat-new-button.svelte-1dl0fot:focus,.chat-download-button.svelte-1dl0fot:focus,.chat-close-button.svelte-1dl0fot:focus{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}.chat-download-button.svelte-1dl0fot:disabled{opacity:.5;cursor:not-allowed}.chat-download-button.svelte-1dl0fot:disabled:hover{background-color:transparent;transform:none}.ai-assistant-icon.svelte-1fv6mx9.svelte-1fv6mx9{position:fixed;bottom:20px;right:20px;width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 6px #0000001a;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.ai-assistant-icon.svelte-1fv6mx9.svelte-1fv6mx9:hover{transform:scale(1.1);box-shadow:0 6px 8px #00000026}.ai-assistant-icon.svelte-1fv6mx9.svelte-1fv6mx9:active{transform:scale(.95);box-shadow:0 2px 4px #0000001a}.ai-assistant-icon.svelte-1fv6mx9 img.svelte-1fv6mx9{width:75%;height:75%;object-fit:contain}.chat-content.svelte-i2r2w9{flex:1;display:flex;flex-direction:column;overflow:hidden}.chat-content.svelte-i2r2w9 deep-chat{width:100%!important;height:100%!important;position:relative!important;display:block!important;top:0!important;left:0!important;box-sizing:border-box!important}.chat-content.svelte-i2r2w9 deep-chat>*{width:100%!important;height:100%!important;box-sizing:border-box!important}html,body{margin:0;padding:0;width:100%;height:100%}main.svelte-hopfzj{font-family:sans-serif;position:fixed;top:0;left:0;right:0;bottom:0;margin:0;padding:0;overflow:hidden}.chat-container.svelte-hopfzj{position:fixed;bottom:20px;right:20px;width:400px;height:600px;border-radius:12px;box-shadow:0 8px 32px #00000026;overflow:hidden;z-index:999;background:#fff;animation:svelte-hopfzj-slideIn .3s ease-out;display:flex;flex-direction:column}@keyframes svelte-hopfzj-slideIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){.chat-container.svelte-hopfzj{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;border-radius:0}}
1
+ .chat-header.svelte-1dl0fot{color:#fff;padding:16px 20px;border-radius:12px 12px 0 0;box-shadow:0 2px 4px #0000001a;flex-shrink:0}.chat-header-content.svelte-1dl0fot{display:flex;align-items:center;justify-content:space-between;gap:12px}.chat-header-icon.svelte-1dl0fot{width:24px;height:24px;object-fit:contain;flex-shrink:0}.chat-title.svelte-1dl0fot{margin:0;font-size:16px;font-weight:600;text-align:center;font-family:inherit;flex:1}.chat-header-buttons.svelte-1dl0fot{display:flex;gap:8px;align-items:center;flex-shrink:0}.chat-new-button.svelte-1dl0fot,.chat-download-button.svelte-1dl0fot,.chat-close-button.svelte-1dl0fot{background:none;border:none;color:#fff;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;width:24px;height:24px}.chat-new-button.svelte-1dl0fot:hover,.chat-download-button.svelte-1dl0fot:hover,.chat-close-button.svelte-1dl0fot:hover{background-color:#ffffff1a;transform:scale(1.05)}.chat-new-button.svelte-1dl0fot:active,.chat-download-button.svelte-1dl0fot:active,.chat-close-button.svelte-1dl0fot:active{background-color:#fff3;transform:scale(.95)}.chat-new-button.svelte-1dl0fot:focus,.chat-download-button.svelte-1dl0fot:focus,.chat-close-button.svelte-1dl0fot:focus{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}.chat-download-button.svelte-1dl0fot:disabled{opacity:.5;cursor:not-allowed}.chat-download-button.svelte-1dl0fot:disabled:hover{background-color:transparent;transform:none}.ai-assistant-icon.svelte-15lda29.svelte-15lda29{position:fixed;bottom:20px;right:20px;width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 6px #0000001a;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.ai-assistant-icon.svelte-15lda29.svelte-15lda29:hover{transform:scale(1.1);box-shadow:0 6px 8px #00000026}.ai-assistant-icon.svelte-15lda29.svelte-15lda29:active{transform:scale(.95);box-shadow:0 2px 4px #0000001a}.ai-assistant-icon.svelte-15lda29 img.svelte-15lda29{width:75%;height:75%;object-fit:contain}.chat-content.svelte-i2r2w9{flex:1;display:flex;flex-direction:column;overflow:hidden}.chat-content.svelte-i2r2w9 deep-chat{width:100%!important;height:100%!important;position:relative!important;display:block!important;top:0!important;left:0!important;box-sizing:border-box!important}.chat-content.svelte-i2r2w9 deep-chat>*{width:100%!important;height:100%!important;box-sizing:border-box!important}html,body{margin:0;padding:0;width:100%;height:100%}main.svelte-hopfzj{font-family:sans-serif;position:fixed;top:0;left:0;right:0;bottom:0;margin:0;padding:0;overflow:hidden}.chat-container.svelte-hopfzj{position:fixed;bottom:20px;right:20px;width:400px;height:600px;border-radius:12px;box-shadow:0 8px 32px #00000026;overflow:hidden;z-index:999;background:#fff;animation:svelte-hopfzj-slideIn .3s ease-out;display:flex;flex-direction:column}@keyframes svelte-hopfzj-slideIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){.chat-container.svelte-hopfzj{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;border-radius:0}}
@@ -286,7 +286,7 @@ ${H.text}
286
286
  `,Z.log(`Message timestamp: ${x}, content: ${S}`)}else S+=`[${I}]:
287
287
  ${H.text}
288
288
 
289
- `,Z.log(`Message content: ${S}`)}});const C=new Blob([S],{type:"text/plain"}),P=URL.createObjectURL(C),L=document.createElement("a");L.href=P,L.download=`chat-history-${e}.txt`,document.body.appendChild(L),L.click(),document.body.removeChild(L),URL.revokeObjectURL(P),Z.log("Message history downloaded")}ps(()=>{p()});const b=S=>S.key==="Enter"&&p(),T=S=>S.key==="Enter"&&y(),R=S=>S.key==="Enter"&&v();return r.$$set=S=>{"iconPath"in S&&t(0,a=S.iconPath),"chatTitle"in S&&t(1,s=S.chatTitle),"fontFamily"in S&&t(2,o=S.fontFamily),"chatHeaderBackground"in S&&t(3,l=S.chatHeaderBackground),"initialMessage"in S&&t(9,u=S.initialMessage),"deepChatRef"in S&&t(10,c=S.deepChatRef),"modelId"in S&&t(11,d=S.modelId),"apiUrl"in S&&t(12,f=S.apiUrl),"apiKey"in S&&t(13,h=S.apiKey)},[a,s,o,l,e,n,v,p,y,u,c,d,f,h,b,T,R]}class wc extends zn{constructor(i){super(),Vn(this,i,Ec,Sc,rn,{iconPath:0,chatTitle:1,fontFamily:2,chatHeaderBackground:3,initialMessage:9,deepChatRef:10,modelId:11,apiUrl:12,apiKey:13})}}function Cc(r){let i,t,e,n,a;return{c(){i=ge("div"),t=ge("img"),Nn(t.src,e=r[1])||j(t,"src",e),j(t,"alt","Headwai Chat Bubble"),j(t,"class","svelte-1fv6mx9"),j(i,"class","ai-assistant-icon svelte-1fv6mx9"),vt(i,"background",r[0]),j(i,"role","button"),j(i,"tabindex","0")},m(s,o){an(s,i,o),ie(i,t),n||(a=[He(i,"click",r[2]),He(i,"keydown",r[3])],n=!0)},p(s,[o]){o&2&&!Nn(t.src,e=s[1])&&j(t,"src",e),o&1&&vt(i,"background",s[0])},i:ve,o:ve,d(s){s&&kt(i),n=!1,tt(a)}}}function Tc(r,i,t){let e;Ae(r,qn,l=>t(4,e=l));let{faviconBackgroundColor:n}=i,{iconPath:a}=i;function s(){qn.set(!e)}const o=l=>l.key==="Enter"&&s();return r.$$set=l=>{"faviconBackgroundColor"in l&&t(0,n=l.faviconBackgroundColor),"iconPath"in l&&t(1,a=l.iconPath)},[n,a,s,o]}class Ac extends zn{constructor(i){super(),Vn(this,i,Tc,Cc,rn,{faviconBackgroundColor:0,iconPath:1})}}function Mc(r){let i,t;return{c(){i=ge("div"),t=ge("deep-chat"),Oe(t,"demo","false"),Oe(t,"textInputConfig",r[1]),Oe(t,"messageStyles",r[2]),Oe(t,"history",r[3]),Oe(t,"connect",r[4]),Oe(t,"requestBodyLimits",r[5]),Oe(t,"requestInterceptor",r[6]),Oe(t,"responseInterceptor",r[7]),Oe(t,"onMessage",r[8]),j(i,"class","chat-content svelte-i2r2w9")},m(e,n){an(e,i,n),ie(i,t),r[23](t)},p:ve,i:ve,o:ve,d(e){e&&kt(i),r[23](null)}}}function xc(r){return r.map(i=>{let t=i.text||i.content;return{role:i.role==="ai"?"assistant":i.role,content:t}})}function Ic(r,i,t){let e,n,a,s,o,l;Ae(r,Pn,M=>t(24,e=M)),Ae(r,On,M=>t(25,n=M)),Ae(r,Rn,M=>t(26,a=M)),Ae(r,In,M=>t(27,s=M)),Ae(r,xn,M=>t(28,o=M)),Ae(r,Ln,M=>t(29,l=M));let{deepChatRef:u}=i,{placeholderText:c}=i,{fontFamily:d}=i,{fontSize:f}=i,{userMessageBackgroundColor:h}=i,{userMessageTextColor:v}=i,{aiMessageBackgroundColor:p}=i,{aiMessageTextColor:g}=i,{feedbackMessageBackgroundColor:y}=i,{feedbackMessageTextColor:b}=i,{initialMessage:T}=i,{apiUrl:R}=i,{apiKey:S}=i,{modelId:C}=i,{maxMessages:P}=i;const L={placeholder:{text:c},styles:{container:{fontFamily:d,fontSize:f}}},H={default:{shared:{bubble:{fontFamily:d,fontSize:f}},user:{bubble:{backgroundColor:h,color:v}},ai:{bubble:{backgroundColor:p,color:g}},feedback:{bubble:{backgroundColor:y,color:b}}}},I=[{role:"ai",text:T,custom:{timestamp:Math.floor(Date.now()/1e3)}}],x={type:"websocket",url:`${R}/api/chat/completions`,headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},additionalBodyProps:{model:C,stream:!0,params:{},tool_servers:[],features:{image_generation:!1,code_interpreter:!1,web_search:!1,memory:!1},variables:{"{{USER_NAME}}":"David Schneebauer | headwAI GmbH","{{USER_LOCATION}}":"Unknown","{{CURRENT_DATETIME}}":new Date().toISOString().slice(0,19).replace("T"," "),"{{CURRENT_DATE}}":new Date().toISOString().slice(0,10),"{{CURRENT_TIME}}":new Date().toTimeString().slice(0,8),"{{CURRENT_WEEKDAY}}":new Date().toLocaleDateString("en-US",{weekday:"long"}),"{{CURRENT_TIMEZONE}}":Intl.DateTimeFormat().resolvedOptions().timeZone,"{{USER_LANGUAGE}}":"en-GB"},...n&&{chat_id:n},background_tasks:{title_generation:!0,tags_generation:!1,follow_up_generation:!1}},stream:!0},A={maxMessages:P},D=async M=>{if(M.body&&M.body.messages){M.body.messages=xc(M.body.messages).map(J=>(J.role==="assistant"&&J.content&&(J.content=_c(J.content)),J)),M.body.messages=M.body.messages.filter(J=>J.role!=="feedback");const K=M.body.messages.filter(J=>J.role==="user");K.length>0&&xn.set(K[K.length-1].content),n&&(M.body.chat_id=n)}return M},w=M=>{Z.log(M),M.sources&&Array.isArray(M.sources)&&(Rn.set(M.sources),Z.log(`Found ${M.sources.length} sources in response`),Z.log("assistantMessageSources:",M.sources));try{const K=bc(M);K.length>0&&(Ln.set(K),Z.log(`Found ${K.length} references in response`))}catch{}if(M.choices&&M.choices[0]&&M.choices[0].delta){const K=M.choices[0].delta,J=K.content||"";return J&&In.update(te=>te+J),M.choices[0].finish_reason&&Z.log("Streaming response ended"),{text:J,role:K.role==="assistant"?"ai":K.role||"ai"}}if(M.choices&&M.choices[0]&&M.choices[0].message){const K=M.choices[0].message;return Z.log("Non-streaming response received"),{text:K.content,role:K.role==="assistant"?"ai":K.role}}return M.text||M.html||M.files?M:typeof M=="string"?{text:M}:M};async function W(M){const{message:K,isHistory:J}=M;if(Z.log(M),!J&&(K.role==="ai"||K.role==="assistant")){Z.log("🤖 AI answered:",K.text);const te=K.text||"";let _e=te;if(l.length>0&&u){Z.log("📚 Formatting and updating AI message with references");const Le=kc(l,te);_e=te+Le,Le?(Z.log("Found inline citations, adding references"),u.updateMessage({text:_e},u.getMessages().length-1)):Z.log("No inline citations found, skipping references")}u.scrollToBottom(),ee(o,s,a);const he=e.filter(Le=>Le.role==="assistant").pop();Z.log("Last assistant message:",he);const Se=he?he.id:Xt();Z.log("Using assistant message ID for feedback:",Se);const Te=u.getMessages().length;u.addMessage({html:`
289
+ `,Z.log(`Message content: ${S}`)}});const C=new Blob([S],{type:"text/plain"}),P=URL.createObjectURL(C),L=document.createElement("a");L.href=P,L.download=`chat-history-${e}.txt`,document.body.appendChild(L),L.click(),document.body.removeChild(L),URL.revokeObjectURL(P),Z.log("Message history downloaded")}ps(()=>{p()});const b=S=>S.key==="Enter"&&p(),T=S=>S.key==="Enter"&&y(),R=S=>S.key==="Enter"&&v();return r.$$set=S=>{"iconPath"in S&&t(0,a=S.iconPath),"chatTitle"in S&&t(1,s=S.chatTitle),"fontFamily"in S&&t(2,o=S.fontFamily),"chatHeaderBackground"in S&&t(3,l=S.chatHeaderBackground),"initialMessage"in S&&t(9,u=S.initialMessage),"deepChatRef"in S&&t(10,c=S.deepChatRef),"modelId"in S&&t(11,d=S.modelId),"apiUrl"in S&&t(12,f=S.apiUrl),"apiKey"in S&&t(13,h=S.apiKey)},[a,s,o,l,e,n,v,p,y,u,c,d,f,h,b,T,R]}class wc extends zn{constructor(i){super(),Vn(this,i,Ec,Sc,rn,{iconPath:0,chatTitle:1,fontFamily:2,chatHeaderBackground:3,initialMessage:9,deepChatRef:10,modelId:11,apiUrl:12,apiKey:13})}}function Cc(r){let i,t,e,n,a;return{c(){i=ge("div"),t=ge("img"),Nn(t.src,e=r[1])||j(t,"src",e),j(t,"alt","Headwai Chat Bubble"),j(t,"class","svelte-15lda29"),j(i,"class","ai-assistant-icon svelte-15lda29"),vt(i,"background",r[0]),j(i,"role","button"),j(i,"tabindex","0")},m(s,o){an(s,i,o),ie(i,t),n||(a=[He(i,"click",r[2]),He(i,"keydown",r[3])],n=!0)},p(s,[o]){o&2&&!Nn(t.src,e=s[1])&&j(t,"src",e),o&1&&vt(i,"background",s[0])},i:ve,o:ve,d(s){s&&kt(i),n=!1,tt(a)}}}function Tc(r,i,t){let e;Ae(r,qn,l=>t(4,e=l));let{faviconBackgroundColor:n}=i,{iconPath:a}=i;function s(){qn.set(!e)}const o=l=>l.key==="Enter"&&s();return r.$$set=l=>{"faviconBackgroundColor"in l&&t(0,n=l.faviconBackgroundColor),"iconPath"in l&&t(1,a=l.iconPath)},[n,a,s,o]}class Ac extends zn{constructor(i){super(),Vn(this,i,Tc,Cc,rn,{faviconBackgroundColor:0,iconPath:1})}}function Mc(r){let i,t;return{c(){i=ge("div"),t=ge("deep-chat"),Oe(t,"demo","false"),Oe(t,"textInputConfig",r[1]),Oe(t,"messageStyles",r[2]),Oe(t,"history",r[3]),Oe(t,"connect",r[4]),Oe(t,"requestBodyLimits",r[5]),Oe(t,"requestInterceptor",r[6]),Oe(t,"responseInterceptor",r[7]),Oe(t,"onMessage",r[8]),j(i,"class","chat-content svelte-i2r2w9")},m(e,n){an(e,i,n),ie(i,t),r[23](t)},p:ve,i:ve,o:ve,d(e){e&&kt(i),r[23](null)}}}function xc(r){return r.map(i=>{let t=i.text||i.content;return{role:i.role==="ai"?"assistant":i.role,content:t}})}function Ic(r,i,t){let e,n,a,s,o,l;Ae(r,Pn,M=>t(24,e=M)),Ae(r,On,M=>t(25,n=M)),Ae(r,Rn,M=>t(26,a=M)),Ae(r,In,M=>t(27,s=M)),Ae(r,xn,M=>t(28,o=M)),Ae(r,Ln,M=>t(29,l=M));let{deepChatRef:u}=i,{placeholderText:c}=i,{fontFamily:d}=i,{fontSize:f}=i,{userMessageBackgroundColor:h}=i,{userMessageTextColor:v}=i,{aiMessageBackgroundColor:p}=i,{aiMessageTextColor:g}=i,{feedbackMessageBackgroundColor:y}=i,{feedbackMessageTextColor:b}=i,{initialMessage:T}=i,{apiUrl:R}=i,{apiKey:S}=i,{modelId:C}=i,{maxMessages:P}=i;const L={placeholder:{text:c},styles:{container:{fontFamily:d,fontSize:f}}},H={default:{shared:{bubble:{fontFamily:d,fontSize:f}},user:{bubble:{backgroundColor:h,color:v}},ai:{bubble:{backgroundColor:p,color:g}},feedback:{bubble:{backgroundColor:y,color:b}}}},I=[{role:"ai",text:T,custom:{timestamp:Math.floor(Date.now()/1e3)}}],x={type:"websocket",url:`${R}/api/chat/completions`,headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},additionalBodyProps:{model:C,stream:!0,params:{},tool_servers:[],features:{image_generation:!1,code_interpreter:!1,web_search:!1,memory:!1},variables:{"{{USER_NAME}}":"David Schneebauer | headwAI GmbH","{{USER_LOCATION}}":"Unknown","{{CURRENT_DATETIME}}":new Date().toISOString().slice(0,19).replace("T"," "),"{{CURRENT_DATE}}":new Date().toISOString().slice(0,10),"{{CURRENT_TIME}}":new Date().toTimeString().slice(0,8),"{{CURRENT_WEEKDAY}}":new Date().toLocaleDateString("en-US",{weekday:"long"}),"{{CURRENT_TIMEZONE}}":Intl.DateTimeFormat().resolvedOptions().timeZone,"{{USER_LANGUAGE}}":"en-GB"},...n&&{chat_id:n},background_tasks:{title_generation:!0,tags_generation:!1,follow_up_generation:!1}},stream:!0},A={maxMessages:P},D=async M=>{if(M.body&&M.body.messages){M.body.messages=xc(M.body.messages).map(J=>(J.role==="assistant"&&J.content&&(J.content=_c(J.content)),J)),M.body.messages=M.body.messages.filter(J=>J.role!=="feedback");const K=M.body.messages.filter(J=>J.role==="user");K.length>0&&xn.set(K[K.length-1].content),n&&(M.body.chat_id=n)}return M},w=M=>{Z.log(M),M.sources&&Array.isArray(M.sources)&&(Rn.set(M.sources),Z.log(`Found ${M.sources.length} sources in response`),Z.log("assistantMessageSources:",M.sources));try{const K=bc(M);K.length>0&&(Ln.set(K),Z.log(`Found ${K.length} references in response`))}catch{}if(M.choices&&M.choices[0]&&M.choices[0].delta){const K=M.choices[0].delta,J=K.content||"";return J&&In.update(te=>te+J),M.choices[0].finish_reason&&Z.log("Streaming response ended"),{text:J,role:K.role==="assistant"?"ai":K.role||"ai"}}if(M.choices&&M.choices[0]&&M.choices[0].message){const K=M.choices[0].message;return Z.log("Non-streaming response received"),{text:K.content,role:K.role==="assistant"?"ai":K.role}}return M.text||M.html||M.files?M:typeof M=="string"?{text:M}:M};async function W(M){const{message:K,isHistory:J}=M;if(Z.log(M),!J&&(K.role==="ai"||K.role==="assistant")){Z.log("🤖 AI answered:",K.text);const te=K.text||"";let _e=te;if(l.length>0&&u){Z.log("📚 Formatting and updating AI message with references");const Le=kc(l,te);_e=te+Le,Le?(Z.log("Found inline citations, adding references"),u.updateMessage({text:_e},u.getMessages().length-1)):Z.log("No inline citations found, skipping references")}u.scrollToBottom(),ee(o,s,a);const he=e.filter(Le=>Le.role==="assistant").pop();Z.log("Last assistant message:",he);const Se=he?he.id:Xt();Z.log("Using assistant message ID for feedback:",Se);const Te=u.getMessages().length;u.addMessage({html:`
290
290
  <div class="feedback">
291
291
  <div class="feedback-icons">
292
292
  <span class="feedback-icon feedback-icon-positive" title="Good response" onclick="window.handleFeedback('${Se}', 'positive', '${Te}')" style="cursor: pointer;">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@headwai/chat-bubble",
3
- "version": "3.0.3",
3
+ "version": "3.0.4",
4
4
  "description": "A chat bubble component for LocalChat by headwAI",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,6 +36,8 @@
36
36
  "devDependencies": {
37
37
  "@sveltejs/vite-plugin-svelte": "^3.0.1",
38
38
  "deep-chat": "2.2.2",
39
+ "prettier": "^3.6.2",
40
+ "prettier-plugin-svelte": "^3.4.0",
39
41
  "svelte": "^4.2.9",
40
42
  "vite": "^5.0.12"
41
43
  },