@ohhwells/bridge 0.1.66-next.192 → 0.1.67-next.194

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/index.cjs CHANGED
@@ -7551,13 +7551,17 @@ function MediaOverlay({
7551
7551
  hover,
7552
7552
  isUploading,
7553
7553
  fadingOut = false,
7554
+ selected = false,
7555
+ hovered = false,
7554
7556
  onFadeOutComplete,
7555
7557
  onReplace,
7558
+ onSelect,
7556
7559
  onVideoSettingsChange
7557
7560
  }) {
7558
7561
  const { rect } = hover;
7559
7562
  const skeletonRef = React7.useRef(null);
7560
7563
  const isVideo = hover.elementType === "video";
7564
+ const showChrome = !selected || hovered;
7561
7565
  const autoplay = hover.videoAutoplay ?? true;
7562
7566
  const muted = hover.videoMuted ?? true;
7563
7567
  const box = {
@@ -7592,7 +7596,7 @@ function MediaOverlay({
7592
7596
  }
7593
7597
  );
7594
7598
  }
7595
- const settingsBar = isVideo && !hover.isDragOver ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
7599
+ const settingsBar = isVideo && !hover.isDragOver && showChrome ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
7596
7600
  "div",
7597
7601
  {
7598
7602
  "data-ohw-bridge": "",
@@ -7662,11 +7666,13 @@ function MediaOverlay({
7662
7666
  // in-document, pointer-events does it natively. The button below opts back in, so
7663
7667
  // Replace still works.
7664
7668
  pointerEvents: hover.hasTextOverlap ? "none" : "auto",
7665
- boxShadow: "inset 0 0 0 1.5px var(--color-primary)",
7666
- background: "color-mix(in srgb, var(--color-primary) 20%, transparent)"
7669
+ // Selected: a firm component ring with no wash, so the image reads as chosen rather
7670
+ // than hovered. Hover keeps the existing tinted preview.
7671
+ boxShadow: selected ? "inset 0 0 0 2px var(--color-primary)" : "inset 0 0 0 1.5px var(--color-primary)",
7672
+ background: selected ? "transparent" : "color-mix(in srgb, var(--color-primary) 20%, transparent)"
7667
7673
  },
7668
- onClick: () => onReplace(hover.key),
7669
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
7674
+ onClick: () => onSelect && !selected ? onSelect(hover.key) : onReplace(hover.key),
7675
+ children: showChrome && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
7670
7676
  Button,
7671
7677
  {
7672
7678
  "data-ohw-media-overlay": "",
@@ -12601,127 +12607,16 @@ function FloatingPanel({
12601
12607
  );
12602
12608
  }
12603
12609
 
12604
- // src/ui/logo-size-panel.tsx
12605
- var import_lucide_react15 = require("lucide-react");
12606
- var import_jsx_runtime28 = require("react/jsx-runtime");
12607
- function SizeSlider({
12608
- value,
12609
- onChange
12610
- }) {
12611
- const pct = (value - LOGO_SIZE_MIN) / (LOGO_SIZE_MAX - LOGO_SIZE_MIN) * 100;
12612
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full flex-col gap-3", children: [
12613
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full items-center gap-2 text-sm font-medium leading-5", children: [
12614
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "min-w-0 flex-1 text-foreground", children: "Size" }),
12615
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "shrink-0 whitespace-nowrap text-muted-foreground", children: [
12616
- value,
12617
- " px"
12618
- ] })
12619
- ] }),
12620
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "relative h-2 w-full rounded-full bg-primary-50", children: [
12621
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12622
- "div",
12623
- {
12624
- className: "absolute inset-y-0 left-0 rounded-full bg-primary",
12625
- style: { width: `${pct}%` }
12626
- }
12627
- ),
12628
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12629
- "input",
12630
- {
12631
- type: "range",
12632
- min: LOGO_SIZE_MIN,
12633
- max: LOGO_SIZE_MAX,
12634
- step: 1,
12635
- value,
12636
- "aria-label": "Logo size",
12637
- className: cn(
12638
- "absolute inset-0 h-full w-full cursor-pointer appearance-none bg-transparent",
12639
- "[&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:size-5",
12640
- "[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2",
12641
- "[&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-background",
12642
- "[&::-moz-range-thumb]:size-5 [&::-moz-range-thumb]:rounded-full",
12643
- "[&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary",
12644
- "[&::-moz-range-thumb]:bg-background"
12645
- ),
12646
- onChange: (e) => onChange(Number(e.target.value))
12647
- }
12648
- )
12649
- ] })
12650
- ] });
12651
- }
12652
- function LogoSizePanel({
12653
- viewport,
12654
- sizePx,
12655
- mobileFollowing = true,
12656
- onSizeChange,
12657
- onCustomizeMobile,
12658
- onResetMobile,
12659
- onUpdateEverywhere,
12660
- className
12661
- }) {
12662
- const showFollowing = viewport === "mobile" && mobileFollowing;
12663
- const showMobileSlider = viewport === "mobile" && !mobileFollowing;
12664
- const showDesktopSlider = viewport === "desktop";
12665
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("flex w-full flex-col gap-4", className), children: [
12666
- showFollowing ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
12667
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-start gap-1", children: [
12668
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react15.Link, { size: 16, className: "mt-0.5 shrink-0 text-foreground", "aria-hidden": true }),
12669
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm font-semibold leading-5 text-foreground", children: "Following desktop size" })
12670
- ] }),
12671
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm leading-5 text-muted-foreground", children: "Mobile uses the desktop size until you customize it. Change the desktop size and it follows automatically." }),
12672
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12673
- Button,
12674
- {
12675
- type: "button",
12676
- variant: "outline",
12677
- size: "sm",
12678
- className: "h-9 w-full min-w-0 cursor-pointer",
12679
- onClick: onCustomizeMobile,
12680
- children: "Customize for mobile"
12681
- }
12682
- )
12683
- ] }) : null,
12684
- showDesktopSlider || showMobileSlider ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SizeSlider, { value: sizePx, onChange: onSizeChange }) : null,
12685
- showMobileSlider ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12686
- Button,
12687
- {
12688
- type: "button",
12689
- variant: "outline",
12690
- size: "sm",
12691
- className: "h-9 w-full min-w-0 cursor-pointer",
12692
- onClick: onResetMobile,
12693
- children: "Reset to desktop size"
12694
- }
12695
- ) : null,
12696
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-px w-full bg-border", role: "separator" }),
12697
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
12698
- Button,
12699
- {
12700
- type: "button",
12701
- variant: "outline",
12702
- size: "sm",
12703
- className: "h-9 w-full min-w-0 cursor-pointer gap-1",
12704
- onClick: onUpdateEverywhere,
12705
- children: [
12706
- "Update logo everywhere",
12707
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react15.ArrowUpRight, { size: 16, "aria-hidden": true })
12708
- ]
12709
- }
12710
- ),
12711
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm leading-5 text-muted-foreground", children: "Matches the right version to your background." })
12712
- ] });
12713
- }
12714
-
12715
12610
  // src/ui/socials-display-panel.tsx
