@super_studio/ecforce-ai-agent-react 0.5.2 → 0.5.3

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
- {"version":3,"file":"chatbot-sheet.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAUvE,KAAK,iBAAiB,GAAG,iBAAiB,GAAG;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAClC,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAoBvE"}
1
+ {"version":3,"file":"chatbot-sheet.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAWvE,KAAK,iBAAiB,GAAG,iBAAiB,GAAG;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAClC,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CA0BvE"}
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ type LottieAiIconProps = {
3
+ src: string;
4
+ width?: number;
5
+ height?: number;
6
+ loop?: boolean;
7
+ autoplay?: boolean;
8
+ hover?: boolean;
9
+ fallback?: React.ReactNode;
10
+ };
11
+ export declare function LottieAiIcon({ src, width, height, loop, autoplay, hover, fallback, }: LottieAiIconProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=lottie-ai-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lottie-ai-icon.d.ts","sourceRoot":"","sources":["../../src/components/lottie-ai-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,GAAG,EACH,KAAU,EACV,MAAW,EACX,IAAW,EACX,QAAgB,EAChB,KAAa,EACb,QAAQ,GACT,EAAE,iBAAiB,2CAoDnB"}
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ var __objRest = (source, exclude) => {
32
32
  };
33
33
 
34
34
  // src/components/provider/chatbot-provider.tsx
35
- var _react = require('react'); var React5 = _interopRequireWildcard(_react);
35
+ var _react = require('react'); var React5 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react);
36
36
 
37
37
  // src/components/provider/use-chatbot-frame-handler.tsx
38
38
 
@@ -310,6 +310,62 @@ function useSession({ getSession }) {
310
310
  // src/components/chatbot-sheet.tsx
311
311
 
312
312
 
313
+ // src/components/lottie-ai-icon.tsx
314
+
315
+
316
+ function LottieAiIcon({
317
+ src,
318
+ width = 18,
319
+ height = 18,
320
+ loop = true,
321
+ autoplay = false,
322
+ hover = false,
323
+ fallback
324
+ }) {
325
+ const containerRef = React5.useRef(null);
326
+ const [ready, setReady] = React5.useState(false);
327
+ React5.useEffect(() => {
328
+ if (typeof window === "undefined") return;
329
+ const existing = document.querySelector("script[data-dotlottie-player]");
330
+ if (!existing) {
331
+ const scriptEl = document.createElement("script");
332
+ scriptEl.type = "module";
333
+ scriptEl.async = true;
334
+ scriptEl.src = "https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.js";
335
+ scriptEl.setAttribute("data-dotlottie-player", "true");
336
+ scriptEl.onload = () => setReady(true);
337
+ scriptEl.onerror = () => setReady(false);
338
+ document.head.appendChild(scriptEl);
339
+ } else {
340
+ setReady(true);
341
+ }
342
+ }, []);
343
+ React5.useEffect(() => {
344
+ if (!ready || !containerRef.current) return;
345
+ const container = containerRef.current;
346
+ container.innerHTML = "";
347
+ const player = document.createElement("dotlottie-player");
348
+ player.setAttribute("src", src);
349
+ player.setAttribute("style", `width:${width}px;height:${height}px`);
350
+ if (loop) player.setAttribute("loop", "");
351
+ if (autoplay) player.setAttribute("autoplay", "");
352
+ if (hover) player.setAttribute("hover", "");
353
+ container.appendChild(player);
354
+ return () => {
355
+ container.innerHTML = "";
356
+ };
357
+ }, [ready, src, width, height, loop, autoplay, hover]);
358
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: containerRef, "aria-hidden": "true", children: !ready && (fallback != null ? fallback : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
359
+ "svg",
360
+ {
361
+ width,
362
+ height,
363
+ viewBox: "0 0 24 24",
364
+ fill: "currentColor"
365
+ }
366
+ )) });
367
+ }
368
+
313
369
  // src/components/sheet.tsx
314
370
  var _reactdialog = require('@radix-ui/react-dialog'); var SheetPrimitive = _interopRequireWildcard(_reactdialog);
315
371
 
@@ -327,7 +383,7 @@ function Sheet(_a) {
327
383
  }, props)
