@burdenoff/website-sdk 2026.924.10 → 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/components/explore.js +119 -22
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +119 -22
- 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 +56 -7
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +56 -7
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +119 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +119 -22
- package/dist/index.mjs.map +1 -1
- package/dist/{use-progressive-reveal-Cmy8bA7L.d.mts → use-progressive-reveal-BBLRAnbU.d.mts} +6 -1
- package/dist/{use-progressive-reveal-DHPGGxZu.d.ts → use-progressive-reveal-myNKWb6S.d.ts} +6 -1
- package/package.json +1 -1
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-
|
|
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';
|
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-
|
|
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';
|
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 [
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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.
|
|
10923
|
+
border-color: hsl(var(--primary) / 0.6);
|
|
10848
10924
|
box-shadow:
|
|
10849
|
-
0 0 0 4px hsl(var(--primary) / 0.
|
|
10850
|
-
0 8px 24px -12px hsl(var(--primary) / 0.
|
|
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.
|
|
10861
|
-
50% { box-shadow: 0 0 0 7px hsl(var(--primary) / 0.
|
|
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: "
|
|
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(
|
|
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
|
{
|