@yext/chat-ui-react 0.8.8 → 0.9.0

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.
Files changed (42) hide show
  1. package/THIRD-PARTY-NOTICES +52 -81
  2. package/lib/bundle.css +1 -1
  3. package/lib/commonjs/package.json.js +1 -1
  4. package/lib/commonjs/src/components/ChatInput.d.ts +6 -1
  5. package/lib/commonjs/src/components/ChatInput.d.ts.map +1 -1
  6. package/lib/commonjs/src/components/ChatInput.js +8 -10
  7. package/lib/commonjs/src/components/ChatInput.js.map +1 -1
  8. package/lib/commonjs/src/components/ChatPanel.d.ts +5 -0
  9. package/lib/commonjs/src/components/ChatPanel.d.ts.map +1 -1
  10. package/lib/commonjs/src/components/ChatPanel.js +15 -4
  11. package/lib/commonjs/src/components/ChatPanel.js.map +1 -1
  12. package/lib/commonjs/src/components/MessageSuggestions.d.ts +6 -0
  13. package/lib/commonjs/src/components/MessageSuggestions.d.ts.map +1 -1
  14. package/lib/commonjs/src/components/MessageSuggestions.js +9 -4
  15. package/lib/commonjs/src/components/MessageSuggestions.js.map +1 -1
  16. package/lib/commonjs/src/hooks/useSendMessageWithRetries.d.ts +17 -0
  17. package/lib/commonjs/src/hooks/useSendMessageWithRetries.d.ts.map +1 -0
  18. package/lib/commonjs/src/hooks/useSendMessageWithRetries.js +52 -0
  19. package/lib/commonjs/src/hooks/useSendMessageWithRetries.js.map +1 -0
  20. package/lib/esm/index.d.ts +17 -1
  21. package/lib/esm/package.json.mjs +1 -1
  22. package/lib/esm/src/components/ChatInput.d.ts +6 -1
  23. package/lib/esm/src/components/ChatInput.d.ts.map +1 -1
  24. package/lib/esm/src/components/ChatInput.mjs +9 -11
  25. package/lib/esm/src/components/ChatInput.mjs.map +1 -1
  26. package/lib/esm/src/components/ChatPanel.d.ts +5 -0
  27. package/lib/esm/src/components/ChatPanel.d.ts.map +1 -1
  28. package/lib/esm/src/components/ChatPanel.mjs +16 -5
  29. package/lib/esm/src/components/ChatPanel.mjs.map +1 -1
  30. package/lib/esm/src/components/MessageSuggestions.d.ts +6 -0
  31. package/lib/esm/src/components/MessageSuggestions.d.ts.map +1 -1
  32. package/lib/esm/src/components/MessageSuggestions.mjs +9 -4
  33. package/lib/esm/src/components/MessageSuggestions.mjs.map +1 -1
  34. package/lib/esm/src/hooks/useSendMessageWithRetries.d.ts +17 -0
  35. package/lib/esm/src/hooks/useSendMessageWithRetries.d.ts.map +1 -0
  36. package/lib/esm/src/hooks/useSendMessageWithRetries.mjs +50 -0
  37. package/lib/esm/src/hooks/useSendMessageWithRetries.mjs.map +1 -0
  38. package/package.json +2 -2
  39. package/src/components/ChatInput.tsx +14 -11
  40. package/src/components/ChatPanel.tsx +33 -2
  41. package/src/components/MessageSuggestions.tsx +17 -3
  42. package/src/hooks/useSendMessageWithRetries.ts +49 -0
@@ -31,7 +31,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
31
 
32
32
  The following NPM package may be included in this product:
33
33
 
34
- - @reduxjs/toolkit@1.9.5
34
+ - @reduxjs/toolkit@1.9.7
35
35
 
36
36
  This package contains the following license and notice below:
37
37
 
@@ -62,6 +62,7 @@ SOFTWARE.
62
62
  The following NPM packages may be included in this product:
63
63
 
64
64
  - @types/hast@2.3.4
65
+ - @types/hoist-non-react-statics@3.3.5
65
66
  - @types/mdast@3.0.11
66
67
  - @types/parse5@5.0.3
67
68
  - @types/prop-types@15.7.5
@@ -99,37 +100,7 @@ MIT License
99
100
 
100
101
  The following NPM package may be included in this product:
101
102
 
102
- - @types/hoist-non-react-statics@3.3.1
103
-
104
- This package contains the following license and notice below:
105
-
106
- MIT License
107
-
108
- Copyright (c) Microsoft Corporation. All rights reserved.
109
-
110
- Permission is hereby granted, free of charge, to any person obtaining a copy
111
- of this software and associated documentation files (the "Software"), to deal
112
- in the Software without restriction, including without limitation the rights
113
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
114
- copies of the Software, and to permit persons to whom the Software is
115
- furnished to do so, subject to the following conditions:
116
-
117
- The above copyright notice and this permission notice shall be included in all
118
- copies or substantial portions of the Software.
119
-
120
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
121
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
122
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
123
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
124
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
125
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
126
- SOFTWARE
127
-
128
- -----------
129
-
130
- The following NPM package may be included in this product:
131
-
132
- - @yext/analytics@0.6.4
103
+ - @yext/analytics@0.6.6
133
104
 
134
105
  This package contains the following license and notice below:
135
106
 
@@ -170,9 +141,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
170
141
 
171
142
  The following NPM packages may be included in this product:
172
143
 
173
- - @yext/chat-core@0.7.6
174
- - @yext/chat-headless-react@0.6.1
175
- - @yext/chat-headless@0.7.1
144
+ - @yext/chat-core@0.8.0
145
+ - @yext/chat-headless-react@0.7.0
146
+ - @yext/chat-headless@0.8.0
176
147
 
177
148
  These packages each contain the following license and notice below:
178
149
 
@@ -827,7 +798,7 @@ THE SOFTWARE.
827
798
 
828
799
  The following NPM package may be included in this product:
829
800
 
830
- - layerr@2.0.1
801
+ - layerr@2.1.0
831
802
 
832
803
  This package contains the following license and notice below:
833
804
 
@@ -1236,7 +1207,7 @@ The following NPM packages may be included in this product:
1236
1207
  - react-is@18.2.0
1237
1208
  - react@18.2.0
1238
1209
  - scheduler@0.23.0
1239
- - use-sync-external-store@1.2.0
1210
+ - use-sync-external-store@1.2.2
1240
1211
 
1241
1212
  These packages each contain the following license and notice below:
1242
1213
 
@@ -1296,31 +1267,31 @@ SOFTWARE.
1296
1267
 
1297
1268
  The following NPM packages may be included in this product:
1298
1269
 
1299
- - react-redux@8.1.2
1300
- - redux@4.2.1
1270
+ - react-redux@8.1.3
1271
+ - redux-thunk@2.4.2
1301
1272
 
1302
1273
  These packages each contain the following license and notice below:
1303
1274
 
1304
- The MIT License (MIT)
1305
-
1306
- Copyright (c) 2015-present Dan Abramov
1307
-
1308
- Permission is hereby granted, free of charge, to any person obtaining a copy
1309
- of this software and associated documentation files (the "Software"), to deal
1310
- in the Software without restriction, including without limitation the rights
1311
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1312
- copies of the Software, and to permit persons to whom the Software is
1313
- furnished to do so, subject to the following conditions:
1314
-
1315
- The above copyright notice and this permission notice shall be included in all
1316
- copies or substantial portions of the Software.
1317
-
1318
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1319
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1320
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1321
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1322
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1323
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1275
+ The MIT License (MIT)
1276
+
1277
+ Copyright (c) 2015-present Dan Abramov
1278
+
1279
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1280
+ of this software and associated documentation files (the "Software"), to deal
1281
+ in the Software without restriction, including without limitation the rights
1282
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1283
+ copies of the Software, and to permit persons to whom the Software is
1284
+ furnished to do so, subject to the following conditions:
1285
+
1286
+ The above copyright notice and this permission notice shall be included in all
1287
+ copies or substantial portions of the Software.
1288
+
1289
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1290
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1291
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1292
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1293
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1294
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1324
1295
  SOFTWARE.
1325
1296
 
1326
1297
  -----------
@@ -1356,30 +1327,30 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1356
1327
 
1357
1328
  The following NPM package may be included in this product:
1358
1329
 
1359
- - redux-thunk@2.4.2
1330
+ - redux@4.2.1
1360
1331
 
1361
1332
  This package contains the following license and notice below:
1362
1333
 
1363
- The MIT License (MIT)
1364
-
1365
- Copyright (c) 2015-present Dan Abramov
1366
-
1367
- Permission is hereby granted, free of charge, to any person obtaining a copy
1368
- of this software and associated documentation files (the "Software"), to deal
1369
- in the Software without restriction, including without limitation the rights
1370
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1371
- copies of the Software, and to permit persons to whom the Software is
1372
- furnished to do so, subject to the following conditions:
1373
-
1374
- The above copyright notice and this permission notice shall be included in all
1375
- copies or substantial portions of the Software.
1376
-
1377
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1378
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1379
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1380
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1381
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1382
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1334
+ The MIT License (MIT)
1335
+
1336
+ Copyright (c) 2015-present Dan Abramov
1337
+
1338
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1339
+ of this software and associated documentation files (the "Software"), to deal
1340
+ in the Software without restriction, including without limitation the rights
1341
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1342
+ copies of the Software, and to permit persons to whom the Software is
1343
+ furnished to do so, subject to the following conditions:
1344
+
1345
+ The above copyright notice and this permission notice shall be included in all
1346
+ copies or substantial portions of the Software.
1347
+
1348
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1349
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1350
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1351
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1352
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1353
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1383
1354
  SOFTWARE.
1384
1355
 
