@burdenoff/website-sdk 2026.924.11 → 2026.925.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.
@@ -1762,8 +1762,8 @@ var ECOSYSTEM_PRODUCTS = [
1762
1762
  name: "FluidGrids",
1763
1763
  websiteUrl: "https://www.fluidgrids.ai"
1764
1764
  },
1765
- // Botlit ships on botlit.ai — botlit.com does not resolve.
1766
- { slug: "botlit", name: "Botlit", websiteUrl: "https://www.botlit.ai" },
1765
+ // BotManor ships on botlit.ai — botlit.com does not resolve.
1766
+ { slug: "botlit", name: "BotManor", websiteUrl: "https://www.botlit.ai" },
1767
1767
  {
1768
1768
  slug: "bigconsole",
1769
1769
  name: "BigConsole",
@@ -3968,6 +3968,24 @@ var EXPLORE_CSS = `
3968
3968
  mask-image: linear-gradient(to left, hsl(var(--foreground)) calc(100% - 2rem), hsl(var(--foreground) / 0));
3969
3969
  }
3970
3970
 
3971
+ /* The concept rail had the chip row's problem: the card at its edge was cut hard mid-word
3972
+ ("Apparatus Rig", "CONCEPT ILLUST") on a dozen sites. It fades an edge only while there are
3973
+ more cards beyond it \u2014 the same state that lights the arrow on that side \u2014 so a rail
3974
+ scrolled to its end shows its last card whole. Physical edges, because that state is
3975
+ physical: it is measured from the left in either reading direction. */
3976
+ .boff-explore-rail-fade-left {
3977
+ -webkit-mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem);
3978
+ mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem);
3979
+ }
3980
+ .boff-explore-rail-fade-right {
3981
+ -webkit-mask-image: linear-gradient(to right, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
3982
+ mask-image: linear-gradient(to right, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
3983
+ }
3984
+ .boff-explore-rail-fade-left.boff-explore-rail-fade-right {
3985
+ -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));
3986
+ mask-image: linear-gradient(to right, hsl(var(--foreground) / 0), hsl(var(--foreground)) 3rem, hsl(var(--foreground)) calc(100% - 3rem), hsl(var(--foreground) / 0));
3987
+ }
3988
+
3971
3989
  @keyframes boff-explore-fade-in {
3972
3990
  from { opacity: 0; transform: translateY(2px); }
3973
3991
  to { opacity: 1; transform: none; }
@@ -4146,8 +4164,18 @@ var EXPLORE_CSS = `
4146
4164
  .boff-explore-scroll .boff-explore-capabilities { display: none; }
4147
4165
  }
4148
4166
  @container boff-explore-pane (min-width: ${toRem(WELCOME_FIT_MIN_WIDTH_PX)}) and (max-height: ${toRem(WELCOME_FIT_STEP_PX[1])}) {
4149
- /* Step 2. */
4167
+ /* Step 2. At a 4:1 crop the picture is ~44px tall, and the full-size caveat badge covered
4168
+ half of it \u2014 on ten sites, every card, whenever the consent banner was up. It stays (the
4169
+ picture is still a mockup), just smaller and tucked into the corner. */
4150
4170
  .boff-explore-scroll .boff-explore-concept-media { aspect-ratio: 4 / 1; }
4171
+ .boff-explore-scroll .boff-explore-concept-badge {
4172
+ top: 0.25rem;
4173
+ left: 0.25rem;
4174
+ padding: 0 0.3125rem;
4175
+ font-size: 0.5rem;
4176
+ line-height: 0.75rem;
4177
+ letter-spacing: 0.02em;
4178
+ }
4151
4179
  }
