@burdenoff/website-sdk 2026.924.3 → 2026.924.5

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.
@@ -5410,7 +5410,7 @@ function ConceptStrip({
5410
5410
  "data-boff-explore": "concept-strip-block",
5411
5411
  className: "boff-explore-rise boff-explore-rise-3 mt-4",
5412
5412
  children: [
5413
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.conceptStripTitle }),
5413
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.conceptStripTitle }),
5414
5414
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
5415
5415
  /* @__PURE__ */ jsxRuntime.jsx(
5416
5416
  "button",
@@ -5629,8 +5629,8 @@ function WelcomeState({
5629
5629
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-3.5 w-3.5" }),
5630
5630
  T.badge
5631
5631
  ] }),
5632
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-3 text-balance break-words text-2xl font-bold tracking-tight sm:text-3xl", children: title }),
5633
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mt-2 max-w-2xl text-pretty text-sm leading-relaxed text-muted-foreground sm:text-base", children: body })
5632
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-2 text-balance break-words text-2xl font-bold tracking-tight sm:text-3xl", children: title }),
5633
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mt-2 max-w-2xl text-pretty text-sm leading-relaxed text-muted-foreground", children: body })
5634
5634
  ] }),
5635
5635
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "boff-explore-rise boff-explore-rise-1 mt-4 grid grid-cols-3 gap-2 sm:gap-2.5", children: CAPABILITIES.map(({ icon: Icon, body: capBody }, i) => /* @__PURE__ */ jsxRuntime.jsxs(
5636
5636
  "li",
@@ -5638,14 +5638,14 @@ function WelcomeState({
5638
5638
  className: "rounded-xl border border-border/70 bg-card/60 p-2.5 text-center transition-colors hover:border-border sm:p-2.5 sm:text-left",
5639
5639
  children: [
5640
5640
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mx-auto mb-1.5 flex h-7 w-7 items-center justify-center rounded-lg bg-primary/10 text-primary sm:mx-0 sm:mb-2 sm:h-8 sm:w-8", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3.5 w-3.5 sm:h-4 sm:w-4" }) }),
5641
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] font-semibold leading-tight text-card-foreground sm:text-sm sm:leading-normal", children: T.capabilities[i] ?? "" }),
5641
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] font-semibold leading-tight text-card-foreground sm:text-sm sm:leading-snug", children: T.capabilities[i] ?? "" }),
5642
5642
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 hidden text-xs leading-snug text-muted-foreground lg:block", children: capBody })
5643
5643
  ]
5644
5644
  },
5645
5645
  i
5646
5646
  )) }),
5647
5647
  prompts.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-2 mt-4", children: [
5648
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.tryAsking }),
5648
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.tryAsking }),
5649
5649
  /* @__PURE__ */ jsxRuntime.jsx(
5650
5650
  PromptCarousel,
5651
5651
  {
@@ -5657,7 +5657,7 @@ function WelcomeState({
5657
5657
  )
5658
5658
  ] }) : null,