1385
1356
  -----------
@@ -1783,7 +1754,7 @@ THE SOFTWARE.
1783
1754
 
1784
1755
  The following NPM package may be included in this product:
1785
1756
 
1786
- - ulidx@2.1.0
1757
+ - ulidx@2.3.0
1787
1758
 
1788
1759
  This package contains the following license and notice below:
1789
1760
 
package/lib/bundle.css CHANGED
@@ -1 +1 @@
1
- .yext-chat { width: 100%; height: 100%; } /*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/.yext-chat *,.yext-chat :after,.yext-chat :before{box-sizing:border-box;border:0 solid #e5e7eb}.yext-chat :after,.yext-chat :before{--tw-content:""}.yext-chat {line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}.yext-chat {margin:0;line-height:inherit}.yext-chat hr{height:0;color:inherit;border-top-width:1px}.yext-chat abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.yext-chat h1,.yext-chat h2,.yext-chat h3,.yext-chat h4,.yext-chat h5,.yext-chat h6{font-size:inherit;font-weight:inherit}.yext-chat a{color:inherit;text-decoration:inherit}.yext-chat b,.yext-chat strong{font-weight:bolder}.yext-chat code,.yext-chat kbd,.yext-chat pre,.yext-chat samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}.yext-chat small{font-size:80%}.yext-chat sub,.yext-chat sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}.yext-chat sub{bottom:-.25em}.yext-chat sup{top:-.5em}.yext-chat table{text-indent:0;border-color:inherit;border-collapse:collapse}.yext-chat button,.yext-chat input,.yext-chat optgroup,.yext-chat select,.yext-chat textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}.yext-chat button,.yext-chat select{text-transform:none}.yext-chat [type=button],.yext-chat [type=reset],.yext-chat [type=submit],.yext-chat button{-webkit-appearance:button;background-color:initial;background-image:none}.yext-chat :-moz-focusring{outline:auto}.yext-chat :-moz-ui-invalid{box-shadow:none}.yext-chat progress{vertical-align:initial}.yext-chat ::-webkit-inner-spin-button,.yext-chat ::-webkit-outer-spin-button{height:auto}.yext-chat [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.yext-chat ::-webkit-search-decoration{-webkit-appearance:none}.yext-chat ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.yext-chat summary{display:list-item}.yext-chat blockquote,.yext-chat dd,.yext-chat dl,.yext-chat figure,.yext-chat h1,.yext-chat h2,.yext-chat h3,.yext-chat h4,.yext-chat h5,.yext-chat h6,.yext-chat hr,.yext-chat p,.yext-chat pre{margin:0}.yext-chat fieldset{margin:0}.yext-chat fieldset,.yext-chat legend{padding:0}.yext-chat menu,.yext-chat ol,.yext-chat ul{list-style:none;margin:0;padding:0}.yext-chat textarea{resize:vertical}.yext-chat input::-moz-placeholder,.yext-chat textarea::-moz-placeholder{opacity:1;color:#9ca3af}.yext-chat input::placeholder,.yext-chat textarea::placeholder{opacity:1;color:#9ca3af}.yext-chat [role=button],.yext-chat button{cursor:pointer}.yext-chat :disabled{cursor:default}.yext-chat audio,.yext-chat canvas,.yext-chat embed,.yext-chat iframe,.yext-chat img,.yext-chat object,.yext-chat svg,.yext-chat video{display:block;vertical-align:middle}.yext-chat img,.yext-chat video{max-width:100%;height:auto}.yext-chat [hidden]{display:none}.yext-chat *,.yext-chat ::backdrop,.yext-chat :after,.yext-chat :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.yext-chat .container{width:100%}@media (min-width:640px){.yext-chat .container{max-width:640px}}@media (min-width:768px){.yext-chat .container{max-width:768px}}@media (min-width:1024px){.yext-chat .container{max-width:1024px}}@media (min-width:1280px){.yext-chat .container{max-width:1280px}}@media (min-width:1536px){.yext-chat .container{max-width:1536px}}.yext-chat .prose{color:var(--tw-prose-body);max-width:65ch}.yext-chat .prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.yext-chat .prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.yext-chat .prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.yext-chat .prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.yext-chat .prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.yext-chat .prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.yext-chat .prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.yext-chat .prose :where(ol[type=A s]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.yext-chat .prose :where(ol[type=a s]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.yext-chat .prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.yext-chat .prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.yext-chat .prose :where(ol[type=I s]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.yext-chat .prose :where(ol[type=i s]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.yext-chat .prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.yext-chat .prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.yext-chat .prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.yext-chat .prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.yext-chat .prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.yext-chat .prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.yext-chat .prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *)):before{content:open-quote}.yext-chat .prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *)):after{content:close-quote}.yext-chat .prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.yext-chat .prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.yext-chat .prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.yext-chat .prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.yext-chat .prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.yext-chat .prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.yext-chat .prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.yext-chat .prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.yext-chat .prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.yext-chat .prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.yext-chat .prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.yext-chat .prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.yext-chat .prose :where(code):not(:where([class~=not-prose] *)):before{content:"`"}.yext-chat .prose :where(code):not(:where([class~=not-prose] *)):after{content:"`"}.yext-chat .prose :where(a code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.yext-chat .prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.yext-chat .prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.yext-chat .prose :where(pre code):not(:where([class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.yext-chat .prose :where(pre code):not(:where([class~=not-prose] *)):before{content:none}.yext-chat .prose :where(pre code):not(:where([class~=not-prose] *)):after{content:none}.yext-chat .prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.yext-chat .prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.yext-chat .prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.yext-chat .prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.yext-chat .prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.yext-chat .prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:initial}.yext-chat .prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.yext-chat .prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.yext-chat .prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.yext-chat .prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.yext-chat .prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.yext-chat .prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.yext-chat .prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.yext-chat .prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.yext-chat .prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.yext-chat .prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.yext-chat .prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.yext-chat .prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.yext-chat .prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.yext-chat .prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.yext-chat .prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.yext-chat .prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.yext-chat .prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.5714286em}.yext-chat .prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.yext-chat .prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.yext-chat .prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.yext-chat .invisible{visibility:hidden}.yext-chat .fixed{position:fixed}.yext-chat .absolute{position:absolute}.yext-chat .relative{position:relative}.yext-chat .-right-1{right:-.25rem}.yext-chat .-top-3{top:-.75rem}.yext-chat .bottom-2{bottom:.5rem}.yext-chat .bottom-2\.5{bottom:.625rem}.yext-chat .bottom-6{bottom:1.5rem}.yext-chat .right-4{right:1rem}.yext-chat .top-0{top:0}.yext-chat .z-50{z-index:50}.yext-chat .my-0{margin-top:0;margin-bottom:0}.yext-chat .my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.yext-chat .-mr-8{margin-right:-2rem}.yext-chat .mb-3{margin-bottom:.75rem}.yext-chat .mb-4{margin-bottom:1rem}.yext-chat .ml-4{margin-left:1rem}.yext-chat .ml-auto{margin-left:auto}.yext-chat .mt-auto{margin-top:auto}.yext-chat .line-clamp-1{-webkit-line-clamp:1}.yext-chat .line-clamp-1,.yext-chat .line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.yext-chat .line-clamp-2{-webkit-line-clamp:2}.yext-chat .flex{display:flex}.yext-chat .hidden{display:none}.yext-chat .h-10{height:2.5rem}.yext-chat .h-12{height:3rem}.yext-chat .h-2{height:.5rem}.yext-chat .h-4{height:1rem}.yext-chat .h-5{height:1.25rem}.yext-chat .h-6{height:1.5rem}.yext-chat .h-8{height:2rem}.yext-chat .h-\[22px\]{height:22px}.yext-chat .h-\[26px\]{height:26px}.yext-chat .h-\[28px\]{height:28px}.yext-chat .h-\[75vh\]{height:75vh}.yext-chat .h-fit{height:-moz-fit-content;height:fit-content}.yext-chat .h-full{height:100%}.yext-chat .w-12{width:3rem}.yext-chat .w-2{width:.5rem}.yext-chat .w-4{width:1rem}.yext-chat .w-5{width:1.25rem}.yext-chat .w-6{width:1.5rem}.yext-chat .w-60{width:15rem}.yext-chat .w-8{width:2rem}.yext-chat .w-80{width:20rem}.yext-chat .w-\[22px\]{width:22px}.yext-chat .w-\[26px\]{width:26px}.yext-chat .w-\[28px\]{width:28px}.yext-chat .w-fit{width:-moz-fit-content;width:fit-content}.yext-chat .w-full{width:100%}.yext-chat .max-w-\[80\%\]{max-width:80%}.yext-chat .shrink-0{flex-shrink:0}.yext-chat .translate-y-0{--tw-translate-y:0px}.yext-chat .translate-y-0,.yext-chat .translate-y-\[20\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .translate-y-\[20\%\]{--tw-translate-y:20%}.yext-chat .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .animate-\[bounce_1s_infinite\]{animation:bounce 1s infinite}.yext-chat .animate-\[bounce_1s_infinite_0\.3s\]{animation:bounce 1s .3s infinite}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.yext-chat .animate-\[bounce_1s_infinite_0\.6s\]{animation:bounce 1s .6s infinite}@keyframes spin{to{transform:rotate(1turn)}}.yext-chat .animate-\[spin_0\.3s_linear\]{animation:spin .3s linear}@keyframes expand-left{0%{margin-left:100%}to{margin-left:0}}.yext-chat .animate-expand-left{animation:expand-left .5s}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.yext-chat .animate-fade-in{animation:fade-in .4s}@keyframes heartbeat{0%{transform:scale(1)}80%{transform:scale(1)}90%{transform:scale(1.1)}to{transform:scale(1)}}.yext-chat .animate-heartbeat{animation:heartbeat 2s ease-out infinite}.yext-chat .cursor-pointer{cursor:pointer}.yext-chat .resize-none{resize:none}.yext-chat .flex-row{flex-direction:row}.yext-chat .flex-col{flex-direction:column}.yext-chat .flex-wrap{flex-wrap:wrap}.yext-chat .items-center{align-items:center}.yext-chat .justify-center{justify-content:center}.yext-chat .justify-between{justify-content:space-between}.yext-chat .gap-1{gap:.25rem}.yext-chat .gap-2{gap:.5rem}.yext-chat .gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.yext-chat .gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.yext-chat .gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.yext-chat .gap-y-1{row-gap:.25rem}.yext-chat .overflow-auto{overflow:auto}.yext-chat .overflow-hidden{overflow:hidden}.yext-chat .overflow-x-auto{overflow-x:auto}.yext-chat .truncate{overflow:hidden;text-overflow:ellipsis}.yext-chat .truncate,.yext-chat .whitespace-nowrap{white-space:nowrap}.yext-chat .whitespace-pre-wrap{white-space:pre-wrap}.yext-chat .break-words{overflow-wrap:break-word}.yext-chat .rounded-2xl{border-radius:1rem}.yext-chat .rounded-3xl{border-radius:1.5rem}.yext-chat .rounded-full{border-radius:9999px}.yext-chat .rounded-md{border-radius:.375rem}.yext-chat .rounded-xl{border-radius:.75rem}.yext-chat .rounded-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.yext-chat .rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.yext-chat .rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.yext-chat .border{border-width:1px}.yext-chat .border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.yext-chat .border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.yext-chat .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.yext-chat .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.yext-chat .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.yext-chat .bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.yext-chat .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.yext-chat .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.yext-chat .bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.yext-chat .from-blue-600{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:#2563eb00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.yext-chat .from-slate-50{--tw-gradient-from:#f8fafc var(--tw-gradient-from-position);--tw-gradient-to:#f8fafc00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.yext-chat .to-blue-700{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.yext-chat .to-blue-800{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.yext-chat .to-slate-100{--tw-gradient-to:#f1f5f9 var(--tw-gradient-to-position)}.yext-chat .stroke-2{stroke-width:2}.yext-chat .stroke-\[0\.2\]{stroke-width:.2}.yext-chat .p-1{padding:.25rem}.yext-chat .p-1\.5{padding:.375rem}.yext-chat .p-2{padding:.5rem}.yext-chat .p-2\.5{padding:.625rem}.yext-chat .p-3{padding:.75rem}.yext-chat .p-4{padding:1rem}.yext-chat .px-2{padding-left:.5rem;padding-right:.5rem}.yext-chat .px-4{padding-left:1rem;padding-right:1rem}.yext-chat .py-1{padding-top:.25rem;padding-bottom:.25rem}.yext-chat .py-3{padding-top:.75rem;padding-bottom:.75rem}.yext-chat .pb-4{padding-bottom:1rem}.yext-chat .pl-4{padding-left:1rem}.yext-chat .pr-1{padding-right:.25rem}.yext-chat .pr-12{padding-right:3rem}.yext-chat .pr-3{padding-right:.75rem}.yext-chat .pr-8{padding-right:2rem}.yext-chat .text-center{text-align:center}.yext-chat .text-\[10px\]{font-size:10px}.yext-chat .text-\[12px\]{font-size:12px}.yext-chat .text-\[13px\]{font-size:13px}.yext-chat .text-sm{font-size:.875rem;line-height:1.25rem}.yext-chat .text-xl{font-size:1.25rem;line-height:1.75rem}.yext-chat .font-bold{font-weight:700}.yext-chat .font-medium{font-weight:500}.yext-chat .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.yext-chat .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.yext-chat .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.yext-chat .text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.yext-chat .text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.yext-chat .text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.yext-chat .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.yext-chat .opacity-0{opacity:0}.yext-chat .shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.yext-chat .shadow-2xl,.yext-chat .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yext-chat .shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.yext-chat .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.yext-chat .duration-150,.yext-chat .transition-all{transition-duration:.15s}.yext-chat .duration-200{transition-duration:.2s}.yext-chat .duration-300{transition-duration:.3s}.yext-chat .\@container{container-type:inline-size}.yext-chat .placeholder\:text-\[13px\]::-moz-placeholder{font-size:13px}.yext-chat .placeholder\:text-\[13px\]::placeholder{font-size:13px}.yext-chat .first\:mt-4:first-child{margin-top:1rem}.yext-chat .hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.yext-chat .hover\:-translate-y-2:hover,.yext-chat .hover\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.yext-chat .hover\:cursor-pointer:hover{cursor:pointer}.yext-chat .hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.yext-chat .hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.yext-chat .hover\:underline:hover{text-decoration-line:underline}.yext-chat .active\:scale-90:active{--tw-scale-x:.9;--tw-scale-y:.9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .disabled\:bg-slate-200:disabled{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.yext-chat .group:hover .group-hover\:opacity-100,.yext-chat .peer:hover~.peer-hover\:opacity-100{opacity:1}@container (min-width: 32rem){.yext-chat .\@lg\:m-1{margin:.25rem}.yext-chat .\@lg\:ml-0{margin-left:0}.yext-chat .\@lg\:flex-row{flex-direction:row}.yext-chat .\@lg\:flex-row-reverse{flex-direction:row-reverse}.yext-chat .\@lg\:items-center{align-items:center}.yext-chat .\@lg\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}}@container (min-width: 480px){.yext-chat .\@\[480px\]\:bottom-3\.5{bottom:.875rem}.yext-chat .\@\[480px\]\:text-\[13px\]{font-size:13px}.yext-chat .\@\[480px\]\:text-base{font-size:1rem;line-height:1.5rem}.yext-chat .placeholder\:\@\[480px\]\:text-base::-moz-placeholder{font-size:1rem;line-height:1.5rem}.yext-chat .placeholder\:\@\[480px\]\:text-base::placeholder{font-size:1rem;line-height:1.5rem}}@media (max-width:480px){.yext-chat .max-\[480px\]\:bottom-0{bottom:0}.yext-chat .max-\[480px\]\:right-0{right:0}.yext-chat .max-\[480px\]\:h-full{height:100%}.yext-chat .max-\[480px\]\:w-full{width:100%}.yext-chat .max-\[480px\]\:rounded-none{border-radius:0}}@media (min-width:1024px){.yext-chat .lg\:bottom-14{bottom:3.5rem}.yext-chat .lg\:right-10{right:2.5rem}.yext-chat .lg\:h-14{height:3.5rem}.yext-chat .lg\:h-16{height:4rem}.yext-chat .lg\:h-6{height:1.5rem}.yext-chat .lg\:h-\[40px\]{height:40px}.yext-chat .lg\:w-16{width:4rem}.yext-chat .lg\:w-6{width:1.5rem}.yext-chat .lg\:w-96{width:24rem}.yext-chat .lg\:w-\[40px\]{width:40px}.yext-chat .lg\:text-base{font-size:1rem;line-height:1.5rem}}
1
+ .yext-chat { width: 100%; height: 100%; } /*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/.yext-chat *,.yext-chat :after,.yext-chat :before{box-sizing:border-box;border:0 solid #e5e7eb}.yext-chat :after,.yext-chat :before{--tw-content:""}.yext-chat {line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}.yext-chat {margin:0;line-height:inherit}.yext-chat hr{height:0;color:inherit;border-top-width:1px}.yext-chat abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.yext-chat h1,.yext-chat h2,.yext-chat h3,.yext-chat h4,.yext-chat h5,.yext-chat h6{font-size:inherit;font-weight:inherit}.yext-chat a{color:inherit;text-decoration:inherit}.yext-chat b,.yext-chat strong{font-weight:bolder}.yext-chat code,.yext-chat kbd,.yext-chat pre,.yext-chat samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}.yext-chat small{font-size:80%}.yext-chat sub,.yext-chat sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}.yext-chat sub{bottom:-.25em}.yext-chat sup{top:-.5em}.yext-chat table{text-indent:0;border-color:inherit;border-collapse:collapse}.yext-chat button,.yext-chat input,.yext-chat optgroup,.yext-chat select,.yext-chat textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}.yext-chat button,.yext-chat select{text-transform:none}.yext-chat [type=button],.yext-chat [type=reset],.yext-chat [type=submit],.yext-chat button{-webkit-appearance:button;background-color:initial;background-image:none}.yext-chat :-moz-focusring{outline:auto}.yext-chat :-moz-ui-invalid{box-shadow:none}.yext-chat progress{vertical-align:initial}.yext-chat ::-webkit-inner-spin-button,.yext-chat ::-webkit-outer-spin-button{height:auto}.yext-chat [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.yext-chat ::-webkit-search-decoration{-webkit-appearance:none}.yext-chat ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.yext-chat summary{display:list-item}.yext-chat blockquote,.yext-chat dd,.yext-chat dl,.yext-chat figure,.yext-chat h1,.yext-chat h2,.yext-chat h3,.yext-chat h4,.yext-chat h5,.yext-chat h6,.yext-chat hr,.yext-chat p,.yext-chat pre{margin:0}.yext-chat fieldset{margin:0}.yext-chat fieldset,.yext-chat legend{padding:0}.yext-chat menu,.yext-chat ol,.yext-chat ul{list-style:none;margin:0;padding:0}.yext-chat textarea{resize:vertical}.yext-chat input::-moz-placeholder,.yext-chat textarea::-moz-placeholder{opacity:1;color:#9ca3af}.yext-chat input::placeholder,.yext-chat textarea::placeholder{opacity:1;color:#9ca3af}.yext-chat [role=button],.yext-chat button{cursor:pointer}.yext-chat :disabled{cursor:default}.yext-chat audio,.yext-chat canvas,.yext-chat embed,.yext-chat iframe,.yext-chat img,.yext-chat object,.yext-chat svg,.yext-chat video{display:block;vertical-align:middle}.yext-chat img,.yext-chat video{max-width:100%;height:auto}.yext-chat [hidden]{display:none}.yext-chat *,.yext-chat ::backdrop,.yext-chat :after,.yext-chat :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.yext-chat .container{width:100%}@media (min-width:640px){.yext-chat .container{max-width:640px}}@media (min-width:768px){.yext-chat .container{max-width:768px}}@media (min-width:1024px){.yext-chat .container{max-width:1024px}}@media (min-width:1280px){.yext-chat .container{max-width:1280px}}@media (min-width:1536px){.yext-chat .container{max-width:1536px}}.yext-chat .prose{color:var(--tw-prose-body);max-width:65ch}.yext-chat .prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.yext-chat .prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.yext-chat .prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.yext-chat .prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.yext-chat .prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.yext-chat .prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.yext-chat .prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.yext-chat .prose :where(ol[type=A s]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.yext-chat .prose :where(ol[type=a s]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.yext-chat .prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.yext-chat .prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.yext-chat .prose :where(ol[type=I s]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.yext-chat .prose :where(ol[type=i s]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.yext-chat .prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.yext-chat .prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.yext-chat .prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.yext-chat .prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.yext-chat .prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.yext-chat .prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.yext-chat .prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *)):before{content:open-quote}.yext-chat .prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *)):after{content:close-quote}.yext-chat .prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.yext-chat .prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.yext-chat .prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.yext-chat .prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.yext-chat .prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.yext-chat .prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.yext-chat .prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.yext-chat .prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.yext-chat .prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.yext-chat .prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.yext-chat .prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.yext-chat .prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.yext-chat .prose :where(code):not(:where([class~=not-prose] *)):before{content:"`"}.yext-chat .prose :where(code):not(:where([class~=not-prose] *)):after{content:"`"}.yext-chat .prose :where(a code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.yext-chat .prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.yext-chat .prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.yext-chat .prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.yext-chat .prose :where(pre code):not(:where([class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.yext-chat .prose :where(pre code):not(:where([class~=not-prose] *)):before{content:none}.yext-chat .prose :where(pre code):not(:where([class~=not-prose] *)):after{content:none}.yext-chat .prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.yext-chat .prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.yext-chat .prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.yext-chat .prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.yext-chat .prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.yext-chat .prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:initial}.yext-chat .prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.yext-chat .prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.yext-chat .prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.yext-chat .prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.yext-chat .prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.yext-chat .prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.yext-chat .prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.yext-chat .prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.yext-chat .prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.yext-chat .prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.yext-chat .prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.yext-chat .prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.yext-chat .prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.yext-chat .prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.yext-chat .prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.yext-chat .prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.yext-chat .prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.5714286em}.yext-chat .prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.yext-chat .prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.yext-chat .prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.yext-chat .prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.yext-chat .invisible{visibility:hidden}.yext-chat .fixed{position:fixed}.yext-chat .absolute{position:absolute}.yext-chat .relative{position:relative}.yext-chat .-right-1{right:-.25rem}.yext-chat .-top-3{top:-.75rem}.yext-chat .bottom-2{bottom:.5rem}.yext-chat .bottom-2\.5{bottom:.625rem}.yext-chat .bottom-6{bottom:1.5rem}.yext-chat .right-4{right:1rem}.yext-chat .top-0{top:0}.yext-chat .z-50{z-index:50}.yext-chat .my-0{margin-top:0;margin-bottom:0}.yext-chat .my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.yext-chat .-mr-8{margin-right:-2rem}.yext-chat .mb-3{margin-bottom:.75rem}.yext-chat .mb-4{margin-bottom:1rem}.yext-chat .ml-4{margin-left:1rem}.yext-chat .ml-auto{margin-left:auto}.yext-chat .mt-auto{margin-top:auto}.yext-chat .line-clamp-1{-webkit-line-clamp:1}.yext-chat .line-clamp-1,.yext-chat .line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.yext-chat .line-clamp-2{-webkit-line-clamp:2}.yext-chat .flex{display:flex}.yext-chat .hidden{display:none}.yext-chat .h-10{height:2.5rem}.yext-chat .h-12{height:3rem}.yext-chat .h-2{height:.5rem}.yext-chat .h-4{height:1rem}.yext-chat .h-5{height:1.25rem}.yext-chat .h-6{height:1.5rem}.yext-chat .h-8{height:2rem}.yext-chat .h-\[22px\]{height:22px}.yext-chat .h-\[26px\]{height:26px}.yext-chat .h-\[28px\]{height:28px}.yext-chat .h-\[75vh\]{height:75vh}.yext-chat .h-fit{height:-moz-fit-content;height:fit-content}.yext-chat .h-full{height:100%}.yext-chat .w-12{width:3rem}.yext-chat .w-2{width:.5rem}.yext-chat .w-4{width:1rem}.yext-chat .w-5{width:1.25rem}.yext-chat .w-6{width:1.5rem}.yext-chat .w-60{width:15rem}.yext-chat .w-8{width:2rem}.yext-chat .w-80{width:20rem}.yext-chat .w-\[22px\]{width:22px}.yext-chat .w-\[26px\]{width:26px}.yext-chat .w-\[28px\]{width:28px}.yext-chat .w-fit{width:-moz-fit-content;width:fit-content}.yext-chat .w-full{width:100%}.yext-chat .max-w-\[80\%\]{max-width:80%}.yext-chat .shrink-0{flex-shrink:0}.yext-chat .translate-y-0{--tw-translate-y:0px}.yext-chat .translate-y-0,.yext-chat .translate-y-\[20\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .translate-y-\[20\%\]{--tw-translate-y:20%}.yext-chat .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .animate-\[bounce_1s_infinite\]{animation:bounce 1s infinite}.yext-chat .animate-\[bounce_1s_infinite_0\.3s\]{animation:bounce 1s .3s infinite}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.yext-chat .animate-\[bounce_1s_infinite_0\.6s\]{animation:bounce 1s .6s infinite}@keyframes spin{to{transform:rotate(1turn)}}.yext-chat .animate-\[spin_0\.3s_linear\]{animation:spin .3s linear}@keyframes expand-left{0%{margin-left:100%}to{margin-left:0}}.yext-chat .animate-expand-left{animation:expand-left .5s}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.yext-chat .animate-fade-in{animation:fade-in .4s}@keyframes heartbeat{0%{transform:scale(1)}80%{transform:scale(1)}90%{transform:scale(1.1)}to{transform:scale(1)}}.yext-chat .animate-heartbeat{animation:heartbeat 2s ease-out infinite}.yext-chat .cursor-pointer{cursor:pointer}.yext-chat .resize-none{resize:none}.yext-chat .flex-row{flex-direction:row}.yext-chat .flex-col{flex-direction:column}.yext-chat .flex-wrap{flex-wrap:wrap}.yext-chat .items-center{align-items:center}.yext-chat .justify-center{justify-content:center}.yext-chat .justify-between{justify-content:space-between}.yext-chat .gap-1{gap:.25rem}.yext-chat .gap-2{gap:.5rem}.yext-chat .gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.yext-chat .gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.yext-chat .gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.yext-chat .gap-y-1{row-gap:.25rem}.yext-chat .overflow-auto{overflow:auto}.yext-chat .overflow-hidden{overflow:hidden}.yext-chat .overflow-x-auto{overflow-x:auto}.yext-chat .truncate{overflow:hidden;text-overflow:ellipsis}.yext-chat .truncate,.yext-chat .whitespace-nowrap{white-space:nowrap}.yext-chat .whitespace-pre-wrap{white-space:pre-wrap}.yext-chat .break-words{overflow-wrap:break-word}.yext-chat .rounded-2xl{border-radius:1rem}.yext-chat .rounded-3xl{border-radius:1.5rem}.yext-chat .rounded-full{border-radius:9999px}.yext-chat .rounded-md{border-radius:.375rem}.yext-chat .rounded-xl{border-radius:.75rem}.yext-chat .rounded-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.yext-chat .rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.yext-chat .rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.yext-chat .border{border-width:1px}.yext-chat .border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.yext-chat .border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.yext-chat .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.yext-chat .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.yext-chat .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.yext-chat .bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.yext-chat .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.yext-chat .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.yext-chat .bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.yext-chat .from-blue-600{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:#2563eb00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.yext-chat .from-slate-50{--tw-gradient-from:#f8fafc var(--tw-gradient-from-position);--tw-gradient-to:#f8fafc00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.yext-chat .to-blue-700{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.yext-chat .to-blue-800{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.yext-chat .to-slate-100{--tw-gradient-to:#f1f5f9 var(--tw-gradient-to-position)}.yext-chat .stroke-2{stroke-width:2}.yext-chat .stroke-\[0\.2\]{stroke-width:.2}.yext-chat .p-1{padding:.25rem}.yext-chat .p-1\.5{padding:.375rem}.yext-chat .p-2{padding:.5rem}.yext-chat .p-2\.5{padding:.625rem}.yext-chat .p-3{padding:.75rem}.yext-chat .p-4{padding:1rem}.yext-chat .px-2{padding-left:.5rem;padding-right:.5rem}.yext-chat .px-4{padding-left:1rem;padding-right:1rem}.yext-chat .py-1{padding-top:.25rem;padding-bottom:.25rem}.yext-chat .py-3{padding-top:.75rem;padding-bottom:.75rem}.yext-chat .pb-4{padding-bottom:1rem}.yext-chat .pl-4{padding-left:1rem}.yext-chat .pr-1{padding-right:.25rem}.yext-chat .pr-12{padding-right:3rem}.yext-chat .pr-3{padding-right:.75rem}.yext-chat .pr-8{padding-right:2rem}.yext-chat .text-center{text-align:center}.yext-chat .text-\[10px\]{font-size:10px}.yext-chat .text-\[12px\]{font-size:12px}.yext-chat .text-\[13px\]{font-size:13px}.yext-chat .text-sm{font-size:.875rem;line-height:1.25rem}.yext-chat .text-xl{font-size:1.25rem;line-height:1.75rem}.yext-chat .font-bold{font-weight:700}.yext-chat .font-medium{font-weight:500}.yext-chat .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.yext-chat .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.yext-chat .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}.yext-chat .text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.yext-chat .text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yext-chat .text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.yext-chat .text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.yext-chat .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.yext-chat .opacity-0{opacity:0}.yext-chat .shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.yext-chat .shadow-2xl,.yext-chat .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yext-chat .shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.yext-chat .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.yext-chat .duration-150,.yext-chat .transition-all{transition-duration:.15s}.yext-chat .duration-200{transition-duration:.2s}.yext-chat .duration-300{transition-duration:.3s}.yext-chat .\@container{container-type:inline-size}.yext-chat .placeholder\:text-\[13px\]::-moz-placeholder{font-size:13px}.yext-chat .placeholder\:text-\[13px\]::placeholder{font-size:13px}.yext-chat .first\:mt-4:first-child{margin-top:1rem}.yext-chat .hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.yext-chat .hover\:-translate-y-2:hover,.yext-chat .hover\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.yext-chat .hover\:cursor-pointer:hover{cursor:pointer}.yext-chat .hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.yext-chat .hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.yext-chat .hover\:underline:hover{text-decoration-line:underline}.yext-chat .active\:scale-90:active{--tw-scale-x:.9;--tw-scale-y:.9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yext-chat .disabled\:bg-slate-200:disabled{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.yext-chat .group:hover .group-hover\:opacity-100,.yext-chat .peer:hover~.peer-hover\:opacity-100{opacity:1}@container (min-width: 32rem){.yext-chat .\@lg\:m-1{margin:.25rem}.yext-chat .\@lg\:ml-0{margin-left:0}.yext-chat .\@lg\:flex-row{flex-direction:row}.yext-chat .\@lg\:flex-row-reverse{flex-direction:row-reverse}.yext-chat .\@lg\:items-center{align-items:center}.yext-chat .\@lg\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}}@container (min-width: 480px){.yext-chat .\@\[480px\]\:bottom-3\.5{bottom:.875rem}.yext-chat .\@\[480px\]\:text-\[13px\]{font-size:13px}.yext-chat .\@\[480px\]\:text-base{font-size:1rem;line-height:1.5rem}.yext-chat .placeholder\:\@\[480px\]\:text-base::-moz-placeholder{font-size:1rem;line-height:1.5rem}.yext-chat .placeholder\:\@\[480px\]\:text-base::placeholder{font-size:1rem;line-height:1.5rem}}@media (max-width:480px){.yext-chat .max-\[480px\]\:bottom-0{bottom:0}.yext-chat .max-\[480px\]\:right-0{right:0}.yext-chat .max-\[480px\]\:h-full{height:100%}.yext-chat .max-\[480px\]\:w-full{width:100%}.yext-chat .max-\[480px\]\:rounded-none{border-radius:0}}@media (min-width:1024px){.yext-chat .lg\:bottom-14{bottom:3.5rem}.yext-chat .lg\:right-10{right:2.5rem}.yext-chat .lg\:h-14{height:3.5rem}.yext-chat .lg\:h-16{height:4rem}.yext-chat .lg\:h-6{height:1.5rem}.yext-chat .lg\:h-\[40px\]{height:40px}.yext-chat .lg\:w-16{width:4rem}.yext-chat .lg\:w-6{width:1.5rem}.yext-chat .lg\:w-96{width:24rem}.yext-chat .lg\:w-\[40px\]{width:40px}.yext-chat .lg\:text-base{font-size:1rem;line-height:1.5rem}}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.8.8";
3
+ var version = "0.9.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.js.map
@@ -39,6 +39,11 @@ export interface ChatInputProps {
39
39
  customCssClasses?: ChatInputCssClasses;
40
40
  /** A callback which is called when user sends a message. */
