@burdenoff/website-sdk 2026.925.3 → 2026.926.1
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/contact.js +8 -0
- package/dist/components/contact.js.map +1 -1
- package/dist/components/contact.mjs +8 -0
- package/dist/components/contact.mjs.map +1 -1
- package/dist/components/explore.js +55 -18
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +55 -18
- package/dist/components/explore.mjs.map +1 -1
- package/dist/components/newsletter.js +8 -0
- package/dist/components/newsletter.js.map +1 -1
- package/dist/components/newsletter.mjs +8 -0
- package/dist/components/newsletter.mjs.map +1 -1
- package/dist/components/partners.js +8 -0
- package/dist/components/partners.js.map +1 -1
- package/dist/components/partners.mjs +8 -0
- package/dist/components/partners.mjs.map +1 -1
- package/dist/components/resource-links.js +8 -0
- package/dist/components/resource-links.js.map +1 -1
- package/dist/components/resource-links.mjs +8 -0
- package/dist/components/resource-links.mjs.map +1 -1
- package/dist/components/social-links.js +8 -0
- package/dist/components/social-links.js.map +1 -1
- package/dist/components/social-links.mjs +8 -0
- package/dist/components/social-links.mjs.map +1 -1
- package/dist/components/waitlist.js +8 -0
- package/dist/components/waitlist.js.map +1 -1
- package/dist/components/waitlist.mjs +8 -0
- package/dist/components/waitlist.mjs.map +1 -1
- package/dist/content/index.js +8 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/index.mjs +8 -0
- package/dist/content/index.mjs.map +1 -1
- package/dist/hooks/index.js +30 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +30 -1
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +103 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +95 -36
- package/dist/index.mjs.map +1 -1
- package/dist/product/index.d.mts +16 -1
- package/dist/product/index.d.ts +16 -1
- package/dist/product/index.js +61 -17
- package/dist/product/index.js.map +1 -1
- package/dist/product/index.mjs +61 -18
- package/dist/product/index.mjs.map +1 -1
- package/dist/store/index.js +8 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/index.mjs +8 -0
- package/dist/store/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +41 -1
- package/dist/utils/index.d.ts +41 -1
- package/dist/utils/index.js +42 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +35 -1
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -345,6 +345,40 @@ function useWebSDKConfig() {
|
|
|
345
345
|
const client = useWebSDK();
|
|
346
346
|
return client.getConfig();
|
|
347
347
|
}
|
|
348
|
+
|
|
349
|
+
// src/utils/product-slug.ts
|
|
350
|
+
var PRODUCT_SLUG_RENAMES = Object.freeze(
|
|
351
|
+
[Object.freeze({ legacy: "botlit", current: "botmanor" })]
|
|
352
|
+
);
|
|
353
|
+
var PRODUCT_SLUG_ALIASES = Object.freeze(
|
|
354
|
+
Object.fromEntries(PRODUCT_SLUG_RENAMES.map((r) => [r.legacy, r.current]))
|
|
355
|
+
);
|
|
356
|
+
var PRODUCT_SLUG_EMIT = Object.freeze({ productSlug: "legacy" });
|
|
357
|
+
function findRename(slug) {
|
|
358
|
+
const wanted = slug.toLowerCase();
|
|
359
|
+
return PRODUCT_SLUG_RENAMES.find(
|
|
360
|
+
(r) => r.legacy === wanted || r.current === wanted
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
function normalizeProductSlug(slug) {
|
|
364
|
+
if (slug == null) return slug;
|
|
365
|
+
return findRename(slug)?.current ?? slug;
|
|
366
|
+
}
|
|
367
|
+
function legacyProductSlug(slug) {
|
|
368
|
+
return findRename(slug)?.legacy ?? slug;
|
|
369
|
+
}
|
|
370
|
+
function productSlugVariants(slug) {
|
|
371
|
+
return [
|
|
372
|
+
.../* @__PURE__ */ new Set([slug, normalizeProductSlug(slug), legacyProductSlug(slug)])
|
|
373
|
+
];
|
|
374
|
+
}
|
|
375
|
+
function isSameProductSlug(a, b) {
|
|
376
|
+
if (a == null || b == null) return a === b;
|
|
377
|
+
return a === b || normalizeProductSlug(a) === normalizeProductSlug(b);
|
|
378
|
+
}
|
|
379
|
+
function emitProductSlug(slug) {
|
|
380
|
+
return PRODUCT_SLUG_EMIT.productSlug === "current" ? normalizeProductSlug(slug) : legacyProductSlug(slug);
|
|
381
|
+
}
|
|
348
382
|
var PRODUCT_FIELDS_BASE = `
|
|
349
383
|
id
|
|
350
384
|
name
|
|
@@ -392,6 +426,35 @@ var ProductContext = createContext({
|
|
|
392
426
|
refetch: () => {
|
|
393
427
|
}
|
|
394
428
|
});
|
|
429
|
+
async function queryPublicProduct(client, slug) {
|
|
430
|
+
const result = await client.query(
|
|
431
|
+
PUBLIC_PRODUCT_QUERY,
|
|
432
|
+
{ slug }
|
|
433
|
+
);
|
|
434
|
+
const schemaMissingResourceLinks = result.errors?.some(
|
|
435
|
+
(e) => /Cannot query field ["']?resourceLinks["']?/i.test(e?.message ?? "")
|
|
436
|
+
);
|
|
437
|
+
if (!schemaMissingResourceLinks) return result;
|
|
438
|
+
return client.query(
|
|
439
|
+
PUBLIC_PRODUCT_QUERY_FALLBACK,
|
|
440
|
+
{ slug }
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
async function fetchPublicProduct(client, slug) {
|
|
444
|
+
for (const candidate of productSlugVariants(slug)) {
|
|
445
|
+
const result = await queryPublicProduct(client, candidate);
|
|
446
|
+
if (result.errors?.length) {
|
|
447
|
+
return {
|
|
448
|
+
product: null,
|
|
449
|
+
error: result.errors[0]?.message ?? "Unknown error"
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
if (result.data?.publicProduct) {
|
|
453
|
+
return { product: result.data.publicProduct, error: null };
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
return { product: null, error: null };
|
|
457
|
+
}
|
|
395
458
|
function ProductProvider({ children, fallback }) {
|
|
396
459
|
const client = useWebSDK();
|
|
397
460
|
const config = useWebSDKConfig();
|
|
@@ -408,23 +471,11 @@ function ProductProvider({ children, fallback }) {
|
|
|
408
471
|
setLoading(true);
|
|
409
472
|
setError(null);
|
|
410
473
|
try {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
)
|
|
415
|
-
|
|
416
|
-
(e) => /Cannot query field ["']?resourceLinks["']?/i.test(e?.message ?? "")
|
|
417
|
-
);
|
|
418
|
-
if (schemaMissingResourceLinks) {
|
|
419
|
-
result = await client.query(
|
|
420
|
-
PUBLIC_PRODUCT_QUERY_FALLBACK,
|
|
421
|
-
{ slug: config.productSlug }
|
|
422
|
-
);
|
|
423
|
-
}
|
|
424
|
-
if (result.errors?.length) {
|
|
425
|
-
setError(result.errors[0]?.message ?? "Unknown error");
|
|
426
|
-
} else if (result.data?.publicProduct) {
|
|
427
|
-
setProduct(result.data.publicProduct);
|
|
474
|
+
const outcome = await fetchPublicProduct(client, config.productSlug);
|
|
475
|
+
if (outcome.error) {
|
|
476
|
+
setError(outcome.error);
|
|
477
|
+
} else if (outcome.product) {
|
|
478
|
+
setProduct(outcome.product);
|
|
428
479
|
}
|
|
429
480
|
} catch (err) {
|
|
430
481
|
setError(err instanceof Error ? err.message : "Failed to fetch product");
|
|
@@ -8149,7 +8200,12 @@ var ECOSYSTEM_PRODUCTS = [
|
|
|
8149
8200
|
},
|
|
8150
8201
|
// BotManor ships on www.botmanor.com (the apex redirects there; the old botlit.ai domain
|
|
8151
8202
|
// still serves the same site but is no longer the name we link to).
|
|
8152
|
-
|
|
8203
|
+
// The slug follows the botlit → botmanor rename switch (utils/product-slug.ts).
|
|
8204
|
+
{
|
|
8205
|
+
slug: emitProductSlug("botmanor"),
|
|
8206
|
+
name: "BotManor",
|
|
8207
|
+
websiteUrl: "https://www.botmanor.com"
|
|
8208
|
+
},
|
|
8153
8209
|
{
|
|
8154
8210
|
slug: "bigconsole",
|
|
8155
8211
|
name: "BigConsole",
|
|
@@ -12876,21 +12932,24 @@ function ProductStrip({
|
|
|
12876
12932
|
children: T.allProducts
|
|
12877
12933
|
}
|
|
12878
12934
|
),
|
|
12879
|
-
products.map((product) =>
|
|
12880
|
-
|
|
12881
|
-
|
|
12882
|
-
"
|
|
12883
|
-
|
|
12884
|
-
|
|
12885
|
-
|
|
12886
|
-
|
|
12887
|
-
|
|
12888
|
-
|
|
12889
|
-
|
|
12890
|
-
|
|
12891
|
-
|
|
12892
|
-
|
|
12893
|
-
|
|
12935
|
+
products.map((product) => {
|
|
12936
|
+
const focused = isSameProductSlug(focusProduct, product.slug);
|
|
12937
|
+
return /* @__PURE__ */ jsx(
|
|
12938
|
+
"button",
|
|
12939
|
+
{
|
|
12940
|
+
"data-boff-explore": "chip",
|
|
12941
|
+
"data-chip-kind": "product",
|
|
12942
|
+
"data-product": product.slug,
|
|
12943
|
+
type: "button",
|
|
12944
|
+
"aria-pressed": focused,
|
|
12945
|
+
title: product.tagline ?? product.name,
|
|
12946
|
+
onClick: () => onFocus(focused ? null : product.slug),
|
|
12947
|
+
className: chipClass(focused),
|
|
12948
|
+
children: product.name
|
|
12949
|
+
},
|
|
12950
|
+
product.slug
|
|
12951
|
+
);
|
|
12952
|
+
})
|
|
12894
12953
|
]
|
|
12895
12954
|
}
|
|
12896
12955
|
),
|
|
@@ -13348,11 +13407,11 @@ function ExplorePage({
|
|
|
13348
13407
|
const resolvedBody = welcomeBody ?? catalog.welcomeBody;
|
|
13349
13408
|
const prompts = catalog.examplePrompts;
|
|
13350
13409
|
const focusedProductName = useMemo(
|
|
13351
|
-
() => catalog.products.find((p) => p.slug
|
|
13410
|
+
() => catalog.products.find((p) => isSameProductSlug(p.slug, focusProduct))?.name ?? null,
|
|
13352
13411
|
[catalog.products, focusProduct]
|
|
13353
13412
|
);
|
|
13354
13413
|
const headProductName = useMemo(
|
|
13355
|
-
() => productSlug ? catalog.products.find((p) => p.slug
|
|
13414
|
+
() => productSlug ? catalog.products.find((p) => isSameProductSlug(p.slug, productSlug))?.name ?? null : null,
|
|
13356
13415
|
[catalog.products, productSlug]
|
|
13357
13416
|
);
|
|
13358
13417
|
const imageOrigins = useMemo(
|
|
@@ -18925,6 +18984,6 @@ function shouldRenderSiteFooter(pathname) {
|
|
|
18925
18984
|
return !isFooterlessPath(pathname);
|
|
18926
18985
|
}
|
|
18927
18986
|
|
|
18928
|
-
export { ANSWERS_PATH, ANSWER_HEADING_SHIFT, ANSWER_PATH_PREFIX, AnswerDetailPage, AnswersPage, BlogListPage, BlogPostPage, Button, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CareersApplyForm, CareersSubmissionForm, CaseStudiesListPage, CaseStudyPage, ChangelogPage, ConceptDetailPage, ConceptsPage, ContactPage, ContentRenderer, ContractsPage, DEFAULT_CONTACT_CATEGORIES, DEFAULT_EXPLORE_EXAMPLE_PROMPTS, DOMAINS_URL, ECOSYSTEM_PRODUCTS, ESCALATE_EXPLORE_CONVERSATION_MUTATION, EXPLORE_CATALOG_QUERY, EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS, EXPLORE_ESCALATION_NOTE_SOFT_MAX, EXPLORE_LOCALES, EXPLORE_MESSAGE_QUERY, EXPLORE_PREFILL_MAX_LENGTH, EXPLORE_RECAPTCHA_ACTION, ElectronDownloadLink, ExploreAnswerBody, ExploreAnswerStyles, ExploreCta, ExplorePage, FALLBACK_EXPLORE_LIMITS, FOOTERLESS_ROUTES, Input, Label, LaunchCountdown, Markdown, NewsletterForm, NewsletterPage, PUBLISHED_ANSWER_FIELDS, 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, answerPath, answerPlainText, answerSourceHost, answerSpeechText, answerStrings, buttonVariants, classifyExploreError, cn, conceptPath, detectElectronPlatform, exploreQuestionHref, fetchPublicJobPosting, fetchPublicJobPostings, fetchPublicJobPostingsForSubmission, formatAnswerDate, formatDownloads, formatPrice2 as formatPrice, getAnswerBySlug, getConceptBySlug, getRecaptchaV3Token, inlineImageOrigins, isFooterlessPath, isInlineImageAllowed, isInlineVideoAllowed, isPublishedSourceUrl, isValidUrl, loadRecaptchaV3, looksLikeDeliverableEmail, normalizeRoutePath, productSlugsByOrigin, shouldRenderSiteFooter, speechLocaleOf, stopSpeaking, useContentPage, useContentPages, useExploreChat, useProduct, useProductConfig, useProgressiveReveal, usePublicJobPosting, usePublicJobPostings, usePublicJobPostingsForSubmission, useSpeechOutput, useWebSDK, useWebSDKConfig };
|
|
18987
|
+
export { ANSWERS_PATH, ANSWER_HEADING_SHIFT, ANSWER_PATH_PREFIX, AnswerDetailPage, AnswersPage, BlogListPage, BlogPostPage, Button, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CareersApplyForm, CareersSubmissionForm, CaseStudiesListPage, CaseStudyPage, ChangelogPage, ConceptDetailPage, ConceptsPage, ContactPage, ContentRenderer, ContractsPage, DEFAULT_CONTACT_CATEGORIES, DEFAULT_EXPLORE_EXAMPLE_PROMPTS, DOMAINS_URL, ECOSYSTEM_PRODUCTS, ESCALATE_EXPLORE_CONVERSATION_MUTATION, EXPLORE_CATALOG_QUERY, EXPLORE_CATALOG_QUERY_WITHOUT_HIGHLIGHTS, EXPLORE_ESCALATION_NOTE_SOFT_MAX, EXPLORE_LOCALES, EXPLORE_MESSAGE_QUERY, EXPLORE_PREFILL_MAX_LENGTH, EXPLORE_RECAPTCHA_ACTION, ElectronDownloadLink, ExploreAnswerBody, ExploreAnswerStyles, ExploreCta, ExplorePage, FALLBACK_EXPLORE_LIMITS, FOOTERLESS_ROUTES, Input, Label, LaunchCountdown, Markdown, NewsletterForm, NewsletterPage, PRODUCT_SLUG_ALIASES, PRODUCT_SLUG_EMIT, PRODUCT_SLUG_RENAMES, PUBLISHED_ANSWER_FIELDS, 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, answerPath, answerPlainText, answerSourceHost, answerSpeechText, answerStrings, buttonVariants, classifyExploreError, cn, conceptPath, detectElectronPlatform, emitProductSlug, exploreQuestionHref, fetchPublicJobPosting, fetchPublicJobPostings, fetchPublicJobPostingsForSubmission, fetchPublicProduct, formatAnswerDate, formatDownloads, formatPrice2 as formatPrice, getAnswerBySlug, getConceptBySlug, getRecaptchaV3Token, inlineImageOrigins, isFooterlessPath, isInlineImageAllowed, isInlineVideoAllowed, isPublishedSourceUrl, isSameProductSlug, isValidUrl, legacyProductSlug, loadRecaptchaV3, looksLikeDeliverableEmail, normalizeProductSlug, normalizeRoutePath, productSlugVariants, productSlugsByOrigin, shouldRenderSiteFooter, speechLocaleOf, stopSpeaking, useContentPage, useContentPages, useExploreChat, useProduct, useProductConfig, useProgressiveReveal, usePublicJobPosting, usePublicJobPostings, usePublicJobPostingsForSubmission, useSpeechOutput, useWebSDK, useWebSDKConfig };
|
|
18929
18988
|
//# sourceMappingURL=index.mjs.map
|
|
18930
18989
|
//# sourceMappingURL=index.mjs.map
|