@burdenoff/website-sdk 2026.924.9 → 2026.924.11

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.d.mts CHANGED
@@ -22,7 +22,7 @@ import { A as AnswerRendererStrings } from './explore-Crc41y0j.mjs';
22
22
  export { E as EXPLORE_PREFILL_MAX_LENGTH, a as ExploreAnswerBody, b as ExploreAnswerBodyProps, c as ExploreAnswerStyles, d as ExplorePage, e as ExplorePageProps, f as answerPlainText, g as answerSpeechText, h as exploreQuestionHref, i as inlineImageOrigins, j as isInlineImageAllowed } from './explore-Crc41y0j.mjs';
23
23
  export { ExploreCta, ExploreCtaProps } from './components/explore-cta.mjs';
24
24
  export { g as ESCALATE_EXPLORE_CONVERSATION_MUTATION, h as EXPLORE_CATALOG_QUERY, i as EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS, j as EXPLORE_ESCALATION_NOTE_SOFT_MAX, k as EXPLORE_MESSAGE_QUERY, l as EscalateExploreConversationInput, m as EscalateExploreConversationResult, c as ExploreCatalog, n as ExploreCatalogQueryData, o as ExploreConceptHighlight, p as ExploreConversation, q as ExploreCtaKind, r as ExploreCtaLink, s as ExploreErrorCode, t as ExploreEscalation, b as ExploreLimits, d as ExploreMessage, u as ExploreMessageQueryData, v as ExploreMessageRole, w as ExploreMessageStatus, E as ExploreProduct, a as ExploreReference, S as SEND_EXPLORE_MESSAGE_MUTATION, x as SendExploreMessageInput, y as SendExploreMessageMutationData, z as SendExploreMessageResult, A as looksLikeDeliverableEmail } from './explore-types-B5sdOC5M.mjs';
25
- export { D as DEFAULT_EXPLORE_EXAMPLE_PROMPTS, E as ExploreChatError, a as ExploreChatErrorKind, b as ExploreChatPhase, c as ExploreEscalateOutcome, d as ExploreEscalateResult, F as FALLBACK_EXPLORE_LIMITS, U as UseExploreChatOptions, e as UseExploreChatResult, f as UseSpeechOutputOptions, g as UseSpeechOutputResult, h as classifyExploreError, s as stopSpeaking, u as useExploreChat, i as useProgressiveReveal, j as useSpeechOutput } from './use-progressive-reveal-Cmy8bA7L.mjs';
25
+ export { D as DEFAULT_EXPLORE_EXAMPLE_PROMPTS, E as ExploreChatError, a as ExploreChatErrorKind, b as ExploreChatPhase, c as ExploreEscalateOutcome, d as ExploreEscalateResult, F as FALLBACK_EXPLORE_LIMITS, U as UseExploreChatOptions, e as UseExploreChatResult, f as UseSpeechOutputOptions, g as UseSpeechOutputResult, h as classifyExploreError, s as stopSpeaking, u as useExploreChat, i as useProgressiveReveal, j as useSpeechOutput } from './use-progressive-reveal-BBLRAnbU.mjs';
26
26
  export { RybbitAnalytics, RybbitAnalyticsProps } from './analytics/index.mjs';
27
27
  export { PageHead, PageHeadProps } from './seo/index.mjs';
28
28
  export { ProductData, ProductProvider, ProductProviderProps, useProduct, useProductConfig } from './product/index.mjs';
@@ -770,7 +770,7 @@ declare function formatAnswerDate(value: string, locale: ExploreLocale): string;
770
770
 
771
771
  declare const buttonVariants: (props?: ({
772
772
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
773
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
773
+ size?: "icon" | "default" | "sm" | "lg" | null | undefined;
774
774
  } & class_variance_authority_types.ClassProp) | undefined) => string;
775
775
  interface ButtonProps extends react.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
