@auticlabs/bulut 1.0.3 → 1.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.
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  'use client';
2
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react");function t({projectId:t,backendBaseUrl:r,model:o,voice:n,baseColor:s,agentName:c}){const u=e.useRef(null),a=e.useRef(`bulut-${Math.random().toString(36).slice(2,9)}`);return e.useEffect(()=>{const e=u.current;if(!e)return;const l=a.current;e.id=l;let i,d=!1;return(async()=>{const e=await Promise.resolve().then(()=>require("./embed.cjs"));d||(e.init({containerId:l,projectId:t,backendBaseUrl:r,model:o,voice:n,baseColor:s,agentName:c}),i=()=>e.destroy())})(),()=>{d=!0,null==i||i()}},[t,r,o,n,s,c]),e.createElement("div",{ref:u})}exports.Bulut=t,exports.default=t;
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react");function t({projectId:t,backendBaseUrl:r}){const n=e.useRef(null),s=e.useRef(`bulut-${Math.random().toString(36).slice(2,9)}`);return e.useEffect(()=>{const e=n.current;if(!e)return;const u=s.current;e.id=u;let o,c=!1;return(async()=>{const e=await Promise.resolve().then(()=>require("./embed.cjs"));c||(e.init({containerId:u,projectId:t,backendBaseUrl:r}),o=()=>e.destroy())})(),()=>{c=!0,null==o||o()}},[t,r]),e.createElement("div",{ref:n})}exports.Bulut=t,exports.default=t;
3
3
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/react.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createElement, useEffect, useRef } from 'react';\r\n\r\nexport type BulutVoice = 'zeynep' | 'ali';\r\n\r\nexport interface BulutProps {\r\n /** The project ID for your Bulut instance (required). */\r\n projectId: string;\r\n /** Backend API URL. Defaults to `\"http://localhost:8000\"`. */\r\n backendBaseUrl?: string;\r\n /** LLM model identifier. */\r\n model?: string;\r\n /** Voice for TTS output. */\r\n voice?: BulutVoice;\r\n /** Primary theme colour as hex, e.g. `\"#6C03C1\"`. */\r\n baseColor?: string;\r\n /** Agent display name (max 15 chars). */\r\n agentName?: string;\r\n}\r\n\r\n/**\r\n * `<Bulut>` – drop-in React / Next.js chatbot widget.\r\n *\r\n * Renders the Bulut floating chat widget inside a Shadow DOM container\r\n * so its styles never leak into your application.\r\n *\r\n * @example\r\n * ```tsx\r\n * import { Bulut } from 'bulut';\r\n *\r\n * export default function Page() {\r\n * return <Bulut projectId=\"proj_abc123\" />;\r\n * }\r\n * ```\r\n */\r\nexport function Bulut({\r\n projectId,\r\n backendBaseUrl,\r\n model,\r\n voice,\r\n baseColor,\r\n agentName,\r\n}: BulutProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const containerIdRef = useRef(\r\n `bulut-${Math.random().toString(36).slice(2, 9)}`,\r\n );\r\n\r\n useEffect(() => {\r\n const el = containerRef.current;\r\n if (!el) return;\r\n\r\n const containerId = containerIdRef.current;\r\n el.id = containerId;\r\n\r\n let destroyed = false;\r\n let cleanup: (() => void) | undefined;\r\n\r\n // Dynamic import keeps the Preact widget code out of the SSR bundle\r\n // and avoids `window`/`document` references at import time.\r\n (async () => {\r\n const mod = await import('./index');\r\n if (destroyed) return;\r\n\r\n mod.init({\r\n containerId,\r\n projectId,\r\n backendBaseUrl,\r\n model,\r\n voice,\r\n baseColor,\r\n agentName,\r\n });\r\n\r\n cleanup = () => mod.destroy();\r\n })();\r\n\r\n return () => {\r\n destroyed = true;\r\n cleanup?.();\r\n };\r\n }, [projectId, backendBaseUrl, model, voice, baseColor, agentName]);\r\n\r\n // Plain createElement – no JSX – so this file stays free of the\r\n // Preact JSX transform and keeps real React imports.\r\n return createElement('div', { ref: containerRef });\r\n}\r\n\r\nexport default Bulut;\r\n"],"names":["Bulut","projectId","backendBaseUrl","model","voice","baseColor","agentName","containerRef","useRef","containerIdRef","Math","random","toString","slice","useEffect","el","current","containerId","id","cleanup","destroyed","mod","Promise","resolve","then","require","init","destroy","createElement","ref"],"mappings":"qIAoCO,SAASA,GAAMC,UACpBA,EAAAC,eACAA,EAAAC,MACAA,EAAAC,MACAA,EAAAC,UACAA,EAAAC,UACAA,IAEA,MAAMC,EAAeC,EAAAA,OAAuB,MACtCC,EAAiBD,EAAAA,OACrB,SAASE,KAAKC,SAASC,SAAS,IAAIC,MAAM,EAAG,MAwC/C,OArCAC,EAAAA,UAAU,KACR,MAAMC,EAAKR,EAAaS,QACxB,IAAKD,EAAI,OAET,MAAME,EAAcR,EAAeO,QACnCD,EAAGG,GAAKD,EAER,IACIE,EADAC,GAAY,EAsBhB,MAjBA,WACE,MAAMC,QAAYC,QAAAC,UAAAC,KAAA,IAAAC,QAAO,gBACrBL,IAEJC,EAAIK,KAAK,CACPT,cACAhB,YACAC,iBACAC,QACAC,QACAC,YACAC,cAGFa,EAAU,IAAME,EAAIM,UACtB,EAfA,GAiBO,KACLP,GAAY,EACZ,MAAAD,GAAAA,MAED,CAAClB,EAAWC,EAAgBC,EAAOC,EAAOC,EAAWC,IAIjDsB,EAAAA,cAAc,MAAO,CAAEC,IAAKtB,GACrC"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/react.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createElement, useEffect, useRef } from 'react';\r\n\r\nexport interface BulutProps {\r\n /** The project ID for your Bulut instance (required). */\r\n projectId: string;\r\n /** Backend API URL. Defaults to `\"https://api.bulut.lu\"`. */\r\n backendBaseUrl?: string;\r\n}\r\n\r\n/**\r\n * `<Bulut>` – drop-in React / Next.js chatbot widget.\r\n *\r\n * Renders the Bulut floating chat widget inside a Shadow DOM container\r\n * so its styles never leak into your application.\r\n *\r\n * @example\r\n * ```tsx\r\n * import { Bulut } from 'bulut';\r\n *\r\n * export default function Page() {\r\n * return <Bulut projectId=\"proj_abc123\" />;\r\n * }\r\n * ```\r\n */\r\nexport function Bulut({\r\n projectId,\r\n backendBaseUrl,\r\n}: BulutProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const containerIdRef = useRef(\r\n `bulut-${Math.random().toString(36).slice(2, 9)}`,\r\n );\r\n\r\n useEffect(() => {\r\n const el = containerRef.current;\r\n if (!el) return;\r\n\r\n const containerId = containerIdRef.current;\r\n el.id = containerId;\r\n\r\n let destroyed = false;\r\n let cleanup: (() => void) | undefined;\r\n\r\n // Dynamic import keeps the Preact widget code out of the SSR bundle\r\n // and avoids `window`/`document` references at import time.\r\n (async () => {\r\n const mod = await import('./index');\r\n if (destroyed) return;\r\n\r\n mod.init({\r\n containerId,\r\n projectId,\r\n backendBaseUrl,\r\n });\r\n\r\n cleanup = () => mod.destroy();\r\n })();\r\n\r\n return () => {\r\n destroyed = true;\r\n cleanup?.();\r\n };\r\n }, [projectId, backendBaseUrl]);\r\n\r\n // Plain createElement – no JSX – so this file stays free of the\r\n // Preact JSX transform and keeps real React imports.\r\n return createElement('div', { ref: containerRef });\r\n}\r\n\r\nexport default Bulut;\r\n"],"names":["Bulut","projectId","backendBaseUrl","containerRef","useRef","containerIdRef","Math","random","toString","slice","useEffect","el","current","containerId","id","cleanup","destroyed","mod","Promise","resolve","then","require","init","destroy","createElement","ref"],"mappings":"qIA0BO,SAASA,GAAMC,UACpBA,EAAAC,eACAA,IAEA,MAAMC,EAAeC,EAAAA,OAAuB,MACtCC,EAAiBD,EAAAA,OACrB,SAASE,KAAKC,SAASC,SAAS,IAAIC,MAAM,EAAG,MAoC/C,OAjCAC,EAAAA,UAAU,KACR,MAAMC,EAAKR,EAAaS,QACxB,IAAKD,EAAI,OAET,MAAME,EAAcR,EAAeO,QACnCD,EAAGG,GAAKD,EAER,IACIE,EADAC,GAAY,EAkBhB,MAbA,WACE,MAAMC,QAAYC,QAAAC,UAAAC,KAAA,IAAAC,QAAO,gBACrBL,IAEJC,EAAIK,KAAK,CACPT,cACAZ,YACAC,mBAGFa,EAAU,IAAME,EAAIM,UACtB,EAXA,GAaO,KACLP,GAAY,EACZ,MAAAD,GAAAA,MAED,CAACd,EAAWC,IAIRsB,EAAAA,cAAc,MAAO,CAAEC,IAAKtB,GACrC"}
package/dist/index.js CHANGED
@@ -2,11 +2,7 @@
2
2
  import { useRef, useEffect, createElement } from "react";
3
3
  function Bulut({
4
4
  projectId,
5
- backendBaseUrl,
6
- model,
7
- voice,
8
- baseColor,
9
- agentName
5
+ backendBaseUrl
10
6
  }) {
11
7
  const containerRef = useRef(null);
12
8
  const containerIdRef = useRef(
@@ -25,11 +21,7 @@ function Bulut({
25
21
  mod.init({
26
22
  containerId,
27
23
  projectId,
28
- backendBaseUrl,
29
- model,
30
- voice,
31
- baseColor,
32
- agentName
24
+ backendBaseUrl
33
25
  });
34
26
  cleanup = () => mod.destroy();
35
27
  })();
@@ -37,7 +29,7 @@ function Bulut({
37
29
  destroyed = true;
38
30
  cleanup == null ? void 0 : cleanup();
39
31
  };
40
- }, [projectId, backendBaseUrl, model, voice, baseColor, agentName]);
32
+ }, [projectId, backendBaseUrl]);
41
33
  return createElement("div", { ref: containerRef });
42
34
  }
43
35
  export {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/react.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createElement, useEffect, useRef } from 'react';\r\n\r\nexport type BulutVoice = 'zeynep' | 'ali';\r\n\r\nexport interface BulutProps {\r\n /** The project ID for your Bulut instance (required). */\r\n projectId: string;\r\n /** Backend API URL. Defaults to `\"http://localhost:8000\"`. */\r\n backendBaseUrl?: string;\r\n /** LLM model identifier. */\r\n model?: string;\r\n /** Voice for TTS output. */\r\n voice?: BulutVoice;\r\n /** Primary theme colour as hex, e.g. `\"#6C03C1\"`. */\r\n baseColor?: string;\r\n /** Agent display name (max 15 chars). */\r\n agentName?: string;\r\n}\r\n\r\n/**\r\n * `<Bulut>` – drop-in React / Next.js chatbot widget.\r\n *\r\n * Renders the Bulut floating chat widget inside a Shadow DOM container\r\n * so its styles never leak into your application.\r\n *\r\n * @example\r\n * ```tsx\r\n * import { Bulut } from 'bulut';\r\n *\r\n * export default function Page() {\r\n * return <Bulut projectId=\"proj_abc123\" />;\r\n * }\r\n * ```\r\n */\r\nexport function Bulut({\r\n projectId,\r\n backendBaseUrl,\r\n model,\r\n voice,\r\n baseColor,\r\n agentName,\r\n}: BulutProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const containerIdRef = useRef(\r\n `bulut-${Math.random().toString(36).slice(2, 9)}`,\r\n );\r\n\r\n useEffect(() => {\r\n const el = containerRef.current;\r\n if (!el) return;\r\n\r\n const containerId = containerIdRef.current;\r\n el.id = containerId;\r\n\r\n let destroyed = false;\r\n let cleanup: (() => void) | undefined;\r\n\r\n // Dynamic import keeps the Preact widget code out of the SSR bundle\r\n // and avoids `window`/`document` references at import time.\r\n (async () => {\r\n const mod = await import('./index');\r\n if (destroyed) return;\r\n\r\n mod.init({\r\n containerId,\r\n projectId,\r\n backendBaseUrl,\r\n model,\r\n voice,\r\n baseColor,\r\n agentName,\r\n });\r\n\r\n cleanup = () => mod.destroy();\r\n })();\r\n\r\n return () => {\r\n destroyed = true;\r\n cleanup?.();\r\n };\r\n }, [projectId, backendBaseUrl, model, voice, baseColor, agentName]);\r\n\r\n // Plain createElement – no JSX – so this file stays free of the\r\n // Preact JSX transform and keeps real React imports.\r\n return createElement('div', { ref: containerRef });\r\n}\r\n\r\nexport default Bulut;\r\n"],"names":[],"mappings":";AAoCO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAe;AACb,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,iBAAiB;AAAA,IACrB,SAAS,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EAAA;AAGjD,YAAU,MAAM;AACd,UAAM,KAAK,aAAa;AACxB,QAAI,CAAC,GAAI;AAET,UAAM,cAAc,eAAe;AACnC,OAAG,KAAK;AAER,QAAI,YAAY;AAChB,QAAI;AAIJ,KAAC,YAAY;AACX,YAAM,MAAM,MAAM,OAAO,YAAS;AAClC,UAAI,UAAW;AAEf,UAAI,KAAK;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAED,gBAAU,MAAM,IAAI,QAAA;AAAA,IACtB,GAAA;AAEA,WAAO,MAAM;AACX,kBAAY;AACZ;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,gBAAgB,OAAO,OAAO,WAAW,SAAS,CAAC;AAIlE,SAAO,cAAc,OAAO,EAAE,KAAK,cAAc;AACnD;"}
1
+ {"version":3,"file":"index.js","sources":["../src/react.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { createElement, useEffect, useRef } from 'react';\r\n\r\nexport interface BulutProps {\r\n /** The project ID for your Bulut instance (required). */\r\n projectId: string;\r\n /** Backend API URL. Defaults to `\"https://api.bulut.lu\"`. */\r\n backendBaseUrl?: string;\r\n}\r\n\r\n/**\r\n * `<Bulut>` – drop-in React / Next.js chatbot widget.\r\n *\r\n * Renders the Bulut floating chat widget inside a Shadow DOM container\r\n * so its styles never leak into your application.\r\n *\r\n * @example\r\n * ```tsx\r\n * import { Bulut } from 'bulut';\r\n *\r\n * export default function Page() {\r\n * return <Bulut projectId=\"proj_abc123\" />;\r\n * }\r\n * ```\r\n */\r\nexport function Bulut({\r\n projectId,\r\n backendBaseUrl,\r\n}: BulutProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const containerIdRef = useRef(\r\n `bulut-${Math.random().toString(36).slice(2, 9)}`,\r\n );\r\n\r\n useEffect(() => {\r\n const el = containerRef.current;\r\n if (!el) return;\r\n\r\n const containerId = containerIdRef.current;\r\n el.id = containerId;\r\n\r\n let destroyed = false;\r\n let cleanup: (() => void) | undefined;\r\n\r\n // Dynamic import keeps the Preact widget code out of the SSR bundle\r\n // and avoids `window`/`document` references at import time.\r\n (async () => {\r\n const mod = await import('./index');\r\n if (destroyed) return;\r\n\r\n mod.init({\r\n containerId,\r\n projectId,\r\n backendBaseUrl,\r\n });\r\n\r\n cleanup = () => mod.destroy();\r\n })();\r\n\r\n return () => {\r\n destroyed = true;\r\n cleanup?.();\r\n };\r\n }, [projectId, backendBaseUrl]);\r\n\r\n // Plain createElement – no JSX – so this file stays free of the\r\n // Preact JSX transform and keeps real React imports.\r\n return createElement('div', { ref: containerRef });\r\n}\r\n\r\nexport default Bulut;\r\n"],"names":[],"mappings":";AA0BO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AACF,GAAe;AACb,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,iBAAiB;AAAA,IACrB,SAAS,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EAAA;AAGjD,YAAU,MAAM;AACd,UAAM,KAAK,aAAa;AACxB,QAAI,CAAC,GAAI;AAET,UAAM,cAAc,eAAe;AACnC,OAAG,KAAK;AAER,QAAI,YAAY;AAChB,QAAI;AAIJ,KAAC,YAAY;AACX,YAAM,MAAM,MAAM,OAAO,YAAS;AAClC,UAAI,UAAW;AAEf,UAAI,KAAK;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAED,gBAAU,MAAM,IAAI,QAAA;AAAA,IACtB,GAAA;AAEA,WAAO,MAAM;AACX,kBAAY;AACZ;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,cAAc,CAAC;AAI9B,SAAO,cAAc,OAAO,EAAE,KAAK,cAAc;AACnD;"}
package/index.d.ts CHANGED
@@ -1,14 +1,8 @@
1
- export type BulutVoice = 'zeynep' | 'ali';
2
-
3
1
  export interface BulutProps {
4
2
  /** The project ID for your Bulut instance (required). */
5
3
  projectId: string;
6
- /** LLM model identifier. */
7
- model?: string;
8
- /** Voice for TTS output. */
9
- voice?: BulutVoice;
10
- /** Primary theme colour as hex, e.g. `"#6C03C1"`. */
11
- baseColor?: string;
4
+ /** Backend API URL. Defaults to `"https://api.bulut.lu"`. */
5
+ backendBaseUrl?: string;
12
6
  }
13
7
 
14
8
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auticlabs/bulut",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Bulut – a lightweight AI chatbot widget for React, Next.js and Vite applications",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",