@burdenoff/website-sdk 2026.924.11 → 2026.924.12
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/explore.js +61 -23
- package/dist/components/explore.js.map +1 -1
- package/dist/components/explore.mjs +61 -23
- package/dist/components/explore.mjs.map +1 -1
- package/dist/index.js +61 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +61 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3994,6 +3994,24 @@ var EXPLORE_CSS = `
|
|
|
3994
3994
|
mask-image: linear-gradient(to left, hsl(var(--foreground)) calc(100% - 2rem), hsl(var(--foreground) / 0));
|
|
3995
3995
|
}
|
|
3996
3996
|
|
|
3997
|
+
/* The concept rail had the chip row's problem: the card at its edge was cut hard mid-word
|
|
3998
|
+
("Apparatus Rig", "CONCEPT ILLUST") on a dozen sites. It fades an edge only while there are
|
|
3999
|
+
more cards beyond it \u2014 the same state that lights the arrow on that side \u2014 so a rail
|
|
4000
|
+
scrolled to its end shows its last card whole. Physical edges, because that state is
|
|
4001
|
+
physical: it is measured from the left in either reading direction. */
|
|
4002
|
+
.boff-explore-rail-fade-left {
|
|
4003
|
+
-webkit-mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem);
|
|
4004
|
+
mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem);
|
|
4005
|
+
}
|
|
4006
|
+
.boff-explore-rail-fade-right {
|
|
4007
|
+
-webkit-mask-image: linear-gradient(to right, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
|
|
4008
|
+
mask-image: linear-gradient(to right, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
|
|
4009
|
+
}
|
|
4010
|
+
.boff-explore-rail-fade-left.boff-explore-rail-fade-right {
|
|
4011
|
+
-webkit-mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
|
|
4012
|
+
mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
|
|
4013
|
+
}
|
|
4014
|
+
|
|
3997
4015
|
@keyframes boff-explore-fade-in {
|
|
3998
4016
|
from { opacity: 0; transform: translateY(2px); }
|
|
3999
4017
|
to { opacity: 1; transform: none; }
|
|
@@ -4172,8 +4190,18 @@ var EXPLORE_CSS = `
|
|
|
4172
4190
|
.boff-explore-scroll .boff-explore-capabilities { display: none; }
|
|
4173
4191
|
}
|
|
4174
4192
|
@container boff-explore-pane (min-width: ${toRem(WELCOME_FIT_MIN_WIDTH_PX)}) and (max-height: ${toRem(WELCOME_FIT_STEP_PX[1])}) {
|
|
4175
|
-
/* Step 2.
|
|
4193
|
+
/* Step 2. At a 4:1 crop the picture is ~44px tall, and the full-size caveat badge covered
|
|
4194
|
+
half of it \u2014 on ten sites, every card, whenever the consent banner was up. It stays (the
|
|
4195
|
+
picture is still a mockup), just smaller and tucked into the corner. */
|
|
4176
4196
|
.boff-explore-scroll .boff-explore-concept-media { aspect-ratio: 4 / 1; }
|
|
4197
|
+
.boff-explore-scroll .boff-explore-concept-badge {
|
|
4198
|
+
top: 0.25rem;
|
|
4199
|
+
left: 0.25rem;
|
|
4200
|
+
padding: 0 0.3125rem;
|
|
4201
|
+
font-size: 0.5rem;
|
|
4202
|
+
line-height: 0.75rem;
|
|
4203
|
+
letter-spacing: 0.02em;
|
|
4204
|
+
}
|
|
4177
4205
|
}
|
|
4178
4206
|
@container boff-explore-pane (min-width: ${toRem(WELCOME_FIT_MIN_WIDTH_PX)}) and (max-height: ${toRem(WELCOME_FIT_STEP_PX[2])}) {
|
|
4179
4207
|
/* Step 3. Title-only cards. The "concept illustration" caveat lives on the picture, so it
|
|
@@ -5332,6 +5360,7 @@ function ErrorBanner({
|
|
|
5332
5360
|
}
|
|
5333
5361
|
function PromptCarousel({
|
|
5334
5362
|
strings: T,
|
|
5363
|
+
label,
|
|
5335
5364
|
prompts,
|
|
5336
5365
|
onPrompt,
|
|
5337
5366
|
disabled
|
|
@@ -5363,7 +5392,7 @@ function PromptCarousel({
|
|
|
5363
5392
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5364
5393
|
"div",
|
|
5365
5394
|
{
|
|
5366
|
-
className: "
|
|
5395
|
+
className: "grid min-w-0 touch-pan-y grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-x-1.5 gap-y-1.5 sm:grid-cols-[auto_minmax(0,1fr)_auto]",
|
|
5367
5396
|
role: "group",
|
|
5368
5397
|
"aria-roledescription": "carousel",
|
|
5369
5398
|
"aria-label": "Example questions",
|
|
@@ -5373,13 +5402,14 @@ function PromptCarousel({
|
|
|
5373
5402
|
onBlurCapture: () => setPaused(false),
|
|
5374
5403
|
...swipe,
|
|
5375
5404
|
children: [
|
|
5405
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-start-1 row-start-1 text-xs font-semibold uppercase tracking-wide text-muted-foreground sm:col-span-3", children: label }),
|
|
5376
5406
|
count > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5377
5407
|
"button",
|
|
5378
5408
|
{
|
|
5379
5409
|
type: "button",
|
|
5380
5410
|
"aria-label": T.prevSuggestion,
|
|
5381
5411
|
onClick: () => go(-1),
|
|
5382
|
-
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
5412
|
+
className: "col-start-2 row-start-1 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:col-start-1 sm:row-start-2",
|
|
5383
5413
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
5384
5414
|
}
|
|
5385
5415
|
) : null,
|
|
@@ -5393,18 +5423,21 @@ function PromptCarousel({
|
|
|
5393
5423
|
"aria-label": `Ask: ${current}`,
|
|
5394
5424
|
"aria-live": paused ? "polite" : "off",
|
|
5395
5425
|
onClick: () => onPrompt(current),
|
|
5396
|
-
className:
|
|
5426
|
+
className: cn(
|
|
5427
|
+
"group col-span-3 row-start-2 flex min-w-0 items-center gap-2 rounded-full border border-border bg-card px-4 py-2 max-sm:min-h-[3.625rem] max-sm:rounded-2xl text-left text-sm text-card-foreground shadow-sm transition-colors hover:border-primary/50 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
5428
|
+
count > 1 ? "sm:col-span-1 sm:col-start-2" : "sm:col-span-3"
|
|
5429
|
+
),
|
|
5397
5430
|
children: [
|
|
5398
5431
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
|
|
5399
5432
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5400
5433
|
"span",
|
|
5401
5434
|
{
|
|
5402
|
-
className: "boff-explore-fade min-w-0 max-sm:line-clamp-
|
|
5435
|
+
className: "boff-explore-fade min-w-0 max-sm:line-clamp-3 sm:truncate",
|
|
5403
5436
|
children: current
|
|
5404
5437
|
},
|
|
5405
5438
|
current
|
|
5406
5439
|
),
|
|
5407
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "ml-auto h-3.5 w-3.5 shrink-0 rotate-45 text-muted-foreground transition-colors group-hover:text-primary" })
|
|
5440
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "ml-auto h-3.5 w-3.5 shrink-0 rotate-45 text-muted-foreground transition-colors group-hover:text-primary max-sm:hidden" })
|
|
5408
5441
|
]
|
|
5409
5442
|
}
|
|
5410
5443
|
),
|
|
@@ -5414,7 +5447,7 @@ function PromptCarousel({
|
|
|
5414
5447
|
type: "button",
|
|
5415
5448
|
"aria-label": T.nextSuggestion,
|
|
5416
5449
|
onClick: () => go(1),
|
|
5417
|
-
className: "inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
5450
|
+
className: "col-start-3 row-start-1 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring sm:row-start-2",
|
|
5418
5451
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
5419
5452
|
}
|
|
5420
5453
|
) : null
|
|
@@ -5513,8 +5546,11 @@ function ConceptStrip({
|
|
|
5513
5546
|
const measureRail = React.useCallback(() => {
|
|
5514
5547
|
const el = railRef.current;
|
|
5515
5548
|
if (!el) return;
|
|
5516
|
-
|
|
5517
|
-
|
|
5549
|
+
const max = el.scrollWidth - el.clientWidth;
|
|
5550
|
+
const rtl = typeof getComputedStyle === "function" && getComputedStyle(el).direction === "rtl";
|
|
5551
|
+
const fromLeft = rtl ? max + el.scrollLeft : el.scrollLeft;
|
|
5552
|
+
setCanLeft(fromLeft > 1);
|
|
5553
|
+
setCanRight(fromLeft < max - 1);
|
|
5518
5554
|
}, []);
|
|
5519
5555
|
React.useEffect(() => {
|
|
5520
5556
|
const el = railRef.current;
|
|
@@ -5583,7 +5619,11 @@ function ConceptStrip({
|
|
|
5583
5619
|
onScroll: measureRail,
|
|
5584
5620
|
"data-boff-explore": "concept-strip",
|
|
5585
5621
|
"aria-label": T.conceptStripLabel,
|
|
5586
|
-
className:
|
|
5622
|
+
className: cn(
|
|
5623
|
+
"boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1 sm:mx-10",
|
|
5624
|
+
canLeft && "boff-explore-rail-fade-left",
|
|
5625
|
+
canRight && "boff-explore-rail-fade-right"
|
|
5626
|
+
),
|
|
5587
5627
|
children: visible.map((highlight) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5588
5628
|
"li",
|
|
5589
5629
|
{
|
|
@@ -5623,7 +5663,7 @@ function ConceptStrip({
|
|
|
5623
5663
|
"span",
|
|
5624
5664
|
{
|
|
5625
5665
|
"aria-hidden": "true",
|
|
5626
|
-
className: "pointer-events-none absolute left-1.5 top-1.5 rounded-full border border-border bg-background/90 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground",
|
|
5666
|
+
className: "boff-explore-concept-badge pointer-events-none absolute left-1.5 top-1.5 rounded-full border border-border bg-background/90 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground",
|
|
5627
5667
|
children: T.conceptIllustration
|
|
5628
5668
|
}
|
|
5629
5669
|
)
|
|
@@ -5778,18 +5818,16 @@ function WelcomeState({
|
|
|
5778
5818
|
},
|
|
5779
5819
|
i
|
|
5780
5820
|
)) }),
|
|
5781
|
-
prompts.length > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
5782
|
-
|
|
5783
|
-
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
5790
|
-
|
|
5791
|
-
)
|
|
5792
|
-
] }) : null,
|
|
5821
|
+
prompts.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "boff-explore-rise boff-explore-rise-2 mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5822
|
+
PromptCarousel,
|
|
5823
|
+
{
|
|
5824
|
+
strings: T,
|
|
5825
|
+
label: T.tryAsking,
|
|
5826
|
+
prompts,
|
|
5827
|
+
onPrompt,
|
|
5828
|
+
disabled
|
|
5829
|
+
}
|
|
5830
|
+
) }) : null,
|
|
5793
5831
|
products.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-4", children: [
|
|
5794
5832
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
|
|
5795
5833
|
/* @__PURE__ */ jsxRuntime.jsx(
|