776
776
  asChild?: boolean;
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@ import { A as AnswerRendererStrings } from './explore-C3SEP5K6.js';
22
22
  export { E as EXPLORE_PREFILL_MAX_LENGTH, a as ExploreAnswerBody, b as ExploreAnswerBodyProps, c as ExploreAnswerStyles, d as ExplorePage, e as ExplorePageProps, f as answerPlainText, g as answerSpeechText, h as exploreQuestionHref, i as inlineImageOrigins, j as isInlineImageAllowed } from './explore-C3SEP5K6.js';
23
23
  export { ExploreCta, ExploreCtaProps } from './components/explore-cta.js';
24
24
  export { g as ESCALATE_EXPLORE_CONVERSATION_MUTATION, h as EXPLORE_CATALOG_QUERY, i as EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS, j as EXPLORE_ESCALATION_NOTE_SOFT_MAX, k as EXPLORE_MESSAGE_QUERY, l as EscalateExploreConversationInput, m as EscalateExploreConversationResult, c as ExploreCatalog, n as ExploreCatalogQueryData, o as ExploreConceptHighlight, p as ExploreConversation, q as ExploreCtaKind, r as ExploreCtaLink, s as ExploreErrorCode, t as ExploreEscalation, b as ExploreLimits, d as ExploreMessage, u as ExploreMessageQueryData, v as ExploreMessageRole, w as ExploreMessageStatus, E as ExploreProduct, a as ExploreReference, S as SEND_EXPLORE_MESSAGE_MUTATION, x as SendExploreMessageInput, y as SendExploreMessageMutationData, z as SendExploreMessageResult, A as looksLikeDeliverableEmail } from './explore-types-B5sdOC5M.js';
25
- export { D as DEFAULT_EXPLORE_EXAMPLE_PROMPTS, E as ExploreChatError, a as ExploreChatErrorKind, b as ExploreChatPhase, c as ExploreEscalateOutcome, d as ExploreEscalateResult, F as FALLBACK_EXPLORE_LIMITS, U as UseExploreChatOptions, e as UseExploreChatResult, f as UseSpeechOutputOptions, g as UseSpeechOutputResult, h as classifyExploreError, s as stopSpeaking, u as useExploreChat, i as useProgressiveReveal, j as useSpeechOutput } from './use-progressive-reveal-DHPGGxZu.js';
25
+ export { D as DEFAULT_EXPLORE_EXAMPLE_PROMPTS, E as ExploreChatError, a as ExploreChatErrorKind, b as ExploreChatPhase, c as ExploreEscalateOutcome, d as ExploreEscalateResult, F as FALLBACK_EXPLORE_LIMITS, U as UseExploreChatOptions, e as UseExploreChatResult, f as UseSpeechOutputOptions, g as UseSpeechOutputResult, h as classifyExploreError, s as stopSpeaking, u as useExploreChat, i as useProgressiveReveal, j as useSpeechOutput } from './use-progressive-reveal-myNKWb6S.js';
26
26
  export { RybbitAnalytics, RybbitAnalyticsProps } from './analytics/index.js';
27
27
  export { PageHead, PageHeadProps } from './seo/index.js';
28
28
  export { ProductData, ProductProvider, ProductProviderProps, useProduct, useProductConfig } from './product/index.js';
@@ -770,7 +770,7 @@ declare function formatAnswerDate(value: string, locale: ExploreLocale): string;
770
770
 
771
771
  declare const buttonVariants: (props?: ({
772
772
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
773
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
773
+ size?: "icon" | "default" | "sm" | "lg" | null | undefined;
774
774
  } & class_variance_authority_types.ClassProp) | undefined) => string;
775
775
  interface ButtonProps extends react.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
776
776
  asChild?: boolean;
package/dist/index.js CHANGED
@@ -9034,6 +9034,45 @@ function buildFallbackCatalog(examplePrompts, welcome) {
9034
9034
  conceptHighlights: []
9035
9035
  };
9036
9036
  }