41
41
  onSend?: (message: string) => void;
42
+ /**
43
+ * A function which is called when a retryable error occurs from
44
+ * Chat API while processing the user's message.
45
+ */
46
+ onRetry?: (e: unknown) => void;
42
47
  }
43
48
  /**
44
49
  * A component that allows user to input message and send to Chat API.
@@ -51,5 +56,5 @@ export interface ChatInputProps {
51
56
  *
52
57
  * @param props - {@link ChatInputProps}
53
58
  */
54
- export declare function ChatInput({ placeholder, stream, inputAutoFocus, handleError, sendButtonIcon, customCssClasses, onSend, }: ChatInputProps): React.JSX.Element;
59
+ export declare function ChatInput({ placeholder, stream, inputAutoFocus, handleError, sendButtonIcon, customCssClasses, onSend, onRetry, }: ChatInputProps): React.JSX.Element;
55
60
  //# sourceMappingURL=ChatInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD;;;;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;;;;OAIG;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;IACvC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAiC,EACjC,MAAc,EACd,cAAsB,EACtB,WAAW,EACX,cAA8B,EAC9B,gBAAgB,EAChB,MAAM,GACP,EAAE,cAAc,qBA6DhB"}
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AASrD;;;;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;;;;OAIG;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;IACvC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAiC,EACjC,MAAc,EACd,cAAsB,EACtB,WAAW,EACX,cAA8B,EAC9B,gBAAgB,EAChB,MAAM,EACN,OAAO,GACR,EAAE,cAAc,qBAyDhB"}
@@ -7,6 +7,7 @@ var useComposedCssClasses = require('../hooks/useComposedCssClasses.js');
7
7
  var TextareaAutosize = require('react-textarea-autosize');
