@burdenoff/website-sdk 2026.922.2 → 2026.922.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5983,10 +5983,30 @@ var EN = {
5983
5983
  noAnswer: "I couldn't find this in our documentation, so the answer below is not grounded in a source. Try rephrasing, or",
5984
5984
  answerDidNotArrive: "That answer didn't come through. Try asking again.",
5985
5985
  askHuman: "ask a human",
5986
+ // An offer, not a demand: this row sits under every answer on 38 marketing sites, so the
5987
+ // wording has to be shruggable. "Was this helpful?" invites; "Please rate this answer"
5988
+ // conscripts.
5989
+ feedbackPrompt: "Was this helpful?",
5990
+ feedbackHelpful: "Helpful",
5991
+ feedbackNotHelpful: "Not helpful",
5992
+ feedbackReasonTitle: "What was off?",
5993
+ feedbackReasonInaccurate: "Inaccurate",
5994
+ feedbackReasonIncomplete: "Incomplete",
5995
+ feedbackReasonOffTopic: "Off topic",
5996
+ feedbackReasonHardToFollow: "Hard to follow",
5997
+ feedbackReasonOther: "Something else",
5998
+ feedbackCommentPlaceholder: "Add a detail (optional)",
5999
+ feedbackSend: "Send",
6000
+ feedbackDismiss: "Dismiss",
6001
+ feedbackThanks: "Thanks \u2014 that helps.",
6002
+ feedbackNotSent: "That didn't send.",
5986
6003
  prevSuggestion: "Previous suggestion",
5987
6004
  nextSuggestion: "Next suggestion",
5988
6005
  conceptIllustration: "Concept illustration",
5989
6006
  opensInNewTab: "opens in a new tab",
6007
+ seoTitle: "Describe a problem, get an answer",
6008
+ 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.",
6009
+ 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.",
5990
6010
  capabilities: [
5991
6011
  "Grounded in our own docs",
5992
6012
  "Compare across the ecosystem",
@@ -6034,10 +6054,27 @@ var ZH = {
6034
6054
  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",
6035
6055
  answerDidNotArrive: "\u8FD9\u6761\u56DE\u7B54\u6CA1\u6709\u8FD4\u56DE\u3002\u8BF7\u518D\u95EE\u4E00\u6B21\u3002",
6036
6056
  askHuman: "\u8054\u7CFB\u6211\u4EEC",
6057
+ feedbackPrompt: "\u8FD9\u4E2A\u56DE\u7B54\u6709\u5E2E\u52A9\u5417\uFF1F",
6058
+ feedbackHelpful: "\u6709\u5E2E\u52A9",
6059
+ feedbackNotHelpful: "\u6CA1\u6709\u5E2E\u52A9",
6060
+ feedbackReasonTitle: "\u54EA\u91CC\u4E0D\u5BF9\uFF1F",
6061
+ feedbackReasonInaccurate: "\u4E0D\u51C6\u786E",
6062
+ feedbackReasonIncomplete: "\u4E0D\u5B8C\u6574",
6063
+ feedbackReasonOffTopic: "\u7B54\u975E\u6240\u95EE",
6064
+ feedbackReasonHardToFollow: "\u770B\u4E0D\u592A\u61C2",
6065
+ feedbackReasonOther: "\u5176\u4ED6\u539F\u56E0",
6066
+ feedbackCommentPlaceholder: "\u8865\u5145\u8BF4\u660E\uFF08\u53EF\u9009\uFF09",
6067
+ feedbackSend: "\u63D0\u4EA4",
6068
+ feedbackDismiss: "\u5173\u95ED",
6069
+ feedbackThanks: "\u8C22\u8C22\uFF0C\u8FD9\u5BF9\u6211\u4EEC\u5F88\u6709\u5E2E\u52A9\u3002",
6070
+ feedbackNotSent: "\u6CA1\u6709\u63D0\u4EA4\u6210\u529F\u3002",
6037
6071
  prevSuggestion: "\u4E0A\u4E00\u4E2A\u5EFA\u8BAE",
6038
6072
  nextSuggestion: "\u4E0B\u4E00\u4E2A\u5EFA\u8BAE",
6039
6073
  conceptIllustration: "\u6982\u5FF5\u793A\u610F\u56FE",
6040
6074
  opensInNewTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00",
6075
+ seoTitle: "\u63CF\u8FF0\u95EE\u9898\uFF0C\u83B7\u5F97\u7B54\u6848",
6076
+ 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",
6077
+ 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",
6041
6078
  capabilities: ["\u57FA\u4E8E\u6211\u4EEC\u81EA\u5DF1\u7684\u6587\u6863", "\u8DE8\u4EA7\u54C1\u5BF9\u6BD4", "\u76F4\u8FBE\u6B63\u786E\u7684\u9875\u9762"],
6042
6079
  prompts: [
6043
6080
  "\u6BCF\u95E8\u8BFE\u7A0B\u90FD\u8BB0\u5728\u4E0D\u540C\u7684\u8868\u683C\u91CC\u3002",
@@ -6081,10 +6118,27 @@ var HI = {
6081
6118
  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",
6082
6119
  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",
6083
6120
  askHuman: "\u0939\u092E\u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0915\u0930\u0947\u0902",
6121
+ feedbackPrompt: "\u0915\u094D\u092F\u093E \u092F\u0939 \u0909\u0924\u094D\u0924\u0930 \u092E\u0926\u0926\u0917\u093E\u0930 \u0925\u093E?",
6122
+ feedbackHelpful: "\u092E\u0926\u0926\u0917\u093E\u0930",
6123
+ feedbackNotHelpful: "\u092E\u0926\u0926\u0917\u093E\u0930 \u0928\u0939\u0940\u0902",
6124
+ feedbackReasonTitle: "\u0915\u094D\u092F\u093E \u0920\u0940\u0915 \u0928\u0939\u0940\u0902 \u0925\u093E?",
6125
+ feedbackReasonInaccurate: "\u0917\u093C\u0932\u0924 \u091C\u093E\u0928\u0915\u093E\u0930\u0940",
6126
+ feedbackReasonIncomplete: "\u0905\u0927\u0942\u0930\u093E",
6127
+ feedbackReasonOffTopic: "\u0935\u093F\u0937\u092F \u0938\u0947 \u0939\u091F\u0915\u0930",
6128
+ feedbackReasonHardToFollow: "\u0938\u092E\u091D\u0928\u0947 \u092E\u0947\u0902 \u092E\u0941\u0936\u094D\u0915\u093F\u0932",
6129
+ feedbackReasonOther: "\u0915\u0941\u091B \u0914\u0930",
6130
+ feedbackCommentPlaceholder: "\u0915\u0941\u091B \u0914\u0930 \u092C\u0924\u093E\u090F\u0902 (\u0935\u0948\u0915\u0932\u094D\u092A\u093F\u0915)",
6131
+ feedbackSend: "\u092D\u0947\u091C\u0947\u0902",
6132
+ feedbackDismiss: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
6133
+ feedbackThanks: "\u0927\u0928\u094D\u092F\u0935\u093E\u0926, \u0907\u0938\u0938\u0947 \u092E\u0926\u0926 \u092E\u093F\u0932\u0924\u0940 \u0939\u0948\u0964",
6134
+ feedbackNotSent: "\u092F\u0939 \u092D\u0947\u091C\u093E \u0928\u0939\u0940\u0902 \u091C\u093E \u0938\u0915\u093E\u0964",
6084
6135
  prevSuggestion: "\u092A\u093F\u091B\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
6085
6136
  nextSuggestion: "\u0905\u0917\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
6086
6137
  conceptIllustration: "\u0905\u0935\u0927\u093E\u0930\u0923\u093E \u091A\u093F\u0924\u094D\u0930\u0923",
6087
6138
  opensInNewTab: "\u0928\u090F \u091F\u0948\u092C \u092E\u0947\u0902 \u0916\u0941\u0932\u0924\u093E \u0939\u0948",
6139
+ seoTitle: "\u0938\u092E\u0938\u094D\u092F\u093E \u092C\u0924\u093E\u090F\u0902, \u091C\u0935\u093E\u092C \u092A\u093E\u090F\u0902",
6140
+ 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",
6141
+ 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",
6088
6142
  capabilities: [
6089
6143
  "\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",
6090
6144
  "\u0938\u092D\u0940 \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u0915\u0940 \u0924\u0941\u0932\u0928\u093E \u0915\u0930\u0947\u0902",
@@ -6132,10 +6186,27 @@ var ES = {
6132
6186
  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",
6133
6187
  answerDidNotArrive: "Esa respuesta no lleg\xF3. Int\xE9ntalo de nuevo.",
6134
6188
  askHuman: "habla con una persona",
6189
+ feedbackPrompt: "\xBFTe ha servido?",
6190
+ feedbackHelpful: "Me sirve",
6191
+ feedbackNotHelpful: "No me sirve",
6192
+ feedbackReasonTitle: "\xBFQu\xE9 ha fallado?",
6193
+ feedbackReasonInaccurate: "Es inexacta",
6194
+ feedbackReasonIncomplete: "Est\xE1 incompleta",
6195
+ feedbackReasonOffTopic: "No viene al caso",
6196
+ feedbackReasonHardToFollow: "Cuesta seguirla",
6197
+ feedbackReasonOther: "Otra cosa",
6198
+ feedbackCommentPlaceholder: "A\xF1ade un detalle (opcional)",
6199
+ feedbackSend: "Enviar",
6200
+ feedbackDismiss: "Cerrar",
6201
+ feedbackThanks: "Gracias, nos sirve.",
6202
+ feedbackNotSent: "No se ha podido enviar.",
6135
6203
  prevSuggestion: "Sugerencia anterior",
6136
6204
  nextSuggestion: "Sugerencia siguiente",
6137
6205
  conceptIllustration: "Ilustraci\xF3n del concepto",
6138
6206
  opensInNewTab: "se abre en una pesta\xF1a nueva",
6207
+ seoTitle: "Describe un problema y obt\xE9n una respuesta",
6208
+ 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.",
6209
+ 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.",
6139
6210
  capabilities: [
6140
6211
  "Basado en nuestra documentaci\xF3n",
6141
6212
  "Compara todo el ecosistema",
@@ -6183,10 +6254,27 @@ var AR = {
6183
6254
  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",
6184
6255
  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.",
6185
6256
  askHuman: "\u062A\u062D\u062F\u0651\u062B \u0625\u0644\u0649 \u0634\u062E\u0635",
6257
+ feedbackPrompt: "\u0647\u0644 \u0643\u0627\u0646\u062A \u0647\u0630\u0647 \u0627\u0644\u0625\u062C\u0627\u0628\u0629 \u0645\u0641\u064A\u062F\u0629\u061F",
6258
+ feedbackHelpful: "\u0645\u0641\u064A\u062F\u0629",
6259
+ feedbackNotHelpful: "\u063A\u064A\u0631 \u0645\u0641\u064A\u062F\u0629",
6260
+ feedbackReasonTitle: "\u0645\u0627 \u0627\u0644\u062E\u0637\u0623 \u0641\u064A\u0647\u0627\u061F",
6261
+ feedbackReasonInaccurate: "\u063A\u064A\u0631 \u062F\u0642\u064A\u0642\u0629",
6262
+ feedbackReasonIncomplete: "\u0646\u0627\u0642\u0635\u0629",
6263
+ feedbackReasonOffTopic: "\u062E\u0627\u0631\u062C \u0627\u0644\u0645\u0648\u0636\u0648\u0639",
6264
+ feedbackReasonHardToFollow: "\u0635\u0639\u0628\u0629 \u0627\u0644\u0641\u0647\u0645",
6265
+ feedbackReasonOther: "\u0634\u064A\u0621 \u0622\u062E\u0631",
6266
+ feedbackCommentPlaceholder: "\u0623\u0636\u0641 \u062A\u0641\u0635\u064A\u0644\u0627\u064B (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
6267
+ feedbackSend: "\u0625\u0631\u0633\u0627\u0644",
6268
+ feedbackDismiss: "\u0625\u063A\u0644\u0627\u0642",
6269
+ feedbackThanks: "\u0634\u0643\u0631\u064B\u0627\u060C \u0647\u0630\u0627 \u064A\u0633\u0627\u0639\u062F\u0646\u0627.",
6270
+ feedbackNotSent: "\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0625\u0631\u0633\u0627\u0644.",
6186
6271
  prevSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u0633\u0627\u0628\u0642",
6187
6272
  nextSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u062A\u0627\u0644\u064A",
6188
6273
  conceptIllustration: "\u0631\u0633\u0645 \u062A\u0648\u0636\u064A\u062D\u064A \u0644\u0644\u0645\u0641\u0647\u0648\u0645",
6189
6274
  opensInNewTab: "\u064A\u064F\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629",
6275
+ seoTitle: "\u0635\u0641 \u0645\u0634\u0643\u0644\u062A\u0643 \u0648\u0627\u062D\u0635\u0644 \u0639\u0644\u0649 \u0625\u062C\u0627\u0628\u0629",
6276
+ 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.",
6277
+ 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.",
6190
6278
  capabilities: [
6191
6279
  "\u0645\u0628\u0646\u064A \u0639\u0644\u0649 \u0648\u062B\u0627\u0626\u0642\u0646\u0627",
6192
6280
  "\u0642\u0627\u0631\u0646 \u0639\u0628\u0631 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629",
@@ -6234,10 +6322,27 @@ var TA = {
6234
6322
  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",
6235
6323
  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.",
6236
6324
  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",
6325
+ 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?",
6326
+ feedbackHelpful: "\u0BAA\u0BAF\u0BA9\u0BC1\u0BB3\u0BCD\u0BB3\u0BA4\u0BC1",
6327
+ feedbackNotHelpful: "\u0BAA\u0BAF\u0BA9\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8",
6328
+ feedbackReasonTitle: "\u0B8E\u0BA9\u0BCD\u0BA9 \u0B9A\u0BB0\u0BBF\u0BAF\u0BBE\u0B95 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8?",
6329
+ feedbackReasonInaccurate: "\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BA4\u0B95\u0BB5\u0BB2\u0BCD",
6330
+ feedbackReasonIncomplete: "\u0BAE\u0BC1\u0BB4\u0BC1\u0BAE\u0BC8\u0BAF\u0BB1\u0BCD\u0BB1\u0BA4\u0BC1",
6331
+ 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",
6332
+ feedbackReasonHardToFollow: "\u0BAA\u0BC1\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0B95\u0BCA\u0BB3\u0BCD\u0BB3 \u0B95\u0B9F\u0BBF\u0BA9\u0BAE\u0BCD",
6333
+ feedbackReasonOther: "\u0BB5\u0BC7\u0BB1\u0BC1 \u0B8F\u0BA4\u0BCB",
6334
+ feedbackCommentPlaceholder: "\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BB5\u0BBF\u0BB5\u0BB0\u0BAE\u0BCD (\u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD)",
6335
+ feedbackSend: "\u0B85\u0BA9\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1",
6336
+ feedbackDismiss: "\u0BAE\u0BC2\u0B9F\u0BC1",
6337
+ 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.",
6338
+ feedbackNotSent: "\u0B85\u0BA9\u0BC1\u0BAA\u0BCD\u0BAA \u0BAE\u0BC1\u0B9F\u0BBF\u0BAF\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8.",
6237
6339
  prevSuggestion: "\u0BAE\u0BC1\u0BA8\u0BCD\u0BA4\u0BC8\u0BAF \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
6238
6340
  nextSuggestion: "\u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4 \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
6239
6341
  conceptIllustration: "\u0B95\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1 \u0BB5\u0BBF\u0BB3\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BAE\u0BCD",
6240
6342
  opensInNewTab: "\u0BAA\u0BC1\u0BA4\u0BBF\u0BAF \u0BA4\u0BBE\u0BB5\u0BB2\u0BBF\u0BB2\u0BCD \u0BA4\u0BBF\u0BB1\u0B95\u0BCD\u0B95\u0BC1\u0BAE\u0BCD",
6343
+ 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",
6344
+ 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.",
6345
+ 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.",
6241
6346
  capabilities: [
6242
6347
  "\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",
6243
6348
  "\u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8 \u0B92\u0BAA\u0BCD\u0BAA\u0BBF\u0B9F\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
@@ -6278,6 +6383,171 @@ function exploreStrings(locale) {
6278
6383
  function fill(template, values) {
6279
6384
  return template.replace(/\{(\w+)\}/g, (match, key) => values[key] ?? match);
6280
6385
  }
6386
+
6387
+ // src/components/explore-types.ts
6388
+ var EXPLORE_FEEDBACK_REASONS = [
6389
+ "INACCURATE",
6390
+ "INCOMPLETE",
6391
+ "OFF_TOPIC",
6392
+ "HARD_TO_FOLLOW",
6393
+ "OTHER"
6394
+ ];
6395
+ var EXPLORE_MESSAGE_FIELDS = (
6396
+ /* GraphQL */
6397
+ `
6398
+ id
6399
+ conversationId
6400
+ role
6401
+ status
6402
+ content
6403
+ partialContent
6404
+ activity
6405
+ references {
6406
+ url
6407
+ title
6408
+ description
6409
+ product
6410
+ imageUrl
6411
+ index
6412
+ }
6413
+ ctas {
6414
+ kind
6415
+ label
6416
+ url
6417
+ product
6418
+ }
6419
+ followUps
6420
+ answered
6421
+ attachments {
6422
+ name
6423
+ mimeType
6424
+ size
6425
+ textExtracted
6426
+ }
6427
+ errorCode
6428
+ createdAt
6429
+ completedAt
6430
+ `
6431
+ );
6432
+ var EXPLORE_OWN_MESSAGE_FIELDS = (
6433
+ /* GraphQL */
6434
+ `
6435
+ ${EXPLORE_MESSAGE_FIELDS}
6436
+ feedback {
6437
+ rating
6438
+ reason
6439
+ comment
6440
+ createdAt
6441
+ }
6442
+ `
6443
+ );
6444
+ var EXPLORE_CATALOG_QUERY = (
6445
+ /* GraphQL */
6446
+ `
6447
+ query ExploreCatalog($productSlug: String) {
6448
+ exploreCatalog(productSlug: $productSlug) {
6449
+ enabled
6450
+ products {
6451
+ slug
6452
+ name
6453
+ tagline
6454
+ website
6455
+ }
6456
+ examplePrompts
6457
+ welcomeTitle
6458
+ welcomeBody
6459
+ limits {
6460
+ maxMessageLength
6461
+ maxTurnsPerConversation
6462
+ messagesPerDay
6463
+ historyTurns
6464
+ }
6465
+ captchaRequired
6466
+ recaptchaSiteKey
6467
+ }
6468
+ }
6469
+ `
6470
+ );
6471
+ var EXPLORE_MESSAGE_QUERY = (
6472
+ /* GraphQL */
6473
+ `
6474
+ query ExploreMessage($conversationToken: String!, $id: ID!) {
6475
+ exploreMessage(conversationToken: $conversationToken, id: $id) {
6476
+ ${EXPLORE_OWN_MESSAGE_FIELDS}
6477
+ }
6478
+ }
6479
+ `
6480
+ );
6481
+ var SEND_EXPLORE_MESSAGE_MUTATION = (
6482
+ /* GraphQL */
6483
+ `
6484
+ mutation SendExploreMessage($input: SendExploreMessageInput!) {
6485
+ sendExploreMessage(input: $input) {
6486
+ conversation {
6487
+ id
6488
+ token
6489
+ productSlug
6490
+ turnCount
6491
+ createdAt
6492
+ }
6493
+ userMessage {
6494
+ ${EXPLORE_OWN_MESSAGE_FIELDS}
6495
+ }
6496
+ assistantMessage {
6497
+ ${EXPLORE_OWN_MESSAGE_FIELDS}
6498
+ }
6499
+ remainingToday
6500
+ }
6501
+ }
6502
+ `
6503
+ );
6504
+ var RECORD_EXPLORE_CLICK_MUTATION = (
6505
+ /* GraphQL */
6506
+ `
6507
+ mutation RecordExploreClick($input: RecordExploreClickInput!) {
6508
+ recordExploreClick(input: $input) {
6509
+ recorded
6510
+ }
6511
+ }
6512
+ `
6513
+ );
6514
+ var SUBMIT_EXPLORE_FEEDBACK_MUTATION = (
6515
+ /* GraphQL */
6516
+ `
6517
+ mutation SubmitExploreFeedback($input: SubmitExploreFeedbackInput!) {
6518
+ submitExploreFeedback(input: $input) {
6519
+ recorded
6520
+ feedback {
6521
+ rating
6522
+ reason
6523
+ comment
6524
+ createdAt
6525
+ }
6526
+ }
6527
+ }
6528
+ `
6529
+ );
6530
+ var EXPLORE_FEEDBACK_COMMENT_SOFT_MAX = 500;
6531
+ var CREATE_EXPLORE_SHARE_LINK_MUTATION = (
6532
+ /* GraphQL */
6533
+ `
6534
+ mutation CreateExploreShareLink($conversationToken: String!) {
6535
+ createExploreShareLink(conversationToken: $conversationToken) {
6536
+ shareToken
6537
+ }
6538
+ }
6539
+ `
6540
+ );
6541
+ var EXPLORE_SHARED_CONVERSATION_QUERY = (
6542
+ /* GraphQL */
6543
+ `
6544
+ query ExploreSharedConversation($shareToken: String!) {
6545
+ exploreSharedConversation(shareToken: $shareToken) {
6546
+ ${EXPLORE_MESSAGE_FIELDS}
6547
+ }
6548
+ }
6549
+ `
6550
+ );
6281
6551
  var PROSE_CSS = `
6282
6552
  .boff-prose {
6283
6553
  max-width: none;
@@ -6455,135 +6725,6 @@ function ProseStyles() {
6455
6725
  return /* @__PURE__ */ jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: PROSE_CSS } });
6456
6726
  }
6457
6727
 
6458
- // src/components/explore-types.ts
6459
- var EXPLORE_MESSAGE_FIELDS = (
6460
- /* GraphQL */
6461
- `
6462
- id
6463
- conversationId
6464
- role
6465
- status
6466
- content
6467
- partialContent
6468
- activity
6469
- references {
6470
- url
6471
- title
6472
- description
6473
- product
6474
- imageUrl
6475
- index
6476
- }
6477
- ctas {
6478
- kind
6479
- label
6480
- url
6481
- product
6482
- }
6483
- followUps
6484
- answered
6485
- attachments {
6486
- name
6487
- mimeType
6488
- size
6489
- textExtracted
6490
- }
6491
- errorCode
6492
- createdAt
6493
- completedAt
6494
- `
6495
- );
6496
- var EXPLORE_CATALOG_QUERY = (
6497
- /* GraphQL */
6498
- `
6499
- query ExploreCatalog($productSlug: String) {
6500
- exploreCatalog(productSlug: $productSlug) {
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
- }
6521
- `
6522
- );
6523
- var EXPLORE_MESSAGE_QUERY = (
6524
- /* GraphQL */
6525
- `
6526
- query ExploreMessage($conversationToken: String!, $id: ID!) {
6527
- exploreMessage(conversationToken: $conversationToken, id: $id) {
6528
- ${EXPLORE_MESSAGE_FIELDS}
6529
- }
6530
- }
6531
- `
6532
- );
6533
- var SEND_EXPLORE_MESSAGE_MUTATION = (
6534
- /* GraphQL */
6535
- `
6536
- mutation SendExploreMessage($input: SendExploreMessageInput!) {
6537
- sendExploreMessage(input: $input) {
6538
- conversation {
6539
- id
6540
- token
6541
- productSlug
6542
- turnCount
6543
- createdAt
6544
- }
6545
- userMessage {
6546
- ${EXPLORE_MESSAGE_FIELDS}
6547
- }
6548
- assistantMessage {
6549
- ${EXPLORE_MESSAGE_FIELDS}
6550
- }
6551
- remainingToday
6552
- }
6553
- }
6554
- `
6555
- );
6556
- var RECORD_EXPLORE_CLICK_MUTATION = (
6557
- /* GraphQL */
6558
- `
6559
- mutation RecordExploreClick($input: RecordExploreClickInput!) {
6560
- recordExploreClick(input: $input) {
6561
- recorded
6562
- }
6563
- }
6564
- `
6565
- );
6566
- var CREATE_EXPLORE_SHARE_LINK_MUTATION = (
6567
- /* GraphQL */
6568
- `
6569
- mutation CreateExploreShareLink($conversationToken: String!) {
6570
- createExploreShareLink(conversationToken: $conversationToken) {
6571
- shareToken
6572
- }
6573
- }
6574
- `
6575
- );
6576
- var EXPLORE_SHARED_CONVERSATION_QUERY = (
6577
- /* GraphQL */
6578
- `
6579
- query ExploreSharedConversation($shareToken: String!) {
6580
- exploreSharedConversation(shareToken: $shareToken) {
6581
- ${EXPLORE_MESSAGE_FIELDS}
6582
- }
6583
- }
6584
- `
6585
- );
6586
-
6587
6728
  // src/data/products.ts
6588
6729
  var ECOSYSTEM_PRODUCTS = [
6589
6730
  {
@@ -7611,6 +7752,42 @@ function useExploreChat(options = {}) {
7611
7752
  },
7612
7753
  [client]
7613
7754
  );
7755
+ const submitFeedback = React.useCallback(
7756
+ async (messageId, rating, detail) => {
7757
+ const token = conversationTokenRef.current;
7758
+ if (!token) return false;
7759
+ const comment = detail?.comment?.trim();
7760
+ const input = {
7761
+ conversationToken: token,
7762
+ messageId,
7763
+ rating,
7764
+ // Only meaningful with NOT_HELPFUL. The server stores null for HELPFUL either
7765
+ // way; sending it would just be noise the backend has to defend against.
7766
+ reason: rating === "NOT_HELPFUL" ? detail?.reason ?? null : null,
7767
+ comment: comment ? comment : null
7768
+ };
7769
+ try {
7770
+ const res = await client.mutate(
7771
+ SUBMIT_EXPLORE_FEEDBACK_MUTATION,
7772
+ { input }
7773
+ );
7774
+ const result = res?.data?.submitExploreFeedback;
7775
+ if (!result?.recorded) return false;
7776
+ const recorded = result.feedback;
7777
+ if (recorded && mountedRef.current) {
7778
+ setMessages(
7779
+ (current) => current.map(
7780
+ (message) => message.id === messageId ? { ...message, feedback: recorded } : message
7781
+ )
7782
+ );
7783
+ }
7784
+ return true;
7785
+ } catch {
7786
+ return false;
7787
+ }
7788
+ },
7789
+ [client]
7790
+ );
7614
7791
  return {
7615
7792
  phase,
7616
7793
  catalog,
@@ -7630,6 +7807,7 @@ function useExploreChat(options = {}) {
7630
7807
  deleteConversation,
7631
7808
  clearHistory,
7632
7809
  recordClick,
7810
+ submitFeedback,
7633
7811
  createShareLink,
7634
7812
  isSharedView
7635
7813
  };
@@ -8557,6 +8735,206 @@ function ThinkingIndicator({ activity }) {
8557
8735
  }
8558
8736
  );
8559
8737
  }
8738
+ function AnswerFeedback({
8739
+ strings: T,
8740
+ messageId,
8741
+ feedback,
8742
+ onSubmit
8743
+ }) {
8744
+ const [local, setLocal] = React.useState(null);
8745
+ const [failed, setFailed] = React.useState(false);
8746
+ const [sending, setSending] = React.useState(false);
8747
+ const [chooserOpen, setChooserOpen] = React.useState(false);
8748
+ const [reason, setReason] = React.useState(null);
8749
+ const [comment, setComment] = React.useState("");
8750
+ const downRef = React.useRef(null);
8751
+ const firstReasonRef = React.useRef(null);
8752
+ const inFlightRef = React.useRef(false);
8753
+ const panelId = `boff-explore-feedback-${messageId}`;
8754
+ const rating = local ?? feedback?.rating ?? null;
8755
+ const rated = rating !== null;
8756
+ const reasonLabels = {
8757
+ INACCURATE: T.feedbackReasonInaccurate,
8758
+ INCOMPLETE: T.feedbackReasonIncomplete,
8759
+ OFF_TOPIC: T.feedbackReasonOffTopic,
8760
+ HARD_TO_FOLLOW: T.feedbackReasonHardToFollow,
8761
+ OTHER: T.feedbackReasonOther
8762
+ };
8763
+ const closeChooser = React.useCallback(() => {
8764
+ setChooserOpen(false);
8765
+ downRef.current?.focus();
8766
+ }, []);
8767
+ const submit = React.useCallback(
8768
+ async (next, detail) => {
8769
+ if (inFlightRef.current) return;
8770
+ inFlightRef.current = true;
8771
+ setSending(true);
8772
+ setFailed(false);
8773
+ setLocal(next);
8774
+ const recorded = await onSubmit(next, detail);
8775
+ inFlightRef.current = false;
8776
+ setSending(false);
8777
+ if (recorded) return;
8778
+ setLocal(null);
8779
+ setFailed(true);
8780
+ },
8781
+ [onSubmit]
8782
+ );
8783
+ const onThumbUp = React.useCallback(() => {
8784
+ setChooserOpen(false);
8785
+ void submit("HELPFUL");
8786
+ }, [submit]);
8787
+ const onThumbDown = React.useCallback(() => {
8788
+ setChooserOpen((open) => !open);
8789
+ }, []);
8790
+ const onSendReason = React.useCallback(() => {
8791
+ setChooserOpen(false);
8792
+ void submit("NOT_HELPFUL", { reason, comment });
8793
+ }, [comment, reason, submit]);
8794
+ React.useEffect(() => {
8795
+ if (!chooserOpen) return;
8796
+ firstReasonRef.current?.focus();
8797
+ }, [chooserOpen]);
8798
+ const thumbClass = (active) => cn(
8799
+ "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border transition-colors",
8800
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
8801
+ "disabled:pointer-events-none disabled:opacity-50",
8802
+ 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"
8803
+ );
8804
+ return /* @__PURE__ */ jsxRuntime.jsxs(
8805
+ "div",
8806
+ {
8807
+ "data-boff-explore": "feedback",
8808
+ "data-rating": rating ?? "none",
8809
+ className: "pt-0.5",
8810
+ children: [
8811
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [
8812
+ /* @__PURE__ */ jsxRuntime.jsx(
8813
+ "p",
8814
+ {
8815
+ "data-boff-explore": "feedback-status",
8816
+ role: "status",
8817
+ className: "text-xs text-muted-foreground",
8818
+ children: failed ? T.feedbackNotSent : rated ? T.feedbackThanks : T.feedbackPrompt
8819
+ }
8820
+ ),
8821
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
8822
+ /* @__PURE__ */ jsxRuntime.jsx(
8823
+ "button",
8824
+ {
8825
+ "data-boff-explore": "feedback-up",
8826
+ type: "button",
8827
+ disabled: sending,
8828
+ "aria-label": T.feedbackHelpful,
8829
+ title: T.feedbackHelpful,
8830
+ "aria-pressed": rating === "HELPFUL",
8831
+ onClick: onThumbUp,
8832
+ className: thumbClass(rating === "HELPFUL"),
8833
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ThumbsUp, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
8834
+ }
8835
+ ),
8836
+ /* @__PURE__ */ jsxRuntime.jsx(
8837
+ "button",
8838
+ {
8839
+ ref: downRef,
8840
+ "data-boff-explore": "feedback-down",
8841
+ type: "button",
8842
+ disabled: sending,
8843
+ "aria-label": T.feedbackNotHelpful,
8844
+ title: T.feedbackNotHelpful,
8845
+ "aria-pressed": rating === "NOT_HELPFUL",
8846
+ "aria-expanded": chooserOpen,
8847
+ "aria-controls": chooserOpen ? panelId : void 0,
8848
+ onClick: onThumbDown,
8849
+ className: thumbClass(rating === "NOT_HELPFUL" || chooserOpen),
8850
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ThumbsDown, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
8851
+ }
8852
+ )
8853
+ ] })
8854
+ ] }),
8855
+ chooserOpen ? /* @__PURE__ */ jsxRuntime.jsxs(
8856
+ "div",
8857
+ {
8858
+ id: panelId,
8859
+ "data-boff-explore": "feedback-reasons",
8860
+ role: "group",
8861
+ "aria-label": T.feedbackReasonTitle,
8862
+ onKeyDown: (event) => {
8863
+ if (event.key !== "Escape") return;
8864
+ event.stopPropagation();
8865
+ closeChooser();
8866
+ },
8867
+ className: "boff-explore-fade mt-2 rounded-xl border border-border bg-card p-3",
8868
+ children: [
8869
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-medium text-card-foreground", children: T.feedbackReasonTitle }),
8870
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: EXPLORE_FEEDBACK_REASONS.map((code, index) => /* @__PURE__ */ jsxRuntime.jsx(
8871
+ "button",
8872
+ {
8873
+ ref: index === 0 ? firstReasonRef : void 0,
8874
+ "data-boff-explore": "feedback-reason",
8875
+ "data-reason": code,
8876
+ type: "button",
8877
+ "aria-pressed": reason === code,
8878
+ onClick: () => setReason((current) => current === code ? null : code),
8879
+ className: cn(
8880
+ "inline-flex max-w-full items-center rounded-full border px-3 py-1 text-xs transition-colors",
8881
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
8882
+ 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"
8883
+ ),
8884
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: reasonLabels[code] })
8885
+ },
8886
+ code
8887
+ )) }),
8888
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex flex-wrap items-center gap-2", children: [
8889
+ /* @__PURE__ */ jsxRuntime.jsx(
8890
+ "input",
8891
+ {
8892
+ "data-boff-explore": "feedback-comment",
8893
+ type: "text",
8894
+ value: comment,
8895
+ onChange: (event) => setComment(event.target.value),
8896
+ onKeyDown: (event) => {
8897
+ if (event.key !== "Enter") return;
8898
+ event.preventDefault();
8899
+ onSendReason();
8900
+ },
8901
+ "aria-label": T.feedbackCommentPlaceholder,
8902
+ placeholder: T.feedbackCommentPlaceholder,
8903
+ maxLength: EXPLORE_FEEDBACK_COMMENT_SOFT_MAX,
8904
+ 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"
8905
+ }
8906
+ ),
8907
+ /* @__PURE__ */ jsxRuntime.jsx(
8908
+ Button,
8909
+ {
8910
+ "data-boff-explore": "feedback-send",
8911
+ type: "button",
8912
+ size: "sm",
8913
+ disabled: sending,
8914
+ onClick: onSendReason,
8915
+ children: T.feedbackSend
8916
+ }
8917
+ ),
8918
+ /* @__PURE__ */ jsxRuntime.jsx(
8919
+ Button,
8920
+ {
8921
+ "data-boff-explore": "feedback-dismiss",
8922
+ type: "button",
8923
+ size: "sm",
8924
+ variant: "ghost",
8925
+ className: "text-muted-foreground",
8926
+ onClick: closeChooser,
8927
+ children: T.feedbackDismiss
8928
+ }
8929
+ )
8930
+ ] })
8931
+ ]
8932
+ }
8933
+ ) : null
8934
+ ]
8935
+ }
8936
+ );
8937
+ }
8560
8938
  function UserBubble({
8561
8939
  strings: T,
8562
8940
  message
@@ -8605,7 +8983,8 @@ function AssistantBubble({
8605
8983
  onNavigate,
8606
8984
  anchorRef,
8607
8985
  onFollow,
8608
- onFollowUp
8986
+ onFollowUp,
8987
+ onFeedback
8609
8988
  }) {
8610
8989
  const streaming = message.status === "PENDING" || message.status === "RUNNING";
8611
8990
  const body = message.content || message.partialContent || "";
@@ -8716,7 +9095,16 @@ function AssistantBubble({
8716
9095
  },
8717
9096
  question
8718
9097
  )) })
8719
- ] }) : null
9098
+ ] }) : null,
9099
+ completed && onFeedback ? /* @__PURE__ */ jsxRuntime.jsx(
9100
+ AnswerFeedback,
9101
+ {
9102
+ strings: T,
9103
+ messageId: message.id,
9104
+ feedback: message.feedback,
9105
+ onSubmit: onFeedback
9106
+ }
9107
+ ) : null
8720
9108
  ] })
8721
9109
  ]
8722
9110
  }
@@ -9120,6 +9508,7 @@ function ExplorePage({
9120
9508
  deleteConversation,
9121
9509
  clearHistory,
9122
9510
  recordClick,
9511
+ submitFeedback,
9123
9512
  createShareLink,
9124
9513
  isSharedView
9125
9514
  } = useExploreChat({
@@ -9176,6 +9565,10 @@ function ExplorePage({
9176
9565
  () => catalog.products.find((p) => p.slug === focusProduct)?.name ?? null,
9177
9566
  [catalog.products, focusProduct]
9178
9567
  );
9568
+ const headProductName = React.useMemo(
9569
+ () => productSlug ? catalog.products.find((p) => p.slug === productSlug)?.name ?? null : null,
9570
+ [catalog.products, productSlug]
9571
+ );
9179
9572
  const imageOrigins = React.useMemo(
9180
9573
  () => inlineImageOrigins(catalog.products),
9181
9574
  [catalog.products]
@@ -9540,16 +9933,17 @@ function ExplorePage({
9540
9933
  ),
9541
9934
  style: rootStyle,
9542
9935
  children: [
9543
- seo ? /* @__PURE__ */ jsxRuntime.jsx(
9936
+ /* @__PURE__ */ jsxRuntime.jsx(
9544
9937
  PageHead,
9545
9938
  {
9546
- title: seo.title ?? "Explore \u2014 ask anything about our products",
9547
- 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.",
9548
- keywords: seo.keywords,
9549
- image: seo.image,
9550
- url: seo.url
9939
+ title: seo?.title ?? T.seoTitle,
9940
+ description: seo?.description ?? (headProductName ? fill(T.seoDescriptionProduct, { product: headProductName }) : T.seoDescription),
9941
+ productName: seo?.title ? void 0 : headProductName ?? void 0,
9942
+ keywords: seo?.keywords,
9943
+ image: seo?.image,
9944
+ url: seo?.url
9551
9945
  }
9552
- ) : null,
9946
+ ),
9553
9947
  /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
9554
9948
  /* @__PURE__ */ jsxRuntime.jsx(ExploreStyles, {}),
9555
9949
  !showWelcome ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5 border-b border-border px-4 py-2.5", children: [
@@ -9726,7 +10120,8 @@ function ExplorePage({
9726
10120
  onNavigate,
9727
10121
  anchorRef: message.id === latestAssistantId ? latestAssistantRef : void 0,
9728
10122
  onFollow: (kind, url) => recordClick(message.id, kind, url),
9729
- onFollowUp: sendPrompt
10123
+ onFollowUp: sendPrompt,
10124
+ onFeedback: isSharedView ? void 0 : (rating, detail) => submitFeedback(message.id, rating, detail)
9730
10125
  },
9731
10126
  message.id
9732
10127
  )