9037
+ var BAKED_CATALOG_ELEMENT_ID = "boff-explore-catalog";
9038
+ function bakedCatalogLocale() {
9039
+ if (typeof navigator === "undefined") return "";
9040
+ return (navigator.language || "").toLowerCase().split("-")[0] ?? "";
9041
+ }
9042
+ function snapshotBakedElement() {
9043
+ if (typeof document === "undefined") return null;
9044
+ const el = document.getElementById(BAKED_CATALOG_ELEMENT_ID);
9045
+ if (!el || el.tagName !== "SCRIPT" || el.getAttribute("type") !== "application/json")
9046
+ return null;
9047
+ return {
9048
+ product: el.getAttribute("data-product") ?? "",
9049
+ locale: el.getAttribute("data-locale") ?? "",
9050
+ text: el.textContent ?? ""
9051
+ };
9052
+ }
9053
+ var BAKED_AT_LOAD = snapshotBakedElement();
9054
+ function isCatalogShape(value) {
9055
+ if (!value || typeof value !== "object") return false;
9056
+ const c = value;
9057
+ const listOrAbsent = (v) => v === void 0 || v === null || Array.isArray(v);
9058
+ const textOrAbsent = (v) => v === void 0 || v === null || typeof v === "string";
9059
+ return (c["enabled"] === void 0 || typeof c["enabled"] === "boolean") && listOrAbsent(c["products"]) && listOrAbsent(c["examplePrompts"]) && listOrAbsent(c["conceptHighlights"]) && textOrAbsent(c["welcomeTitle"]) && textOrAbsent(c["welcomeBody"]);
9060
+ }
9061
+ function readBakedCatalog(productSlug) {
9062
+ const baked = snapshotBakedElement() ?? BAKED_AT_LOAD;
9063
+ if (!baked) return null;
9064
+ if (baked.product !== (productSlug ?? "")) return null;
9065
+ if (baked.locale && baked.locale !== bakedCatalogLocale()) return null;
9066
+ try {
9067
+ const parsed = JSON.parse(baked.text);
9068
+ return isCatalogShape(parsed) ? parsed : null;
9069
+ } catch {
9070
+ return null;
9071
+ }
9072
+ }
9073
+ function serializeBakedCatalog(raw) {
9074
+ return JSON.stringify(raw).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
9075
+ }
9037
9076
  function normalizeCatalog(raw, fallback) {
9038
9077
  return {
9039
9078
  enabled: raw.enabled !== false,
@@ -9283,9 +9322,17 @@ function useExploreChat(options = {}) {
9283
9322
  ),
9284
9323
  [promptKey, welcomeKey]
9285
9324
  );
9286
- const [catalog, setCatalog] = React.useState(fallbackCatalog);
9325
+ const [bakedRaw] = React.useState(
9326
+ () => readBakedCatalog(productSlug)
9327
+ );
9328
+ const [catalog, setCatalog] = React.useState(
9329
+ () => bakedRaw ? normalizeCatalog(bakedRaw, fallbackCatalog) : fallbackCatalog
9330
+ );
9331
+ const [serverCatalogRaw, setServerCatalogRaw] = React.useState(bakedRaw);
9287
9332
  const [messages, setMessages] = React.useState([]);
9288
- const [phase, setPhase] = React.useState("loading");
9333
+ const [phase, setPhase] = React.useState(
9334
+ () => bakedRaw ? bakedRaw.enabled === false ? "disabled" : "ready" : "loading"
9335
+ );
9289
9336
  const [error, setError] = React.useState(null);
9290
9337
  const [remainingToday, setRemainingToday] = React.useState(null);
9291
9338
  const [focusProduct, setFocusProductState] = React.useState(null);
@@ -9303,7 +9350,7 @@ function useExploreChat(options = {}) {
9303
9350
  shareTokenRef.current = readShareToken();
9304
9351
  }
9305
9352
  const isSharedView = shareTokenRef.current !== null;
9306
- const catalogRef = React.useRef(fallbackCatalog);
9353
+ const catalogRef = React.useRef(catalog);
9307
9354
  const turnCountRef = React.useRef(0);
9308
9355
  const focusProductRef = React.useRef(null);
9309
9356
  const lastSentTextRef = React.useRef(null);
@@ -9449,25 +9496,29 @@ function useExploreChat(options = {}) {
9449
9496
  const raw = res.data?.exploreCatalog;
9450
9497
  if (res.errors?.length || !raw) {
9451
9498
  console.warn(
9452
- "[WebSDK] exploreCatalog unavailable \u2014 using the built-in fallback catalog",
9499
+ "[WebSDK] exploreCatalog unavailable \u2014 keeping the catalog the page started with",
9453
9500
  res.errors?.[0]?.message
9454
9501
  );
9455
9502
  setPhase((prev) => prev === "loading" ? "ready" : prev);
9456
9503
  return;
9457
9504
  }
9458
- const next = normalizeCatalog(raw, fallbackCatalog);
9505
+ const next = normalizeCatalog(
9506
+ raw,
9507
+ bakedRaw ? normalizeCatalog(bakedRaw, fallbackCatalog) : fallbackCatalog
9508
+ );
9459
9509
  setCatalog(next);
9510
+ setServerCatalogRaw(raw);
9460
9511
  catalogRef.current = next;
9461
9512
  setPhase((prev) => {
9462
9513
  if (!next.enabled) return "disabled";
9463
- return prev === "loading" ? "ready" : prev;
9514
+ return prev === "loading" || prev === "disabled" ? "ready" : prev;
9464
9515
  });
9465
9516
  };
9466
9517
  void load();
9467
9518
  return () => {
9468
9519
  cancelled = true;
9469
9520
  };
9470
- }, [client, productSlug, fallbackCatalog]);
9521
+ }, [client, productSlug, fallbackCatalog, bakedRaw]);
9471
9522
  const startPolling = React.useCallback(
9472
9523
  (conversationToken, messageId) => {
9473
9524
  pollGenerationRef.current += 1;
@@ -9935,6 +9986,7 @@ function useExploreChat(options = {}) {
9935
9986
  return {
9936
9987
  phase,
9937
9988
  catalog,
9989
+ serverCatalogRaw,
9938
9990
  messages,
9939
9991
  activity,
9940
9992
  remainingToday,
@@ -10768,6 +10820,30 @@ var EXPLORE_CSS = `
10768
10820
  }
10769
10821
  .boff-explore-strip::-webkit-scrollbar { display: none; }
10770
10822
 
10823
+ /* The product chips run past the edge of their row (there are 38). A hard edge sliced the
10824
+ last visible chip mid-word ("Bi", "BigC") right beside "All 38"; a short fade says "there
10825
+ is more this way" instead. A mask carries only alpha, so the gradient's colour is a token
10826
+ that never shows. Mirrored for right-to-left locales, whose row runs the other way. */
10827
+ .boff-explore-chips-fade {
10828
+ /* Focus scrolling honours scroll-padding, so a tabbed-to chip is brought clear of the fade
10829
+ rather than left half-hidden under it. */
10830
+ scroll-padding-inline-end: 2rem;
10831
+ -webkit-mask-image: linear-gradient(to right, hsl(var(--foreground)) calc(100% - 2rem), hsl(var(--foreground) / 0));
10832
+ mask-image: linear-gradient(to right, hsl(var(--foreground)) calc(100% - 2rem), hsl(var(--foreground) / 0));
10833
+ }
10834
+ /* A fade over a fixed edge would leave the LAST chip under it once the row is scrolled to
10835
+ the end \u2014 the visitor could never read it. A trailing spacer the width of the fade lets
10836
+ the final chip scroll clear of it. A pseudo-element rather than padding: trailing padding
10837
+ on a flex scroll container is not reliably part of its scrollable overflow. */
10838
+ .boff-explore-chips-fade::after {
10839
+ content: "";
10840
+ flex: 0 0 2rem;
10841
+ }
10842
+ [dir="rtl"] .boff-explore-chips-fade {
10843
+ -webkit-mask-image: linear-gradient(to left, hsl(var(--foreground)) calc(100% - 2rem), hsl(var(--foreground) / 0));
10844
+ mask-image: linear-gradient(to left, hsl(var(--foreground)) calc(100% - 2rem), hsl(var(--foreground) / 0));
10845
+ }
10846
+
10771
10847
  @keyframes boff-explore-fade-in {
10772
10848
  from { opacity: 0; transform: translateY(2px); }
10773
10849
  to { opacity: 1; transform: none; }
@@ -10844,10 +10920,10 @@ var EXPLORE_CSS = `
10844
10920
  Colour comes from the product's --primary token, so it is whatever that site's palette
10845
10921
  already is, never a colour chosen here. */
10846
10922
  .boff-explore-invite {
10847
- border-color: hsl(var(--primary) / 0.45);
10923
+ border-color: hsl(var(--primary) / 0.6);
10848
10924
  box-shadow:
10849
- 0 0 0 4px hsl(var(--primary) / 0.08),
10850
- 0 8px 24px -12px hsl(var(--primary) / 0.45);
10925
+ 0 0 0 4px hsl(var(--primary) / 0.12),
10926
+ 0 8px 24px -12px hsl(var(--primary) / 0.55);
10851
10927
  animation: boff-explore-breathe 3.2s ease-in-out infinite;
10852
10928
  }
10853
10929
  /* Focus and typing both mean "I have found it", and the hint has done its job. */
@@ -10857,8 +10933,8 @@ var EXPLORE_CSS = `
10857
10933
  box-shadow: 0 0 0 4px hsl(var(--primary) / 0.10);
10858
10934
  }
10859
10935
  @keyframes boff-explore-breathe {
10860
- 0%, 100% { box-shadow: 0 0 0 4px hsl(var(--primary) / 0.07), 0 8px 24px -12px hsl(var(--primary) / 0.40); }
10861
- 50% { box-shadow: 0 0 0 7px hsl(var(--primary) / 0.13), 0 8px 28px -12px hsl(var(--primary) / 0.55); }
10936
+ 0%, 100% { box-shadow: 0 0 0 4px hsl(var(--primary) / 0.10), 0 8px 24px -12px hsl(var(--primary) / 0.50); }
10937
+ 50% { box-shadow: 0 0 0 7px hsl(var(--primary) / 0.18), 0 8px 28px -12px hsl(var(--primary) / 0.65); }
10862
10938
  }
10863
10939
 
10864
10940
  /* Every one of the above is decoration. Reduced motion removes the movement and keeps the
@@ -12167,14 +12243,20 @@ function PromptCarousel({
12167
12243
  "aria-label": `Ask: ${current}`,
12168
12244
  "aria-live": paused ? "polite" : "off",
12169
12245
  onClick: () => onPrompt(current),
12170
- className: "boff-explore-fade group flex min-w-0 flex-1 items-center gap-2 rounded-full border border-border bg-card px-4 py-2 text-left text-sm text-card-foreground shadow-sm transition-colors hover:border-primary/50 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
12246
+ className: "group flex min-w-0 flex-1 items-center gap-2 rounded-full border border-border bg-card px-4 py-2 max-sm:min-h-[3.625rem] max-sm:rounded-2xl text-left text-sm text-card-foreground shadow-sm transition-colors hover:border-primary/50 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
12171
12247
  children: [
12172
12248
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
12173
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: current }),
12249
+ /* @__PURE__ */ jsxRuntime.jsx(
12250
+ "span",
12251
+ {
12252
+ className: "boff-explore-fade min-w-0 max-sm:line-clamp-2 sm:truncate",
12253
+ children: current
12254
+ },
12255
+ current
12256
+ ),
12174
12257
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "ml-auto h-3.5 w-3.5 shrink-0 rotate-45 text-muted-foreground transition-colors group-hover:text-primary" })
12175
12258
  ]
12176
- },
12177
- current
12259
+ }
12178
12260
  ),
12179
12261
  count > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
12180
12262
  "button",
@@ -12213,7 +12295,7 @@ function ProductStrip({
12213
12295
  {
12214
12296
  className: cn(
12215
12297
  "boff-explore-strip flex min-w-0 flex-1 gap-2",
12216
- expanded ? "flex-wrap" : "flex-nowrap overflow-x-auto"
12298
+ expanded ? "flex-wrap" : "boff-explore-chips-fade flex-nowrap overflow-x-auto"
12217
12299
  ),
12218
12300
  children: [
12219
12301
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -12351,11 +12433,11 @@ function ConceptStrip({
12351
12433
  onScroll: measureRail,
12352
12434
  "data-boff-explore": "concept-strip",
12353
12435
  "aria-label": T.conceptStripLabel,
12354
- className: "boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1",
12436
+ className: "boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1 sm:mx-10",
12355
12437
  children: visible.map((highlight) => /* @__PURE__ */ jsxRuntime.jsx(
12356
12438
  "li",
12357
12439
  {
12358
- className: "shrink-0 snap-start",
12440
+ className: "flex shrink-0 snap-start",
12359
12441
  children: /* @__PURE__ */ jsxRuntime.jsxs(
12360
12442
  "button",
12361
12443
  {
@@ -12396,9 +12478,9 @@ function ConceptStrip({
12396
12478
  }
12397
12479
  )
12398
12480
  ] }),
12399
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col gap-0.5 p-2.5", children: [
12481
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 p-2.5", children: [
12400
12482
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "line-clamp-2 text-xs font-semibold leading-snug text-card-foreground", children: highlight.title }),
12401
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[11px] text-muted-foreground", children: highlight.productName })
12483
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-auto truncate text-[11px] text-muted-foreground", children: highlight.productName })
12402
12484
  ] })
12403
12485
  ]
12404
12486
  }
@@ -12615,6 +12697,7 @@ function ExplorePage({
12615
12697
  const {
12616
12698
  phase,
12617
12699
  catalog,
12700
+ serverCatalogRaw,
12618
12701
  messages,
12619
12702
  activity,
12620
12703
  remainingToday,
@@ -13046,6 +13129,10 @@ function ExplorePage({
13046
13129
  const captchaOn = Boolean(
13047
13130
  catalog.captchaRequired && catalog.recaptchaSiteKey
13048
13131
  );
13132
+ const bakedCatalogJson = React.useMemo(
13133
+ () => serverCatalogRaw && serverCatalogRaw.enabled !== false ? serializeBakedCatalog(serverCatalogRaw) : null,
13134
+ [serverCatalogRaw]
13135
+ );
13049
13136
  const rootStyle = {};
13050
13137
  if (heightMode === "viewport") {
13051
13138
  rootStyle["--boff-explore-offset"] = paneOffset === null ? normalizeOffset(viewportOffset) : `${paneOffset}px`;
@@ -13085,6 +13172,16 @@ function ExplorePage({
13085
13172
  ),
13086
13173
  /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
13087
13174
  /* @__PURE__ */ jsxRuntime.jsx(ExploreStyles, {}),
13175
+ bakedCatalogJson ? /* @__PURE__ */ jsxRuntime.jsx(
13176
+ "script",
13177
+ {
13178
+ id: BAKED_CATALOG_ELEMENT_ID,
13179
+ type: "application/json",
13180
+ "data-product": productSlug ?? "",
13181
+ "data-locale": bakedCatalogLocale(),
13182
+ dangerouslySetInnerHTML: { __html: bakedCatalogJson }
13183
+ }
13184
+ ) : null,
13088
13185
  /* @__PURE__ */ jsxRuntime.jsx(ExploreAnswerStyles, {}),
13089
13186
  !showWelcome ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5 border-b border-border px-4 py-2.5", children: [
13090
13187
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -13559,7 +13656,7 @@ function ExplorePage({
13559
13656
  )
13560
13657
  ] }) : null,
13561
13658
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground", children: [
13562
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: T.disclaimerShort }),
13659
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 sm:truncate", children: T.disclaimerShort }),
13563
13660
  /* @__PURE__ */ jsxRuntime.jsx(
13564
13661
  "button",
13565
13662
  {