8
8
  var useDefaultHandleApiError = require('../hooks/useDefaultHandleApiError.js');
9
9
  var withStylelessCssClasses = require('../utils/withStylelessCssClasses.js');
10
+ var useSendMessageWithRetries = require('../hooks/useSendMessageWithRetries.js');
10
11
 
11
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
13
 
@@ -29,23 +30,20 @@ const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Input
29
30
  *
30
31
  * @param props - {@link ChatInputProps}
31
32
  */
32
- function ChatInput({ placeholder = "Type a message...", stream = false, inputAutoFocus = false, handleError, sendButtonIcon = React__default.default.createElement(Arrow.ArrowIcon, null), customCssClasses, onSend, }) {
33
- const chat = chatHeadlessReact.useChatActions();
33
+ function ChatInput({ placeholder = "Type a message...", stream = false, inputAutoFocus = false, handleError, sendButtonIcon = React__default.default.createElement(Arrow.ArrowIcon, null), customCssClasses, onSend, onRetry, }) {
34
34
  const [input, setInput] = React.useState("");
35
35
  const canSendMessage = chatHeadlessReact.useChatState((state) => state.conversation.canSendMessage);
36
36
  const defaultHandleApiError = useDefaultHandleApiError.useDefaultHandleApiError();
37
+ const sendMessageWithRetries = useSendMessageWithRetries.useSendMessageWithRetries(stream, 1, onRetry);
37
38
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
38
39
  const sendMessage = React.useCallback(async () => {
39
- const res = stream
40
- ? chat.streamNextMessage(input)
41
- : chat.getNextMessage(input);
42
40
  setInput("");
43
- res
44
- .then(() => {
41
+ sendMessageWithRetries(input)
42
+ .catch(handleError ?? defaultHandleApiError)
43
+ .finally(() => {
45
44
  onSend?.(input);
46
- })
47
- .catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));
48
- }, [chat, input, handleError, defaultHandleApiError, stream, onSend]);
45
+ });
46
+ }, [sendMessageWithRetries, input, handleError, defaultHandleApiError, onSend]);
49
47
  const handleKeyDown = React.useCallback((e) => {
50
48
  if (!e.shiftKey && e.key === "Enter") {
51
49
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.js","sources":["../../../../src/components/ChatInput.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { useChatActions, useChatState } from \"@yext/chat-headless-react\";\nimport { ArrowIcon } from \"../icons/Arrow\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\n\n/**\n * The CSS class interface for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputCssClasses {\n container?: string;\n textArea?: string;\n sendButton?: string;\n}\n\nconst builtInCssClasses: ChatInputCssClasses = withStylelessCssClasses(\n \"Input\",\n {\n container: \"w-full h-fit flex flex-row relative @container\",\n textArea:\n \"w-full p-4 pr-12 border border-slate-300 rounded-3xl resize-none text-[13px] @[480px]:text-base placeholder:text-[13px] placeholder:@[480px]:text-base text-slate-900\",\n sendButton:\n \"rounded-full p-1.5 w-8 h-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-200 hover:bg-blue-800 active:scale-90 transition-all absolute right-4 bottom-2.5 @[480px]:bottom-3.5\",\n }\n);\n\n/**\n * The props for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputProps {\n /**\n * The input's placeholder text when no text has been entered by the user.\n * Defaults to \"Type a message...\".\n */\n placeholder?: string;\n /**\n * Enable streaming behavior by making a request to Chat Streaming API.\n * This feature is experimental, and is subject to change.\n * Defaults to false.\n */\n stream?: boolean;\n /** Enable auto focus for the input box. Defaults to false. */\n inputAutoFocus?: boolean;\n /**\n * A function which is called when an error occurs from Chat API while processing the user's message.\n * By default, the error is logged to the console and an error message is added to state.\n */\n handleError?: (e: unknown) => void;\n /** Custom icon for the send button. */\n sendButtonIcon?: JSX.Element;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: ChatInputCssClasses;\n /** A callback which is called when user sends a message. */\n onSend?: (message: string) => void;\n}\n\n/**\n * A component that allows user to input message and send to Chat API.\n *\n * @remarks\n * Pressing \"Enter\" key will send the current message.\n * To add a newline, press \"Shift\" and \"Enter\".\n *\n * @public\n *\n * @param props - {@link ChatInputProps}\n */\nexport function ChatInput({\n placeholder = \"Type a message...\",\n stream = false,\n inputAutoFocus = false,\n handleError,\n sendButtonIcon = <ArrowIcon />,\n customCssClasses,\n onSend,\n}: ChatInputProps) {\n const chat = useChatActions();\n const [input, setInput] = useState(\"\");\n const canSendMessage = useChatState(\n (state) => state.conversation.canSendMessage\n );\n const defaultHandleApiError = useDefaultHandleApiError();\n\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const sendMessage = useCallback(async () => {\n const res = stream\n ? chat.streamNextMessage(input)\n : chat.getNextMessage(input);\n setInput(\"\");\n res\n .then(() => {\n onSend?.(input);\n })\n .catch((e) => (handleError ? handleError(e) : defaultHandleApiError(e)));\n }, [chat, input, handleError, defaultHandleApiError, stream, onSend]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!e.shiftKey && e.key === \"Enter\") {\n e.preventDefault();\n if (canSendMessage && input.trim().length !== 0) {\n sendMessage();\n }\n }\n },\n [sendMessage, canSendMessage, input]\n );\n\n const onInputChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInput(e.target.value);\n },\n []\n );\n\n return (\n <div className={cssClasses.container}>\n <TextareaAutosize\n autoFocus={inputAutoFocus}\n onKeyDown={handleKeyDown}\n value={input}\n onChange={onInputChange}\n className={cssClasses.textArea}\n placeholder={placeholder}\n />\n <button\n aria-label=\"Send Message\"\n disabled={!canSendMessage || input.trim().length === 0}\n onClick={sendMessage}\n className={cssClasses.sendButton}\n >\n {sendButtonIcon}\n </button>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","React","ArrowIcon","useChatActions","useState","useChatState","useDefaultHandleApiError","useComposedCssClasses","useCallback","TextareaAutosize"],"mappings":"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"}
1
+ {"version":3,"file":"ChatInput.js","sources":["../../../../src/components/ChatInput.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { useChatState } from \"@yext/chat-headless-react\";\nimport { ArrowIcon } from \"../icons/Arrow\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { useDefaultHandleApiError } from \"../hooks/useDefaultHandleApiError\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useSendMessageWithRetries } from \"../hooks/useSendMessageWithRetries\";\n\n/**\n * The CSS class interface for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputCssClasses {\n container?: string;\n textArea?: string;\n sendButton?: string;\n}\n\nconst builtInCssClasses: ChatInputCssClasses = withStylelessCssClasses(\n \"Input\",\n {\n container: \"w-full h-fit flex flex-row relative @container\",\n textArea:\n \"w-full p-4 pr-12 border border-slate-300 rounded-3xl resize-none text-[13px] @[480px]:text-base placeholder:text-[13px] placeholder:@[480px]:text-base text-slate-900\",\n sendButton:\n \"rounded-full p-1.5 w-8 h-8 stroke-2 text-white bg-blue-600 disabled:bg-slate-200 hover:bg-blue-800 active:scale-90 transition-all absolute right-4 bottom-2.5 @[480px]:bottom-3.5\",\n }\n);\n\n/**\n * The props for the {@link ChatInput} component.\n *\n * @public\n */\nexport interface ChatInputProps {\n /**\n * The input's placeholder text when no text has been entered by the user.\n * Defaults to \"Type a message...\".\n */\n placeholder?: string;\n /**\n * Enable streaming behavior by making a request to Chat Streaming API.\n * This feature is experimental, and is subject to change.\n * Defaults to false.\n */\n stream?: boolean;\n /** Enable auto focus for the input box. Defaults to false. */\n inputAutoFocus?: boolean;\n /**\n * A function which is called when an error occurs from Chat API while processing the user's message.\n * By default, the error is logged to the console and an error message is added to state.\n */\n handleError?: (e: unknown) => void;\n /** Custom icon for the send button. */\n sendButtonIcon?: JSX.Element;\n /** CSS classes for customizing the component styling. */\n customCssClasses?: ChatInputCssClasses;\n /** A callback which is called when user sends a message. */\n onSend?: (message: string) => void;\n /**\n * A function which is called when a retryable error occurs from\n * Chat API while processing the user's message.\n */\n onRetry?: (e: unknown) => void\n}\n\n/**\n * A component that allows user to input message and send to Chat API.\n *\n * @remarks\n * Pressing \"Enter\" key will send the current message.\n * To add a newline, press \"Shift\" and \"Enter\".\n *\n * @public\n *\n * @param props - {@link ChatInputProps}\n */\nexport function ChatInput({\n placeholder = \"Type a message...\",\n stream = false,\n inputAutoFocus = false,\n handleError,\n sendButtonIcon = <ArrowIcon />,\n customCssClasses,\n onSend,\n onRetry,\n}: ChatInputProps) {\n const [input, setInput] = useState(\"\");\n const canSendMessage = useChatState(\n (state) => state.conversation.canSendMessage\n );\n const defaultHandleApiError = useDefaultHandleApiError();\n const sendMessageWithRetries = useSendMessageWithRetries(stream, 1, onRetry)\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n\n const sendMessage = useCallback(async () => {\n setInput(\"\");\n sendMessageWithRetries(input)\n .catch(handleError ?? defaultHandleApiError)\n .finally(() => {\n onSend?.(input)\n })\n }, [sendMessageWithRetries, input, handleError, defaultHandleApiError, onSend]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!e.shiftKey && e.key === \"Enter\") {\n e.preventDefault();\n if (canSendMessage && input.trim().length !== 0) {\n sendMessage();\n }\n }\n },\n [sendMessage, canSendMessage, input]\n );\n\n const onInputChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInput(e.target.value);\n },\n []\n );\n\n return (\n <div className={cssClasses.container}>\n <TextareaAutosize\n autoFocus={inputAutoFocus}\n onKeyDown={handleKeyDown}\n value={input}\n onChange={onInputChange}\n className={cssClasses.textArea}\n placeholder={placeholder}\n />\n <button\n aria-label=\"Send Message\"\n disabled={!canSendMessage || input.trim().length === 0}\n onClick={sendMessage}\n className={cssClasses.sendButton}\n >\n {sendButtonIcon}\n </button>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","React","ArrowIcon","useState","useChatState","useDefaultHandleApiError","useSendMessageWithRetries","useComposedCssClasses","useCallback","TextareaAutosize"],"mappings":";;;;;;;;;;;;;;;;AAoBA,MAAM,iBAAiB,GAAwBA,+CAAuB,CACpE,OAAO,EACP;AACE,IAAA,SAAS,EAAE,gDAAgD;AAC3D,IAAA,QAAQ,EACN,uKAAuK;AACzK,IAAA,UAAU,EACR,mLAAmL;AACtL,CAAA,CACF,CAAC;AAuCF;;;;;;;;;;AAUG;AACa,SAAA,SAAS,CAAC,EACxB,WAAW,GAAG,mBAAmB,EACjC,MAAM,GAAG,KAAK,EACd,cAAc,GAAG,KAAK,EACtB,WAAW,EACX,cAAc,GAAGC,sBAAC,CAAA,aAAA,CAAAC,eAAS,EAAG,IAAA,CAAA,EAC9B,gBAAgB,EAChB,MAAM,EACN,OAAO,GACQ,EAAA;IACf,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGC,cAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,IAAA,MAAM,cAAc,GAAGC,8BAAY,CACjC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,cAAc,CAC7C,CAAC;AACF,IAAA,MAAM,qBAAqB,GAAGC,iDAAwB,EAAE,CAAC;IACzD,MAAM,sBAAsB,GAAIC,mDAAyB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IAC7E,MAAM,UAAU,GAAGC,2CAAqB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAE9E,IAAA,MAAM,WAAW,GAAGC,iBAAW,CAAC,YAAW;QACzC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,sBAAsB,CAAC,KAAK,CAAC;AAC1B,aAAA,KAAK,CAAC,WAAW,IAAI,qBAAqB,CAAC;aAC3C,OAAO,CAAC,MAAK;AACZ,YAAA,MAAM,GAAG,KAAK,CAAC,CAAA;AACjB,SAAC,CAAC,CAAA;AACN,KAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhF,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAC/B,CAAC,CAA2C,KAAI;QAC9C,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YACpC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA;AACF,SAAA;KACF,EACD,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CACrC,CAAC;AAEF,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAC/B,CAAC,CAAyC,KAAI;AAC5C,QAAA,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC1B,EACD,EAAE,CACH,CAAC;AAEF,IAAA,QACEP,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,SAAS,EAAA;QAClCA,sBAAC,CAAA,aAAA,CAAAQ,iCAAgB,EACf,EAAA,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,UAAU,CAAC,QAAQ,EAC9B,WAAW,EAAE,WAAW,EACxB,CAAA;AACF,QAAAR,sBAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,YAAA,EACa,cAAc,EACzB,QAAQ,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACtD,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,UAAU,CAAC,UAAU,EAE/B,EAAA,cAAc,CACR,CACL,EACN;AACJ;;;;"}
@@ -38,6 +38,11 @@ export interface ChatPanelProps extends Omit<MessageBubbleProps, "customCssClass
38
38
  messageSuggestions?: string[];
39
39
  /** A callback which is called when user clicks a link. */
40
40
  onLinkClick?: (href?: string) => void;
41
+ /**
42
+ * Text to display when retrying.
43
+ * Defaults to "Error occurred. Retrying".
44
+ */
45
+ retryText?: string;
41
46
  }
