@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.
- package/dist/components/chatbot-sheet.d.ts.map +1 -1
- package/dist/components/lottie-ai-icon.d.ts +13 -0
- package/dist/components/lottie-ai-icon.d.ts.map +1 -0
- package/dist/index.js +74 -29
- package/dist/index.mjs +94 -49
- package/package.json +1 -1
- package/src/components/chatbot-sheet.tsx +9 -19
- package/src/components/lottie-ai-icon.tsx +73 -0
|
@@ -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;
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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/
|
|
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__ */
|
|
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 =
|
|
386
|
+
var SheetTrigger = React6.forwardRef((_a, ref) => {
|
|
331
387
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
332
|
-
return /* @__PURE__ */
|
|
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 =
|
|
398
|
+
var SheetClose = React6.forwardRef((_a, ref) => {
|
|
343
399
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
344
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
412
|
+
return /* @__PURE__ */ jsx4(SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
|
|
357
413
|
}
|
|
358
|
-
var SheetContent =
|
|
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__ */
|
|
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 =
|
|
438
|
+
var SheetHeader = React6.forwardRef((_a, ref) => {
|
|
383
439
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
384
|
-
return /* @__PURE__ */
|
|
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 =
|
|
450
|
+
var SheetFooter = React6.forwardRef((_a, ref) => {
|
|
395
451
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
396
|
-
return /* @__PURE__ */
|
|
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 =
|
|
462
|
+
var SheetTitle = React6.forwardRef((_a, ref) => {
|
|
407
463
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
408
|
-
return /* @__PURE__ */
|
|
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 =
|
|
474
|
+
var SheetDescription = React6.forwardRef((_a, ref) => {
|
|
419
475
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
420
|
-
return /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
510
|
-
/* @__PURE__ */
|
|
511
|
-
/* @__PURE__ */
|
|
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,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
|
-
<
|
|
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
|
+
}
|