@burdenoff/website-sdk 2026.924.4 → 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.
@@ -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
  ),