@burdenoff/website-sdk 2026.922.2 → 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/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 } 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';
@@ -5953,10 +5953,44 @@ var EN = {
5953
5953
  noAnswer: "I couldn't find this in our documentation, so the answer below is not grounded in a source. Try rephrasing, or",
5954
5954
  answerDidNotArrive: "That answer didn't come through. Try asking again.",
5955
5955
  askHuman: "ask a human",
5956
+ // An offer, not a demand: this row sits under every answer on 38 marketing sites, so the
5957
+ // wording has to be shruggable. "Was this helpful?" invites; "Please rate this answer"
5958
+ // conscripts.
5959
+ feedbackPrompt: "Was this helpful?",
5960
+ feedbackHelpful: "Helpful",
5961
+ feedbackNotHelpful: "Not helpful",
5962
+ feedbackReasonTitle: "What was off?",
5963
+ feedbackReasonInaccurate: "Inaccurate",
5964
+ feedbackReasonIncomplete: "Incomplete",
5965
+ feedbackReasonOffTopic: "Off topic",
5966
+ feedbackReasonHardToFollow: "Hard to follow",
5967
+ feedbackReasonOther: "Something else",
5968
+ feedbackCommentPlaceholder: "Add a detail (optional)",
5969
+ feedbackSend: "Send",
5970
+ feedbackDismiss: "Dismiss",
5971
+ feedbackThanks: "Thanks \u2014 that helps.",
5972
+ feedbackNotSent: "That didn't send.",
5956
5973
  prevSuggestion: "Previous suggestion",
5957
5974
  nextSuggestion: "Next suggestion",
5958
5975
  conceptIllustration: "Concept illustration",
5959
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",
5991
+ seoTitle: "Describe a problem, get an answer",
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.",
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.",
5960
5994
  capabilities: [
5961
5995
  "Grounded in our own docs",
5962
5996
  "Compare across the ecosystem",
@@ -6004,10 +6038,41 @@ var ZH = {
6004
6038
  noAnswer: "\u6211\u5728\u6587\u6863\u4E2D\u6CA1\u6709\u627E\u5230\u76F8\u5173\u5185\u5BB9\uFF0C\u4E0B\u9762\u7684\u56DE\u7B54\u6CA1\u6709\u6765\u6E90\u652F\u6301\u3002\u8BF7\u6362\u4E2A\u8BF4\u6CD5\uFF0C\u6216",
6005
6039
  answerDidNotArrive: "\u8FD9\u6761\u56DE\u7B54\u6CA1\u6709\u8FD4\u56DE\u3002\u8BF7\u518D\u95EE\u4E00\u6B21\u3002",
6006
6040
  askHuman: "\u8054\u7CFB\u6211\u4EEC",
6041
+ feedbackPrompt: "\u8FD9\u4E2A\u56DE\u7B54\u6709\u5E2E\u52A9\u5417\uFF1F",
6042
+ feedbackHelpful: "\u6709\u5E2E\u52A9",
6043
+ feedbackNotHelpful: "\u6CA1\u6709\u5E2E\u52A9",
6044
+ feedbackReasonTitle: "\u54EA\u91CC\u4E0D\u5BF9\uFF1F",
6045
+ feedbackReasonInaccurate: "\u4E0D\u51C6\u786E",
6046
+ feedbackReasonIncomplete: "\u4E0D\u5B8C\u6574",
6047
+ feedbackReasonOffTopic: "\u7B54\u975E\u6240\u95EE",
6048
+ feedbackReasonHardToFollow: "\u770B\u4E0D\u592A\u61C2",
6049
+ feedbackReasonOther: "\u5176\u4ED6\u539F\u56E0",
6050
+ feedbackCommentPlaceholder: "\u8865\u5145\u8BF4\u660E\uFF08\u53EF\u9009\uFF09",
6051
+ feedbackSend: "\u63D0\u4EA4",
6052
+ feedbackDismiss: "\u5173\u95ED",
6053
+ feedbackThanks: "\u8C22\u8C22\uFF0C\u8FD9\u5BF9\u6211\u4EEC\u5F88\u6709\u5E2E\u52A9\u3002",
6054
+ feedbackNotSent: "\u6CA1\u6709\u63D0\u4EA4\u6210\u529F\u3002",
6007
6055
  prevSuggestion: "\u4E0A\u4E00\u4E2A\u5EFA\u8BAE",
6008
6056
  nextSuggestion: "\u4E0B\u4E00\u4E2A\u5EFA\u8BAE",
6009
6057
  conceptIllustration: "\u6982\u5FF5\u793A\u610F\u56FE",
6010
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",
6073
+ seoTitle: "\u63CF\u8FF0\u95EE\u9898\uFF0C\u83B7\u5F97\u7B54\u6848",
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",
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",
6011
6076
  capabilities: ["\u57FA\u4E8E\u6211\u4EEC\u81EA\u5DF1\u7684\u6587\u6863", "\u8DE8\u4EA7\u54C1\u5BF9\u6BD4", "\u76F4\u8FBE\u6B63\u786E\u7684\u9875\u9762"],
6012
6077
  prompts: [
6013
6078
  "\u6BCF\u95E8\u8BFE\u7A0B\u90FD\u8BB0\u5728\u4E0D\u540C\u7684\u8868\u683C\u91CC\u3002",
@@ -6051,10 +6116,41 @@ var HI = {
6051
6116
  noAnswer: "\u092F\u0939 \u092E\u0941\u091D\u0947 \u0939\u092E\u093E\u0930\u0947 \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u092E\u0947\u0902 \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E, \u0907\u0938\u0932\u093F\u090F \u0928\u0940\u091A\u0947 \u0926\u093F\u092F\u093E \u0909\u0924\u094D\u0924\u0930 \u0915\u093F\u0938\u0940 \u0938\u094D\u0930\u094B\u0924 \u092A\u0930 \u0906\u0927\u093E\u0930\u093F\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u0926\u0942\u0938\u0930\u0947 \u0936\u092C\u094D\u0926\u094B\u0902 \u092E\u0947\u0902 \u092A\u0942\u091B\u0947\u0902, \u092F\u093E",
6052
6117
  answerDidNotArrive: "\u0935\u0939 \u0909\u0924\u094D\u0924\u0930 \u0928\u0939\u0940\u0902 \u0906 \u0938\u0915\u093E\u0964 \u0915\u0943\u092A\u092F\u093E \u0926\u094B\u092C\u093E\u0930\u093E \u092A\u0942\u091B\u0947\u0902\u0964",
6053
6118
  askHuman: "\u0939\u092E\u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0915\u0930\u0947\u0902",
6119
+ feedbackPrompt: "\u0915\u094D\u092F\u093E \u092F\u0939 \u0909\u0924\u094D\u0924\u0930 \u092E\u0926\u0926\u0917\u093E\u0930 \u0925\u093E?",
6120
+ feedbackHelpful: "\u092E\u0926\u0926\u0917\u093E\u0930",
6121
+ feedbackNotHelpful: "\u092E\u0926\u0926\u0917\u093E\u0930 \u0928\u0939\u0940\u0902",
6122
+ feedbackReasonTitle: "\u0915\u094D\u092F\u093E \u0920\u0940\u0915 \u0928\u0939\u0940\u0902 \u0925\u093E?",
6123
+ feedbackReasonInaccurate: "\u0917\u093C\u0932\u0924 \u091C\u093E\u0928\u0915\u093E\u0930\u0940",
6124
+ feedbackReasonIncomplete: "\u0905\u0927\u0942\u0930\u093E",
6125
+ feedbackReasonOffTopic: "\u0935\u093F\u0937\u092F \u0938\u0947 \u0939\u091F\u0915\u0930",
6126
+ feedbackReasonHardToFollow: "\u0938\u092E\u091D\u0928\u0947 \u092E\u0947\u0902 \u092E\u0941\u0936\u094D\u0915\u093F\u0932",
6127
+ feedbackReasonOther: "\u0915\u0941\u091B \u0914\u0930",
6128
+ feedbackCommentPlaceholder: "\u0915\u0941\u091B \u0914\u0930 \u092C\u0924\u093E\u090F\u0902 (\u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915)",
6129
+ feedbackSend: "\u092D\u0947\u091C\u0947\u0902",
6130
+ feedbackDismiss: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
6131
+ feedbackThanks: "\u0927\u0928\u094D\u092F\u0935\u093E\u0926, \u0907\u0938\u0938\u0947 \u092E\u0926\u0926 \u092E\u093F\u0932\u0924\u0940 \u0939\u0948\u0964",
6132
+ feedbackNotSent: "\u092F\u0939 \u092D\u0947\u091C\u093E \u0928\u0939\u0940\u0902 \u091C\u093E \u0938\u0915\u093E\u0964",
6054
6133
  prevSuggestion: "\u092A\u093F\u091B\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
6055
6134
  nextSuggestion: "\u0905\u0917\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
6056
6135
  conceptIllustration: "\u0905\u0935\u0927\u093E\u0930\u0923\u093E \u091A\u093F\u0924\u094D\u0930\u0923",
6057
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",
6151
+ seoTitle: "\u0938\u092E\u0938\u094D\u092F\u093E \u092C\u0924\u093E\u090F\u0902, \u091C\u0935\u093E\u092C \u092A\u093E\u090F\u0902",
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",
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",
6058
6154
  capabilities: [
6059
6155
  "\u0939\u092E\u093E\u0930\u0947 \u0905\u092A\u0928\u0947 \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u092A\u0930 \u0906\u0927\u093E\u0930\u093F\u0924",
6060
6156
  "\u0938\u092D\u0940 \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u0915\u0940 \u0924\u0941\u0932\u0928\u093E \u0915\u0930\u0947\u0902",
@@ -6102,10 +6198,41 @@ var ES = {
6102
6198
  noAnswer: "No he encontrado esto en nuestra documentaci\xF3n, as\xED que la respuesta de abajo no se apoya en ninguna fuente. Prueba a reformularla, o",
6103
6199
  answerDidNotArrive: "Esa respuesta no lleg\xF3. Int\xE9ntalo de nuevo.",
6104
6200
  askHuman: "habla con una persona",
6201
+ feedbackPrompt: "\xBFTe ha servido?",
6202
+ feedbackHelpful: "Me sirve",
6203
+ feedbackNotHelpful: "No me sirve",
6204
+ feedbackReasonTitle: "\xBFQu\xE9 ha fallado?",
6205
+ feedbackReasonInaccurate: "Es inexacta",
6206
+ feedbackReasonIncomplete: "Est\xE1 incompleta",
6207
+ feedbackReasonOffTopic: "No viene al caso",
6208
+ feedbackReasonHardToFollow: "Cuesta seguirla",
6209
+ feedbackReasonOther: "Otra cosa",
6210
+ feedbackCommentPlaceholder: "A\xF1ade un detalle (opcional)",
6211
+ feedbackSend: "Enviar",
6212
+ feedbackDismiss: "Cerrar",
6213
+ feedbackThanks: "Gracias, nos sirve.",
6214
+ feedbackNotSent: "No se ha podido enviar.",
6105
6215
  prevSuggestion: "Sugerencia anterior",
6106
6216
  nextSuggestion: "Sugerencia siguiente",
6107
6217
  conceptIllustration: "Ilustraci\xF3n del concepto",
6108
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",
6233
+ seoTitle: "Describe un problema y obt\xE9n una respuesta",
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.",
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.",
6109
6236
  capabilities: [
6110
6237
  "Basado en nuestra documentaci\xF3n",
6111
6238
  "Compara todo el ecosistema",
@@ -6153,10 +6280,41 @@ var AR = {
6153
6280
  noAnswer: "\u0644\u0645 \u0623\u062C\u062F \u0647\u0630\u0627 \u0641\u064A \u0648\u062B\u0627\u0626\u0642\u0646\u0627\u060C \u0644\u0630\u0627 \u0641\u0627\u0644\u0625\u062C\u0627\u0628\u0629 \u0623\u062F\u0646\u0627\u0647 \u063A\u064A\u0631 \u0645\u0633\u062A\u0646\u062F\u0629 \u0625\u0644\u0649 \u0645\u0635\u062F\u0631. \u062D\u0627\u0648\u0644 \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0635\u064A\u0627\u063A\u0629\u060C \u0623\u0648",
6154
6281
  answerDidNotArrive: "\u0644\u0645 \u062A\u0635\u0644 \u0647\u0630\u0647 \u0627\u0644\u0625\u062C\u0627\u0628\u0629. \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
6155
6282
  askHuman: "\u062A\u062D\u062F\u0651\u062B \u0625\u0644\u0649 \u0634\u062E\u0635",
6283
+ feedbackPrompt: "\u0647\u0644 \u0643\u0627\u0646\u062A \u0647\u0630\u0647 \u0627\u0644\u0625\u062C\u0627\u0628\u0629 \u0645\u0641\u064A\u062F\u0629\u061F",
6284
+ feedbackHelpful: "\u0645\u0641\u064A\u062F\u0629",
6285
+ feedbackNotHelpful: "\u063A\u064A\u0631 \u0645\u0641\u064A\u062F\u0629",
6286
+ feedbackReasonTitle: "\u0645\u0627 \u0627\u0644\u062E\u0637\u0623 \u0641\u064A\u0647\u0627\u061F",
6287
+ feedbackReasonInaccurate: "\u063A\u064A\u0631 \u062F\u0642\u064A\u0642\u0629",
6288
+ feedbackReasonIncomplete: "\u0646\u0627\u0642\u0635\u0629",
6289
+ feedbackReasonOffTopic: "\u062E\u0627\u0631\u062C \u0627\u0644\u0645\u0648\u0636\u0648\u0639",
6290
+ feedbackReasonHardToFollow: "\u0635\u0639\u0628\u0629 \u0627\u0644\u0641\u0647\u0645",
6291
+ feedbackReasonOther: "\u0634\u064A\u0621 \u0622\u062E\u0631",
6292
+ feedbackCommentPlaceholder: "\u0623\u0636\u0641 \u062A\u0641\u0635\u064A\u0644\u0627\u064B (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
6293
+ feedbackSend: "\u0625\u0631\u0633\u0627\u0644",
6294
+ feedbackDismiss: "\u0625\u063A\u0644\u0627\u0642",
6295
+ feedbackThanks: "\u0634\u0643\u0631\u064B\u0627\u060C \u0647\u0630\u0627 \u064A\u0633\u0627\u0639\u062F\u0646\u0627.",
6296
+ feedbackNotSent: "\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0625\u0631\u0633\u0627\u0644.",
6156
6297
  prevSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u0633\u0627\u0628\u0642",
6157
6298
  nextSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u062A\u0627\u0644\u064A",
6158
6299
  conceptIllustration: "\u0631\u0633\u0645 \u062A\u0648\u0636\u064A\u062D\u064A \u0644\u0644\u0645\u0641\u0647\u0648\u0645",
6159
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",
6315
+ seoTitle: "\u0635\u0641 \u0645\u0634\u0643\u0644\u062A\u0643 \u0648\u0627\u062D\u0635\u0644 \u0639\u0644\u0649 \u0625\u062C\u0627\u0628\u0629",
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.",
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.",
6160
6318
  capabilities: [
6161
6319
  "\u0645\u0628\u0646\u064A \u0639\u0644\u0649 \u0648\u062B\u0627\u0626\u0642\u0646\u0627",
6162
6320
  "\u0642\u0627\u0631\u0646 \u0639\u0628\u0631 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629",
@@ -6204,10 +6362,41 @@ var TA = {
6204
6362
  noAnswer: "\u0B87\u0BA4\u0BC1 \u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B86\u0BB5\u0BA3\u0B99\u0BCD\u0B95\u0BB3\u0BBF\u0BB2\u0BCD \u0B95\u0BBF\u0B9F\u0BC8\u0B95\u0BCD\u0B95\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8, \u0B8E\u0BA9\u0BB5\u0BC7 \u0B95\u0BC0\u0BB4\u0BC7 \u0B89\u0BB3\u0BCD\u0BB3 \u0BAA\u0BA4\u0BBF\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0BAE\u0BC2\u0BB2\u0BAE\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8. \u0BB5\u0BC7\u0BB1\u0BC1 \u0BB5\u0B95\u0BC8\u0BAF\u0BBF\u0BB2\u0BCD \u0B95\u0BC7\u0BB3\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD, \u0B85\u0BB2\u0BCD\u0BB2\u0BA4\u0BC1",
6205
6363
  answerDidNotArrive: "\u0B85\u0BA8\u0BCD\u0BA4\u0BAA\u0BCD \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD \u0BB5\u0BB0\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8. \u0BAE\u0BC0\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD \u0B95\u0BC7\u0B9F\u0BCD\u0B9F\u0BC1\u0BAA\u0BCD \u0BAA\u0BBE\u0BB0\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD.",
6206
6364
  askHuman: "\u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BC8\u0BA4\u0BCD \u0BA4\u0BCA\u0B9F\u0BB0\u0BCD\u0BAA\u0BC1 \u0B95\u0BCA\u0BB3\u0BCD\u0BB3\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
6365
+ feedbackPrompt: "\u0B87\u0BA8\u0BCD\u0BA4\u0BAA\u0BCD \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD \u0BAA\u0BAF\u0BA9\u0BC1\u0BB3\u0BCD\u0BB3\u0BA4\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BA4\u0BBE?",
6366
+ feedbackHelpful: "\u0BAA\u0BAF\u0BA9\u0BC1\u0BB3\u0BCD\u0BB3\u0BA4\u0BC1",
6367
+ feedbackNotHelpful: "\u0BAA\u0BAF\u0BA9\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8",
6368
+ feedbackReasonTitle: "\u0B8E\u0BA9\u0BCD\u0BA9 \u0B9A\u0BB0\u0BBF\u0BAF\u0BBE\u0B95 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8?",
6369
+ feedbackReasonInaccurate: "\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BA4\u0B95\u0BB5\u0BB2\u0BCD",
6370
+ feedbackReasonIncomplete: "\u0BAE\u0BC1\u0BB4\u0BC1\u0BAE\u0BC8\u0BAF\u0BB1\u0BCD\u0BB1\u0BA4\u0BC1",
6371
+ feedbackReasonOffTopic: "\u0BA4\u0BB2\u0BC8\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B85\u0BAA\u0BCD\u0BAA\u0BBE\u0BB1\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1",
6372
+ feedbackReasonHardToFollow: "\u0BAA\u0BC1\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0B95\u0BCA\u0BB3\u0BCD\u0BB3 \u0B95\u0B9F\u0BBF\u0BA9\u0BAE\u0BCD",
6373
+ feedbackReasonOther: "\u0BB5\u0BC7\u0BB1\u0BC1 \u0B8F\u0BA4\u0BCB",
6374
+ feedbackCommentPlaceholder: "\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BB5\u0BBF\u0BB5\u0BB0\u0BAE\u0BCD (\u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD)",
6375
+ feedbackSend: "\u0B85\u0BA9\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1",
6376
+ feedbackDismiss: "\u0BAE\u0BC2\u0B9F\u0BC1",
6377
+ feedbackThanks: "\u0BA8\u0BA9\u0BCD\u0BB1\u0BBF, \u0B87\u0BA4\u0BC1 \u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B89\u0BA4\u0BB5\u0BC1\u0B95\u0BBF\u0BB1\u0BA4\u0BC1.",
6378
+ feedbackNotSent: "\u0B85\u0BA9\u0BC1\u0BAA\u0BCD\u0BAA \u0BAE\u0BC1\u0B9F\u0BBF\u0BAF\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8.",
6207
6379
  prevSuggestion: "\u0BAE\u0BC1\u0BA8\u0BCD\u0BA4\u0BC8\u0BAF \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
6208
6380
  nextSuggestion: "\u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4 \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
6209
6381
  conceptIllustration: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1 \u0BB5\u0BBF\u0BB3\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BAE\u0BCD",
6210
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",
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",
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.",
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.",
6211
6400
  capabilities: [
6212
6401
  "\u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B9A\u0BCA\u0BA8\u0BCD\u0BA4 \u0B86\u0BB5\u0BA3\u0B99\u0BCD\u0B95\u0BB3\u0BBF\u0BA9\u0BCD \u0B85\u0B9F\u0BBF\u0BAA\u0BCD\u0BAA\u0B9F\u0BC8\u0BAF\u0BBF\u0BB2\u0BCD",
6213
6402
  "\u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8 \u0B92\u0BAA\u0BCD\u0BAA\u0BBF\u0B9F\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
@@ -6248,6 +6437,193 @@ function exploreStrings(locale) {
6248
6437
  function fill(template, values) {
6249
6438
  return template.replace(/\{(\w+)\}/g, (match, key) => values[key] ?? match);
6250
6439
  }
6440
+
6441
+ // src/components/explore-types.ts
6442
+ var EXPLORE_FEEDBACK_REASONS = [
6443
+ "INACCURATE",
6444
+ "INCOMPLETE",
6445
+ "OFF_TOPIC",
6446
+ "HARD_TO_FOLLOW",
6447
+ "OTHER"
6448
+ ];
6449
+ var EXPLORE_MESSAGE_FIELDS = (
6450
+ /* GraphQL */
6451
+ `
6452
+ id
6453
+ conversationId
6454
+ role
6455
+ status
6456
+ content
6457
+ partialContent
6458
+ activity
6459
+ references {
6460
+ url
6461
+ title
6462
+ description
6463
+ product
6464
+ imageUrl
6465
+ index
6466
+ }
6467
+ ctas {
6468
+ kind
6469
+ label
6470
+ url
6471
+ product
6472
+ }
6473
+ followUps
6474
+ answered
6475
+ attachments {
6476
+ name
6477
+ mimeType
6478
+ size
6479
+ textExtracted
6480
+ }
6481
+ errorCode
6482
+ createdAt
6483
+ completedAt
6484
+ `
6485
+ );
6486
+ var EXPLORE_OWN_MESSAGE_FIELDS = (
6487
+ /* GraphQL */
6488
+ `
6489
+ ${EXPLORE_MESSAGE_FIELDS}
6490
+ feedback {
6491
+ rating
6492
+ reason
6493
+ comment
6494
+ createdAt
6495
+ }
6496
+ `
6497
+ );
6498
+ var EXPLORE_CATALOG_ESTABLISHED_FIELDS = (
6499
+ /* GraphQL */
6500
+ `
6501
+ enabled
6502
+ products {
6503
+ slug
6504
+ name
6505
+ tagline
6506
+ website
6507
+ }
6508
+ examplePrompts
6509
+ welcomeTitle
6510
+ welcomeBody
6511
+ limits {
6512
+ maxMessageLength
6513
+ maxTurnsPerConversation
6514
+ messagesPerDay
6515
+ historyTurns
6516
+ }
6517
+ captchaRequired
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}
6538
+ }
6539
+ }
6540
+ `
6541
+ );
6542
+ }
6543
+ var EXPLORE_CATALOG_QUERY = exploreCatalogDocument(
6544
+ EXPLORE_CATALOG_HIGHLIGHT_FIELD
6545
+ );
6546
+ var EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS = exploreCatalogDocument("");
6547
+ var EXPLORE_MESSAGE_QUERY = (
6548
+ /* GraphQL */
6549
+ `
6550
+ query ExploreMessage($conversationToken: String!, $id: ID!) {
6551
+ exploreMessage(conversationToken: $conversationToken, id: $id) {
6552
+ ${EXPLORE_OWN_MESSAGE_FIELDS}
6553
+ }
6554
+ }
6555
+ `
6556
+ );
6557
+ var SEND_EXPLORE_MESSAGE_MUTATION = (
6558
+ /* GraphQL */
6559
+ `
6560
+ mutation SendExploreMessage($input: SendExploreMessageInput!) {
6561
+ sendExploreMessage(input: $input) {
6562
+ conversation {
6563
+ id
6564
+ token
6565
+ productSlug
6566
+ turnCount
6567
+ createdAt
6568
+ }
6569
+ userMessage {
6570
+ ${EXPLORE_OWN_MESSAGE_FIELDS}
6571
+ }
6572
+ assistantMessage {
6573
+ ${EXPLORE_OWN_MESSAGE_FIELDS}
6574
+ }
6575
+ remainingToday
6576
+ }
6577
+ }
6578
+ `
6579
+ );
6580
+ var RECORD_EXPLORE_CLICK_MUTATION = (
6581
+ /* GraphQL */
6582
+ `
6583
+ mutation RecordExploreClick($input: RecordExploreClickInput!) {
6584
+ recordExploreClick(input: $input) {
6585
+ recorded
6586
+ }
6587
+ }
6588
+ `
6589
+ );
6590
+ var SUBMIT_EXPLORE_FEEDBACK_MUTATION = (
6591
+ /* GraphQL */
6592
+ `
6593
+ mutation SubmitExploreFeedback($input: SubmitExploreFeedbackInput!) {
6594
+ submitExploreFeedback(input: $input) {
6595
+ recorded
6596
+ feedback {
6597
+ rating
6598
+ reason
6599
+ comment
6600
+ createdAt
6601
+ }
6602
+ }
6603
+ }
6604
+ `
6605
+ );
6606
+ var EXPLORE_FEEDBACK_COMMENT_SOFT_MAX = 500;
6607
+ var CREATE_EXPLORE_SHARE_LINK_MUTATION = (
6608
+ /* GraphQL */
6609
+ `
6610
+ mutation CreateExploreShareLink($conversationToken: String!) {
6611
+ createExploreShareLink(conversationToken: $conversationToken) {
6612
+ shareToken
6613
+ }
6614
+ }
6615
+ `
6616
+ );
6617
+ var EXPLORE_SHARED_CONVERSATION_QUERY = (
6618
+ /* GraphQL */
6619
+ `
6620
+ query ExploreSharedConversation($shareToken: String!) {
6621
+ exploreSharedConversation(shareToken: $shareToken) {
6622
+ ${EXPLORE_MESSAGE_FIELDS}
6623
+ }
6624
+ }
6625
+ `
6626
+ );
6251
6627
  var PROSE_CSS = `
6252
6628
  .boff-prose {
6253
6629
  max-width: none;
@@ -6425,135 +6801,6 @@ function ProseStyles() {
6425
6801
  return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: PROSE_CSS } });
6426
6802
  }
6427
6803
 
6428
- // src/components/explore-types.ts
6429
- var EXPLORE_MESSAGE_FIELDS = (
6430
- /* GraphQL */
6431
- `
6432
- id
6433
- conversationId
6434
- role
6435
- status
6436
- content
6437
- partialContent
6438
- activity
6439
- references {
6440
- url
6441
- title
6442
- description
6443
- product
6444
- imageUrl
6445
- index
6446
- }
6447
- ctas {
6448
- kind
6449
- label
6450
- url
6451
- product
6452
- }
6453
- followUps
6454
- answered
6455
- attachments {
6456
- name
6457
- mimeType
6458
- size
6459
- textExtracted
6460
- }
6461
- errorCode
6462
- createdAt
6463
- completedAt
6464
- `
6465
- );
6466
- var EXPLORE_CATALOG_QUERY = (
6467
- /* GraphQL */
6468
- `
6469
- query ExploreCatalog($productSlug: String) {
6470
- exploreCatalog(productSlug: $productSlug) {
6471
- enabled
6472
- products {
6473
- slug
6474
- name
6475
- tagline
6476
- website
6477
- }
6478
- examplePrompts
6479
- welcomeTitle
6480
- welcomeBody
6481
- limits {
6482
- maxMessageLength
6483
- maxTurnsPerConversation
6484
- messagesPerDay
6485
- historyTurns
6486
- }
6487
- captchaRequired
6488
- recaptchaSiteKey
6489
- }
6490
- }
6491
- `
6492
- );
6493
- var EXPLORE_MESSAGE_QUERY = (
6494
- /* GraphQL */
6495
- `
6496
- query ExploreMessage($conversationToken: String!, $id: ID!) {
6497
- exploreMessage(conversationToken: $conversationToken, id: $id) {
6498
- ${EXPLORE_MESSAGE_FIELDS}
6499
- }
6500
- }
6501
- `
6502
- );
6503
- var SEND_EXPLORE_MESSAGE_MUTATION = (
6504
- /* GraphQL */
6505
- `
6506
- mutation SendExploreMessage($input: SendExploreMessageInput!) {
6507
- sendExploreMessage(input: $input) {
6508
- conversation {
6509
- id
6510
- token
6511
- productSlug
6512
- turnCount
6513
- createdAt
6514
- }
6515
- userMessage {
6516
- ${EXPLORE_MESSAGE_FIELDS}
6517
- }
6518
- assistantMessage {
6519
- ${EXPLORE_MESSAGE_FIELDS}
6520
- }
6521
- remainingToday
6522
- }
6523
- }
6524
- `
6525
- );
6526
- var RECORD_EXPLORE_CLICK_MUTATION = (
6527
- /* GraphQL */
6528
- `
6529
- mutation RecordExploreClick($input: RecordExploreClickInput!) {
6530
- recordExploreClick(input: $input) {
6531
- recorded
6532
- }
6533
- }
6534
- `
6535
- );
6536
- var CREATE_EXPLORE_SHARE_LINK_MUTATION = (
6537
- /* GraphQL */
6538
- `
6539
- mutation CreateExploreShareLink($conversationToken: String!) {
6540
- createExploreShareLink(conversationToken: $conversationToken) {
6541
- shareToken
6542
- }
6543
- }
6544
- `
6545
- );
6546
- var EXPLORE_SHARED_CONVERSATION_QUERY = (
6547
- /* GraphQL */
6548
- `
6549
- query ExploreSharedConversation($shareToken: String!) {
6550
- exploreSharedConversation(shareToken: $shareToken) {
6551
- ${EXPLORE_MESSAGE_FIELDS}
6552
- }
6553
- }
6554
- `
6555
- );
6556
-
6557
6804
  // src/data/products.ts
6558
6805
  var ECOSYSTEM_PRODUCTS = [
6559
6806
  {
@@ -6837,7 +7084,12 @@ function buildFallbackCatalog(examplePrompts, welcome) {
6837
7084
  welcomeBody: welcome?.body ?? FALLBACK_WELCOME_BODY,
6838
7085
  limits: FALLBACK_EXPLORE_LIMITS,
6839
7086
  captchaRequired: false,
6840
- 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: []
6841
7093
  };
6842
7094
  }
6843
7095
  function normalizeCatalog(raw, fallback) {
@@ -6854,9 +7106,27 @@ function normalizeCatalog(raw, fallback) {
6854
7106
  historyTurns: raw.limits?.historyTurns || fallback.limits.historyTurns
6855
7107
  },
6856
7108
  captchaRequired: raw.captchaRequired === true,
6857
- 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
6858
7117
  };
6859
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
+ }
6860
7130
  var RATE_LIMIT_CODES = /* @__PURE__ */ new Set([
6861
7131
  "RATE_LIMITED",
6862
7132
  "HTTP_429",
@@ -7196,11 +7466,19 @@ function useExploreChat(options = {}) {
7196
7466
  useEffect(() => {
7197
7467
  let cancelled = false;
7198
7468
  const load = async () => {
7199
- const res = await client.query(
7469
+ const variables = { productSlug: productSlug ?? null };
7470
+ let res = await client.query(
7200
7471
  EXPLORE_CATALOG_QUERY,
7201
- { productSlug: productSlug ?? null }
7472
+ variables
7202
7473
  );
7203
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
+ }
7204
7482
  const raw = res.data?.exploreCatalog;
7205
7483
  if (res.errors?.length || !raw) {
7206
7484
  console.warn(
@@ -7581,6 +7859,42 @@ function useExploreChat(options = {}) {
7581
7859
  },
7582
7860
  [client]
7583
7861
  );
7862
+ const submitFeedback = useCallback(
7863
+ async (messageId, rating, detail) => {
7864
+ const token = conversationTokenRef.current;
7865
+ if (!token) return false;
7866
+ const comment = detail?.comment?.trim();
7867
+ const input = {
7868
+ conversationToken: token,
7869
+ messageId,
7870
+ rating,
7871
+ // Only meaningful with NOT_HELPFUL. The server stores null for HELPFUL either
7872
+ // way; sending it would just be noise the backend has to defend against.
7873
+ reason: rating === "NOT_HELPFUL" ? detail?.reason ?? null : null,
7874
+ comment: comment ? comment : null
7875
+ };
7876
+ try {
7877
+ const res = await client.mutate(
7878
+ SUBMIT_EXPLORE_FEEDBACK_MUTATION,
7879
+ { input }
7880
+ );
7881
+ const result = res?.data?.submitExploreFeedback;
7882
+ if (!result?.recorded) return false;
7883
+ const recorded = result.feedback;
7884
+ if (recorded && mountedRef.current) {
7885
+ setMessages(
7886
+ (current) => current.map(
7887
+ (message) => message.id === messageId ? { ...message, feedback: recorded } : message
7888
+ )
7889
+ );
7890
+ }
7891
+ return true;
7892
+ } catch {
7893
+ return false;
7894
+ }
7895
+ },
7896
+ [client]
7897
+ );
7584
7898
  return {
7585
7899
  phase,
7586
7900
  catalog,
@@ -7600,6 +7914,7 @@ function useExploreChat(options = {}) {
7600
7914
  deleteConversation,
7601
7915
  clearHistory,
7602
7916
  recordClick,
7917
+ submitFeedback,
7603
7918
  createShareLink,
7604
7919
  isSharedView
7605
7920
  };
@@ -8330,6 +8645,122 @@ function isInlineImageAllowed(src, origins) {
8330
8645
  if (url.protocol !== "https:" || url.username || url.password) return false;
8331
8646
  return origins.has(url.origin);
8332
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
+ }
8333
8764
  var InlineImageScopeContext = createContext(null);
8334
8765
  var InsideLinkContext = createContext(false);
8335
8766
  function AnswerLink(props) {
@@ -8527,6 +8958,315 @@ function ThinkingIndicator({ activity }) {
8527
8958
  }
8528
8959
  );
8529
8960
  }
8961
+ function AnswerFeedback({
8962
+ strings: T,
8963
+ messageId,
8964
+ feedback,
8965
+ onSubmit
8966
+ }) {
8967
+ const [local, setLocal] = useState(null);
8968
+ const [failed, setFailed] = useState(false);
8969
+ const [sending, setSending] = useState(false);
8970
+ const [chooserOpen, setChooserOpen] = useState(false);
8971
+ const [reason, setReason] = useState(null);
8972
+ const [comment, setComment] = useState("");
8973
+ const downRef = useRef(null);
8974
+ const firstReasonRef = useRef(null);
8975
+ const inFlightRef = useRef(false);
8976
+ const panelId = `boff-explore-feedback-${messageId}`;
8977
+ const rating = local ?? feedback?.rating ?? null;
8978
+ const rated = rating !== null;
8979
+ const reasonLabels = {
8980
+ INACCURATE: T.feedbackReasonInaccurate,
8981
+ INCOMPLETE: T.feedbackReasonIncomplete,
8982
+ OFF_TOPIC: T.feedbackReasonOffTopic,
8983
+ HARD_TO_FOLLOW: T.feedbackReasonHardToFollow,
8984
+ OTHER: T.feedbackReasonOther
8985
+ };
8986
+ const closeChooser = useCallback(() => {
8987
+ setChooserOpen(false);
8988
+ downRef.current?.focus();
8989
+ }, []);
8990
+ const submit = useCallback(
8991
+ async (next, detail) => {
8992
+ if (inFlightRef.current) return;
8993
+ inFlightRef.current = true;
8994
+ setSending(true);
8995
+ setFailed(false);
8996
+ setLocal(next);
8997
+ const recorded = await onSubmit(next, detail);
8998
+ inFlightRef.current = false;
8999
+ setSending(false);
9000
+ if (recorded) return;
9001
+ setLocal(null);
9002
+ setFailed(true);
9003
+ },
9004
+ [onSubmit]
9005
+ );
9006
+ const onThumbUp = useCallback(() => {
9007
+ setChooserOpen(false);
9008
+ void submit("HELPFUL");
9009
+ }, [submit]);
9010
+ const onThumbDown = useCallback(() => {
9011
+ setChooserOpen((open) => !open);
9012
+ }, []);
9013
+ const onSendReason = useCallback(() => {
9014
+ setChooserOpen(false);
9015
+ void submit("NOT_HELPFUL", { reason, comment });
9016
+ }, [comment, reason, submit]);
9017
+ useEffect(() => {
9018
+ if (!chooserOpen) return;
9019
+ firstReasonRef.current?.focus();
9020
+ }, [chooserOpen]);
9021
+ const thumbClass = (active) => cn(
9022
+ "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border transition-colors",
9023
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
9024
+ "disabled:pointer-events-none disabled:opacity-50",
9025
+ active ? "border-primary/40 bg-accent text-primary" : "border-border bg-card text-muted-foreground hover:border-primary/40 hover:bg-accent hover:text-foreground"
9026
+ );
9027
+ return /* @__PURE__ */ jsxs(
9028
+ "div",
9029
+ {
9030
+ "data-boff-explore": "feedback",
9031
+ "data-rating": rating ?? "none",
9032
+ className: "pt-0.5",
9033
+ children: [
9034
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [
9035
+ /* @__PURE__ */ jsx(
9036
+ "p",
9037
+ {
9038
+ "data-boff-explore": "feedback-status",
9039
+ role: "status",
9040
+ className: "text-xs text-muted-foreground",
9041
+ children: failed ? T.feedbackNotSent : rated ? T.feedbackThanks : T.feedbackPrompt
9042
+ }
9043
+ ),
9044
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
9045
+ /* @__PURE__ */ jsx(
9046
+ "button",
9047
+ {
9048
+ "data-boff-explore": "feedback-up",
9049
+ type: "button",
9050
+ disabled: sending,
9051
+ "aria-label": T.feedbackHelpful,
9052
+ title: T.feedbackHelpful,
9053
+ "aria-pressed": rating === "HELPFUL",
9054
+ onClick: onThumbUp,
9055
+ className: thumbClass(rating === "HELPFUL"),
9056
+ children: /* @__PURE__ */ jsx(ThumbsUp, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
9057
+ }
9058
+ ),
9059
+ /* @__PURE__ */ jsx(
9060
+ "button",
9061
+ {
9062
+ ref: downRef,
9063
+ "data-boff-explore": "feedback-down",
9064
+ type: "button",
9065
+ disabled: sending,
9066
+ "aria-label": T.feedbackNotHelpful,
9067
+ title: T.feedbackNotHelpful,
9068
+ "aria-pressed": rating === "NOT_HELPFUL",
9069
+ "aria-expanded": chooserOpen,
9070
+ "aria-controls": chooserOpen ? panelId : void 0,
9071
+ onClick: onThumbDown,
9072
+ className: thumbClass(rating === "NOT_HELPFUL" || chooserOpen),
9073
+ children: /* @__PURE__ */ jsx(ThumbsDown, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
9074
+ }
9075
+ )
9076
+ ] })
9077
+ ] }),
9078
+ chooserOpen ? /* @__PURE__ */ jsxs(
9079
+ "div",
9080
+ {
9081
+ id: panelId,
9082
+ "data-boff-explore": "feedback-reasons",
9083
+ role: "group",
9084
+ "aria-label": T.feedbackReasonTitle,
9085
+ onKeyDown: (event) => {
9086
+ if (event.key !== "Escape") return;
9087
+ event.stopPropagation();
9088
+ closeChooser();
9089
+ },
9090
+ className: "boff-explore-fade mt-2 rounded-xl border border-border bg-card p-3",
9091
+ children: [
9092
+ /* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-medium text-card-foreground", children: T.feedbackReasonTitle }),
9093
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: EXPLORE_FEEDBACK_REASONS.map((code, index) => /* @__PURE__ */ jsx(
9094
+ "button",
9095
+ {
9096
+ ref: index === 0 ? firstReasonRef : void 0,
9097
+ "data-boff-explore": "feedback-reason",
9098
+ "data-reason": code,
9099
+ type: "button",
9100
+ "aria-pressed": reason === code,
9101
+ onClick: () => setReason((current) => current === code ? null : code),
9102
+ className: cn(
9103
+ "inline-flex max-w-full items-center rounded-full border px-3 py-1 text-xs transition-colors",
9104
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
9105
+ reason === code ? "border-primary/40 bg-accent text-primary" : "border-border bg-background text-muted-foreground hover:border-primary/40 hover:bg-accent hover:text-foreground"
9106
+ ),
9107
+ children: /* @__PURE__ */ jsx("span", { className: "truncate", children: reasonLabels[code] })
9108
+ },
9109
+ code
9110
+ )) }),
9111
+ /* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-wrap items-center gap-2", children: [
9112
+ /* @__PURE__ */ jsx(
9113
+ "input",
9114
+ {
9115
+ "data-boff-explore": "feedback-comment",
9116
+ type: "text",
9117
+ value: comment,
9118
+ onChange: (event) => setComment(event.target.value),
9119
+ onKeyDown: (event) => {
9120
+ if (event.key !== "Enter") return;
9121
+ event.preventDefault();
9122
+ onSendReason();
9123
+ },
9124
+ "aria-label": T.feedbackCommentPlaceholder,
9125
+ placeholder: T.feedbackCommentPlaceholder,
9126
+ maxLength: EXPLORE_FEEDBACK_COMMENT_SOFT_MAX,
9127
+ className: "min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-base text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:text-sm"
9128
+ }
9129
+ ),
9130
+ /* @__PURE__ */ jsx(
9131
+ Button,
9132
+ {
9133
+ "data-boff-explore": "feedback-send",
9134
+ type: "button",
9135
+ size: "sm",
9136
+ disabled: sending,
9137
+ onClick: onSendReason,
9138
+ children: T.feedbackSend
9139
+ }
9140
+ ),
9141
+ /* @__PURE__ */ jsx(
9142
+ Button,
9143
+ {
9144
+ "data-boff-explore": "feedback-dismiss",
9145
+ type: "button",
9146
+ size: "sm",
9147
+ variant: "ghost",
9148
+ className: "text-muted-foreground",
9149
+ onClick: closeChooser,
9150
+ children: T.feedbackDismiss
9151
+ }
9152
+ )
9153
+ ] })
9154
+ ]
9155
+ }
9156
+ ) : null
9157
+ ]
9158
+ }
9159
+ );
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
+ }
8530
9270
  function UserBubble({
8531
9271
  strings: T,
8532
9272
  message
@@ -8572,10 +9312,12 @@ function AssistantBubble({
8572
9312
  message,
8573
9313
  activity,
8574
9314
  imageOrigins,
9315
+ productNames,
8575
9316
  onNavigate,
8576
9317
  anchorRef,
8577
9318
  onFollow,
8578
- onFollowUp
9319
+ onFollowUp,
9320
+ onFeedback
8579
9321
  }) {
8580
9322
  const streaming = message.status === "PENDING" || message.status === "RUNNING";
8581
9323
  const body = message.content || message.partialContent || "";
@@ -8599,6 +9341,15 @@ function AssistantBubble({
8599
9341
  }),
8600
9342
  [T, completed, imageOrigins, failedImages, markImageFailed]
8601
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;
8602
9353
  return /* @__PURE__ */ jsxs(
8603
9354
  "div",
8604
9355
  {
@@ -8648,6 +9399,7 @@ function AssistantBubble({
8648
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 }) }) }),
8649
9400
  streaming ? /* @__PURE__ */ jsx("span", { className: "boff-explore-caret", "aria-hidden": "true" }) : null
8650
9401
  ] }) : null,
9402
+ grounded && provenance.total > 0 ? /* @__PURE__ */ jsx(ProvenanceChips, { strings: T, provenance }) : null,
8651
9403
  streaming ? /* @__PURE__ */ jsx(ThinkingIndicator, { activity }) : null,
8652
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,
8653
9405
  message.references.length > 0 ? /* @__PURE__ */ jsxs("div", { children: [
@@ -8686,7 +9438,17 @@ function AssistantBubble({
8686
9438
  },
8687
9439
  question
8688
9440
  )) })
8689
- ] }) : null
9441
+ ] }) : null,
9442
+ completed && copyText !== "" ? /* @__PURE__ */ jsx(AnswerActions, { strings: T, text: copyText }) : null,
9443
+ completed && onFeedback ? /* @__PURE__ */ jsx(
9444
+ AnswerFeedback,
9445
+ {
9446
+ strings: T,
9447
+ messageId: message.id,
9448
+ feedback: message.feedback,
9449
+ onSubmit: onFeedback
9450
+ }
9451
+ ) : null
8690
9452
  ] })
8691
9453
  ]
8692
9454
  }
@@ -8890,6 +9652,96 @@ function ProductStrip({
8890
9652
  }
8891
9653
  );
8892
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
+ }
8893
9745
  function DisclaimerDialog({
8894
9746
  open,
8895
9747
  onClose,
@@ -8996,6 +9848,7 @@ function WelcomeState({
8996
9848
  body,
8997
9849
  prompts,
8998
9850
  products,
9851
+ conceptHighlights,
8999
9852
  focusProduct,
9000
9853
  onPrompt,
9001
9854
  onFocus,
@@ -9034,6 +9887,15 @@ function WelcomeState({
9034
9887
  }
9035
9888
  )
9036
9889
  ] }) : null,
9890
+ /* @__PURE__ */ jsx(
9891
+ ConceptStrip,
9892
+ {
9893
+ strings: T,
9894
+ highlights: conceptHighlights,
9895
+ onAsk: onPrompt,
9896
+ disabled
9897
+ }
9898
+ ),
9037
9899
  products.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-6", children: [
9038
9900
  /* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
9039
9901
  /* @__PURE__ */ jsx(
@@ -9090,6 +9952,7 @@ function ExplorePage({
9090
9952
  deleteConversation,
9091
9953
  clearHistory,
9092
9954
  recordClick,
9955
+ submitFeedback,
9093
9956
  createShareLink,
9094
9957
  isSharedView
9095
9958
  } = useExploreChat({
@@ -9146,10 +10009,18 @@ function ExplorePage({
9146
10009
  () => catalog.products.find((p) => p.slug === focusProduct)?.name ?? null,
9147
10010
  [catalog.products, focusProduct]
9148
10011
  );
10012
+ const headProductName = useMemo(
10013
+ () => productSlug ? catalog.products.find((p) => p.slug === productSlug)?.name ?? null : null,
10014
+ [catalog.products, productSlug]
10015
+ );
9149
10016
  const imageOrigins = useMemo(
9150
10017
  () => inlineImageOrigins(catalog.products),
9151
10018
  [catalog.products]
9152
10019
  );
10020
+ const productNames = useMemo(
10021
+ () => productNamesByOrigin(catalog.products),
10022
+ [catalog.products]
10023
+ );
9153
10024
  useEffect(() => {
9154
10025
  const el = textareaRef.current;
9155
10026
  if (!el) return;
@@ -9510,16 +10381,17 @@ function ExplorePage({
9510
10381
  ),
9511
10382
  style: rootStyle,
9512
10383
  children: [
9513
- seo ? /* @__PURE__ */ jsx(
10384
+ /* @__PURE__ */ jsx(
9514
10385
  PageHead,
9515
10386
  {
9516
- title: seo.title ?? "Explore \u2014 ask anything about our products",
9517
- description: seo.description ?? "Ask questions in plain English and get answers drawn from our product documentation, with links to the exact pages they came from.",
9518
- keywords: seo.keywords,
9519
- image: seo.image,
9520
- url: seo.url
10387
+ title: seo?.title ?? T.seoTitle,
10388
+ description: seo?.description ?? (headProductName ? fill(T.seoDescriptionProduct, { product: headProductName }) : T.seoDescription),
10389
+ productName: seo?.title ? void 0 : headProductName ?? void 0,
10390
+ keywords: seo?.keywords,
10391
+ image: seo?.image,
10392
+ url: seo?.url
9521
10393
  }
9522
- ) : null,
10394
+ ),
9523
10395
  /* @__PURE__ */ jsx(ProseStyles, {}),
9524
10396
  /* @__PURE__ */ jsx(ExploreStyles, {}),
9525
10397
  !showWelcome ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 border-b border-border px-4 py-2.5", children: [
@@ -9680,6 +10552,7 @@ function ExplorePage({
9680
10552
  body: resolvedBody,
9681
10553
  prompts,
9682
10554
  products: catalog.products,
10555
+ conceptHighlights: catalog.conceptHighlights,
9683
10556
  focusProduct,
9684
10557
  onPrompt: sendPrompt,
9685
10558
  onFocus: setFocusProduct,
@@ -9693,10 +10566,12 @@ function ExplorePage({
9693
10566
  message,
9694
10567
  activity,
9695
10568
  imageOrigins,
10569
+ productNames,
9696
10570
  onNavigate,
9697
10571
  anchorRef: message.id === latestAssistantId ? latestAssistantRef : void 0,
9698
10572
  onFollow: (kind, url) => recordClick(message.id, kind, url),
9699
- onFollowUp: sendPrompt
10573
+ onFollowUp: sendPrompt,
10574
+ onFeedback: isSharedView ? void 0 : (rating, detail) => submitFeedback(message.id, rating, detail)
9700
10575
  },
9701
10576
  message.id
9702
10577
  )
@@ -14653,6 +15528,6 @@ function StoreProductDetailPage({
14653
15528
  ] });
14654
15529
  }
14655
15530
 
14656
- 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 };
14657
15532
  //# sourceMappingURL=index.mjs.map
14658
15533
  //# sourceMappingURL=index.mjs.map