@burdenoff/website-sdk 2026.1013.1 → 2026.1014.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 +14 -3
- package/dist/index.d.mts +20 -1
- package/dist/index.d.ts +20 -1
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +27 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -211,7 +211,12 @@ end-to-end suite: `page`, `messages`, `composer`, `chip`, `thinking`, `user`,
|
|
|
211
211
|
`ConceptsPage` and `ConceptDetailPage` render a product's concepts: each one a
|
|
212
212
|
feature or flow, shown through the mockups drawn for it and explained in
|
|
213
213
|
reviewed copy. Every image is labelled an **illustration of the concept, not a
|
|
214
|
-
screenshot of the actual product** (`CONCEPT_ILLUSTRATION_NOTICE`)
|
|
214
|
+
screenshot of the actual product** (`CONCEPT_ILLUSTRATION_NOTICE`), and a
|
|
215
|
+
concept's numbered "How it works" steps carry the matching qualifier
|
|
216
|
+
(`CONCEPT_WORKFLOW_NOTICE`) — a numbered list under that heading otherwise reads
|
|
217
|
+
as a click-through procedure. Both render wherever their section does; neither
|
|
218
|
+
is keyed to a field of generated data, so neither can vanish when a generator
|
|
219
|
+
drops one.
|
|
215
220
|
|
|
216
221
|
The data is a generated `src/data/concepts.ts` in each site — never hand-edit
|
|
217
222
|
it; regenerate with
|
|
@@ -290,7 +295,8 @@ filter bar or zero counts.
|
|
|
290
295
|
`className`.
|
|
291
296
|
|
|
292
297
|
**Helpers**: `CONCEPTS_PATH` (`/concepts`), `CONCEPT_PATH_PREFIX` (`/concept`),
|
|
293
|
-
`conceptPath(slug)`, `getConceptBySlug(concepts, slug)
|
|
298
|
+
`conceptPath(slug)`, `getConceptBySlug(concepts, slug)`,
|
|
299
|
+
`CONCEPT_ILLUSTRATION_NOTICE`, `CONCEPT_WORKFLOW_NOTICE`; types `Concept`,
|
|
294
300
|
`ConceptImage`, `ConceptCategory`, `ConceptLinkComponent`, `ConceptLinkProps`.
|
|
295
301
|
|
|
296
302
|
**SEO and llms.** One `<h1>` per page, a self-canonical URL, absolute OG images
|
|
@@ -305,7 +311,12 @@ never in the prerendered HTML.
|
|
|
305
311
|
**Testing hooks.** `data-concepts="landing" | "card" (plus data-slug) | "filter"
|
|
306
312
|
| "notice" | "empty" (filters match nothing) | "none" (no concepts at all) |
|
|
307
313
|
"detail" | "category" | "hero" | "illustration" | "related" | "pager" | "cta" |
|
|
308
|
-
"lightbox"`,
|
|
314
|
+
"lightbox" | "workflow-notice"`, plus `data-concepts-notice` on the illustration
|
|
315
|
+
notice and `data-concepts-workflow-notice` on the workflow one. The two
|
|
316
|
+
attributes are deliberately distinct: several assertions select
|
|
317
|
+
`[data-concepts-notice]` with `querySelector` and read the single node they get
|
|
318
|
+
back, so a second element wearing it would keep them green while describing the
|
|
319
|
+
wrong element.
|
|
309
320
|
|
|
310
321
|
### SEO Component
|
|
311
322
|
|
package/dist/index.d.mts
CHANGED
|
@@ -166,6 +166,25 @@ type ConceptLinkComponent = ComponentType<ConceptLinkProps>;
|
|
|
166
166
|
* picture shows the shipping product.
|
|
167
167
|
*/
|
|
168
168
|
declare const CONCEPT_ILLUSTRATION_NOTICE = "These images are illustrations of the concept, not screenshots of the actual product.";
|
|
169
|
+
/**
|
|
170
|
+
* The disclaimer shown above every concept's "How it works" steps.
|
|
171
|
+
*
|
|
172
|
+
* A numbered list under that heading reads as a procedure — the sequence of screens a
|
|
173
|
+
* visitor would click through — when what it actually describes is how the pieces of the
|
|
174
|
+
* concept relate. The illustration notice covers the pictures; nothing covered the steps,
|
|
175
|
+
* so the most instruction-shaped part of the page was the least qualified.
|
|
176
|
+
*
|
|
177
|
+
* Rendered with NO data gate, exactly like CONCEPT_ILLUSTRATION_NOTICE. Keying a
|
|
178
|
+
* disclosure to a generated field is how it disappears silently the first time a
|
|
179
|
+
* generator omits that field, and the page would then look more authoritative, not less.
|
|
180
|
+
* The section's own `workflow.length > 0` check is the only condition: no steps, no
|
|
181
|
+
* heading, nothing to qualify.
|
|
182
|
+
*
|
|
183
|
+
* The sentence says nothing about launch or availability. Every product behind these
|
|
184
|
+
* pages is generally available, and a notice that hinted otherwise would be false on
|
|
185
|
+
* every site that renders it.
|
|
186
|
+
*/
|
|
187
|
+
declare const CONCEPT_WORKFLOW_NOTICE = "These steps illustrate how the concept fits together \u2014 not a walkthrough of the product's current interface.";
|
|
169
188
|
/** Where every industry solution is listed. */
|
|
170
189
|
declare const DOMAINS_URL = "https://burdenoff.com/domains";
|
|
171
190
|
/** The landing page route. */
|
|
@@ -815,4 +834,4 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
|
|
|
815
834
|
*/
|
|
816
835
|
declare const ECOSYSTEM_PRODUCTS: WebsiteSwitcherProduct[];
|
|
817
836
|
|
|
818
|
-
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 };
|
|
837
|
+
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, 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
|
@@ -166,6 +166,25 @@ type ConceptLinkComponent = ComponentType<ConceptLinkProps>;
|
|
|
166
166
|
* picture shows the shipping product.
|
|
167
167
|
*/
|
|
168
168
|
declare const CONCEPT_ILLUSTRATION_NOTICE = "These images are illustrations of the concept, not screenshots of the actual product.";
|
|
169
|
+
/**
|
|
170
|
+
* The disclaimer shown above every concept's "How it works" steps.
|
|
171
|
+
*
|
|
172
|
+
* A numbered list under that heading reads as a procedure — the sequence of screens a
|
|
173
|
+
* visitor would click through — when what it actually describes is how the pieces of the
|
|
174
|
+
* concept relate. The illustration notice covers the pictures; nothing covered the steps,
|
|
175
|
+
* so the most instruction-shaped part of the page was the least qualified.
|
|
176
|
+
*
|
|
177
|
+
* Rendered with NO data gate, exactly like CONCEPT_ILLUSTRATION_NOTICE. Keying a
|
|
178
|
+
* disclosure to a generated field is how it disappears silently the first time a
|
|
179
|
+
* generator omits that field, and the page would then look more authoritative, not less.
|
|
180
|
+
* The section's own `workflow.length > 0` check is the only condition: no steps, no
|
|
181
|
+
* heading, nothing to qualify.
|
|
182
|
+
*
|
|
183
|
+
* The sentence says nothing about launch or availability. Every product behind these
|
|
184
|
+
* pages is generally available, and a notice that hinted otherwise would be false on
|
|
185
|
+
* every site that renders it.
|
|
186
|
+
*/
|
|
187
|
+
declare const CONCEPT_WORKFLOW_NOTICE = "These steps illustrate how the concept fits together \u2014 not a walkthrough of the product's current interface.";
|
|
169
188
|
/** Where every industry solution is listed. */
|
|
170
189
|
declare const DOMAINS_URL = "https://burdenoff.com/domains";
|
|
171
190
|
/** The landing page route. */
|
|
@@ -815,4 +834,4 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
|
|
|
815
834
|
*/
|
|
816
835
|
declare const ECOSYSTEM_PRODUCTS: WebsiteSwitcherProduct[];
|
|
817
836
|
|
|
818
|
-
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 };
|
|
837
|
+
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, 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.js
CHANGED
|
@@ -4858,6 +4858,7 @@ function ElectronDownloadLink({
|
|
|
4858
4858
|
|
|
4859
4859
|
// src/components/concepts-types.ts
|
|
4860
4860
|
var CONCEPT_ILLUSTRATION_NOTICE = "These images are illustrations of the concept, not screenshots of the actual product.";
|
|
4861
|
+
var CONCEPT_WORKFLOW_NOTICE = "These steps illustrate how the concept fits together \u2014 not a walkthrough of the product's current interface.";
|
|
4861
4862
|
var DOMAINS_URL = "https://burdenoff.com/domains";
|
|
4862
4863
|
var CONCEPTS_PATH = "/concepts";
|
|
4863
4864
|
var CONCEPT_PATH_PREFIX = "/concept";
|
|
@@ -5160,6 +5161,30 @@ function IllustrationNotice({ className }) {
|
|
|
5160
5161
|
}
|
|
5161
5162
|
);
|
|
5162
5163
|
}
|
|
5164
|
+
function WorkflowNotice({ className }) {
|
|
5165
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5166
|
+
"div",
|
|
5167
|
+
{
|
|
5168
|
+
role: "note",
|
|
5169
|
+
"data-concepts": "workflow-notice",
|
|
5170
|
+
"data-concepts-workflow-notice": "",
|
|
5171
|
+
className: cn(
|
|
5172
|
+
"mt-4 flex items-start gap-3 rounded-xl border border-border bg-muted/50 px-4 py-3 text-sm leading-relaxed text-muted-foreground",
|
|
5173
|
+
className
|
|
5174
|
+
),
|
|
5175
|
+
children: [
|
|
5176
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5177
|
+
lucideReact.Info,
|
|
5178
|
+
{
|
|
5179
|
+
"aria-hidden": "true",
|
|
5180
|
+
className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"
|
|
5181
|
+
}
|
|
5182
|
+
),
|
|
5183
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { children: CONCEPT_WORKFLOW_NOTICE })
|
|
5184
|
+
]
|
|
5185
|
+
}
|
|
5186
|
+
);
|
|
5187
|
+
}
|
|
5163
5188
|
function IllustrationBadge({ className }) {
|
|
5164
5189
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5165
5190
|
"span",
|
|
@@ -5985,6 +6010,7 @@ function ConceptDetail({
|
|
|
5985
6010
|
] }) : null,
|
|
5986
6011
|
concept.workflow.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("section", { "aria-labelledby": `${headingId}-workflow`, children: [
|
|
5987
6012
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { id: `${headingId}-workflow`, className: SECTION_HEADING, children: "How it works" }),
|
|
6013
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowNotice, {}),
|
|
5988
6014
|
/* @__PURE__ */ jsxRuntime.jsx("ol", { role: "list", className: "mt-4 space-y-4", children: concept.workflow.map((step, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5989
6015
|
"li",
|
|
5990
6016
|
{
|
|
@@ -19053,6 +19079,7 @@ exports.Button = Button;
|
|
|
19053
19079
|
exports.CONCEPTS_PATH = CONCEPTS_PATH;
|
|
19054
19080
|
exports.CONCEPT_ILLUSTRATION_NOTICE = CONCEPT_ILLUSTRATION_NOTICE;
|
|
19055
19081
|
exports.CONCEPT_PATH_PREFIX = CONCEPT_PATH_PREFIX;
|
|
19082
|
+
exports.CONCEPT_WORKFLOW_NOTICE = CONCEPT_WORKFLOW_NOTICE;
|
|
19056
19083
|
exports.CareersApplyForm = CareersApplyForm;
|
|
19057
19084
|
exports.CareersSubmissionForm = CareersSubmissionForm;
|
|
19058
19085
|
exports.CaseStudiesListPage = CaseStudiesListPage;
|