@burdenoff/website-sdk 2026.924.1 → 2026.924.3

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.
@@ -235,6 +235,17 @@ interface ExploreProvenance {
235
235
  * there is no backend field behind this row.
236
236
  */
237
237
  declare function summariseReferences(references: readonly ExploreReference[], origins: ReadonlySet<string>, productNames: ReadonlyMap<string, string>): ExploreProvenance;
238
+ /**
239
+ * Longest question a `?q=` link may pre-fill. Links are written by us (industry-solution
240
+ * pages, product sites), so this only guards against a pasted or crafted URL flooding the
241
+ * composer; the catalog's own message limit still applies when the visitor sends.
242
+ */
243
+ declare const EXPLORE_PREFILL_MAX_LENGTH = 500;
244
+ /**
245
+ * Link to `/explore` with a starter question in the composer (see `?q=` in `ExplorePage`).
246
+ * `base` is the explore page's path or absolute URL.
247
+ */
248
+ declare function exploreQuestionHref(question: string, base?: string): string;
238
249
  declare function ExplorePage({ seo, productSlug, examplePrompts, className, heightMode, viewportOffset, onNavigate, onSend, welcomeTitle, welcomeBody, locale, }: ExplorePageProps): react.JSX.Element;
239
250
 
240
- export { type AnswerRendererStrings as A, ExploreAnswerBody as E, type ExploreAnswerBodyProps as a, ExploreAnswerStyles as b, ExplorePage as c, type ExplorePageProps as d, answerPlainText as e, answerSpeechText as f, isInlineImageAllowed as g, type ExploreProvenance as h, inlineImageOrigins as i, type ExploreReferenceKind as j, logoUrlOf as l, productNamesByOrigin as p, referenceKindOf as r, summariseReferences as s };
251
+ export { type AnswerRendererStrings as A, EXPLORE_PREFILL_MAX_LENGTH as E, ExploreAnswerBody as a, type ExploreAnswerBodyProps as b, ExploreAnswerStyles as c, ExplorePage as d, type ExplorePageProps as e, answerPlainText as f, answerSpeechText as g, exploreQuestionHref as h, inlineImageOrigins as i, isInlineImageAllowed as j, type ExploreProvenance as k, type ExploreReferenceKind as l, logoUrlOf as m, productNamesByOrigin as p, referenceKindOf as r, summariseReferences as s };
@@ -235,6 +235,17 @@ interface ExploreProvenance {
235
235
  * there is no backend field behind this row.
236
236
  */
237
237
  declare function summariseReferences(references: readonly ExploreReference[], origins: ReadonlySet<string>, productNames: ReadonlyMap<string, string>): ExploreProvenance;
238
+ /**
239
+ * Longest question a `?q=` link may pre-fill. Links are written by us (industry-solution
240
+ * pages, product sites), so this only guards against a pasted or crafted URL flooding the
241
+ * composer; the catalog's own message limit still applies when the visitor sends.
242
+ */
243
+ declare const EXPLORE_PREFILL_MAX_LENGTH = 500;
244
+ /**
245
+ * Link to `/explore` with a starter question in the composer (see `?q=` in `ExplorePage`).
246
+ * `base` is the explore page's path or absolute URL.
247
+ */
248
+ declare function exploreQuestionHref(question: string, base?: string): string;
238
249
  declare function ExplorePage({ seo, productSlug, examplePrompts, className, heightMode, viewportOffset, onNavigate, onSend, welcomeTitle, welcomeBody, locale, }: ExplorePageProps): react.JSX.Element;
239
250
 
240
- export { type AnswerRendererStrings as A, ExploreAnswerBody as E, type ExploreAnswerBodyProps as a, ExploreAnswerStyles as b, ExplorePage as c, type ExplorePageProps as d, answerPlainText as e, answerSpeechText as f, isInlineImageAllowed as g, type ExploreProvenance as h, inlineImageOrigins as i, type ExploreReferenceKind as j, logoUrlOf as l, productNamesByOrigin as p, referenceKindOf as r, summariseReferences as s };
251
+ export { type AnswerRendererStrings as A, EXPLORE_PREFILL_MAX_LENGTH as E, ExploreAnswerBody as a, type ExploreAnswerBodyProps as b, ExploreAnswerStyles as c, ExplorePage as d, type ExplorePageProps as e, answerPlainText as f, answerSpeechText as g, exploreQuestionHref as h, inlineImageOrigins as i, isInlineImageAllowed as j, type ExploreProvenance as k, type ExploreReferenceKind as l, logoUrlOf as m, productNamesByOrigin as p, referenceKindOf as r, summariseReferences as s };
package/dist/index.d.mts CHANGED
@@ -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-D25zoXy9.mjs';
22
- export { E as ExploreAnswerBody, a as ExploreAnswerBodyProps, b as ExploreAnswerStyles, c as ExplorePage, d as ExplorePageProps, e as answerPlainText, f as answerSpeechText, i as inlineImageOrigins, g as isInlineImageAllowed } from './explore-D25zoXy9.mjs';
21
+ import { A as AnswerRendererStrings } from './explore-Crc41y0j.mjs';
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
25
  export { D as DEFAULT_EXPLORE_EXAMPLE_PROMPTS, E as ExploreChatError, a as ExploreChatErrorKind, b as ExploreChatPhase, c as ExploreEscalateOutcome, d as ExploreEscalateResult, F as FALLBACK_EXPLORE_LIMITS, U as UseExploreChatOptions, e as UseExploreChatResult, f as UseSpeechOutputOptions, g as UseSpeechOutputResult, h as classifyExploreError, s as stopSpeaking, u as useExploreChat, i as useProgressiveReveal, j as useSpeechOutput } from './use-progressive-reveal-Cmy8bA7L.mjs';
@@ -119,6 +119,29 @@ interface Concept {
119
119
  /** Slugs of related concepts on the same site. */
120
120
  related: string[];
121
121
  images: ConceptImage[];
122
+ /**
123
+ * Cross-product industry solutions on burdenoff.com/domains that feature this concept.
124
+ * Generated from the domain dossiers; absent (or empty) when the concept is in none.
125
+ */
126
+ solutions?: ConceptSolution[];
127
+ }
128
+ /**
129
+ * One industry solution — a page on https://burdenoff.com/domains that shows several
130
+ * Burdenoff products working together in one domain (healthcare, logistics, …). A concept
131
+ * page links to the solutions that feature it; a site's `/concepts` page lists every
132
+ * solution its product takes part in.
133
+ */
134
+ interface ConceptSolution {
135
+ /** Domain slug, e.g. `"healthcare"`. */
136
+ domain: string;
137
+ /** Domain display name, e.g. `"Healthcare Providers"`. */
138
+ name: string;
139
+ /** Absolute URL of the solution page, or of this concept's place in it. */
140
+ url: string;
141
+ /** Absolute URL of the domain illustration (a 16:9 thumbnail). */
142
+ image?: string;
143
+ /** One sentence: what this concept (or product) does in that solution. */
144
+ summary?: string;
122
145
  }
123
146
  interface ConceptCategory {
124
147
  name: string;
@@ -143,6 +166,8 @@ type ConceptLinkComponent = ComponentType<ConceptLinkProps>;
143
166
  * picture shows the shipping product.
144
167
  */
145
168
  declare const CONCEPT_ILLUSTRATION_NOTICE = "These images are illustrations of the concept, not screenshots of the actual product.";
169
+ /** Where every industry solution is listed. */
170
+ declare const DOMAINS_URL = "https://burdenoff.com/domains";
146
171
  /** The landing page route. */
147
172
  declare const CONCEPTS_PATH = "/concepts";
148
173
  /** Prefix of every concept detail route: `/concept/<slug>`. */
@@ -171,6 +196,13 @@ interface ConceptsPageProps {
171
196
  title?: string;
172
197
  /** Overrides the meta description (and the hero lead). Default: built from the counts. */
173
198
  description?: string;
199
+ /**
200
+ * Industry solutions on burdenoff.com/domains that this product takes part in. Rendered as
201
+ * a band after the concepts; omitted when empty.
202
+ */
203
+ solutions?: readonly ConceptSolution[];
204
+ /** "Browse every solution" target. Default: {@link DOMAINS_URL}. */
205
+ solutionsUrl?: string;
174
206
  /** Extra classes for the page root. */
175
207
  className?: string;
176
208
  }
@@ -191,7 +223,7 @@ interface ConceptDetailPageProps {
191
223
  * `/concepts` — every concept on the site, grouped by category, with a client-side search
192
224
  * and category filter. Filters start at "All", so the prerendered page lists everything.
193
225
  */
194
- declare function ConceptsPage({ productName, siteUrl, concepts, categories, cta, linkComponent, title, description, className, }: ConceptsPageProps): react.JSX.Element;
226
+ declare function ConceptsPage({ productName, siteUrl, concepts, categories, cta, linkComponent, title, description, solutions, solutionsUrl, className, }: ConceptsPageProps): react.JSX.Element;
195
227
  /**
196
228
  * `/concept/:slug` — one concept: hero illustration, the copy, every illustration with its
197
229
  * caption and description, related concepts and previous / next by `order`.
@@ -762,4 +794,4 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
762
794
  */
763
795
  declare const ECOSYSTEM_PRODUCTS: WebsiteSwitcherProduct[];
764
796
 
765
- 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, CareersPostingOption, CareersSubmissionForm, type CareersSubmissionFormProps, type Concept, type ConceptCategory, ConceptDetailPage, type ConceptDetailPageProps, type ConceptDevice, type ConceptImage, type ConceptLinkComponent, type ConceptLinkProps, ConceptsPage, type ConceptsPageProps, ECOSYSTEM_PRODUCTS, EXPLORE_LOCALES, type ExploreLocale, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf };
797
+ 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, 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, type ExploreLocale, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf };
package/dist/index.d.ts CHANGED
@@ -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-I4QnY4J9.js';
22
- export { E as ExploreAnswerBody, a as ExploreAnswerBodyProps, b as ExploreAnswerStyles, c as ExplorePage, d as ExplorePageProps, e as answerPlainText, f as answerSpeechText, i as inlineImageOrigins, g as isInlineImageAllowed } from './explore-I4QnY4J9.js';
21
+ import { A as AnswerRendererStrings } from './explore-C3SEP5K6.js';
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
25
  export { D as DEFAULT_EXPLORE_EXAMPLE_PROMPTS, E as ExploreChatError, a as ExploreChatErrorKind, b as ExploreChatPhase, c as ExploreEscalateOutcome, d as ExploreEscalateResult, F as FALLBACK_EXPLORE_LIMITS, U as UseExploreChatOptions, e as UseExploreChatResult, f as UseSpeechOutputOptions, g as UseSpeechOutputResult, h as classifyExploreError, s as stopSpeaking, u as useExploreChat, i as useProgressiveReveal, j as useSpeechOutput } from './use-progressive-reveal-DHPGGxZu.js';
@@ -119,6 +119,29 @@ interface Concept {
119
119
  /** Slugs of related concepts on the same site. */
120
120
  related: string[];
121
121
  images: ConceptImage[];
122
+ /**
123
+ * Cross-product industry solutions on burdenoff.com/domains that feature this concept.
124
+ * Generated from the domain dossiers; absent (or empty) when the concept is in none.
125
+ */
126
+ solutions?: ConceptSolution[];
127
+ }
128
+ /**
129
+ * One industry solution — a page on https://burdenoff.com/domains that shows several
130
+ * Burdenoff products working together in one domain (healthcare, logistics, …). A concept
131
+ * page links to the solutions that feature it; a site's `/concepts` page lists every
132
+ * solution its product takes part in.
133
+ */
134
+ interface ConceptSolution {
135
+ /** Domain slug, e.g. `"healthcare"`. */
136
+ domain: string;
137
+ /** Domain display name, e.g. `"Healthcare Providers"`. */
138
+ name: string;
139
+ /** Absolute URL of the solution page, or of this concept's place in it. */
140
+ url: string;
141
+ /** Absolute URL of the domain illustration (a 16:9 thumbnail). */
142
+ image?: string;
143
+ /** One sentence: what this concept (or product) does in that solution. */
144
+ summary?: string;
122
145
  }
123
146
  interface ConceptCategory {
124
147
  name: string;
@@ -143,6 +166,8 @@ type ConceptLinkComponent = ComponentType<ConceptLinkProps>;
143
166
  * picture shows the shipping product.
144
167
  */
145
168
  declare const CONCEPT_ILLUSTRATION_NOTICE = "These images are illustrations of the concept, not screenshots of the actual product.";
169
+ /** Where every industry solution is listed. */
170
+ declare const DOMAINS_URL = "https://burdenoff.com/domains";
146
171
  /** The landing page route. */
147
172
  declare const CONCEPTS_PATH = "/concepts";
148
173
  /** Prefix of every concept detail route: `/concept/<slug>`. */
@@ -171,6 +196,13 @@ interface ConceptsPageProps {
171
196
  title?: string;
172
197
  /** Overrides the meta description (and the hero lead). Default: built from the counts. */
173
198
  description?: string;
199
+ /**
200
+ * Industry solutions on burdenoff.com/domains that this product takes part in. Rendered as
201
+ * a band after the concepts; omitted when empty.
202
+ */
203
+ solutions?: readonly ConceptSolution[];
204
+ /** "Browse every solution" target. Default: {@link DOMAINS_URL}. */
205
+ solutionsUrl?: string;
174
206
  /** Extra classes for the page root. */
175
207
  className?: string;
176
208
  }
@@ -191,7 +223,7 @@ interface ConceptDetailPageProps {
191
223
  * `/concepts` — every concept on the site, grouped by category, with a client-side search
192
224
  * and category filter. Filters start at "All", so the prerendered page lists everything.
193
225
  */
194
- declare function ConceptsPage({ productName, siteUrl, concepts, categories, cta, linkComponent, title, description, className, }: ConceptsPageProps): react.JSX.Element;
226
+ declare function ConceptsPage({ productName, siteUrl, concepts, categories, cta, linkComponent, title, description, solutions, solutionsUrl, className, }: ConceptsPageProps): react.JSX.Element;
195
227
  /**
196
228
  * `/concept/:slug` — one concept: hero illustration, the copy, every illustration with its
197
229
  * caption and description, related concepts and previous / next by `order`.
@@ -762,4 +794,4 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
762
794
  */
763
795
  declare const ECOSYSTEM_PRODUCTS: WebsiteSwitcherProduct[];
764
796
 
765
- 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, CareersPostingOption, CareersSubmissionForm, type CareersSubmissionFormProps, type Concept, type ConceptCategory, ConceptDetailPage, type ConceptDetailPageProps, type ConceptDevice, type ConceptImage, type ConceptLinkComponent, type ConceptLinkProps, ConceptsPage, type ConceptsPageProps, ECOSYSTEM_PRODUCTS, EXPLORE_LOCALES, type ExploreLocale, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf };
797
+ 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, 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, type ExploreLocale, type ExploreStrings, Input, Label, PUBLISHED_ANSWER_FIELDS, type PublishedAnswer, type PublishedAnswerSource, type PublishedAnswerTopic, Select, Textarea, WebsiteSwitcherProduct, answerPath, answerSourceHost, answerStrings, buttonVariants, conceptPath, formatAnswerDate, getAnswerBySlug, getConceptBySlug, isPublishedSourceUrl, isValidUrl, speechLocaleOf };