12716
- var import_jsx_runtime29 = require("react/jsx-runtime");
12611
+ var import_jsx_runtime28 = require("react/jsx-runtime");
12717
12612
  function DisplaySwitch({
12718
12613
  label,
12719
12614
  checked,
12720
12615
  disabled,
12721
12616
  onChange
12722
12617
  }) {
12723
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex w-full items-center gap-2", children: [
12724
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12618
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full items-center gap-2", children: [
12619
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12725
12620
  "span",
12726
12621
  {
12727
12622
  className: cn(
@@ -12731,7 +12626,7 @@ function DisplaySwitch({
12731
12626
  children: label
12732
12627
  }
12733
12628
  ),
12734
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12629
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12735
12630
  "button",
12736
12631
  {
12737
12632
  type: "button",
@@ -12745,7 +12640,7 @@ function DisplaySwitch({
12745
12640
  checked ? "bg-primary" : "bg-primary-50",
12746
12641
  disabled ? "cursor-default opacity-50" : "cursor-pointer"
12747
12642
  ),
12748
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12643
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12749
12644
  "span",
12750
12645
  {
12751
12646
  className: cn(
@@ -12759,8 +12654,8 @@ function DisplaySwitch({
12759
12654
  ] });
12760
12655
  }
12761
12656
  function SocialsDisplayPanel({ display, onChange, className }) {
12762
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: cn("flex w-full flex-col gap-3", className), children: [
12763
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12657
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("flex w-full flex-col gap-3", className), children: [
12658
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12764
12659
  DisplaySwitch,
12765
12660
  {
12766
12661
  label: "Text",
@@ -12769,7 +12664,7 @@ function SocialsDisplayPanel({ display, onChange, className }) {
12769
12664
  onChange: (text) => onChange({ ...display, text })
12770
12665
  }
12771
12666
  ),
12772
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
12667
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
12773
12668
  DisplaySwitch,
12774
12669
  {
12775
12670
  label: "Icon",
@@ -13656,8 +13551,8 @@ function useSectionDrag({
13656
13551
  }
13657
13552
 
13658
13553
  // src/ui/footer-container-chrome.tsx
13659
- var import_lucide_react16 = require("lucide-react");
13660
- var import_jsx_runtime30 = require("react/jsx-runtime");
13554
+ var import_lucide_react15 = require("lucide-react");
13555
+ var import_jsx_runtime29 = require("react/jsx-runtime");
13661
13556
  function FooterContainerChrome({
13662
13557
  rect,
13663
13558
  onAdd,
@@ -13665,7 +13560,7 @@ function FooterContainerChrome({
13665
13560
  }) {
13666
13561
  const chromeGap = 6;
13667
13562
  const buttonMargin = 7;
13668
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
13563
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
13669
13564
  "div",
13670
13565
  {
13671
13566
  "data-ohw-footer-container-chrome": "",
@@ -13677,8 +13572,8 @@ function FooterContainerChrome({
13677
13572
  width: rect.width + chromeGap * 2,
13678
13573
  height: rect.height + chromeGap * 2
13679
13574
  },
13680
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Tooltip, { children: [
13681
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
13575
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Tooltip, { children: [
13576
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
13682
13577
  "button",
13683
13578
  {
13684
13579
  type: "button",
@@ -13697,10 +13592,10 @@ function FooterContainerChrome({
13697
13592
  if (addDisabled) return;
13698
13593
  onAdd();
13699
13594
  },
13700
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react16.Plus, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
13595
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react15.Plus, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
13701
13596
  }
13702
13597
  ) }),
13703
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipContent, { side: "bottom", sideOffset: 9, children: addDisabled ? "Maximum columns reached" : "Add item" })
13598
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipContent, { side: "bottom", sideOffset: 9, children: addDisabled ? "Maximum columns reached" : "Add item" })
13704
13599
  ] })
13705
13600
  }
13706
13601
  ) });
@@ -14162,14 +14057,14 @@ function deleteSelectedNavFooterItem(deps) {
14162
14057
  }
14163
14058
 
14164
14059
  // src/ui/navbar-container-chrome.tsx
14165
- var import_lucide_react17 = require("lucide-react");
14166
- var import_jsx_runtime31 = require("react/jsx-runtime");
14060
+ var import_lucide_react16 = require("lucide-react");
14061
+ var import_jsx_runtime30 = require("react/jsx-runtime");
14167
14062
  function NavbarContainerChrome({
14168
14063
  rect,
14169
14064
  onAdd
14170
14065
  }) {
14171
14066
  const chromeGap = 6;
14172
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
14067
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
14173
14068
  "div",
14174
14069
  {
14175
14070
  "data-ohw-navbar-container-chrome": "",
@@ -14181,7 +14076,7 @@ function NavbarContainerChrome({
14181
14076
  width: rect.width + chromeGap * 2,
14182
14077
  height: rect.height + chromeGap * 2
14183
14078
  },
14184
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
14079
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
14185
14080
  "button",
14186
14081
  {
14187
14082
  type: "button",
@@ -14198,7 +14093,7 @@ function NavbarContainerChrome({
14198
14093
  e.stopPropagation();
14199
14094
  onAdd();
14200
14095
  },
14201
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react17.Plus, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
14096
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react16.Plus, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
14202
14097
  }
14203
14098
  )
14204
14099
  }
@@ -14207,7 +14102,7 @@ function NavbarContainerChrome({
14207
14102
 
14208
14103
  // src/ui/drop-indicator.tsx
14209
14104
  var React10 = __toESM(require("react"), 1);
14210
- var import_jsx_runtime32 = require("react/jsx-runtime");
14105
+ var import_jsx_runtime31 = require("react/jsx-runtime");
14211
14106
  var dropIndicatorVariants = cva(
14212
14107
  "ov-gap-line pointer-events-none shrink-0 transition-opacity duration-150",
14213
14108
  {
@@ -14231,7 +14126,7 @@ var dropIndicatorVariants = cva(
14231
14126
  );
14232
14127
  var DropIndicator = React10.forwardRef(
14233
14128
  ({ className, direction, state, ...props }, ref) => {
14234
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
14129
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
14235
14130
  "div",
14236
14131
  {
14237
14132
  ref,
@@ -14248,7 +14143,7 @@ var DropIndicator = React10.forwardRef(
14248
14143
  DropIndicator.displayName = "DropIndicator";
14249
14144
 
14250
14145
  // src/ui/badge.tsx
14251
- var import_jsx_runtime33 = require("react/jsx-runtime");
14146
+ var import_jsx_runtime32 = require("react/jsx-runtime");
14252
14147
  var badgeVariants = cva(
14253
14148
  "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
14254
14149
  {
@@ -14266,12 +14161,12 @@ var badgeVariants = cva(
14266
14161
  }
14267
14162
  );
14268
14163
  function Badge({ className, variant, ...props }) {
14269
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
14164
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
14270
14165
  }
14271
14166
 
14272
14167
  // src/OhhwellsBridge.tsx
14273
- var import_lucide_react18 = require("lucide-react");
14274
- var import_jsx_runtime34 = require("react/jsx-runtime");
14168
+ var import_lucide_react17 = require("lucide-react");
14169
+ var import_jsx_runtime33 = require("react/jsx-runtime");
14275
14170
  var PRIMARY3 = "#0885FE";
14276
14171
  var IMAGE_FADE_MS = 300;
14277
14172
  function runOpacityFade(el, onDone) {
@@ -14440,7 +14335,7 @@ function mountSchedulingWidget(anchorId, notifyOnConnect = false, scheduleId, be
14440
14335
  const root = (0, import_client2.createRoot)(container);
14441
14336
  (0, import_react_dom3.flushSync)(() => {
14442
14337
  root.render(
14443
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
14338
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
14444
14339
  SchedulingWidget,
14445
14340
  {
14446
14341
  notifyOnConnect,
@@ -15121,7 +15016,7 @@ function EditGlowChrome({
15121
15016
  hideHandle = false
15122
15017
  }) {
15123
15018
  const GAP = SELECTION_CHROME_GAP2;
15124
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
15019
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
15125
15020
  "div",
15126
15021
  {
15127
15022
  ref: elRef,
@@ -15136,7 +15031,7 @@ function EditGlowChrome({
15136
15031
  zIndex: 2147483646
15137
15032
  },
15138
15033
  children: [
15139
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15034
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15140
15035
  "div",
15141
15036
  {
15142
15037
  style: {
@@ -15149,7 +15044,7 @@ function EditGlowChrome({
15149
15044
  }
15150
15045
  }
15151
15046
  ),
15152
- reorderHrefKey && !hideHandle && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15047
+ reorderHrefKey && !hideHandle && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15153
15048
  "div",
15154
15049
  {
15155
15050
  "data-ohw-drag-handle-container": "",
@@ -15161,7 +15056,7 @@ function EditGlowChrome({
15161
15056
  transform: "translate(calc(-100% - 7px), -50%)",
15162
15057
  pointerEvents: dragDisabled ? "none" : "auto"
15163
15058
  },
15164
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15059
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15165
15060
  DragHandle,
15166
15061
  {
15167
15062
  "aria-label": `Reorder ${reorderHrefKey}`,
@@ -15371,7 +15266,7 @@ function FloatingToolbar({
15371
15266
  return () => ro.disconnect();
15372
15267
  }, [showEditLink, activeCommands]);
15373
15268
  const { top, left, transform } = calcToolbarPos(rect, parentScroll, measuredW);
15374
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15269
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15375
15270
  "div",
15376
15271
  {
15377
15272
  ref: setRefs,
@@ -15383,12 +15278,12 @@ function FloatingToolbar({
15383
15278
  zIndex: 2147483647,
15384
15279
  pointerEvents: "auto"
15385
15280
  },
15386
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(CustomToolbar, { children: [
15387
- TOOLBAR_GROUPS.map((btns, gi) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_react17.default.Fragment, { children: [
15388
- gi > 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CustomToolbarDivider, {}),
15281
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(CustomToolbar, { children: [
15282
+ TOOLBAR_GROUPS.map((btns, gi) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_react17.default.Fragment, { children: [
15283
+ gi > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CustomToolbarDivider, {}),
15389
15284
  btns.map((btn) => {
15390
15285
  const isActive = activeCommands.has(btn.cmd);
15391
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15286
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15392
15287
  CustomToolbarButton,
15393
15288
  {
15394
15289
  title: btn.title,
@@ -15397,7 +15292,7 @@ function FloatingToolbar({
15397
15292
  e.preventDefault();
15398
15293
  onCommand(btn.cmd);
15399
15294
  },
15400
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15295
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15401
15296
  "svg",
15402
15297
  {
15403
15298
  width: "16",
@@ -15418,7 +15313,7 @@ function FloatingToolbar({
15418
15313
  );
15419
15314
  })
15420
15315
  ] }, gi)),
15421
- showEditLink ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15316
+ showEditLink ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15422
15317
  CustomToolbarButton,
15423
15318
  {
15424
15319
  type: "button",
@@ -15432,7 +15327,7 @@ function FloatingToolbar({
15432
15327
  e.preventDefault();
15433
15328
  e.stopPropagation();
15434
15329
  },
15435
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react18.Link, { className: "size-4 shrink-0", "aria-hidden": true })
15330
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.Link, { className: "size-4 shrink-0", "aria-hidden": true })
15436
15331
  }
15437
15332
  ) : null
15438
15333
  ] })
@@ -15449,7 +15344,7 @@ function StateToggle({
15449
15344
  states,
15450
15345
  onStateChange
15451
15346
  }) {
15452
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15347
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15453
15348
  ToggleGroup,
15454
15349
  {
15455
15350
  "data-ohw-state-toggle": "",
@@ -15463,7 +15358,7 @@ function StateToggle({
15463
15358
  left: rect.right - 8,
15464
15359
  transform: "translateX(-100%)"
15465
15360
  },
15466
- children: states.map((state) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ToggleGroupItem, { value: state, size: "sm", children: state }, state))
15361
+ children: states.map((state) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ToggleGroupItem, { value: state, size: "sm", children: state }, state))
15467
15362
  }
15468
15363
  );
15469
15364
  }
@@ -15479,9 +15374,9 @@ var OHW_LOADER_STYLE = {
15479
15374
  justifyContent: "center"
15480
15375
  };
15481
15376
  function OhwLoaderSpinner() {
15482
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("svg", { width: "28", height: "28", viewBox: "0 0 28 28", fill: "none", "aria-hidden": true, children: [
15483
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "14", cy: "14", r: "11", stroke: "#E7E5E4", strokeWidth: "3" }),
15484
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15377
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("svg", { width: "28", height: "28", viewBox: "0 0 28 28", fill: "none", "aria-hidden": true, children: [
15378
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("circle", { cx: "14", cy: "14", r: "11", stroke: "#E7E5E4", strokeWidth: "3" }),
15379
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15485
15380
  "circle",
15486
15381
  {
15487
15382
  cx: "14",
@@ -15491,7 +15386,7 @@ function OhwLoaderSpinner() {
15491
15386
  strokeWidth: "3",
15492
15387
  strokeDasharray: "17 52",
15493
15388
  strokeLinecap: "round",
15494
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
15389
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
15495
15390
  "animateTransform",
15496
15391
  {
15497
15392
  attributeName: "transform",
@@ -15587,6 +15482,70 @@ function OhhwellsBridge() {
15587
15482
  const hoveredImageHasTextOverlapRef = (0, import_react17.useRef)(false);
15588
15483
  const dragOverElRef = (0, import_react17.useRef)(null);
15589
15484
  const [mediaHover, setMediaHover] = (0, import_react17.useState)(null);
15485
+ const [selectedMedia, setSelectedMedia] = (0, import_react17.useState)(null);
15486
+ const selectedMediaElRef = (0, import_react17.useRef)(null);
15487
+ const clearMediaSelection = (0, import_react17.useCallback)(() => {
15488
+ const prev = selectedMediaElRef.current;
15489
+ selectedMediaElRef.current = null;
15490
+ setSelectedMedia(null);
15491
+ const sectionEl = prev?.closest("[data-ohw-section]") ?? null;
15492
+ if (sectionEl) {
15493
+ postToParentRef.current({
15494
+ type: "ow:section-selected",
15495
+ sectionId: sectionEl.dataset.ohwSection ?? null,
15496
+ sectionLabel: sectionEl.dataset.ohwSectionLabel ?? titleCaseSectionId(sectionEl.dataset.ohwSection ?? ""),
15497
+ key: null
15498
+ });
15499
+ }
15500
+ }, []);
15501
+ const clearMediaSelectionRef = (0, import_react17.useRef)(clearMediaSelection);
15502
+ clearMediaSelectionRef.current = clearMediaSelection;
15503
+ const selectMediaElement = (0, import_react17.useCallback)((el) => {
15504
+ const r2 = el.getBoundingClientRect();
15505
+ const video = el.dataset.ohwEditable === "video" ? el.querySelector("video") : null;
15506
+ selectedMediaElRef.current = el;
15507
+ setSelectedMedia({
15508
+ key: el.dataset.ohwKey ?? "",
15509
+ rect: { top: r2.top, left: r2.left, width: r2.width, height: r2.height },
15510
+ elementType: el.dataset.ohwEditable ?? "image",
15511
+ hasTextOverlap: false,
15512
+ isDragOver: false,
15513
+ ...video ? { videoAutoplay: video.autoplay, videoMuted: video.muted } : {}
15514
+ });
15515
+ const sectionEl = el.closest("[data-ohw-section]");
15516
+ aiSectionApiRef.current?.selectFromElement(el, { report: false });
15517
+ postToParentRef.current({
15518
+ type: "ow:section-selected",
15519
+ sectionId: sectionEl?.dataset.ohwSection ?? null,
15520
+ sectionLabel: sectionEl ? sectionEl.dataset.ohwSectionLabel ?? titleCaseSectionId(sectionEl.dataset.ohwSection ?? "") : null,
15521
+ key: el.dataset.ohwKey ?? null,
15522
+ // Display name for the pill — the raw key prettifies into fragments ("Img"); the
15523
+ // bridge knows what the node IS, so it names it.
15524
+ keyLabel: el.dataset.ohwEditable === "video" ? "Video" : "Image"
15525
+ });
15526
+ }, []);
15527
+ const selectMediaElementRef = (0, import_react17.useRef)(selectMediaElement);
15528
+ selectMediaElementRef.current = selectMediaElement;
15529
+ (0, import_react17.useEffect)(() => {
15530
+ if (!selectedMedia) return;
15531
+ const update = () => {
15532
+ const el = selectedMediaElRef.current;
15533
+ if (!el || !el.isConnected) {
15534
+ clearMediaSelection();
15535
+ return;
15536
+ }
15537
+ const r2 = el.getBoundingClientRect();
15538
+ setSelectedMedia(
15539
+ (prev) => prev ? { ...prev, rect: { top: r2.top, left: r2.left, width: r2.width, height: r2.height } } : prev
15540
+ );
15541
+ };
15542
+ window.addEventListener("scroll", update, true);
15543
+ window.addEventListener("resize", update);
15544
+ return () => {
15545
+ window.removeEventListener("scroll", update, true);
15546
+ window.removeEventListener("resize", update);
15547
+ };
15548
+ }, [selectedMedia !== null]);
15590
15549
  const [carouselHover, setCarouselHover] = (0, import_react17.useState)(null);
15591
15550
  const [uploadingRects, setUploadingRects] = (0, import_react17.useState)({});
15592
15551
  const hoveredGapRef = (0, import_react17.useRef)(null);
@@ -16983,6 +16942,25 @@ function OhhwellsBridge() {
16983
16942
  setLogoSizeDraft(null);
16984
16943
  deselectRef.current();
16985
16944
  }, []);
16945
+ (0, import_react17.useEffect)(() => {
16946
+ const session = floatingPanel && floatingPanel.kind === "logo-size" ? floatingPanel : null;
16947
+ if (!session || !logoSizeDraft) {
16948
+ postToParentRef.current({ type: "ow:logo-size-panel", open: false });
16949
+ return;
16950
+ }
16951
+ postToParentRef.current({
16952
+ type: "ow:logo-size-panel",
16953
+ open: true,
16954
+ title: session.title,
16955
+ context: session.context ?? "",
16956
+ placement: session.placement,
16957
+ viewport: editorViewport,
16958
+ mobileFollowing: logoSizeDraft.mobileFollowing,
16959
+ sizePx: editorViewport === "mobile" && !logoSizeDraft.mobileFollowing ? logoSizeDraft.mobilePx : logoSizeDraft.desktopPx,
16960
+ min: LOGO_SIZE_MIN,
16961
+ max: LOGO_SIZE_MAX
16962
+ });
16963
+ }, [floatingPanel, logoSizeDraft, editorViewport]);
16986
16964
  const persistLogoSizeDraft = (0, import_react17.useCallback)(
16987
16965
  (placement, draft) => {
16988
16966
  const desktopKey = LOGO_SIZE_DESKTOP_KEYS[placement];
@@ -17719,6 +17697,9 @@ function OhhwellsBridge() {
17719
17697
  )) {
17720
17698
  return;
17721
17699
  }
17700
+ if (selectedMediaElRef.current && !selectedMediaElRef.current.contains(target) && !target.closest("[data-ohw-media-overlay], [data-ohw-edit-chrome], [data-ohw-item-interaction]")) {
17701
+ clearMediaSelectionRef.current();
17702
+ }
17722
17703
  {
17723
17704
  const formEl = getFormElement(target);
17724
17705
  const onSuccessText = target.closest(`[${SUCCESS_TEXT_ATTR}]`);
@@ -17866,8 +17847,11 @@ function OhhwellsBridge() {
17866
17847
  if (isMediaEditable(editable) && !buttonOnMedia) {
17867
17848
  e.preventDefault();
17868
17849
  e.stopPropagation();
17869
- aiSectionApiRef.current?.selectFromElement(editable);
17870
- postToParentRef.current({ type: "ow:image-pick", key: editable.dataset.ohwKey ?? "", elementType: editable.dataset.ohwEditable ?? "image" });
17850
+ if (selectedMediaElRef.current === editable) {
17851
+ postToParentRef.current({ type: "ow:image-pick", key: editable.dataset.ohwKey ?? "", elementType: editable.dataset.ohwEditable ?? "image" });
17852
+ } else {
17853
+ selectMediaElementRef.current(editable);
17854
+ }
17871
17855
  return;
17872
17856
  }
17873
17857
  const hrefLookupTarget = buttonOnMedia ? clickedButton : editable;
@@ -19363,6 +19347,10 @@ function OhhwellsBridge() {
19363
19347
  const handleKeyDown = (e) => {
19364
19348
  if (e.key === "Escape" && document.querySelector("[data-ohw-section-picker]")) return;
19365
19349
  if (e.key === "Escape" && document.querySelector("[data-ohw-more-menu]")) return;
19350
+ if (e.key === "Escape" && selectedMediaElRef.current) {
19351
+ clearMediaSelectionRef.current();
19352
+ return;
19353
+ }
19366
19354
  if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "a" && activeElRef.current) {
19367
19355
  e.preventDefault();
19368
19356
  selectAllTextInEditable(activeElRef.current);
@@ -20147,7 +20135,7 @@ function OhhwellsBridge() {
20147
20135
  postToParent2({
20148
20136
  type: "ow:ready",
20149
20137
  version: "1",
20150
- bridgeVersion: "0.1.66",
20138
+ bridgeVersion: "0.1.67",
20151
20139
  path: pathname,
20152
20140
  nodes: collectEditableNodes(editContentRef.current),
20153
20141
  sections
@@ -20201,6 +20189,44 @@ function OhhwellsBridge() {
20201
20189
  if (el) setToolbarRect(getEditMeasureEl(el).getBoundingClientRect());
20202
20190
  refreshActiveCommandsRef.current();
20203
20191
  }, []);
20192
+ (0, import_react17.useEffect)(() => {
20193
+ const session = floatingPanel && floatingPanel.kind === "logo-size" ? floatingPanel : null;
20194
+ if (!session || !logoSizeDraft) return;
20195
+ const onPanelAction = (e) => {
20196
+ const type = e.data?.type;
20197
+ if (type === "ow:logo-size-close") {
20198
+ closeFloatingPanelAndDeselect();
20199
+ return;
20200
+ }
20201
+ if (type === "ow:logo-size-update-everywhere") {
20202
+ postToParentRef.current({ type: "ow:open-logo-settings", ...readLogoIdentityFromDom() });
20203
+ return;
20204
+ }
20205
+ if (type === "ow:logo-size-customize-mobile" || type === "ow:logo-size-reset-mobile") {
20206
+ const following = type === "ow:logo-size-reset-mobile";
20207
+ const next2 = {
20208
+ ...logoSizeDraft,
20209
+ mobileFollowing: following,
20210
+ mobilePx: logoSizeDraft.desktopPx
20211
+ };
20212
+ setLogoSizeDraft(next2);
20213
+ persistLogoSizeDraft(session.placement, next2);
20214
+ return;
20215
+ }
20216
+ if (type !== "ow:logo-size-set") return;
20217
+ const px = Number(e.data.px);
20218
+ if (!Number.isFinite(px)) return;
20219
+ const next = editorViewport === "mobile" ? { ...logoSizeDraft, mobilePx: px, mobileFollowing: false } : {
20220
+ ...logoSizeDraft,
20221
+ desktopPx: px,
20222
+ mobilePx: logoSizeDraft.mobileFollowing ? px : logoSizeDraft.mobilePx
20223
+ };
20224
+ setLogoSizeDraft(next);
20225
+ persistLogoSizeDraft(session.placement, next);
20226
+ };
20227
+ window.addEventListener("message", onPanelAction);
20228
+ return () => window.removeEventListener("message", onPanelAction);
20229
+ }, [floatingPanel, logoSizeDraft, editorViewport, persistLogoSizeDraft, closeFloatingPanelAndDeselect]);
20204
20230
  const handleStateChange = (0, import_react17.useCallback)((state) => {
20205
20231
  if (!activeStateElRef.current) return;
20206
20232
  const el = activeStateElRef.current;
@@ -20499,11 +20525,22 @@ function OhhwellsBridge() {
20499
20525
  const showEditLink = toolbarShowEditLink;
20500
20526
  const currentSections = sectionsByPath[pathname] ?? [];
20501
20527
  linkPopoverOpenRef.current = linkPopover !== null;
20528
+ const handleMediaSelect = (0, import_react17.useCallback)((key) => {
20529
+ const el = hoveredImageRef.current?.dataset.ohwKey === key ? hoveredImageRef.current : Array.from(document.querySelectorAll(MEDIA_SELECTOR)).find(
20530
+ (m) => (m.dataset.ohwKey ?? "") === key
20531
+ ) ?? null;
20532
+ if (!el) return;
20533
+ selectMediaElementRef.current(el);
20534
+ }, []);
20502
20535
  const handleMediaReplace = (0, import_react17.useCallback)(
20503
20536
  (key) => {
20504
- postToParent2({ type: "ow:image-pick", key, elementType: mediaHover?.elementType ?? "image" });
20537
+ postToParent2({
20538
+ type: "ow:image-pick",
20539
+ key,
20540
+ elementType: mediaHover?.elementType ?? selectedMedia?.elementType ?? "image"
20541
+ });
20505
20542
  },
20506
- [postToParent2, mediaHover?.elementType]
20543
+ [postToParent2, mediaHover?.elementType, selectedMedia?.elementType]
20507
20544
  );
20508
20545
  const handleEditCarousel = (0, import_react17.useCallback)(
20509
20546
  (key) => {
@@ -20541,19 +20578,19 @@ function OhhwellsBridge() {
20541
20578
  },
20542
20579
  [postToParent2]
20543
20580
  );
20544
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
20545
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { id: "ohw-loader", suppressHydrationWarning: true, style: { ...OHW_LOADER_STYLE, display: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(OhwLoaderSpinner, {}) }),
20546
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("script", { suppressHydrationWarning: true, dangerouslySetInnerHTML: { __html: OHW_LOADER_PREHYDRATE_SCRIPT } }),
20581
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
20582
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { id: "ohw-loader", suppressHydrationWarning: true, style: { ...OHW_LOADER_STYLE, display: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(OhwLoaderSpinner, {}) }),
20583
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("script", { suppressHydrationWarning: true, dangerouslySetInnerHTML: { __html: OHW_LOADER_PREHYDRATE_SCRIPT } }),
20547
20584
  bridgeRoot ? (0, import_react_dom4.createPortal)(
20548
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
20549
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { ref: attachVisibleViewport, "data-ohw-visible-viewport": "", "aria-hidden": true }),
20550
- isEditMode && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AiSectionOverlay, { postToParent: postToParent2, apiRef: aiSectionApiRef }),
20551
- isSectionDragging && sectionDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20585
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
20586
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { ref: attachVisibleViewport, "data-ohw-visible-viewport": "", "aria-hidden": true }),
20587
+ isEditMode && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(AiSectionOverlay, { postToParent: postToParent2, apiRef: aiSectionApiRef }),
20588
+ isSectionDragging && sectionDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20552
20589
  "div",
20553
20590
  {
20554
20591
  className: "pointer-events-none fixed z-2147483646",
20555
20592
  style: { left: slot.left, top: slot.y, width: slot.width, height: 3, transform: "translateY(-50%)" },
20556
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20593
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20557
20594
  DropIndicator,
20558
20595
  {
20559
20596
  direction: "horizontal",
@@ -20564,7 +20601,7 @@ function OhhwellsBridge() {
20564
20601
  },
20565
20602
  `section-drop-${slot.insertIndex}-${i}`
20566
20603
  )),
20567
- Object.entries(uploadingRects).map(([key, { rect, fadingOut }]) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20604
+ Object.entries(uploadingRects).map(([key, { rect, fadingOut }]) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20568
20605
  MediaOverlay,
20569
20606
  {
20570
20607
  hover: { key, rect, elementType: "image", isDragOver: false, hasTextOverlap: false },
@@ -20575,20 +20612,33 @@ function OhhwellsBridge() {
20575
20612
  },
20576
20613
  `uploading-${key}`
20577
20614
  )),
20578
- mediaHover && !(mediaHover.key in uploadingRects) && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20615
+ mediaHover && !(mediaHover.key in uploadingRects) && mediaHover.key !== selectedMedia?.key && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20579
20616
  MediaOverlay,
20580
20617
  {
20581
20618
  hover: mediaHover,
20582
20619
  isUploading: false,
20583
20620
  onReplace: handleMediaReplace,
20621
+ onSelect: handleMediaSelect,
20622
+ onVideoSettingsChange: handleVideoSettingsChange
20623
+ }
20624
+ ),
20625
+ selectedMedia && !(selectedMedia.key in uploadingRects) && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20626
+ MediaOverlay,
20627
+ {
20628
+ hover: selectedMedia,
20629
+ selected: true,
20630
+ hovered: mediaHover?.key === selectedMedia.key,
20631
+ isUploading: false,
20632
+ onReplace: handleMediaReplace,
20633
+ onSelect: handleMediaSelect,
20584
20634
  onVideoSettingsChange: handleVideoSettingsChange
20585
20635
  }
20586
20636
  ),
20587
- carouselHover && !linkPopover && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CarouselOverlay, { hover: carouselHover, onEdit: handleEditCarousel }),
20588
- siblingHintRect && !linkPopover && !isItemDragging && siblingHintRects.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ItemInteractionLayer, { rect: siblingHintRect, state: "sibling-hint" }),
20589
- siblingHintRects.length > 0 && !linkPopover && !isItemDragging && siblingHintRects.map((rect, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ItemInteractionLayer, { rect, state: "sibling-hint" }, `sibling-hint-${i}`)),
20590
- isItemDragging && draggedItemRect && selectedElRef.current !== footerDragRef.current?.draggedEl && selectedElRef.current !== navDragRef.current?.draggedEl && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ItemInteractionLayer, { rect: draggedItemRect, state: "dragging" }),
20591
- isItemDragging && footerDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20637
+ carouselHover && !linkPopover && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CarouselOverlay, { hover: carouselHover, onEdit: handleEditCarousel }),
20638
+ siblingHintRect && !linkPopover && !isItemDragging && siblingHintRects.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: siblingHintRect, state: "sibling-hint" }),
20639
+ siblingHintRects.length > 0 && !linkPopover && !isItemDragging && siblingHintRects.map((rect, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect, state: "sibling-hint" }, `sibling-hint-${i}`)),
20640
+ isItemDragging && draggedItemRect && selectedElRef.current !== footerDragRef.current?.draggedEl && selectedElRef.current !== navDragRef.current?.draggedEl && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: draggedItemRect, state: "dragging" }),
20641
+ isItemDragging && footerDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20592
20642
  "div",
20593
20643
  {
20594
20644
  className: "pointer-events-none fixed z-2147483646",
@@ -20598,7 +20648,7 @@ function OhhwellsBridge() {
20598
20648
  width: slot.width,
20599
20649
  height: slot.height
20600
20650
  },
20601
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20651
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20602
20652
  DropIndicator,
20603
20653
  {
20604
20654
  direction: slot.direction,
@@ -20609,7 +20659,7 @@ function OhhwellsBridge() {
20609
20659
  },
20610
20660
  `footer-drop-${slot.direction}-${slot.columnIndex}-${slot.insertIndex}-${i}`
20611
20661
  )),
20612
- isItemDragging && navDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20662
+ isItemDragging && navDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20613
20663
  "div",
20614
20664
  {
20615
20665
  className: "pointer-events-none fixed z-2147483646",
@@ -20619,7 +20669,7 @@ function OhhwellsBridge() {
20619
20669
  width: slot.width,
20620
20670
  height: slot.height
20621
20671
  },
20622
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20672
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20623
20673
  DropIndicator,
20624
20674
  {
20625
20675
  direction: slot.direction,
@@ -20630,10 +20680,10 @@ function OhhwellsBridge() {
20630
20680
  },
20631
20681
  `nav-drop-${slot.direction}-${slot.parentId ?? "root"}-${slot.insertIndex}-${i}`
20632
20682
  )),
20633
- hoveredNavContainerRect && (toolbarVariant !== "select-frame" || isFooterFrameSelection) && !linkPopover && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ItemInteractionLayer, { rect: hoveredNavContainerRect, state: "hover" }),
20634
- hoveredItemRect && !linkPopover && !hoveredNavContainerRect && !isItemDragging && hoveredItemElRef.current !== selectedElRef.current && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ItemInteractionLayer, { rect: hoveredItemRect, state: "hover" }),
20635
- hoveredTextRect && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ItemInteractionLayer, { rect: hoveredTextRect, state: "hover" }),
20636
- formPickRect && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20683
+ hoveredNavContainerRect && (toolbarVariant !== "select-frame" || isFooterFrameSelection) && !linkPopover && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: hoveredNavContainerRect, state: "hover" }),
20684
+ hoveredItemRect && !linkPopover && !hoveredNavContainerRect && !isItemDragging && hoveredItemElRef.current !== selectedElRef.current && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: hoveredItemRect, state: "hover" }),
20685
+ hoveredTextRect && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: hoveredTextRect, state: "hover" }),
20686
+ formPickRect && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20637
20687
  ItemInteractionLayer,
20638
20688
  {
20639
20689
  rect: formPickRect,
@@ -20641,13 +20691,13 @@ function OhhwellsBridge() {
20641
20691
  itemDragSurface: false,
20642
20692
  toolbarAlign: "left",
20643
20693
  chromeGap: 24,
20644
- toolbar: fieldPickRect ? void 0 : /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
20694
+ toolbar: fieldPickRect ? void 0 : /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
20645
20695
  "div",
20646
20696
  {
20647
20697
  "data-ohw-form-toolbar": "",
20648
20698
  className: "pointer-events-auto flex items-center gap-0.5 whitespace-nowrap rounded-lg border border-border bg-background p-1 shadow-md",
20649
20699
  children: [
20650
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20700
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20651
20701
  "button",
20652
20702
  {
20653
20703
  type: "button",
@@ -20655,11 +20705,11 @@ function OhhwellsBridge() {
20655
20705
  className: "flex h-7 w-7 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted/80",
20656
20706
  onClick: () => setFieldTypePickerOpen((open) => !open),
20657
20707
  "data-ohw-add-field": "",
20658
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react18.Plus, { size: 15, "aria-hidden": true })
20708
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.Plus, { size: 15, "aria-hidden": true })
20659
20709
  }
20660
20710
  ),
20661
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "mx-0.5 h-5 w-px bg-border" }),
20662
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
20711
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "mx-0.5 h-5 w-px bg-border" }),
20712
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
20663
20713
  "button",
20664
20714
  {
20665
20715
  type: "button",
@@ -20674,11 +20724,11 @@ function OhhwellsBridge() {
20674
20724
  });
20675
20725
  },
20676
20726
  children: [
20677
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react18.Settings, { size: 14, "aria-hidden": true }),
20727
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.Settings, { size: 14, "aria-hidden": true }),
20678
20728
  "Form settings",
20679
20729
  formPickCount ? (
20680
20730
  // Counter pill, per the design — not a text suffix.
20681
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20731
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20682
20732
  "span",
20683
20733
  {
20684
20734
  "data-ohw-form-count": "",
@@ -20690,8 +20740,8 @@ function OhhwellsBridge() {
20690
20740
  ]
20691
20741
  }
20692
20742
  ),
20693
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "mx-0.5 h-5 w-px bg-border" }),
20694
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "flex items-center rounded-md bg-muted/70 p-0.5", children: ["default", "success"].map((state) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20743
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "mx-0.5 h-5 w-px bg-border" }),
20744
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex items-center rounded-md bg-muted/70 p-0.5", children: ["default", "success"].map((state) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20695
20745
  "button",
20696
20746
  {
20697
20747
  type: "button",
@@ -20721,7 +20771,7 @@ function OhhwellsBridge() {
20721
20771
  )
20722
20772
  }
20723
20773
  ),
20724
- formHoverRect && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20774
+ formHoverRect && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20725
20775
  ItemInteractionLayer,
20726
20776
  {
20727
20777
  rect: formHoverRect,
@@ -20729,7 +20779,7 @@ function OhhwellsBridge() {
20729
20779
  chromeGap: formHoverElRef.current && getFieldWrapper(formHoverElRef.current) ? 8 : 24
20730
20780
  }
20731
20781
  ),
20732
- fieldPickRect && fieldPickState && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20782
+ fieldPickRect && fieldPickState && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20733
20783
  ItemInteractionLayer,
20734
20784
  {
20735
20785
  rect: fieldPickRect,
@@ -20741,7 +20791,7 @@ function OhhwellsBridge() {
20741
20791
  dragHandleLabel: "Reorder field",
20742
20792
  onDragHandleDragStart: handleFieldDragStart,
20743
20793
  onDragHandleDragEnd: handleFieldDragEnd,
20744
- toolbar: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20794
+ toolbar: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20745
20795
  FormFieldToolbar,
20746
20796
  {
20747
20797
  type: fieldPickState.type,
@@ -20754,12 +20804,12 @@ function OhhwellsBridge() {
20754
20804
  )
20755
20805
  }
20756
20806
  ),
20757
- fieldDragging ? fieldDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20807
+ fieldDragging ? fieldDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20758
20808
  "div",
20759
20809
  {
20760
20810
  className: "pointer-events-none fixed z-[2147483644]",
20761
20811
  style: { top: slot.top, left: slot.left, width: slot.width },
20762
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20812
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20763
20813
  DropIndicator,
20764
20814
  {
20765
20815
  direction: "horizontal",
@@ -20770,16 +20820,16 @@ function OhhwellsBridge() {
20770
20820
  },
20771
20821
  `field-drop-${i}`
20772
20822
  )) : null,
20773
- fieldTypePickerOpen && formPickRect && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20823
+ fieldTypePickerOpen && formPickRect && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20774
20824
  "div",
20775
20825
  {
20776
20826
  className: "pointer-events-none fixed z-[2147483645]",
20777
20827
  style: { top: formPickRect.top + 16, left: formPickRect.left + 24 },
20778
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(FieldTypePicker, { onPick: handleAddField })
20828
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FieldTypePicker, { onPick: handleAddField })
20779
20829
  }
20780
20830
  ),
20781
- toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isNavbarLinksContainer2(selectedElRef.current) && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(NavbarContainerChrome, { rect: toolbarRect, onAdd: handleAddTopLevelNavItem }),
20782
- toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isFooterLinksContainer(selectedElRef.current) && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20831
+ toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isNavbarLinksContainer2(selectedElRef.current) && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(NavbarContainerChrome, { rect: toolbarRect, onAdd: handleAddTopLevelNavItem }),
20832
+ toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isFooterLinksContainer(selectedElRef.current) && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20783
20833
  FooterContainerChrome,
20784
20834
  {
20785
20835
  rect: toolbarRect,
@@ -20787,7 +20837,7 @@ function OhhwellsBridge() {
20787
20837
  addDisabled: !canAddFooterColumn()
20788
20838
  }
20789
20839
  ),
20790
- toolbarRect && !linkPopover && (toolbarVariant === "link-action" || toolbarVariant === "select-frame" || toolbarVariant === "logo") && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20840
+ toolbarRect && !linkPopover && (toolbarVariant === "link-action" || toolbarVariant === "select-frame" || toolbarVariant === "logo") && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20791
20841
  ItemInteractionLayer,
20792
20842
  {
20793
20843
  rect: isItemDragging && draggedItemRect && (footerDragRef.current?.wasSelected || navDragRef.current?.wasSelected) ? draggedItemRect : toolbarRect,
@@ -20802,7 +20852,7 @@ function OhhwellsBridge() {
20802
20852
  onItemPointerDown: toolbarVariant === "logo" ? void 0 : handleItemChromePointerDown,
20803
20853
  onItemClick: toolbarVariant === "logo" ? void 0 : handleItemChromeClick,
20804
20854
  itemDragSurface: toolbarVariant !== "logo" && !isFooterFrameSelection,
20805
- toolbar: toolbarVariant === "link-action" && !isItemDragging || toolbarVariant === "select-frame" && (isFooterFrameSelection || selectedIsSocialsRow) && !isItemDragging ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20855
+ toolbar: toolbarVariant === "link-action" && !isItemDragging || toolbarVariant === "select-frame" && (isFooterFrameSelection || selectedIsSocialsRow) && !isItemDragging ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20806
20856
  ItemActionToolbar,
20807
20857
  {
20808
20858
  onEditLink: openLinkPopoverForSelected,
@@ -20838,8 +20888,8 @@ function OhhwellsBridge() {
20838
20888
  ) : void 0
20839
20889
  }
20840
20890
  ),
20841
- toolbarRect && toolbarVariant === "rich-text" && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
20842
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20891
+ toolbarRect && toolbarVariant === "rich-text" && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
20892
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20843
20893
  EditGlowChrome,
20844
20894
  {
20845
20895
  rect: toolbarRect,
@@ -20849,7 +20899,7 @@ function OhhwellsBridge() {
20849
20899
  hideHandle: isItemDragging
20850
20900
  }
20851
20901
  ),
20852
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20902
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20853
20903
  FloatingToolbar,
20854
20904
  {
20855
20905
  rect: toolbarRect,
@@ -20862,7 +20912,7 @@ function OhhwellsBridge() {
20862
20912
  }
20863
20913
  )
20864
20914
  ] }),
20865
- maxBadge && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
20915
+ maxBadge && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
20866
20916
  "div",
20867
20917
  {
20868
20918
  "data-ohw-max-badge": "",
@@ -20888,7 +20938,7 @@ function OhhwellsBridge() {
20888
20938
  ]
20889
20939
  }
20890
20940
  ),
20891
- toggleState && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20941
+ toggleState && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20892
20942
  StateToggle,
20893
20943
  {
20894
20944
  rect: toggleState.rect,
@@ -20897,15 +20947,15 @@ function OhhwellsBridge() {
20897
20947
  onStateChange: handleStateChange
20898
20948
  }
20899
20949
  ),
20900
- sectionGap && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
20950
+ sectionGap && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
20901
20951
  "div",
20902
20952
  {
20903
20953
  "data-ohw-section-insert-line": "",
20904
20954
  className: "fixed left-0 w-full z-2147483646 flex items-center pointer-events-none",
20905
20955
  style: { top: sectionGap.y, transform: "translateY(-50%)" },
20906
20956
  children: [
20907
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "flex-1 bg-primary", style: { height: 3 } }),
20908
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20957
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex-1 bg-primary", style: { height: 3 } }),
20958
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20909
20959
  Badge,
20910
20960
  {
20911
20961
  className: "px-8 py-1 bg-primary hover:bg-primary text-primary-foreground text-xs font-medium shrink-0 rounded-full cursor-pointer pointer-events-auto",
@@ -20922,11 +20972,11 @@ function OhhwellsBridge() {
20922
20972
  children: "Add Section"
20923
20973
  }
20924
20974
  ),
20925
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "flex-1 bg-primary", style: { height: 3 } })
20975
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex-1 bg-primary", style: { height: 3 } })
20926
20976
  ]
20927
20977
  }
20928
20978
  ),
20929
- linkPopover && dialogPortalContainer ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20979
+ linkPopover && dialogPortalContainer ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20930
20980
  LinkPopover,
20931
20981
  {
20932
20982
  panelRef: linkPopoverPanelRef,
@@ -20943,7 +20993,7 @@ function OhhwellsBridge() {
20943
20993
  },
20944
20994
  linkPopover.key
20945
20995
  ) : null,
20946
- floatingPanel && floatingPanel.kind === "socials-display" ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20996
+ floatingPanel && floatingPanel.kind === "socials-display" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20947
20997
  FloatingPanel,
20948
20998
  {
20949
20999
  open: true,
@@ -20953,7 +21003,7 @@ function OhhwellsBridge() {
20953
21003
  onPositionChange: setFloatingPanelPos,
20954
21004
  parentScroll: parentScrollSnap ?? parentScrollRef.current,
20955
21005
  onClose: closeFloatingPanelOnly,
20956
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
21006
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
20957
21007
  SocialsDisplayPanel,
20958
21008
  {
20959
21009
  display: socialsDisplayFor(floatingPanel.row, editContentRef.current),
@@ -20964,57 +21014,6 @@ function OhhwellsBridge() {
20964
21014
  }
20965
21015
  )
20966
21016
  }
20967
- ) : null,
20968
- floatingPanel && floatingPanel.kind === "logo-size" && logoSizeDraft ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20969
- FloatingPanel,
20970
- {
20971
- open: true,
20972
- title: floatingPanel.title,
20973
- context: floatingPanel.context,
20974
- position: floatingPanelPos,
20975
- onPositionChange: setFloatingPanelPos,
20976
- parentScroll: parentScrollSnap ?? parentScrollRef.current,
20977
- onClose: closeFloatingPanelAndDeselect,
20978
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
20979
- LogoSizePanel,
20980
- {
20981
- viewport: editorViewport,
20982
- sizePx: editorViewport === "mobile" && !logoSizeDraft.mobileFollowing ? logoSizeDraft.mobilePx : logoSizeDraft.desktopPx,
20983
- mobileFollowing: logoSizeDraft.mobileFollowing,
20984
- onSizeChange: (px) => {
20985
- const next = editorViewport === "mobile" ? { ...logoSizeDraft, mobilePx: px, mobileFollowing: false } : {
20986
- ...logoSizeDraft,
20987
- desktopPx: px,
20988
- mobilePx: logoSizeDraft.mobileFollowing ? px : logoSizeDraft.mobilePx
20989
- };
20990
- setLogoSizeDraft(next);
20991
- persistLogoSizeDraft(floatingPanel.placement, next);
20992
- },
20993
- onCustomizeMobile: () => {
20994
- const next = {
20995
- ...logoSizeDraft,
20996
- mobileFollowing: false,
20997
- mobilePx: logoSizeDraft.desktopPx
20998
- };
20999
- setLogoSizeDraft(next);
21000
- persistLogoSizeDraft(floatingPanel.placement, next);
21001
- },
21002
- onResetMobile: () => {
21003
- const next = {
21004
- ...logoSizeDraft,
21005
- mobileFollowing: true,
21006
- mobilePx: logoSizeDraft.desktopPx
21007
- };
21008
- setLogoSizeDraft(next);
21009
- persistLogoSizeDraft(floatingPanel.placement, next);
21010
- },
21011
- onUpdateEverywhere: () => {
21012
- const identity = readLogoIdentityFromDom();
21013
- postToParent2({ type: "ow:open-logo-settings", ...identity });
21014
- }
21015
- }
21016
- )
21017
- }
21018
21017
  ) : null
21019
21018
  ] }),
21020
21019
  bridgeRoot
@@ -21024,10 +21023,10 @@ function OhhwellsBridge() {
21024
21023
 
21025
21024
  // src/ui/EmptySection.tsx
21026
21025
  var import_link = __toESM(require("next/link"), 1);
21027
- var import_jsx_runtime35 = require("react/jsx-runtime");
21026
+ var import_jsx_runtime34 = require("react/jsx-runtime");
21028
21027
  function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey }) {
21029
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
21030
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
21028
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
21029
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
21031
21030
  "p",
21032
21031
  {
21033
21032
  style: {
@@ -21039,10 +21038,10 @@ function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey
21039
21038
  color: "var(--brand-accent)",
21040
21039
  marginBottom: "1.5rem"
21041
21040
  },
21042
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_link.default, { href: homeHref, style: { color: "inherit" }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { ...eyebrowKey ? { "data-ohw-editable": "text", "data-ohw-key": eyebrowKey } : {}, children: "Home" }) })
21041
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_link.default, { href: homeHref, style: { color: "inherit" }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { ...eyebrowKey ? { "data-ohw-editable": "text", "data-ohw-key": eyebrowKey } : {}, children: "Home" }) })
21043
21042
  }
21044
21043
  ),
21045
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
21044
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
21046
21045
  "h1",
21047
21046
  {
21048
21047
  style: {
@@ -21057,7 +21056,7 @@ function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey
21057
21056
  children: title
21058
21057
  }
21059
21058
  ),
21060
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
21059
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
21061
21060
  "p",
21062
21061
  {
21063
21062
  style: {