42
47
  /**
43
48
  * A component that renders a full panel for chat bot interactions. This includes
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7E,OAAO,EACL,2BAA2B,EAE5B,MAAM,sBAAsB,CAAC;AAG9B;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,wBAAwB,CAAC,EAAE,2BAA2B,CAAC;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD;;;;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,SAAS,CAAC;IACnB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBA+G9C"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,SAAS,EAMV,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAa,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7E,OAAO,EACL,2BAA2B,EAE5B,MAAM,sBAAsB,CAAC;AAG9B;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,wBAAwB,CAAC,EAAE,2BAA2B,CAAC;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD;;;;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,SAAS,CAAC;IACnB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAwI9C"}
@@ -36,13 +36,22 @@ const builtInCssClasses = withStylelessCssClasses.withStylelessCssClasses("Panel
36
36
  * @param props - {@link ChatPanelProps}
37
37
  */
38
38
  function ChatPanel(props) {
39
- const { header, footer, customCssClasses, stream, handleError, messageSuggestions, onLinkClick, } = props;
39
+ const { header, footer, customCssClasses, stream, handleError, messageSuggestions, onLinkClick, onSend: onSendProp, onRetry: onRetryProp, retryText = "Error occurred. Retrying", } = props;
40
40
  const messages = chatHeadlessReact.useChatState((state) => state.conversation.messages);
41
41
  const loading = chatHeadlessReact.useChatState((state) => state.conversation.isLoading);
42
42
  const suggestedReplies = chatHeadlessReact.useChatState((state) => state.conversation.notes?.suggestedReplies);
43
43
  const cssClasses = useComposedCssClasses.useComposedCssClasses(builtInCssClasses, customCssClasses);
44
44
  const reportAnalyticsEvent = useReportAnalyticsEvent.useReportAnalyticsEvent();
45
45
  useFetchInitialMessage.useFetchInitialMessage(handleError, stream);
46
+ const [retry, setRetry] = React.useState(false);
47
+ const onSend = React.useCallback((message) => {
48
+ onSendProp?.(message);
49
+ setRetry(false);
50
+ }, [onSendProp]);
51
+ const onRetry = React.useCallback((e) => {
52
+ onRetryProp?.(e);
53
+ setRetry(true);
54
+ }, [onRetryProp]);
46
55
  React.useEffect(() => {
47
56
  reportAnalyticsEvent({
48
57
  action: "CHAT_IMPRESSION",
@@ -90,10 +99,12 @@ function ChatPanel(props) {
90
99
  React__default.default.createElement("div", { ref: messagesContainer, className: cssClasses.messagesContainer },
91
100
  messages.map((message, index) => (React__default.default.createElement("div", { key: index, ref: setMessagesRef(index) },
92
101
  React__default.default.createElement(MessageBubble.MessageBubble, { ...props, customCssClasses: cssClasses.messageBubbleCssClasses, message: message, onLinkClick: onLinkClick })))),
93
- loading && React__default.default.createElement(LoadingDots.LoadingDots, null))),
102
+ loading && React__default.default.createElement("div", { className: "flex" },
103
+ React__default.default.createElement(LoadingDots.LoadingDots, null),
104
+ retry && React__default.default.createElement("p", { className: "text-slate-500 text-[13px] font-bold" }, retryText)))),
94
105
  React__default.default.createElement("div", { className: cssClasses.inputContainer },
95
- suggestions && (React__default.default.createElement(MessageSuggestions.MessageSuggestions, { handleError: handleError, suggestions: suggestions, customCssClasses: cssClasses.messageSuggestionClasses })),
96
- React__default.default.createElement(ChatInput.ChatInput, { ...props, customCssClasses: cssClasses.inputCssClasses })),
106
+ suggestions && (React__default.default.createElement(MessageSuggestions.MessageSuggestions, { stream: stream, onSend: onSend, onRetry: onRetry, handleError: handleError, suggestions: suggestions, customCssClasses: cssClasses.messageSuggestionClasses })),
107
+ React__default.default.createElement(ChatInput.ChatInput, { ...props, onSend: onSend, onRetry: onRetry, customCssClasses: cssClasses.inputCssClasses })),
97
108
  footer && (React__default.default.createElement(Markdown.Markdown, { content: footer, linkClickEvent: "WEBSITE", onLinkClick: onLinkClick, customCssClasses: footerCssClasses })))));
