@yext/chat-ui-react 0.1.1 → 0.2.2
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 +25 -0
- package/THIRD-PARTY-NOTICES +4 -4
- package/lib/bundle-no-resets.css +1 -1
- package/lib/bundle.css +1 -1
- package/lib/commonjs/components/ChatHeader.d.ts +1 -1
- package/lib/commonjs/components/ChatHeader.d.ts.map +1 -1
- package/lib/commonjs/components/ChatHeader.js +5 -4
- package/lib/commonjs/components/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/ChatInput.d.ts.map +1 -1
- package/lib/commonjs/components/ChatInput.js +4 -3
- package/lib/commonjs/components/ChatInput.js.map +1 -1
- package/lib/commonjs/components/ChatPanel.d.ts.map +1 -1
- package/lib/commonjs/components/ChatPanel.js +3 -2
- package/lib/commonjs/components/ChatPanel.js.map +1 -1
- package/lib/commonjs/components/ChatPopUp.d.ts.map +1 -1
- package/lib/commonjs/components/ChatPopUp.js +4 -3
- package/lib/commonjs/components/ChatPopUp.js.map +1 -1
- package/lib/commonjs/components/MessageBubble.d.ts.map +1 -1
- package/lib/commonjs/components/MessageBubble.js +5 -2
- package/lib/commonjs/components/MessageBubble.js.map +1 -1
- package/lib/commonjs/hooks/useDefaultHandleApiError.d.ts.map +1 -1
- package/lib/commonjs/hooks/useDefaultHandleApiError.js +6 -10
- package/lib/commonjs/hooks/useDefaultHandleApiError.js.map +1 -1
- package/lib/commonjs/utils/withStylelessCssClasses.d.ts +17 -0
- package/lib/commonjs/utils/withStylelessCssClasses.d.ts.map +1 -0
- package/lib/commonjs/utils/withStylelessCssClasses.js +28 -0
- package/lib/commonjs/utils/withStylelessCssClasses.js.map +1 -0
- package/lib/esm/components/ChatHeader.d.ts +1 -1
- package/lib/esm/components/ChatHeader.d.ts.map +1 -1
- package/lib/esm/components/ChatHeader.js +5 -4
- package/lib/esm/components/ChatHeader.js.map +1 -1
- package/lib/esm/components/ChatInput.d.ts.map +1 -1
- package/lib/esm/components/ChatInput.js +4 -3
- package/lib/esm/components/ChatInput.js.map +1 -1
- package/lib/esm/components/ChatPanel.d.ts.map +1 -1
- package/lib/esm/components/ChatPanel.js +3 -2
- package/lib/esm/components/ChatPanel.js.map +1 -1
- package/lib/esm/components/ChatPopUp.d.ts.map +1 -1
- package/lib/esm/components/ChatPopUp.js +4 -3
- package/lib/esm/components/ChatPopUp.js.map +1 -1
- package/lib/esm/components/MessageBubble.d.ts.map +1 -1
- package/lib/esm/components/MessageBubble.js +5 -2
- package/lib/esm/components/MessageBubble.js.map +1 -1
- package/lib/esm/hooks/useDefaultHandleApiError.d.ts.map +1 -1
- package/lib/esm/hooks/useDefaultHandleApiError.js +7 -11
- package/lib/esm/hooks/useDefaultHandleApiError.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/utils/withStylelessCssClasses.d.ts +17 -0
- package/lib/esm/utils/withStylelessCssClasses.d.ts.map +1 -0
- package/lib/esm/utils/withStylelessCssClasses.js +24 -0
- package/lib/esm/utils/withStylelessCssClasses.js.map +1 -0
- package/package.json +2 -2
- package/src/components/ChatHeader.tsx +11 -9
- package/src/components/ChatInput.tsx +11 -7
- package/src/components/ChatPanel.tsx +12 -7
- package/src/components/ChatPopUp.tsx +17 -13
- package/src/components/MessageBubble.tsx +20 -14
- package/src/hooks/useDefaultHandleApiError.ts +7 -15
- package/src/utils/withStylelessCssClasses.ts +31 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHeader.js","sourceRoot":"","sources":["../../../src/components/ChatHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatHeader.js","sourceRoot":"","sources":["../../../src/components/ChatHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAc3E,MAAM,iBAAiB,GACrB,uBAAuB,CAAC,QAAQ,EAAE;IAChC,SAAS,EACP,iGAAiG;IACnG,KAAK,EAAE,gCAAgC;IACvC,aAAa,EAAE,qCAAqC;IACpD,WAAW,EAAE,gCAAgC;CAC9C,CAAC,CAAC;AAgCL;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,iBAAiB,EACjB,iBAAiB,GAAG,KAAC,YAAY,KAAG,EACpC,eAAe,EACf,eAAe,GAAG,KAAC,SAAS,KAAG,EAC/B,OAAO,EACP,gBAAgB,GACA;IAChB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE9E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,uBAAuB,GAAG,OAAO,CACrC,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,iBAAiB,CACvE,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,EAAiC,CAAC;IAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACtC,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,SAAS,aAClC,aAAI,SAAS,EAAE,UAAU,CAAC,KAAK,YAAG,KAAK,GAAM,EAC5C,iBAAiB,IAAI,CACpB,+BACa,sBAAsB,EACjC,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,uBAAuB,YAEjC,iBAAiB,GACX,CACV,EACA,eAAe,IAAI,CAClB,+BACa,YAAY,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,WAAW,YAEhC,eAAe,GACT,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../src/components/ChatInput.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../src/components/ChatInput.tsx"],"names":[],"mappings":";AASA;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uCAAuC;IACvC,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAiC,EACjC,MAAa,EACb,cAAsB,EACtB,WAAW,EACX,cAA8B,EAC9B,gBAAgB,GACjB,EAAE,cAAc,2CA2DhB"}
|
|
@@ -6,11 +6,12 @@ import { useComposedCssClasses } from "../hooks";
|
|
|
6
6
|
import Textarea from "react-expanding-textarea";
|
|
7
7
|
import { twMerge } from "tailwind-merge";
|
|
8
8
|
import { useDefaultHandleApiError } from "../hooks/useDefaultHandleApiError";
|
|
9
|
-
|
|
9
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
10
|
+
const builtInCssClasses = withStylelessCssClasses("Input", {
|
|
10
11
|
container: "w-full h-fit flex flex-row relative @container",
|
|
11
12
|
textArea: "w-full p-4 pr-10 border border-slate-300 disabled:bg-slate-50 rounded-3xl resize-none text-[13px] @[480px]:text-base",
|
|
12
|
-
sendButton: "rounded-full p-1.5 w-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-100 hover:bg-blue-800 active:scale-90 transition-all absolute right-7 bottom-2.5 @[480px]:bottom-3.5",
|
|
13
|
-
};
|
|
13
|
+
sendButton: "rounded-full p-1.5 w-8 h-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-100 hover:bg-blue-800 active:scale-90 transition-all absolute right-7 bottom-2.5 @[480px]:bottom-3.5",
|
|
14
|
+
});
|
|
14
15
|
/**
|
|
15
16
|
* A component that allows user to input message and send to Chat API.
|
|
16
17
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../src/components/ChatInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../src/components/ChatInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/ChatPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/ChatPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7E;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAcD;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAC,EAC9D,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC1C,kDAAkD;IAClD,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAkD9C"}
|
|
@@ -7,11 +7,12 @@ import { ChatInput } from "./ChatInput";
|
|
|
7
7
|
import { LoadingDots } from "./LoadingDots";
|
|
8
8
|
import { useComposedCssClasses } from "../hooks";
|
|
9
9
|
import { useDefaultHandleApiError } from "../hooks/useDefaultHandleApiError";
|
|
10
|
-
|
|
10
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
11
|
+
const builtInCssClasses = withStylelessCssClasses("Panel", {
|
|
11
12
|
container: "h-full w-full flex flex-col relative rounded-3xl shadow-2xl bg-white",
|
|
12
13
|
messagesContainer: "flex flex-col gap-y-1 mt-auto px-4 pb-[85px] overflow-auto",
|
|
13
14
|
inputContainer: "w-full absolute bottom-0 p-4 rounded-b-3xl backdrop-blur-lg",
|
|
14
|
-
};
|
|
15
|
+
});
|
|
15
16
|
/**
|
|
16
17
|
* A component that renders a full panel for chat bot interactions. This includes
|
|
17
18
|
* the message bubbles for the conversation, input box with send button, and header
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../../src/components/ChatPanel.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,aAAa,GAGd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAuC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatPanel.js","sourceRoot":"","sources":["../../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPopUp.d.ts","sourceRoot":"","sources":["../../../src/components/ChatPopUp.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAEL,oBAAoB,EACpB,eAAe,EAChB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatPopUp.d.ts","sourceRoot":"","sources":["../../../src/components/ChatPopUp.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAEL,oBAAoB,EACpB,eAAe,EAChB,MAAM,cAAc,CAAC;AAKtB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAmBD;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,EACnE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,kBAAkB,CAAC;IACrD,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAClC;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAsD9C"}
|
|
@@ -5,8 +5,9 @@ import { ChatPanel } from "./ChatPanel";
|
|
|
5
5
|
import { ChatHeader, } from "./ChatHeader";
|
|
6
6
|
import { twMerge } from "tailwind-merge";
|
|
7
7
|
import { useComposedCssClasses } from "../hooks";
|
|
8
|
-
|
|
9
|
-
const
|
|
8
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
9
|
+
const fixedPosition = "fixed bottom-6 right-4 lg:bottom-14 lg:right-10 z-50 ";
|
|
10
|
+
const builtInCssClasses = withStylelessCssClasses("PopUp", {
|
|
10
11
|
container: "transition-all",
|
|
11
12
|
panel: fixedPosition + "w-80 lg:w-96 h-[75vh]",
|
|
12
13
|
panel__display: "duration-300 translate-y-0",
|
|
@@ -15,7 +16,7 @@ const builtInCssClasses = {
|
|
|
15
16
|
"p-2 w-12 h-12 lg:w-16 lg:h-16 flex justify-center items-center text-white shadow-xl rounded-full bg-gradient-to-br from-blue-600 to-blue-700 hover:-translate-y-2 duration-150",
|
|
16
17
|
button__display: "duration-300 transform translate-y-0",
|
|
17
18
|
button__hidden: "duration-300 transform translate-y-[20%] opacity-0 invisible",
|
|
18
|
-
};
|
|
19
|
+
});
|
|
19
20
|
/**
|
|
20
21
|
* A component that renders a popup button that displays and hides
|
|
21
22
|
* a panel for chat bot interactions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPopUp.js","sourceRoot":"","sources":["../../../src/components/ChatPopUp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAuC,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,UAAU,GAGX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatPopUp.js","sourceRoot":"","sources":["../../../src/components/ChatPopUp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAuC,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,UAAU,GAGX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAmB3E,MAAM,aAAa,GAAG,uDAAuD,CAAC;AAC9E,MAAM,iBAAiB,GAAwB,uBAAuB,CACpE,OAAO,EACP;IACE,SAAS,EAAE,gBAAgB;IAC3B,KAAK,EAAE,aAAa,GAAG,uBAAuB;IAC9C,cAAc,EAAE,4BAA4B;IAC5C,aAAa,EAAE,oDAAoD;IACnE,MAAM,EACJ,aAAa;QACb,gLAAgL;IAClL,eAAe,EAAE,sCAAsC;IACvD,cAAc,EACZ,8DAA8D;CACjE,CACF,CAAC;AAkBF;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EACJ,mBAAmB,GAAG,KAAC,WAAW,KAAG,EACrC,gBAAgB,EAChB,iBAAiB,GAAG,IAAI,EACxB,OAAO,EAAE,aAAa,EACtB,KAAK,GACN,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,aAAa,EAAE,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,UAAU,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,OAAO,CAC7B,UAAU,CAAC,KAAK,EAChB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAChE,CAAC;IACF,MAAM,gBAAgB,GAAG,OAAO,CAC9B,UAAU,CAAC,MAAM,EACjB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAClE,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,SAAS,aAClC,cAAK,SAAS,EAAE,eAAe,gBAAa,kBAAkB,YAC5D,KAAC,SAAS,OACJ,KAAK,EACT,gBAAgB,EAAE,UAAU,CAAC,eAAe,EAC5C,MAAM,EACJ,KAAC,UAAU,IACT,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,IAAI,EACrB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,GAC7C,GAEJ,GACE,EACN,+BACa,mBAAmB,EAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,gBAAgB,YAE1B,mBAAmB,GACb,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,2BAA2B,CAAC;AAMnE;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAsBD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,aAAoB,EACpB,gBAAgB,EAChB,eAAwC,GACzC,EAAE,kBAAkB,2CAoCpB"}
|
|
@@ -3,16 +3,19 @@ import { MessageSource } from "@yext/chat-headless-react";
|
|
|
3
3
|
import { useComposedCssClasses } from "../hooks";
|
|
4
4
|
import { twMerge } from "tailwind-merge";
|
|
5
5
|
import { Markdown } from "./Markdown";
|
|
6
|
-
|
|
6
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
7
|
+
const builtInCssClasses = withStylelessCssClasses("MessageBubble", {
|
|
7
8
|
topContainer: "w-full animate-fade-in @container",
|
|
8
9
|
subContainer: "flex flex-col @lg:flex-row @lg:items-center @lg:gap-x-2 @lg:m-1",
|
|
10
|
+
subContainer__bot: "",
|
|
9
11
|
subContainer__user: "@lg:flex-row-reverse",
|
|
10
12
|
message: "peer rounded-2xl text-[13px] @[480px]:text-base p-4 w-fit max-w-[80%] prose overflow-x-auto",
|
|
11
13
|
message__bot: "text-slate-900 bg-gradient-to-tr from-slate-50 to-slate-100",
|
|
12
14
|
message__user: "ml-auto @lg:ml-0 text-white bg-gradient-to-tr from-blue-600 to-blue-700",
|
|
13
15
|
timestamp: "w-fit my-0.5 text-slate-400 text-[13px] opacity-0 peer-hover:opacity-100 duration-200 whitespace-pre-wrap",
|
|
16
|
+
timestamp__bot: "",
|
|
14
17
|
timestamp__user: "ml-auto",
|
|
15
|
-
};
|
|
18
|
+
});
|
|
16
19
|
/**
|
|
17
20
|
* A component that displays the provided message.
|
|
18
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.js","sourceRoot":"","sources":["../../../src/components/MessageBubble.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageBubble.js","sourceRoot":"","sources":["../../../src/components/MessageBubble.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAoB3E,MAAM,iBAAiB,GAA4B,uBAAuB,CACxE,eAAe,EACf;IACE,YAAY,EAAE,mCAAmC;IACjD,YAAY,EACV,iEAAiE;IACnE,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,sBAAsB;IAC1C,OAAO,EACL,6FAA6F;IAC/F,YAAY,EAAE,6DAA6D;IAC3E,aAAa,EACX,yEAAyE;IAC3E,SAAS,EACP,2GAA2G;IAC7G,cAAc,EAAE,EAAE;IAClB,eAAe,EAAE,SAAS;CAC3B,CACF,CAAC;AAyBF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,aAAa,GAAG,IAAI,EACpB,gBAAgB,EAChB,eAAe,GAAG,sBAAsB,GACrB;IACnB,MAAM,UAAU,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAC9E,MAAM,iBAAiB,GAAG,OAAO,CAC/B,UAAU,CAAC,OAAO,EAClB,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI;QACnC,CAAC,CAAC,UAAU,CAAC,aAAa;QAC1B,CAAC,CAAC,UAAU,CAAC,YAAY,CAC5B,CAAC;IACF,MAAM,sBAAsB,GAAG,OAAO,CACpC,UAAU,CAAC,YAAY,EACvB,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI;QACnC,CAAC,CAAC,UAAU,CAAC,kBAAkB;QAC/B,CAAC,CAAC,UAAU,CAAC,iBAAiB,CACjC,CAAC;IACF,MAAM,mBAAmB,GAAG,OAAO,CACjC,UAAU,CAAC,SAAS,EACpB,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI;QACnC,CAAC,CAAC,UAAU,CAAC,eAAe;QAC5B,CAAC,CAAC,UAAU,CAAC,cAAc,CAC9B,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,UAAU,CAAC,YAAY,YACrC,eAAK,SAAS,EAAE,sBAAsB,aACpC,cAAK,SAAS,EAAE,iBAAiB,YAC/B,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,CAAC,IAAI,GAAI,GAC/B,EAEL,aAAa,IAAI,CAChB,cAAK,SAAS,EAAE,mBAAmB,YAChC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GACzD,CACP,IACG,GACF,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE;QACnD,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDefaultHandleApiError.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDefaultHandleApiError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDefaultHandleApiError.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDefaultHandleApiError.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,wBAAwB,QAIhC,OAAO,UAUd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MessageSource, useChatActions
|
|
1
|
+
import { MessageSource, useChatActions } from "@yext/chat-headless-react";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
/**
|
|
4
4
|
* Returns a default handler function for API errors. It will log the error and
|
|
@@ -8,17 +8,13 @@ import { useCallback } from "react";
|
|
|
8
8
|
*/
|
|
9
9
|
export function useDefaultHandleApiError() {
|
|
10
10
|
const chat = useChatActions();
|
|
11
|
-
const messages = useChatState((s) => s.conversation.messages);
|
|
12
11
|
return useCallback((e) => {
|
|
13
12
|
console.error(e);
|
|
14
|
-
chat.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
]);
|
|
22
|
-
}, [chat, messages]);
|
|
13
|
+
chat.addMessage({
|
|
14
|
+
text: "Sorry, I'm unable to respond at the moment. Please try again later!",
|
|
15
|
+
source: MessageSource.BOT,
|
|
16
|
+
timestamp: new Date().toISOString(),
|
|
17
|
+
});
|
|
18
|
+
}, [chat]);
|
|
23
19
|
}
|
|
24
20
|
//# sourceMappingURL=useDefaultHandleApiError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDefaultHandleApiError.js","sourceRoot":"","sources":["../../../src/hooks/useDefaultHandleApiError.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useDefaultHandleApiError.js","sourceRoot":"","sources":["../../../src/hooks/useDefaultHandleApiError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,OAAO,WAAW,CAChB,CAAC,CAAU,EAAE,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC;YACd,IAAI,EAAE,qEAAqE;YAC3E,MAAM,EAAE,aAAa,CAAC,GAAG;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAC;AACJ,CAAC"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare function ChatHeader({ title, showRestartButton, restartButtonIcon
|
|
|
19
19
|
* @public
|
|
20
20
|
*/
|
|
21
21
|
export declare interface ChatHeaderCssClasses {
|
|
22
|
-
|
|
22
|
+
container?: string;
|
|
23
23
|
title?: string;
|
|
24
24
|
restartButton?: string;
|
|
25
25
|
closeButton?: string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append styleless css classnames that user can target to add custom styling to components.
|
|
3
|
+
* The classes follows a format of "yext-chat-component-name__css-interface-field-name".
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* the styleless css class name for {@link MessageBubble}'s "message__bot" field defined
|
|
7
|
+
* in its {@link MessageBubbleCssClasses} interface is "yext-chat-message-bubble__message__bot"
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*
|
|
11
|
+
* @param componentName - the component name
|
|
12
|
+
* @param builtInClasses - built in css classnames of the component
|
|
13
|
+
*
|
|
14
|
+
* @returns builtInClasses with styleless css classnames
|
|
15
|
+
*/
|
|
16
|
+
export declare function withStylelessCssClasses<ClassInterface extends Partial<Record<keyof ClassInterface, string | object>>>(componentName: string, builtInClasses: Readonly<ClassInterface>): ClassInterface;
|
|
17
|
+
//# sourceMappingURL=withStylelessCssClasses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withStylelessCssClasses.d.ts","sourceRoot":"","sources":["../../../src/utils/withStylelessCssClasses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAE7E,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GACvC,cAAc,CAUhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append styleless css classnames that user can target to add custom styling to components.
|
|
3
|
+
* The classes follows a format of "yext-chat-component-name__css-interface-field-name".
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* the styleless css class name for {@link MessageBubble}'s "message__bot" field defined
|
|
7
|
+
* in its {@link MessageBubbleCssClasses} interface is "yext-chat-message-bubble__message__bot"
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*
|
|
11
|
+
* @param componentName - the component name
|
|
12
|
+
* @param builtInClasses - built in css classnames of the component
|
|
13
|
+
*
|
|
14
|
+
* @returns builtInClasses with styleless css classnames
|
|
15
|
+
*/
|
|
16
|
+
export function withStylelessCssClasses(componentName, builtInClasses) {
|
|
17
|
+
const formatString = (str) => str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);
|
|
18
|
+
const classes = { ...builtInClasses };
|
|
19
|
+
Object.keys(builtInClasses).forEach((key) => {
|
|
20
|
+
classes[key] = `${classes[key]} yext-chat${formatString(componentName)}__${formatString(key)}`;
|
|
21
|
+
});
|
|
22
|
+
return classes;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=withStylelessCssClasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withStylelessCssClasses.js","sourceRoot":"","sources":["../../../src/utils/withStylelessCssClasses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAGrC,aAAqB,EACrB,cAAwC;IAExC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CACnC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,CACrD,aAAa,CACd,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yext/chat-ui-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "A library of React Components for powering Yext Chat integrations.",
|
|
5
5
|
"author": "clippy@yext.com",
|
|
6
6
|
"main": "./lib/commonjs/index.js",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"typescript": "^5.0.4"
|
|
81
81
|
},
|
|
82
82
|
"peerDependencies": {
|
|
83
|
-
"@yext/chat-headless-react": "^0.3.
|
|
83
|
+
"@yext/chat-headless-react": "^0.3.3",
|
|
84
84
|
"react": "^16.14 || ^17 || ^18",
|
|
85
85
|
"react-dom": "^16.14 || ^17 || || ^18"
|
|
86
86
|
},
|
|
@@ -4,6 +4,7 @@ import { useComposedCssClasses } from "../hooks/useComposedCssClasses";
|
|
|
4
4
|
import { useCallback, useRef, useState } from "react";
|
|
5
5
|
import { twMerge } from "tailwind-merge";
|
|
6
6
|
import { CrossIcon } from "../icons/Cross";
|
|
7
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* The CSS class interface for the {@link ChatHeader} component.
|
|
@@ -11,19 +12,20 @@ import { CrossIcon } from "../icons/Cross";
|
|
|
11
12
|
* @public
|
|
12
13
|
*/
|
|
13
14
|
export interface ChatHeaderCssClasses {
|
|
14
|
-
|
|
15
|
+
container?: string;
|
|
15
16
|
title?: string;
|
|
16
17
|
restartButton?: string;
|
|
17
18
|
closeButton?: string;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
const builtInCssClasses: Readonly<ChatHeaderCssClasses> =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
const builtInCssClasses: Readonly<ChatHeaderCssClasses> =
|
|
22
|
+
withStylelessCssClasses("Header", {
|
|
23
|
+
container:
|
|
24
|
+
"w-full px-4 py-3 flex justify-between bg-gradient-to-tr from-blue-600 to-blue-800 rounded-t-3xl",
|
|
25
|
+
title: "text-white text-xl font-medium",
|
|
26
|
+
restartButton: "w-8 text-white stroke-[0.2] ml-auto",
|
|
27
|
+
closeButton: "w-8 text-white hover:scale-110",
|
|
28
|
+
});
|
|
27
29
|
|
|
28
30
|
/**
|
|
29
31
|
* The props for the {@link ChatHeader} component.
|
|
@@ -93,7 +95,7 @@ export function ChatHeader({
|
|
|
93
95
|
}, [chat]);
|
|
94
96
|
|
|
95
97
|
return (
|
|
96
|
-
<div className={cssClasses.
|
|
98
|
+
<div className={cssClasses.container}>
|
|
97
99
|
<h1 className={cssClasses.title}>{title}</h1>
|
|
98
100
|
{showRestartButton && (
|
|
99
101
|
<button
|
|
@@ -5,6 +5,7 @@ import { useComposedCssClasses } from "../hooks";
|
|
|
5
5
|
import Textarea from "react-expanding-textarea";
|
|
6
6
|
import { twMerge } from "tailwind-merge";
|
|
7
7
|
import { useDefaultHandleApiError } from "../hooks/useDefaultHandleApiError";
|
|
8
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* The CSS class interface for the {@link ChatInput} component.
|
|
@@ -17,13 +18,16 @@ export interface ChatInputCssClasses {
|
|
|
17
18
|
sendButton?: string;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
const builtInCssClasses: ChatInputCssClasses =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"w-full
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
const builtInCssClasses: ChatInputCssClasses = withStylelessCssClasses(
|
|
22
|
+
"Input",
|
|
23
|
+
{
|
|
24
|
+
container: "w-full h-fit flex flex-row relative @container",
|
|
25
|
+
textArea:
|
|
26
|
+
"w-full p-4 pr-10 border border-slate-300 disabled:bg-slate-50 rounded-3xl resize-none text-[13px] @[480px]:text-base",
|
|
27
|
+
sendButton:
|
|
28
|
+
"rounded-full p-1.5 w-8 h-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-100 hover:bg-blue-800 active:scale-90 transition-all absolute right-7 bottom-2.5 @[480px]:bottom-3.5",
|
|
29
|
+
}
|
|
30
|
+
);
|
|
27
31
|
|
|
28
32
|
/**
|
|
29
33
|
* The props for the {@link ChatInput} component.
|
|
@@ -9,6 +9,7 @@ import { ChatInput, ChatInputCssClasses, ChatInputProps } from "./ChatInput";
|
|
|
9
9
|
import { LoadingDots } from "./LoadingDots";
|
|
10
10
|
import { useComposedCssClasses } from "../hooks";
|
|
11
11
|
import { useDefaultHandleApiError } from "../hooks/useDefaultHandleApiError";
|
|
12
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* The CSS class interface for the {@link ChatPanel} component.
|
|
@@ -23,13 +24,17 @@ export interface ChatPanelCssClasses {
|
|
|
23
24
|
messageBubbleCssClasses?: MessageBubbleCssClasses;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
const builtInCssClasses: ChatPanelCssClasses =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
const builtInCssClasses: ChatPanelCssClasses = withStylelessCssClasses(
|
|
28
|
+
"Panel",
|
|
29
|
+
{
|
|
30
|
+
container:
|
|
31
|
+
"h-full w-full flex flex-col relative rounded-3xl shadow-2xl bg-white",
|
|
32
|
+
messagesContainer:
|
|
33
|
+
"flex flex-col gap-y-1 mt-auto px-4 pb-[85px] overflow-auto",
|
|
34
|
+
inputContainer:
|
|
35
|
+
"w-full absolute bottom-0 p-4 rounded-b-3xl backdrop-blur-lg",
|
|
36
|
+
}
|
|
37
|
+
);
|
|
33
38
|
|
|
34
39
|
/**
|
|
35
40
|
* The props for the {@link ChatPanel} component.
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from "./ChatHeader";
|
|
9
9
|
import { twMerge } from "tailwind-merge";
|
|
10
10
|
import { useComposedCssClasses } from "../hooks";
|
|
11
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* The CSS class interface for the {@link ChatPopUp} component.
|
|
@@ -26,19 +27,22 @@ export interface ChatPopUpCssClasses {
|
|
|
26
27
|
panelCssClasses?: ChatPanelCssClasses;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
const fixedPosition = "fixed bottom-6 right-4 lg:bottom-14 lg:right-10 ";
|
|
30
|
-
const builtInCssClasses: ChatPopUpCssClasses =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"duration-300 transform translate-y-
|
|
41
|
-
|
|
30
|
+
const fixedPosition = "fixed bottom-6 right-4 lg:bottom-14 lg:right-10 z-50 ";
|
|
31
|
+
const builtInCssClasses: ChatPopUpCssClasses = withStylelessCssClasses(
|
|
32
|
+
"PopUp",
|
|
33
|
+
{
|
|
34
|
+
container: "transition-all",
|
|
35
|
+
panel: fixedPosition + "w-80 lg:w-96 h-[75vh]",
|
|
36
|
+
panel__display: "duration-300 translate-y-0",
|
|
37
|
+
panel__hidden: "duration-300 translate-y-[20%] opacity-0 invisible",
|
|
38
|
+
button:
|
|
39
|
+
fixedPosition +
|
|
40
|
+
"p-2 w-12 h-12 lg:w-16 lg:h-16 flex justify-center items-center text-white shadow-xl rounded-full bg-gradient-to-br from-blue-600 to-blue-700 hover:-translate-y-2 duration-150",
|
|
41
|
+
button__display: "duration-300 transform translate-y-0",
|
|
42
|
+
button__hidden:
|
|
43
|
+
"duration-300 transform translate-y-[20%] opacity-0 invisible",
|
|
44
|
+
}
|
|
45
|
+
);
|
|
42
46
|
|
|
43
47
|
/**
|
|
44
48
|
* The props for the {@link ChatPopUp} component.
|
|
@@ -2,6 +2,7 @@ import { Message, MessageSource } from "@yext/chat-headless-react";
|
|
|
2
2
|
import { useComposedCssClasses } from "../hooks";
|
|
3
3
|
import { twMerge } from "tailwind-merge";
|
|
4
4
|
import { Markdown } from "./Markdown";
|
|
5
|
+
import { withStylelessCssClasses } from "../utils/withStylelessCssClasses";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* The CSS class interface for the {@link MessageBubble} component.
|
|
@@ -21,20 +22,25 @@ export interface MessageBubbleCssClasses {
|
|
|
21
22
|
timestamp__user?: string;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
const builtInCssClasses: MessageBubbleCssClasses =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
const builtInCssClasses: MessageBubbleCssClasses = withStylelessCssClasses(
|
|
26
|
+
"MessageBubble",
|
|
27
|
+
{
|
|
28
|
+
topContainer: "w-full animate-fade-in @container",
|
|
29
|
+
subContainer:
|
|
30
|
+
"flex flex-col @lg:flex-row @lg:items-center @lg:gap-x-2 @lg:m-1",
|
|
31
|
+
subContainer__bot: "",
|
|
32
|
+
subContainer__user: "@lg:flex-row-reverse",
|
|
33
|
+
message:
|
|
34
|
+
"peer rounded-2xl text-[13px] @[480px]:text-base p-4 w-fit max-w-[80%] prose overflow-x-auto",
|
|
35
|
+
message__bot: "text-slate-900 bg-gradient-to-tr from-slate-50 to-slate-100",
|
|
36
|
+
message__user:
|
|
37
|
+
"ml-auto @lg:ml-0 text-white bg-gradient-to-tr from-blue-600 to-blue-700",
|
|
38
|
+
timestamp:
|
|
39
|
+
"w-fit my-0.5 text-slate-400 text-[13px] opacity-0 peer-hover:opacity-100 duration-200 whitespace-pre-wrap",
|
|
40
|
+
timestamp__bot: "",
|
|
41
|
+
timestamp__user: "ml-auto",
|
|
42
|
+
}
|
|
43
|
+
);
|
|
38
44
|
|
|
39
45
|
/**
|
|
40
46
|
* The props for the {@link MessageBubble} component.
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MessageSource,
|
|
3
|
-
useChatActions,
|
|
4
|
-
useChatState,
|
|
5
|
-
} from "@yext/chat-headless-react";
|
|
1
|
+
import { MessageSource, useChatActions } from "@yext/chat-headless-react";
|
|
6
2
|
import { useCallback } from "react";
|
|
7
3
|
|
|
8
4
|
/**
|
|
@@ -13,20 +9,16 @@ import { useCallback } from "react";
|
|
|
13
9
|
*/
|
|
14
10
|
export function useDefaultHandleApiError() {
|
|
15
11
|
const chat = useChatActions();
|
|
16
|
-
const messages = useChatState((s) => s.conversation.messages);
|
|
17
12
|
|
|
18
13
|
return useCallback(
|
|
19
14
|
(e: unknown) => {
|
|
20
15
|
console.error(e);
|
|
21
|
-
chat.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
timestamp: new Date().toISOString(),
|
|
27
|
-
},
|
|
28
|
-
]);
|
|
16
|
+
chat.addMessage({
|
|
17
|
+
text: "Sorry, I'm unable to respond at the moment. Please try again later!",
|
|
18
|
+
source: MessageSource.BOT,
|
|
19
|
+
timestamp: new Date().toISOString(),
|
|
20
|
+
});
|
|
29
21
|
},
|
|
30
|
-
[chat
|
|
22
|
+
[chat]
|
|
31
23
|
);
|
|
32
24
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append styleless css classnames that user can target to add custom styling to components.
|
|
3
|
+
* The classes follows a format of "yext-chat-component-name__css-interface-field-name".
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* the styleless css class name for {@link MessageBubble}'s "message__bot" field defined
|
|
7
|
+
* in its {@link MessageBubbleCssClasses} interface is "yext-chat-message-bubble__message__bot"
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*
|
|
11
|
+
* @param componentName - the component name
|
|
12
|
+
* @param builtInClasses - built in css classnames of the component
|
|
13
|
+
*
|
|
14
|
+
* @returns builtInClasses with styleless css classnames
|
|
15
|
+
*/
|
|
16
|
+
export function withStylelessCssClasses<
|
|
17
|
+
ClassInterface extends Partial<Record<keyof ClassInterface, string | object>>
|
|
18
|
+
>(
|
|
19
|
+
componentName: string,
|
|
20
|
+
builtInClasses: Readonly<ClassInterface>
|
|
21
|
+
): ClassInterface {
|
|
22
|
+
const formatString = (str: string) =>
|
|
23
|
+
str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);
|
|
24
|
+
const classes = { ...builtInClasses };
|
|
25
|
+
Object.keys(builtInClasses).forEach((key) => {
|
|
26
|
+
classes[key] = `${classes[key]} yext-chat${formatString(
|
|
27
|
+
componentName
|
|
28
|
+
)}__${formatString(key)}`;
|
|
29
|
+
});
|
|
30
|
+
return classes;
|
|
31
|
+
}
|