@burdenoff/website-sdk 2026.922.3 → 2026.922.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/explore.d.mts +70 -2
- package/dist/components/explore.d.ts +70 -2
- package/dist/components/explore.js +492 -8
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +490 -10
- package/dist/components/explore.mjs.map +1 -1
- package/dist/{explore-types-CPF1QoMn.d.mts → explore-types-DvQPiL1t.d.mts} +58 -2
- package/dist/{explore-types-CPF1QoMn.d.ts → explore-types-DvQPiL1t.d.ts} +58 -2
- package/dist/hooks/index.d.mts +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +61 -8
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +61 -8
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +36 -2
- package/dist/index.d.ts +36 -2
- package/dist/index.js +489 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +490 -10
- package/dist/index.mjs.map +1 -1
- package/dist/{use-explore-chat--CxNtkrJ.d.ts → use-explore-chat-CNEdKBc1.d.ts} +1 -1
- package/dist/{use-explore-chat-C6Y8JQMj.d.mts → use-explore-chat-Dgm-jf96.d.mts} +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { createContext, useMemo, useContext, useState, useCallback, useLayoutEffect, useRef, useEffect, useId, version } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
|
-
import { Instagram, Youtube, Facebook, Github, Linkedin, Twitter, Mail, Phone, MapPin, Clock, Send, CheckCircle, Upload, Globe, ChevronDown, Search, Rocket, ArrowRight, Download, ImageIcon, ChevronRight, Maximize2, Check, ArrowLeft, Sparkles, RotateCcw, Link2, History, Trash2, Paperclip, X, Mic, Square, ArrowUp, Info, ChevronLeft, BookOpenText, Layers, TriangleAlert, FileText, ExternalLink, ThumbsUp, ThumbsDown } from 'lucide-react';
|
|
4
|
+
import { Instagram, Youtube, Facebook, Github, Linkedin, Twitter, Mail, Phone, MapPin, Clock, Send, CheckCircle, Upload, Globe, ChevronDown, Search, Rocket, ArrowRight, Download, ImageIcon, ChevronRight, Maximize2, Check, ArrowLeft, Sparkles, RotateCcw, Link2, History, Trash2, Paperclip, X, Mic, Square, ArrowUp, Info, ChevronLeft, BookOpenText, Layers, TriangleAlert, FileText, ExternalLink, Copy, ThumbsUp, ThumbsDown } from 'lucide-react';
|
|
5
5
|
import ReCAPTCHA4 from 'react-google-recaptcha';
|
|
6
6
|
import { toast } from 'sonner';
|
|
7
7
|
import { Helmet } from 'react-helmet-async';
|
|
@@ -5974,6 +5974,20 @@ var EN = {
|
|
|
5974
5974
|
nextSuggestion: "Next suggestion",
|
|
5975
5975
|
conceptIllustration: "Concept illustration",
|
|
5976
5976
|
opensInNewTab: "opens in a new tab",
|
|
5977
|
+
conceptStripTitle: "Or start from a concept",
|
|
5978
|
+
conceptStripLabel: "Concepts you can ask about",
|
|
5979
|
+
conceptAsk: "Ask about {title} in {product}",
|
|
5980
|
+
conceptAskQuestion: "How does {title} work in {product}?",
|
|
5981
|
+
copyAnswer: "Copy answer",
|
|
5982
|
+
copyFailed: "Couldn't copy",
|
|
5983
|
+
groundedIn: "What this answer is based on",
|
|
5984
|
+
sourceCountOne: "1 source",
|
|
5985
|
+
sourceCountMany: "{count} sources",
|
|
5986
|
+
sourceKindConcept: "Concept",
|
|
5987
|
+
sourceKindDocs: "Documentation",
|
|
5988
|
+
sourceKindPricing: "Pricing",
|
|
5989
|
+
sourceKindUseCase: "Use case",
|
|
5990
|
+
sourceKindPage: "Product page",
|
|
5977
5991
|
seoTitle: "Describe a problem, get an answer",
|
|
5978
5992
|
seoDescription: "Describe the problem you're facing in your own words and get an answer drawn from our product documentation, with links to the exact pages it came from.",
|
|
5979
5993
|
seoDescriptionProduct: "Describe the problem you're facing in your own words and get an answer drawn from {product}'s documentation \u2014 and every other product we build \u2014 with links to the exact pages it came from.",
|
|
@@ -6042,6 +6056,20 @@ var ZH = {
|
|
|
6042
6056
|
nextSuggestion: "\u4E0B\u4E00\u4E2A\u5EFA\u8BAE",
|
|
6043
6057
|
conceptIllustration: "\u6982\u5FF5\u793A\u610F\u56FE",
|
|
6044
6058
|
opensInNewTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00",
|
|
6059
|
+
conceptStripTitle: "\u6216\u8005\u4ECE\u4E00\u4E2A\u6982\u5FF5\u5F00\u59CB",
|
|
6060
|
+
conceptStripLabel: "\u4F60\u53EF\u4EE5\u8BE2\u95EE\u7684\u6982\u5FF5",
|
|
6061
|
+
conceptAsk: "\u8BE2\u95EE {product} \u4E2D\u7684 {title}",
|
|
6062
|
+
conceptAskQuestion: "{product} \u7684 {title} \u662F\u600E\u4E48\u8FD0\u4F5C\u7684\uFF1F",
|
|
6063
|
+
copyAnswer: "\u590D\u5236\u56DE\u7B54",
|
|
6064
|
+
copyFailed: "\u590D\u5236\u5931\u8D25",
|
|
6065
|
+
groundedIn: "\u8FD9\u4E2A\u56DE\u7B54\u7684\u4F9D\u636E",
|
|
6066
|
+
sourceCountOne: "1 \u4E2A\u6765\u6E90",
|
|
6067
|
+
sourceCountMany: "{count} \u4E2A\u6765\u6E90",
|
|
6068
|
+
sourceKindConcept: "\u6982\u5FF5",
|
|
6069
|
+
sourceKindDocs: "\u6587\u6863",
|
|
6070
|
+
sourceKindPricing: "\u4EF7\u683C",
|
|
6071
|
+
sourceKindUseCase: "\u5E94\u7528\u573A\u666F",
|
|
6072
|
+
sourceKindPage: "\u4EA7\u54C1\u9875\u9762",
|
|
6045
6073
|
seoTitle: "\u63CF\u8FF0\u95EE\u9898\uFF0C\u83B7\u5F97\u7B54\u6848",
|
|
6046
6074
|
seoDescription: "\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u63CF\u8FF0\u9047\u5230\u7684\u95EE\u9898\uFF0C\u5373\u53EF\u83B7\u5F97\u6765\u81EA\u6211\u4EEC\u4EA7\u54C1\u6587\u6863\u7684\u56DE\u7B54\uFF0C\u5E76\u9644\u4E0A\u7B54\u6848\u51FA\u5904\u7684\u9875\u9762\u94FE\u63A5\u3002",
|
|
6047
6075
|
seoDescriptionProduct: "\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u63CF\u8FF0\u9047\u5230\u7684\u95EE\u9898\uFF0C\u5373\u53EF\u83B7\u5F97\u6765\u81EA {product} \u53CA\u6211\u4EEC\u5176\u4ED6\u4EA7\u54C1\u6587\u6863\u7684\u56DE\u7B54\uFF0C\u5E76\u9644\u4E0A\u7B54\u6848\u51FA\u5904\u7684\u9875\u9762\u94FE\u63A5\u3002",
|
|
@@ -6106,6 +6134,20 @@ var HI = {
|
|
|
6106
6134
|
nextSuggestion: "\u0905\u0917\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
|
|
6107
6135
|
conceptIllustration: "\u0905\u0935\u0927\u093E\u0930\u0923\u093E \u091A\u093F\u0924\u094D\u0930\u0923",
|
|
6108
6136
|
opensInNewTab: "\u0928\u090F \u091F\u0948\u092C \u092E\u0947\u0902 \u0916\u0941\u0932\u0924\u093E \u0939\u0948",
|
|
6137
|
+
conceptStripTitle: "\u092F\u093E \u0915\u093F\u0938\u0940 \u0905\u0935\u0927\u093E\u0930\u0923\u093E \u0938\u0947 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902",
|
|
6138
|
+
conceptStripLabel: "\u091C\u093F\u0928 \u0905\u0935\u0927\u093E\u0930\u0923\u093E\u0913\u0902 \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0906\u092A \u092A\u0942\u091B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902",
|
|
6139
|
+
conceptAsk: "{product} \u092E\u0947\u0902 {title} \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u092A\u0942\u091B\u0947\u0902",
|
|
6140
|
+
conceptAskQuestion: "{product} \u092E\u0947\u0902 {title} \u0915\u0948\u0938\u0947 \u0915\u093E\u092E \u0915\u0930\u0924\u093E \u0939\u0948?",
|
|
6141
|
+
copyAnswer: "\u0909\u0924\u094D\u0924\u0930 \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902",
|
|
6142
|
+
copyFailed: "\u0915\u0949\u092A\u0940 \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u093E",
|
|
6143
|
+
groundedIn: "\u092F\u0939 \u0909\u0924\u094D\u0924\u0930 \u0915\u093F\u0938 \u092A\u0930 \u0906\u0927\u093E\u0930\u093F\u0924 \u0939\u0948",
|
|
6144
|
+
sourceCountOne: "1 \u0938\u094D\u0930\u094B\u0924",
|
|
6145
|
+
sourceCountMany: "{count} \u0938\u094D\u0930\u094B\u0924",
|
|
6146
|
+
sourceKindConcept: "\u0905\u0935\u0927\u093E\u0930\u0923\u093E",
|
|
6147
|
+
sourceKindDocs: "\u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C",
|
|
6148
|
+
sourceKindPricing: "\u092E\u0942\u0932\u094D\u092F",
|
|
6149
|
+
sourceKindUseCase: "\u0909\u092A\u092F\u094B\u0917 \u0915\u093E \u0909\u0926\u093E\u0939\u0930\u0923",
|
|
6150
|
+
sourceKindPage: "\u0909\u0924\u094D\u092A\u093E\u0926 \u092A\u0947\u091C",
|
|
6109
6151
|
seoTitle: "\u0938\u092E\u0938\u094D\u092F\u093E \u092C\u0924\u093E\u090F\u0902, \u091C\u0935\u093E\u092C \u092A\u093E\u090F\u0902",
|
|
6110
6152
|
seoDescription: "\u0905\u092A\u0928\u0940 \u0938\u092E\u0938\u094D\u092F\u093E \u0905\u092A\u0928\u0947 \u0936\u092C\u094D\u0926\u094B\u0902 \u092E\u0947\u0902 \u092C\u0924\u093E\u090F\u0902 \u0914\u0930 \u0939\u092E\u093E\u0930\u0947 \u0909\u0924\u094D\u092A\u093E\u0926 \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u0938\u0947 \u0932\u093F\u092F\u093E \u0917\u092F\u093E \u091C\u0935\u093E\u092C \u092A\u093E\u090F\u0902, \u0938\u093E\u0925 \u092E\u0947\u0902 \u0909\u0928\u094D\u0939\u0940\u0902 \u092A\u0928\u094D\u0928\u094B\u0902 \u0915\u0947 \u0932\u093F\u0902\u0915 \u091C\u0939\u093E\u0901 \u0938\u0947 \u0935\u0939 \u0906\u092F\u093E \u0939\u0948\u0964",
|
|
6111
6153
|
seoDescriptionProduct: "\u0905\u092A\u0928\u0940 \u0938\u092E\u0938\u094D\u092F\u093E \u0905\u092A\u0928\u0947 \u0936\u092C\u094D\u0926\u094B\u0902 \u092E\u0947\u0902 \u092C\u0924\u093E\u090F\u0902 \u0914\u0930 {product} \u0924\u0925\u093E \u0939\u092E\u093E\u0930\u0947 \u092C\u093E\u0915\u0940 \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u0915\u0947 \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u0938\u0947 \u0932\u093F\u092F\u093E \u0917\u092F\u093E \u091C\u0935\u093E\u092C \u092A\u093E\u090F\u0902, \u0938\u093E\u0925 \u092E\u0947\u0902 \u0909\u0928\u094D\u0939\u0940\u0902 \u092A\u0928\u094D\u0928\u094B\u0902 \u0915\u0947 \u0932\u093F\u0902\u0915 \u091C\u0939\u093E\u0901 \u0938\u0947 \u0935\u0939 \u0906\u092F\u093E \u0939\u0948\u0964",
|
|
@@ -6174,6 +6216,20 @@ var ES = {
|
|
|
6174
6216
|
nextSuggestion: "Sugerencia siguiente",
|
|
6175
6217
|
conceptIllustration: "Ilustraci\xF3n del concepto",
|
|
6176
6218
|
opensInNewTab: "se abre en una pesta\xF1a nueva",
|
|
6219
|
+
conceptStripTitle: "O empieza por un concepto",
|
|
6220
|
+
conceptStripLabel: "Conceptos sobre los que puedes preguntar",
|
|
6221
|
+
conceptAsk: "Preguntar por {title} en {product}",
|
|
6222
|
+
conceptAskQuestion: "\xBFC\xF3mo funciona {title} en {product}?",
|
|
6223
|
+
copyAnswer: "Copiar respuesta",
|
|
6224
|
+
copyFailed: "No se pudo copiar",
|
|
6225
|
+
groundedIn: "En qu\xE9 se basa esta respuesta",
|
|
6226
|
+
sourceCountOne: "1 fuente",
|
|
6227
|
+
sourceCountMany: "{count} fuentes",
|
|
6228
|
+
sourceKindConcept: "Concepto",
|
|
6229
|
+
sourceKindDocs: "Documentaci\xF3n",
|
|
6230
|
+
sourceKindPricing: "Precios",
|
|
6231
|
+
sourceKindUseCase: "Caso de uso",
|
|
6232
|
+
sourceKindPage: "P\xE1gina de producto",
|
|
6177
6233
|
seoTitle: "Describe un problema y obt\xE9n una respuesta",
|
|
6178
6234
|
seoDescription: "Describe con tus palabras el problema que tienes y recibe una respuesta extra\xEDda de la documentaci\xF3n de nuestros productos, con enlaces a las p\xE1ginas exactas de las que procede.",
|
|
6179
6235
|
seoDescriptionProduct: "Describe con tus palabras el problema que tienes y recibe una respuesta extra\xEDda de la documentaci\xF3n de {product} y del resto de nuestros productos, con enlaces a las p\xE1ginas exactas de las que procede.",
|
|
@@ -6242,6 +6298,20 @@ var AR = {
|
|
|
6242
6298
|
nextSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u062A\u0627\u0644\u064A",
|
|
6243
6299
|
conceptIllustration: "\u0631\u0633\u0645 \u062A\u0648\u0636\u064A\u062D\u064A \u0644\u0644\u0645\u0641\u0647\u0648\u0645",
|
|
6244
6300
|
opensInNewTab: "\u064A\u064F\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629",
|
|
6301
|
+
conceptStripTitle: "\u0623\u0648 \u0627\u0628\u062F\u0623 \u0645\u0646 \u0645\u0641\u0647\u0648\u0645",
|
|
6302
|
+
conceptStripLabel: "\u0645\u0641\u0627\u0647\u064A\u0645 \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0633\u0624\u0627\u0644 \u0639\u0646\u0647\u0627",
|
|
6303
|
+
conceptAsk: "\u0627\u0633\u0623\u0644 \u0639\u0646 {title} \u0641\u064A {product}",
|
|
6304
|
+
conceptAskQuestion: "\u0643\u064A\u0641 \u064A\u0639\u0645\u0644 {title} \u0641\u064A {product}\u061F",
|
|
6305
|
+
copyAnswer: "\u0646\u0633\u062E \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
6306
|
+
copyFailed: "\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u0646\u0633\u062E",
|
|
6307
|
+
groundedIn: "\u0639\u0644\u0649 \u0645\u0627\u0630\u0627 \u062A\u0633\u062A\u0646\u062F \u0647\u0630\u0647 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
6308
|
+
sourceCountOne: "\u0645\u0635\u062F\u0631 \u0648\u0627\u062D\u062F",
|
|
6309
|
+
sourceCountMany: "{count} \u0645\u0635\u0627\u062F\u0631",
|
|
6310
|
+
sourceKindConcept: "\u0645\u0641\u0647\u0648\u0645",
|
|
6311
|
+
sourceKindDocs: "\u0627\u0644\u062A\u0648\u062B\u064A\u0642",
|
|
6312
|
+
sourceKindPricing: "\u0627\u0644\u0623\u0633\u0639\u0627\u0631",
|
|
6313
|
+
sourceKindUseCase: "\u062D\u0627\u0644\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645",
|
|
6314
|
+
sourceKindPage: "\u0635\u0641\u062D\u0629 \u0627\u0644\u0645\u0646\u062A\u062C",
|
|
6245
6315
|
seoTitle: "\u0635\u0641 \u0645\u0634\u0643\u0644\u062A\u0643 \u0648\u0627\u062D\u0635\u0644 \u0639\u0644\u0649 \u0625\u062C\u0627\u0628\u0629",
|
|
6246
6316
|
seoDescription: "\u0635\u0641 \u0627\u0644\u0645\u0634\u0643\u0644\u0629 \u0627\u0644\u062A\u064A \u062A\u0648\u0627\u062C\u0647\u0647\u0627 \u0628\u0643\u0644\u0645\u0627\u062A\u0643 \u0648\u0627\u062D\u0635\u0644 \u0639\u0644\u0649 \u0625\u062C\u0627\u0628\u0629 \u0645\u0633\u062A\u0645\u062F\u0629 \u0645\u0646 \u0648\u062B\u0627\u0626\u0642 \u0645\u0646\u062A\u062C\u0627\u062A\u0646\u0627\u060C \u0645\u0639 \u0631\u0648\u0627\u0628\u0637 \u0625\u0644\u0649 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062C\u0627\u0621\u062A \u0645\u0646\u0647\u0627.",
|
|
6247
6317
|
seoDescriptionProduct: "\u0635\u0641 \u0627\u0644\u0645\u0634\u0643\u0644\u0629 \u0627\u0644\u062A\u064A \u062A\u0648\u0627\u062C\u0647\u0647\u0627 \u0628\u0643\u0644\u0645\u0627\u062A\u0643 \u0648\u0627\u062D\u0635\u0644 \u0639\u0644\u0649 \u0625\u062C\u0627\u0628\u0629 \u0645\u0633\u062A\u0645\u062F\u0629 \u0645\u0646 \u0648\u062B\u0627\u0626\u0642 {product} \u0648\u0628\u0642\u064A\u0629 \u0645\u0646\u062A\u062C\u0627\u062A\u0646\u0627\u060C \u0645\u0639 \u0631\u0648\u0627\u0628\u0637 \u0625\u0644\u0649 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062C\u0627\u0621\u062A \u0645\u0646\u0647\u0627.",
|
|
@@ -6310,6 +6380,20 @@ var TA = {
|
|
|
6310
6380
|
nextSuggestion: "\u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4 \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
|
|
6311
6381
|
conceptIllustration: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1 \u0BB5\u0BBF\u0BB3\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BAE\u0BCD",
|
|
6312
6382
|
opensInNewTab: "\u0BAA\u0BC1\u0BA4\u0BBF\u0BAF \u0BA4\u0BBE\u0BB5\u0BB2\u0BBF\u0BB2\u0BCD \u0BA4\u0BBF\u0BB1\u0B95\u0BCD\u0B95\u0BC1\u0BAE\u0BCD",
|
|
6383
|
+
conceptStripTitle: "\u0B85\u0BB2\u0BCD\u0BB2\u0BA4\u0BC1 \u0B92\u0BB0\u0BC1 \u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BBF\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1 \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
6384
|
+
conceptStripLabel: "\u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B95\u0BC7\u0B9F\u0BCD\u0B95\u0B95\u0BCD\u0B95\u0BC2\u0B9F\u0BBF\u0BAF \u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BB3\u0BCD",
|
|
6385
|
+
conceptAsk: "{product} \u0B87\u0BB2\u0BCD {title} \u0BAA\u0BB1\u0BCD\u0BB1\u0BBF\u0B95\u0BCD \u0B95\u0BC7\u0BB3\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
6386
|
+
conceptAskQuestion: "{product} \u0B87\u0BB2\u0BCD {title} \u0B8E\u0BAA\u0BCD\u0BAA\u0B9F\u0BBF \u0BB5\u0BC7\u0BB2\u0BC8 \u0B9A\u0BC6\u0BAF\u0BCD\u0B95\u0BBF\u0BB1\u0BA4\u0BC1?",
|
|
6387
|
+
copyAnswer: "\u0BAA\u0BA4\u0BBF\u0BB2\u0BC8 \u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1",
|
|
6388
|
+
copyFailed: "\u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95 \u0BAE\u0BC1\u0B9F\u0BBF\u0BAF\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8",
|
|
6389
|
+
groundedIn: "\u0B87\u0BA8\u0BCD\u0BA4\u0BAA\u0BCD \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD \u0B8E\u0BA4\u0BC8 \u0B85\u0B9F\u0BBF\u0BAA\u0BCD\u0BAA\u0B9F\u0BC8\u0BAF\u0BBE\u0B95\u0B95\u0BCD \u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BA4\u0BC1",
|
|
6390
|
+
sourceCountOne: "1 \u0BAE\u0BC2\u0BB2\u0BAE\u0BCD",
|
|
6391
|
+
sourceCountMany: "{count} \u0BAE\u0BC2\u0BB2\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
6392
|
+
sourceKindConcept: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1",
|
|
6393
|
+
sourceKindDocs: "\u0B86\u0BB5\u0BA3\u0BAE\u0BCD",
|
|
6394
|
+
sourceKindPricing: "\u0BB5\u0BBF\u0BB2\u0BC8",
|
|
6395
|
+
sourceKindUseCase: "\u0BAA\u0BAF\u0BA9\u0BCD\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1 \u0BA8\u0BBF\u0BB2\u0BC8",
|
|
6396
|
+
sourceKindPage: "\u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0BAA\u0BCD \u0BAA\u0B95\u0BCD\u0B95\u0BAE\u0BCD",
|
|
6313
6397
|
seoTitle: "\u0B9A\u0BBF\u0B95\u0BCD\u0B95\u0BB2\u0BC8 \u0BB5\u0BBF\u0BB5\u0BB0\u0BBF\u0BAF\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD, \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD \u0BAA\u0BC6\u0BB1\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
6314
6398
|
seoDescription: "\u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0B95\u0BCA\u0BB3\u0BCD\u0BB3\u0BC1\u0BAE\u0BCD \u0B9A\u0BBF\u0B95\u0BCD\u0B95\u0BB2\u0BC8 \u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B9A\u0BCA\u0BA8\u0BCD\u0BA4 \u0BB5\u0BBE\u0BB0\u0BCD\u0BA4\u0BCD\u0BA4\u0BC8\u0B95\u0BB3\u0BBF\u0BB2\u0BCD \u0BB5\u0BBF\u0BB5\u0BB0\u0BBF\u0BAF\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD; \u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1 \u0B86\u0BB5\u0BA3\u0B99\u0BCD\u0B95\u0BB3\u0BBF\u0BB2\u0BBF\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD \u0B95\u0BBF\u0B9F\u0BC8\u0B95\u0BCD\u0B95\u0BC1\u0BAE\u0BCD, \u0B85\u0BA4\u0BC1 \u0BB5\u0BA8\u0BCD\u0BA4 \u0BAA\u0B95\u0BCD\u0B95\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B87\u0BA3\u0BC8\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC1\u0B9F\u0BA9\u0BCD.",
|
|
6315
6399
|
seoDescriptionProduct: "{product} \u0BAE\u0BB1\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD \u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BAA\u0BBF\u0BB1 \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BBF\u0BA9\u0BCD \u0B86\u0BB5\u0BA3\u0B99\u0BCD\u0B95\u0BB3\u0BBF\u0BB2\u0BBF\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD \u0BAA\u0BC6\u0BB1, \u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0B95\u0BCA\u0BB3\u0BCD\u0BB3\u0BC1\u0BAE\u0BCD \u0B9A\u0BBF\u0B95\u0BCD\u0B95\u0BB2\u0BC8 \u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B9A\u0BCA\u0BA8\u0BCD\u0BA4 \u0BB5\u0BBE\u0BB0\u0BCD\u0BA4\u0BCD\u0BA4\u0BC8\u0B95\u0BB3\u0BBF\u0BB2\u0BCD \u0BB5\u0BBF\u0BB5\u0BB0\u0BBF\u0BAF\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u2014 \u0B85\u0BA4\u0BC1 \u0BB5\u0BA8\u0BCD\u0BA4 \u0BAA\u0B95\u0BCD\u0B95\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B87\u0BA3\u0BC8\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC1\u0B9F\u0BA9\u0BCD.",
|
|
@@ -6411,11 +6495,9 @@ var EXPLORE_OWN_MESSAGE_FIELDS = (
|
|
|
6411
6495
|
}
|
|
6412
6496
|
`
|
|
6413
6497
|
);
|
|
6414
|
-
var
|
|
6498
|
+
var EXPLORE_CATALOG_ESTABLISHED_FIELDS = (
|
|
6415
6499
|
/* GraphQL */
|
|
6416
6500
|
`
|
|
6417
|
-
query ExploreCatalog($productSlug: String) {
|
|
6418
|
-
exploreCatalog(productSlug: $productSlug) {
|
|
6419
6501
|
enabled
|
|
6420
6502
|
products {
|
|
6421
6503
|
slug
|
|
@@ -6433,11 +6515,35 @@ var EXPLORE_CATALOG_QUERY = (
|
|
|
6433
6515
|
historyTurns
|
|
6434
6516
|
}
|
|
6435
6517
|
captchaRequired
|
|
6436
|
-
recaptchaSiteKey
|
|
6518
|
+
recaptchaSiteKey`
|
|
6519
|
+
);
|
|
6520
|
+
var EXPLORE_CATALOG_HIGHLIGHT_FIELD = (
|
|
6521
|
+
/* GraphQL */
|
|
6522
|
+
`
|
|
6523
|
+
conceptHighlights {
|
|
6524
|
+
product
|
|
6525
|
+
productName
|
|
6526
|
+
title
|
|
6527
|
+
url
|
|
6528
|
+
imageUrl
|
|
6529
|
+
alt
|
|
6530
|
+
}`
|
|
6531
|
+
);
|
|
6532
|
+
function exploreCatalogDocument(extraFields) {
|
|
6533
|
+
return (
|
|
6534
|
+
/* GraphQL */
|
|
6535
|
+
`
|
|
6536
|
+
query ExploreCatalog($productSlug: String) {
|
|
6537
|
+
exploreCatalog(productSlug: $productSlug) {${EXPLORE_CATALOG_ESTABLISHED_FIELDS}${extraFields}
|
|
6437
6538
|
}
|
|
6438
6539
|
}
|
|
6439
6540
|
`
|
|
6541
|
+
);
|
|
6542
|
+
}
|
|
6543
|
+
var EXPLORE_CATALOG_QUERY = exploreCatalogDocument(
|
|
6544
|
+
EXPLORE_CATALOG_HIGHLIGHT_FIELD
|
|
6440
6545
|
);
|
|
6546
|
+
var EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS = exploreCatalogDocument("");
|
|
6441
6547
|
var EXPLORE_MESSAGE_QUERY = (
|
|
6442
6548
|
/* GraphQL */
|
|
6443
6549
|
`
|
|
@@ -6978,7 +7084,12 @@ function buildFallbackCatalog(examplePrompts, welcome) {
|
|
|
6978
7084
|
welcomeBody: welcome?.body ?? FALLBACK_WELCOME_BODY,
|
|
6979
7085
|
limits: FALLBACK_EXPLORE_LIMITS,
|
|
6980
7086
|
captchaRequired: false,
|
|
6981
|
-
recaptchaSiteKey: null
|
|
7087
|
+
recaptchaSiteKey: null,
|
|
7088
|
+
// Empty, and deliberately not synthesised from `ECOSYSTEM_PRODUCTS`: a concept highlight
|
|
7089
|
+
// needs a real published illustration URL, and this SDK has no registry of them. An
|
|
7090
|
+
// invented path would render 38 broken frames on the one screen every prerender captures.
|
|
7091
|
+
// The strip renders nothing at all when the list is empty, which is the honest fallback.
|
|
7092
|
+
conceptHighlights: []
|
|
6982
7093
|
};
|
|
6983
7094
|
}
|
|
6984
7095
|
function normalizeCatalog(raw, fallback) {
|
|
@@ -6995,9 +7106,27 @@ function normalizeCatalog(raw, fallback) {
|
|
|
6995
7106
|
historyTurns: raw.limits?.historyTurns || fallback.limits.historyTurns
|
|
6996
7107
|
},
|
|
6997
7108
|
captchaRequired: raw.captchaRequired === true,
|
|
6998
|
-
recaptchaSiteKey: raw.recaptchaSiteKey ?? null
|
|
7109
|
+
recaptchaSiteKey: raw.recaptchaSiteKey ?? null,
|
|
7110
|
+
// `[ExploreConceptHighlight!]!` on the wire, so a gateway that KNOWS the field always
|
|
7111
|
+
// sends an array. The one response that arrives without it is the retry against an older
|
|
7112
|
+
// supergraph (`EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS`) — that gateway does not answer
|
|
7113
|
+
// the full document at all, it refuses it. Either way
|
|
7114
|
+
// `catalog.conceptHighlights.filter(...)` on `undefined` would throw inside render,
|
|
7115
|
+
// blanking the welcome screen over a decorative strip.
|
|
7116
|
+
conceptHighlights: raw.conceptHighlights?.length ? raw.conceptHighlights : fallback.conceptHighlights
|
|
6999
7117
|
};
|
|
7000
7118
|
}
|
|
7119
|
+
var CATALOG_DOCUMENT_REJECTED_CODES = /* @__PURE__ */ new Set([
|
|
7120
|
+
"GRAPHQL_VALIDATION_FAILED",
|
|
7121
|
+
"HTTP_400"
|
|
7122
|
+
]);
|
|
7123
|
+
function catalogRejectedTheHighlightField(res) {
|
|
7124
|
+
if (res.data?.exploreCatalog) return false;
|
|
7125
|
+
return (res.errors ?? []).some((error) => {
|
|
7126
|
+
const code = error.extensions?.code;
|
|
7127
|
+
return typeof code === "string" && CATALOG_DOCUMENT_REJECTED_CODES.has(code) || error.message.includes("conceptHighlights");
|
|
7128
|
+
});
|
|
7129
|
+
}
|
|
7001
7130
|
var RATE_LIMIT_CODES = /* @__PURE__ */ new Set([
|
|
7002
7131
|
"RATE_LIMITED",
|
|
7003
7132
|
"HTTP_429",
|
|
@@ -7337,11 +7466,19 @@ function useExploreChat(options = {}) {
|
|
|
7337
7466
|
useEffect(() => {
|
|
7338
7467
|
let cancelled = false;
|
|
7339
7468
|
const load = async () => {
|
|
7340
|
-
const
|
|
7469
|
+
const variables = { productSlug: productSlug ?? null };
|
|
7470
|
+
let res = await client.query(
|
|
7341
7471
|
EXPLORE_CATALOG_QUERY,
|
|
7342
|
-
|
|
7472
|
+
variables
|
|
7343
7473
|
);
|
|
7344
7474
|
if (cancelled || !mountedRef.current) return;
|
|
7475
|
+
if (catalogRejectedTheHighlightField(res)) {
|
|
7476
|
+
res = await client.query(
|
|
7477
|
+
EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS,
|
|
7478
|
+
variables
|
|
7479
|
+
);
|
|
7480
|
+
if (cancelled || !mountedRef.current) return;
|
|
7481
|
+
}
|
|
7345
7482
|
const raw = res.data?.exploreCatalog;
|
|
7346
7483
|
if (res.errors?.length || !raw) {
|
|
7347
7484
|
console.warn(
|
|
@@ -8508,6 +8645,122 @@ function isInlineImageAllowed(src, origins) {
|
|
|
8508
8645
|
if (url.protocol !== "https:" || url.username || url.password) return false;
|
|
8509
8646
|
return origins.has(url.origin);
|
|
8510
8647
|
}
|
|
8648
|
+
var REFERENCE_KIND_ORDER = [
|
|
8649
|
+
"CONCEPT",
|
|
8650
|
+
"DOCS",
|
|
8651
|
+
"PRICING",
|
|
8652
|
+
"USE_CASE",
|
|
8653
|
+
"PAGE"
|
|
8654
|
+
];
|
|
8655
|
+
var PRODUCT_SUBDOMAINS = [
|
|
8656
|
+
"alphadocs.",
|
|
8657
|
+
"alphaapp.",
|
|
8658
|
+
"docs.",
|
|
8659
|
+
"alpha.",
|
|
8660
|
+
"app.",
|
|
8661
|
+
"www."
|
|
8662
|
+
];
|
|
8663
|
+
function readCatalogUrl(raw) {
|
|
8664
|
+
let parsed;
|
|
8665
|
+
try {
|
|
8666
|
+
parsed = new URL(raw);
|
|
8667
|
+
} catch {
|
|
8668
|
+
return null;
|
|
8669
|
+
}
|
|
8670
|
+
if (parsed.protocol !== "https:") return null;
|
|
8671
|
+
const host = parsed.hostname.toLowerCase();
|
|
8672
|
+
const prefix = PRODUCT_SUBDOMAINS.find(
|
|
8673
|
+
(candidate) => host.startsWith(candidate)
|
|
8674
|
+
);
|
|
8675
|
+
const apex = prefix === void 0 ? host : host.slice(prefix.length);
|
|
8676
|
+
const port = parsed.port ? `:${parsed.port}` : "";
|
|
8677
|
+
return {
|
|
8678
|
+
origin: `https://${apex}${port}`,
|
|
8679
|
+
prefix,
|
|
8680
|
+
pathname: parsed.pathname
|
|
8681
|
+
};
|
|
8682
|
+
}
|
|
8683
|
+
function referenceKindOf(url, origins) {
|
|
8684
|
+
const parsed = readCatalogUrl(url);
|
|
8685
|
+
if (parsed === null || !origins.has(parsed.origin)) return null;
|
|
8686
|
+
if (parsed.prefix === "docs." || parsed.prefix === "alphadocs.")
|
|
8687
|
+
return "DOCS";
|
|
8688
|
+
const segment = parsed.pathname.toLowerCase().split("/").filter(Boolean)[0] ?? "";
|
|
8689
|
+
if (segment === "concept" || segment === "concepts") return "CONCEPT";
|
|
8690
|
+
if (segment === "docs") return "DOCS";
|
|
8691
|
+
if (segment === "pricing" || segment === "plans") return "PRICING";
|
|
8692
|
+
if (segment === "use-case" || segment === "use-cases" || segment === "solutions") {
|
|
8693
|
+
return "USE_CASE";
|
|
8694
|
+
}
|
|
8695
|
+
return "PAGE";
|
|
8696
|
+
}
|
|
8697
|
+
function productNamesByOrigin(products) {
|
|
8698
|
+
const names = /* @__PURE__ */ new Map();
|
|
8699
|
+
for (const product of products) {
|
|
8700
|
+
let url;
|
|
8701
|
+
try {
|
|
8702
|
+
url = new URL(product.website);
|
|
8703
|
+
} catch {
|
|
8704
|
+
continue;
|
|
8705
|
+
}
|
|
8706
|
+
if (url.protocol !== "https:") continue;
|
|
8707
|
+
const apex = url.hostname.replace(/^www\./, "");
|
|
8708
|
+
const port = url.port ? `:${url.port}` : "";
|
|
8709
|
+
const key = `https://${apex}${port}`;
|
|
8710
|
+
if (!names.has(key)) names.set(key, product.name);
|
|
8711
|
+
}
|
|
8712
|
+
return names;
|
|
8713
|
+
}
|
|
8714
|
+
function summariseReferences(references, origins, productNames) {
|
|
8715
|
+
const counts = /* @__PURE__ */ new Map();
|
|
8716
|
+
const products = [];
|
|
8717
|
+
for (const reference of references) {
|
|
8718
|
+
const kind = referenceKindOf(reference.url, origins);
|
|
8719
|
+
if (kind !== null) counts.set(kind, (counts.get(kind) ?? 0) + 1);
|
|
8720
|
+
const parsed = readCatalogUrl(reference.url);
|
|
8721
|
+
const name = (parsed === null ? void 0 : productNames.get(parsed.origin)) ?? (reference.product || null);
|
|
8722
|
+
if (name != null && !products.includes(name)) products.push(name);
|
|
8723
|
+
}
|
|
8724
|
+
return {
|
|
8725
|
+
total: references.length,
|
|
8726
|
+
kinds: REFERENCE_KIND_ORDER.filter((kind) => counts.has(kind)).map(
|
|
8727
|
+
(kind) => ({ kind, count: counts.get(kind) ?? 0 })
|
|
8728
|
+
),
|
|
8729
|
+
products
|
|
8730
|
+
};
|
|
8731
|
+
}
|
|
8732
|
+
var CODE_FENCE = /^\s*(?:```|~~~)/;
|
|
8733
|
+
function answerPlainText(markdown) {
|
|
8734
|
+
const lines = [];
|
|
8735
|
+
let inFence = false;
|
|
8736
|
+
for (const raw of markdown.split("\n")) {
|
|
8737
|
+
if (CODE_FENCE.test(raw)) {
|
|
8738
|
+
inFence = !inFence;
|
|
8739
|
+
continue;
|
|
8740
|
+
}
|
|
8741
|
+
if (inFence) {
|
|
8742
|
+
lines.push(raw);
|
|
8743
|
+
continue;
|
|
8744
|
+
}
|
|
8745
|
+
let line = raw;
|
|
8746
|
+
line = line.replace(/!\[[^\]]*\]\([^)\s]*(?:\s+"[^"]*")?\)/g, "");
|
|
8747
|
+
line = line.replace(/\[([^\]]+)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g, "$1 ($2)");
|
|
8748
|
+
line = line.replace(/<(https?:\/\/[^>\s]+)>/g, "$1");
|
|
8749
|
+
line = line.replace(/^\s{0,3}#{1,6}\s+/, "");
|
|
8750
|
+
line = line.replace(/^\s{0,3}>\s?/, "");
|
|
8751
|
+
if (/^\s{0,3}([-*_])[ \t]*(?:\1[ \t]*){2,}$/.test(line)) {
|
|
8752
|
+
lines.push("");
|
|
8753
|
+
continue;
|
|
8754
|
+
}
|
|
8755
|
+
line = line.replace(/`([^`]+)`/g, "$1");
|
|
8756
|
+
line = line.replace(/\*\*([^*]+)\*\*/g, "$1");
|
|
8757
|
+
line = line.replace(/__([^_]+)__/g, "$1");
|
|
8758
|
+
line = line.replace(/(^|[^*\w])\*([^*\n]+)\*(?![*\w])/g, "$1$2");
|
|
8759
|
+
line = line.replace(/(^|[^_\w])_([^_\n]+)_(?![_\w])/g, "$1$2");
|
|
8760
|
+
lines.push(line.replace(/[ \t]+$/, ""));
|
|
8761
|
+
}
|
|
8762
|
+
return lines.join("\n").replace(/\n{3,}/g, "\n\n").trim();
|
|
8763
|
+
}
|
|
8511
8764
|
var InlineImageScopeContext = createContext(null);
|
|
8512
8765
|
var InsideLinkContext = createContext(false);
|
|
8513
8766
|
function AnswerLink(props) {
|
|
@@ -8905,6 +9158,115 @@ function AnswerFeedback({
|
|
|
8905
9158
|
}
|
|
8906
9159
|
);
|
|
8907
9160
|
}
|
|
9161
|
+
var PROVENANCE_CHIP = "inline-flex max-w-full items-center gap-1 rounded-full border border-border bg-muted/60 px-2 py-0.5 text-[11px] leading-5 text-muted-foreground";
|
|
9162
|
+
function ProvenanceChips({
|
|
9163
|
+
strings: T,
|
|
9164
|
+
provenance
|
|
9165
|
+
}) {
|
|
9166
|
+
if (provenance.total === 0) return null;
|
|
9167
|
+
const kindLabels = {
|
|
9168
|
+
CONCEPT: T.sourceKindConcept,
|
|
9169
|
+
DOCS: T.sourceKindDocs,
|
|
9170
|
+
PRICING: T.sourceKindPricing,
|
|
9171
|
+
USE_CASE: T.sourceKindUseCase,
|
|
9172
|
+
PAGE: T.sourceKindPage
|
|
9173
|
+
};
|
|
9174
|
+
return /* @__PURE__ */ jsxs(
|
|
9175
|
+
"ul",
|
|
9176
|
+
{
|
|
9177
|
+
"data-boff-explore": "provenance",
|
|
9178
|
+
"aria-label": T.groundedIn,
|
|
9179
|
+
className: "flex flex-wrap items-center gap-1.5",
|
|
9180
|
+
children: [
|
|
9181
|
+
/* @__PURE__ */ jsxs("li", { "data-boff-explore": "provenance-count", className: PROVENANCE_CHIP, children: [
|
|
9182
|
+
/* @__PURE__ */ jsx(BookOpenText, { className: "h-3 w-3 shrink-0", "aria-hidden": "true" }),
|
|
9183
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: provenance.total === 1 ? T.sourceCountOne : fill(T.sourceCountMany, { count: String(provenance.total) }) })
|
|
9184
|
+
] }),
|
|
9185
|
+
provenance.kinds.map(({ kind, count }) => /* @__PURE__ */ jsx(
|
|
9186
|
+
"li",
|
|
9187
|
+
{
|
|
9188
|
+
"data-boff-explore": "provenance-kind",
|
|
9189
|
+
"data-kind": kind,
|
|
9190
|
+
"data-count": count,
|
|
9191
|
+
className: PROVENANCE_CHIP,
|
|
9192
|
+
children: /* @__PURE__ */ jsx("span", { className: "truncate", children: count > 1 ? `${kindLabels[kind]} \xB7 ${count}` : kindLabels[kind] })
|
|
9193
|
+
},
|
|
9194
|
+
kind
|
|
9195
|
+
)),
|
|
9196
|
+
provenance.products.map((name) => /* @__PURE__ */ jsx(
|
|
9197
|
+
"li",
|
|
9198
|
+
{
|
|
9199
|
+
"data-boff-explore": "provenance-product",
|
|
9200
|
+
className: PROVENANCE_CHIP,
|
|
9201
|
+
children: /* @__PURE__ */ jsx("span", { className: "truncate", children: name })
|
|
9202
|
+
},
|
|
9203
|
+
name
|
|
9204
|
+
))
|
|
9205
|
+
]
|
|
9206
|
+
}
|
|
9207
|
+
);
|
|
9208
|
+
}
|
|
9209
|
+
var COPY_FEEDBACK_MS = 2500;
|
|
9210
|
+
function AnswerActions({
|
|
9211
|
+
strings: T,
|
|
9212
|
+
text
|
|
9213
|
+
}) {
|
|
9214
|
+
const [outcome, setOutcome] = useState("idle");
|
|
9215
|
+
const resetRef = useRef(null);
|
|
9216
|
+
useEffect(
|
|
9217
|
+
() => () => {
|
|
9218
|
+
if (resetRef.current !== null) clearTimeout(resetRef.current);
|
|
9219
|
+
},
|
|
9220
|
+
[]
|
|
9221
|
+
);
|
|
9222
|
+
const copy = useCallback(async () => {
|
|
9223
|
+
let copied = false;
|
|
9224
|
+
try {
|
|
9225
|
+
const clipboard = typeof navigator === "undefined" ? void 0 : navigator.clipboard;
|
|
9226
|
+
if (typeof clipboard?.writeText === "function") {
|
|
9227
|
+
await clipboard.writeText(text);
|
|
9228
|
+
copied = true;
|
|
9229
|
+
}
|
|
9230
|
+
} catch {
|
|
9231
|
+
copied = false;
|
|
9232
|
+
}
|
|
9233
|
+
setOutcome(copied ? "copied" : "failed");
|
|
9234
|
+
if (resetRef.current !== null) clearTimeout(resetRef.current);
|
|
9235
|
+
resetRef.current = setTimeout(() => setOutcome("idle"), COPY_FEEDBACK_MS);
|
|
9236
|
+
}, [text]);
|
|
9237
|
+
const label = outcome === "copied" ? T.copied : outcome === "failed" ? T.copyFailed : T.copyAnswer;
|
|
9238
|
+
return /* @__PURE__ */ jsxs(
|
|
9239
|
+
"div",
|
|
9240
|
+
{
|
|
9241
|
+
"data-boff-explore": "answer-actions",
|
|
9242
|
+
className: "flex flex-wrap items-center gap-2 pt-0.5",
|
|
9243
|
+
children: [
|
|
9244
|
+
/* @__PURE__ */ jsxs(
|
|
9245
|
+
"button",
|
|
9246
|
+
{
|
|
9247
|
+
"data-boff-explore": "copy-answer",
|
|
9248
|
+
"data-outcome": outcome,
|
|
9249
|
+
type: "button",
|
|
9250
|
+
title: label,
|
|
9251
|
+
onClick: () => {
|
|
9252
|
+
void copy();
|
|
9253
|
+
},
|
|
9254
|
+
className: cn(
|
|
9255
|
+
"inline-flex max-w-full items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs transition-colors",
|
|
9256
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
9257
|
+
outcome === "failed" ? "border-destructive/40 bg-card text-destructive" : "border-border bg-card text-muted-foreground hover:border-primary/40 hover:bg-accent hover:text-foreground"
|
|
9258
|
+
),
|
|
9259
|
+
children: [
|
|
9260
|
+
outcome === "copied" ? /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 shrink-0", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(Copy, { className: "h-3 w-3 shrink-0", "aria-hidden": "true" }),
|
|
9261
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: label })
|
|
9262
|
+
]
|
|
9263
|
+
}
|
|
9264
|
+
),
|
|
9265
|
+
/* @__PURE__ */ jsx("span", { "data-boff-explore": "copy-status", role: "status", className: "sr-only", children: outcome === "idle" ? "" : label })
|
|
9266
|
+
]
|
|
9267
|
+
}
|
|
9268
|
+
);
|
|
9269
|
+
}
|
|
8908
9270
|
function UserBubble({
|
|
8909
9271
|
strings: T,
|
|
8910
9272
|
message
|
|
@@ -8950,6 +9312,7 @@ function AssistantBubble({
|
|
|
8950
9312
|
message,
|
|
8951
9313
|
activity,
|
|
8952
9314
|
imageOrigins,
|
|
9315
|
+
productNames,
|
|
8953
9316
|
onNavigate,
|
|
8954
9317
|
anchorRef,
|
|
8955
9318
|
onFollow,
|
|
@@ -8978,6 +9341,15 @@ function AssistantBubble({
|
|
|
8978
9341
|
}),
|
|
8979
9342
|
[T, completed, imageOrigins, failedImages, markImageFailed]
|
|
8980
9343
|
);
|
|
9344
|
+
const provenance = useMemo(
|
|
9345
|
+
() => summariseReferences(message.references, imageOrigins, productNames),
|
|
9346
|
+
[message.references, imageOrigins, productNames]
|
|
9347
|
+
);
|
|
9348
|
+
const copyText = useMemo(
|
|
9349
|
+
() => answerPlainText(message.content),
|
|
9350
|
+
[message.content]
|
|
9351
|
+
);
|
|
9352
|
+
const grounded = completed && message.answered !== false;
|
|
8981
9353
|
return /* @__PURE__ */ jsxs(
|
|
8982
9354
|
"div",
|
|
8983
9355
|
{
|
|
@@ -9027,6 +9399,7 @@ function AssistantBubble({
|
|
|
9027
9399
|
/* @__PURE__ */ jsx("div", { className: "boff-prose boff-prose-sm boff-explore-body min-w-0 text-card-foreground", children: /* @__PURE__ */ jsx(InlineImageScopeContext.Provider, { value: imageScope, children: /* @__PURE__ */ jsx(Markdown, { components: ANSWER_MARKDOWN_COMPONENTS, children: body }) }) }),
|
|
9028
9400
|
streaming ? /* @__PURE__ */ jsx("span", { className: "boff-explore-caret", "aria-hidden": "true" }) : null
|
|
9029
9401
|
] }) : null,
|
|
9402
|
+
grounded && provenance.total > 0 ? /* @__PURE__ */ jsx(ProvenanceChips, { strings: T, provenance }) : null,
|
|
9030
9403
|
streaming ? /* @__PURE__ */ jsx(ThinkingIndicator, { activity }) : null,
|
|
9031
9404
|
failed && !body ? /* @__PURE__ */ jsx("div", { className: "rounded-2xl rounded-tl-md border border-border bg-muted px-4 py-3 text-sm text-muted-foreground", children: T.answerDidNotArrive }) : null,
|
|
9032
9405
|
message.references.length > 0 ? /* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -9066,6 +9439,7 @@ function AssistantBubble({
|
|
|
9066
9439
|
question
|
|
9067
9440
|
)) })
|
|
9068
9441
|
] }) : null,
|
|
9442
|
+
completed && copyText !== "" ? /* @__PURE__ */ jsx(AnswerActions, { strings: T, text: copyText }) : null,
|
|
9069
9443
|
completed && onFeedback ? /* @__PURE__ */ jsx(
|
|
9070
9444
|
AnswerFeedback,
|
|
9071
9445
|
{
|
|
@@ -9278,6 +9652,96 @@ function ProductStrip({
|
|
|
9278
9652
|
}
|
|
9279
9653
|
);
|
|
9280
9654
|
}
|
|
9655
|
+
var MAX_CONCEPT_CARDS = 6;
|
|
9656
|
+
function ConceptStrip({
|
|
9657
|
+
strings: T,
|
|
9658
|
+
highlights,
|
|
9659
|
+
onAsk,
|
|
9660
|
+
disabled
|
|
9661
|
+
}) {
|
|
9662
|
+
const [failed, setFailed] = useState(() => /* @__PURE__ */ new Set());
|
|
9663
|
+
const markFailed = useCallback((src) => {
|
|
9664
|
+
setFailed(
|
|
9665
|
+
(current) => current.has(src) ? current : new Set(current).add(src)
|
|
9666
|
+
);
|
|
9667
|
+
}, []);
|
|
9668
|
+
const visible = highlights.filter(
|
|
9669
|
+
(highlight) => highlight.imageUrl !== "" && !failed.has(highlight.imageUrl)
|
|
9670
|
+
).slice(0, MAX_CONCEPT_CARDS);
|
|
9671
|
+
if (visible.length === 0) return null;
|
|
9672
|
+
return /* @__PURE__ */ jsxs(
|
|
9673
|
+
"div",
|
|
9674
|
+
{
|
|
9675
|
+
"data-boff-explore": "concept-strip-block",
|
|
9676
|
+
className: "boff-explore-rise boff-explore-rise-3 mt-6",
|
|
9677
|
+
children: [
|
|
9678
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.conceptStripTitle }),
|
|
9679
|
+
/* @__PURE__ */ jsx(
|
|
9680
|
+
"ul",
|
|
9681
|
+
{
|
|
9682
|
+
"data-boff-explore": "concept-strip",
|
|
9683
|
+
"aria-label": T.conceptStripLabel,
|
|
9684
|
+
className: "boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1",
|
|
9685
|
+
children: visible.map((highlight) => /* @__PURE__ */ jsx(
|
|
9686
|
+
"li",
|
|
9687
|
+
{
|
|
9688
|
+
className: "shrink-0 snap-start",
|
|
9689
|
+
children: /* @__PURE__ */ jsxs(
|
|
9690
|
+
"button",
|
|
9691
|
+
{
|
|
9692
|
+
"data-boff-explore": "concept-card",
|
|
9693
|
+
"data-product": highlight.product,
|
|
9694
|
+
type: "button",
|
|
9695
|
+
disabled,
|
|
9696
|
+
"aria-label": fill(T.conceptAsk, {
|
|
9697
|
+
title: highlight.title,
|
|
9698
|
+
product: highlight.productName
|
|
9699
|
+
}),
|
|
9700
|
+
onClick: () => onAsk(
|
|
9701
|
+
fill(T.conceptAskQuestion, {
|
|
9702
|
+
title: highlight.title,
|
|
9703
|
+
product: highlight.productName
|
|
9704
|
+
})
|
|
9705
|
+
),
|
|
9706
|
+
className: "group flex w-40 flex-col overflow-hidden rounded-xl border border-border bg-card text-left shadow-sm transition-colors hover:border-primary/50 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:w-48",
|
|
9707
|
+
children: [
|
|
9708
|
+
/* @__PURE__ */ jsxs("span", { className: "relative block aspect-[16/9] w-full overflow-hidden bg-muted", children: [
|
|
9709
|
+
/* @__PURE__ */ jsx(
|
|
9710
|
+
"img",
|
|
9711
|
+
{
|
|
9712
|
+
src: highlight.imageUrl,
|
|
9713
|
+
alt: highlight.alt,
|
|
9714
|
+
loading: "lazy",
|
|
9715
|
+
decoding: "async",
|
|
9716
|
+
onError: () => markFailed(highlight.imageUrl),
|
|
9717
|
+
className: "h-full w-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
9718
|
+
}
|
|
9719
|
+
),
|
|
9720
|
+
/* @__PURE__ */ jsx(
|
|
9721
|
+
"span",
|
|
9722
|
+
{
|
|
9723
|
+
"aria-hidden": "true",
|
|
9724
|
+
className: "pointer-events-none absolute left-1.5 top-1.5 rounded-full border border-border bg-background/90 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground",
|
|
9725
|
+
children: T.conceptIllustration
|
|
9726
|
+
}
|
|
9727
|
+
)
|
|
9728
|
+
] }),
|
|
9729
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col gap-0.5 p-2.5", children: [
|
|
9730
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-2 text-xs font-semibold leading-snug text-card-foreground", children: highlight.title }),
|
|
9731
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-[11px] text-muted-foreground", children: highlight.productName })
|
|
9732
|
+
] })
|
|
9733
|
+
]
|
|
9734
|
+
}
|
|
9735
|
+
)
|
|
9736
|
+
},
|
|
9737
|
+
`${highlight.product}:${highlight.url}`
|
|
9738
|
+
))
|
|
9739
|
+
}
|
|
9740
|
+
)
|
|
9741
|
+
]
|
|
9742
|
+
}
|
|
9743
|
+
);
|
|
9744
|
+
}
|
|
9281
9745
|
function DisclaimerDialog({
|
|
9282
9746
|
open,
|
|
9283
9747
|
onClose,
|
|
@@ -9384,6 +9848,7 @@ function WelcomeState({
|
|
|
9384
9848
|
body,
|
|
9385
9849
|
prompts,
|
|
9386
9850
|
products,
|
|
9851
|
+
conceptHighlights,
|
|
9387
9852
|
focusProduct,
|
|
9388
9853
|
onPrompt,
|
|
9389
9854
|
onFocus,
|
|
@@ -9422,6 +9887,15 @@ function WelcomeState({
|
|
|
9422
9887
|
}
|
|
9423
9888
|
)
|
|
9424
9889
|
] }) : null,
|
|
9890
|
+
/* @__PURE__ */ jsx(
|
|
9891
|
+
ConceptStrip,
|
|
9892
|
+
{
|
|
9893
|
+
strings: T,
|
|
9894
|
+
highlights: conceptHighlights,
|
|
9895
|
+
onAsk: onPrompt,
|
|
9896
|
+
disabled
|
|
9897
|
+
}
|
|
9898
|
+
),
|
|
9425
9899
|
products.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-6", children: [
|
|
9426
9900
|
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
|
|
9427
9901
|
/* @__PURE__ */ jsx(
|
|
@@ -9543,6 +10017,10 @@ function ExplorePage({
|
|
|
9543
10017
|
() => inlineImageOrigins(catalog.products),
|
|
9544
10018
|
[catalog.products]
|
|
9545
10019
|
);
|
|
10020
|
+
const productNames = useMemo(
|
|
10021
|
+
() => productNamesByOrigin(catalog.products),
|
|
10022
|
+
[catalog.products]
|
|
10023
|
+
);
|
|
9546
10024
|
useEffect(() => {
|
|
9547
10025
|
const el = textareaRef.current;
|
|
9548
10026
|
if (!el) return;
|
|
@@ -10074,6 +10552,7 @@ function ExplorePage({
|
|
|
10074
10552
|
body: resolvedBody,
|
|
10075
10553
|
prompts,
|
|
10076
10554
|
products: catalog.products,
|
|
10555
|
+
conceptHighlights: catalog.conceptHighlights,
|
|
10077
10556
|
focusProduct,
|
|
10078
10557
|
onPrompt: sendPrompt,
|
|
10079
10558
|
onFocus: setFocusProduct,
|
|
@@ -10087,6 +10566,7 @@ function ExplorePage({
|
|
|
10087
10566
|
message,
|
|
10088
10567
|
activity,
|
|
10089
10568
|
imageOrigins,
|
|
10569
|
+
productNames,
|
|
10090
10570
|
onNavigate,
|
|
10091
10571
|
anchorRef: message.id === latestAssistantId ? latestAssistantRef : void 0,
|
|
10092
10572
|
onFollow: (kind, url) => recordClick(message.id, kind, url),
|
|
@@ -15048,6 +15528,6 @@ function StoreProductDetailPage({
|
|
|
15048
15528
|
] });
|
|
15049
15529
|
}
|
|
15050
15530
|
|
|
15051
|
-
export { BlogListPage, BlogPostPage, Button, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CareersApplyForm, CareersSubmissionForm, CaseStudiesListPage, CaseStudyPage, ChangelogPage, ConceptDetailPage, ConceptsPage, ContactPage, ContentRenderer, ContractsPage, DEFAULT_CONTACT_CATEGORIES, DEFAULT_EXPLORE_EXAMPLE_PROMPTS, ECOSYSTEM_PRODUCTS, EXPLORE_CATALOG_QUERY, EXPLORE_LOCALES, EXPLORE_MESSAGE_QUERY, EXPLORE_RECAPTCHA_ACTION, ElectronDownloadLink, ExploreCta, ExplorePage, FALLBACK_EXPLORE_LIMITS, Input, Label, LaunchCountdown, Markdown, NewsletterForm, NewsletterPage, PageHead, PartnersPage, PressKitPage, PricingPage, PricingSection, ProblemsSolvedSection, ProductCard, ProductProvider, ResourceLinks, RybbitAnalytics, SEND_EXPLORE_MESSAGE_MUTATION, Select, SocialLinks, StarRating, StoreBrowsePage, StoreHomePage, StoreProductDetailPage, Textarea, TypeBadge, UnsubscribePage, WaitlistForm, WaitlistPage, WebSDKClient, WebSDKProvider, WebsiteSwitcher, buttonVariants, classifyExploreError, cn, conceptPath, detectElectronPlatform, fetchPublicJobPosting, fetchPublicJobPostings, fetchPublicJobPostingsForSubmission, formatDownloads, formatPrice2 as formatPrice, getConceptBySlug, getRecaptchaV3Token, isValidUrl, loadRecaptchaV3, useContentPage, useContentPages, useExploreChat, useProduct, useProductConfig, usePublicJobPosting, usePublicJobPostings, usePublicJobPostingsForSubmission, useWebSDK, useWebSDKConfig };
|
|
15531
|
+
export { BlogListPage, BlogPostPage, Button, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CareersApplyForm, CareersSubmissionForm, CaseStudiesListPage, CaseStudyPage, ChangelogPage, ConceptDetailPage, ConceptsPage, ContactPage, ContentRenderer, ContractsPage, DEFAULT_CONTACT_CATEGORIES, DEFAULT_EXPLORE_EXAMPLE_PROMPTS, ECOSYSTEM_PRODUCTS, EXPLORE_CATALOG_QUERY, EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS, EXPLORE_LOCALES, EXPLORE_MESSAGE_QUERY, EXPLORE_RECAPTCHA_ACTION, ElectronDownloadLink, ExploreCta, ExplorePage, FALLBACK_EXPLORE_LIMITS, Input, Label, LaunchCountdown, Markdown, NewsletterForm, NewsletterPage, PageHead, PartnersPage, PressKitPage, PricingPage, PricingSection, ProblemsSolvedSection, ProductCard, ProductProvider, ResourceLinks, RybbitAnalytics, SEND_EXPLORE_MESSAGE_MUTATION, Select, SocialLinks, StarRating, StoreBrowsePage, StoreHomePage, StoreProductDetailPage, Textarea, TypeBadge, UnsubscribePage, WaitlistForm, WaitlistPage, WebSDKClient, WebSDKProvider, WebsiteSwitcher, buttonVariants, classifyExploreError, cn, conceptPath, detectElectronPlatform, fetchPublicJobPosting, fetchPublicJobPostings, fetchPublicJobPostingsForSubmission, formatDownloads, formatPrice2 as formatPrice, getConceptBySlug, getRecaptchaV3Token, isValidUrl, loadRecaptchaV3, useContentPage, useContentPages, useExploreChat, useProduct, useProductConfig, usePublicJobPosting, usePublicJobPostings, usePublicJobPostingsForSubmission, useWebSDK, useWebSDKConfig };
|
|
15052
15532
|
//# sourceMappingURL=index.mjs.map
|
|
15053
15533
|
//# sourceMappingURL=index.mjs.map
|