@burdenoff/website-sdk 2026.829.4 → 2026.829.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/explore.d.mts +7 -1
- package/dist/components/explore.d.ts +7 -1
- package/dist/components/explore.js +881 -52
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +882 -53
- package/dist/components/explore.mjs.map +1 -1
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +80 -7
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +80 -7
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +66 -2
- package/dist/index.d.ts +66 -2
- package/dist/index.js +886 -56
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +887 -58
- package/dist/index.mjs.map +1 -1
- package/dist/{use-explore-chat-B-E7jN1H.d.mts → use-explore-chat-BzXCz2UM.d.mts} +38 -3
- package/dist/{use-explore-chat-B-E7jN1H.d.ts → use-explore-chat-BzXCz2UM.d.ts} +38 -3
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { createContext, useMemo, useContext, useState, useCallback, useLayoutEffect, useRef, useEffect } 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, Sparkles, RotateCcw, Link2, History, Trash2, Mic, Square, ArrowUp, BookOpenText, Layers, TriangleAlert, ChevronLeft, ChevronRight, 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, Sparkles, RotateCcw, Link2, History, Trash2, Paperclip, X, Mic, Square, ArrowUp, BookOpenText, Layers, TriangleAlert, ChevronLeft, ChevronRight, FileText, ExternalLink } 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';
|
|
@@ -4735,6 +4735,325 @@ function ElectronDownloadLink({
|
|
|
4735
4735
|
}
|
|
4736
4736
|
);
|
|
4737
4737
|
}
|
|
4738
|
+
|
|
4739
|
+
// src/components/explore-i18n.ts
|
|
4740
|
+
var EXPLORE_LOCALES = ["en", "zh", "hi", "es", "ar", "ta"];
|
|
4741
|
+
var RTL_LOCALES = /* @__PURE__ */ new Set(["ar"]);
|
|
4742
|
+
function isRtlLocale(locale) {
|
|
4743
|
+
return RTL_LOCALES.has(locale);
|
|
4744
|
+
}
|
|
4745
|
+
var EN = {
|
|
4746
|
+
badge: "AI answers, grounded in our documentation",
|
|
4747
|
+
welcomeTitle: "Ask anything about our products",
|
|
4748
|
+
welcomeBody: "Describe what you are trying to do and I will point you at the product, the page and the next step.",
|
|
4749
|
+
tryAsking: "Try asking",
|
|
4750
|
+
focusProduct: "Focus on a product",
|
|
4751
|
+
allProducts: "All products",
|
|
4752
|
+
showAll: "All",
|
|
4753
|
+
showLess: "Show less",
|
|
4754
|
+
sources: "Sources",
|
|
4755
|
+
nextYouCouldAsk: "Next you could ask",
|
|
4756
|
+
placeholder: "Ask anything about our products\u2026",
|
|
4757
|
+
placeholderProduct: "Ask about {product}\u2026",
|
|
4758
|
+
send: "Send",
|
|
4759
|
+
stop: "Stop",
|
|
4760
|
+
newChat: "New chat",
|
|
4761
|
+
history: "History",
|
|
4762
|
+
clearHistory: "Clear history",
|
|
4763
|
+
share: "Share",
|
|
4764
|
+
copied: "Copied",
|
|
4765
|
+
copying: "Copying\u2026",
|
|
4766
|
+
shareUnavailable: "Unavailable",
|
|
4767
|
+
disclaimer: "Disclaimer",
|
|
4768
|
+
disclaimerShort: "Grounded in our docs \u2014 check anything important.",
|
|
4769
|
+
dictate: "Dictate your question",
|
|
4770
|
+
stopDictating: "Stop dictating",
|
|
4771
|
+
attach: "Attach files",
|
|
4772
|
+
attachHint: "Up to {{max}} files, {{size}} MB each",
|
|
4773
|
+
removeAttachment: "Remove {{name}}",
|
|
4774
|
+
attachmentNameOnly: "name and type only",
|
|
4775
|
+
attachmentTooLarge: "{{name}} is larger than {{size}} MB and was not attached.",
|
|
4776
|
+
attachmentTooMany: "Only {{max}} files can be attached, so {{name}} was skipped.",
|
|
4777
|
+
noAnswer: "I couldn't find this in our documentation, so the answer below is not grounded in a source. Try rephrasing, or",
|
|
4778
|
+
askHuman: "ask a human",
|
|
4779
|
+
prevSuggestion: "Previous suggestion",
|
|
4780
|
+
nextSuggestion: "Next suggestion",
|
|
4781
|
+
capabilities: [
|
|
4782
|
+
"Grounded in our own docs",
|
|
4783
|
+
"Compare across the ecosystem",
|
|
4784
|
+
"Straight to the right page"
|
|
4785
|
+
],
|
|
4786
|
+
prompts: [
|
|
4787
|
+
"What does this product actually do?",
|
|
4788
|
+
"Which product fits my team?",
|
|
4789
|
+
"How do I get started, step by step?",
|
|
4790
|
+
"How much does it cost?"
|
|
4791
|
+
]
|
|
4792
|
+
};
|
|
4793
|
+
var ZH = {
|
|
4794
|
+
badge: "\u57FA\u4E8E\u6211\u4EEC\u6587\u6863\u7684 AI \u56DE\u7B54",
|
|
4795
|
+
welcomeTitle: "\u5173\u4E8E\u6211\u4EEC\u7684\u4EA7\u54C1\uFF0C\u968F\u4FBF\u95EE",
|
|
4796
|
+
welcomeBody: "\u63CF\u8FF0\u4F60\u60F3\u505A\u7684\u4E8B\uFF0C\u6211\u4F1A\u4E3A\u4F60\u6307\u51FA\u5BF9\u5E94\u7684\u4EA7\u54C1\u3001\u9875\u9762\u548C\u4E0B\u4E00\u6B65\u3002",
|
|
4797
|
+
tryAsking: "\u8BD5\u7740\u95EE",
|
|
4798
|
+
focusProduct: "\u805A\u7126\u67D0\u4E2A\u4EA7\u54C1",
|
|
4799
|
+
allProducts: "\u5168\u90E8\u4EA7\u54C1",
|
|
4800
|
+
showAll: "\u5168\u90E8",
|
|
4801
|
+
showLess: "\u6536\u8D77",
|
|
4802
|
+
sources: "\u6765\u6E90",
|
|
4803
|
+
nextYouCouldAsk: "\u4F60\u8FD8\u53EF\u4EE5\u95EE",
|
|
4804
|
+
placeholder: "\u5173\u4E8E\u6211\u4EEC\u7684\u4EA7\u54C1\uFF0C\u968F\u4FBF\u95EE\u2026",
|
|
4805
|
+
placeholderProduct: "\u8BE2\u95EE\u5173\u4E8E {product} \u7684\u95EE\u9898\u2026",
|
|
4806
|
+
send: "\u53D1\u9001",
|
|
4807
|
+
stop: "\u505C\u6B62",
|
|
4808
|
+
newChat: "\u65B0\u5BF9\u8BDD",
|
|
4809
|
+
history: "\u5386\u53F2",
|
|
4810
|
+
clearHistory: "\u6E05\u9664\u5386\u53F2",
|
|
4811
|
+
share: "\u5206\u4EAB",
|
|
4812
|
+
copied: "\u5DF2\u590D\u5236",
|
|
4813
|
+
copying: "\u590D\u5236\u4E2D\u2026",
|
|
4814
|
+
shareUnavailable: "\u4E0D\u53EF\u7528",
|
|
4815
|
+
disclaimer: "\u514D\u8D23\u58F0\u660E",
|
|
4816
|
+
disclaimerShort: "\u5185\u5BB9\u57FA\u4E8E\u6211\u4EEC\u7684\u6587\u6863\uFF0C\u91CD\u8981\u4FE1\u606F\u8BF7\u81EA\u884C\u6838\u5BF9\u3002",
|
|
4817
|
+
dictate: "\u8BED\u97F3\u8F93\u5165",
|
|
4818
|
+
stopDictating: "\u505C\u6B62\u8BED\u97F3\u8F93\u5165",
|
|
4819
|
+
attach: "\u6DFB\u52A0\u6587\u4EF6",
|
|
4820
|
+
attachHint: "\u6700\u591A {{max}} \u4E2A\u6587\u4EF6\uFF0C\u6BCF\u4E2A\u4E0D\u8D85\u8FC7 {{size}} MB",
|
|
4821
|
+
removeAttachment: "\u79FB\u9664 {{name}}",
|
|
4822
|
+
attachmentNameOnly: "\u4EC5\u6587\u4EF6\u540D\u548C\u7C7B\u578B",
|
|
4823
|
+
attachmentTooLarge: "{{name}} \u8D85\u8FC7 {{size}} MB\uFF0C\u672A\u80FD\u6DFB\u52A0\u3002",
|
|
4824
|
+
attachmentTooMany: "\u6700\u591A\u53EA\u80FD\u6DFB\u52A0 {{max}} \u4E2A\u6587\u4EF6\uFF0C\u5DF2\u8DF3\u8FC7 {{name}}\u3002",
|
|
4825
|
+
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",
|
|
4826
|
+
askHuman: "\u8054\u7CFB\u6211\u4EEC",
|
|
4827
|
+
prevSuggestion: "\u4E0A\u4E00\u4E2A\u5EFA\u8BAE",
|
|
4828
|
+
nextSuggestion: "\u4E0B\u4E00\u4E2A\u5EFA\u8BAE",
|
|
4829
|
+
capabilities: ["\u57FA\u4E8E\u6211\u4EEC\u81EA\u5DF1\u7684\u6587\u6863", "\u8DE8\u4EA7\u54C1\u5BF9\u6BD4", "\u76F4\u8FBE\u6B63\u786E\u7684\u9875\u9762"],
|
|
4830
|
+
prompts: [
|
|
4831
|
+
"\u8FD9\u4E2A\u4EA7\u54C1\u5230\u5E95\u80FD\u505A\u4EC0\u4E48\uFF1F",
|
|
4832
|
+
"\u54EA\u4E2A\u4EA7\u54C1\u9002\u5408\u6211\u7684\u56E2\u961F\uFF1F",
|
|
4833
|
+
"\u5982\u4F55\u4E00\u6B65\u6B65\u5F00\u59CB\u4F7F\u7528\uFF1F",
|
|
4834
|
+
"\u4EF7\u683C\u662F\u591A\u5C11\uFF1F"
|
|
4835
|
+
]
|
|
4836
|
+
};
|
|
4837
|
+
var HI = {
|
|
4838
|
+
badge: "\u0939\u092E\u093E\u0930\u0947 \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u092A\u0930 \u0906\u0927\u093E\u0930\u093F\u0924 AI \u0909\u0924\u094D\u0924\u0930",
|
|
4839
|
+
welcomeTitle: "\u0939\u092E\u093E\u0930\u0947 \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0915\u0941\u091B \u092D\u0940 \u092A\u0942\u091B\u0947\u0902",
|
|
4840
|
+
welcomeBody: "\u092C\u0924\u093E\u0907\u090F \u0906\u092A \u0915\u094D\u092F\u093E \u0915\u0930\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902, \u0914\u0930 \u092E\u0948\u0902 \u0906\u092A\u0915\u094B \u0938\u0939\u0940 \u0909\u0924\u094D\u092A\u093E\u0926, \u092A\u0947\u091C \u0914\u0930 \u0905\u0917\u0932\u093E \u0915\u0926\u092E \u092C\u0924\u093E\u090A\u0901\u0917\u093E\u0964",
|
|
4841
|
+
tryAsking: "\u092F\u0939 \u092A\u0942\u091B\u0915\u0930 \u0926\u0947\u0916\u0947\u0902",
|
|
4842
|
+
focusProduct: "\u0915\u093F\u0938\u0940 \u0909\u0924\u094D\u092A\u093E\u0926 \u092A\u0930 \u0927\u094D\u092F\u093E\u0928 \u0926\u0947\u0902",
|
|
4843
|
+
allProducts: "\u0938\u092D\u0940 \u0909\u0924\u094D\u092A\u093E\u0926",
|
|
4844
|
+
showAll: "\u0938\u092D\u0940",
|
|
4845
|
+
showLess: "\u0915\u092E \u0926\u093F\u0916\u093E\u090F\u0901",
|
|
4846
|
+
sources: "\u0938\u094D\u0930\u094B\u0924",
|
|
4847
|
+
nextYouCouldAsk: "\u0906\u0917\u0947 \u0906\u092A \u092A\u0942\u091B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902",
|
|
4848
|
+
placeholder: "\u0939\u092E\u093E\u0930\u0947 \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u0915\u0941\u091B \u092D\u0940 \u092A\u0942\u091B\u0947\u0902\u2026",
|
|
4849
|
+
placeholderProduct: "{product} \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902 \u092A\u0942\u091B\u0947\u0902\u2026",
|
|
4850
|
+
send: "\u092D\u0947\u091C\u0947\u0902",
|
|
4851
|
+
stop: "\u0930\u094B\u0915\u0947\u0902",
|
|
4852
|
+
newChat: "\u0928\u0908 \u092C\u093E\u0924\u091A\u0940\u0924",
|
|
4853
|
+
history: "\u0907\u0924\u093F\u0939\u093E\u0938",
|
|
4854
|
+
clearHistory: "\u0907\u0924\u093F\u0939\u093E\u0938 \u092E\u093F\u091F\u093E\u090F\u0901",
|
|
4855
|
+
share: "\u0938\u093E\u091D\u093E \u0915\u0930\u0947\u0902",
|
|
4856
|
+
copied: "\u0915\u0949\u092A\u0940 \u0939\u094B \u0917\u092F\u093E",
|
|
4857
|
+
copying: "\u0915\u0949\u092A\u0940 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
|
|
4858
|
+
shareUnavailable: "\u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902",
|
|
4859
|
+
disclaimer: "\u0905\u0938\u094D\u0935\u0940\u0915\u0930\u0923",
|
|
4860
|
+
disclaimerShort: "\u092F\u0939 \u0939\u092E\u093E\u0930\u0947 \u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C\u094B\u0902 \u092A\u0930 \u0906\u0927\u093E\u0930\u093F\u0924 \u0939\u0948 \u2014 \u092E\u0939\u0924\u094D\u0935\u092A\u0942\u0930\u094D\u0923 \u092C\u093E\u0924\u0947\u0902 \u091C\u093C\u0930\u0942\u0930 \u091C\u093E\u0901\u091A \u0932\u0947\u0902\u0964",
|
|
4861
|
+
dictate: "\u092C\u094B\u0932\u0915\u0930 \u092A\u0942\u091B\u0947\u0902",
|
|
4862
|
+
stopDictating: "\u092C\u094B\u0932\u0928\u093E \u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
|
|
4863
|
+
attach: "\u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u091C\u094B\u0921\u093C\u0947\u0902",
|
|
4864
|
+
attachHint: "\u0905\u0927\u093F\u0915\u0924\u092E {{max}} \u092B\u093C\u093E\u0907\u0932\u0947\u0902, \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 {{size}} MB \u0924\u0915",
|
|
4865
|
+
removeAttachment: "{{name}} \u0939\u091F\u093E\u090F\u0901",
|
|
4866
|
+
attachmentNameOnly: "\u0915\u0947\u0935\u0932 \u0928\u093E\u092E \u0914\u0930 \u092A\u094D\u0930\u0915\u093E\u0930",
|
|
4867
|
+
attachmentTooLarge: "{{name}} {{size}} MB \u0938\u0947 \u092C\u0921\u093C\u0940 \u0939\u0948, \u0907\u0938\u0932\u093F\u090F \u091C\u094B\u0921\u093C\u0940 \u0928\u0939\u0940\u0902 \u0917\u0908\u0964",
|
|
4868
|
+
attachmentTooMany: "\u0915\u0947\u0935\u0932 {{max}} \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u091C\u094B\u0921\u093C\u0940 \u091C\u093E \u0938\u0915\u0924\u0940 \u0939\u0948\u0902, \u0907\u0938\u0932\u093F\u090F {{name}} \u091B\u094B\u0921\u093C \u0926\u0940 \u0917\u0908\u0964",
|
|
4869
|
+
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",
|
|
4870
|
+
askHuman: "\u0939\u092E\u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0915\u0930\u0947\u0902",
|
|
4871
|
+
prevSuggestion: "\u092A\u093F\u091B\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
|
|
4872
|
+
nextSuggestion: "\u0905\u0917\u0932\u093E \u0938\u0941\u091D\u093E\u0935",
|
|
4873
|
+
capabilities: [
|
|
4874
|
+
"\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",
|
|
4875
|
+
"\u0938\u092D\u0940 \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u0915\u0940 \u0924\u0941\u0932\u0928\u093E \u0915\u0930\u0947\u0902",
|
|
4876
|
+
"\u0938\u0940\u0927\u0947 \u0938\u0939\u0940 \u092A\u0947\u091C \u092A\u0930"
|
|
4877
|
+
],
|
|
4878
|
+
prompts: [
|
|
4879
|
+
"\u092F\u0939 \u0909\u0924\u094D\u092A\u093E\u0926 \u0905\u0938\u0932 \u092E\u0947\u0902 \u0915\u094D\u092F\u093E \u0915\u0930\u0924\u093E \u0939\u0948?",
|
|
4880
|
+
"\u092E\u0947\u0930\u0940 \u091F\u0940\u092E \u0915\u0947 \u0932\u093F\u090F \u0915\u094C\u0928 \u0938\u093E \u0909\u0924\u094D\u092A\u093E\u0926 \u0938\u0939\u0940 \u0939\u0948?",
|
|
4881
|
+
"\u0936\u0941\u0930\u0941\u0906\u0924 \u0915\u0948\u0938\u0947 \u0915\u0930\u0947\u0902, \u091A\u0930\u0923 \u0926\u0930 \u091A\u0930\u0923?",
|
|
4882
|
+
"\u0907\u0938\u0915\u0940 \u0915\u0940\u092E\u0924 \u0915\u093F\u0924\u0928\u0940 \u0939\u0948?"
|
|
4883
|
+
]
|
|
4884
|
+
};
|
|
4885
|
+
var ES = {
|
|
4886
|
+
badge: "Respuestas de IA basadas en nuestra documentaci\xF3n",
|
|
4887
|
+
welcomeTitle: "Pregunta lo que quieras sobre nuestros productos",
|
|
4888
|
+
welcomeBody: "Cu\xE9ntame qu\xE9 necesitas hacer y te indicar\xE9 el producto, la p\xE1gina y el siguiente paso.",
|
|
4889
|
+
tryAsking: "Prueba a preguntar",
|
|
4890
|
+
focusProduct: "Centrarse en un producto",
|
|
4891
|
+
allProducts: "Todos los productos",
|
|
4892
|
+
showAll: "Todos",
|
|
4893
|
+
showLess: "Ver menos",
|
|
4894
|
+
sources: "Fuentes",
|
|
4895
|
+
nextYouCouldAsk: "Tambi\xE9n puedes preguntar",
|
|
4896
|
+
placeholder: "Pregunta lo que quieras sobre nuestros productos\u2026",
|
|
4897
|
+
placeholderProduct: "Pregunta sobre {product}\u2026",
|
|
4898
|
+
send: "Enviar",
|
|
4899
|
+
stop: "Detener",
|
|
4900
|
+
newChat: "Nueva conversaci\xF3n",
|
|
4901
|
+
history: "Historial",
|
|
4902
|
+
clearHistory: "Borrar historial",
|
|
4903
|
+
share: "Compartir",
|
|
4904
|
+
copied: "Copiado",
|
|
4905
|
+
copying: "Copiando\u2026",
|
|
4906
|
+
shareUnavailable: "No disponible",
|
|
4907
|
+
disclaimer: "Aviso",
|
|
4908
|
+
disclaimerShort: "Basado en nuestra documentaci\xF3n: comprueba cualquier dato importante.",
|
|
4909
|
+
dictate: "Dictar tu pregunta",
|
|
4910
|
+
stopDictating: "Dejar de dictar",
|
|
4911
|
+
attach: "Adjuntar archivos",
|
|
4912
|
+
attachHint: "Hasta {{max}} archivos, {{size}} MB cada uno",
|
|
4913
|
+
removeAttachment: "Quitar {{name}}",
|
|
4914
|
+
attachmentNameOnly: "solo nombre y tipo",
|
|
4915
|
+
attachmentTooLarge: "{{name}} supera los {{size}} MB y no se adjunt\xF3.",
|
|
4916
|
+
attachmentTooMany: "Solo se pueden adjuntar {{max}} archivos, as\xED que se omiti\xF3 {{name}}.",
|
|
4917
|
+
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",
|
|
4918
|
+
askHuman: "habla con una persona",
|
|
4919
|
+
prevSuggestion: "Sugerencia anterior",
|
|
4920
|
+
nextSuggestion: "Sugerencia siguiente",
|
|
4921
|
+
capabilities: [
|
|
4922
|
+
"Basado en nuestra documentaci\xF3n",
|
|
4923
|
+
"Compara todo el ecosistema",
|
|
4924
|
+
"Directo a la p\xE1gina correcta"
|
|
4925
|
+
],
|
|
4926
|
+
prompts: [
|
|
4927
|
+
"\xBFQu\xE9 hace realmente este producto?",
|
|
4928
|
+
"\xBFQu\xE9 producto encaja con mi equipo?",
|
|
4929
|
+
"\xBFC\xF3mo empiezo, paso a paso?",
|
|
4930
|
+
"\xBFCu\xE1nto cuesta?"
|
|
4931
|
+
]
|
|
4932
|
+
};
|
|
4933
|
+
var AR = {
|
|
4934
|
+
badge: "\u0625\u062C\u0627\u0628\u0627\u062A \u0630\u0643\u0627\u0621 \u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0645\u0628\u0646\u064A\u0629 \u0639\u0644\u0649 \u0648\u062B\u0627\u0626\u0642\u0646\u0627",
|
|
4935
|
+
welcomeTitle: "\u0627\u0633\u0623\u0644 \u0623\u064A \u0634\u064A\u0621 \u0639\u0646 \u0645\u0646\u062A\u062C\u0627\u062A\u0646\u0627",
|
|
4936
|
+
welcomeBody: "\u0635\u0650\u0641 \u0645\u0627 \u062A\u0631\u064A\u062F \u0625\u0646\u062C\u0627\u0632\u0647 \u0648\u0633\u0623\u062F\u0644\u0651\u0643 \u0639\u0644\u0649 \u0627\u0644\u0645\u0646\u062A\u062C \u0648\u0627\u0644\u0635\u0641\u062D\u0629 \u0648\u0627\u0644\u062E\u0637\u0648\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629.",
|
|
4937
|
+
tryAsking: "\u062C\u0631\u0651\u0628 \u0623\u0646 \u062A\u0633\u0623\u0644",
|
|
4938
|
+
focusProduct: "\u0627\u0644\u062A\u0631\u0643\u064A\u0632 \u0639\u0644\u0649 \u0645\u0646\u062A\u062C",
|
|
4939
|
+
allProducts: "\u0643\u0644 \u0627\u0644\u0645\u0646\u062A\u062C\u0627\u062A",
|
|
4940
|
+
showAll: "\u0627\u0644\u0643\u0644",
|
|
4941
|
+
showLess: "\u0639\u0631\u0636 \u0623\u0642\u0644",
|
|
4942
|
+
sources: "\u0627\u0644\u0645\u0635\u0627\u062F\u0631",
|
|
4943
|
+
nextYouCouldAsk: "\u064A\u0645\u0643\u0646\u0643 \u0623\u0646 \u062A\u0633\u0623\u0644 \u0628\u0639\u062F \u0630\u0644\u0643",
|
|
4944
|
+
placeholder: "\u0627\u0633\u0623\u0644 \u0623\u064A \u0634\u064A\u0621 \u0639\u0646 \u0645\u0646\u062A\u062C\u0627\u062A\u0646\u0627\u2026",
|
|
4945
|
+
placeholderProduct: "\u0627\u0633\u0623\u0644 \u0639\u0646 {product}\u2026",
|
|
4946
|
+
send: "\u0625\u0631\u0633\u0627\u0644",
|
|
4947
|
+
stop: "\u0625\u064A\u0642\u0627\u0641",
|
|
4948
|
+
newChat: "\u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
|
|
4949
|
+
history: "\u0627\u0644\u0633\u062C\u0644",
|
|
4950
|
+
clearHistory: "\u0645\u0633\u062D \u0627\u0644\u0633\u062C\u0644",
|
|
4951
|
+
share: "\u0645\u0634\u0627\u0631\u0643\u0629",
|
|
4952
|
+
copied: "\u062A\u0645 \u0627\u0644\u0646\u0633\u062E",
|
|
4953
|
+
copying: "\u062C\u0627\u0631\u064D \u0627\u0644\u0646\u0633\u062E\u2026",
|
|
4954
|
+
shareUnavailable: "\u063A\u064A\u0631 \u0645\u062A\u0627\u062D",
|
|
4955
|
+
disclaimer: "\u0625\u062E\u0644\u0627\u0621 \u0645\u0633\u0624\u0648\u0644\u064A\u0629",
|
|
4956
|
+
disclaimerShort: "\u0645\u0628\u0646\u064A \u0639\u0644\u0649 \u0648\u062B\u0627\u0626\u0642\u0646\u0627 \u2014 \u062A\u062D\u0642\u0651\u0642 \u0645\u0646 \u0623\u064A \u0645\u0639\u0644\u0648\u0645\u0629 \u0645\u0647\u0645\u0629.",
|
|
4957
|
+
dictate: "\u0623\u0645\u0644\u0650 \u0633\u0624\u0627\u0644\u0643",
|
|
4958
|
+
stopDictating: "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0625\u0645\u0644\u0627\u0621",
|
|
4959
|
+
attach: "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062A",
|
|
4960
|
+
attachHint: "\u062D\u062A\u0649 {{max}} \u0645\u0644\u0641\u0627\u062A\u060C \u0628\u062D\u062F \u0623\u0642\u0635\u0649 {{size}} \u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0644\u0643\u0644 \u0645\u0644\u0641",
|
|
4961
|
+
removeAttachment: "\u0625\u0632\u0627\u0644\u0629 {{name}}",
|
|
4962
|
+
attachmentNameOnly: "\u0627\u0644\u0627\u0633\u0645 \u0648\u0627\u0644\u0646\u0648\u0639 \u0641\u0642\u0637",
|
|
4963
|
+
attachmentTooLarge: "{{name}} \u0623\u0643\u0628\u0631 \u0645\u0646 {{size}} \u0645\u064A\u063A\u0627\u0628\u0627\u064A\u062A \u0648\u0644\u0645 \u064A\u062A\u0645 \u0625\u0631\u0641\u0627\u0642\u0647.",
|
|
4964
|
+
attachmentTooMany: "\u064A\u0645\u0643\u0646 \u0625\u0631\u0641\u0627\u0642 {{max}} \u0645\u0644\u0641\u0627\u062A \u0641\u0642\u0637\u060C \u0644\u0630\u0627 \u062A\u0645 \u062A\u062E\u0637\u064A {{name}}.",
|
|
4965
|
+
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",
|
|
4966
|
+
askHuman: "\u062A\u062D\u062F\u0651\u062B \u0625\u0644\u0649 \u0634\u062E\u0635",
|
|
4967
|
+
prevSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u0633\u0627\u0628\u0642",
|
|
4968
|
+
nextSuggestion: "\u0627\u0644\u0627\u0642\u062A\u0631\u0627\u062D \u0627\u0644\u062A\u0627\u0644\u064A",
|
|
4969
|
+
capabilities: [
|
|
4970
|
+
"\u0645\u0628\u0646\u064A \u0639\u0644\u0649 \u0648\u062B\u0627\u0626\u0642\u0646\u0627",
|
|
4971
|
+
"\u0642\u0627\u0631\u0646 \u0639\u0628\u0631 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629",
|
|
4972
|
+
"\u0645\u0628\u0627\u0634\u0631\u0629\u064B \u0625\u0644\u0649 \u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0635\u062D\u064A\u062D\u0629"
|
|
4973
|
+
],
|
|
4974
|
+
prompts: [
|
|
4975
|
+
"\u0645\u0627 \u0627\u0644\u0630\u064A \u064A\u0641\u0639\u0644\u0647 \u0647\u0630\u0627 \u0627\u0644\u0645\u0646\u062A\u062C \u0641\u0639\u0644\u064A\u064B\u0627\u061F",
|
|
4976
|
+
"\u0623\u064A \u0645\u0646\u062A\u062C \u064A\u0646\u0627\u0633\u0628 \u0641\u0631\u064A\u0642\u064A\u061F",
|
|
4977
|
+
"\u0643\u064A\u0641 \u0623\u0628\u062F\u0623 \u062E\u0637\u0648\u0629 \u0628\u062E\u0637\u0648\u0629\u061F",
|
|
4978
|
+
"\u0643\u0645 \u062A\u0628\u0644\u063A \u0627\u0644\u062A\u0643\u0644\u0641\u0629\u061F"
|
|
4979
|
+
]
|
|
4980
|
+
};
|
|
4981
|
+
var TA = {
|
|
4982
|
+
badge: "\u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B86\u0BB5\u0BA3\u0B99\u0BCD\u0B95\u0BB3\u0BC8 \u0B85\u0B9F\u0BBF\u0BAA\u0BCD\u0BAA\u0B9F\u0BC8\u0BAF\u0BBE\u0B95\u0B95\u0BCD \u0B95\u0BCA\u0BA3\u0BCD\u0B9F AI \u0BAA\u0BA4\u0BBF\u0BB2\u0BCD\u0B95\u0BB3\u0BCD",
|
|
4983
|
+
welcomeTitle: "\u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD \u0BAA\u0BB1\u0BCD\u0BB1\u0BBF \u0B8E\u0BA4\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0B95\u0BC7\u0BB3\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
4984
|
+
welcomeBody: "\u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B8E\u0BA9\u0BCD\u0BA9 \u0B9A\u0BC6\u0BAF\u0BCD\u0BAF \u0BB5\u0BBF\u0BB0\u0BC1\u0BAE\u0BCD\u0BAA\u0BC1\u0B95\u0BBF\u0BB1\u0BC0\u0BB0\u0BCD\u0B95\u0BB3\u0BCD \u0B8E\u0BA9\u0BCD\u0BB1\u0BC1 \u0B9A\u0BCA\u0BB2\u0BCD\u0BB2\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD; \u0B9A\u0BB0\u0BBF\u0BAF\u0BBE\u0BA9 \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1, \u0BAA\u0B95\u0BCD\u0B95\u0BAE\u0BCD, \u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4 \u0BAA\u0B9F\u0BBF \u0B86\u0B95\u0BBF\u0BAF\u0BB5\u0BB1\u0BCD\u0BB1\u0BC8\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BBF\u0BB1\u0BC7\u0BA9\u0BCD.",
|
|
4985
|
+
tryAsking: "\u0B87\u0BA4\u0BC8\u0B95\u0BCD \u0B95\u0BC7\u0B9F\u0BCD\u0B9F\u0BC1\u0BAA\u0BCD \u0BAA\u0BBE\u0BB0\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
4986
|
+
focusProduct: "\u0B92\u0BB0\u0BC1 \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BBF\u0BB2\u0BCD \u0B95\u0BB5\u0BA9\u0BAE\u0BCD",
|
|
4987
|
+
allProducts: "\u0B85\u0BA9\u0BC8\u0BA4\u0BCD\u0BA4\u0BC1 \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",
|
|
4988
|
+
showAll: "\u0B85\u0BA9\u0BC8\u0BA4\u0BCD\u0BA4\u0BC1\u0BAE\u0BCD",
|
|
4989
|
+
showLess: "\u0B95\u0BC1\u0BB1\u0BC8\u0BB5\u0BBE\u0B95\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1",
|
|
4990
|
+
sources: "\u0BAE\u0BC2\u0BB2\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
4991
|
+
nextYouCouldAsk: "\u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1 \u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B95\u0BC7\u0B9F\u0BCD\u0B95\u0BB2\u0BBE\u0BAE\u0BCD",
|
|
4992
|
+
placeholder: "\u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD \u0BAA\u0BB1\u0BCD\u0BB1\u0BBF \u0B8E\u0BA4\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0B95\u0BC7\u0BB3\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD\u2026",
|
|
4993
|
+
placeholderProduct: "{product} \u0BAA\u0BB1\u0BCD\u0BB1\u0BBF\u0B95\u0BCD \u0B95\u0BC7\u0BB3\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD\u2026",
|
|
4994
|
+
send: "\u0B85\u0BA9\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1",
|
|
4995
|
+
stop: "\u0BA8\u0BBF\u0BB1\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1",
|
|
4996
|
+
newChat: "\u0BAA\u0BC1\u0BA4\u0BBF\u0BAF \u0B89\u0BB0\u0BC8\u0BAF\u0BBE\u0B9F\u0BB2\u0BCD",
|
|
4997
|
+
history: "\u0BB5\u0BB0\u0BB2\u0BBE\u0BB1\u0BC1",
|
|
4998
|
+
clearHistory: "\u0BB5\u0BB0\u0BB2\u0BBE\u0BB1\u0BCD\u0BB1\u0BC8 \u0B85\u0BB4\u0BBF",
|
|
4999
|
+
share: "\u0BAA\u0B95\u0BBF\u0BB0\u0BCD",
|
|
5000
|
+
copied: "\u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1",
|
|
5001
|
+
copying: "\u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BA4\u0BC1\u2026",
|
|
5002
|
+
shareUnavailable: "\u0B95\u0BBF\u0B9F\u0BC8\u0B95\u0BCD\u0B95\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8",
|
|
5003
|
+
disclaimer: "\u0BAA\u0BCA\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0BA4\u0BCD \u0BA4\u0BC1\u0BB1\u0BAA\u0BCD\u0BAA\u0BC1",
|
|
5004
|
+
disclaimerShort: "\u0B8E\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B86\u0BB5\u0BA3\u0B99\u0BCD\u0B95\u0BB3\u0BC8 \u0B85\u0B9F\u0BBF\u0BAA\u0BCD\u0BAA\u0B9F\u0BC8\u0BAF\u0BBE\u0B95\u0B95\u0BCD \u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BA4\u0BC1 \u2014 \u0BAE\u0BC1\u0B95\u0BCD\u0B95\u0BBF\u0BAF\u0BAE\u0BBE\u0BA9\u0BA4\u0BC8\u0B9A\u0BCD \u0B9A\u0BB0\u0BBF\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD.",
|
|
5005
|
+
dictate: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B95\u0BC7\u0BB3\u0BCD\u0BB5\u0BBF\u0BAF\u0BC8\u0BAA\u0BCD \u0BAA\u0BC7\u0B9A\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
5006
|
+
stopDictating: "\u0BAA\u0BC7\u0B9A\u0BC1\u0BB5\u0BA4\u0BC8 \u0BA8\u0BBF\u0BB1\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1",
|
|
5007
|
+
attach: "\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8 \u0B87\u0BA3\u0BC8\u0B95\u0BCD\u0B95",
|
|
5008
|
+
attachHint: "\u0B85\u0BA4\u0BBF\u0B95\u0BAA\u0B9F\u0BCD\u0B9A\u0BAE\u0BCD {{max}} \u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD, \u0B92\u0BB5\u0BCD\u0BB5\u0BCA\u0BA9\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD {{size}} MB \u0BB5\u0BB0\u0BC8",
|
|
5009
|
+
removeAttachment: "{{name}} \u0B85\u0B95\u0BB1\u0BCD\u0BB1\u0BC1",
|
|
5010
|
+
attachmentNameOnly: "\u0BAA\u0BC6\u0BAF\u0BB0\u0BC1\u0BAE\u0BCD \u0BB5\u0B95\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0BAE\u0B9F\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD",
|
|
5011
|
+
attachmentTooLarge: "{{name}} {{size}} MB-\u0B90 \u0BB5\u0BBF\u0B9F \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1, \u0B8E\u0BA9\u0BB5\u0BC7 \u0B87\u0BA3\u0BC8\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8.",
|
|
5012
|
+
attachmentTooMany: "{{max}} \u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD \u0BAE\u0B9F\u0BCD\u0B9F\u0BC1\u0BAE\u0BC7 \u0B87\u0BA3\u0BC8\u0B95\u0BCD\u0B95 \u0BAE\u0BC1\u0B9F\u0BBF\u0BAF\u0BC1\u0BAE\u0BCD, \u0B8E\u0BA9\u0BB5\u0BC7 {{name}} \u0BA4\u0BB5\u0BBF\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1.",
|
|
5013
|
+
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",
|
|
5014
|
+
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",
|
|
5015
|
+
prevSuggestion: "\u0BAE\u0BC1\u0BA8\u0BCD\u0BA4\u0BC8\u0BAF \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
|
|
5016
|
+
nextSuggestion: "\u0B85\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4 \u0BAA\u0BB0\u0BBF\u0BA8\u0BCD\u0BA4\u0BC1\u0BB0\u0BC8",
|
|
5017
|
+
capabilities: [
|
|
5018
|
+
"\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",
|
|
5019
|
+
"\u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8 \u0B92\u0BAA\u0BCD\u0BAA\u0BBF\u0B9F\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD",
|
|
5020
|
+
"\u0BA8\u0BC7\u0BB0\u0BBE\u0B95 \u0B9A\u0BB0\u0BBF\u0BAF\u0BBE\u0BA9 \u0BAA\u0B95\u0BCD\u0B95\u0BA4\u0BCD\u0BA4\u0BBF\u0BB1\u0BCD\u0B95\u0BC1"
|
|
5021
|
+
],
|
|
5022
|
+
prompts: [
|
|
5023
|
+
"\u0B87\u0BA8\u0BCD\u0BA4\u0BA4\u0BCD \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1 \u0B89\u0BA3\u0BCD\u0BAE\u0BC8\u0BAF\u0BBF\u0BB2\u0BCD \u0B8E\u0BA9\u0BCD\u0BA9 \u0B9A\u0BC6\u0BAF\u0BCD\u0B95\u0BBF\u0BB1\u0BA4\u0BC1?",
|
|
5024
|
+
"\u0B8E\u0BA9\u0BCD \u0B95\u0BC1\u0BB4\u0BC1\u0BB5\u0BBF\u0BB1\u0BCD\u0B95\u0BC1 \u0B8E\u0BA8\u0BCD\u0BA4\u0BA4\u0BCD \u0BA4\u0BAF\u0BBE\u0BB0\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1 \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1\u0BAE\u0BCD?",
|
|
5025
|
+
"\u0BAA\u0B9F\u0BBF\u0BAA\u0BCD\u0BAA\u0B9F\u0BBF\u0BAF\u0BBE\u0B95 \u0B8E\u0BAA\u0BCD\u0BAA\u0B9F\u0BBF\u0BA4\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95\u0BC1\u0BB5\u0BA4\u0BC1?",
|
|
5026
|
+
"\u0B87\u0BA4\u0BA9\u0BCD \u0BB5\u0BBF\u0BB2\u0BC8 \u0B8E\u0BA9\u0BCD\u0BA9?"
|
|
5027
|
+
]
|
|
5028
|
+
};
|
|
5029
|
+
var STRINGS = {
|
|
5030
|
+
en: EN,
|
|
5031
|
+
zh: ZH,
|
|
5032
|
+
hi: HI,
|
|
5033
|
+
es: ES,
|
|
5034
|
+
ar: AR,
|
|
5035
|
+
ta: TA
|
|
5036
|
+
};
|
|
5037
|
+
function resolveExploreLocale(explicit) {
|
|
5038
|
+
const candidates = [
|
|
5039
|
+
explicit,
|
|
5040
|
+
typeof document === "undefined" ? void 0 : document.documentElement.lang,
|
|
5041
|
+
typeof navigator === "undefined" ? void 0 : navigator.language
|
|
5042
|
+
];
|
|
5043
|
+
for (const candidate of candidates) {
|
|
5044
|
+
if (!candidate) continue;
|
|
5045
|
+
const primary = candidate.toLowerCase().split("-")[0];
|
|
5046
|
+
const match = EXPLORE_LOCALES.find((locale) => locale === primary);
|
|
5047
|
+
if (match) return match;
|
|
5048
|
+
}
|
|
5049
|
+
return "en";
|
|
5050
|
+
}
|
|
5051
|
+
function exploreStrings(locale) {
|
|
5052
|
+
return STRINGS[locale] ?? EN;
|
|
5053
|
+
}
|
|
5054
|
+
function fill(template, values) {
|
|
5055
|
+
return template.replace(/\{(\w+)\}/g, (match, key) => values[key] ?? match);
|
|
5056
|
+
}
|
|
4738
5057
|
var PROSE_CSS = `
|
|
4739
5058
|
.boff-prose {
|
|
4740
5059
|
max-width: none;
|
|
@@ -4939,6 +5258,12 @@ var EXPLORE_MESSAGE_FIELDS = (
|
|
|
4939
5258
|
}
|
|
4940
5259
|
followUps
|
|
4941
5260
|
answered
|
|
5261
|
+
attachments {
|
|
5262
|
+
name
|
|
5263
|
+
mimeType
|
|
5264
|
+
size
|
|
5265
|
+
textExtracted
|
|
5266
|
+
}
|
|
4942
5267
|
errorCode
|
|
4943
5268
|
createdAt
|
|
4944
5269
|
completedAt
|
|
@@ -5024,6 +5349,16 @@ var CREATE_EXPLORE_SHARE_LINK_MUTATION = (
|
|
|
5024
5349
|
}
|
|
5025
5350
|
`
|
|
5026
5351
|
);
|
|
5352
|
+
var EXPLORE_SHARED_CONVERSATION_QUERY = (
|
|
5353
|
+
/* GraphQL */
|
|
5354
|
+
`
|
|
5355
|
+
query ExploreSharedConversation($shareToken: String!) {
|
|
5356
|
+
exploreSharedConversation(shareToken: $shareToken) {
|
|
5357
|
+
${EXPLORE_MESSAGE_FIELDS}
|
|
5358
|
+
}
|
|
5359
|
+
}
|
|
5360
|
+
`
|
|
5361
|
+
);
|
|
5027
5362
|
|
|
5028
5363
|
// src/data/products.ts
|
|
5029
5364
|
var ECOSYSTEM_PRODUCTS = [
|
|
@@ -5474,6 +5809,14 @@ function readPersisted(key) {
|
|
|
5474
5809
|
return null;
|
|
5475
5810
|
}
|
|
5476
5811
|
}
|
|
5812
|
+
function readShareToken() {
|
|
5813
|
+
if (typeof window === "undefined") return null;
|
|
5814
|
+
try {
|
|
5815
|
+
return new URL(window.location.href).searchParams.get("c");
|
|
5816
|
+
} catch {
|
|
5817
|
+
return null;
|
|
5818
|
+
}
|
|
5819
|
+
}
|
|
5477
5820
|
function visibleText(message) {
|
|
5478
5821
|
return message.content || message.partialContent || "";
|
|
5479
5822
|
}
|
|
@@ -5512,10 +5855,18 @@ function useExploreChat(options = {}) {
|
|
|
5512
5855
|
const pollGenerationRef = useRef(0);
|
|
5513
5856
|
const pollTimerRef = useRef(null);
|
|
5514
5857
|
const conversationTokenRef = useRef(null);
|
|
5858
|
+
const shareTokenRef = useRef(void 0);
|
|
5859
|
+
if (shareTokenRef.current === void 0) {
|
|
5860
|
+
shareTokenRef.current = readShareToken();
|
|
5861
|
+
}
|
|
5862
|
+
const isSharedView = shareTokenRef.current !== null;
|
|
5515
5863
|
const catalogRef = useRef(fallbackCatalog);
|
|
5516
5864
|
const turnCountRef = useRef(0);
|
|
5517
5865
|
const focusProductRef = useRef(null);
|
|
5518
5866
|
const lastSentTextRef = useRef(null);
|
|
5867
|
+
const lastSentAttachmentsRef = useRef(
|
|
5868
|
+
[]
|
|
5869
|
+
);
|
|
5519
5870
|
const inFlightRef = useRef(false);
|
|
5520
5871
|
catalogRef.current = catalog;
|
|
5521
5872
|
const clearPollTimer = useCallback(() => {
|
|
@@ -5540,6 +5891,43 @@ function useExploreChat(options = {}) {
|
|
|
5540
5891
|
};
|
|
5541
5892
|
}, []);
|
|
5542
5893
|
useEffect(() => {
|
|
5894
|
+
const shareToken = shareTokenRef.current;
|
|
5895
|
+
if (!shareToken) return;
|
|
5896
|
+
let cancelled = false;
|
|
5897
|
+
setHydrated(true);
|
|
5898
|
+
void client.query(
|
|
5899
|
+
EXPLORE_SHARED_CONVERSATION_QUERY,
|
|
5900
|
+
{ shareToken },
|
|
5901
|
+
{ cache: false }
|
|
5902
|
+
).then((res) => {
|
|
5903
|
+
if (cancelled || !mountedRef.current) return;
|
|
5904
|
+
const shared = res?.data?.exploreSharedConversation;
|
|
5905
|
+
if (shared && shared.length > 0) {
|
|
5906
|
+
setMessages(shared);
|
|
5907
|
+
return;
|
|
5908
|
+
}
|
|
5909
|
+
setError({
|
|
5910
|
+
kind: "unknown",
|
|
5911
|
+
code: "SHARE_NOT_FOUND",
|
|
5912
|
+
message: "That shared conversation could not be found. The link may have expired.",
|
|
5913
|
+
// Nothing to retry: a bad token will stay bad.
|
|
5914
|
+
retryable: false
|
|
5915
|
+
});
|
|
5916
|
+
}).catch(() => {
|
|
5917
|
+
if (cancelled || !mountedRef.current) return;
|
|
5918
|
+
setError({
|
|
5919
|
+
kind: "unknown",
|
|
5920
|
+
code: "SHARE_NOT_FOUND",
|
|
5921
|
+
message: "That shared conversation could not be loaded.",
|
|
5922
|
+
retryable: true
|
|
5923
|
+
});
|
|
5924
|
+
});
|
|
5925
|
+
return () => {
|
|
5926
|
+
cancelled = true;
|
|
5927
|
+
};
|
|
5928
|
+
}, [client]);
|
|
5929
|
+
useEffect(() => {
|
|
5930
|
+
if (shareTokenRef.current !== null) return;
|
|
5543
5931
|
if (!persist) {
|
|
5544
5932
|
setHydrated(true);
|
|
5545
5933
|
return;
|
|
@@ -5707,7 +6095,7 @@ function useExploreChat(options = {}) {
|
|
|
5707
6095
|
[client, pollIntervalMs, pollTimeoutMs]
|
|
5708
6096
|
);
|
|
5709
6097
|
const submit = useCallback(
|
|
5710
|
-
async (text, optimisticId, captchaAttempt) => {
|
|
6098
|
+
async (text, optimisticId, captchaAttempt, attachments) => {
|
|
5711
6099
|
const activeCatalog = catalogRef.current;
|
|
5712
6100
|
let recaptchaToken;
|
|
5713
6101
|
if (activeCatalog.captchaRequired && activeCatalog.recaptchaSiteKey) {
|
|
@@ -5725,7 +6113,8 @@ function useExploreChat(options = {}) {
|
|
|
5725
6113
|
...focusProductRef.current || productSlug ? { productSlug: focusProductRef.current ?? productSlug } : {},
|
|
5726
6114
|
...recaptchaToken ? { recaptchaToken } : {},
|
|
5727
6115
|
...locale ? { locale } : {},
|
|
5728
|
-
...pageUrl ? { pageUrl } : {}
|
|
6116
|
+
...pageUrl ? { pageUrl } : {},
|
|
6117
|
+
...attachments.length > 0 ? { attachments: [...attachments] } : {}
|
|
5729
6118
|
};
|
|
5730
6119
|
const res = await client.mutate(
|
|
5731
6120
|
SEND_EXPLORE_MESSAGE_MUTATION,
|
|
@@ -5739,7 +6128,7 @@ function useExploreChat(options = {}) {
|
|
|
5739
6128
|
const code = typeof first?.extensions?.code === "string" ? first.extensions.code : void 0;
|
|
5740
6129
|
const classified = classifyExploreError(code, first?.message);
|
|
5741
6130
|
if (classified.kind === "captcha" && captchaAttempt === 0) {
|
|
5742
|
-
await submit(text, optimisticId, 1);
|
|
6131
|
+
await submit(text, optimisticId, 1, attachments);
|
|
5743
6132
|
return;
|
|
5744
6133
|
}
|
|
5745
6134
|
inFlightRef.current = false;
|
|
@@ -5776,7 +6165,7 @@ function useExploreChat(options = {}) {
|
|
|
5776
6165
|
[client, locale, pageUrl, productSlug, startPolling]
|
|
5777
6166
|
);
|
|
5778
6167
|
const send = useCallback(
|
|
5779
|
-
async (message) => {
|
|
6168
|
+
async (message, attachments = []) => {
|
|
5780
6169
|
const text = message.trim();
|
|
5781
6170
|
if (!text) return;
|
|
5782
6171
|
if (inFlightRef.current) return;
|
|
@@ -5806,6 +6195,7 @@ function useExploreChat(options = {}) {
|
|
|
5806
6195
|
}
|
|
5807
6196
|
inFlightRef.current = true;
|
|
5808
6197
|
lastSentTextRef.current = text;
|
|
6198
|
+
lastSentAttachmentsRef.current = attachments;
|
|
5809
6199
|
setError(null);
|
|
5810
6200
|
setPhase("sending");
|
|
5811
6201
|
cancelPolling();
|
|
@@ -5828,7 +6218,7 @@ function useExploreChat(options = {}) {
|
|
|
5828
6218
|
setTurnCount(turnCountRef.current);
|
|
5829
6219
|
onSend?.(text);
|
|
5830
6220
|
try {
|
|
5831
|
-
await submit(text, optimistic.id, 0);
|
|
6221
|
+
await submit(text, optimistic.id, 0, attachments);
|
|
5832
6222
|
} catch (err) {
|
|
5833
6223
|
if (!mountedRef.current) return;
|
|
5834
6224
|
console.error("[WebSDK] Explore send failed", err);
|
|
@@ -5877,7 +6267,7 @@ function useExploreChat(options = {}) {
|
|
|
5877
6267
|
});
|
|
5878
6268
|
turnCountRef.current = Math.max(0, turnCountRef.current - 1);
|
|
5879
6269
|
setTurnCount(turnCountRef.current);
|
|
5880
|
-
void send(text);
|
|
6270
|
+
void send(text, lastSentAttachmentsRef.current);
|
|
5881
6271
|
}, [cancelPolling, send]);
|
|
5882
6272
|
const reset = useCallback(() => {
|
|
5883
6273
|
setArchive(
|
|
@@ -5891,6 +6281,7 @@ function useExploreChat(options = {}) {
|
|
|
5891
6281
|
inFlightRef.current = false;
|
|
5892
6282
|
conversationTokenRef.current = null;
|
|
5893
6283
|
lastSentTextRef.current = null;
|
|
6284
|
+
lastSentAttachmentsRef.current = [];
|
|
5894
6285
|
turnCountRef.current = 0;
|
|
5895
6286
|
setTurnCount(0);
|
|
5896
6287
|
setMessages([]);
|
|
@@ -5999,7 +6390,8 @@ function useExploreChat(options = {}) {
|
|
|
5999
6390
|
deleteConversation,
|
|
6000
6391
|
clearHistory,
|
|
6001
6392
|
recordClick,
|
|
6002
|
-
createShareLink
|
|
6393
|
+
createShareLink,
|
|
6394
|
+
isSharedView
|
|
6003
6395
|
};
|
|
6004
6396
|
}
|
|
6005
6397
|
var optimisticCounter = 0;
|
|
@@ -6225,6 +6617,178 @@ function useSpeechInput({
|
|
|
6225
6617
|
);
|
|
6226
6618
|
return { supported, listening, interim, error, start, stop, toggle };
|
|
6227
6619
|
}
|
|
6620
|
+
var SWIPE_THRESHOLD = 40;
|
|
6621
|
+
function useSwipe({
|
|
6622
|
+
onSwipeLeft,
|
|
6623
|
+
onSwipeRight,
|
|
6624
|
+
enabled = true
|
|
6625
|
+
}) {
|
|
6626
|
+
const start = useRef(null);
|
|
6627
|
+
const onPointerDown = useCallback(
|
|
6628
|
+
(event) => {
|
|
6629
|
+
if (!enabled) return;
|
|
6630
|
+
start.current = { x: event.clientX, y: event.clientY };
|
|
6631
|
+
},
|
|
6632
|
+
[enabled]
|
|
6633
|
+
);
|
|
6634
|
+
const onPointerUp = useCallback(
|
|
6635
|
+
(event) => {
|
|
6636
|
+
const from = start.current;
|
|
6637
|
+
start.current = null;
|
|
6638
|
+
if (!enabled || !from) return;
|
|
6639
|
+
const dx = event.clientX - from.x;
|
|
6640
|
+
const dy = event.clientY - from.y;
|
|
6641
|
+
if (Math.abs(dx) < SWIPE_THRESHOLD || Math.abs(dx) <= Math.abs(dy))
|
|
6642
|
+
return;
|
|
6643
|
+
if (dx < 0) onSwipeLeft?.();
|
|
6644
|
+
else onSwipeRight?.();
|
|
6645
|
+
},
|
|
6646
|
+
[enabled, onSwipeLeft, onSwipeRight]
|
|
6647
|
+
);
|
|
6648
|
+
const onPointerCancel = useCallback(() => {
|
|
6649
|
+
start.current = null;
|
|
6650
|
+
}, []);
|
|
6651
|
+
return { onPointerDown, onPointerUp, onPointerCancel };
|
|
6652
|
+
}
|
|
6653
|
+
|
|
6654
|
+
// src/utils/explore-attachments.ts
|
|
6655
|
+
var MAX_ATTACHMENTS = 5;
|
|
6656
|
+
var MAX_ATTACHMENT_BYTES = 10 * 1024 * 1024;
|
|
6657
|
+
var MAX_TEXT_PER_ATTACHMENT = 2e4;
|
|
6658
|
+
var TEXT_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
6659
|
+
"txt",
|
|
6660
|
+
"md",
|
|
6661
|
+
"markdown",
|
|
6662
|
+
"csv",
|
|
6663
|
+
"tsv",
|
|
6664
|
+
"json",
|
|
6665
|
+
"jsonl",
|
|
6666
|
+
"yaml",
|
|
6667
|
+
"yml",
|
|
6668
|
+
"toml",
|
|
6669
|
+
"ini",
|
|
6670
|
+
"cfg",
|
|
6671
|
+
"conf",
|
|
6672
|
+
"env",
|
|
6673
|
+
"log",
|
|
6674
|
+
"sql",
|
|
6675
|
+
"graphql",
|
|
6676
|
+
"gql",
|
|
6677
|
+
"html",
|
|
6678
|
+
"htm",
|
|
6679
|
+
"xml",
|
|
6680
|
+
"svg",
|
|
6681
|
+
"css",
|
|
6682
|
+
"scss",
|
|
6683
|
+
"js",
|
|
6684
|
+
"jsx",
|
|
6685
|
+
"mjs",
|
|
6686
|
+
"cjs",
|
|
6687
|
+
"ts",
|
|
6688
|
+
"tsx",
|
|
6689
|
+
"py",
|
|
6690
|
+
"rb",
|
|
6691
|
+
"go",
|
|
6692
|
+
"rs",
|
|
6693
|
+
"java",
|
|
6694
|
+
"kt",
|
|
6695
|
+
"c",
|
|
6696
|
+
"h",
|
|
6697
|
+
"cpp",
|
|
6698
|
+
"cs",
|
|
6699
|
+
"php",
|
|
6700
|
+
"sh",
|
|
6701
|
+
"bash",
|
|
6702
|
+
"zsh",
|
|
6703
|
+
"ps1",
|
|
6704
|
+
"dockerfile",
|
|
6705
|
+
"tf",
|
|
6706
|
+
"tfvars"
|
|
6707
|
+
]);
|
|
6708
|
+
function isTextualMimeType(mimeType) {
|
|
6709
|
+
if (mimeType.startsWith("text/")) return true;
|
|
6710
|
+
return mimeType === "application/json" || mimeType === "application/xml" || mimeType === "application/yaml" || mimeType === "application/x-yaml" || mimeType === "application/javascript" || mimeType === "application/graphql" || mimeType.endsWith("+json") || mimeType.endsWith("+xml");
|
|
6711
|
+
}
|
|
6712
|
+
function extensionOf(name) {
|
|
6713
|
+
const dot = name.lastIndexOf(".");
|
|
6714
|
+
if (dot <= 0 || dot === name.length - 1) return "";
|
|
6715
|
+
return name.slice(dot + 1).toLowerCase();
|
|
6716
|
+
}
|
|
6717
|
+
function looksTextual(name, mimeType) {
|
|
6718
|
+
if (isTextualMimeType(mimeType)) return true;
|
|
6719
|
+
return TEXT_EXTENSIONS.has(extensionOf(name));
|
|
6720
|
+
}
|
|
6721
|
+
function isDecodedTextUsable(decoded) {
|
|
6722
|
+
if (decoded.length === 0) return false;
|
|
6723
|
+
if (decoded.includes("\0")) return false;
|
|
6724
|
+
let replacements = 0;
|
|
6725
|
+
for (const char of decoded) if (char === "\uFFFD") replacements += 1;
|
|
6726
|
+
return replacements / decoded.length < 0.1;
|
|
6727
|
+
}
|
|
6728
|
+
function formatBytes(bytes) {
|
|
6729
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
6730
|
+
if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`;
|
|
6731
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
6732
|
+
}
|
|
6733
|
+
var counter = 0;
|
|
6734
|
+
function nextId() {
|
|
6735
|
+
counter += 1;
|
|
6736
|
+
return `att-${counter}`;
|
|
6737
|
+
}
|
|
6738
|
+
async function readArrayBuffer(blob) {
|
|
6739
|
+
if (typeof blob.arrayBuffer === "function") return blob.arrayBuffer();
|
|
6740
|
+
return new Promise((resolve, reject) => {
|
|
6741
|
+
const reader = new FileReader();
|
|
6742
|
+
reader.onload = () => resolve(reader.result);
|
|
6743
|
+
reader.onerror = () => reject(reader.error ?? new Error("file read failed"));
|
|
6744
|
+
reader.readAsArrayBuffer(blob);
|
|
6745
|
+
});
|
|
6746
|
+
}
|
|
6747
|
+
async function readTextPrefix(file) {
|
|
6748
|
+
try {
|
|
6749
|
+
const slice = file.slice(0, MAX_TEXT_PER_ATTACHMENT);
|
|
6750
|
+
const buffer = await readArrayBuffer(slice);
|
|
6751
|
+
const decoded = new TextDecoder("utf-8").decode(buffer);
|
|
6752
|
+
return isDecodedTextUsable(decoded) ? decoded : null;
|
|
6753
|
+
} catch {
|
|
6754
|
+
return null;
|
|
6755
|
+
}
|
|
6756
|
+
}
|
|
6757
|
+
async function stageFiles(files, alreadyStaged) {
|
|
6758
|
+
const accepted = [];
|
|
6759
|
+
const rejected = [];
|
|
6760
|
+
let slots = MAX_ATTACHMENTS - alreadyStaged.length;
|
|
6761
|
+
for (const file of files) {
|
|
6762
|
+
if (slots <= 0) {
|
|
6763
|
+
rejected.push({ name: file.name, reason: "too-many" });
|
|
6764
|
+
continue;
|
|
6765
|
+
}
|
|
6766
|
+
if (file.size > MAX_ATTACHMENT_BYTES) {
|
|
6767
|
+
rejected.push({ name: file.name, reason: "too-large" });
|
|
6768
|
+
continue;
|
|
6769
|
+
}
|
|
6770
|
+
const mimeType = file.type || "application/octet-stream";
|
|
6771
|
+
const textContent = looksTextual(file.name, mimeType) ? await readTextPrefix(file) : null;
|
|
6772
|
+
accepted.push({
|
|
6773
|
+
id: nextId(),
|
|
6774
|
+
name: file.name,
|
|
6775
|
+
mimeType,
|
|
6776
|
+
size: file.size,
|
|
6777
|
+
textContent,
|
|
6778
|
+
textExtracted: textContent !== null
|
|
6779
|
+
});
|
|
6780
|
+
slots -= 1;
|
|
6781
|
+
}
|
|
6782
|
+
return { accepted, rejected };
|
|
6783
|
+
}
|
|
6784
|
+
function toPayload(staged) {
|
|
6785
|
+
return staged.map(({ name, mimeType, size, textContent }) => ({
|
|
6786
|
+
name,
|
|
6787
|
+
mimeType,
|
|
6788
|
+
size,
|
|
6789
|
+
textContent
|
|
6790
|
+
}));
|
|
6791
|
+
}
|
|
6228
6792
|
var EXPLORE_CSS = `
|
|
6229
6793
|
@keyframes boff-explore-pulse {
|
|
6230
6794
|
0%, 80%, 100% { opacity: 0.25; transform: translateY(0); }
|
|
@@ -6312,6 +6876,70 @@ var EXPLORE_CSS = `
|
|
|
6312
6876
|
max-width: 100%;
|
|
6313
6877
|
height: auto;
|
|
6314
6878
|
}
|
|
6879
|
+
|
|
6880
|
+
/* ---- Ambient backdrop -----------------------------------------------------------------
|
|
6881
|
+
Two very low-opacity radial washes behind the welcome state, drifting slowly. Painted on
|
|
6882
|
+
a pseudo-element with pointer-events:none so it can never intercept a click \u2014 a
|
|
6883
|
+
decorative overlay that swallows clicks is a bug we have shipped before.
|
|
6884
|
+
Colours come from the product's own --primary token, so this picks up each site's palette
|
|
6885
|
+
instead of introducing one. */
|
|
6886
|
+
.boff-explore-aura {
|
|
6887
|
+
position: relative;
|
|
6888
|
+
isolation: isolate;
|
|
6889
|
+
}
|
|
6890
|
+
.boff-explore-aura::before {
|
|
6891
|
+
content: "";
|
|
6892
|
+
position: absolute;
|
|
6893
|
+
inset: -10% -20% auto -20%;
|
|
6894
|
+
height: 60%;
|
|
6895
|
+
z-index: -1;
|
|
6896
|
+
pointer-events: none;
|
|
6897
|
+
background:
|
|
6898
|
+
radial-gradient(38% 55% at 22% 30%, hsl(var(--primary) / 0.10), transparent 70%),
|
|
6899
|
+
radial-gradient(32% 48% at 78% 18%, hsl(var(--primary) / 0.07), transparent 72%);
|
|
6900
|
+
filter: blur(6px);
|
|
6901
|
+
animation: boff-explore-drift 26s ease-in-out infinite alternate;
|
|
6902
|
+
}
|
|
6903
|
+
@keyframes boff-explore-drift {
|
|
6904
|
+
from { transform: translate3d(-1.5%, -1%, 0) scale(1); }
|
|
6905
|
+
to { transform: translate3d(1.5%, 1.5%, 0) scale(1.06); }
|
|
6906
|
+
}
|
|
6907
|
+
|
|
6908
|
+
/* Entrance: content settles rather than snapping in. Short, and only once. */
|
|
6909
|
+
@keyframes boff-explore-rise {
|
|
6910
|
+
from { opacity: 0; transform: translateY(6px); }
|
|
6911
|
+
to { opacity: 1; transform: none; }
|
|
6912
|
+
}
|
|
6913
|
+
.boff-explore-rise {
|
|
6914
|
+
animation: boff-explore-rise 380ms cubic-bezier(0.22, 1, 0.36, 1) both;
|
|
6915
|
+
}
|
|
6916
|
+
.boff-explore-rise-1 { animation-delay: 40ms; }
|
|
6917
|
+
.boff-explore-rise-2 { animation-delay: 90ms; }
|
|
6918
|
+
.boff-explore-rise-3 { animation-delay: 140ms; }
|
|
6919
|
+
|
|
6920
|
+
/* A soft sheen that crosses the send button while a turn is in flight \u2014 enough to say
|
|
6921
|
+
"working" without another spinner competing with the thinking dots. */
|
|
6922
|
+
@keyframes boff-explore-sheen {
|
|
6923
|
+
from { transform: translateX(-120%); }
|
|
6924
|
+
to { transform: translateX(220%); }
|
|
6925
|
+
}
|
|
6926
|
+
.boff-explore-busy { position: relative; overflow: hidden; }
|
|
6927
|
+
.boff-explore-busy::after {
|
|
6928
|
+
content: "";
|
|
6929
|
+
position: absolute;
|
|
6930
|
+
inset: 0;
|
|
6931
|
+
pointer-events: none;
|
|
6932
|
+
background: linear-gradient(100deg, transparent 20%, hsl(var(--primary) / 0.22) 50%, transparent 80%);
|
|
6933
|
+
animation: boff-explore-sheen 1.5s ease-in-out infinite;
|
|
6934
|
+
}
|
|
6935
|
+
|
|
6936
|
+
/* Every one of the above is decoration. Reduced motion removes the movement and keeps the
|
|
6937
|
+
final state, rather than leaving content mid-animation and invisible. */
|
|
6938
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6939
|
+
.boff-explore-aura::before,
|
|
6940
|
+
.boff-explore-busy::after { animation: none; }
|
|
6941
|
+
.boff-explore-rise { animation: none; opacity: 1; transform: none; }
|
|
6942
|
+
}
|
|
6315
6943
|
`;
|
|
6316
6944
|
function ExploreStyles() {
|
|
6317
6945
|
return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: EXPLORE_CSS } });
|
|
@@ -6509,17 +7137,48 @@ function ThinkingIndicator({ activity }) {
|
|
|
6509
7137
|
}
|
|
6510
7138
|
);
|
|
6511
7139
|
}
|
|
6512
|
-
function UserBubble({
|
|
6513
|
-
|
|
6514
|
-
|
|
6515
|
-
|
|
6516
|
-
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
6520
|
-
|
|
7140
|
+
function UserBubble({
|
|
7141
|
+
strings: T,
|
|
7142
|
+
message
|
|
7143
|
+
}) {
|
|
7144
|
+
const attachments = message.attachments ?? [];
|
|
7145
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end gap-1.5", children: [
|
|
7146
|
+
/* @__PURE__ */ jsx(
|
|
7147
|
+
"div",
|
|
7148
|
+
{
|
|
7149
|
+
"data-boff-explore": "user",
|
|
7150
|
+
className: "max-w-[85%] whitespace-pre-wrap break-words rounded-2xl rounded-br-md bg-primary px-4 py-2.5 text-sm leading-relaxed text-primary-foreground shadow-sm",
|
|
7151
|
+
children: message.content
|
|
7152
|
+
}
|
|
7153
|
+
),
|
|
7154
|
+
attachments.length > 0 ? /* @__PURE__ */ jsx(
|
|
7155
|
+
"ul",
|
|
7156
|
+
{
|
|
7157
|
+
"data-boff-explore": "user-attachments",
|
|
7158
|
+
className: "flex max-w-[85%] flex-wrap justify-end gap-1.5",
|
|
7159
|
+
children: attachments.map((attachment) => /* @__PURE__ */ jsxs(
|
|
7160
|
+
"li",
|
|
7161
|
+
{
|
|
7162
|
+
"data-boff-explore": "user-attachment",
|
|
7163
|
+
"data-text-extracted": attachment.textExtracted ? "true" : "false",
|
|
7164
|
+
className: "flex max-w-full items-center gap-1.5 rounded-full border border-border bg-muted/60 px-2.5 py-1 text-xs text-muted-foreground",
|
|
7165
|
+
children: [
|
|
7166
|
+
/* @__PURE__ */ jsx(Paperclip, { className: "h-3 w-3 shrink-0" }),
|
|
7167
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", title: attachment.name, children: attachment.name }),
|
|
7168
|
+
attachment.textExtracted ? null : /* @__PURE__ */ jsxs("span", { className: "shrink-0", children: [
|
|
7169
|
+
"\xB7 ",
|
|
7170
|
+
T.attachmentNameOnly
|
|
7171
|
+
] })
|
|
7172
|
+
]
|
|
7173
|
+
},
|
|
7174
|
+
`${attachment.name}-${attachment.size}`
|
|
7175
|
+
))
|
|
7176
|
+
}
|
|
7177
|
+
) : null
|
|
7178
|
+
] });
|
|
6521
7179
|
}
|
|
6522
7180
|
function AssistantBubble({
|
|
7181
|
+
strings: T,
|
|
6523
7182
|
message,
|
|
6524
7183
|
activity,
|
|
6525
7184
|
onNavigate,
|
|
@@ -6536,7 +7195,7 @@ function AssistantBubble({
|
|
|
6536
7195
|
ref: anchorRef,
|
|
6537
7196
|
"data-boff-explore": "assistant",
|
|
6538
7197
|
"data-status": message.status,
|
|
6539
|
-
className: "flex scroll-mt-4 gap-3",
|
|
7198
|
+
className: "boff-explore-rise flex scroll-mt-4 gap-3",
|
|
6540
7199
|
children: [
|
|
6541
7200
|
/* @__PURE__ */ jsx(
|
|
6542
7201
|
"span",
|
|
@@ -6567,7 +7226,7 @@ function AssistantBubble({
|
|
|
6567
7226
|
event.preventDefault();
|
|
6568
7227
|
onNavigate("/contact");
|
|
6569
7228
|
},
|
|
6570
|
-
children:
|
|
7229
|
+
children: T.askHuman
|
|
6571
7230
|
}
|
|
6572
7231
|
),
|
|
6573
7232
|
"."
|
|
@@ -6582,7 +7241,7 @@ function AssistantBubble({
|
|
|
6582
7241
|
streaming ? /* @__PURE__ */ jsx(ThinkingIndicator, { activity }) : null,
|
|
6583
7242
|
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: "That answer didn't come through. Try asking again." }) : null,
|
|
6584
7243
|
message.references.length > 0 ? /* @__PURE__ */ jsxs("div", { children: [
|
|
6585
|
-
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children:
|
|
7244
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.sources }),
|
|
6586
7245
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3", children: message.references.map((reference) => /* @__PURE__ */ jsx(
|
|
6587
7246
|
ReferenceCard,
|
|
6588
7247
|
{
|
|
@@ -6602,7 +7261,7 @@ function AssistantBubble({
|
|
|
6602
7261
|
`${cta.kind}-${cta.url}`
|
|
6603
7262
|
)) }) : null,
|
|
6604
7263
|
message.status === "COMPLETED" && (message.followUps?.length ?? 0) > 0 ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 pt-0.5", children: [
|
|
6605
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-muted-foreground", children:
|
|
7264
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-muted-foreground", children: T.nextYouCouldAsk }),
|
|
6606
7265
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: (message.followUps ?? []).map((question) => /* @__PURE__ */ jsxs(
|
|
6607
7266
|
"button",
|
|
6608
7267
|
{
|
|
@@ -6664,6 +7323,7 @@ function ErrorBanner({
|
|
|
6664
7323
|
);
|
|
6665
7324
|
}
|
|
6666
7325
|
function PromptCarousel({
|
|
7326
|
+
strings: T,
|
|
6667
7327
|
prompts,
|
|
6668
7328
|
onPrompt,
|
|
6669
7329
|
disabled
|
|
@@ -6678,6 +7338,11 @@ function PromptCarousel({
|
|
|
6678
7338
|
},
|
|
6679
7339
|
[count]
|
|
6680
7340
|
);
|
|
7341
|
+
const swipe = useSwipe({
|
|
7342
|
+
onSwipeLeft: () => go(1),
|
|
7343
|
+
onSwipeRight: () => go(-1),
|
|
7344
|
+
enabled: count > 1
|
|
7345
|
+
});
|
|
6681
7346
|
useEffect(() => {
|
|
6682
7347
|
if (paused || disabled || count < 2) return;
|
|
6683
7348
|
if (typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches) {
|
|
@@ -6690,7 +7355,7 @@ function PromptCarousel({
|
|
|
6690
7355
|
return /* @__PURE__ */ jsxs(
|
|
6691
7356
|
"div",
|
|
6692
7357
|
{
|
|
6693
|
-
className: "flex min-w-0 items-center gap-1.5",
|
|
7358
|
+
className: "flex min-w-0 touch-pan-y items-center gap-1.5",
|
|
6694
7359
|
role: "group",
|
|
6695
7360
|
"aria-roledescription": "carousel",
|
|
6696
7361
|
"aria-label": "Example questions",
|
|
@@ -6698,14 +7363,15 @@ function PromptCarousel({
|
|
|
6698
7363
|
onMouseLeave: () => setPaused(false),
|
|
6699
7364
|
onFocusCapture: () => setPaused(true),
|
|
6700
7365
|
onBlurCapture: () => setPaused(false),
|
|
7366
|
+
...swipe,
|
|
6701
7367
|
children: [
|
|
6702
7368
|
count > 1 ? /* @__PURE__ */ jsx(
|
|
6703
7369
|
"button",
|
|
6704
7370
|
{
|
|
6705
7371
|
type: "button",
|
|
6706
|
-
"aria-label":
|
|
7372
|
+
"aria-label": T.prevSuggestion,
|
|
6707
7373
|
onClick: () => go(-1),
|
|
6708
|
-
className: "
|
|
7374
|
+
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
6709
7375
|
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" })
|
|
6710
7376
|
}
|
|
6711
7377
|
) : null,
|
|
@@ -6732,7 +7398,7 @@ function PromptCarousel({
|
|
|
6732
7398
|
"button",
|
|
6733
7399
|
{
|
|
6734
7400
|
type: "button",
|
|
6735
|
-
"aria-label":
|
|
7401
|
+
"aria-label": T.nextSuggestion,
|
|
6736
7402
|
onClick: () => go(1),
|
|
6737
7403
|
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
6738
7404
|
children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })
|
|
@@ -6743,6 +7409,7 @@ function PromptCarousel({
|
|
|
6743
7409
|
);
|
|
6744
7410
|
}
|
|
6745
7411
|
function ProductStrip({
|
|
7412
|
+
strings: T,
|
|
6746
7413
|
products,
|
|
6747
7414
|
focusProduct,
|
|
6748
7415
|
onFocus
|
|
@@ -6777,7 +7444,7 @@ function ProductStrip({
|
|
|
6777
7444
|
"aria-pressed": focusProduct === null,
|
|
6778
7445
|
onClick: () => onFocus(null),
|
|
6779
7446
|
className: chipClass(focusProduct === null),
|
|
6780
|
-
children:
|
|
7447
|
+
children: T.allProducts
|
|
6781
7448
|
}
|
|
6782
7449
|
),
|
|
6783
7450
|
products.map((product) => /* @__PURE__ */ jsx(
|
|
@@ -6806,7 +7473,7 @@ function ProductStrip({
|
|
|
6806
7473
|
"aria-expanded": expanded,
|
|
6807
7474
|
onClick: () => setExpanded((v) => !v),
|
|
6808
7475
|
className: "shrink-0 whitespace-nowrap rounded-full px-2 py-1 text-xs font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
6809
|
-
children: expanded ?
|
|
7476
|
+
children: expanded ? T.showLess : `${T.showAll} ${products.length}`
|
|
6810
7477
|
}
|
|
6811
7478
|
) : null
|
|
6812
7479
|
]
|
|
@@ -6914,6 +7581,7 @@ function DisclaimerDialog({
|
|
|
6914
7581
|
);
|
|
6915
7582
|
}
|
|
6916
7583
|
function WelcomeState({
|
|
7584
|
+
strings: T,
|
|
6917
7585
|
title,
|
|
6918
7586
|
body,
|
|
6919
7587
|
prompts,
|
|
@@ -6923,43 +7591,45 @@ function WelcomeState({
|
|
|
6923
7591
|
onFocus,
|
|
6924
7592
|
disabled
|
|
6925
7593
|
}) {
|
|
6926
|
-
return /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-3xl px-4 py-
|
|
6927
|
-
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
7594
|
+
return /* @__PURE__ */ jsxs("div", { className: "boff-explore-aura mx-auto my-auto w-full max-w-3xl px-4 py-6 sm:py-8 lg:py-10", children: [
|
|
7595
|
+
/* @__PURE__ */ jsxs("div", { className: "boff-explore-rise text-center", children: [
|
|
6928
7596
|
/* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-muted px-3 py-1 text-xs font-medium text-muted-foreground", children: [
|
|
6929
7597
|
/* @__PURE__ */ jsx(Sparkles, { className: "h-3.5 w-3.5" }),
|
|
6930
|
-
|
|
7598
|
+
T.badge
|
|
6931
7599
|
] }),
|
|
6932
7600
|
/* @__PURE__ */ jsx("h1", { className: "mt-4 text-balance break-words text-2xl font-bold tracking-tight sm:text-4xl", children: title }),
|
|
6933
7601
|
/* @__PURE__ */ jsx("p", { className: "mx-auto mt-2.5 max-w-2xl text-pretty text-sm leading-relaxed text-muted-foreground sm:text-lg", children: body })
|
|
6934
7602
|
] }),
|
|
6935
|
-
/* @__PURE__ */ jsx("ul", { className: "mt-
|
|
7603
|
+
/* @__PURE__ */ jsx("ul", { className: "boff-explore-rise boff-explore-rise-1 mt-6 grid grid-cols-3 gap-2 sm:mt-7 sm:gap-2.5", children: CAPABILITIES.map(({ icon: Icon, body: capBody }, i) => /* @__PURE__ */ jsxs(
|
|
6936
7604
|
"li",
|
|
6937
7605
|
{
|
|
6938
|
-
className: "rounded-xl border border-border/70 bg-card/60 p-
|
|
7606
|
+
className: "rounded-xl border border-border/70 bg-card/60 p-2.5 text-center transition-colors hover:border-border sm:p-3.5 sm:text-left",
|
|
6939
7607
|
children: [
|
|
6940
|
-
/* @__PURE__ */ jsx("span", { className: "mb-
|
|
6941
|
-
/* @__PURE__ */ jsx("p", { className: "text-
|
|
6942
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1 text-xs leading-relaxed text-muted-foreground", children: capBody })
|
|
7608
|
+
/* @__PURE__ */ jsx("span", { className: "mx-auto mb-1.5 flex h-7 w-7 items-center justify-center rounded-lg bg-primary/10 text-primary sm:mx-0 sm:mb-2.5 sm:h-8 sm:w-8", children: /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 sm:h-4 sm:w-4" }) }),
|
|
7609
|
+
/* @__PURE__ */ jsx("p", { className: "text-[11px] font-semibold leading-tight text-card-foreground sm:text-sm sm:leading-normal", children: T.capabilities[i] ?? "" }),
|
|
7610
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 hidden text-xs leading-relaxed text-muted-foreground sm:block", children: capBody })
|
|
6943
7611
|
]
|
|
6944
7612
|
},
|
|
6945
|
-
|
|
7613
|
+
i
|
|
6946
7614
|
)) }),
|
|
6947
|
-
prompts.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "mt-8", children: [
|
|
6948
|
-
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children:
|
|
7615
|
+
prompts.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "boff-explore-rise boff-explore-rise-2 mt-8", children: [
|
|
7616
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.tryAsking }),
|
|
6949
7617
|
/* @__PURE__ */ jsx(
|
|
6950
7618
|
PromptCarousel,
|
|
6951
7619
|
{
|
|
7620
|
+
strings: T,
|
|
6952
7621
|
prompts,
|
|
6953
7622
|
onPrompt,
|
|
6954
7623
|
disabled
|
|
6955
7624
|
}
|
|
6956
7625
|
)
|
|
6957
7626
|
] }) : null,
|
|
6958
|
-
products.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "mt-6", children: [
|
|
6959
|
-
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children:
|
|
7627
|
+
products.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-6", children: [
|
|
7628
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
|
|
6960
7629
|
/* @__PURE__ */ jsx(
|
|
6961
7630
|
ProductStrip,
|
|
6962
7631
|
{
|
|
7632
|
+
strings: T,
|
|
6963
7633
|
products,
|
|
6964
7634
|
focusProduct,
|
|
6965
7635
|
onFocus
|
|
@@ -6978,7 +7648,8 @@ function ExplorePage({
|
|
|
6978
7648
|
onNavigate,
|
|
6979
7649
|
onSend,
|
|
6980
7650
|
welcomeTitle,
|
|
6981
|
-
welcomeBody
|
|
7651
|
+
welcomeBody,
|
|
7652
|
+
locale
|
|
6982
7653
|
}) {
|
|
6983
7654
|
const pageUrl = useMemo(
|
|
6984
7655
|
() => typeof window === "undefined" ? void 0 : window.location.href,
|
|
@@ -7003,7 +7674,8 @@ function ExplorePage({
|
|
|
7003
7674
|
deleteConversation,
|
|
7004
7675
|
clearHistory,
|
|
7005
7676
|
recordClick,
|
|
7006
|
-
createShareLink
|
|
7677
|
+
createShareLink,
|
|
7678
|
+
isSharedView
|
|
7007
7679
|
} = useExploreChat({ productSlug, pageUrl, onSend, examplePrompts });
|
|
7008
7680
|
const [draft, setDraft] = useState("");
|
|
7009
7681
|
const textareaRef = useRef(null);
|
|
@@ -7022,7 +7694,18 @@ function ExplorePage({
|
|
|
7022
7694
|
}
|
|
7023
7695
|
});
|
|
7024
7696
|
speechStopRef.current = speech.stop;
|
|
7697
|
+
const activeLocale = useMemo(
|
|
7698
|
+
() => resolveExploreLocale(locale),
|
|
7699
|
+
[locale]
|
|
7700
|
+
);
|
|
7701
|
+
const T = useMemo(() => exploreStrings(activeLocale), [activeLocale]);
|
|
7702
|
+
const rtl = isRtlLocale(activeLocale);
|
|
7025
7703
|
const [disclaimerOpen, setDisclaimerOpen] = useState(false);
|
|
7704
|
+
const [staged, setStaged] = useState([]);
|
|
7705
|
+
const [attachmentNotice, setAttachmentNotice] = useState(null);
|
|
7706
|
+
const fileInputRef = useRef(null);
|
|
7707
|
+
const stagedRef = useRef([]);
|
|
7708
|
+
stagedRef.current = staged;
|
|
7026
7709
|
const [shareLabel, setShareLabel] = useState("Share");
|
|
7027
7710
|
const [shareUrl, setShareUrl] = useState(null);
|
|
7028
7711
|
const scrollRef = useRef(null);
|
|
@@ -7099,13 +7782,40 @@ function ExplorePage({
|
|
|
7099
7782
|
setShareLabel("Share");
|
|
7100
7783
|
}
|
|
7101
7784
|
}, [createShareLink, pageUrl]);
|
|
7785
|
+
const handleFilesPicked = useCallback(
|
|
7786
|
+
async (picked) => {
|
|
7787
|
+
if (!picked || picked.length === 0) return;
|
|
7788
|
+
const { accepted, rejected } = await stageFiles(
|
|
7789
|
+
Array.from(picked),
|
|
7790
|
+
stagedRef.current
|
|
7791
|
+
);
|
|
7792
|
+
setStaged((prev) => [...prev, ...accepted]);
|
|
7793
|
+
const first = rejected[0];
|
|
7794
|
+
setAttachmentNotice(
|
|
7795
|
+
first ? first.reason === "too-large" ? fill(T.attachmentTooLarge, {
|
|
7796
|
+
name: first.name,
|
|
7797
|
+
size: String(MAX_ATTACHMENT_BYTES / (1024 * 1024))
|
|
7798
|
+
}) : fill(T.attachmentTooMany, {
|
|
7799
|
+
name: first.name,
|
|
7800
|
+
max: String(MAX_ATTACHMENTS)
|
|
7801
|
+
}) : null
|
|
7802
|
+
);
|
|
7803
|
+
},
|
|
7804
|
+
[T]
|
|
7805
|
+
);
|
|
7806
|
+
const removeAttachment = useCallback((id) => {
|
|
7807
|
+
setStaged((prev) => prev.filter((entry) => entry.id !== id));
|
|
7808
|
+
setAttachmentNotice(null);
|
|
7809
|
+
}, []);
|
|
7102
7810
|
const submitDraft = useCallback(() => {
|
|
7103
7811
|
const text = draft.trim();
|
|
7104
7812
|
if (!text || overLimit || busy || !canSend) return;
|
|
7105
7813
|
stopDictation();
|
|
7106
7814
|
setDraft("");
|
|
7107
7815
|
stickToBottomRef.current = true;
|
|
7108
|
-
void send(text);
|
|
7816
|
+
void send(text, toPayload(stagedRef.current));
|
|
7817
|
+
setStaged([]);
|
|
7818
|
+
setAttachmentNotice(null);
|
|
7109
7819
|
textareaRef.current?.focus();
|
|
7110
7820
|
}, [busy, canSend, draft, overLimit, send, stopDictation]);
|
|
7111
7821
|
const sendPrompt = useCallback(
|
|
@@ -7113,7 +7823,9 @@ function ExplorePage({
|
|
|
7113
7823
|
if (!canSend || busy) return;
|
|
7114
7824
|
setDraft("");
|
|
7115
7825
|
stickToBottomRef.current = true;
|
|
7116
|
-
void send(prompt);
|
|
7826
|
+
void send(prompt, toPayload(stagedRef.current));
|
|
7827
|
+
setStaged([]);
|
|
7828
|
+
setAttachmentNotice(null);
|
|
7117
7829
|
},
|
|
7118
7830
|
[busy, canSend, send]
|
|
7119
7831
|
);
|
|
@@ -7126,7 +7838,9 @@ function ExplorePage({
|
|
|
7126
7838
|
},
|
|
7127
7839
|
[submitDraft]
|
|
7128
7840
|
);
|
|
7129
|
-
const composerDisabled = phase === "limited" || phase === "disabled" || !catalog.enabled
|
|
7841
|
+
const composerDisabled = phase === "limited" || phase === "disabled" || !catalog.enabled || // A share token grants read access only — the server would reject a send anyway, so
|
|
7842
|
+
// disable it here rather than letting the visitor type into a dead composer.
|
|
7843
|
+
isSharedView;
|
|
7130
7844
|
const captchaOn = Boolean(
|
|
7131
7845
|
catalog.captchaRequired && catalog.recaptchaSiteKey
|
|
7132
7846
|
);
|
|
@@ -7136,6 +7850,8 @@ function ExplorePage({
|
|
|
7136
7850
|
{
|
|
7137
7851
|
"data-boff-explore": "page",
|
|
7138
7852
|
"data-phase": phase,
|
|
7853
|
+
"data-locale": activeLocale,
|
|
7854
|
+
dir: rtl ? "rtl" : void 0,
|
|
7139
7855
|
className: cn(
|
|
7140
7856
|
"flex w-full min-w-0 flex-col overflow-x-hidden bg-background text-foreground",
|
|
7141
7857
|
heightMode === "auto" && "min-h-[70vh]",
|
|
@@ -7297,10 +8013,17 @@ function ExplorePage({
|
|
|
7297
8013
|
role: "log",
|
|
7298
8014
|
"aria-live": "polite",
|
|
7299
8015
|
"aria-label": "Explore conversation",
|
|
7300
|
-
className:
|
|
8016
|
+
className: cn(
|
|
8017
|
+
"boff-explore-scroll min-h-0 min-w-0 flex-1 overflow-y-auto overflow-x-hidden",
|
|
8018
|
+
// Only while the welcome state is showing: a flex column is what lets its
|
|
8019
|
+
// `my-auto` centre the block on a tall screen. The transcript must NOT be a flex
|
|
8020
|
+
// column — that would fight the natural top-down flow of messages.
|
|
8021
|
+
showWelcome && "flex flex-col"
|
|
8022
|
+
),
|
|
7301
8023
|
children: showWelcome ? /* @__PURE__ */ jsx(
|
|
7302
8024
|
WelcomeState,
|
|
7303
8025
|
{
|
|
8026
|
+
strings: T,
|
|
7304
8027
|
title: resolvedTitle,
|
|
7305
8028
|
body: resolvedBody,
|
|
7306
8029
|
prompts,
|
|
@@ -7311,9 +8034,10 @@ function ExplorePage({
|
|
|
7311
8034
|
disabled: !canSend || busy
|
|
7312
8035
|
}
|
|
7313
8036
|
) : /* @__PURE__ */ jsx("div", { className: "mx-auto w-full min-w-0 max-w-3xl space-y-6 px-4 py-6", children: messages.map(
|
|
7314
|
-
(message) => message.role === "USER" ? /* @__PURE__ */ jsx(UserBubble, { message }, message.id) : /* @__PURE__ */ jsx(
|
|
8037
|
+
(message) => message.role === "USER" ? /* @__PURE__ */ jsx(UserBubble, { strings: T, message }, message.id) : /* @__PURE__ */ jsx(
|
|
7315
8038
|
AssistantBubble,
|
|
7316
8039
|
{
|
|
8040
|
+
strings: T,
|
|
7317
8041
|
message,
|
|
7318
8042
|
activity,
|
|
7319
8043
|
onNavigate,
|
|
@@ -7334,6 +8058,33 @@ function ExplorePage({
|
|
|
7334
8058
|
captchaOn
|
|
7335
8059
|
}
|
|
7336
8060
|
),
|
|
8061
|
+
isSharedView ? /* @__PURE__ */ jsxs(
|
|
8062
|
+
"div",
|
|
8063
|
+
{
|
|
8064
|
+
"data-boff-explore": "shared-banner",
|
|
8065
|
+
className: "mx-auto flex w-full max-w-3xl items-center gap-2 px-4 pb-2 text-xs text-muted-foreground",
|
|
8066
|
+
children: [
|
|
8067
|
+
/* @__PURE__ */ jsx(Link2, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
8068
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1", children: "You are viewing a shared conversation. Start your own to ask a question." }),
|
|
8069
|
+
/* @__PURE__ */ jsx(
|
|
8070
|
+
"button",
|
|
8071
|
+
{
|
|
8072
|
+
type: "button",
|
|
8073
|
+
"data-boff-explore": "shared-start-own",
|
|
8074
|
+
onClick: () => {
|
|
8075
|
+
if (typeof window !== "undefined") {
|
|
8076
|
+
const url = new URL(window.location.href);
|
|
8077
|
+
url.searchParams.delete("c");
|
|
8078
|
+
window.location.href = url.toString();
|
|
8079
|
+
}
|
|
8080
|
+
},
|
|
8081
|
+
className: "shrink-0 underline underline-offset-2 hover:text-foreground",
|
|
8082
|
+
children: "New chat"
|
|
8083
|
+
}
|
|
8084
|
+
)
|
|
8085
|
+
]
|
|
8086
|
+
}
|
|
8087
|
+
) : null,
|
|
7337
8088
|
/* @__PURE__ */ jsx("div", { className: "border-t border-border bg-background/85 px-4 pb-[max(1rem,env(safe-area-inset-bottom))] pt-3 backdrop-blur-md", children: /* @__PURE__ */ jsxs(
|
|
7338
8089
|
"form",
|
|
7339
8090
|
{
|
|
@@ -7345,11 +8096,57 @@ function ExplorePage({
|
|
|
7345
8096
|
},
|
|
7346
8097
|
children: [
|
|
7347
8098
|
error ? /* @__PURE__ */ jsx(ErrorBanner, { error, onRetry: retry, onReset: reset }) : null,
|
|
8099
|
+
staged.length > 0 ? /* @__PURE__ */ jsx(
|
|
8100
|
+
"ul",
|
|
8101
|
+
{
|
|
8102
|
+
"data-boff-explore": "attachments",
|
|
8103
|
+
className: "mb-2 flex flex-wrap gap-1.5",
|
|
8104
|
+
"aria-label": T.attach,
|
|
8105
|
+
children: staged.map((entry) => /* @__PURE__ */ jsxs(
|
|
8106
|
+
"li",
|
|
8107
|
+
{
|
|
8108
|
+
"data-boff-explore": "attachment",
|
|
8109
|
+
"data-text-extracted": entry.textExtracted ? "true" : "false",
|
|
8110
|
+
className: "flex max-w-full items-center gap-1.5 rounded-full border border-border bg-muted/60 py-1 pl-2.5 pr-1 text-xs",
|
|
8111
|
+
children: [
|
|
8112
|
+
/* @__PURE__ */ jsx(Paperclip, { className: "h-3 w-3 shrink-0 text-muted-foreground" }),
|
|
8113
|
+
/* @__PURE__ */ jsx("span", { className: "truncate font-medium", title: entry.name, children: entry.name }),
|
|
8114
|
+
/* @__PURE__ */ jsxs("span", { className: "shrink-0 text-muted-foreground", children: [
|
|
8115
|
+
formatBytes(entry.size),
|
|
8116
|
+
entry.textExtracted ? "" : ` \xB7 ${T.attachmentNameOnly}`
|
|
8117
|
+
] }),
|
|
8118
|
+
/* @__PURE__ */ jsx(
|
|
8119
|
+
"button",
|
|
8120
|
+
{
|
|
8121
|
+
type: "button",
|
|
8122
|
+
"data-boff-explore": "attachment-remove",
|
|
8123
|
+
onClick: () => removeAttachment(entry.id),
|
|
8124
|
+
"aria-label": fill(T.removeAttachment, { name: entry.name }),
|
|
8125
|
+
className: "ml-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-background hover:text-foreground",
|
|
8126
|
+
children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
|
|
8127
|
+
}
|
|
8128
|
+
)
|
|
8129
|
+
]
|
|
8130
|
+
},
|
|
8131
|
+
entry.id
|
|
8132
|
+
))
|
|
8133
|
+
}
|
|
8134
|
+
) : null,
|
|
8135
|
+
attachmentNotice !== null ? /* @__PURE__ */ jsx(
|
|
8136
|
+
"p",
|
|
8137
|
+
{
|
|
8138
|
+
"data-boff-explore": "attachment-notice",
|
|
8139
|
+
role: "status",
|
|
8140
|
+
className: "mb-2 text-xs text-destructive",
|
|
8141
|
+
children: attachmentNotice
|
|
8142
|
+
}
|
|
8143
|
+
) : null,
|
|
7348
8144
|
/* @__PURE__ */ jsxs(
|
|
7349
8145
|
"div",
|
|
7350
8146
|
{
|
|
7351
8147
|
className: cn(
|
|
7352
8148
|
"flex min-w-0 items-end gap-2 rounded-2xl border bg-card p-2 shadow-sm transition-all",
|
|
8149
|
+
busy && "boff-explore-busy",
|
|
7353
8150
|
overLimit ? "border-destructive/60" : "border-border focus-within:border-primary/40 focus-within:ring-1 focus-within:ring-ring"
|
|
7354
8151
|
),
|
|
7355
8152
|
children: [
|
|
@@ -7369,8 +8166,40 @@ function ExplorePage({
|
|
|
7369
8166
|
composingRef.current = false;
|
|
7370
8167
|
},
|
|
7371
8168
|
"aria-label": "Ask a question",
|
|
7372
|
-
placeholder: composerDisabled ? phase === "limited" ? "Message limit reached \u2014 please try again later" : "Explore is unavailable right now" : focusedProductName ?
|
|
7373
|
-
|
|
8169
|
+
placeholder: composerDisabled ? phase === "limited" ? "Message limit reached \u2014 please try again later" : "Explore is unavailable right now" : focusedProductName ? fill(T.placeholderProduct, {
|
|
8170
|
+
product: focusedProductName
|
|
8171
|
+
}) : T.placeholder,
|
|
8172
|
+
className: "max-h-[200px] min-h-[44px] w-full min-w-0 flex-1 resize-none border-0 bg-transparent px-2 py-2.5 text-base shadow-none focus-visible:ring-0 sm:text-sm"
|
|
8173
|
+
}
|
|
8174
|
+
),
|
|
8175
|
+
/* @__PURE__ */ jsx(
|
|
8176
|
+
"input",
|
|
8177
|
+
{
|
|
8178
|
+
ref: fileInputRef,
|
|
8179
|
+
type: "file",
|
|
8180
|
+
multiple: true,
|
|
8181
|
+
className: "hidden",
|
|
8182
|
+
onChange: (event) => {
|
|
8183
|
+
void handleFilesPicked(event.target.files);
|
|
8184
|
+
event.target.value = "";
|
|
8185
|
+
}
|
|
8186
|
+
}
|
|
8187
|
+
),
|
|
8188
|
+
/* @__PURE__ */ jsx(
|
|
8189
|
+
Button,
|
|
8190
|
+
{
|
|
8191
|
+
"data-boff-explore": "attach",
|
|
8192
|
+
type: "button",
|
|
8193
|
+
size: "icon",
|
|
8194
|
+
variant: "ghost",
|
|
8195
|
+
disabled: composerDisabled || staged.length >= MAX_ATTACHMENTS,
|
|
8196
|
+
"aria-label": T.attach,
|
|
8197
|
+
title: `${T.attach} \u2014 ${fill(T.attachHint, {
|
|
8198
|
+
max: String(MAX_ATTACHMENTS),
|
|
8199
|
+
size: String(MAX_ATTACHMENT_BYTES / (1024 * 1024))
|
|
8200
|
+
})}`,
|
|
8201
|
+
onClick: () => fileInputRef.current?.click(),
|
|
8202
|
+
children: /* @__PURE__ */ jsx(Paperclip, { className: "h-4 w-4" })
|
|
7374
8203
|
}
|
|
7375
8204
|
),
|
|
7376
8205
|
speech.supported ? /* @__PURE__ */ jsx(
|
|
@@ -7382,9 +8211,9 @@ function ExplorePage({
|
|
|
7382
8211
|
size: "icon",
|
|
7383
8212
|
variant: speech.listening ? "default" : "ghost",
|
|
7384
8213
|
disabled: composerDisabled,
|
|
7385
|
-
"aria-label": speech.listening ?
|
|
8214
|
+
"aria-label": speech.listening ? T.stopDictating : T.dictate,
|
|
7386
8215
|
"aria-pressed": speech.listening,
|
|
7387
|
-
title: speech.listening ?
|
|
8216
|
+
title: speech.listening ? T.stopDictating : T.dictate,
|
|
7388
8217
|
onClick: speech.toggle,
|
|
7389
8218
|
className: cn(speech.listening && "animate-pulse"),
|
|
7390
8219
|
children: /* @__PURE__ */ jsx(Mic, { className: "h-4 w-4" })
|
|
@@ -7484,7 +8313,7 @@ function ExplorePage({
|
|
|
7484
8313
|
)
|
|
7485
8314
|
] }) : null,
|
|
7486
8315
|
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground", children: [
|
|
7487
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children:
|
|
8316
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: T.disclaimerShort }),
|
|
7488
8317
|
/* @__PURE__ */ jsx(
|
|
7489
8318
|
"button",
|
|
7490
8319
|
{
|
|
@@ -7492,7 +8321,7 @@ function ExplorePage({
|
|
|
7492
8321
|
"data-boff-explore": "disclaimer",
|
|
7493
8322
|
onClick: () => setDisclaimerOpen(true),
|
|
7494
8323
|
className: "shrink-0 underline underline-offset-2 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
7495
|
-
children:
|
|
8324
|
+
children: T.disclaimer
|
|
7496
8325
|
}
|
|
7497
8326
|
)
|
|
7498
8327
|
] })
|
|
@@ -9355,7 +10184,7 @@ function ChangelogPage(props) {
|
|
|
9355
10184
|
}
|
|
9356
10185
|
|
|
9357
10186
|
// src/content/utils.ts
|
|
9358
|
-
function
|
|
10187
|
+
function formatBytes2(bytes) {
|
|
9359
10188
|
if (bytes == null) return "";
|
|
9360
10189
|
if (bytes < 1024) return `${bytes} B`;
|
|
9361
10190
|
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;
|
|
@@ -9476,7 +10305,7 @@ function PressKitLightbox({
|
|
|
9476
10305
|
}, [asset, onClose]);
|
|
9477
10306
|
if (!asset) return null;
|
|
9478
10307
|
const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
|
|
9479
|
-
const size =
|
|
10308
|
+
const size = formatBytes2(asset.fileSize);
|
|
9480
10309
|
return /* @__PURE__ */ jsx(
|
|
9481
10310
|
"div",
|
|
9482
10311
|
{
|
|
@@ -9585,7 +10414,7 @@ function AssetCard({
|
|
|
9585
10414
|
day: "numeric"
|
|
9586
10415
|
}) : "";
|
|
9587
10416
|
const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
|
|
9588
|
-
const size =
|
|
10417
|
+
const size = formatBytes2(asset.fileSize);
|
|
9589
10418
|
const [imgError, setImgError] = useState(false);
|
|
9590
10419
|
const thumb = asset.thumbnailUrl && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
|
|
9591
10420
|
"img",
|
|
@@ -10089,7 +10918,7 @@ function ContractsPage(props) {
|
|
|
10089
10918
|
] }) }),
|
|
10090
10919
|
/* @__PURE__ */ jsx("section", { className: "max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-12", children: loading ? /* @__PURE__ */ jsx("div", { className: "flex justify-center py-20", children: /* @__PURE__ */ jsx("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent" }) }) : error ? /* @__PURE__ */ jsx("div", { className: "text-center py-16", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: error }) }) : contracts.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-center py-16", children: /* @__PURE__ */ jsx("p", { className: "text-base text-muted-foreground", children: "No contracts are available yet." }) }) : /* @__PURE__ */ jsx("ul", { className: "divide-y divide-border rounded-xl border border-border overflow-hidden bg-card", children: contracts.map((c) => {
|
|
10091
10920
|
const ext = fileExt(c);
|
|
10092
|
-
const size =
|
|
10921
|
+
const size = formatBytes2(c.fileSize);
|
|
10093
10922
|
return /* @__PURE__ */ jsxs(
|
|
10094
10923
|
"li",
|
|
10095
10924
|
{
|
|
@@ -12163,6 +12992,6 @@ function StoreProductDetailPage({
|
|
|
12163
12992
|
] });
|
|
12164
12993
|
}
|
|
12165
12994
|
|
|
12166
|
-
export { BlogListPage, BlogPostPage, Button, CareersApplyForm, CareersSubmissionForm, CaseStudiesListPage, CaseStudyPage, ChangelogPage, ContactPage, ContentRenderer, ContractsPage, DEFAULT_CONTACT_CATEGORIES, DEFAULT_EXPLORE_EXAMPLE_PROMPTS, ECOSYSTEM_PRODUCTS, EXPLORE_CATALOG_QUERY, 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, detectElectronPlatform, fetchPublicJobPosting, fetchPublicJobPostings, fetchPublicJobPostingsForSubmission, formatDownloads, formatPrice2 as formatPrice, getRecaptchaV3Token, isValidUrl, loadRecaptchaV3, useContentPage, useContentPages, useExploreChat, useProduct, useProductConfig, usePublicJobPosting, usePublicJobPostings, usePublicJobPostingsForSubmission, useWebSDK, useWebSDKConfig };
|
|
12995
|
+
export { BlogListPage, BlogPostPage, Button, CareersApplyForm, CareersSubmissionForm, CaseStudiesListPage, CaseStudyPage, ChangelogPage, 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, detectElectronPlatform, fetchPublicJobPosting, fetchPublicJobPostings, fetchPublicJobPostingsForSubmission, formatDownloads, formatPrice2 as formatPrice, getRecaptchaV3Token, isValidUrl, loadRecaptchaV3, useContentPage, useContentPages, useExploreChat, useProduct, useProductConfig, usePublicJobPosting, usePublicJobPostings, usePublicJobPostingsForSubmission, useWebSDK, useWebSDKConfig };
|
|
12167
12996
|
//# sourceMappingURL=index.mjs.map
|
|
12168
12997
|
//# sourceMappingURL=index.mjs.map
|