@burdenoff/website-sdk 2026.1026.1 → 2026.1028.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/README.md +104 -1
- package/dist/comparison/index.d.mts +83 -0
- package/dist/comparison/index.d.ts +83 -0
- package/dist/comparison/index.js +116 -0
- package/dist/comparison/index.js.map +1 -0
- package/dist/comparison/index.mjs +109 -0
- package/dist/comparison/index.mjs.map +1 -0
- package/dist/components/explore.d.mts +1 -1
- package/dist/components/explore.d.ts +1 -1
- package/dist/components/explore.js +276 -37
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +276 -37
- package/dist/components/explore.mjs.map +1 -1
- package/dist/components/partners.js.map +1 -1
- package/dist/components/partners.mjs.map +1 -1
- package/dist/content/index.d.mts +1 -1
- package/dist/content/index.d.ts +1 -1
- package/dist/content/index.js +32 -4
- package/dist/content/index.js.map +1 -1
- package/dist/content/index.mjs +32 -5
- package/dist/content/index.mjs.map +1 -1
- package/dist/{explore-BRfKFfvI.d.mts → explore-BEgq1_0O.d.mts} +44 -1
- package/dist/{explore-DkfcKgp6.d.ts → explore-CHiP9u-4.d.ts} +44 -1
- package/dist/{index-CB0Uw1xD.d.ts → index-87BLB-Hj.d.ts} +26 -1
- package/dist/{index-Ctws7kGs.d.mts → index-Chw0pDXS.d.mts} +26 -1
- package/dist/index.d.mts +63 -7
- package/dist/index.d.ts +63 -7
- package/dist/index.js +463 -44
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +457 -45
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -1
|
@@ -176,6 +176,9 @@ interface ExploreAnswerBodyProps {
|
|
|
176
176
|
*/
|
|
177
177
|
declare function ExploreAnswerBody({ children, strings, imageOrigins, videoOrigins, productSlugs, enabled, components, className, }: ExploreAnswerBodyProps): react.JSX.Element;
|
|
178
178
|
|
|
179
|
+
/** Whose assistant this is: the portfolio's (the default, on every site), or one product's own. */
|
|
180
|
+
type ExploreScope = "portfolio" | "product";
|
|
181
|
+
|
|
179
182
|
interface ExplorePageProps {
|
|
180
183
|
/**
|
|
181
184
|
* SEO metadata. Every field is optional and each one falls back to a default
|
|
@@ -200,6 +203,12 @@ interface ExplorePageProps {
|
|
|
200
203
|
/**
|
|
201
204
|
* Example prompts shown when `exploreCatalog` supplies none. Resolution
|
|
202
205
|
* order: catalog → this prop → the SDK's built-in list.
|
|
206
|
+
*
|
|
207
|
+
* BOFF-9796: with `scope="product"` these are the ONLY prompts shown (each once, blanks dropped), whatever the
|
|
208
|
+
* catalog has, under an `ExploreChatProvider` too. Only when none are passed does the view fall back to the
|
|
209
|
+
* catalog's, less any that name another product and the SDK's "Which of your products fits a problem like mine?".
|
|
210
|
+
* A product-scoped site should pass its own: the catalog's are written for every site at once, and even those that
|
|
211
|
+
* name no product describe other sites' problems.
|
|
203
212
|
*/
|
|
204
213
|
examplePrompts?: string[];
|
|
205
214
|
/** Extra classes for the page root. */
|
|
@@ -252,6 +261,40 @@ interface ExplorePageProps {
|
|
|
252
261
|
active?: boolean;
|
|
253
262
|
/** BOFF-9697. The site's Explore route, for share links made from the panel. Default `/explore`. */
|
|
254
263
|
explorePath?: string;
|
|
264
|
+
/**
|
|
265
|
+
* BOFF-9796. Whose assistant this is. `portfolio` (default) is the assistant every site has had, unchanged: every
|
|
266
|
+
* product in a "Focus on a product" picker, every product's concept illustrations, the catalog's welcome copy.
|
|
267
|
+
*
|
|
268
|
+
* `product` makes it ONE product's own, for a product site that wants no other product in it. It needs
|
|
269
|
+
* `productSlug` (without one it stays `portfolio`, and a development build warns once). Then:
|
|
270
|
+
*
|
|
271
|
+
* - the focus is pinned to `productSlug`: there is no product picker, and every new question is asked about this
|
|
272
|
+
* product (`productSlug` on the request, as always), also in a conversation stored or shared with another focus;
|
|
273
|
+
* - only this product's concept illustrations show, and no strip at all when it has none;
|
|
274
|
+
* - the example prompts are `examplePrompts` alone; only without any, the catalog's, less any that name another
|
|
275
|
+
* product and the SDK's built-in "Which of your products fits a problem like mine?";
|
|
276
|
+
* - the welcome body, unless `welcomeBody` is passed, invites a problem or a question about this product, never
|
|
277
|
+
* the catalog's invitation to compare it with other products; a catalog title naming another product is
|
|
278
|
+
* replaced by the built-in one;
|
|
279
|
+
* - the welcome has no capability tile that invites other products ("Compare across the ecosystem");
|
|
280
|
+
* - the composer's placeholder, a shorter "Ask about {product}…", and the conversation's header name this product.
|
|
281
|
+
* The composer itself is the published one, unchanged (its classes, and its fit to the draft alone), so on a phone
|
|
282
|
+
* its field stays one line tall: the English placeholder fits that line at 320px and wider, and a longer
|
|
283
|
+
* locale's (Spanish, Tamil) may still wrap at 320px and narrower and lose its second line;
|
|
284
|
+
* - the page head's description promises this product's answers alone, never "and every other product we build";
|
|
285
|
+
* - a question that needs more searches than a turn allows (`TOOL_BUDGET`) is asked to be narrowed to one part of
|
|
286
|
+
* it, not to "two or three specific products".
|
|
287
|
+
*
|
|
288
|
+
* Answers come from the backend and are shown as they come: an answer, and the sources under it, can still name
|
|
289
|
+
* another product when the visitor asks about one.
|
|
290
|
+
*/
|
|
291
|
+
scope?: ExploreScope;
|
|
292
|
+
/**
|
|
293
|
+
* BOFF-9796. The product's display name in the `product` scope ("Healthy Bowl"): the welcome body, the placeholder
|
|
294
|
+
* and, on `ExplorePanel`, the title. Default: the catalog's name for `productSlug`. Pass it to show the name the way
|
|
295
|
+
* the site writes it, before the catalog has loaded too. Unused in the `portfolio` scope.
|
|
296
|
+
*/
|
|
297
|
+
productName?: string;
|
|
255
298
|
}
|
|
256
299
|
/**
|
|
257
300
|
* The product's own logo, derived from the reference's origin.
|
|
@@ -325,4 +368,4 @@ declare function exploreQuestionHref(question: string, base?: string): string;
|
|
|
325
368
|
*/
|
|
326
369
|
declare function ExplorePage(props: ExplorePageProps): react.JSX.Element;
|
|
327
370
|
|
|
328
|
-
export { type AnswerRendererStrings as A,
|
|
371
|
+
export { type AnswerRendererStrings as A, type ExploreScope as E, EXPLORE_PREFILL_MAX_LENGTH as a, ExploreAnswerBody as b, type ExploreAnswerBodyProps as c, ExploreAnswerStyles as d, ExplorePage as e, type ExplorePageProps as f, answerPlainText as g, answerSpeechText as h, exploreQuestionHref as i, inlineImageOrigins as j, isInlineImageAllowed as k, isInlineVideoAllowed as l, type ExploreProvenance as m, type ExploreReferenceKind as n, logoUrlOf as o, productSlugsByOrigin as p, productNamesByOrigin as q, referenceKindOf as r, summariseReferences as s };
|
|
@@ -176,6 +176,9 @@ interface ExploreAnswerBodyProps {
|
|
|
176
176
|
*/
|
|
177
177
|
declare function ExploreAnswerBody({ children, strings, imageOrigins, videoOrigins, productSlugs, enabled, components, className, }: ExploreAnswerBodyProps): react.JSX.Element;
|
|
178
178
|
|
|
179
|
+
/** Whose assistant this is: the portfolio's (the default, on every site), or one product's own. */
|
|
180
|
+
type ExploreScope = "portfolio" | "product";
|
|
181
|
+
|
|
179
182
|
interface ExplorePageProps {
|
|
180
183
|
/**
|
|
181
184
|
* SEO metadata. Every field is optional and each one falls back to a default
|
|
@@ -200,6 +203,12 @@ interface ExplorePageProps {
|
|
|
200
203
|
/**
|
|
201
204
|
* Example prompts shown when `exploreCatalog` supplies none. Resolution
|
|
202
205
|
* order: catalog → this prop → the SDK's built-in list.
|
|
206
|
+
*
|
|
207
|
+
* BOFF-9796: with `scope="product"` these are the ONLY prompts shown (each once, blanks dropped), whatever the
|
|
208
|
+
* catalog has, under an `ExploreChatProvider` too. Only when none are passed does the view fall back to the
|
|
209
|
+
* catalog's, less any that name another product and the SDK's "Which of your products fits a problem like mine?".
|
|
210
|
+
* A product-scoped site should pass its own: the catalog's are written for every site at once, and even those that
|
|
211
|
+
* name no product describe other sites' problems.
|
|
203
212
|
*/
|
|
204
213
|
examplePrompts?: string[];
|
|
205
214
|
/** Extra classes for the page root. */
|
|
@@ -252,6 +261,40 @@ interface ExplorePageProps {
|
|
|
252
261
|
active?: boolean;
|
|
253
262
|
/** BOFF-9697. The site's Explore route, for share links made from the panel. Default `/explore`. */
|
|
254
263
|
explorePath?: string;
|
|
264
|
+
/**
|
|
265
|
+
* BOFF-9796. Whose assistant this is. `portfolio` (default) is the assistant every site has had, unchanged: every
|
|
266
|
+
* product in a "Focus on a product" picker, every product's concept illustrations, the catalog's welcome copy.
|
|
267
|
+
*
|
|
268
|
+
* `product` makes it ONE product's own, for a product site that wants no other product in it. It needs
|
|
269
|
+
* `productSlug` (without one it stays `portfolio`, and a development build warns once). Then:
|
|
270
|
+
*
|
|
271
|
+
* - the focus is pinned to `productSlug`: there is no product picker, and every new question is asked about this
|
|
272
|
+
* product (`productSlug` on the request, as always), also in a conversation stored or shared with another focus;
|
|
273
|
+
* - only this product's concept illustrations show, and no strip at all when it has none;
|
|
274
|
+
* - the example prompts are `examplePrompts` alone; only without any, the catalog's, less any that name another
|
|
275
|
+
* product and the SDK's built-in "Which of your products fits a problem like mine?";
|
|
276
|
+
* - the welcome body, unless `welcomeBody` is passed, invites a problem or a question about this product, never
|
|
277
|
+
* the catalog's invitation to compare it with other products; a catalog title naming another product is
|
|
278
|
+
* replaced by the built-in one;
|
|
279
|
+
* - the welcome has no capability tile that invites other products ("Compare across the ecosystem");
|
|
280
|
+
* - the composer's placeholder, a shorter "Ask about {product}…", and the conversation's header name this product.
|
|
281
|
+
* The composer itself is the published one, unchanged (its classes, and its fit to the draft alone), so on a phone
|
|
282
|
+
* its field stays one line tall: the English placeholder fits that line at 320px and wider, and a longer
|
|
283
|
+
* locale's (Spanish, Tamil) may still wrap at 320px and narrower and lose its second line;
|
|
284
|
+
* - the page head's description promises this product's answers alone, never "and every other product we build";
|
|
285
|
+
* - a question that needs more searches than a turn allows (`TOOL_BUDGET`) is asked to be narrowed to one part of
|
|
286
|
+
* it, not to "two or three specific products".
|
|
287
|
+
*
|
|
288
|
+
* Answers come from the backend and are shown as they come: an answer, and the sources under it, can still name
|
|
289
|
+
* another product when the visitor asks about one.
|
|
290
|
+
*/
|
|
291
|
+
scope?: ExploreScope;
|
|
292
|
+
/**
|
|
293
|
+
* BOFF-9796. The product's display name in the `product` scope ("Healthy Bowl"): the welcome body, the placeholder
|
|
294
|
+
* and, on `ExplorePanel`, the title. Default: the catalog's name for `productSlug`. Pass it to show the name the way
|
|
295
|
+
* the site writes it, before the catalog has loaded too. Unused in the `portfolio` scope.
|
|
296
|
+
*/
|
|
297
|
+
productName?: string;
|
|
255
298
|
}
|
|
256
299
|
/**
|
|
257
300
|
* The product's own logo, derived from the reference's origin.
|
|
@@ -325,4 +368,4 @@ declare function exploreQuestionHref(question: string, base?: string): string;
|
|
|
325
368
|
*/
|
|
326
369
|
declare function ExplorePage(props: ExplorePageProps): react.JSX.Element;
|
|
327
370
|
|
|
328
|
-
export { type AnswerRendererStrings as A,
|
|
371
|
+
export { type AnswerRendererStrings as A, type ExploreScope as E, EXPLORE_PREFILL_MAX_LENGTH as a, ExploreAnswerBody as b, type ExploreAnswerBodyProps as c, ExploreAnswerStyles as d, ExplorePage as e, type ExplorePageProps as f, answerPlainText as g, answerSpeechText as h, exploreQuestionHref as i, inlineImageOrigins as j, isInlineImageAllowed as k, isInlineVideoAllowed as l, type ExploreProvenance as m, type ExploreReferenceKind as n, logoUrlOf as o, productSlugsByOrigin as p, productNamesByOrigin as q, referenceKindOf as r, summariseReferences as s };
|
|
@@ -45,6 +45,16 @@ interface CareersApplyFormProps {
|
|
|
45
45
|
}
|
|
46
46
|
declare function CareersApplyForm({ productName, recaptchaSiteKey, positions, postings, heroTitle, heroDescription, headingLevel, maxResumeBytes, className, seo, }: CareersApplyFormProps): react.JSX.Element;
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* A customer's written approval of a case study (BOFF-9971). Public callers
|
|
50
|
+
* receive only the approval date; who approved it and where the approval is
|
|
51
|
+
* filed stay with the people who manage content pages.
|
|
52
|
+
*/
|
|
53
|
+
interface CustomerSignOffData {
|
|
54
|
+
signedAt: string;
|
|
55
|
+
signedBy?: string | null;
|
|
56
|
+
documentRef?: string | null;
|
|
57
|
+
}
|
|
48
58
|
interface ContentPageData {
|
|
49
59
|
id: string;
|
|
50
60
|
title: string;
|
|
@@ -64,6 +74,7 @@ interface ContentPageData {
|
|
|
64
74
|
readingTime?: number | null;
|
|
65
75
|
featured?: boolean;
|
|
66
76
|
category?: string | null;
|
|
77
|
+
customerSignOff?: CustomerSignOffData | null;
|
|
67
78
|
}
|
|
68
79
|
interface ContentPageListItem {
|
|
69
80
|
id: string;
|
|
@@ -79,6 +90,7 @@ interface ContentPageListItem {
|
|
|
79
90
|
featured?: boolean;
|
|
80
91
|
category?: string | null;
|
|
81
92
|
seoDescription?: string | null;
|
|
93
|
+
customerSignOff?: CustomerSignOffData | null;
|
|
82
94
|
}
|
|
83
95
|
interface ContentPageListData {
|
|
84
96
|
items: ContentPageListItem[];
|
|
@@ -422,6 +434,19 @@ interface CaseStudyPageProps {
|
|
|
422
434
|
contactLabel?: string;
|
|
423
435
|
className?: string;
|
|
424
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* True when the customer has approved the story in writing (BOFF-9971).
|
|
439
|
+
*
|
|
440
|
+
* The CMS already refuses to serve an unapproved case study; this check is the
|
|
441
|
+
* second lock, so no website renders one even against a CMS build that predates
|
|
442
|
+
* the gate. A case study states results on a customer's behalf, and we never
|
|
443
|
+
* publish numbers a customer has not signed off.
|
|
444
|
+
*/
|
|
445
|
+
declare function hasCustomerSignOff(page: {
|
|
446
|
+
customerSignOff?: {
|
|
447
|
+
signedAt?: string | null;
|
|
448
|
+
} | null;
|
|
449
|
+
}): boolean;
|
|
425
450
|
declare function CaseStudiesListPage(props: CaseStudiesListPageProps): react.JSX.Element;
|
|
426
451
|
declare function CaseStudyPage(props: CaseStudyPageProps): react.JSX.Element;
|
|
427
452
|
|
|
@@ -534,4 +559,4 @@ interface ContractsPageProps {
|
|
|
534
559
|
}
|
|
535
560
|
declare function ContractsPage(props: ContractsPageProps): react.JSX.Element;
|
|
536
561
|
|
|
537
|
-
export { type
|
|
562
|
+
export { usePublicJobPostingsForSubmission as $, type MarkdownProps as A, BlogListPage as B, type CareersPostingOption as C, type PressKitAssetCategory as D, PressKitPage as E, type FetchLegalContentOptions as F, type PressKitPageProps as G, type PublicInterviewRoundConfig as H, type PublicJobPosting as I, type UsePublicJobPostingsOptions as J, fetchLegalContent as K, LEGAL_DOCUMENTS as L, Markdown as M, fetchLegalContentPage as N, fetchPublicJobPosting as O, type PressKitAsset as P, fetchPublicJobPostings as Q, fetchPublicJobPostingsForSubmission as R, findLegalDocument as S, formatLegalDate as T, type UsePublicJobPostingOptions as U, hasCustomerSignOff as V, splitLeadingHeading as W, useContentPage as X, useContentPages as Y, usePublicJobPosting as Z, usePublicJobPostings as _, type BlogListPageProps as a, type UseContentPageOptions as a0, BlogPostPage as b, type BlogPostPageProps as c, CareersApplyForm as d, type CareersApplyFormProps as e, CaseStudiesListPage as f, type CaseStudiesListPageProps as g, CaseStudyPage as h, type CaseStudyPageProps as i, type ChangelogEntry as j, ChangelogPage as k, type ChangelogPageProps as l, type ContentPageData as m, type ContentPageListData as n, type ContentPageListItem as o, ContentRenderer as p, type ContractAsset as q, ContractsPage as r, type ContractsPageProps as s, type CustomerSignOffData as t, LEGAL_DOCUMENT_KEYS as u, type LegalContentEntry as v, type LegalDocument as w, type LegalDocumentKey as x, LegalPage as y, type LegalPageProps as z };
|
|
@@ -45,6 +45,16 @@ interface CareersApplyFormProps {
|
|
|
45
45
|
}
|
|
46
46
|
declare function CareersApplyForm({ productName, recaptchaSiteKey, positions, postings, heroTitle, heroDescription, headingLevel, maxResumeBytes, className, seo, }: CareersApplyFormProps): react.JSX.Element;
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* A customer's written approval of a case study (BOFF-9971). Public callers
|
|
50
|
+
* receive only the approval date; who approved it and where the approval is
|
|
51
|
+
* filed stay with the people who manage content pages.
|
|
52
|
+
*/
|
|
53
|
+
interface CustomerSignOffData {
|
|
54
|
+
signedAt: string;
|
|
55
|
+
signedBy?: string | null;
|
|
56
|
+
documentRef?: string | null;
|
|
57
|
+
}
|
|
48
58
|
interface ContentPageData {
|
|
49
59
|
id: string;
|
|
50
60
|
title: string;
|
|
@@ -64,6 +74,7 @@ interface ContentPageData {
|
|
|
64
74
|
readingTime?: number | null;
|
|
65
75
|
featured?: boolean;
|
|
66
76
|
category?: string | null;
|
|
77
|
+
customerSignOff?: CustomerSignOffData | null;
|
|
67
78
|
}
|
|
68
79
|
interface ContentPageListItem {
|
|
69
80
|
id: string;
|
|
@@ -79,6 +90,7 @@ interface ContentPageListItem {
|
|
|
79
90
|
featured?: boolean;
|
|
80
91
|
category?: string | null;
|
|
81
92
|
seoDescription?: string | null;
|
|
93
|
+
customerSignOff?: CustomerSignOffData | null;
|
|
82
94
|
}
|
|
83
95
|
interface ContentPageListData {
|
|
84
96
|
items: ContentPageListItem[];
|
|
@@ -422,6 +434,19 @@ interface CaseStudyPageProps {
|
|
|
422
434
|
contactLabel?: string;
|
|
423
435
|
className?: string;
|
|
424
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* True when the customer has approved the story in writing (BOFF-9971).
|
|
439
|
+
*
|
|
440
|
+
* The CMS already refuses to serve an unapproved case study; this check is the
|
|
441
|
+
* second lock, so no website renders one even against a CMS build that predates
|
|
442
|
+
* the gate. A case study states results on a customer's behalf, and we never
|
|
443
|
+
* publish numbers a customer has not signed off.
|
|
444
|
+
*/
|
|
445
|
+
declare function hasCustomerSignOff(page: {
|
|
446
|
+
customerSignOff?: {
|
|
447
|
+
signedAt?: string | null;
|
|
448
|
+
} | null;
|
|
449
|
+
}): boolean;
|
|
425
450
|
declare function CaseStudiesListPage(props: CaseStudiesListPageProps): react.JSX.Element;
|
|
426
451
|
declare function CaseStudyPage(props: CaseStudyPageProps): react.JSX.Element;
|
|
427
452
|
|
|
@@ -534,4 +559,4 @@ interface ContractsPageProps {
|
|
|
534
559
|
}
|
|
535
560
|
declare function ContractsPage(props: ContractsPageProps): react.JSX.Element;
|
|
536
561
|
|
|
537
|
-
export { type
|
|
562
|
+
export { usePublicJobPostingsForSubmission as $, type MarkdownProps as A, BlogListPage as B, type CareersPostingOption as C, type PressKitAssetCategory as D, PressKitPage as E, type FetchLegalContentOptions as F, type PressKitPageProps as G, type PublicInterviewRoundConfig as H, type PublicJobPosting as I, type UsePublicJobPostingsOptions as J, fetchLegalContent as K, LEGAL_DOCUMENTS as L, Markdown as M, fetchLegalContentPage as N, fetchPublicJobPosting as O, type PressKitAsset as P, fetchPublicJobPostings as Q, fetchPublicJobPostingsForSubmission as R, findLegalDocument as S, formatLegalDate as T, type UsePublicJobPostingOptions as U, hasCustomerSignOff as V, splitLeadingHeading as W, useContentPage as X, useContentPages as Y, usePublicJobPosting as Z, usePublicJobPostings as _, type BlogListPageProps as a, type UseContentPageOptions as a0, BlogPostPage as b, type BlogPostPageProps as c, CareersApplyForm as d, type CareersApplyFormProps as e, CaseStudiesListPage as f, type CaseStudiesListPageProps as g, CaseStudyPage as h, type CaseStudyPageProps as i, type ChangelogEntry as j, ChangelogPage as k, type ChangelogPageProps as l, type ContentPageData as m, type ContentPageListData as n, type ContentPageListItem as o, ContentRenderer as p, type ContractAsset as q, ContractsPage as r, type ContractsPageProps as s, type CustomerSignOffData as t, LEGAL_DOCUMENT_KEYS as u, type LegalContentEntry as v, type LegalDocument as w, type LegalDocumentKey as x, LegalPage as y, type LegalPageProps as z };
|
package/dist/index.d.mts
CHANGED
|
@@ -2,8 +2,8 @@ export { G as GraphQLResponse, W as WebSDKClient, a as WebSDKClientConfig, b as
|
|
|
2
2
|
export { W as WebSDKProvider, a as WebSDKProviderProps, u as useWebSDK, b as useWebSDKConfig } from './provider-MFV1NVqZ.mjs';
|
|
3
3
|
export { ContactCategory, ContactPage, ContactPageProps, DEFAULT_CONTACT_CATEGORIES } from './components/contact.mjs';
|
|
4
4
|
export { PartnersPage, PartnersPageProps } from './components/partners.mjs';
|
|
5
|
-
import { C as CareersPostingOption } from './index-
|
|
6
|
-
export { B as BlogListPage, a as BlogListPageProps, b as BlogPostPage, c as BlogPostPageProps, d as CareersApplyForm, e as CareersApplyFormProps, f as CaseStudiesListPage, g as CaseStudiesListPageProps, h as CaseStudyPage, i as CaseStudyPageProps, j as ChangelogEntry, k as ChangelogPage, l as ChangelogPageProps, m as ContentPageData, n as ContentPageListData, o as ContentPageListItem, p as ContentRenderer, q as ContractAsset, r as ContractsPage, s as ContractsPageProps, F as FetchLegalContentOptions, L as LEGAL_DOCUMENTS,
|
|
5
|
+
import { C as CareersPostingOption } from './index-Chw0pDXS.mjs';
|
|
6
|
+
export { B as BlogListPage, a as BlogListPageProps, b as BlogPostPage, c as BlogPostPageProps, d as CareersApplyForm, e as CareersApplyFormProps, f as CaseStudiesListPage, g as CaseStudiesListPageProps, h as CaseStudyPage, i as CaseStudyPageProps, j as ChangelogEntry, k as ChangelogPage, l as ChangelogPageProps, m as ContentPageData, n as ContentPageListData, o as ContentPageListItem, p as ContentRenderer, q as ContractAsset, r as ContractsPage, s as ContractsPageProps, t as CustomerSignOffData, F as FetchLegalContentOptions, L as LEGAL_DOCUMENTS, u as LEGAL_DOCUMENT_KEYS, v as LegalContentEntry, w as LegalDocument, x as LegalDocumentKey, y as LegalPage, z as LegalPageProps, M as Markdown, A as MarkdownProps, P as PressKitAsset, D as PressKitAssetCategory, E as PressKitPage, G as PressKitPageProps, H as PublicInterviewRoundConfig, I as PublicJobPosting, U as UsePublicJobPostingOptions, J as UsePublicJobPostingsOptions, K as fetchLegalContent, N as fetchLegalContentPage, O as fetchPublicJobPosting, Q as fetchPublicJobPostings, R as fetchPublicJobPostingsForSubmission, S as findLegalDocument, T as formatLegalDate, V as hasCustomerSignOff, W as splitLeadingHeading, X as useContentPage, Y as useContentPages, Z as usePublicJobPosting, _ as usePublicJobPostings, $ as usePublicJobPostingsForSubmission } from './index-Chw0pDXS.mjs';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ComponentType, ReactNode, Dispatch, SetStateAction, RefObject } from 'react';
|
|
9
9
|
export { NewsletterForm, NewsletterFormProps, NewsletterPage, NewsletterPageProps } from './components/newsletter.mjs';
|
|
@@ -18,8 +18,8 @@ export { LaunchCountdown, LaunchCountdownProps } from './components/launch-count
|
|
|
18
18
|
export { ProblemSolved, ProblemsSolvedSection, ProblemsSolvedSectionProps } from './components/problems-solved.mjs';
|
|
19
19
|
export { DetectedPlatform, ElectronDownloadLink, ElectronDownloadLinkProps, detectElectronPlatform } from './components/electron-download.mjs';
|
|
20
20
|
import { Components } from 'react-markdown';
|
|
21
|
-
import { A as AnswerRendererStrings } from './explore-
|
|
22
|
-
export {
|
|
21
|
+
import { A as AnswerRendererStrings, E as ExploreScope } from './explore-BEgq1_0O.mjs';
|
|
22
|
+
export { a as EXPLORE_PREFILL_MAX_LENGTH, b as ExploreAnswerBody, c as ExploreAnswerBodyProps, d as ExploreAnswerStyles, e as ExplorePage, f as ExplorePageProps, g as answerPlainText, h as answerSpeechText, i as exploreQuestionHref, j as inlineImageOrigins, k as isInlineImageAllowed, l as isInlineVideoAllowed, p as productSlugsByOrigin } from './explore-BEgq1_0O.mjs';
|
|
23
23
|
export { ExploreCta, ExploreCtaProps } from './components/explore-cta.mjs';
|
|
24
24
|
import { e as UseExploreChatResult, S as StagedAttachment } from './use-progressive-reveal-BFPWbEXy.mjs';
|
|
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, 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-BFPWbEXy.mjs';
|
|
@@ -32,6 +32,7 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
32
32
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
33
33
|
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';
|
|
34
34
|
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';
|
|
35
|
+
export { ComparisonClaim, ComparisonSource, DEFAULT_COMPARISON_MAX_AGE_DAYS, FreshnessIssue, FreshnessOptions, FreshnessProblem, NonEmptySources, Sourced, checkComparisonFreshness, formatFreshnessReport, latestVerification, oldestVerification, parseVerifiedAt } from './comparison/index.mjs';
|
|
35
36
|
import 'clsx';
|
|
36
37
|
|
|
37
38
|
interface CareersSubmissionFormProps {
|
|
@@ -514,6 +515,18 @@ interface ExploreStrings {
|
|
|
514
515
|
badge: string;
|
|
515
516
|
welcomeTitle: string;
|
|
516
517
|
welcomeBody: string;
|
|
518
|
+
/**
|
|
519
|
+
* BOFF-9796: the welcome body of ONE product's own assistant (`scope="product"`) when the host passes none. Takes
|
|
520
|
+
* `{product}`. Problem-first like `welcomeBody`, and unlike the catalog's copy for a product site it offers nothing
|
|
521
|
+
* beyond that product: no "compare it with anything else we build".
|
|
522
|
+
*/
|
|
523
|
+
welcomeBodyProduct: string;
|
|
524
|
+
/**
|
|
525
|
+
* BOFF-9796: the product scope's welcome body when no product name is known (a slug no catalog lists, and no
|
|
526
|
+
* `productName`). Like `welcomeBodyProduct` without the name, so it never falls back to the portfolio's invitation
|
|
527
|
+
* to "ask about a specific product or compare a few".
|
|
528
|
+
*/
|
|
529
|
+
welcomeBodyScoped: string;
|
|
517
530
|
tryAsking: string;
|
|
518
531
|
focusProduct: string;
|
|
519
532
|
allProducts: string;
|
|
@@ -523,6 +536,16 @@ interface ExploreStrings {
|
|
|
523
536
|
nextYouCouldAsk: string;
|
|
524
537
|
placeholder: string;
|
|
525
538
|
placeholderProduct: string;
|
|
539
|
+
/**
|
|
540
|
+
* BOFF-9796: the composer's placeholder on ONE product's own assistant (`scope="product"`). Takes `{product}`.
|
|
541
|
+
* Short on purpose, and the one thing about the composer that the product scope changes: the field is the published
|
|
542
|
+
* one, one line tall on a phone, where a placeholder that wraps loses its second line. `placeholderProduct`
|
|
543
|
+
* ("Describe a problem, or ask about Healthy Bowl…") wraps there at 390px and under; the English "Ask about Healthy
|
|
544
|
+
* Bowl…" fits one line at 320px and wider. Spanish and Tamil, the longest here, may still wrap at 320px and
|
|
545
|
+
* narrower: a follow-up (HealthyBowl, the site this was made for, is English-only). The welcome above the composer
|
|
546
|
+
* already asks for the problem.
|
|
547
|
+
*/
|
|
548
|
+
placeholderScoped: string;
|
|
526
549
|
send: string;
|
|
527
550
|
stop: string;
|
|
528
551
|
newChat: string;
|
|
@@ -544,6 +567,12 @@ interface ExploreStrings {
|
|
|
544
567
|
attachmentTooMany: string;
|
|
545
568
|
noAnswer: string;
|
|
546
569
|
answerDidNotArrive: string;
|
|
570
|
+
/**
|
|
571
|
+
* BOFF-9796: what a turn that ran out of searches (`TOOL_BUDGET`) says on ONE product's own assistant
|
|
572
|
+
* (`scope="product"`). The default message asks for "two or three specific products", an invitation to other
|
|
573
|
+
* products that a product's own assistant must not make; here the narrowing offered is to one part of the question.
|
|
574
|
+
*/
|
|
575
|
+
toolBudgetScoped: string;
|
|
547
576
|
askHuman: string;
|
|
548
577
|
feedbackPrompt: string;
|
|
549
578
|
feedbackHelpful: string;
|
|
@@ -658,6 +687,11 @@ interface ExploreStrings {
|
|
|
658
687
|
* apps' assistant already ships in all six locales (Chat, Avatar, Live avatar, Assistant views).
|
|
659
688
|
*/
|
|
660
689
|
panelTitle: string;
|
|
690
|
+
/**
|
|
691
|
+
* BOFF-9796: the panel's title on one product's own assistant (`scope="product"`), "{product} assistant" in each
|
|
692
|
+
* language's own word order. Takes `{product}`. `panelTitle` stays the title wherever no product name is known.
|
|
693
|
+
*/
|
|
694
|
+
panelTitleProduct: string;
|
|
661
695
|
panelViews: string;
|
|
662
696
|
tabChat: string;
|
|
663
697
|
tabAvatar: string;
|
|
@@ -690,6 +724,11 @@ interface ExploreStrings {
|
|
|
690
724
|
seoDescription: string;
|
|
691
725
|
/** Used when the page belongs to a specific product's site. Takes `{product}`. */
|
|
692
726
|
seoDescriptionProduct: string;
|
|
727
|
+
/**
|
|
728
|
+
* BOFF-9796: the meta description of ONE product's own `/explore` (`scope="product"`). Takes `{product}`. Unlike
|
|
729
|
+
* `seoDescriptionProduct`, it promises nothing beyond that product: no "and every other product we build".
|
|
730
|
+
*/
|
|
731
|
+
seoDescriptionScoped: string;
|
|
693
732
|
capabilities: [string, string, string];
|
|
694
733
|
prompts: string[];
|
|
695
734
|
}
|
|
@@ -899,6 +938,23 @@ interface ExplorePanelProps {
|
|
|
899
938
|
/** Passed to the chat view (`ExplorePage`). */
|
|
900
939
|
productSlug?: string;
|
|
901
940
|
locale?: string;
|
|
941
|
+
/**
|
|
942
|
+
* BOFF-9796. Passed to the chat view: see `ExplorePageProps.scope`. `product` (with `productSlug`) makes the panel
|
|
943
|
+
* one product's own assistant and titles it "{product} assistant"; given `examplePrompts`, those are then its only
|
|
944
|
+
* example prompts. Default `portfolio`: the panel as it was.
|
|
945
|
+
*/
|
|
946
|
+
scope?: ExploreScope;
|
|
947
|
+
/**
|
|
948
|
+
* BOFF-9796. Passed to the chat view: see `ExplorePageProps.productName`. In the `product` scope it is also the
|
|
949
|
+
* panel's title, at once, before any catalog. Default: the catalog's name for `productSlug`.
|
|
950
|
+
*/
|
|
951
|
+
productName?: string;
|
|
952
|
+
/**
|
|
953
|
+
* BOFF-9796. Passed to the chat view: see `ExplorePageProps.examplePrompts`. In the `product` scope they are the only
|
|
954
|
+
* prompts the panel shows, whatever the catalog has; without them it falls back to the catalog's, less any that name
|
|
955
|
+
* another product and the SDK's portfolio prompt. A product site should pass its own.
|
|
956
|
+
*/
|
|
957
|
+
examplePrompts?: string[];
|
|
902
958
|
/**
|
|
903
959
|
* The host router's navigate, for links in the conversation. On a phone the panel closes first (the sheet would
|
|
904
960
|
* cover the page); on a wider screen it stays open beside the page. Absent: links load the page normally.
|
|
@@ -922,11 +978,11 @@ interface ExplorePanelProps {
|
|
|
922
978
|
/** Extra classes for the panel. */
|
|
923
979
|
className?: string;
|
|
924
980
|
}
|
|
925
|
-
declare function ExplorePanel({ open, onOpenChange, id, productSlug, locale, onNavigate, welcomeTitle, welcomeBody, explorePath, avatar, bottomOffset, zIndex, returnFocusRef, className, }: ExplorePanelProps): react.JSX.Element | null;
|
|
981
|
+
declare function ExplorePanel({ open, onOpenChange, id, productSlug, locale, scope, productName, examplePrompts, onNavigate, welcomeTitle, welcomeBody, explorePath, avatar, bottomOffset, zIndex, returnFocusRef, className, }: ExplorePanelProps): react.JSX.Element | null;
|
|
926
982
|
|
|
927
983
|
declare const buttonVariants: (props?: ({
|
|
928
984
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
929
|
-
size?: "
|
|
985
|
+
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
|
|
930
986
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
931
987
|
interface ButtonProps extends react.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
932
988
|
asChild?: boolean;
|
|
@@ -950,4 +1006,4 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
|
|
|
950
1006
|
*/
|
|
951
1007
|
declare const ECOSYSTEM_PRODUCTS: WebsiteSwitcherProduct[];
|
|
952
1008
|
|
|
953
|
-
export { ANSWERS_PATH, ANSWER_HEADING_SHIFT, ANSWER_PATH_PREFIX, AnswerDetailPage, type AnswerDetailPageProps, type AnswerLinkComponent, type AnswerLinkProps, AnswerRendererStrings, type AnswerStrings, AnswersPage, type AnswersPageProps, Button, type ButtonProps, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CONCEPT_WORKFLOW_NOTICE, CareersPostingOption, CareersSubmissionForm, type CareersSubmissionFormProps, type Concept, type ConceptCategory, ConceptDetailPage, type ConceptDetailPageProps, type ConceptDevice, type ConceptImage, type ConceptLinkComponent, type ConceptLinkProps, type ConceptSolution, ConceptsPage, type ConceptsPageProps, DOMAINS_URL, ECOSYSTEM_PRODUCTS, EXPLORE_LOCALES, ExploreChatProvider, type ExploreChatProviderProps, type ExploreConversationOptions, type ExploreConversationState, type ExploreLocale, ExplorePanel, type ExplorePanelAvatar, type ExplorePanelProps, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, UseExploreChatResult, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf, useExploreConversation };
|
|
1009
|
+
export { ANSWERS_PATH, ANSWER_HEADING_SHIFT, ANSWER_PATH_PREFIX, AnswerDetailPage, type AnswerDetailPageProps, type AnswerLinkComponent, type AnswerLinkProps, AnswerRendererStrings, type AnswerStrings, AnswersPage, type AnswersPageProps, Button, type ButtonProps, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CONCEPT_WORKFLOW_NOTICE, CareersPostingOption, CareersSubmissionForm, type CareersSubmissionFormProps, type Concept, type ConceptCategory, ConceptDetailPage, type ConceptDetailPageProps, type ConceptDevice, type ConceptImage, type ConceptLinkComponent, type ConceptLinkProps, type ConceptSolution, ConceptsPage, type ConceptsPageProps, DOMAINS_URL, ECOSYSTEM_PRODUCTS, EXPLORE_LOCALES, ExploreChatProvider, type ExploreChatProviderProps, type ExploreConversationOptions, type ExploreConversationState, type ExploreLocale, ExplorePanel, type ExplorePanelAvatar, type ExplorePanelProps, ExploreScope, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, UseExploreChatResult, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf, useExploreConversation };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ export { G as GraphQLResponse, W as WebSDKClient, a as WebSDKClientConfig, b as
|
|
|
2
2
|
export { W as WebSDKProvider, a as WebSDKProviderProps, u as useWebSDK, b as useWebSDKConfig } from './provider-Dwgz4d0r.js';
|
|
3
3
|
export { ContactCategory, ContactPage, ContactPageProps, DEFAULT_CONTACT_CATEGORIES } from './components/contact.js';
|
|
4
4
|
export { PartnersPage, PartnersPageProps } from './components/partners.js';
|
|
5
|
-
import { C as CareersPostingOption } from './index-
|
|
6
|
-
export { B as BlogListPage, a as BlogListPageProps, b as BlogPostPage, c as BlogPostPageProps, d as CareersApplyForm, e as CareersApplyFormProps, f as CaseStudiesListPage, g as CaseStudiesListPageProps, h as CaseStudyPage, i as CaseStudyPageProps, j as ChangelogEntry, k as ChangelogPage, l as ChangelogPageProps, m as ContentPageData, n as ContentPageListData, o as ContentPageListItem, p as ContentRenderer, q as ContractAsset, r as ContractsPage, s as ContractsPageProps, F as FetchLegalContentOptions, L as LEGAL_DOCUMENTS,
|
|
5
|
+
import { C as CareersPostingOption } from './index-87BLB-Hj.js';
|
|
6
|
+
export { B as BlogListPage, a as BlogListPageProps, b as BlogPostPage, c as BlogPostPageProps, d as CareersApplyForm, e as CareersApplyFormProps, f as CaseStudiesListPage, g as CaseStudiesListPageProps, h as CaseStudyPage, i as CaseStudyPageProps, j as ChangelogEntry, k as ChangelogPage, l as ChangelogPageProps, m as ContentPageData, n as ContentPageListData, o as ContentPageListItem, p as ContentRenderer, q as ContractAsset, r as ContractsPage, s as ContractsPageProps, t as CustomerSignOffData, F as FetchLegalContentOptions, L as LEGAL_DOCUMENTS, u as LEGAL_DOCUMENT_KEYS, v as LegalContentEntry, w as LegalDocument, x as LegalDocumentKey, y as LegalPage, z as LegalPageProps, M as Markdown, A as MarkdownProps, P as PressKitAsset, D as PressKitAssetCategory, E as PressKitPage, G as PressKitPageProps, H as PublicInterviewRoundConfig, I as PublicJobPosting, U as UsePublicJobPostingOptions, J as UsePublicJobPostingsOptions, K as fetchLegalContent, N as fetchLegalContentPage, O as fetchPublicJobPosting, Q as fetchPublicJobPostings, R as fetchPublicJobPostingsForSubmission, S as findLegalDocument, T as formatLegalDate, V as hasCustomerSignOff, W as splitLeadingHeading, X as useContentPage, Y as useContentPages, Z as usePublicJobPosting, _ as usePublicJobPostings, $ as usePublicJobPostingsForSubmission } from './index-87BLB-Hj.js';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ComponentType, ReactNode, Dispatch, SetStateAction, RefObject } from 'react';
|
|
9
9
|
export { NewsletterForm, NewsletterFormProps, NewsletterPage, NewsletterPageProps } from './components/newsletter.js';
|
|
@@ -18,8 +18,8 @@ export { LaunchCountdown, LaunchCountdownProps } from './components/launch-count
|
|
|
18
18
|
export { ProblemSolved, ProblemsSolvedSection, ProblemsSolvedSectionProps } from './components/problems-solved.js';
|
|
19
19
|
export { DetectedPlatform, ElectronDownloadLink, ElectronDownloadLinkProps, detectElectronPlatform } from './components/electron-download.js';
|
|
20
20
|
import { Components } from 'react-markdown';
|
|
21
|
-
import { A as AnswerRendererStrings } from './explore-
|
|
22
|
-
export {
|
|
21
|
+
import { A as AnswerRendererStrings, E as ExploreScope } from './explore-CHiP9u-4.js';
|
|
22
|
+
export { a as EXPLORE_PREFILL_MAX_LENGTH, b as ExploreAnswerBody, c as ExploreAnswerBodyProps, d as ExploreAnswerStyles, e as ExplorePage, f as ExplorePageProps, g as answerPlainText, h as answerSpeechText, i as exploreQuestionHref, j as inlineImageOrigins, k as isInlineImageAllowed, l as isInlineVideoAllowed, p as productSlugsByOrigin } from './explore-CHiP9u-4.js';
|
|
23
23
|
export { ExploreCta, ExploreCtaProps } from './components/explore-cta.js';
|
|
24
24
|
import { e as UseExploreChatResult, S as StagedAttachment } from './use-progressive-reveal-C0hkdu_i.js';
|
|
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, 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-C0hkdu_i.js';
|
|
@@ -32,6 +32,7 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
32
32
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
33
33
|
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';
|
|
34
34
|
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';
|
|
35
|
+
export { ComparisonClaim, ComparisonSource, DEFAULT_COMPARISON_MAX_AGE_DAYS, FreshnessIssue, FreshnessOptions, FreshnessProblem, NonEmptySources, Sourced, checkComparisonFreshness, formatFreshnessReport, latestVerification, oldestVerification, parseVerifiedAt } from './comparison/index.js';
|
|
35
36
|
import 'clsx';
|
|
36
37
|
|
|
37
38
|
interface CareersSubmissionFormProps {
|
|
@@ -514,6 +515,18 @@ interface ExploreStrings {
|
|
|
514
515
|
badge: string;
|
|
515
516
|
welcomeTitle: string;
|
|
516
517
|
welcomeBody: string;
|
|
518
|
+
/**
|
|
519
|
+
* BOFF-9796: the welcome body of ONE product's own assistant (`scope="product"`) when the host passes none. Takes
|
|
520
|
+
* `{product}`. Problem-first like `welcomeBody`, and unlike the catalog's copy for a product site it offers nothing
|
|
521
|
+
* beyond that product: no "compare it with anything else we build".
|
|
522
|
+
*/
|
|
523
|
+
welcomeBodyProduct: string;
|
|
524
|
+
/**
|
|
525
|
+
* BOFF-9796: the product scope's welcome body when no product name is known (a slug no catalog lists, and no
|
|
526
|
+
* `productName`). Like `welcomeBodyProduct` without the name, so it never falls back to the portfolio's invitation
|
|
527
|
+
* to "ask about a specific product or compare a few".
|
|
528
|
+
*/
|
|
529
|
+
welcomeBodyScoped: string;
|
|
517
530
|
tryAsking: string;
|
|
518
531
|
focusProduct: string;
|
|
519
532
|
allProducts: string;
|
|
@@ -523,6 +536,16 @@ interface ExploreStrings {
|
|
|
523
536
|
nextYouCouldAsk: string;
|
|
524
537
|
placeholder: string;
|
|
525
538
|
placeholderProduct: string;
|
|
539
|
+
/**
|
|
540
|
+
* BOFF-9796: the composer's placeholder on ONE product's own assistant (`scope="product"`). Takes `{product}`.
|
|
541
|
+
* Short on purpose, and the one thing about the composer that the product scope changes: the field is the published
|
|
542
|
+
* one, one line tall on a phone, where a placeholder that wraps loses its second line. `placeholderProduct`
|
|
543
|
+
* ("Describe a problem, or ask about Healthy Bowl…") wraps there at 390px and under; the English "Ask about Healthy
|
|
544
|
+
* Bowl…" fits one line at 320px and wider. Spanish and Tamil, the longest here, may still wrap at 320px and
|
|
545
|
+
* narrower: a follow-up (HealthyBowl, the site this was made for, is English-only). The welcome above the composer
|
|
546
|
+
* already asks for the problem.
|
|
547
|
+
*/
|
|
548
|
+
placeholderScoped: string;
|
|
526
549
|
send: string;
|
|
527
550
|
stop: string;
|
|
528
551
|
newChat: string;
|
|
@@ -544,6 +567,12 @@ interface ExploreStrings {
|
|
|
544
567
|
attachmentTooMany: string;
|
|
545
568
|
noAnswer: string;
|
|
546
569
|
answerDidNotArrive: string;
|
|
570
|
+
/**
|
|
571
|
+
* BOFF-9796: what a turn that ran out of searches (`TOOL_BUDGET`) says on ONE product's own assistant
|
|
572
|
+
* (`scope="product"`). The default message asks for "two or three specific products", an invitation to other
|
|
573
|
+
* products that a product's own assistant must not make; here the narrowing offered is to one part of the question.
|
|
574
|
+
*/
|
|
575
|
+
toolBudgetScoped: string;
|
|
547
576
|
askHuman: string;
|
|
548
577
|
feedbackPrompt: string;
|
|
549
578
|
feedbackHelpful: string;
|
|
@@ -658,6 +687,11 @@ interface ExploreStrings {
|
|
|
658
687
|
* apps' assistant already ships in all six locales (Chat, Avatar, Live avatar, Assistant views).
|
|
659
688
|
*/
|
|
660
689
|
panelTitle: string;
|
|
690
|
+
/**
|
|
691
|
+
* BOFF-9796: the panel's title on one product's own assistant (`scope="product"`), "{product} assistant" in each
|
|
692
|
+
* language's own word order. Takes `{product}`. `panelTitle` stays the title wherever no product name is known.
|
|
693
|
+
*/
|
|
694
|
+
panelTitleProduct: string;
|
|
661
695
|
panelViews: string;
|
|
662
696
|
tabChat: string;
|
|
663
697
|
tabAvatar: string;
|
|
@@ -690,6 +724,11 @@ interface ExploreStrings {
|
|
|
690
724
|
seoDescription: string;
|
|
691
725
|
/** Used when the page belongs to a specific product's site. Takes `{product}`. */
|
|
692
726
|
seoDescriptionProduct: string;
|
|
727
|
+
/**
|
|
728
|
+
* BOFF-9796: the meta description of ONE product's own `/explore` (`scope="product"`). Takes `{product}`. Unlike
|
|
729
|
+
* `seoDescriptionProduct`, it promises nothing beyond that product: no "and every other product we build".
|
|
730
|
+
*/
|
|
731
|
+
seoDescriptionScoped: string;
|
|
693
732
|
capabilities: [string, string, string];
|
|
694
733
|
prompts: string[];
|
|
695
734
|
}
|
|
@@ -899,6 +938,23 @@ interface ExplorePanelProps {
|
|
|
899
938
|
/** Passed to the chat view (`ExplorePage`). */
|
|
900
939
|
productSlug?: string;
|
|
901
940
|
locale?: string;
|
|
941
|
+
/**
|
|
942
|
+
* BOFF-9796. Passed to the chat view: see `ExplorePageProps.scope`. `product` (with `productSlug`) makes the panel
|
|
943
|
+
* one product's own assistant and titles it "{product} assistant"; given `examplePrompts`, those are then its only
|
|
944
|
+
* example prompts. Default `portfolio`: the panel as it was.
|
|
945
|
+
*/
|
|
946
|
+
scope?: ExploreScope;
|
|
947
|
+
/**
|
|
948
|
+
* BOFF-9796. Passed to the chat view: see `ExplorePageProps.productName`. In the `product` scope it is also the
|
|
949
|
+
* panel's title, at once, before any catalog. Default: the catalog's name for `productSlug`.
|
|
950
|
+
*/
|
|
951
|
+
productName?: string;
|
|
952
|
+
/**
|
|
953
|
+
* BOFF-9796. Passed to the chat view: see `ExplorePageProps.examplePrompts`. In the `product` scope they are the only
|
|
954
|
+
* prompts the panel shows, whatever the catalog has; without them it falls back to the catalog's, less any that name
|
|
955
|
+
* another product and the SDK's portfolio prompt. A product site should pass its own.
|
|
956
|
+
*/
|
|
957
|
+
examplePrompts?: string[];
|
|
902
958
|
/**
|
|
903
959
|
* The host router's navigate, for links in the conversation. On a phone the panel closes first (the sheet would
|
|
904
960
|
* cover the page); on a wider screen it stays open beside the page. Absent: links load the page normally.
|
|
@@ -922,11 +978,11 @@ interface ExplorePanelProps {
|
|
|
922
978
|
/** Extra classes for the panel. */
|
|
923
979
|
className?: string;
|
|
924
980
|
}
|
|
925
|
-
declare function ExplorePanel({ open, onOpenChange, id, productSlug, locale, onNavigate, welcomeTitle, welcomeBody, explorePath, avatar, bottomOffset, zIndex, returnFocusRef, className, }: ExplorePanelProps): react.JSX.Element | null;
|
|
981
|
+
declare function ExplorePanel({ open, onOpenChange, id, productSlug, locale, scope, productName, examplePrompts, onNavigate, welcomeTitle, welcomeBody, explorePath, avatar, bottomOffset, zIndex, returnFocusRef, className, }: ExplorePanelProps): react.JSX.Element | null;
|
|
926
982
|
|
|
927
983
|
declare const buttonVariants: (props?: ({
|
|
928
984
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
929
|
-
size?: "
|
|
985
|
+
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
|
|
930
986
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
931
987
|
interface ButtonProps extends react.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
932
988
|
asChild?: boolean;
|
|
@@ -950,4 +1006,4 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
|
|
|
950
1006
|
*/
|
|
951
1007
|
declare const ECOSYSTEM_PRODUCTS: WebsiteSwitcherProduct[];
|
|
952
1008
|
|
|
953
|
-
export { ANSWERS_PATH, ANSWER_HEADING_SHIFT, ANSWER_PATH_PREFIX, AnswerDetailPage, type AnswerDetailPageProps, type AnswerLinkComponent, type AnswerLinkProps, AnswerRendererStrings, type AnswerStrings, AnswersPage, type AnswersPageProps, Button, type ButtonProps, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CONCEPT_WORKFLOW_NOTICE, CareersPostingOption, CareersSubmissionForm, type CareersSubmissionFormProps, type Concept, type ConceptCategory, ConceptDetailPage, type ConceptDetailPageProps, type ConceptDevice, type ConceptImage, type ConceptLinkComponent, type ConceptLinkProps, type ConceptSolution, ConceptsPage, type ConceptsPageProps, DOMAINS_URL, ECOSYSTEM_PRODUCTS, EXPLORE_LOCALES, ExploreChatProvider, type ExploreChatProviderProps, type ExploreConversationOptions, type ExploreConversationState, type ExploreLocale, ExplorePanel, type ExplorePanelAvatar, type ExplorePanelProps, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, UseExploreChatResult, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf, useExploreConversation };
|
|
1009
|
+
export { ANSWERS_PATH, ANSWER_HEADING_SHIFT, ANSWER_PATH_PREFIX, AnswerDetailPage, type AnswerDetailPageProps, type AnswerLinkComponent, type AnswerLinkProps, AnswerRendererStrings, type AnswerStrings, AnswersPage, type AnswersPageProps, Button, type ButtonProps, CONCEPTS_PATH, CONCEPT_ILLUSTRATION_NOTICE, CONCEPT_PATH_PREFIX, CONCEPT_WORKFLOW_NOTICE, CareersPostingOption, CareersSubmissionForm, type CareersSubmissionFormProps, type Concept, type ConceptCategory, ConceptDetailPage, type ConceptDetailPageProps, type ConceptDevice, type ConceptImage, type ConceptLinkComponent, type ConceptLinkProps, type ConceptSolution, ConceptsPage, type ConceptsPageProps, DOMAINS_URL, ECOSYSTEM_PRODUCTS, EXPLORE_LOCALES, ExploreChatProvider, type ExploreChatProviderProps, type ExploreConversationOptions, type ExploreConversationState, type ExploreLocale, ExplorePanel, type ExplorePanelAvatar, type ExplorePanelProps, ExploreScope, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, UseExploreChatResult, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf, useExploreConversation };
|