4152
4180
  @container boff-explore-pane (min-width: ${toRem(WELCOME_FIT_MIN_WIDTH_PX)}) and (max-height: ${toRem(WELCOME_FIT_STEP_PX[2])}) {
4153
4181
  /* Step 3. Title-only cards. The "concept illustration" caveat lives on the picture, so it
@@ -5306,6 +5334,7 @@ function ErrorBanner({
5306
5334
  }
5307
5335
  function PromptCarousel({
5308
5336
  strings: T,
5337
+ label,
5309
5338
  prompts,
5310
5339
  onPrompt,
5311
5340
  disabled
@@ -5337,7 +5366,7 @@ function PromptCarousel({
5337
5366
  return /* @__PURE__ */ jsxs(
5338
5367
  "div",
5339
5368
  {
5340
- className: "flex min-w-0 touch-pan-y items-center gap-1.5",
5369
+ 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]",
5341
5370
  role: "group",
5342
5371
  "aria-roledescription": "carousel",
5343
5372
  "aria-label": "Example questions",
@@ -5347,13 +5376,14 @@ function PromptCarousel({
5347
5376
  onBlurCapture: () => setPaused(false),
5348
5377
  ...swipe,
5349
5378
  children: [
5379
+ /* @__PURE__ */ 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 }),
5350
5380
  count > 1 ? /* @__PURE__ */ jsx(
5351
5381
  "button",
5352
5382
  {
5353
5383
  type: "button",
5354
5384
  "aria-label": T.prevSuggestion,
5355
5385
  onClick: () => go(-1),
5356
- 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",
5386
+ 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",
5357
5387
  children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" })
5358
5388
  }
5359
5389
  ) : null,
@@ -5367,18 +5397,21 @@ function PromptCarousel({
5367
5397
  "aria-label": `Ask: ${current}`,
5368
5398
  "aria-live": paused ? "polite" : "off",
5369
5399
  onClick: () => onPrompt(current),
5370
- className: "group flex min-w-0 flex-1 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",
5400
+ className: cn(
5401
+ "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",
5402
+ count > 1 ? "sm:col-span-1 sm:col-start-2" : "sm:col-span-3"
5403
+ ),
5371
5404
  children: [
5372
5405
  /* @__PURE__ */ jsx(Sparkles, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
5373
5406
  /* @__PURE__ */ jsx(
5374
5407
  "span",
5375
5408
  {
5376
- className: "boff-explore-fade min-w-0 max-sm:line-clamp-2 sm:truncate",
5409
+ className: "boff-explore-fade min-w-0 max-sm:line-clamp-3 sm:truncate",
5377
5410
  children: current
5378
5411
  },
5379
5412
  current
5380
5413
  ),
5381
- /* @__PURE__ */ jsx(ArrowUp, { className: "ml-auto h-3.5 w-3.5 shrink-0 rotate-45 text-muted-foreground transition-colors group-hover:text-primary" })
5414
+ /* @__PURE__ */ jsx(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" })
5382
5415
  ]
5383
5416
  }
5384
5417
  ),
@@ -5388,7 +5421,7 @@ function PromptCarousel({
5388
5421
  type: "button",
5389
5422
  "aria-label": T.nextSuggestion,
5390
5423
  onClick: () => go(1),
5391
- 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",
5424
+ 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",
5392
5425
  children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })
5393
5426
  }
5394
5427
  ) : null
@@ -5487,8 +5520,11 @@ function ConceptStrip({
5487
5520
  const measureRail = useCallback(() => {
5488
5521
  const el = railRef.current;
5489
5522
  if (!el) return;
5490
- setCanLeft(el.scrollLeft > 1);
5491
- setCanRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
5523
+ const max = el.scrollWidth - el.clientWidth;
5524
+ const rtl = typeof getComputedStyle === "function" && getComputedStyle(el).direction === "rtl";
5525
+ const fromLeft = rtl ? max + el.scrollLeft : el.scrollLeft;
5526
+ setCanLeft(fromLeft > 1);
5527
+ setCanRight(fromLeft < max - 1);
5492
5528
  }, []);
5493
5529
  useEffect(() => {
5494
5530
  const el = railRef.current;
@@ -5557,7 +5593,11 @@ function ConceptStrip({
5557
5593
  onScroll: measureRail,
5558
5594
  "data-boff-explore": "concept-strip",
5559
5595
  "aria-label": T.conceptStripLabel,
5560
- className: "boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1 sm:mx-10",
5596
+ className: cn(
5597
+ "boff-explore-strip flex min-w-0 snap-x gap-3 overflow-x-auto pb-1 sm:mx-10",
5598
+ canLeft && "boff-explore-rail-fade-left",
5599
+ canRight && "boff-explore-rail-fade-right"
5600
+ ),
5561
5601
  children: visible.map((highlight) => /* @__PURE__ */ jsx(
5562
5602
  "li",
5563
5603
  {
@@ -5597,7 +5637,7 @@ function ConceptStrip({
5597
5637
  "span",
5598
5638
  {
5599
5639
  "aria-hidden": "true",
5600
- 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",
5640
+ 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",
5601
5641
  children: T.conceptIllustration
5602
5642
  }
5603
5643
  )
@@ -5752,18 +5792,16 @@ function WelcomeState({
5752
5792
  },
5753
5793
  i
5754
5794
  )) }),
5755
- prompts.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "boff-explore-rise boff-explore-rise-2 mt-4", children: [
5756
- /* @__PURE__ */ jsx("p", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.tryAsking }),
5757
- /* @__PURE__ */ jsx(
5758
- PromptCarousel,
5759
- {
5760
- strings: T,
5761
- prompts,
5762
- onPrompt,
5763
- disabled
5764
- }
5765
- )
5766
- ] }) : null,
5795
+ prompts.length > 0 ? /* @__PURE__ */ jsx("div", { className: "boff-explore-rise boff-explore-rise-2 mt-4", children: /* @__PURE__ */ jsx(
5796
+ PromptCarousel,
5797
+ {
5798
+ strings: T,
5799
+ label: T.tryAsking,
5800
+ prompts,
5801
+ onPrompt,
5802
+ disabled
5803
+ }
5804
+ ) }) : null,
5767
5805
  products.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-4", children: [
5768
5806
  /* @__PURE__ */ jsx("p", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
5769
5807
  /* @__PURE__ */ jsx(