5659
5659
  products.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "boff-explore-rise boff-explore-rise-3 mt-4", children: [
5660
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
5660
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: T.focusProduct }),
5661
5661
  /* @__PURE__ */ jsxRuntime.jsx(
5662
5662
  ProductStrip,
5663
5663
  {
@@ -6473,7 +6473,13 @@ function ExplorePage({
6473
6473
  {
6474
6474
  "data-boff-explore": "composer-field",
6475
6475
  className: cn(
6476
- "flex min-w-0 items-end gap-2 rounded-2xl border bg-card p-2 shadow-sm transition-all",
6476
+ // Stacked on a phone, one row from `sm` up. Three 36px icon buttons beside
6477
+ // the field left it 138px wide at 320px — about seventeen characters — so on
6478
+ // the narrowest screens the field takes the full width and the buttons get
6479
+ // their own row beneath it. The buttons' wrapper is `sm:contents`, so from
6480
+ // `sm` up it stops being a box and the buttons are direct flex children of
6481
+ // this row again: the desktop layout is byte-for-byte what it was.
6482
+ "flex min-w-0 flex-col items-stretch gap-1 rounded-2xl border bg-card p-2 shadow-sm transition-all sm:flex-row sm:items-end sm:gap-2",
6477
6483
  busy && "boff-explore-busy",
6478
6484
  overLimit ? "border-destructive/60" : "border-border focus-within:border-primary/40 focus-within:ring-1 focus-within:ring-ring",
6479
6485
  // The halo is an invitation, and an invitation is only useful before it has
@@ -6521,62 +6527,64 @@ function ExplorePage({
6521
6527
  }
6522
6528
  }
6523
6529
  ),
6524
- /* @__PURE__ */ jsxRuntime.jsx(
6525
- Button,
6526
- {
6527
- "data-boff-explore": "attach",
6528
- type: "button",
6529
- size: "icon",
6530
- variant: "ghost",
6531
- disabled: composerDisabled || staged.length >= MAX_ATTACHMENTS,
6532
- "aria-label": T.attach,
6533
- title: `${T.attach} \u2014 ${fill(T.attachHint, {
6534
- max: String(MAX_ATTACHMENTS),
6535
- size: String(MAX_ATTACHMENT_BYTES / (1024 * 1024))
6536
- })}`,
6537
- onClick: () => fileInputRef.current?.click(),
6538
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Paperclip, { className: "h-4 w-4" })
6539
- }
6540
- ),
6541
- speech.supported ? /* @__PURE__ */ jsxRuntime.jsx(
6542
- Button,
6543
- {
6544
- "data-boff-explore": "mic",
6545
- "data-listening": speech.listening ? "true" : "false",
6546
- type: "button",
6547
- size: "icon",
6548
- variant: speech.listening ? "default" : "ghost",
6549
- disabled: composerDisabled,
6550
- "aria-label": speech.listening ? T.stopDictating : T.dictate,
6551
- "aria-pressed": speech.listening,
6552
- title: speech.listening ? T.stopDictating : T.dictate,
6553
- onClick: speech.toggle,
6554
- className: cn(speech.listening && "animate-pulse"),
6555
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mic, { className: "h-4 w-4" })
6556
- }
6557
- ) : null,
6558
- busy ? /* @__PURE__ */ jsxRuntime.jsx(
6559
- Button,
6560
- {
6561
- "data-boff-explore": "stop",
6562
- type: "button",
6563
- size: "icon",
6564
- variant: "secondary",
6565
- "aria-label": T.stop,
6566
- onClick: stop,
6567
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-4 w-4" })
6568
- }
6569
- ) : /* @__PURE__ */ jsxRuntime.jsx(
6570
- Button,
6571
- {
6572
- "data-boff-explore": "send",
6573
- type: "submit",
6574
- size: "icon",
6575
- disabled: !canSubmit,
6576
- "aria-label": T.send,
6577
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "h-4 w-4" })
6578
- }
6579
- )
6530
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-1 sm:contents", children: [
6531
+ /* @__PURE__ */ jsxRuntime.jsx(
6532
+ Button,
6533
+ {
6534
+ "data-boff-explore": "attach",
6535
+ type: "button",
6536
+ size: "icon",
6537
+ variant: "ghost",
6538
+ disabled: composerDisabled || staged.length >= MAX_ATTACHMENTS,
6539
+ "aria-label": T.attach,
6540
+ title: `${T.attach} \u2014 ${fill(T.attachHint, {
6541
+ max: String(MAX_ATTACHMENTS),
6542
+ size: String(MAX_ATTACHMENT_BYTES / (1024 * 1024))
6543
+ })}`,
6544
+ onClick: () => fileInputRef.current?.click(),
6545
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Paperclip, { className: "h-4 w-4" })
6546
+ }
6547
+ ),
6548
+ speech.supported ? /* @__PURE__ */ jsxRuntime.jsx(
6549
+ Button,
6550
+ {
6551
+ "data-boff-explore": "mic",
6552
+ "data-listening": speech.listening ? "true" : "false",
6553
+ type: "button",
6554
+ size: "icon",
6555
+ variant: speech.listening ? "default" : "ghost",
6556
+ disabled: composerDisabled,
6557
+ "aria-label": speech.listening ? T.stopDictating : T.dictate,
6558
+ "aria-pressed": speech.listening,
6559
+ title: speech.listening ? T.stopDictating : T.dictate,
6560
+ onClick: speech.toggle,
6561
+ className: cn(speech.listening && "animate-pulse"),
6562
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mic, { className: "h-4 w-4" })
6563
+ }
6564
+ ) : null,
6565
+ busy ? /* @__PURE__ */ jsxRuntime.jsx(
6566
+ Button,
6567
+ {
6568
+ "data-boff-explore": "stop",
6569
+ type: "button",
6570
+ size: "icon",
6571
+ variant: "secondary",
6572
+ "aria-label": T.stop,
6573
+ onClick: stop,
6574
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-4 w-4" })
6575
+ }
6576
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
6577
+ Button,
6578
+ {
6579
+ "data-boff-explore": "send",
6580
+ type: "submit",
6581
+ size: "icon",
6582
+ disabled: !canSubmit,
6583
+ "aria-label": T.send,
6584
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "h-4 w-4" })
6585
+ }
6586
+ )
6587
+ ] })
6580
6588
  ]
6581
6589
  }
6582
6590
  ),