@burdenoff/website-sdk 2026.925.3 → 2026.927.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 +43 -1
- package/dist/utils/index.d.ts +43 -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.d.mts
CHANGED
|
@@ -25,12 +25,12 @@ export { g as ESCALATE_EXPLORE_CONVERSATION_MUTATION, h as EXPLORE_CATALOG_QUERY
|
|
|
25
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
|
-
export { ProductData, ProductProvider, ProductProviderProps, useProduct, useProductConfig } from './product/index.mjs';
|
|
28
|
+
export { ProductData, ProductProvider, ProductProviderProps, PublicProductFetchResult, fetchPublicProduct, useProduct, useProductConfig } from './product/index.mjs';
|
|
29
29
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
30
30
|
import { VariantProps } from 'class-variance-authority';
|
|
31
31
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
32
32
|
export { B as BrowseStoreResult, G as GroupedStoreProducts, P as ProductCard, a as ProductCategory, R as RatingDistribution, S as SearchSuggestion, b as StarRating, c as StoreBrowsePage, d as StoreBrowsePageProps, e as StoreFacet, f as StoreFacets, g as StoreHomePage, h as StoreHomePageProps, i as StorePageProps, j as StoreProduct, k as StoreProductDetailPage, l as StoreProductDetailPageProps, m as StoreProductDetails, n as StorePublisher, o as StoreReview, p as StoreTerminology, q as StoreTypeFilter, T as TypeBadge, r as formatDownloads, s as formatPrice } from './product-card-CGxETsFa.mjs';
|
|
33
|
-
export { EXPLORE_RECAPTCHA_ACTION, FOOTERLESS_ROUTES, RecaptchaV3, cn, getRecaptchaV3Token, isFooterlessPath, loadRecaptchaV3, normalizeRoutePath, shouldRenderSiteFooter } from './utils/index.mjs';
|
|
33
|
+
export { EXPLORE_RECAPTCHA_ACTION, FOOTERLESS_ROUTES, PRODUCT_SLUG_ALIASES, PRODUCT_SLUG_EMIT, PRODUCT_SLUG_RENAMES, ProductSlugGeneration, ProductSlugRename, RecaptchaV3, cn, emitProductSlug, getRecaptchaV3Token, isFooterlessPath, isSameProductSlug, legacyProductSlug, loadRecaptchaV3, normalizeProductSlug, normalizeRoutePath, productSlugVariants, shouldRenderSiteFooter } from './utils/index.mjs';
|
|
34
34
|
import 'clsx';
|
|
35
35
|
|
|
36
36
|
interface CareersSubmissionFormProps {
|
package/dist/index.d.ts
CHANGED
|
@@ -25,12 +25,12 @@ export { g as ESCALATE_EXPLORE_CONVERSATION_MUTATION, h as EXPLORE_CATALOG_QUERY
|
|
|
25
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
|
-
export { ProductData, ProductProvider, ProductProviderProps, useProduct, useProductConfig } from './product/index.js';
|
|
28
|
+
export { ProductData, ProductProvider, ProductProviderProps, PublicProductFetchResult, fetchPublicProduct, useProduct, useProductConfig } from './product/index.js';
|
|
29
29
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
30
30
|
import { VariantProps } from 'class-variance-authority';
|
|
31
31
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
32
32
|
export { B as BrowseStoreResult, G as GroupedStoreProducts, P as ProductCard, a as ProductCategory, R as RatingDistribution, S as SearchSuggestion, b as StarRating, c as StoreBrowsePage, d as StoreBrowsePageProps, e as StoreFacet, f as StoreFacets, g as StoreHomePage, h as StoreHomePageProps, i as StorePageProps, j as StoreProduct, k as StoreProductDetailPage, l as StoreProductDetailPageProps, m as StoreProductDetails, n as StorePublisher, o as StoreReview, p as StoreTerminology, q as StoreTypeFilter, T as TypeBadge, r as formatDownloads, s as formatPrice } from './product-card-CGxETsFa.js';
|
|
33
|
-
export { EXPLORE_RECAPTCHA_ACTION, FOOTERLESS_ROUTES, RecaptchaV3, cn, getRecaptchaV3Token, isFooterlessPath, loadRecaptchaV3, normalizeRoutePath, shouldRenderSiteFooter } from './utils/index.js';
|
|
33
|
+
export { EXPLORE_RECAPTCHA_ACTION, FOOTERLESS_ROUTES, PRODUCT_SLUG_ALIASES, PRODUCT_SLUG_EMIT, PRODUCT_SLUG_RENAMES, ProductSlugGeneration, ProductSlugRename, RecaptchaV3, cn, emitProductSlug, getRecaptchaV3Token, isFooterlessPath, isSameProductSlug, legacyProductSlug, loadRecaptchaV3, normalizeProductSlug, normalizeRoutePath, productSlugVariants, shouldRenderSiteFooter } from './utils/index.js';
|
|
34
34
|
import 'clsx';
|
|
35
35
|
|
|
36
36
|
interface CareersSubmissionFormProps {
|
package/dist/index.js
CHANGED
|
@@ -375,6 +375,40 @@ function useWebSDKConfig() {
|
|
|
375
375
|
const client = useWebSDK();
|
|
376
376
|
return client.getConfig();
|
|
377
377
|
}
|
|
378
|
+
|
|
379
|
+
// src/utils/product-slug.ts
|
|
380
|
+
var PRODUCT_SLUG_RENAMES = Object.freeze(
|
|
381
|
+
[Object.freeze({ legacy: "botlit", current: "botmanor" })]
|
|
382
|
+
);
|
|
383
|
+
var PRODUCT_SLUG_ALIASES = Object.freeze(
|
|
384
|
+
Object.fromEntries(PRODUCT_SLUG_RENAMES.map((r) => [r.legacy, r.current]))
|
|
385
|
+
);
|
|
386
|
+
var PRODUCT_SLUG_EMIT = Object.freeze({ productSlug: "current" });
|
|
387
|
+
function findRename(slug) {
|
|
388
|
+
const wanted = slug.toLowerCase();
|
|
389
|
+
return PRODUCT_SLUG_RENAMES.find(
|
|
390
|
+
(r) => r.legacy === wanted || r.current === wanted
|
|
391
|
+
);
|
|
392
|
+
}
|
|
393
|
+
function normalizeProductSlug(slug) {
|
|
394
|
+
if (slug == null) return slug;
|
|
395
|
+
return findRename(slug)?.current ?? slug;
|
|
396
|
+
}
|
|
397
|
+
function legacyProductSlug(slug) {
|
|
398
|
+
return findRename(slug)?.legacy ?? slug;
|
|
399
|
+
}
|
|
400
|
+
function productSlugVariants(slug) {
|
|
401
|
+
return [
|
|
402
|
+
.../* @__PURE__ */ new Set([slug, normalizeProductSlug(slug), legacyProductSlug(slug)])
|
|
403
|
+
];
|
|
404
|
+
}
|
|
405
|
+
function isSameProductSlug(a, b) {
|
|
406
|
+
if (a == null || b == null) return a === b;
|
|
407
|
+
return a === b || normalizeProductSlug(a) === normalizeProductSlug(b);
|
|
408
|
+
}
|
|
409
|
+
function emitProductSlug(slug) {
|
|
410
|
+
return PRODUCT_SLUG_EMIT.productSlug === "current" ? normalizeProductSlug(slug) : legacyProductSlug(slug);
|
|
411
|
+
}
|
|
378
412
|
var PRODUCT_FIELDS_BASE = `
|
|
379
413
|
id
|
|
380
414
|
name
|
|
@@ -422,6 +456,35 @@ var ProductContext = React.createContext({
|
|
|
422
456
|
refetch: () => {
|
|
423
457
|
}
|
|
424
458
|
});
|
|
459
|
+
async function queryPublicProduct(client, slug) {
|
|
460
|
+
const result = await client.query(
|
|
461
|
+
PUBLIC_PRODUCT_QUERY,
|
|
462
|
+
{ slug }
|
|
463
|
+
);
|
|
464
|
+
const schemaMissingResourceLinks = result.errors?.some(
|
|
465
|
+
(e) => /Cannot query field ["']?resourceLinks["']?/i.test(e?.message ?? "")
|
|
466
|
+
);
|
|
467
|
+
if (!schemaMissingResourceLinks) return result;
|
|
468
|
+
return client.query(
|
|
469
|
+
PUBLIC_PRODUCT_QUERY_FALLBACK,
|
|
470
|
+
{ slug }
|
|
471
|
+
);
|
|
472
|
+
}
|
|
473
|
+
async function fetchPublicProduct(client, slug) {
|
|
474
|
+
for (const candidate of productSlugVariants(slug)) {
|
|
475
|
+
const result = await queryPublicProduct(client, candidate);
|
|
476
|
+
if (result.errors?.length) {
|
|
477
|
+
return {
|
|
478
|
+
product: null,
|
|
479
|
+
error: result.errors[0]?.message ?? "Unknown error"
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
if (result.data?.publicProduct) {
|
|
483
|
+
return { product: result.data.publicProduct, error: null };
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return { product: null, error: null };
|
|
487
|
+
}
|
|
425
488
|
function ProductProvider({ children, fallback }) {
|
|
426
489
|
const client = useWebSDK();
|
|
427
490
|
const config = useWebSDKConfig();
|
|
@@ -438,23 +501,11 @@ function ProductProvider({ children, fallback }) {
|
|
|
438
501
|
setLoading(true);
|
|
439
502
|
setError(null);
|
|
440
503
|
try {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
)
|
|
445
|
-
|
|
446
|
-
(e) => /Cannot query field ["']?resourceLinks["']?/i.test(e?.message ?? "")
|
|
447
|
-
);
|
|
448
|
-
if (schemaMissingResourceLinks) {
|
|
449
|
-
result = await client.query(
|
|
450
|
-
PUBLIC_PRODUCT_QUERY_FALLBACK,
|
|
451
|
-
{ slug: config.productSlug }
|
|
452
|
-
);
|
|
453
|
-
}
|
|
454
|
-
if (result.errors?.length) {
|
|
455
|
-
setError(result.errors[0]?.message ?? "Unknown error");
|
|
456
|
-
} else if (result.data?.publicProduct) {
|
|
457
|
-
setProduct(result.data.publicProduct);
|
|
504
|
+
const outcome = await fetchPublicProduct(client, config.productSlug);
|
|
505
|
+
if (outcome.error) {
|
|
506
|
+
setError(outcome.error);
|
|
507
|
+
} else if (outcome.product) {
|
|
508
|
+
setProduct(outcome.product);
|
|
458
509
|
}
|
|
459
510
|
} catch (err) {
|
|
460
511
|
setError(err instanceof Error ? err.message : "Failed to fetch product");
|
|
@@ -8179,7 +8230,12 @@ var ECOSYSTEM_PRODUCTS = [
|
|
|
8179
8230
|
},
|
|
8180
8231
|
// BotManor ships on www.botmanor.com (the apex redirects there; the old botlit.ai domain
|
|
8181
8232
|
// still serves the same site but is no longer the name we link to).
|
|
8182
|
-
|
|
8233
|
+
// The slug follows the botlit → botmanor rename switch (utils/product-slug.ts).
|
|
8234
|
+
{
|
|
8235
|
+
slug: emitProductSlug("botmanor"),
|
|
8236
|
+
name: "BotManor",
|
|
8237
|
+
websiteUrl: "https://www.botmanor.com"
|
|
8238
|
+
},
|
|
8183
8239
|
{
|
|
8184
8240
|
slug: "bigconsole",
|
|
8185
8241
|
name: "BigConsole",
|
|
@@ -12906,21 +12962,24 @@ function ProductStrip({
|
|
|
12906
12962
|
children: T.allProducts
|
|
12907
12963
|
}
|
|
12908
12964
|
),
|
|
12909
|
-
products.map((product) =>
|
|
12910
|
-
|
|
12911
|
-
|
|
12912
|
-
"
|
|
12913
|
-
|
|
12914
|
-
|
|
12915
|
-
|
|
12916
|
-
|
|
12917
|
-
|
|
12918
|
-
|
|
12919
|
-
|
|
12920
|
-
|
|
12921
|
-
|
|
12922
|
-
|
|
12923
|
-
|
|
12965
|
+
products.map((product) => {
|
|
12966
|
+
const focused = isSameProductSlug(focusProduct, product.slug);
|
|
12967
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12968
|
+
"button",
|
|
12969
|
+
{
|
|
12970
|
+
"data-boff-explore": "chip",
|
|
12971
|
+
"data-chip-kind": "product",
|
|
12972
|
+
"data-product": product.slug,
|
|
12973
|
+
type: "button",
|
|
12974
|
+
"aria-pressed": focused,
|
|
12975
|
+
title: product.tagline ?? product.name,
|
|
12976
|
+
onClick: () => onFocus(focused ? null : product.slug),
|
|
12977
|
+
className: chipClass(focused),
|
|
12978
|
+
children: product.name
|
|
12979
|
+
},
|
|
12980
|
+
product.slug
|
|
12981
|
+
);
|
|
12982
|
+
})
|
|
12924
12983
|
]
|
|
12925
12984
|
}
|
|
12926
12985
|
),
|
|
@@ -13378,11 +13437,11 @@ function ExplorePage({
|
|
|
13378
13437
|
const resolvedBody = welcomeBody ?? catalog.welcomeBody;
|
|
13379
13438
|
const prompts = catalog.examplePrompts;
|
|
13380
13439
|
const focusedProductName = React.useMemo(
|
|
13381
|
-
() => catalog.products.find((p) => p.slug
|
|
13440
|
+
() => catalog.products.find((p) => isSameProductSlug(p.slug, focusProduct))?.name ?? null,
|
|
13382
13441
|
[catalog.products, focusProduct]
|
|
13383
13442
|
);
|
|
13384
13443
|
const headProductName = React.useMemo(
|
|
13385
|
-
() => productSlug ? catalog.products.find((p) => p.slug
|
|
13444
|
+
() => productSlug ? catalog.products.find((p) => isSameProductSlug(p.slug, productSlug))?.name ?? null : null,
|
|
13386
13445
|
[catalog.products, productSlug]
|
|
13387
13446
|
);
|
|
13388
13447
|
const imageOrigins = React.useMemo(
|
|
@@ -19001,6 +19060,9 @@ exports.LaunchCountdown = LaunchCountdown;
|
|
|
19001
19060
|
exports.Markdown = Markdown;
|
|
19002
19061
|
exports.NewsletterForm = NewsletterForm;
|
|
19003
19062
|
exports.NewsletterPage = NewsletterPage;
|
|
19063
|
+
exports.PRODUCT_SLUG_ALIASES = PRODUCT_SLUG_ALIASES;
|
|
19064
|
+
exports.PRODUCT_SLUG_EMIT = PRODUCT_SLUG_EMIT;
|
|
19065
|
+
exports.PRODUCT_SLUG_RENAMES = PRODUCT_SLUG_RENAMES;
|
|
19004
19066
|
exports.PUBLISHED_ANSWER_FIELDS = PUBLISHED_ANSWER_FIELDS;
|
|
19005
19067
|
exports.PageHead = PageHead;
|
|
19006
19068
|
exports.PartnersPage = PartnersPage;
|
|
@@ -19037,10 +19099,12 @@ exports.classifyExploreError = classifyExploreError;
|
|
|
19037
19099
|
exports.cn = cn;
|
|
19038
19100
|
exports.conceptPath = conceptPath;
|
|
19039
19101
|
exports.detectElectronPlatform = detectElectronPlatform;
|
|
19102
|
+
exports.emitProductSlug = emitProductSlug;
|
|
19040
19103
|
exports.exploreQuestionHref = exploreQuestionHref;
|
|
19041
19104
|
exports.fetchPublicJobPosting = fetchPublicJobPosting;
|
|
19042
19105
|
exports.fetchPublicJobPostings = fetchPublicJobPostings;
|
|
19043
19106
|
exports.fetchPublicJobPostingsForSubmission = fetchPublicJobPostingsForSubmission;
|
|
19107
|
+
exports.fetchPublicProduct = fetchPublicProduct;
|
|
19044
19108
|
exports.formatAnswerDate = formatAnswerDate;
|
|
19045
19109
|
exports.formatDownloads = formatDownloads;
|
|
19046
19110
|
exports.formatPrice = formatPrice2;
|
|
@@ -19052,10 +19116,14 @@ exports.isFooterlessPath = isFooterlessPath;
|
|
|
19052
19116
|
exports.isInlineImageAllowed = isInlineImageAllowed;
|
|
19053
19117
|
exports.isInlineVideoAllowed = isInlineVideoAllowed;
|
|
19054
19118
|
exports.isPublishedSourceUrl = isPublishedSourceUrl;
|
|
19119
|
+
exports.isSameProductSlug = isSameProductSlug;
|
|
19055
19120
|
exports.isValidUrl = isValidUrl;
|
|
19121
|
+
exports.legacyProductSlug = legacyProductSlug;
|
|
19056
19122
|
exports.loadRecaptchaV3 = loadRecaptchaV3;
|
|
19057
19123
|
exports.looksLikeDeliverableEmail = looksLikeDeliverableEmail;
|
|
19124
|
+
exports.normalizeProductSlug = normalizeProductSlug;
|
|
19058
19125
|
exports.normalizeRoutePath = normalizeRoutePath;
|
|
19126
|
+
exports.productSlugVariants = productSlugVariants;
|
|
19059
19127
|
exports.productSlugsByOrigin = productSlugsByOrigin;
|
|
19060
19128
|
exports.shouldRenderSiteFooter = shouldRenderSiteFooter;
|
|
19061
19129
|
exports.speechLocaleOf = speechLocaleOf;
|