98
109
  }
99
110
 
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.js","sources":["../../../../src/components/ChatPanel.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { useChatState } from \"@yext/chat-headless-react\";\nimport {\n MessageBubble,\n MessageBubbleCssClasses,\n MessageBubbleProps,\n} from \"./MessageBubble\";\nimport { ChatInput, ChatInputCssClasses, ChatInputProps } from \"./ChatInput\";\nimport { LoadingDots } from \"./LoadingDots\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\nimport { useFetchInitialMessage } from \"../hooks/useFetchInitialMessage\";\nimport {\n MessageSuggestionCssClasses,\n MessageSuggestions,\n} from \"./MessageSuggestions\";\nimport { Markdown, MarkdownCssClasses } from \"./Markdown\";\n\n/**\n * The CSS class interface for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelCssClasses {\n container?: string;\n messagesContainer?: string;\n messagesScrollContainer?: string;\n inputContainer?: string;\n inputCssClasses?: ChatInputCssClasses;\n messageBubbleCssClasses?: MessageBubbleCssClasses;\n messageSuggestionClasses?: MessageSuggestionCssClasses;\n footer?: string;\n}\n\nconst builtInCssClasses: ChatPanelCssClasses = withStylelessCssClasses(\n \"Panel\",\n {\n container: \"h-full w-full flex flex-col relative shadow-2xl bg-white\",\n messagesScrollContainer: \"flex flex-col mt-auto overflow-hidden\",\n messagesContainer: \"flex flex-col gap-y-1 px-4 overflow-auto\",\n inputContainer: \"w-full p-4\",\n messageBubbleCssClasses: {\n topContainer: \"first:mt-4\",\n },\n footer: \"text-center text-slate-400 rounded-b-3xl px-4 pb-4 text-[12px]\",\n }\n);\n\n/**\n * The props for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelProps\n extends Omit<MessageBubbleProps, \"customCssClasses\" | \"message\">,\n Omit<ChatInputProps, \"customCssClasses\"> {\n /** A header to render at the top of the panel. */\n header?: ReactNode;\n /** A footer markdown string to render at the bottom of the panel. */\n footer?: string;\n /**\n * CSS classes for customizing the component styling.\n */\n customCssClasses?: ChatPanelCssClasses;\n /**\n * A set of pre-written initial messages that the user\n * can click on instead of typing their own.\n */\n messageSuggestions?: string[];\n /** A callback which is called when user clicks a link. */\n onLinkClick?: (href?: string) => void;\n}\n\n/**\n * A component that renders a full panel for chat bot interactions. This includes\n * the message bubbles for the conversation, input box with send button, and header\n * (if provided).\n *\n * @public\n *\n * @param props - {@link ChatPanelProps}\n */\nexport function ChatPanel(props: ChatPanelProps) {\n const {\n header,\n footer,\n customCssClasses,\n stream,\n handleError,\n messageSuggestions,\n onLinkClick,\n } = props;\n const messages = useChatState((state) => state.conversation.messages);\n const loading = useChatState((state) => state.conversation.isLoading);\n const suggestedReplies = useChatState(\n (state) => state.conversation.notes?.suggestedReplies\n );\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n useFetchInitialMessage(handleError, stream);\n\n useEffect(() => {\n reportAnalyticsEvent({\n action: \"CHAT_IMPRESSION\",\n });\n }, [reportAnalyticsEvent]);\n\n const suggestions = useMemo(() => {\n if (\n messages.length === 0 ||\n (messages.length === 1 && messages[0].source === \"BOT\")\n ) {\n return messageSuggestions;\n }\n return suggestedReplies;\n }, [messages, suggestedReplies, messageSuggestions]);\n\n const messagesRef = useRef<Array<HTMLDivElement | null>>([]);\n const messagesContainer = useRef<HTMLDivElement>(null);\n\n // Handle scrolling when messages change\n useEffect(() => {\n let scrollTop = 0;\n messagesRef.current = messagesRef.current.slice(0, messages.length);\n\n // Sums up scroll heights of all messages except the last one\n if (messagesRef?.current.length > 1) {\n scrollTop = messagesRef.current\n .slice(0, -1)\n .map((elem, _) => elem?.scrollHeight ?? 0)\n .reduce((total, height) => total + height);\n }\n\n // Scroll to the top of the last message\n messagesContainer.current?.scroll({\n top: scrollTop,\n behavior: \"smooth\",\n });\n }, [messages]);\n\n const setMessagesRef = useCallback((index) => {\n if (!messagesRef?.current) return null;\n return (message) => (messagesRef.current[index] = message);\n }, []);\n\n const footerCssClasses: MarkdownCssClasses = useMemo(\n () => ({\n container: cssClasses.footer,\n link: \"cursor-pointer hover:underline text-blue-600\",\n }),\n [cssClasses]\n );\n\n return (\n <div className=\"yext-chat w-full h-full\">\n <div className={cssClasses.container}>\n {header}\n <div className={cssClasses.messagesScrollContainer}>\n <div ref={messagesContainer} className={cssClasses.messagesContainer}>\n {messages.map((message, index) => (\n <div key={index} ref={setMessagesRef(index)}>\n <MessageBubble\n {...props}\n customCssClasses={cssClasses.messageBubbleCssClasses}\n message={message}\n onLinkClick={onLinkClick}\n />\n </div>\n ))}\n {loading && <LoadingDots />}\n </div>\n </div>\n <div className={cssClasses.inputContainer}>\n {suggestions && (\n <MessageSuggestions\n handleError={handleError}\n suggestions={suggestions}\n customCssClasses={cssClasses.messageSuggestionClasses}\n />\n )}\n <ChatInput {...props} customCssClasses={cssClasses.inputCssClasses} />\n </div>\n {footer && (\n <Markdown\n content={footer}\n linkClickEvent=\"WEBSITE\"\n onLinkClick={onLinkClick}\n customCssClasses={footerCssClasses}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatState","useComposedCssClasses","useReportAnalyticsEvent","useFetchInitialMessage","useEffect","useMemo","useRef","useCallback","React","MessageBubble","LoadingDots","MessageSuggestions","ChatInput","Markdown"],"mappings":"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"}
1
+ {"version":3,"file":"ChatPanel.js","sources":["../../../../src/components/ChatPanel.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useChatState } from \"@yext/chat-headless-react\";\nimport {\n MessageBubble,\n MessageBubbleCssClasses,\n MessageBubbleProps,\n} from \"./MessageBubble\";\nimport { ChatInput, ChatInputCssClasses, ChatInputProps } from \"./ChatInput\";\nimport { LoadingDots } from \"./LoadingDots\";\nimport { useComposedCssClasses } from \"../hooks\";\nimport { withStylelessCssClasses } from \"../utils/withStylelessCssClasses\";\nimport { useReportAnalyticsEvent } from \"../hooks/useReportAnalyticsEvent\";\nimport { useFetchInitialMessage } from \"../hooks/useFetchInitialMessage\";\nimport {\n MessageSuggestionCssClasses,\n MessageSuggestions,\n} from \"./MessageSuggestions\";\nimport { Markdown, MarkdownCssClasses } from \"./Markdown\";\n\n/**\n * The CSS class interface for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelCssClasses {\n container?: string;\n messagesContainer?: string;\n messagesScrollContainer?: string;\n inputContainer?: string;\n inputCssClasses?: ChatInputCssClasses;\n messageBubbleCssClasses?: MessageBubbleCssClasses;\n messageSuggestionClasses?: MessageSuggestionCssClasses;\n footer?: string;\n}\n\nconst builtInCssClasses: ChatPanelCssClasses = withStylelessCssClasses(\n \"Panel\",\n {\n container: \"h-full w-full flex flex-col relative shadow-2xl bg-white\",\n messagesScrollContainer: \"flex flex-col mt-auto overflow-hidden\",\n messagesContainer: \"flex flex-col gap-y-1 px-4 overflow-auto\",\n inputContainer: \"w-full p-4\",\n messageBubbleCssClasses: {\n topContainer: \"first:mt-4\",\n },\n footer: \"text-center text-slate-400 rounded-b-3xl px-4 pb-4 text-[12px]\",\n }\n);\n\n/**\n * The props for the {@link ChatPanel} component.\n *\n * @public\n */\nexport interface ChatPanelProps\n extends Omit<MessageBubbleProps, \"customCssClasses\" | \"message\">,\n Omit<ChatInputProps, \"customCssClasses\"> {\n /** A header to render at the top of the panel. */\n header?: ReactNode;\n /** A footer markdown string to render at the bottom of the panel. */\n footer?: string;\n /**\n * CSS classes for customizing the component styling.\n */\n customCssClasses?: ChatPanelCssClasses;\n /**\n * A set of pre-written initial messages that the user\n * can click on instead of typing their own.\n */\n messageSuggestions?: string[];\n /** A callback which is called when user clicks a link. */\n onLinkClick?: (href?: string) => void;\n /**\n * Text to display when retrying.\n * Defaults to \"Error occurred. Retrying\".\n */\n retryText?: string;\n}\n\n/**\n * A component that renders a full panel for chat bot interactions. This includes\n * the message bubbles for the conversation, input box with send button, and header\n * (if provided).\n *\n * @public\n *\n * @param props - {@link ChatPanelProps}\n */\nexport function ChatPanel(props: ChatPanelProps) {\n const {\n header,\n footer,\n customCssClasses,\n stream,\n handleError,\n messageSuggestions,\n onLinkClick,\n onSend:onSendProp,\n onRetry:onRetryProp,\n retryText = \"Error occurred. Retrying\",\n } = props;\n const messages = useChatState((state) => state.conversation.messages);\n const loading = useChatState((state) => state.conversation.isLoading);\n const suggestedReplies = useChatState(\n (state) => state.conversation.notes?.suggestedReplies\n );\n const cssClasses = useComposedCssClasses(builtInCssClasses, customCssClasses);\n const reportAnalyticsEvent = useReportAnalyticsEvent();\n useFetchInitialMessage(handleError, stream);\n\n const [retry, setRetry] = useState(false);\n const onSend = useCallback((message: string) => {\n onSendProp?.(message);\n setRetry(false)\n }, [onSendProp])\n\n const onRetry = useCallback((e: unknown) => {\n onRetryProp?.(e);\n setRetry(true)\n }, [onRetryProp])\n\n useEffect(() => {\n reportAnalyticsEvent({\n action: \"CHAT_IMPRESSION\",\n });\n }, [reportAnalyticsEvent]);\n\n const suggestions = useMemo(() => {\n if (\n messages.length === 0 ||\n (messages.length === 1 && messages[0].source === \"BOT\")\n ) {\n return messageSuggestions;\n }\n return suggestedReplies;\n }, [messages, suggestedReplies, messageSuggestions]);\n\n const messagesRef = useRef<Array<HTMLDivElement | null>>([]);\n const messagesContainer = useRef<HTMLDivElement>(null);\n\n // Handle scrolling when messages change\n useEffect(() => {\n let scrollTop = 0;\n messagesRef.current = messagesRef.current.slice(0, messages.length);\n\n // Sums up scroll heights of all messages except the last one\n if (messagesRef?.current.length > 1) {\n scrollTop = messagesRef.current\n .slice(0, -1)\n .map((elem, _) => elem?.scrollHeight ?? 0)\n .reduce((total, height) => total + height);\n }\n\n // Scroll to the top of the last message\n messagesContainer.current?.scroll({\n top: scrollTop,\n behavior: \"smooth\",\n });\n }, [messages]);\n\n const setMessagesRef = useCallback((index) => {\n if (!messagesRef?.current) return null;\n return (message) => (messagesRef.current[index] = message);\n }, []);\n\n const footerCssClasses: MarkdownCssClasses = useMemo(\n () => ({\n container: cssClasses.footer,\n link: \"cursor-pointer hover:underline text-blue-600\",\n }),\n [cssClasses]\n );\n\n return (\n <div className=\"yext-chat w-full h-full\">\n <div className={cssClasses.container}>\n {header}\n <div className={cssClasses.messagesScrollContainer}>\n <div ref={messagesContainer} className={cssClasses.messagesContainer}>\n {messages.map((message, index) => (\n <div key={index} ref={setMessagesRef(index)}>\n <MessageBubble\n {...props}\n customCssClasses={cssClasses.messageBubbleCssClasses}\n message={message}\n onLinkClick={onLinkClick}\n />\n </div>\n ))}\n {loading && <div className=\"flex\">\n <LoadingDots />\n {retry && <p className=\"text-slate-500 text-[13px] font-bold\">{retryText}</p>} \n </div>}\n </div>\n </div>\n <div className={cssClasses.inputContainer}>\n {suggestions && (\n <MessageSuggestions\n stream={stream}\n onSend={onSend}\n onRetry={onRetry}\n handleError={handleError}\n suggestions={suggestions}\n customCssClasses={cssClasses.messageSuggestionClasses}\n />\n )}\n <ChatInput\n {...props}\n onSend={onSend}\n onRetry={onRetry}\n customCssClasses={cssClasses.inputCssClasses}\n />\n </div>\n {footer && (\n <Markdown\n content={footer}\n linkClickEvent=\"WEBSITE\"\n onLinkClick={onLinkClick}\n customCssClasses={footerCssClasses}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["withStylelessCssClasses","useChatState","useComposedCssClasses","useReportAnalyticsEvent","useFetchInitialMessage","useState","useCallback","useEffect","useMemo","useRef","React","MessageBubble","LoadingDots","MessageSuggestions","ChatInput","Markdown"],"mappings":"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"}
@@ -20,6 +20,12 @@ export interface MessageSuggestionsProps {
20
20
  handleError?: (e: unknown) => void;
21
21
  /** CSS classes for customizing the component styling. */
22
22
  customCssClasses?: MessageSuggestionCssClasses;
23
+ /** {@inheritdoc ChatInputProps.stream} */
24
+ stream?: boolean;
25
+ /** {@inheritdoc ChatInputProps.onSend} */
26
+ onSend?: (message: string) => void;
27
+ /** {@inheritdoc ChatInputProps.onRetry} */
28
+ onRetry?: (e: unknown) => void;
23
29
  }
24
30
  /**
25
31
  * A component that displays a list of suggested messages
@@ -1 +1 @@
1
- {"version":3,"file":"MessageSuggestions.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAU3C;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAChD;AAWD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqChE,CAAC"}
1
+ {"version":3,"file":"MessageSuggestions.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAW3C;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC/B;AAWD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4ChE,CAAC"}