328
384
  );
329
385
  }
330
- var SheetTrigger = React5.forwardRef((_a, ref) => {
386
+ var SheetTrigger = React6.forwardRef((_a, ref) => {
331
387
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
332
388
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
333
389
  SheetPrimitive.Trigger,
@@ -339,7 +395,7 @@ var SheetTrigger = React5.forwardRef((_a, ref) => {
339
395
  );
340
396
  });
341
397
  SheetTrigger.displayName = SheetPrimitive.Trigger.displayName;
342
- var SheetClose = React5.forwardRef((_a, ref) => {
398
+ var SheetClose = React6.forwardRef((_a, ref) => {
343
399
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
344
400
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
345
401
  SheetPrimitive.Close,
@@ -355,7 +411,7 @@ function SheetPortal(_a) {
355
411
  var props = __objRest(_a, []);
356
412
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
357
413
  }
358
- var SheetContent = React5.forwardRef((_a, ref) => {
414
+ var SheetContent = React6.forwardRef((_a, ref) => {
359
415
  var _b = _a, { className, children, style } = _b, props = __objRest(_b, ["className", "children", "style"]);
360
416
  const { isExpanded, open, hasOpened } = useChatbot();
361
417
  const width = isExpanded ? "848px" : "400px";
@@ -379,7 +435,7 @@ var SheetContent = React5.forwardRef((_a, ref) => {
379
435
  ) });
380
436
  });
381
437
  SheetContent.displayName = SheetPrimitive.Content.displayName;
382
- var SheetHeader = React5.forwardRef((_a, ref) => {
438
+ var SheetHeader = React6.forwardRef((_a, ref) => {
383
439
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
384
440
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
385
441
  "div",
@@ -391,7 +447,7 @@ var SheetHeader = React5.forwardRef((_a, ref) => {
391
447
  );
392
448
  });
393
449
  SheetHeader.displayName = "SheetHeader";
394
- var SheetFooter = React5.forwardRef((_a, ref) => {
450
+ var SheetFooter = React6.forwardRef((_a, ref) => {
395
451
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
396
452
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
397
453
  "div",
@@ -403,7 +459,7 @@ var SheetFooter = React5.forwardRef((_a, ref) => {
403
459
  );
404
460
  });
405
461
  SheetFooter.displayName = "SheetFooter";
406
- var SheetTitle = React5.forwardRef((_a, ref) => {
462
+ var SheetTitle = React6.forwardRef((_a, ref) => {
407
463
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
408
464
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
409
465
  SheetPrimitive.Title,
@@ -415,7 +471,7 @@ var SheetTitle = React5.forwardRef((_a, ref) => {
415
471
  );
416
472
  });
417
473
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
418
- var SheetDescription = React5.forwardRef((_a, ref) => {
474
+ var SheetDescription = React6.forwardRef((_a, ref) => {
419
475
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
420
476
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
421
477
  SheetPrimitive.Description,
@@ -502,7 +558,16 @@ function ChatbotSheet(_a) {
502
558
  side: "top",
503
559
  align: "end",
504
560
  content: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
505
- trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EcforceAiIcon, {}) })
561
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
562
+ LottieAiIcon,
563
+ {
564
+ src: `${PROD_CHATBOT_URL}/animations/ai-icon.v1.lottie`,
565
+ width: 20,
566
+ height: 20,
567
+ autoplay: true,
568
+ loop: true
569
+ }
570
+ ) })
506
571
  }
507
572
  ),
508
573
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetContent, { style: sheetStyle, children: [
@@ -512,26 +577,6 @@ function ChatbotSheet(_a) {
512
577
  ] })
513
578
  ] });
514
579
  }
515
- function EcforceAiIcon() {
516
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
517
- "svg",
518
- {
519
- width: "18",
520
- height: "18",
521
- viewBox: "0 0 24 24",
522
- xmlns: "http://www.w3.org/2000/svg",
523
- fill: "currentColor",
524
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
525
- "path",
526
- {
527
- fillRule: "evenodd",
528
- clipRule: "evenodd",
529
- d: "M9.2 13.704s3.7-.812 4.325-3.74c.624-2.93.76-3.364 1.112-3.364.352 0 .42.309.5.618.08.309.51 2.276.613 2.745.102.47.783 2.93 3.712 3.616 2.93.686 3.338.697 3.338 1.12 0 .459-2.361.859-3.338 1.122-.976.263-3.042 1.007-3.587 3.49-.534 2.482-.681 3.489-1.238 3.489-.556 0-.545-.584-.613-.87-.068-.286-.34-1.819-.5-2.494-.147-.675-1.044-2.837-2.962-3.363-1.93-.527-3.962-.847-3.962-1.373s2.134-.824 2.6-.995ZM2.462 4.613s1.785-.39 2.08-1.798c.296-1.409.365-1.615.535-1.615.17 0 .205.149.239.298s.25 1.088.296 1.317c.045.229.375 1.409 1.785 1.74 1.41.333 1.603.333 1.603.54 0 .217-1.137.412-1.603.538-.466.126-1.467.48-1.729 1.683C5.407 8.507 5.338 9 5.078 9c-.262 0-.262-.286-.296-.424-.035-.137-.16-.882-.24-1.202-.079-.321-.5-1.363-1.432-1.615-.932-.252-1.91-.413-1.91-.665 0-.252 1.023-.4 1.25-.48h.012Z"
530
- }
531
- )
532
- }
533
- );
534
- }
535
580
 
536
581
 
537
582
 
package/dist/index.mjs CHANGED
@@ -310,14 +310,70 @@ function useSession({ getSession }) {
310
310
  // src/components/chatbot-sheet.tsx
311
311
  import "react";
312
312
 
313
- // src/components/sheet.tsx
314
- import * as SheetPrimitive from "@radix-ui/react-dialog";
313
+ // src/components/lottie-ai-icon.tsx
315
314
  import * as React5 from "react";
316
315
  import { jsx as jsx3 } from "react/jsx-runtime";
316
+ function LottieAiIcon({
317
+ src,
318
+ width = 18,
319
+ height = 18,
320
+ loop = true,
321
+ autoplay = false,
322
+ hover = false,
323
+ fallback
324
+ }) {
325
+ const containerRef = React5.useRef(null);
326
+ const [ready, setReady] = React5.useState(false);
327
+ React5.useEffect(() => {
328
+ if (typeof window === "undefined") return;
329
+ const existing = document.querySelector("script[data-dotlottie-player]");
330
+ if (!existing) {
331
+ const scriptEl = document.createElement("script");
332
+ scriptEl.type = "module";
333
+ scriptEl.async = true;
334
+ scriptEl.src = "https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.js";
335
+ scriptEl.setAttribute("data-dotlottie-player", "true");
336
+ scriptEl.onload = () => setReady(true);
337
+ scriptEl.onerror = () => setReady(false);
338
+ document.head.appendChild(scriptEl);
339
+ } else {
340
+ setReady(true);
341
+ }
342
+ }, []);
343
+ React5.useEffect(() => {
344
+ if (!ready || !containerRef.current) return;
345
+ const container = containerRef.current;
346
+ container.innerHTML = "";
347
+ const player = document.createElement("dotlottie-player");
348
+ player.setAttribute("src", src);
349
+ player.setAttribute("style", `width:${width}px;height:${height}px`);
350
+ if (loop) player.setAttribute("loop", "");
351
+ if (autoplay) player.setAttribute("autoplay", "");
352
+ if (hover) player.setAttribute("hover", "");
353
+ container.appendChild(player);
354
+ return () => {
355
+ container.innerHTML = "";
356
+ };
357
+ }, [ready, src, width, height, loop, autoplay, hover]);
358
+ return /* @__PURE__ */ jsx3("div", { ref: containerRef, "aria-hidden": "true", children: !ready && (fallback != null ? fallback : /* @__PURE__ */ jsx3(
359
+ "svg",
360
+ {
361
+ width,
362
+ height,
363
+ viewBox: "0 0 24 24",
364
+ fill: "currentColor"
365
+ }
366
+ )) });
367
+ }
368
+
369
+ // src/components/sheet.tsx
370
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
371
+ import * as React6 from "react";
372
+ import { jsx as jsx4 } from "react/jsx-runtime";
317
373
  function Sheet(_a) {
318
374
  var props = __objRest(_a, []);
319
375
  const { open, setOpen } = useChatbot();
320
- return /* @__PURE__ */ jsx3(
376
+ return /* @__PURE__ */ jsx4(
321
377
  SheetPrimitive.Root,
322
378
  __spreadValues({
323
379
  "data-slot": "sheet",
@@ -327,9 +383,9 @@ function Sheet(_a) {
327
383
  }, props)
328
384
  );
329
385
  }
330
- var SheetTrigger = React5.forwardRef((_a, ref) => {
386
+ var SheetTrigger = React6.forwardRef((_a, ref) => {
331
387
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
332
- return /* @__PURE__ */ jsx3(
388
+ return /* @__PURE__ */ jsx4(
333
389
  SheetPrimitive.Trigger,
334
390
  __spreadValues({
335
391
  ref,
@@ -339,9 +395,9 @@ var SheetTrigger = React5.forwardRef((_a, ref) => {
339
395
  );
340
396
  });
341
397
  SheetTrigger.displayName = SheetPrimitive.Trigger.displayName;
342
- var SheetClose = React5.forwardRef((_a, ref) => {
398
+ var SheetClose = React6.forwardRef((_a, ref) => {
343
399
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
344
- return /* @__PURE__ */ jsx3(
400
+ return /* @__PURE__ */ jsx4(
345
401
  SheetPrimitive.Close,
346
402
  __spreadValues({
347
403
  ref,
@@ -353,9 +409,9 @@ var SheetClose = React5.forwardRef((_a, ref) => {
353
409
  SheetClose.displayName = SheetPrimitive.Close.displayName;
354
410
  function SheetPortal(_a) {
355
411
  var props = __objRest(_a, []);
356
- return /* @__PURE__ */ jsx3(SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
412
+ return /* @__PURE__ */ jsx4(SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
357
413
  }
358
- var SheetContent = React5.forwardRef((_a, ref) => {
414
+ var SheetContent = React6.forwardRef((_a, ref) => {
359
415
  var _b = _a, { className, children, style } = _b, props = __objRest(_b, ["className", "children", "style"]);
360
416
  const { isExpanded, open, hasOpened } = useChatbot();
361
417
  const width = isExpanded ? "848px" : "400px";
@@ -364,7 +420,7 @@ var SheetContent = React5.forwardRef((_a, ref) => {
364
420
  "--sheet-width": width,
365
421
  transform: `translateX(${translateX})`
366
422
  }, style);
367
- return /* @__PURE__ */ jsx3(SheetPortal, { forceMount: hasOpened || void 0, children: /* @__PURE__ */ jsx3(
423
+ return /* @__PURE__ */ jsx4(SheetPortal, { forceMount: hasOpened || void 0, children: /* @__PURE__ */ jsx4(
368
424
  SheetPrimitive.Content,
369
425
  __spreadProps(__spreadValues({
370
426
  ref,
@@ -379,9 +435,9 @@ var SheetContent = React5.forwardRef((_a, ref) => {
379
435
  ) });
380
436
  });
381
437
  SheetContent.displayName = SheetPrimitive.Content.displayName;
382
- var SheetHeader = React5.forwardRef((_a, ref) => {
438
+ var SheetHeader = React6.forwardRef((_a, ref) => {
383
439
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
384
- return /* @__PURE__ */ jsx3(
440
+ return /* @__PURE__ */ jsx4(
385
441
  "div",
386
442
  __spreadValues({
387
443
  ref,
@@ -391,9 +447,9 @@ var SheetHeader = React5.forwardRef((_a, ref) => {
391
447
  );
392
448
  });
393
449
  SheetHeader.displayName = "SheetHeader";
394
- var SheetFooter = React5.forwardRef((_a, ref) => {
450
+ var SheetFooter = React6.forwardRef((_a, ref) => {
395
451
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
396
- return /* @__PURE__ */ jsx3(
452
+ return /* @__PURE__ */ jsx4(
397
453
  "div",
398
454
  __spreadValues({
399
455
  ref,
@@ -403,9 +459,9 @@ var SheetFooter = React5.forwardRef((_a, ref) => {
403
459
  );
404
460
  });
405
461
  SheetFooter.displayName = "SheetFooter";
406
- var SheetTitle = React5.forwardRef((_a, ref) => {
462
+ var SheetTitle = React6.forwardRef((_a, ref) => {
407
463
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
408
- return /* @__PURE__ */ jsx3(
464
+ return /* @__PURE__ */ jsx4(
409
465
  SheetPrimitive.Title,
410
466
  __spreadValues({
411
467
  ref,
@@ -415,9 +471,9 @@ var SheetTitle = React5.forwardRef((_a, ref) => {
415
471
  );
416
472
  });
417
473
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
418
- var SheetDescription = React5.forwardRef((_a, ref) => {
474
+ var SheetDescription = React6.forwardRef((_a, ref) => {
419
475
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
420
- return /* @__PURE__ */ jsx3(
476
+ return /* @__PURE__ */ jsx4(
421
477
  SheetPrimitive.Description,
422
478
  __spreadValues({
423
479
  ref,
@@ -437,7 +493,7 @@ import {
437
493
  Root as Root2,
438
494
  Trigger as Trigger2
439
495
  } from "@radix-ui/react-tooltip";
440
- import { jsx as jsx4, jsxs } from "react/jsx-runtime";
496
+ import { jsx as jsx5, jsxs } from "react/jsx-runtime";
441
497
  function Tooltip({
442
498
  content,
443
499
  trigger,
@@ -453,13 +509,13 @@ function Tooltip({
453
509
  arrowClassName,
454
510
  keepTooltipOpen
455
511
  }) {
456
- return /* @__PURE__ */ jsx4(
512
+ return /* @__PURE__ */ jsx5(
457
513
  Provider,
458
514
  {
459
515
  delayDuration: delayDuration != null ? delayDuration : 200,
460
516
  skipDelayDuration: skipDelayDuration != null ? skipDelayDuration : 200,
461
517
  children: /* @__PURE__ */ jsxs(Root2, { open: disabled ? false : open, children: [
462
- /* @__PURE__ */ jsx4(
518
+ /* @__PURE__ */ jsx5(
463
519
  Trigger2,
464
520
  {
465
521
  onClick: keepTooltipOpen ? (event) => {
@@ -469,7 +525,7 @@ function Tooltip({
469
525
  children: trigger
470
526
  }
471
527
  ),
472
- /* @__PURE__ */ jsx4(Portal2, { children: /* @__PURE__ */ jsxs(
528
+ /* @__PURE__ */ jsx5(Portal2, { children: /* @__PURE__ */ jsxs(
473
529
  Content2,
474
530
  {
475
531
  className: `tooltip-content ${className || ""}`,
@@ -481,7 +537,7 @@ function Tooltip({
481
537
  event.preventDefault();
482
538
  } : void 0,
483
539
  children: [
484
- /* @__PURE__ */ jsx4(Arrow, { className: arrowClassName }),
540
+ /* @__PURE__ */ jsx5(Arrow, { className: arrowClassName }),
485
541
  content
486
542
  ]
487
543
  }
@@ -492,46 +548,35 @@ function Tooltip({
492
548
  }
493
549
 
494
550
  // src/components/chatbot-sheet.tsx
495
- import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
551
+ import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
496
552
  function ChatbotSheet(_a) {
497
553
  var _b = _a, { sheetStyle } = _b, props = __objRest(_b, ["sheetStyle"]);
498
554
  return /* @__PURE__ */ jsxs2(Sheet, { children: [
499
- /* @__PURE__ */ jsx5(
555
+ /* @__PURE__ */ jsx6(
500
556
  Tooltip,
501
557
  {
502
558
  side: "top",
503
559
  align: "end",
504
560
  content: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
505
- trigger: /* @__PURE__ */ jsx5(SheetTrigger, { children: /* @__PURE__ */ jsx5(EcforceAiIcon, {}) })
561
+ trigger: /* @__PURE__ */ jsx6(SheetTrigger, { children: /* @__PURE__ */ jsx6(
562
+ LottieAiIcon,
563
+ {
564
+ src: `${PROD_CHATBOT_URL}/animations/ai-icon.v1.lottie`,
565
+ width: 20,
566
+ height: 20,
567
+ autoplay: true,
568
+ loop: true
569
+ }
570
+ ) })
506
571
  }
507
572
  ),
508
573
  /* @__PURE__ */ jsxs2(SheetContent, { style: sheetStyle, children: [
509
- /* @__PURE__ */ jsx5(SheetTitle, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
510
- /* @__PURE__ */ jsx5(SheetDescription, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
511
- /* @__PURE__ */ jsx5(ChatbotFrame, __spreadValues({}, props))
574
+ /* @__PURE__ */ jsx6(SheetTitle, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
575
+ /* @__PURE__ */ jsx6(SheetDescription, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
576
+ /* @__PURE__ */ jsx6(ChatbotFrame, __spreadValues({}, props))
512
577
  ] })
513
578
  ] });
514
579
  }
515
- function EcforceAiIcon() {
516
- return /* @__PURE__ */ jsx5(
517
- "svg",
518
- {
519
- width: "18",
520
- height: "18",
521
- viewBox: "0 0 24 24",
522
- xmlns: "http://www.w3.org/2000/svg",
523
- fill: "currentColor",
524
- children: /* @__PURE__ */ jsx5(
525
- "path",
526
- {
527
- fillRule: "evenodd",
528
- clipRule: "evenodd",
529
- d: "M9.2 13.704s3.7-.812 4.325-3.74c.624-2.93.76-3.364 1.112-3.364.352 0 .42.309.5.618.08.309.51 2.276.613 2.745.102.47.783 2.93 3.712 3.616 2.93.686 3.338.697 3.338 1.12 0 .459-2.361.859-3.338 1.122-.976.263-3.042 1.007-3.587 3.49-.534 2.482-.681 3.489-1.238 3.489-.556 0-.545-.584-.613-.87-.068-.286-.34-1.819-.5-2.494-.147-.675-1.044-2.837-2.962-3.363-1.93-.527-3.962-.847-3.962-1.373s2.134-.824 2.6-.995ZM2.462 4.613s1.785-.39 2.08-1.798c.296-1.409.365-1.615.535-1.615.17 0 .205.149.239.298s.25 1.088.296 1.317c.045.229.375 1.409 1.785 1.74 1.41.333 1.603.333 1.603.54 0 .217-1.137.412-1.603.538-.466.126-1.467.48-1.729 1.683C5.407 8.507 5.338 9 5.078 9c-.262 0-.262-.286-.296-.424-.035-.137-.16-.882-.24-1.202-.079-.321-.5-1.363-1.432-1.615-.932-.252-1.91-.413-1.91-.665 0-.252 1.023-.4 1.25-.48h.012Z"
530
- }
531
- )
532
- }
533
- );
534
- }
535
580
  export {
536
581
  ChatbotFrame,
537
582
  ChatbotProvider,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super_studio/ecforce-ai-agent-react",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -1,5 +1,7 @@
1
1
  import React from "react";
2
+ import { PROD_CHATBOT_URL } from "@/lib/constants";
2
3
  import { ChatbotFrame, type ChatbotFrameProps } from "./chatbot-frame";
4
+ import { LottieAiIcon } from "./lottie-ai-icon";
3
5
  import {
4
6
  Sheet,
5
7
  SheetContent,
@@ -22,7 +24,13 @@ export function ChatbotSheet({ sheetStyle, ...props }: ChatbotSheetProps) {
22
24
  content="AIに質問してみましょう"
23
25
  trigger={
24
26
  <SheetTrigger>
25
- <EcforceAiIcon />
27
+ <LottieAiIcon
28
+ src={`${PROD_CHATBOT_URL}/animations/ai-icon.v1.lottie`}
29
+ width={20}
30
+ height={20}
31
+ autoplay
32
+ loop
33
+ />
26
34
  </SheetTrigger>
27
35
  }
28
36
  />
@@ -34,21 +42,3 @@ export function ChatbotSheet({ sheetStyle, ...props }: ChatbotSheetProps) {
34
42
  </Sheet>
35
43
  );
36
44
  }
37
-
38
- function EcforceAiIcon() {
39
- return (
40
- <svg
41
- width="18"
42
- height="18"
43
- viewBox="0 0 24 24"
44
- xmlns="http://www.w3.org/2000/svg"
45
- fill="currentColor"
46
- >
47
- <path
48
- fillRule="evenodd"
49
- clipRule="evenodd"
50
- d="M9.2 13.704s3.7-.812 4.325-3.74c.624-2.93.76-3.364 1.112-3.364.352 0 .42.309.5.618.08.309.51 2.276.613 2.745.102.47.783 2.93 3.712 3.616 2.93.686 3.338.697 3.338 1.12 0 .459-2.361.859-3.338 1.122-.976.263-3.042 1.007-3.587 3.49-.534 2.482-.681 3.489-1.238 3.489-.556 0-.545-.584-.613-.87-.068-.286-.34-1.819-.5-2.494-.147-.675-1.044-2.837-2.962-3.363-1.93-.527-3.962-.847-3.962-1.373s2.134-.824 2.6-.995ZM2.462 4.613s1.785-.39 2.08-1.798c.296-1.409.365-1.615.535-1.615.17 0 .205.149.239.298s.25 1.088.296 1.317c.045.229.375 1.409 1.785 1.74 1.41.333 1.603.333 1.603.54 0 .217-1.137.412-1.603.538-.466.126-1.467.48-1.729 1.683C5.407 8.507 5.338 9 5.078 9c-.262 0-.262-.286-.296-.424-.035-.137-.16-.882-.24-1.202-.079-.321-.5-1.363-1.432-1.615-.932-.252-1.91-.413-1.91-.665 0-.252 1.023-.4 1.25-.48h.012Z"
51
- />
52
- </svg>
53
- );
54
- }
@@ -0,0 +1,73 @@
1
+ import * as React from "react";
2
+
3
+ type LottieAiIconProps = {
4
+ src: string;
5
+ width?: number;
6
+ height?: number;
7
+ loop?: boolean;
8
+ autoplay?: boolean;
9
+ hover?: boolean;
10
+ fallback?: React.ReactNode;
11
+ };
12
+
13
+ export function LottieAiIcon({
14
+ src,
15
+ width = 18,
16
+ height = 18,
17
+ loop = true,
18
+ autoplay = false,
19
+ hover = false,
20
+ fallback,
21
+ }: LottieAiIconProps) {
22
+ const containerRef = React.useRef<HTMLDivElement>(null);
23
+ const [ready, setReady] = React.useState(false);
24
+
25
+ React.useEffect(() => {
26
+ if (typeof window === "undefined") return;
27
+
28
+ const existing = document.querySelector("script[data-dotlottie-player]");
29
+ if (!existing) {
30
+ const scriptEl = document.createElement("script");
31
+ scriptEl.type = "module";
32
+ scriptEl.async = true;
33
+ scriptEl.src =
34
+ "https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.js";
35
+ scriptEl.setAttribute("data-dotlottie-player", "true");
36
+ scriptEl.onload = () => setReady(true);
37
+ scriptEl.onerror = () => setReady(false);
38
+ document.head.appendChild(scriptEl);
39
+ } else {
40
+ setReady(true);
41
+ }
42
+ }, []);
43
+
44
+ React.useEffect(() => {
45
+ if (!ready || !containerRef.current) return;
46
+ const container = containerRef.current;
47
+ container.innerHTML = "";
48
+ const player = document.createElement("dotlottie-player");
49
+ player.setAttribute("src", src);
50
+ player.setAttribute("style", `width:${width}px;height:${height}px`);
51
+ if (loop) player.setAttribute("loop", "");
52
+ if (autoplay) player.setAttribute("autoplay", "");
53
+ if (hover) player.setAttribute("hover", "");
54
+ container.appendChild(player);
55
+ return () => {
56
+ container.innerHTML = "";
57
+ };
58
+ }, [ready, src, width, height, loop, autoplay, hover]);
59
+
60
+ return (
61
+ <div ref={containerRef} aria-hidden="true">
62
+ {!ready &&
63
+ (fallback ?? (
64
+ <svg
65
+ width={width}
66
+ height={height}
67
+ viewBox="0 0 24 24"
68
+ fill="currentColor"
69
+ />
70
+ ))}
71
+ </div>
72
+ );
73
+ }