@ohhwells/bridge 0.1.151 → 0.1.152
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 +689 -546
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +98 -2
- package/dist/index.d.ts +98 -2
- package/dist/index.js +674 -546
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6695,8 +6695,9 @@ function upsertMeta(selector, attr, token, value) {
|
|
|
6695
6695
|
}
|
|
6696
6696
|
if (el.getAttribute("content") !== value) el.setAttribute("content", value);
|
|
6697
6697
|
}
|
|
6698
|
-
function
|
|
6699
|
-
document.head.querySelector(selector)
|
|
6698
|
+
function clearMeta(selector) {
|
|
6699
|
+
const el = document.head.querySelector(selector);
|
|
6700
|
+
if (el && el.getAttribute("content") !== "") el.setAttribute("content", "");
|
|
6700
6701
|
}
|
|
6701
6702
|
function escapeXml(value) {
|
|
6702
6703
|
return value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
@@ -6726,8 +6727,8 @@ function applyOgImage(url) {
|
|
|
6726
6727
|
upsertMeta('meta[name="twitter:card"]', "name", "twitter:card", "summary_large_image");
|
|
6727
6728
|
return;
|
|
6728
6729
|
}
|
|
6729
|
-
|
|
6730
|
-
|
|
6730
|
+
clearMeta('meta[property="og:image"]');
|
|
6731
|
+
clearMeta('meta[name="twitter:image"]');
|
|
6731
6732
|
}
|
|
6732
6733
|
function applyBrandChrome(content) {
|
|
6733
6734
|
const name = content[BRAND_NAME_KEY];
|
|
@@ -11569,6 +11570,89 @@ function useLinkHrefGuardian(...deps) {
|
|
|
11569
11570
|
}, deps);
|
|
11570
11571
|
}
|
|
11571
11572
|
|
|
11573
|
+
// src/lib/sticky-search-params.ts
|
|
11574
|
+
var STICKY_EXACT = /* @__PURE__ */ new Set([
|
|
11575
|
+
// Site identity. Required in local dev and in the canvas editor's iframe, where there is no
|
|
11576
|
+
// router to inject __OHW_SUBDOMAIN__ or set the ohw-subdomain cookie, so the query string is
|
|
11577
|
+
// the only thing that says which site this is.
|
|
11578
|
+
"subdomain",
|
|
11579
|
+
// Ad-click / attribution ids. Dropping these on the first internal click is what breaks
|
|
11580
|
+
// campaign attribution for a site whose landing page is not the page that converts.
|
|
11581
|
+
"ref",
|
|
11582
|
+
"gclid",
|
|
11583
|
+
"fbclid",
|
|
11584
|
+
"msclkid",
|
|
11585
|
+
"ttclid",
|
|
11586
|
+
"twclid"
|
|
11587
|
+
]);
|
|
11588
|
+
var STICKY_PREFIXES = ["utm_"];
|
|
11589
|
+
function isStickySearchParam(name) {
|
|
11590
|
+
const key = name.toLowerCase();
|
|
11591
|
+
return STICKY_EXACT.has(key) || STICKY_PREFIXES.some((p) => key.startsWith(p));
|
|
11592
|
+
}
|
|
11593
|
+
function applyStickySearchParams(target, currentSearch) {
|
|
11594
|
+
const current = new URLSearchParams(currentSearch);
|
|
11595
|
+
let changed = false;
|
|
11596
|
+
for (const [name, value] of current) {
|
|
11597
|
+
if (!isStickySearchParam(name)) continue;
|
|
11598
|
+
if (target.searchParams.has(name)) continue;
|
|
11599
|
+
target.searchParams.set(name, value);
|
|
11600
|
+
changed = true;
|
|
11601
|
+
}
|
|
11602
|
+
return changed;
|
|
11603
|
+
}
|
|
11604
|
+
function isPlainLeftClick(e) {
|
|
11605
|
+
return e.button === 0 && !e.metaKey && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.defaultPrevented;
|
|
11606
|
+
}
|
|
11607
|
+
function resolveStickyNavigation(anchor, currentSearch, origin) {
|
|
11608
|
+
if (anchor.target && anchor.target !== "_self") return null;
|
|
11609
|
+
if (anchor.hasAttribute("download")) return null;
|
|
11610
|
+
const href = anchor.getAttribute("href");
|
|
11611
|
+
if (!href) return null;
|
|
11612
|
+
if (href.startsWith("#")) return null;
|
|
11613
|
+
let url;
|
|
11614
|
+
try {
|
|
11615
|
+
url = new URL(href, origin);
|
|
11616
|
+
} catch {
|
|
11617
|
+
return null;
|
|
11618
|
+
}
|
|
11619
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") return null;
|
|
11620
|
+
if (url.origin !== origin) return null;
|
|
11621
|
+
if (!applyStickySearchParams(url, currentSearch)) return null;
|
|
11622
|
+
return url.pathname + url.search + url.hash;
|
|
11623
|
+
}
|
|
11624
|
+
|
|
11625
|
+
// src/lib/content-mount-observer.ts
|
|
11626
|
+
var CONTENT_SELECTOR = "[data-ohw-key],[data-ohw-section],[data-ohw-editable]";
|
|
11627
|
+
function hasMountedContentNodes(records) {
|
|
11628
|
+
for (const record of records) {
|
|
11629
|
+
for (const node of record.addedNodes) {
|
|
11630
|
+
if (node.nodeType !== 1) continue;
|
|
11631
|
+
const el = node;
|
|
11632
|
+
if (el.matches(CONTENT_SELECTOR) || el.querySelector(CONTENT_SELECTOR)) return true;
|
|
11633
|
+
}
|
|
11634
|
+
}
|
|
11635
|
+
return false;
|
|
11636
|
+
}
|
|
11637
|
+
|
|
11638
|
+
// src/lib/content-fetch-policy.ts
|
|
11639
|
+
var overriddenPathsBySubdomain = /* @__PURE__ */ new Map();
|
|
11640
|
+
function recordOverriddenPaths(subdomain, raw) {
|
|
11641
|
+
overriddenPathsBySubdomain.set(
|
|
11642
|
+
subdomain,
|
|
11643
|
+
Array.isArray(raw) ? raw.filter((p) => typeof p === "string") : void 0
|
|
11644
|
+
);
|
|
11645
|
+
}
|
|
11646
|
+
function shouldFetchContentForPath(subdomain, path) {
|
|
11647
|
+
if (!overriddenPathsBySubdomain.has(subdomain)) return true;
|
|
11648
|
+
const overridden = overriddenPathsBySubdomain.get(subdomain);
|
|
11649
|
+
if (!overridden) return true;
|
|
11650
|
+
return overridden.includes(path);
|
|
11651
|
+
}
|
|
11652
|
+
function resetOverriddenPathsCache() {
|
|
11653
|
+
overriddenPathsBySubdomain.clear();
|
|
11654
|
+
}
|
|
11655
|
+
|
|
11572
11656
|
// src/useSavedLinkNavigation.ts
|
|
11573
11657
|
import { useEffect as useEffect2 } from "react";
|
|
11574
11658
|
import { useRouter } from "next/navigation";
|
|
@@ -11593,8 +11677,10 @@ function useSavedLinkNavigation(isEditMode) {
|
|
|
11593
11677
|
if (!href) return;
|
|
11594
11678
|
e.preventDefault();
|
|
11595
11679
|
e.stopPropagation();
|
|
11596
|
-
if (isRouterHref(href))
|
|
11597
|
-
|
|
11680
|
+
if (isRouterHref(href)) {
|
|
11681
|
+
const sticky = resolveStickyNavigation(anchor, window.location.search, window.location.origin);
|
|
11682
|
+
router.push(sticky ?? href);
|
|
11683
|
+
} else window.location.assign(href);
|
|
11598
11684
|
};
|
|
11599
11685
|
document.addEventListener("click", onClick, true);
|
|
11600
11686
|
return () => document.removeEventListener("click", onClick, true);
|
|
@@ -12412,6 +12498,63 @@ function SchedulingWidget({ notifyOnConnect = false, initialScheduleId, insertAf
|
|
|
12412
12498
|
);
|
|
12413
12499
|
}
|
|
12414
12500
|
|
|
12501
|
+
// src/ui/OhwLoaderSurface.tsx
|
|
12502
|
+
import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
12503
|
+
var OHW_LOADER_STYLE = {
|
|
12504
|
+
position: "fixed",
|
|
12505
|
+
inset: 0,
|
|
12506
|
+
background: "var(--brand-background, #fff)",
|
|
12507
|
+
zIndex: 2147483646,
|
|
12508
|
+
display: "flex",
|
|
12509
|
+
alignItems: "center",
|
|
12510
|
+
justifyContent: "center"
|
|
12511
|
+
};
|
|
12512
|
+
var OHW_LOADER_SPIN_KEYFRAMES = "@keyframes ohw-loader-spin{to{transform:rotate(360deg)}}";
|
|
12513
|
+
function OhwLoaderSpinner() {
|
|
12514
|
+
return /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
12515
|
+
/* @__PURE__ */ jsx6("style", { suppressHydrationWarning: true, dangerouslySetInnerHTML: { __html: OHW_LOADER_SPIN_KEYFRAMES } }),
|
|
12516
|
+
/* @__PURE__ */ jsxs4(
|
|
12517
|
+
"svg",
|
|
12518
|
+
{
|
|
12519
|
+
width: "28",
|
|
12520
|
+
height: "28",
|
|
12521
|
+
viewBox: "0 0 28 28",
|
|
12522
|
+
fill: "none",
|
|
12523
|
+
"aria-hidden": true,
|
|
12524
|
+
style: { animation: "ohw-loader-spin 0.7s linear infinite", transformOrigin: "center" },
|
|
12525
|
+
children: [
|
|
12526
|
+
/* @__PURE__ */ jsx6("circle", { cx: "14", cy: "14", r: "11", style: { stroke: "var(--brand-border, #E7E5E4)" }, strokeWidth: "3" }),
|
|
12527
|
+
/* @__PURE__ */ jsx6(
|
|
12528
|
+
"circle",
|
|
12529
|
+
{
|
|
12530
|
+
cx: "14",
|
|
12531
|
+
cy: "14",
|
|
12532
|
+
r: "11",
|
|
12533
|
+
style: { stroke: "var(--brand-primary, #1C1917)" },
|
|
12534
|
+
strokeWidth: "3",
|
|
12535
|
+
strokeDasharray: "17 52",
|
|
12536
|
+
strokeLinecap: "round"
|
|
12537
|
+
}
|
|
12538
|
+
)
|
|
12539
|
+
]
|
|
12540
|
+
}
|
|
12541
|
+
)
|
|
12542
|
+
] });
|
|
12543
|
+
}
|
|
12544
|
+
var OHW_LOADER_PREHYDRATE_SCRIPT = `(function(){try{var fromGlobal=typeof window!=="undefined"&&window.__OHW_SUBDOMAIN__?String(window.__OHW_SUBDOMAIN__):"";var p=location.hostname.split(".");var fromHost=location.hostname.endsWith(".ohhwells.site")&&p[0]&&p[0]!=="www"?p[0]:"";var fromQuery=new URLSearchParams(location.search).get("subdomain")||"";var fromCookie=(document.cookie.match(/(?:^|; )ohw-subdomain=([^;]*)/)||[])[1];fromCookie=fromCookie?decodeURIComponent(fromCookie):"";if(!fromGlobal&&!fromHost&&!fromQuery&&!fromCookie)return;var e=document.getElementById("ohw-loader");if(e)e.style.display="flex"}catch(e){}})();`;
|
|
12545
|
+
function OhwLoaderSurface() {
|
|
12546
|
+
return /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
12547
|
+
/* @__PURE__ */ jsx6("div", { id: "ohw-loader", suppressHydrationWarning: true, style: { ...OHW_LOADER_STYLE, display: "none" }, children: /* @__PURE__ */ jsx6(OhwLoaderSpinner, {}) }),
|
|
12548
|
+
/* @__PURE__ */ jsx6(
|
|
12549
|
+
"script",
|
|
12550
|
+
{
|
|
12551
|
+
suppressHydrationWarning: true,
|
|
12552
|
+
dangerouslySetInnerHTML: { __html: OHW_LOADER_PREHYDRATE_SCRIPT }
|
|
12553
|
+
}
|
|
12554
|
+
)
|
|
12555
|
+
] });
|
|
12556
|
+
}
|
|
12557
|
+
|
|
12415
12558
|
// src/ui/toggle-group.tsx
|
|
12416
12559
|
import * as React3 from "react";
|
|
12417
12560
|
|
|
@@ -15733,7 +15876,7 @@ var cva = (base, config) => (props) => {
|
|
|
15733
15876
|
|
|
15734
15877
|
// src/ui/toggle.tsx
|
|
15735
15878
|
import { Toggle as TogglePrimitive } from "radix-ui";
|
|
15736
|
-
import { jsx as
|
|
15879
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
15737
15880
|
var toggleVariants = cva(
|
|
15738
15881
|
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-bridge-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
15739
15882
|
{
|
|
@@ -15760,7 +15903,7 @@ function Toggle({
|
|
|
15760
15903
|
size,
|
|
15761
15904
|
...props
|
|
15762
15905
|
}) {
|
|
15763
|
-
return /* @__PURE__ */
|
|
15906
|
+
return /* @__PURE__ */ jsx7(
|
|
15764
15907
|
TogglePrimitive.Root,
|
|
15765
15908
|
{
|
|
15766
15909
|
"data-slot": "toggle",
|
|
@@ -15771,7 +15914,7 @@ function Toggle({
|
|
|
15771
15914
|
}
|
|
15772
15915
|
|
|
15773
15916
|
// src/ui/toggle-group.tsx
|
|
15774
|
-
import { jsx as
|
|
15917
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
15775
15918
|
var ToggleGroupContext = React3.createContext({
|
|
15776
15919
|
value: "",
|
|
15777
15920
|
onValueChange: () => {
|
|
@@ -15784,13 +15927,13 @@ function ToggleGroup({
|
|
|
15784
15927
|
children,
|
|
15785
15928
|
...props
|
|
15786
15929
|
}) {
|
|
15787
|
-
return /* @__PURE__ */
|
|
15930
|
+
return /* @__PURE__ */ jsx8(
|
|
15788
15931
|
"div",
|
|
15789
15932
|
{
|
|
15790
15933
|
role: "group",
|
|
15791
15934
|
className: cn("flex items-center gap-1 p-1 bg-muted rounded-md", className),
|
|
15792
15935
|
...props,
|
|
15793
|
-
children: /* @__PURE__ */
|
|
15936
|
+
children: /* @__PURE__ */ jsx8(ToggleGroupContext.Provider, { value: { value, onValueChange }, children })
|
|
15794
15937
|
}
|
|
15795
15938
|
);
|
|
15796
15939
|
}
|
|
@@ -15801,7 +15944,7 @@ function ToggleGroupItem({
|
|
|
15801
15944
|
...props
|
|
15802
15945
|
}) {
|
|
15803
15946
|
const { value: groupValue, onValueChange } = React3.useContext(ToggleGroupContext);
|
|
15804
|
-
return /* @__PURE__ */
|
|
15947
|
+
return /* @__PURE__ */ jsx8(
|
|
15805
15948
|
Toggle,
|
|
15806
15949
|
{
|
|
15807
15950
|
pressed: groupValue === value,
|
|
@@ -15823,10 +15966,10 @@ function ToggleGroupItem({
|
|
|
15823
15966
|
// src/ui/drag-handle.tsx
|
|
15824
15967
|
import * as React4 from "react";
|
|
15825
15968
|
import { GripVertical } from "lucide-react";
|
|
15826
|
-
import { jsx as
|
|
15969
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
15827
15970
|
var DragHandle = React4.forwardRef(
|
|
15828
15971
|
({ className, type = "button", ...props }, ref) => {
|
|
15829
|
-
return /* @__PURE__ */
|
|
15972
|
+
return /* @__PURE__ */ jsx9(
|
|
15830
15973
|
"button",
|
|
15831
15974
|
{
|
|
15832
15975
|
ref,
|
|
@@ -15841,7 +15984,7 @@ var DragHandle = React4.forwardRef(
|
|
|
15841
15984
|
className
|
|
15842
15985
|
),
|
|
15843
15986
|
...props,
|
|
15844
|
-
children: /* @__PURE__ */
|
|
15987
|
+
children: /* @__PURE__ */ jsx9(GripVertical, { className: "size-4 shrink-0", "aria-hidden": "true" })
|
|
15845
15988
|
}
|
|
15846
15989
|
);
|
|
15847
15990
|
}
|
|
@@ -15850,8 +15993,8 @@ DragHandle.displayName = "DragHandle";
|
|
|
15850
15993
|
|
|
15851
15994
|
// src/ui/custom-toolbar.tsx
|
|
15852
15995
|
import * as React5 from "react";
|
|
15853
|
-
import { jsx as
|
|
15854
|
-
var CustomToolbar = React5.forwardRef(({ className, onMouseDown, ...props }, ref) => /* @__PURE__ */
|
|
15996
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
15997
|
+
var CustomToolbar = React5.forwardRef(({ className, onMouseDown, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
15855
15998
|
"div",
|
|
15856
15999
|
{
|
|
15857
16000
|
ref,
|
|
@@ -15870,7 +16013,7 @@ var CustomToolbar = React5.forwardRef(({ className, onMouseDown, ...props }, ref
|
|
|
15870
16013
|
));
|
|
15871
16014
|
CustomToolbar.displayName = "CustomToolbar";
|
|
15872
16015
|
function CustomToolbarDivider({ className, ...props }) {
|
|
15873
|
-
return /* @__PURE__ */
|
|
16016
|
+
return /* @__PURE__ */ jsx10(
|
|
15874
16017
|
"span",
|
|
15875
16018
|
{
|
|
15876
16019
|
"aria-hidden": true,
|
|
@@ -15880,7 +16023,7 @@ function CustomToolbarDivider({ className, ...props }) {
|
|
|
15880
16023
|
);
|
|
15881
16024
|
}
|
|
15882
16025
|
var CustomToolbarButton = React5.forwardRef(
|
|
15883
|
-
({ className, active = false, type = "button", ...props }, ref) => /* @__PURE__ */
|
|
16026
|
+
({ className, active = false, type = "button", ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
15884
16027
|
"button",
|
|
15885
16028
|
{
|
|
15886
16029
|
ref,
|
|
@@ -15903,17 +16046,17 @@ import { Brush, Copy, CornerLeftUp, Heading, Link, MoreHorizontal, Plus, Trash2
|
|
|
15903
16046
|
// src/ui/dropdown-menu.tsx
|
|
15904
16047
|
import * as React6 from "react";
|
|
15905
16048
|
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
15906
|
-
import { jsx as
|
|
16049
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
15907
16050
|
function DropdownMenu({ ...props }) {
|
|
15908
|
-
return /* @__PURE__ */
|
|
16051
|
+
return /* @__PURE__ */ jsx11(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
15909
16052
|
}
|
|
15910
|
-
var DropdownMenuTrigger = React6.forwardRef((props, ref) => /* @__PURE__ */
|
|
16053
|
+
var DropdownMenuTrigger = React6.forwardRef((props, ref) => /* @__PURE__ */ jsx11(DropdownMenuPrimitive.Trigger, { ref, "data-slot": "dropdown-menu-trigger", ...props }));
|
|
15911
16054
|
DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
|
|
15912
16055
|
function DropdownMenuGroup({
|
|
15913
16056
|
className,
|
|
15914
16057
|
...props
|
|
15915
16058
|
}) {
|
|
15916
|
-
return /* @__PURE__ */
|
|
16059
|
+
return /* @__PURE__ */ jsx11(
|
|
15917
16060
|
DropdownMenuPrimitive.Group,
|
|
15918
16061
|
{
|
|
15919
16062
|
"data-slot": "dropdown-menu-group",
|
|
@@ -15927,7 +16070,7 @@ function DropdownMenuContent({
|
|
|
15927
16070
|
sideOffset = 6,
|
|
15928
16071
|
...props
|
|
15929
16072
|
}) {
|
|
15930
|
-
return /* @__PURE__ */
|
|
16073
|
+
return /* @__PURE__ */ jsx11(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx11(
|
|
15931
16074
|
DropdownMenuPrimitive.Content,
|
|
15932
16075
|
{
|
|
15933
16076
|
"data-slot": "dropdown-menu-content",
|
|
@@ -15951,7 +16094,7 @@ function DropdownMenuItem({
|
|
|
15951
16094
|
variant = "default",
|
|
15952
16095
|
...props
|
|
15953
16096
|
}) {
|
|
15954
|
-
return /* @__PURE__ */
|
|
16097
|
+
return /* @__PURE__ */ jsx11(
|
|
15955
16098
|
DropdownMenuPrimitive.Item,
|
|
15956
16099
|
{
|
|
15957
16100
|
"data-slot": "dropdown-menu-item",
|
|
@@ -15981,7 +16124,7 @@ function DropdownMenuSeparator({
|
|
|
15981
16124
|
className,
|
|
15982
16125
|
...props
|
|
15983
16126
|
}) {
|
|
15984
|
-
return /* @__PURE__ */
|
|
16127
|
+
return /* @__PURE__ */ jsx11(
|
|
15985
16128
|
DropdownMenuPrimitive.Separator,
|
|
15986
16129
|
{
|
|
15987
16130
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -15993,18 +16136,18 @@ function DropdownMenuSeparator({
|
|
|
15993
16136
|
|
|
15994
16137
|
// src/ui/tooltip.tsx
|
|
15995
16138
|
import { Tooltip as TooltipPrimitive } from "radix-ui";
|
|
15996
|
-
import { jsx as
|
|
16139
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
15997
16140
|
function TooltipProvider({
|
|
15998
16141
|
delayDuration = 0,
|
|
15999
16142
|
...props
|
|
16000
16143
|
}) {
|
|
16001
|
-
return /* @__PURE__ */
|
|
16144
|
+
return /* @__PURE__ */ jsx12(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration, ...props });
|
|
16002
16145
|
}
|
|
16003
16146
|
function Tooltip({ ...props }) {
|
|
16004
|
-
return /* @__PURE__ */
|
|
16147
|
+
return /* @__PURE__ */ jsx12(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
16005
16148
|
}
|
|
16006
16149
|
function TooltipTrigger({ ...props }) {
|
|
16007
|
-
return /* @__PURE__ */
|
|
16150
|
+
return /* @__PURE__ */ jsx12(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
16008
16151
|
}
|
|
16009
16152
|
var arrowClassBySide = {
|
|
16010
16153
|
top: "before:bottom-0 before:left-1/2 before:-translate-x-1/2 before:translate-y-1/2",
|
|
@@ -16021,7 +16164,7 @@ function TooltipContent({
|
|
|
16021
16164
|
...props
|
|
16022
16165
|
}) {
|
|
16023
16166
|
const resolvedSide = side ?? "bottom";
|
|
16024
|
-
return /* @__PURE__ */
|
|
16167
|
+
return /* @__PURE__ */ jsx12(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx12(
|
|
16025
16168
|
TooltipPrimitive.Content,
|
|
16026
16169
|
{
|
|
16027
16170
|
"data-slot": "tooltip-content",
|
|
@@ -16044,7 +16187,7 @@ function TooltipContent({
|
|
|
16044
16187
|
}
|
|
16045
16188
|
|
|
16046
16189
|
// src/ui/item-action-toolbar.tsx
|
|
16047
|
-
import { Fragment as
|
|
16190
|
+
import { Fragment as Fragment4, jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
16048
16191
|
function ToolbarActionTooltip({
|
|
16049
16192
|
label,
|
|
16050
16193
|
side = "bottom",
|
|
@@ -16052,10 +16195,10 @@ function ToolbarActionTooltip({
|
|
|
16052
16195
|
buttonProps,
|
|
16053
16196
|
children
|
|
16054
16197
|
}) {
|
|
16055
|
-
const button = /* @__PURE__ */
|
|
16056
|
-
return /* @__PURE__ */
|
|
16057
|
-
/* @__PURE__ */
|
|
16058
|
-
/* @__PURE__ */
|
|
16198
|
+
const button = /* @__PURE__ */ jsx13(CustomToolbarButton, { type: "button", "aria-label": label, disabled, ...buttonProps, children });
|
|
16199
|
+
return /* @__PURE__ */ jsxs5(Tooltip, { children: [
|
|
16200
|
+
/* @__PURE__ */ jsx13(TooltipTrigger, { asChild: true, children: disabled ? /* @__PURE__ */ jsx13("span", { className: "inline-flex", children: button }) : button }),
|
|
16201
|
+
/* @__PURE__ */ jsx13(TooltipContent, { side, sideOffset: 9, children: label })
|
|
16059
16202
|
] });
|
|
16060
16203
|
}
|
|
16061
16204
|
function ItemActionToolbar({
|
|
@@ -16086,9 +16229,9 @@ function ItemActionToolbar({
|
|
|
16086
16229
|
const showDropdownToggle = dropdownOpen !== null && dropdownOpen !== void 0;
|
|
16087
16230
|
const showHeadingToggle = headingVisible !== null && headingVisible !== void 0;
|
|
16088
16231
|
const headingTooltip = headingVisible ? "Hide heading" : "Show heading";
|
|
16089
|
-
return /* @__PURE__ */
|
|
16090
|
-
showDropdownToggle ? /* @__PURE__ */
|
|
16091
|
-
/* @__PURE__ */
|
|
16232
|
+
return /* @__PURE__ */ jsx13(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs5(CustomToolbar, { children: [
|
|
16233
|
+
showDropdownToggle ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
|
16234
|
+
/* @__PURE__ */ jsxs5(
|
|
16092
16235
|
ToggleGroup,
|
|
16093
16236
|
{
|
|
16094
16237
|
value: dropdownOpen ? "open" : "closed",
|
|
@@ -16100,7 +16243,7 @@ function ItemActionToolbar({
|
|
|
16100
16243
|
e.stopPropagation();
|
|
16101
16244
|
},
|
|
16102
16245
|
children: [
|
|
16103
|
-
/* @__PURE__ */
|
|
16246
|
+
/* @__PURE__ */ jsx13(
|
|
16104
16247
|
ToggleGroupItem,
|
|
16105
16248
|
{
|
|
16106
16249
|
value: "closed",
|
|
@@ -16115,7 +16258,7 @@ function ItemActionToolbar({
|
|
|
16115
16258
|
children: "Closed"
|
|
16116
16259
|
}
|
|
16117
16260
|
),
|
|
16118
|
-
/* @__PURE__ */
|
|
16261
|
+
/* @__PURE__ */ jsx13(
|
|
16119
16262
|
ToggleGroupItem,
|
|
16120
16263
|
{
|
|
16121
16264
|
value: "open",
|
|
@@ -16133,9 +16276,9 @@ function ItemActionToolbar({
|
|
|
16133
16276
|
]
|
|
16134
16277
|
}
|
|
16135
16278
|
),
|
|
16136
|
-
/* @__PURE__ */
|
|
16279
|
+
/* @__PURE__ */ jsx13(CustomToolbarDivider, {})
|
|
16137
16280
|
] }) : null,
|
|
16138
|
-
showEditLink ? /* @__PURE__ */
|
|
16281
|
+
showEditLink ? /* @__PURE__ */ jsx13(
|
|
16139
16282
|
ToolbarActionTooltip,
|
|
16140
16283
|
{
|
|
16141
16284
|
label: "Edit link",
|
|
@@ -16153,10 +16296,10 @@ function ItemActionToolbar({
|
|
|
16153
16296
|
e.stopPropagation();
|
|
16154
16297
|
}
|
|
16155
16298
|
},
|
|
16156
|
-
children: /* @__PURE__ */
|
|
16299
|
+
children: /* @__PURE__ */ jsx13(Link, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
16157
16300
|
}
|
|
16158
16301
|
) : null,
|
|
16159
|
-
showStyle ? /* @__PURE__ */
|
|
16302
|
+
showStyle ? /* @__PURE__ */ jsx13(
|
|
16160
16303
|
ToolbarActionTooltip,
|
|
16161
16304
|
{
|
|
16162
16305
|
label: "Style",
|
|
@@ -16177,10 +16320,10 @@ function ItemActionToolbar({
|
|
|
16177
16320
|
e.stopPropagation();
|
|
16178
16321
|
}
|
|
16179
16322
|
},
|
|
16180
|
-
children: /* @__PURE__ */
|
|
16323
|
+
children: /* @__PURE__ */ jsx13(Brush, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
16181
16324
|
}
|
|
16182
16325
|
) : null,
|
|
16183
|
-
showAddItem ? /* @__PURE__ */
|
|
16326
|
+
showAddItem ? /* @__PURE__ */ jsx13(
|
|
16184
16327
|
ToolbarActionTooltip,
|
|
16185
16328
|
{
|
|
16186
16329
|
label: "Add item",
|
|
@@ -16194,10 +16337,10 @@ function ItemActionToolbar({
|
|
|
16194
16337
|
onAddItem?.();
|
|
16195
16338
|
}
|
|
16196
16339
|
},
|
|
16197
|
-
children: /* @__PURE__ */
|
|
16340
|
+
children: /* @__PURE__ */ jsx13(Plus, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
16198
16341
|
}
|
|
16199
16342
|
) : null,
|
|
16200
|
-
showHeadingToggle ? /* @__PURE__ */
|
|
16343
|
+
showHeadingToggle ? /* @__PURE__ */ jsx13(
|
|
16201
16344
|
ToolbarActionTooltip,
|
|
16202
16345
|
{
|
|
16203
16346
|
label: headingTooltip,
|
|
@@ -16214,12 +16357,12 @@ function ItemActionToolbar({
|
|
|
16214
16357
|
onHeadingVisibleChange?.(!headingVisible);
|
|
16215
16358
|
}
|
|
16216
16359
|
},
|
|
16217
|
-
children: /* @__PURE__ */
|
|
16360
|
+
children: /* @__PURE__ */ jsx13(Heading, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
16218
16361
|
}
|
|
16219
16362
|
) : null,
|
|
16220
|
-
showMore ? /* @__PURE__ */
|
|
16221
|
-
/* @__PURE__ */
|
|
16222
|
-
/* @__PURE__ */
|
|
16363
|
+
showMore ? /* @__PURE__ */ jsxs5(DropdownMenu, { open: moreOpen, onOpenChange: setMoreOpen, children: [
|
|
16364
|
+
/* @__PURE__ */ jsxs5(Tooltip, { open: moreOpen ? false : void 0, children: [
|
|
16365
|
+
/* @__PURE__ */ jsx13(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx13(DropdownMenuTrigger, { asChild: true, disabled: moreDisabled, children: /* @__PURE__ */ jsx13(
|
|
16223
16366
|
CustomToolbarButton,
|
|
16224
16367
|
{
|
|
16225
16368
|
type: "button",
|
|
@@ -16229,12 +16372,12 @@ function ItemActionToolbar({
|
|
|
16229
16372
|
e.preventDefault();
|
|
16230
16373
|
e.stopPropagation();
|
|
16231
16374
|
},
|
|
16232
|
-
children: /* @__PURE__ */
|
|
16375
|
+
children: /* @__PURE__ */ jsx13(MoreHorizontal, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
16233
16376
|
}
|
|
16234
16377
|
) }) }),
|
|
16235
|
-
/* @__PURE__ */
|
|
16378
|
+
/* @__PURE__ */ jsx13(TooltipContent, { side: tooltipSide, sideOffset: 9, children: "More" })
|
|
16236
16379
|
] }),
|
|
16237
|
-
/* @__PURE__ */
|
|
16380
|
+
/* @__PURE__ */ jsxs5(
|
|
16238
16381
|
DropdownMenuContent,
|
|
16239
16382
|
{
|
|
16240
16383
|
align: "end",
|
|
@@ -16245,39 +16388,39 @@ function ItemActionToolbar({
|
|
|
16245
16388
|
e.stopPropagation();
|
|
16246
16389
|
},
|
|
16247
16390
|
children: [
|
|
16248
|
-
/* @__PURE__ */
|
|
16249
|
-
/* @__PURE__ */
|
|
16391
|
+
/* @__PURE__ */ jsxs5(DropdownMenuGroup, { children: [
|
|
16392
|
+
/* @__PURE__ */ jsxs5(
|
|
16250
16393
|
DropdownMenuItem,
|
|
16251
16394
|
{
|
|
16252
16395
|
disabled: selectParentDisabled,
|
|
16253
16396
|
onSelect: () => onSelectParent?.(),
|
|
16254
16397
|
children: [
|
|
16255
|
-
/* @__PURE__ */
|
|
16398
|
+
/* @__PURE__ */ jsx13(CornerLeftUp, { size: 12, "aria-hidden": true }),
|
|
16256
16399
|
"Select parent"
|
|
16257
16400
|
]
|
|
16258
16401
|
}
|
|
16259
16402
|
),
|
|
16260
|
-
/* @__PURE__ */
|
|
16403
|
+
/* @__PURE__ */ jsxs5(
|
|
16261
16404
|
DropdownMenuItem,
|
|
16262
16405
|
{
|
|
16263
16406
|
disabled: duplicateDisabled,
|
|
16264
16407
|
onSelect: () => onDuplicate?.(),
|
|
16265
16408
|
children: [
|
|
16266
|
-
/* @__PURE__ */
|
|
16409
|
+
/* @__PURE__ */ jsx13(Copy, { size: 12, "aria-hidden": true }),
|
|
16267
16410
|
"Duplicate"
|
|
16268
16411
|
]
|
|
16269
16412
|
}
|
|
16270
16413
|
)
|
|
16271
16414
|
] }),
|
|
16272
|
-
/* @__PURE__ */
|
|
16273
|
-
/* @__PURE__ */
|
|
16415
|
+
/* @__PURE__ */ jsx13(DropdownMenuSeparator, {}),
|
|
16416
|
+
/* @__PURE__ */ jsx13(DropdownMenuGroup, { children: /* @__PURE__ */ jsxs5(
|
|
16274
16417
|
DropdownMenuItem,
|
|
16275
16418
|
{
|
|
16276
16419
|
variant: "destructive",
|
|
16277
16420
|
disabled: deleteDisabled,
|
|
16278
16421
|
onSelect: () => onDelete?.(),
|
|
16279
16422
|
children: [
|
|
16280
|
-
/* @__PURE__ */
|
|
16423
|
+
/* @__PURE__ */ jsx13(Trash2, { size: 15, "aria-hidden": true }),
|
|
16281
16424
|
"Delete"
|
|
16282
16425
|
]
|
|
16283
16426
|
}
|
|
@@ -16292,7 +16435,7 @@ function ItemActionToolbar({
|
|
|
16292
16435
|
// src/ui/item-interaction-layer.tsx
|
|
16293
16436
|
import { useLayoutEffect as useLayoutEffect2, useRef as useRef2, useState as useState5 } from "react";
|
|
16294
16437
|
import { createPortal } from "react-dom";
|
|
16295
|
-
import { jsx as
|
|
16438
|
+
import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
16296
16439
|
var PRIMARY = "var(--ohw-primary, #0885FE)";
|
|
16297
16440
|
var CHROME_RADIUS = 6;
|
|
16298
16441
|
var FOCUS_RING = `0 0 0 4px color-mix(in srgb, ${PRIMARY} 12%, transparent)`;
|
|
@@ -16386,7 +16529,7 @@ function ClampedToolbarSlot({
|
|
|
16386
16529
|
window.removeEventListener("resize", clamp);
|
|
16387
16530
|
};
|
|
16388
16531
|
}, [placement, children, align]);
|
|
16389
|
-
return /* @__PURE__ */
|
|
16532
|
+
return /* @__PURE__ */ jsx14(
|
|
16390
16533
|
"div",
|
|
16391
16534
|
{
|
|
16392
16535
|
ref: slotRef,
|
|
@@ -16461,7 +16604,7 @@ function DetachedBelowToolbarSlot({
|
|
|
16461
16604
|
}, [centerX, belowRect, belowEl, children]);
|
|
16462
16605
|
if (!portalTarget) return null;
|
|
16463
16606
|
return createPortal(
|
|
16464
|
-
/* @__PURE__ */
|
|
16607
|
+
/* @__PURE__ */ jsx14(
|
|
16465
16608
|
"div",
|
|
16466
16609
|
{
|
|
16467
16610
|
ref: slotRef,
|
|
@@ -16519,7 +16662,7 @@ function ItemInteractionLayer({
|
|
|
16519
16662
|
if (typeof elRef === "function") elRef(node);
|
|
16520
16663
|
else if (elRef) elRef.current = node;
|
|
16521
16664
|
};
|
|
16522
|
-
return /* @__PURE__ */
|
|
16665
|
+
return /* @__PURE__ */ jsxs6(
|
|
16523
16666
|
"div",
|
|
16524
16667
|
{
|
|
16525
16668
|
ref: setRootRef,
|
|
@@ -16536,7 +16679,7 @@ function ItemInteractionLayer({
|
|
|
16536
16679
|
display: hidden ? "none" : "block"
|
|
16537
16680
|
},
|
|
16538
16681
|
children: [
|
|
16539
|
-
/* @__PURE__ */
|
|
16682
|
+
/* @__PURE__ */ jsx14(
|
|
16540
16683
|
"div",
|
|
16541
16684
|
{
|
|
16542
16685
|
"aria-hidden": true,
|
|
@@ -16544,7 +16687,7 @@ function ItemInteractionLayer({
|
|
|
16544
16687
|
style: { ...getChromeStyle(state), borderRadius: CHROME_RADIUS }
|
|
16545
16688
|
}
|
|
16546
16689
|
),
|
|
16547
|
-
itemDragEnabled && /* @__PURE__ */
|
|
16690
|
+
itemDragEnabled && /* @__PURE__ */ jsx14(
|
|
16548
16691
|
"div",
|
|
16549
16692
|
{
|
|
16550
16693
|
"data-ohw-item-drag-surface": "",
|
|
@@ -16561,14 +16704,14 @@ function ItemInteractionLayer({
|
|
|
16561
16704
|
}
|
|
16562
16705
|
}
|
|
16563
16706
|
),
|
|
16564
|
-
showDragHandle && /* @__PURE__ */
|
|
16707
|
+
showDragHandle && /* @__PURE__ */ jsx14(
|
|
16565
16708
|
"div",
|
|
16566
16709
|
{
|
|
16567
16710
|
"data-ohw-drag-handle-container": "",
|
|
16568
16711
|
className: "pointer-events-auto absolute left-0 top-1/2 z-10 -translate-x-[calc(100%+7px)] -translate-y-1/2",
|
|
16569
16712
|
style: isDragging ? { opacity: 0 } : void 0,
|
|
16570
16713
|
"aria-hidden": isDragging || void 0,
|
|
16571
|
-
children: /* @__PURE__ */
|
|
16714
|
+
children: /* @__PURE__ */ jsx14(
|
|
16572
16715
|
DragHandle,
|
|
16573
16716
|
{
|
|
16574
16717
|
draggable: !dragDisabled,
|
|
@@ -16598,9 +16741,9 @@ function ItemInteractionLayer({
|
|
|
16598
16741
|
)
|
|
16599
16742
|
}
|
|
16600
16743
|
),
|
|
16601
|
-
showToolbar && state === "active-top" && /* @__PURE__ */
|
|
16602
|
-
showToolbar && state === "active-bottom" && !useDetachedBelowToolbar && /* @__PURE__ */
|
|
16603
|
-
useDetachedBelowToolbar && toolbarBelowRect ? /* @__PURE__ */
|
|
16744
|
+
showToolbar && state === "active-top" && /* @__PURE__ */ jsx14(ClampedToolbarSlot, { align: toolbarAlign, placement: "top", children: toolbar }),
|
|
16745
|
+
showToolbar && state === "active-bottom" && !useDetachedBelowToolbar && /* @__PURE__ */ jsx14(ClampedToolbarSlot, { align: toolbarAlign, placement: "bottom", children: toolbar }),
|
|
16746
|
+
useDetachedBelowToolbar && toolbarBelowRect ? /* @__PURE__ */ jsx14(
|
|
16604
16747
|
DetachedBelowToolbarSlot,
|
|
16605
16748
|
{
|
|
16606
16749
|
centerX: rect.left + rect.width / 2,
|
|
@@ -17135,7 +17278,7 @@ function reconcileFieldsFromContent(form, content) {
|
|
|
17135
17278
|
|
|
17136
17279
|
// src/ui/form-field-toolbar.tsx
|
|
17137
17280
|
import { AtSign, Asterisk, ChevronDown as ChevronDown2, Copy as Copy2, MoreHorizontal as MoreHorizontal2, Phone, TextQuote, Trash2 as Trash22, Type } from "lucide-react";
|
|
17138
|
-
import { jsx as
|
|
17281
|
+
import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
17139
17282
|
var TYPE_ICONS = {
|
|
17140
17283
|
"short-text": Type,
|
|
17141
17284
|
"long-text": TextQuote,
|
|
@@ -17152,35 +17295,35 @@ function FormFieldToolbar({
|
|
|
17152
17295
|
}) {
|
|
17153
17296
|
const TypeIcon = TYPE_ICONS[type];
|
|
17154
17297
|
const typeLabel = FIELD_TYPES.find((entry) => entry.type === type)?.label ?? "Short text";
|
|
17155
|
-
return /* @__PURE__ */
|
|
17298
|
+
return /* @__PURE__ */ jsxs7(
|
|
17156
17299
|
"div",
|
|
17157
17300
|
{
|
|
17158
17301
|
"data-ohw-field-toolbar": "",
|
|
17159
17302
|
className: "pointer-events-auto flex items-center gap-0.5 whitespace-nowrap rounded-lg border border-border bg-background p-1 shadow-md",
|
|
17160
17303
|
children: [
|
|
17161
|
-
/* @__PURE__ */
|
|
17162
|
-
/* @__PURE__ */
|
|
17304
|
+
/* @__PURE__ */ jsxs7(DropdownMenu, { children: [
|
|
17305
|
+
/* @__PURE__ */ jsx15(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs7(
|
|
17163
17306
|
"button",
|
|
17164
17307
|
{
|
|
17165
17308
|
type: "button",
|
|
17166
17309
|
className: "flex h-7 items-center gap-1.5 whitespace-nowrap rounded-md px-2 text-[13px] font-medium text-foreground transition-colors hover:bg-muted/70",
|
|
17167
17310
|
"data-ohw-field-type-trigger": "",
|
|
17168
17311
|
children: [
|
|
17169
|
-
/* @__PURE__ */
|
|
17312
|
+
/* @__PURE__ */ jsx15(TypeIcon, { size: 14, strokeWidth: 1.75, "aria-hidden": true }),
|
|
17170
17313
|
typeLabel,
|
|
17171
|
-
/* @__PURE__ */
|
|
17314
|
+
/* @__PURE__ */ jsx15(ChevronDown2, { size: 13, className: "text-muted-foreground", "aria-hidden": true })
|
|
17172
17315
|
]
|
|
17173
17316
|
}
|
|
17174
17317
|
) }),
|
|
17175
|
-
/* @__PURE__ */
|
|
17318
|
+
/* @__PURE__ */ jsx15(DropdownMenuContent, { align: "start", sideOffset: 8, className: "min-w-47.5 p-1", children: FIELD_TYPES.map((entry) => {
|
|
17176
17319
|
const Icon = TYPE_ICONS[entry.type];
|
|
17177
|
-
return /* @__PURE__ */
|
|
17320
|
+
return /* @__PURE__ */ jsxs7(
|
|
17178
17321
|
DropdownMenuItem,
|
|
17179
17322
|
{
|
|
17180
17323
|
onSelect: () => onTypeChange(entry.type),
|
|
17181
17324
|
className: "rounded-md py-2 text-[13px] " + (entry.type === type ? "bg-bridge-primary/10" : ""),
|
|
17182
17325
|
children: [
|
|
17183
|
-
/* @__PURE__ */
|
|
17326
|
+
/* @__PURE__ */ jsx15(Icon, { size: 14, strokeWidth: 1.75, className: "shrink-0", "aria-hidden": true }),
|
|
17184
17327
|
entry.label
|
|
17185
17328
|
]
|
|
17186
17329
|
},
|
|
@@ -17188,8 +17331,8 @@ function FormFieldToolbar({
|
|
|
17188
17331
|
);
|
|
17189
17332
|
}) })
|
|
17190
17333
|
] }),
|
|
17191
|
-
/* @__PURE__ */
|
|
17192
|
-
/* @__PURE__ */
|
|
17334
|
+
/* @__PURE__ */ jsx15("div", { className: "mx-0.5 h-5 w-px bg-border" }),
|
|
17335
|
+
/* @__PURE__ */ jsxs7(
|
|
17193
17336
|
"button",
|
|
17194
17337
|
{
|
|
17195
17338
|
type: "button",
|
|
@@ -17198,30 +17341,30 @@ function FormFieldToolbar({
|
|
|
17198
17341
|
className: "flex h-7 items-center gap-1.5 whitespace-nowrap rounded-md px-2 text-[13px] font-medium transition-colors " + (required ? "bg-bridge-primary/10 text-bridge-primary" : "text-foreground hover:bg-muted/70"),
|
|
17199
17342
|
"data-ohw-field-required-toggle": "",
|
|
17200
17343
|
children: [
|
|
17201
|
-
/* @__PURE__ */
|
|
17344
|
+
/* @__PURE__ */ jsx15(Asterisk, { size: 14, strokeWidth: 2, "aria-hidden": true }),
|
|
17202
17345
|
"Required"
|
|
17203
17346
|
]
|
|
17204
17347
|
}
|
|
17205
17348
|
),
|
|
17206
|
-
/* @__PURE__ */
|
|
17207
|
-
/* @__PURE__ */
|
|
17208
|
-
/* @__PURE__ */
|
|
17349
|
+
/* @__PURE__ */ jsx15("div", { className: "mx-0.5 h-5 w-px bg-border" }),
|
|
17350
|
+
/* @__PURE__ */ jsxs7(DropdownMenu, { children: [
|
|
17351
|
+
/* @__PURE__ */ jsx15(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx15(
|
|
17209
17352
|
"button",
|
|
17210
17353
|
{
|
|
17211
17354
|
type: "button",
|
|
17212
17355
|
title: "More",
|
|
17213
17356
|
"aria-label": "More",
|
|
17214
17357
|
className: "flex h-7 w-7 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted/70",
|
|
17215
|
-
children: /* @__PURE__ */
|
|
17358
|
+
children: /* @__PURE__ */ jsx15(MoreHorizontal2, { size: 15, "aria-hidden": true })
|
|
17216
17359
|
}
|
|
17217
17360
|
) }),
|
|
17218
|
-
/* @__PURE__ */
|
|
17219
|
-
/* @__PURE__ */
|
|
17220
|
-
/* @__PURE__ */
|
|
17361
|
+
/* @__PURE__ */ jsxs7(DropdownMenuContent, { align: "start", sideOffset: 8, className: "min-w-42.5 p-1", children: [
|
|
17362
|
+
/* @__PURE__ */ jsxs7(DropdownMenuItem, { onSelect: onDuplicate, className: "rounded-md py-2 text-[13px]", children: [
|
|
17363
|
+
/* @__PURE__ */ jsx15(Copy2, { size: 14, strokeWidth: 1.75, className: "shrink-0", "aria-hidden": true }),
|
|
17221
17364
|
"Duplicate"
|
|
17222
17365
|
] }),
|
|
17223
|
-
/* @__PURE__ */
|
|
17224
|
-
/* @__PURE__ */
|
|
17366
|
+
/* @__PURE__ */ jsxs7(DropdownMenuItem, { variant: "destructive", onSelect: onDelete, className: "rounded-md py-2 text-[13px]", children: [
|
|
17367
|
+
/* @__PURE__ */ jsx15(Trash22, { size: 14, strokeWidth: 1.75, className: "shrink-0", "aria-hidden": true }),
|
|
17225
17368
|
"Delete"
|
|
17226
17369
|
] })
|
|
17227
17370
|
] })
|
|
@@ -17231,21 +17374,21 @@ function FormFieldToolbar({
|
|
|
17231
17374
|
);
|
|
17232
17375
|
}
|
|
17233
17376
|
function FieldTypePicker({ onPick }) {
|
|
17234
|
-
return /* @__PURE__ */
|
|
17377
|
+
return /* @__PURE__ */ jsx15(
|
|
17235
17378
|
"div",
|
|
17236
17379
|
{
|
|
17237
17380
|
"data-ohw-field-type-picker": "",
|
|
17238
17381
|
className: "pointer-events-auto grid w-[280px] grid-cols-2 gap-2 rounded-xl border border-border bg-background p-3 shadow-lg",
|
|
17239
17382
|
children: FIELD_TYPES.map((entry) => {
|
|
17240
17383
|
const Icon = TYPE_ICONS[entry.type];
|
|
17241
|
-
return /* @__PURE__ */
|
|
17384
|
+
return /* @__PURE__ */ jsxs7(
|
|
17242
17385
|
"button",
|
|
17243
17386
|
{
|
|
17244
17387
|
type: "button",
|
|
17245
17388
|
onClick: () => onPick(entry.type),
|
|
17246
17389
|
className: "flex h-[76px] flex-col items-center justify-center gap-2 rounded-xl border border-border text-[15px] font-medium text-foreground transition-colors hover:border-bridge-primary hover:bg-bridge-primary/5",
|
|
17247
17390
|
children: [
|
|
17248
|
-
/* @__PURE__ */
|
|
17391
|
+
/* @__PURE__ */ jsx15(Icon, { size: 26, strokeWidth: 1.5, "aria-hidden": true }),
|
|
17249
17392
|
entry.label
|
|
17250
17393
|
]
|
|
17251
17394
|
},
|
|
@@ -17263,7 +17406,7 @@ import { Film, ImageIcon, Pause, Play as Play2, Volume2, VolumeX } from "lucide-
|
|
|
17263
17406
|
// src/ui/button.tsx
|
|
17264
17407
|
import * as React7 from "react";
|
|
17265
17408
|
import { Slot } from "radix-ui";
|
|
17266
|
-
import { jsx as
|
|
17409
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
17267
17410
|
var buttonVariants = cva(
|
|
17268
17411
|
"inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-md text-sm font-medium transition-colors outline-none disabled:pointer-events-none disabled:opacity-50 min-w-[80px] px-3 py-2",
|
|
17269
17412
|
{
|
|
@@ -17287,7 +17430,7 @@ var buttonVariants = cva(
|
|
|
17287
17430
|
var Button = React7.forwardRef(
|
|
17288
17431
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
17289
17432
|
const Comp = asChild ? Slot.Root : "button";
|
|
17290
|
-
return /* @__PURE__ */
|
|
17433
|
+
return /* @__PURE__ */ jsx16(
|
|
17291
17434
|
Comp,
|
|
17292
17435
|
{
|
|
17293
17436
|
ref,
|
|
@@ -17321,7 +17464,7 @@ var MEDIA_SKELETON_CSS = `
|
|
|
17321
17464
|
`;
|
|
17322
17465
|
|
|
17323
17466
|
// src/ui/MediaOverlay.tsx
|
|
17324
|
-
import { Fragment as
|
|
17467
|
+
import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
17325
17468
|
var VIDEO_SETTINGS_BAR_INSET = 8;
|
|
17326
17469
|
var OVERLAY_BUTTON_STYLE = {
|
|
17327
17470
|
pointerEvents: "auto",
|
|
@@ -17387,7 +17530,7 @@ function MediaOverlay({
|
|
|
17387
17530
|
return () => anim.cancel();
|
|
17388
17531
|
}, [isUploading, fadingOut, onFadeOutComplete, hover.key]);
|
|
17389
17532
|
if (isUploading) {
|
|
17390
|
-
return /* @__PURE__ */
|
|
17533
|
+
return /* @__PURE__ */ jsx17(
|
|
17391
17534
|
"div",
|
|
17392
17535
|
{
|
|
17393
17536
|
ref: skeletonRef,
|
|
@@ -17396,11 +17539,11 @@ function MediaOverlay({
|
|
|
17396
17539
|
"data-ohw-media-skeleton": "",
|
|
17397
17540
|
"aria-hidden": true,
|
|
17398
17541
|
style: { ...box, pointerEvents: "none" },
|
|
17399
|
-
children: /* @__PURE__ */
|
|
17542
|
+
children: /* @__PURE__ */ jsx17("style", { children: MEDIA_SKELETON_CSS })
|
|
17400
17543
|
}
|
|
17401
17544
|
);
|
|
17402
17545
|
}
|
|
17403
|
-
const settingsBar = isVideo && !hover.isDragOver && showChrome ? /* @__PURE__ */
|
|
17546
|
+
const settingsBar = isVideo && !hover.isDragOver && showChrome ? /* @__PURE__ */ jsxs8(
|
|
17404
17547
|
"div",
|
|
17405
17548
|
{
|
|
17406
17549
|
"data-ohw-bridge": "",
|
|
@@ -17416,7 +17559,7 @@ function MediaOverlay({
|
|
|
17416
17559
|
},
|
|
17417
17560
|
onClick: (e) => e.stopPropagation(),
|
|
17418
17561
|
children: [
|
|
17419
|
-
/* @__PURE__ */
|
|
17562
|
+
/* @__PURE__ */ jsx17(
|
|
17420
17563
|
Button,
|
|
17421
17564
|
{
|
|
17422
17565
|
"data-ohw-media-overlay": "",
|
|
@@ -17431,10 +17574,10 @@ function MediaOverlay({
|
|
|
17431
17574
|
e.stopPropagation();
|
|
17432
17575
|
onVideoSettingsChange?.(hover.key, { autoplay: !autoplay });
|
|
17433
17576
|
},
|
|
17434
|
-
children: autoplay ? /* @__PURE__ */
|
|
17577
|
+
children: autoplay ? /* @__PURE__ */ jsx17(Pause, { size: 14 }) : /* @__PURE__ */ jsx17(Play2, { size: 14 })
|
|
17435
17578
|
}
|
|
17436
17579
|
),
|
|
17437
|
-
/* @__PURE__ */
|
|
17580
|
+
/* @__PURE__ */ jsx17(
|
|
17438
17581
|
Button,
|
|
17439
17582
|
{
|
|
17440
17583
|
"data-ohw-media-overlay": "",
|
|
@@ -17449,15 +17592,15 @@ function MediaOverlay({
|
|
|
17449
17592
|
e.stopPropagation();
|
|
17450
17593
|
onVideoSettingsChange?.(hover.key, { muted: !muted });
|
|
17451
17594
|
},
|
|
17452
|
-
children: muted ? /* @__PURE__ */
|
|
17595
|
+
children: muted ? /* @__PURE__ */ jsx17(VolumeX, { size: 14 }) : /* @__PURE__ */ jsx17(Volume2, { size: 14 })
|
|
17453
17596
|
}
|
|
17454
17597
|
)
|
|
17455
17598
|
]
|
|
17456
17599
|
}
|
|
17457
17600
|
) : null;
|
|
17458
|
-
return /* @__PURE__ */
|
|
17601
|
+
return /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
17459
17602
|
settingsBar,
|
|
17460
|
-
/* @__PURE__ */
|
|
17603
|
+
/* @__PURE__ */ jsxs8(
|
|
17461
17604
|
"div",
|
|
17462
17605
|
{
|
|
17463
17606
|
"data-ohw-bridge": "",
|
|
@@ -17477,7 +17620,7 @@ function MediaOverlay({
|
|
|
17477
17620
|
},
|
|
17478
17621
|
onClick: () => onSelect && !selected ? onSelect(hover.key) : onReplace(hover.key),
|
|
17479
17622
|
children: [
|
|
17480
|
-
/* @__PURE__ */
|
|
17623
|
+
/* @__PURE__ */ jsxs8(
|
|
17481
17624
|
Button,
|
|
17482
17625
|
{
|
|
17483
17626
|
ref: probeRef,
|
|
@@ -17495,12 +17638,12 @@ function MediaOverlay({
|
|
|
17495
17638
|
pointerEvents: "none"
|
|
17496
17639
|
},
|
|
17497
17640
|
children: [
|
|
17498
|
-
isVideo ? /* @__PURE__ */
|
|
17641
|
+
isVideo ? /* @__PURE__ */ jsx17(Film, { size: 14 }) : /* @__PURE__ */ jsx17(ImageIcon, { size: 14 }),
|
|
17499
17642
|
isVideo ? "Replace video" : "Replace image"
|
|
17500
17643
|
]
|
|
17501
17644
|
}
|
|
17502
17645
|
),
|
|
17503
|
-
replaceMode === "none" || cueOnly ? null : /* @__PURE__ */
|
|
17646
|
+
replaceMode === "none" || cueOnly ? null : /* @__PURE__ */ jsxs8(
|
|
17504
17647
|
Button,
|
|
17505
17648
|
{
|
|
17506
17649
|
"data-ohw-media-overlay": "",
|
|
@@ -17528,7 +17671,7 @@ function MediaOverlay({
|
|
|
17528
17671
|
onReplace(hover.key);
|
|
17529
17672
|
},
|
|
17530
17673
|
children: [
|
|
17531
|
-
isVideo ? /* @__PURE__ */
|
|
17674
|
+
isVideo ? /* @__PURE__ */ jsx17(Film, { size: 14 }) : /* @__PURE__ */ jsx17(ImageIcon, { size: 14 }),
|
|
17532
17675
|
replaceMode === "full" ? isVideo ? "Replace video" : hover.elementType === "bg-image" ? "Replace background" : "Replace image" : null
|
|
17533
17676
|
]
|
|
17534
17677
|
}
|
|
@@ -17541,7 +17684,7 @@ function MediaOverlay({
|
|
|
17541
17684
|
|
|
17542
17685
|
// src/ui/CarouselOverlay.tsx
|
|
17543
17686
|
import { GalleryHorizontal } from "lucide-react";
|
|
17544
|
-
import { jsx as
|
|
17687
|
+
import { jsx as jsx18, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
17545
17688
|
var OVERLAY_BUTTON_STYLE2 = {
|
|
17546
17689
|
pointerEvents: "auto",
|
|
17547
17690
|
fontFamily: "Inter, sans-serif",
|
|
@@ -17554,7 +17697,7 @@ function CarouselOverlay({
|
|
|
17554
17697
|
cueOnly = false
|
|
17555
17698
|
}) {
|
|
17556
17699
|
const { rect } = hover;
|
|
17557
|
-
return /* @__PURE__ */
|
|
17700
|
+
return /* @__PURE__ */ jsx18(
|
|
17558
17701
|
"div",
|
|
17559
17702
|
{
|
|
17560
17703
|
"data-ohw-bridge": "",
|
|
@@ -17572,7 +17715,7 @@ function CarouselOverlay({
|
|
|
17572
17715
|
background: "color-mix(in srgb, var(--color-bridge-primary) 20%, transparent)"
|
|
17573
17716
|
},
|
|
17574
17717
|
onClick: () => onEdit(hover.key),
|
|
17575
|
-
children: cueOnly ? null : /* @__PURE__ */
|
|
17718
|
+
children: cueOnly ? null : /* @__PURE__ */ jsxs9(
|
|
17576
17719
|
Button,
|
|
17577
17720
|
{
|
|
17578
17721
|
"data-ohw-carousel-overlay": "",
|
|
@@ -17586,7 +17729,7 @@ function CarouselOverlay({
|
|
|
17586
17729
|
onEdit(hover.key);
|
|
17587
17730
|
},
|
|
17588
17731
|
children: [
|
|
17589
|
-
/* @__PURE__ */
|
|
17732
|
+
/* @__PURE__ */ jsx18(GalleryHorizontal, { size: 14 }),
|
|
17590
17733
|
"Edit gallery"
|
|
17591
17734
|
]
|
|
17592
17735
|
}
|
|
@@ -17598,7 +17741,7 @@ function CarouselOverlay({
|
|
|
17598
17741
|
// src/ui/ai-section/AiSectionOverlay.tsx
|
|
17599
17742
|
import { useCallback as useCallback2, useEffect as useEffect5, useRef as useRef4, useState as useState7 } from "react";
|
|
17600
17743
|
import { Check, X } from "lucide-react";
|
|
17601
|
-
import { Fragment as
|
|
17744
|
+
import { Fragment as Fragment6, jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
17602
17745
|
var findSectionElement = findByInstanceId;
|
|
17603
17746
|
function readRect(instanceId) {
|
|
17604
17747
|
const el = findSectionElement(instanceId);
|
|
@@ -17712,8 +17855,8 @@ function ReviewButton({
|
|
|
17712
17855
|
color
|
|
17713
17856
|
}) {
|
|
17714
17857
|
const [hover, setHover] = useState7(false);
|
|
17715
|
-
return /* @__PURE__ */
|
|
17716
|
-
/* @__PURE__ */
|
|
17858
|
+
return /* @__PURE__ */ jsxs10("div", { style: { position: "relative" }, children: [
|
|
17859
|
+
/* @__PURE__ */ jsx19(
|
|
17717
17860
|
"button",
|
|
17718
17861
|
{
|
|
17719
17862
|
type: "button",
|
|
@@ -17737,7 +17880,7 @@ function ReviewButton({
|
|
|
17737
17880
|
children
|
|
17738
17881
|
}
|
|
17739
17882
|
),
|
|
17740
|
-
hover && /* @__PURE__ */
|
|
17883
|
+
hover && /* @__PURE__ */ jsx19(
|
|
17741
17884
|
"div",
|
|
17742
17885
|
{
|
|
17743
17886
|
style: {
|
|
@@ -17938,8 +18081,8 @@ function AiSectionOverlay({
|
|
|
17938
18081
|
isLast
|
|
17939
18082
|
});
|
|
17940
18083
|
}, [activeSelectionId, selectionRect, postToParent2]);
|
|
17941
|
-
return /* @__PURE__ */
|
|
17942
|
-
hoverRect && /* @__PURE__ */
|
|
18084
|
+
return /* @__PURE__ */ jsxs10(Fragment6, { children: [
|
|
18085
|
+
hoverRect && /* @__PURE__ */ jsx19(
|
|
17943
18086
|
"div",
|
|
17944
18087
|
{
|
|
17945
18088
|
"data-ohw-ai-section-hover": "",
|
|
@@ -17957,7 +18100,7 @@ function AiSectionOverlay({
|
|
|
17957
18100
|
}
|
|
17958
18101
|
}
|
|
17959
18102
|
),
|
|
17960
|
-
showSelectionBorder && selectionRect && /* @__PURE__ */
|
|
18103
|
+
showSelectionBorder && selectionRect && /* @__PURE__ */ jsx19(
|
|
17961
18104
|
"div",
|
|
17962
18105
|
{
|
|
17963
18106
|
"data-ohw-ai-section-selected": "",
|
|
@@ -17975,8 +18118,8 @@ function AiSectionOverlay({
|
|
|
17975
18118
|
}
|
|
17976
18119
|
}
|
|
17977
18120
|
),
|
|
17978
|
-
reviewRect && /* @__PURE__ */
|
|
17979
|
-
subtractRect(reviewRect, navToggleHole).map((r2, i) => /* @__PURE__ */
|
|
18121
|
+
reviewRect && /* @__PURE__ */ jsxs10(Fragment6, { children: [
|
|
18122
|
+
subtractRect(reviewRect, navToggleHole).map((r2, i) => /* @__PURE__ */ jsx19(
|
|
17980
18123
|
"div",
|
|
17981
18124
|
{
|
|
17982
18125
|
"data-ohw-ai-review": "",
|
|
@@ -17996,7 +18139,7 @@ function AiSectionOverlay({
|
|
|
17996
18139
|
},
|
|
17997
18140
|
i
|
|
17998
18141
|
)),
|
|
17999
|
-
/* @__PURE__ */
|
|
18142
|
+
/* @__PURE__ */ jsx19(
|
|
18000
18143
|
"div",
|
|
18001
18144
|
{
|
|
18002
18145
|
"aria-hidden": true,
|
|
@@ -18013,7 +18156,7 @@ function AiSectionOverlay({
|
|
|
18013
18156
|
}
|
|
18014
18157
|
}
|
|
18015
18158
|
),
|
|
18016
|
-
!reviewButtonsHidden && /* @__PURE__ */
|
|
18159
|
+
!reviewButtonsHidden && /* @__PURE__ */ jsxs10(
|
|
18017
18160
|
"div",
|
|
18018
18161
|
{
|
|
18019
18162
|
style: {
|
|
@@ -18028,8 +18171,8 @@ function AiSectionOverlay({
|
|
|
18028
18171
|
zIndex: 2147483201
|
|
18029
18172
|
},
|
|
18030
18173
|
children: [
|
|
18031
|
-
/* @__PURE__ */
|
|
18032
|
-
/* @__PURE__ */
|
|
18174
|
+
/* @__PURE__ */ jsx19(ReviewButton, { label: "Accept", onClick: () => decide("accept"), background: PRIMARY2, color: "#ffffff", children: /* @__PURE__ */ jsx19(Check, { size: 16, strokeWidth: 2.5, "aria-hidden": true }) }),
|
|
18175
|
+
/* @__PURE__ */ jsx19(ReviewButton, { label: "Discard", onClick: () => decide("discard"), background: "#EFF6FF", color: "#0c0a09", children: /* @__PURE__ */ jsx19(X, { size: 16, strokeWidth: 2, "aria-hidden": true }) })
|
|
18033
18176
|
]
|
|
18034
18177
|
}
|
|
18035
18178
|
)
|
|
@@ -18179,7 +18322,7 @@ function setMediaStripItemLink(tree, index, link) {
|
|
|
18179
18322
|
}
|
|
18180
18323
|
|
|
18181
18324
|
// src/ui/ai-section/AiMediaStripOverlay.tsx
|
|
18182
|
-
import { Fragment as
|
|
18325
|
+
import { Fragment as Fragment7, jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
18183
18326
|
var PRIMARY3 = "#0885FE";
|
|
18184
18327
|
var OHW_BLUE = `var(--ohw-primary, ${PRIMARY3})`;
|
|
18185
18328
|
var OHW_BLUE_DARK = `color-mix(in srgb, var(--ohw-primary, ${PRIMARY3}) 60%, #000000)`;
|
|
@@ -18267,7 +18410,7 @@ function Pill({
|
|
|
18267
18410
|
disabled,
|
|
18268
18411
|
active
|
|
18269
18412
|
}) {
|
|
18270
|
-
return /* @__PURE__ */
|
|
18413
|
+
return /* @__PURE__ */ jsx20(
|
|
18271
18414
|
"button",
|
|
18272
18415
|
{
|
|
18273
18416
|
type: "button",
|
|
@@ -18298,7 +18441,7 @@ function Pill({
|
|
|
18298
18441
|
function AltInput({ value, onCommit }) {
|
|
18299
18442
|
const [draft, setDraft] = useState8(value);
|
|
18300
18443
|
useEffect6(() => setDraft(value), [value]);
|
|
18301
|
-
return /* @__PURE__ */
|
|
18444
|
+
return /* @__PURE__ */ jsxs11(
|
|
18302
18445
|
"div",
|
|
18303
18446
|
{
|
|
18304
18447
|
style: {
|
|
@@ -18314,7 +18457,7 @@ function AltInput({ value, onCommit }) {
|
|
|
18314
18457
|
boxSizing: "border-box"
|
|
18315
18458
|
},
|
|
18316
18459
|
children: [
|
|
18317
|
-
/* @__PURE__ */
|
|
18460
|
+
/* @__PURE__ */ jsx20(
|
|
18318
18461
|
"span",
|
|
18319
18462
|
{
|
|
18320
18463
|
style: {
|
|
@@ -18328,7 +18471,7 @@ function AltInput({ value, onCommit }) {
|
|
|
18328
18471
|
children: "Alt"
|
|
18329
18472
|
}
|
|
18330
18473
|
),
|
|
18331
|
-
/* @__PURE__ */
|
|
18474
|
+
/* @__PURE__ */ jsx20(
|
|
18332
18475
|
"input",
|
|
18333
18476
|
{
|
|
18334
18477
|
type: "text",
|
|
@@ -18397,7 +18540,7 @@ function LinkInput({ value, onCommit }) {
|
|
|
18397
18540
|
setInvalid(false);
|
|
18398
18541
|
onCommit(next);
|
|
18399
18542
|
};
|
|
18400
|
-
return /* @__PURE__ */
|
|
18543
|
+
return /* @__PURE__ */ jsxs11(
|
|
18401
18544
|
"div",
|
|
18402
18545
|
{
|
|
18403
18546
|
style: {
|
|
@@ -18414,7 +18557,7 @@ function LinkInput({ value, onCommit }) {
|
|
|
18414
18557
|
boxShadow: invalid ? "inset 0 0 0 1.5px #EF4444" : "none"
|
|
18415
18558
|
},
|
|
18416
18559
|
children: [
|
|
18417
|
-
/* @__PURE__ */
|
|
18560
|
+
/* @__PURE__ */ jsx20(
|
|
18418
18561
|
"span",
|
|
18419
18562
|
{
|
|
18420
18563
|
style: {
|
|
@@ -18428,7 +18571,7 @@ function LinkInput({ value, onCommit }) {
|
|
|
18428
18571
|
children: "Link"
|
|
18429
18572
|
}
|
|
18430
18573
|
),
|
|
18431
|
-
/* @__PURE__ */
|
|
18574
|
+
/* @__PURE__ */ jsx20(
|
|
18432
18575
|
"input",
|
|
18433
18576
|
{
|
|
18434
18577
|
type: "text",
|
|
@@ -18504,7 +18647,7 @@ function MediaStripToolbar({
|
|
|
18504
18647
|
width: "100%",
|
|
18505
18648
|
scrollbarWidth: "none"
|
|
18506
18649
|
} : { display: "flex", gap: 6, flexWrap: "nowrap", justifyContent: "center" };
|
|
18507
|
-
return /* @__PURE__ */
|
|
18650
|
+
return /* @__PURE__ */ jsxs11(
|
|
18508
18651
|
"div",
|
|
18509
18652
|
{
|
|
18510
18653
|
"data-ohw-bridge": "",
|
|
@@ -18524,38 +18667,38 @@ function MediaStripToolbar({
|
|
|
18524
18667
|
maxWidth: isMobile ? "calc(100vw - 24px)" : "none"
|
|
18525
18668
|
},
|
|
18526
18669
|
children: [
|
|
18527
|
-
/* @__PURE__ */
|
|
18528
|
-
VARIANTS.map((v) => /* @__PURE__ */
|
|
18529
|
-
ALIGNS.map((a) => /* @__PURE__ */
|
|
18670
|
+
/* @__PURE__ */ jsxs11("div", { style: rowStyle, children: [
|
|
18671
|
+
VARIANTS.map((v) => /* @__PURE__ */ jsx20(Pill, { label: v.label, active: variant === v.value, onClick: () => onSetVariant(v.value) }, v.value)),
|
|
18672
|
+
ALIGNS.map((a) => /* @__PURE__ */ jsx20(Pill, { label: a.label, active: align === a.value, onClick: () => onSetAlign(a.value) }, a.value))
|
|
18530
18673
|
] }),
|
|
18531
|
-
/* @__PURE__ */
|
|
18532
|
-
HOVERS.map((h) => /* @__PURE__ */
|
|
18533
|
-
TREATMENTS.map((t) => /* @__PURE__ */
|
|
18674
|
+
/* @__PURE__ */ jsxs11("div", { style: rowStyle, children: [
|
|
18675
|
+
HOVERS.map((h) => /* @__PURE__ */ jsx20(Pill, { label: h.label, active: hover === h.value, onClick: () => onSetHover(h.value) }, h.value)),
|
|
18676
|
+
TREATMENTS.map((t) => /* @__PURE__ */ jsx20(Pill, { label: t.label, active: treatment === t.value, onClick: () => onSetTreatment(t.value) }, t.value))
|
|
18534
18677
|
] }),
|
|
18535
|
-
/* @__PURE__ */
|
|
18536
|
-
/* @__PURE__ */
|
|
18537
|
-
/* @__PURE__ */
|
|
18678
|
+
/* @__PURE__ */ jsxs11("div", { style: { display: "flex", gap: 6, alignItems: "center" }, children: [
|
|
18679
|
+
/* @__PURE__ */ jsx20(Pill, { label: "\u2212", onClick: () => onResize(-8) }),
|
|
18680
|
+
/* @__PURE__ */ jsxs11("span", { style: { color: "#ffffff", fontSize: 12, minWidth: 34, textAlign: "center" }, children: [
|
|
18538
18681
|
sizeValue,
|
|
18539
18682
|
"px"
|
|
18540
18683
|
] }),
|
|
18541
|
-
/* @__PURE__ */
|
|
18684
|
+
/* @__PURE__ */ jsx20(Pill, { label: "+", onClick: () => onResize(8) })
|
|
18542
18685
|
] }),
|
|
18543
|
-
/* @__PURE__ */
|
|
18544
|
-
/* @__PURE__ */
|
|
18545
|
-
currentHref && /* @__PURE__ */
|
|
18546
|
-
/* @__PURE__ */
|
|
18547
|
-
/* @__PURE__ */
|
|
18686
|
+
/* @__PURE__ */ jsx20("div", { style: { display: "flex", justifyContent: "center", width: "100%" }, children: /* @__PURE__ */ jsx20(AltInput, { value: currentAlt, onCommit: onSetAlt }) }),
|
|
18687
|
+
/* @__PURE__ */ jsx20("div", { style: { display: "flex", justifyContent: "center", width: "100%" }, children: /* @__PURE__ */ jsx20(LinkInput, { value: currentHref, onCommit: (href) => onSetLink(href, currentTarget) }) }),
|
|
18688
|
+
currentHref && /* @__PURE__ */ jsxs11("div", { style: rowStyle, children: [
|
|
18689
|
+
/* @__PURE__ */ jsx20(Pill, { label: "New tab", active: currentTarget === "new-tab", onClick: () => onSetLink(currentHref, "new-tab") }),
|
|
18690
|
+
/* @__PURE__ */ jsx20(Pill, { label: "Same tab", active: currentTarget === "same-tab", onClick: () => onSetLink(currentHref, "same-tab") })
|
|
18548
18691
|
] }),
|
|
18549
|
-
/* @__PURE__ */
|
|
18550
|
-
/* @__PURE__ */
|
|
18551
|
-
/* @__PURE__ */
|
|
18552
|
-
/* @__PURE__ */
|
|
18692
|
+
/* @__PURE__ */ jsxs11("div", { style: rowStyle, children: [
|
|
18693
|
+
/* @__PURE__ */ jsx20(Pill, { label: "Change Image", onClick: onChangeImage }),
|
|
18694
|
+
/* @__PURE__ */ jsx20(Pill, { label: "+ Item", onClick: onAddItem }),
|
|
18695
|
+
/* @__PURE__ */ jsx20(Pill, { label: "\u2212 Item", onClick: onRemoveItem, disabled: itemCount <= 1 })
|
|
18553
18696
|
] }),
|
|
18554
|
-
/* @__PURE__ */
|
|
18555
|
-
/* @__PURE__ */
|
|
18556
|
-
/* @__PURE__ */
|
|
18697
|
+
/* @__PURE__ */ jsxs11("div", { style: rowStyle, children: [
|
|
18698
|
+
/* @__PURE__ */ jsx20(Pill, { label: "\u2190 Move", onClick: onMoveLeft, disabled: index <= 0 }),
|
|
18699
|
+
/* @__PURE__ */ jsx20(Pill, { label: "\u2192 Move", onClick: onMoveRight, disabled: index >= itemCount - 1 })
|
|
18557
18700
|
] }),
|
|
18558
|
-
error && /* @__PURE__ */
|
|
18701
|
+
error && /* @__PURE__ */ jsx20("div", { style: { color: "#FCA5A5", fontSize: 11, maxWidth: 220, textAlign: "center" }, children: error })
|
|
18559
18702
|
]
|
|
18560
18703
|
}
|
|
18561
18704
|
);
|
|
@@ -18684,8 +18827,8 @@ function AiMediaStripOverlay({
|
|
|
18684
18827
|
const activeItemRect = useLiveItemRect(active);
|
|
18685
18828
|
const TOOLBAR_APPROX_H = 170;
|
|
18686
18829
|
const toolbarState = activeItemRect && activeItemRect.top < TOOLBAR_APPROX_H ? "active-bottom" : "active-top";
|
|
18687
|
-
return /* @__PURE__ */
|
|
18688
|
-
hoverHandleRect && hover && /* @__PURE__ */
|
|
18830
|
+
return /* @__PURE__ */ jsxs11(Fragment7, { children: [
|
|
18831
|
+
hoverHandleRect && hover && /* @__PURE__ */ jsx20(
|
|
18689
18832
|
"button",
|
|
18690
18833
|
{
|
|
18691
18834
|
type: "button",
|
|
@@ -18713,15 +18856,15 @@ function AiMediaStripOverlay({
|
|
|
18713
18856
|
fontSize: 14,
|
|
18714
18857
|
fontWeight: 700
|
|
18715
18858
|
},
|
|
18716
|
-
children: /* @__PURE__ */
|
|
18859
|
+
children: /* @__PURE__ */ jsx20(Star, { size: 14, style: { pointerEvents: "none" } })
|
|
18717
18860
|
}
|
|
18718
18861
|
),
|
|
18719
|
-
activeItemRect && active && activeEntry && /* @__PURE__ */
|
|
18862
|
+
activeItemRect && active && activeEntry && /* @__PURE__ */ jsx20(
|
|
18720
18863
|
ItemInteractionLayer,
|
|
18721
18864
|
{
|
|
18722
18865
|
rect: activeItemRect,
|
|
18723
18866
|
state: toolbarState,
|
|
18724
|
-
toolbar: /* @__PURE__ */
|
|
18867
|
+
toolbar: /* @__PURE__ */ jsx20(
|
|
18725
18868
|
MediaStripToolbar,
|
|
18726
18869
|
{
|
|
18727
18870
|
entry: activeEntry,
|
|
@@ -18801,7 +18944,7 @@ function AiMediaStripOverlay({
|
|
|
18801
18944
|
// src/ui/ai-section/AiPricingCardOverlay.tsx
|
|
18802
18945
|
import { useCallback as useCallback4, useEffect as useEffect7, useLayoutEffect as useLayoutEffect4, useRef as useRef6, useState as useState9 } from "react";
|
|
18803
18946
|
import { Check as Check2, ChevronDown as ChevronDown3, Minus, Plus as Plus2, Star as Star2 } from "lucide-react";
|
|
18804
|
-
import { Fragment as
|
|
18947
|
+
import { Fragment as Fragment8, jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
18805
18948
|
var PRIMARY4 = "var(--ohw-primary, #0885FE)";
|
|
18806
18949
|
var CHROME_SELECTOR = "[data-ohw-toolbar], [data-ohw-edit-chrome], [data-ohw-item-interaction], [data-ohw-link-modal-root], [data-ohw-section-picker], [data-ohw-ai-review], [data-ohw-more-menu]";
|
|
18807
18950
|
function findPricingCardElement(sectionId, index) {
|
|
@@ -18890,7 +19033,7 @@ function GridToolbarSlot({ gridRect, children }) {
|
|
|
18890
19033
|
return () => ro.disconnect();
|
|
18891
19034
|
}, [centerX, children]);
|
|
18892
19035
|
const mobile = window.innerWidth <= 480;
|
|
18893
|
-
return /* @__PURE__ */
|
|
19036
|
+
return /* @__PURE__ */ jsx21(
|
|
18894
19037
|
"div",
|
|
18895
19038
|
{
|
|
18896
19039
|
ref: slotRef,
|
|
@@ -18925,7 +19068,7 @@ function requestValidateTree2(postToParent2, tree) {
|
|
|
18925
19068
|
});
|
|
18926
19069
|
}
|
|
18927
19070
|
function StyleSwatch({ style }) {
|
|
18928
|
-
return /* @__PURE__ */
|
|
19071
|
+
return /* @__PURE__ */ jsx21(
|
|
18929
19072
|
"span",
|
|
18930
19073
|
{
|
|
18931
19074
|
"aria-hidden": true,
|
|
@@ -18939,19 +19082,19 @@ function StyleSwatch({ style }) {
|
|
|
18939
19082
|
);
|
|
18940
19083
|
}
|
|
18941
19084
|
function ButtonGlyph() {
|
|
18942
|
-
return /* @__PURE__ */
|
|
18943
|
-
/* @__PURE__ */
|
|
18944
|
-
/* @__PURE__ */
|
|
19085
|
+
return /* @__PURE__ */ jsxs12("svg", { width: "18", height: "12", viewBox: "0 0 18 12", fill: "none", "aria-hidden": true, style: { pointerEvents: "none" }, children: [
|
|
19086
|
+
/* @__PURE__ */ jsx21("rect", { x: "0.75", y: "0.75", width: "16.5", height: "10.5", rx: "3", stroke: "currentColor", strokeWidth: "1.5" }),
|
|
19087
|
+
/* @__PURE__ */ jsx21("path", { d: "M5.5 6H12.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
|
|
18945
19088
|
] });
|
|
18946
19089
|
}
|
|
18947
19090
|
function FeatureGlyph({ mode }) {
|
|
18948
|
-
return /* @__PURE__ */
|
|
18949
|
-
/* @__PURE__ */
|
|
18950
|
-
/* @__PURE__ */
|
|
18951
|
-
/* @__PURE__ */
|
|
18952
|
-
/* @__PURE__ */
|
|
18953
|
-
/* @__PURE__ */
|
|
18954
|
-
mode === "add" && /* @__PURE__ */
|
|
19091
|
+
return /* @__PURE__ */ jsxs12("svg", { width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", "aria-hidden": true, style: { pointerEvents: "none" }, children: [
|
|
19092
|
+
/* @__PURE__ */ jsx21("circle", { cx: "8", cy: "8", r: "7.25", stroke: "currentColor", strokeWidth: "1.5" }),
|
|
19093
|
+
/* @__PURE__ */ jsx21("path", { d: "M5 8.2L7.2 10.3L11 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
|
|
19094
|
+
/* @__PURE__ */ jsx21("circle", { cx: "13.5", cy: "13.5", r: "4.25", fill: "var(--ohw-background, #ffffff)", stroke: "var(--ohw-background, #ffffff)", strokeWidth: "1" }),
|
|
19095
|
+
/* @__PURE__ */ jsx21("circle", { cx: "13.5", cy: "13.5", r: "3.75", fill: "var(--ohw-background, #ffffff)", stroke: PRIMARY4, strokeWidth: "1" }),
|
|
19096
|
+
/* @__PURE__ */ jsx21("path", { d: "M11.5 13.5H15.5", stroke: PRIMARY4, strokeWidth: "1.5", strokeLinecap: "round" }),
|
|
19097
|
+
mode === "add" && /* @__PURE__ */ jsx21("path", { d: "M13.5 11.5V15.5", stroke: PRIMARY4, strokeWidth: "1.5", strokeLinecap: "round" })
|
|
18955
19098
|
] });
|
|
18956
19099
|
}
|
|
18957
19100
|
function ToolbarAction({
|
|
@@ -18960,14 +19103,14 @@ function ToolbarAction({
|
|
|
18960
19103
|
disabled = false,
|
|
18961
19104
|
children
|
|
18962
19105
|
}) {
|
|
18963
|
-
const button = /* @__PURE__ */
|
|
18964
|
-
return /* @__PURE__ */
|
|
18965
|
-
/* @__PURE__ */
|
|
18966
|
-
/* @__PURE__ */
|
|
19106
|
+
const button = /* @__PURE__ */ jsx21(CustomToolbarButton, { type: "button", "aria-label": label, disabled, onClick, className: "size-8", children });
|
|
19107
|
+
return /* @__PURE__ */ jsxs12(Tooltip, { children: [
|
|
19108
|
+
/* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: disabled ? /* @__PURE__ */ jsx21("span", { className: "inline-flex", children: button }) : button }),
|
|
19109
|
+
/* @__PURE__ */ jsx21(TooltipContent, { side: "bottom", sideOffset: 8, children: label })
|
|
18967
19110
|
] });
|
|
18968
19111
|
}
|
|
18969
19112
|
function ToolbarSeparator() {
|
|
18970
|
-
return /* @__PURE__ */
|
|
19113
|
+
return /* @__PURE__ */ jsx21("span", { "aria-hidden": true, className: "mx-0.5 block h-6 w-px shrink-0 bg-border" });
|
|
18971
19114
|
}
|
|
18972
19115
|
function CardStyleMenu({
|
|
18973
19116
|
value,
|
|
@@ -18975,7 +19118,7 @@ function CardStyleMenu({
|
|
|
18975
19118
|
disabled = false
|
|
18976
19119
|
}) {
|
|
18977
19120
|
const current = PRICING_CARD_STYLES.find((s) => s.value === value) ?? PRICING_CARD_STYLES[0];
|
|
18978
|
-
const trigger = /* @__PURE__ */
|
|
19121
|
+
const trigger = /* @__PURE__ */ jsxs12(
|
|
18979
19122
|
"button",
|
|
18980
19123
|
{
|
|
18981
19124
|
type: "button",
|
|
@@ -18986,28 +19129,28 @@ function CardStyleMenu({
|
|
|
18986
19129
|
disabled && "cursor-not-allowed opacity-40 hover:bg-transparent"
|
|
18987
19130
|
),
|
|
18988
19131
|
children: [
|
|
18989
|
-
/* @__PURE__ */
|
|
18990
|
-
/* @__PURE__ */
|
|
18991
|
-
/* @__PURE__ */
|
|
19132
|
+
/* @__PURE__ */ jsx21(StyleSwatch, { style: current.value }),
|
|
19133
|
+
/* @__PURE__ */ jsx21("span", { className: "flex-1 text-left", children: current.label }),
|
|
19134
|
+
/* @__PURE__ */ jsx21(ChevronDown3, { size: 16, style: { pointerEvents: "none" } })
|
|
18992
19135
|
]
|
|
18993
19136
|
}
|
|
18994
19137
|
);
|
|
18995
19138
|
if (disabled) {
|
|
18996
|
-
return /* @__PURE__ */
|
|
18997
|
-
/* @__PURE__ */
|
|
18998
|
-
/* @__PURE__ */
|
|
18999
|
-
/* @__PURE__ */
|
|
19000
|
-
/* @__PURE__ */
|
|
19139
|
+
return /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-1.5 pl-1.5", children: [
|
|
19140
|
+
/* @__PURE__ */ jsx21("span", { className: "text-xs text-muted-foreground opacity-50", children: "Card style" }),
|
|
19141
|
+
/* @__PURE__ */ jsxs12(Tooltip, { children: [
|
|
19142
|
+
/* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx21("span", { className: "inline-flex", children: trigger }) }),
|
|
19143
|
+
/* @__PURE__ */ jsx21(TooltipContent, { side: "bottom", sideOffset: 8, children: "Mark as featured to edit card style" })
|
|
19001
19144
|
] })
|
|
19002
19145
|
] });
|
|
19003
19146
|
}
|
|
19004
|
-
return /* @__PURE__ */
|
|
19005
|
-
/* @__PURE__ */
|
|
19006
|
-
/* @__PURE__ */
|
|
19007
|
-
/* @__PURE__ */
|
|
19008
|
-
/* @__PURE__ */
|
|
19147
|
+
return /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-1.5 pl-1.5", children: [
|
|
19148
|
+
/* @__PURE__ */ jsx21("span", { className: "text-xs text-muted-foreground", children: "Card style" }),
|
|
19149
|
+
/* @__PURE__ */ jsxs12(DropdownMenu, { modal: false, children: [
|
|
19150
|
+
/* @__PURE__ */ jsx21(DropdownMenuTrigger, { asChild: true, children: trigger }),
|
|
19151
|
+
/* @__PURE__ */ jsx21(DropdownMenuContent, { align: "end", sideOffset: 8, className: "w-[152px] min-w-[152px] p-1", children: PRICING_CARD_STYLES.map((style) => {
|
|
19009
19152
|
const selected = style.value === value;
|
|
19010
|
-
return /* @__PURE__ */
|
|
19153
|
+
return /* @__PURE__ */ jsxs12(
|
|
19011
19154
|
DropdownMenuItem,
|
|
19012
19155
|
{
|
|
19013
19156
|
role: "menuitemradio",
|
|
@@ -19015,9 +19158,9 @@ function CardStyleMenu({
|
|
|
19015
19158
|
onSelect: () => onChange(style.value),
|
|
19016
19159
|
className: cn("grid grid-cols-[18px_1fr_16px] gap-2 py-2 pl-2 pr-2 text-[13px]", selected && "bg-muted"),
|
|
19017
19160
|
children: [
|
|
19018
|
-
/* @__PURE__ */
|
|
19019
|
-
/* @__PURE__ */
|
|
19020
|
-
selected && /* @__PURE__ */
|
|
19161
|
+
/* @__PURE__ */ jsx21(StyleSwatch, { style: style.value }),
|
|
19162
|
+
/* @__PURE__ */ jsx21("span", { children: style.label }),
|
|
19163
|
+
selected && /* @__PURE__ */ jsx21(Check2, { size: 16, className: "text-bridge-primary" })
|
|
19021
19164
|
]
|
|
19022
19165
|
},
|
|
19023
19166
|
style.value
|
|
@@ -19047,7 +19190,7 @@ function PricingCardToolbar({
|
|
|
19047
19190
|
const style = pricingCardStyle(entry.tree, index);
|
|
19048
19191
|
const featuredTag = pricingCardFeaturedTag(entry.tree, index);
|
|
19049
19192
|
const mobile = window.innerWidth <= 480;
|
|
19050
|
-
return /* @__PURE__ */
|
|
19193
|
+
return /* @__PURE__ */ jsx21(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxs12(
|
|
19051
19194
|
"div",
|
|
19052
19195
|
{
|
|
19053
19196
|
"data-ohw-bridge": "",
|
|
@@ -19059,7 +19202,7 @@ function PricingCardToolbar({
|
|
|
19059
19202
|
),
|
|
19060
19203
|
style: { maxWidth: mobile ? "calc(100vw - 24px)" : void 0 },
|
|
19061
19204
|
children: [
|
|
19062
|
-
/* @__PURE__ */
|
|
19205
|
+
/* @__PURE__ */ jsxs12(
|
|
19063
19206
|
"div",
|
|
19064
19207
|
{
|
|
19065
19208
|
className: cn(
|
|
@@ -19068,8 +19211,8 @@ function PricingCardToolbar({
|
|
|
19068
19211
|
mobile ? "flex-wrap justify-center" : "flex-nowrap"
|
|
19069
19212
|
),
|
|
19070
19213
|
children: [
|
|
19071
|
-
/* @__PURE__ */
|
|
19072
|
-
/* @__PURE__ */
|
|
19214
|
+
/* @__PURE__ */ jsxs12(Tooltip, { children: [
|
|
19215
|
+
/* @__PURE__ */ jsx21(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx21(
|
|
19073
19216
|
CustomToolbarButton,
|
|
19074
19217
|
{
|
|
19075
19218
|
type: "button",
|
|
@@ -19077,7 +19220,7 @@ function PricingCardToolbar({
|
|
|
19077
19220
|
"aria-pressed": featuredTag,
|
|
19078
19221
|
onClick: () => onSetFeaturedTag(!featuredTag),
|
|
19079
19222
|
className: "group size-8",
|
|
19080
|
-
children: /* @__PURE__ */
|
|
19223
|
+
children: /* @__PURE__ */ jsx21(
|
|
19081
19224
|
Star2,
|
|
19082
19225
|
{
|
|
19083
19226
|
size: 16,
|
|
@@ -19092,25 +19235,25 @@ function PricingCardToolbar({
|
|
|
19092
19235
|
)
|
|
19093
19236
|
}
|
|
19094
19237
|
) }),
|
|
19095
|
-
/* @__PURE__ */
|
|
19238
|
+
/* @__PURE__ */ jsx21(TooltipContent, { side: "bottom", sideOffset: 8, children: featuredTag ? "Unmark featured" : "Mark as featured" })
|
|
19096
19239
|
] }),
|
|
19097
|
-
/* @__PURE__ */
|
|
19098
|
-
/* @__PURE__ */
|
|
19099
|
-
/* @__PURE__ */
|
|
19100
|
-
/* @__PURE__ */
|
|
19101
|
-
/* @__PURE__ */
|
|
19102
|
-
/* @__PURE__ */
|
|
19103
|
-
/* @__PURE__ */
|
|
19240
|
+
/* @__PURE__ */ jsx21(ToolbarSeparator, {}),
|
|
19241
|
+
/* @__PURE__ */ jsx21(CardStyleMenu, { value: style, onChange: onSetStyle, disabled: !featuredTag }),
|
|
19242
|
+
/* @__PURE__ */ jsx21(ToolbarSeparator, {}),
|
|
19243
|
+
/* @__PURE__ */ jsx21(ToolbarAction, { label: "Add button", onClick: onAddButton, disabled: buttonCount >= 2, children: /* @__PURE__ */ jsx21(ButtonGlyph, {}) }),
|
|
19244
|
+
/* @__PURE__ */ jsx21(ToolbarAction, { label: "Remove button", onClick: onRemoveButton, disabled: buttonCount === 0, children: /* @__PURE__ */ jsxs12("span", { className: "relative inline-flex", children: [
|
|
19245
|
+
/* @__PURE__ */ jsx21(ButtonGlyph, {}),
|
|
19246
|
+
/* @__PURE__ */ jsx21(Minus, { size: 10, strokeWidth: 2.5, className: "absolute -right-1.5 -top-1.5 rounded-full bg-background text-bridge-primary" })
|
|
19104
19247
|
] }) }),
|
|
19105
|
-
/* @__PURE__ */
|
|
19106
|
-
/* @__PURE__ */
|
|
19107
|
-
/* @__PURE__ */
|
|
19108
|
-
/* @__PURE__ */
|
|
19109
|
-
/* @__PURE__ */
|
|
19248
|
+
/* @__PURE__ */ jsx21(ToolbarAction, { label: "Add feature", onClick: onAddFeature, disabled: featureCount >= 10, children: /* @__PURE__ */ jsx21(FeatureGlyph, { mode: "add" }) }),
|
|
19249
|
+
/* @__PURE__ */ jsx21(ToolbarAction, { label: "Remove feature", onClick: onRemoveFeature, disabled: featureCount <= 1, children: /* @__PURE__ */ jsx21(FeatureGlyph, { mode: "remove" }) }),
|
|
19250
|
+
/* @__PURE__ */ jsx21(ToolbarSeparator, {}),
|
|
19251
|
+
/* @__PURE__ */ jsx21(ToolbarAction, { label: "Add tier", onClick: onAddTier, disabled: collectionCount >= 4, children: /* @__PURE__ */ jsx21(Plus2, { size: 16, style: { pointerEvents: "none" } }) }),
|
|
19252
|
+
/* @__PURE__ */ jsx21(ToolbarAction, { label: "Remove tier", onClick: onRemoveTier, disabled: collectionCount <= 1, children: /* @__PURE__ */ jsx21(Minus, { size: 16, style: { pointerEvents: "none" } }) })
|
|
19110
19253
|
]
|
|
19111
19254
|
}
|
|
19112
19255
|
),
|
|
19113
|
-
error && /* @__PURE__ */
|
|
19256
|
+
error && /* @__PURE__ */ jsx21("div", { className: "max-w-[260px] rounded-md bg-background px-2 py-1 text-center text-[11px] text-destructive shadow-sm", children: error })
|
|
19114
19257
|
]
|
|
19115
19258
|
}
|
|
19116
19259
|
) });
|
|
@@ -19228,11 +19371,11 @@ function AiPricingCardOverlay({
|
|
|
19228
19371
|
const activeCardRect = useLiveCardRect(active);
|
|
19229
19372
|
const activeGridRect = useLiveCardRect(active, true);
|
|
19230
19373
|
const hoverRect = useLiveCardRect(hover && !sameRef(hover, active) ? hover : null);
|
|
19231
|
-
return /* @__PURE__ */
|
|
19232
|
-
hoverRect && /* @__PURE__ */
|
|
19233
|
-
activeCardRect && activeGridRect && active && activeEntry && /* @__PURE__ */
|
|
19234
|
-
/* @__PURE__ */
|
|
19235
|
-
/* @__PURE__ */
|
|
19374
|
+
return /* @__PURE__ */ jsxs12(Fragment8, { children: [
|
|
19375
|
+
hoverRect && /* @__PURE__ */ jsx21(ItemInteractionLayer, { rect: hoverRect, state: "hover" }),
|
|
19376
|
+
activeCardRect && activeGridRect && active && activeEntry && /* @__PURE__ */ jsxs12(Fragment8, { children: [
|
|
19377
|
+
/* @__PURE__ */ jsx21(ItemInteractionLayer, { rect: activeCardRect, state: "active-top" }),
|
|
19378
|
+
/* @__PURE__ */ jsx21(GridToolbarSlot, { gridRect: activeGridRect, children: /* @__PURE__ */ jsx21(
|
|
19236
19379
|
PricingCardToolbar,
|
|
19237
19380
|
{
|
|
19238
19381
|
entry: activeEntry,
|
|
@@ -19260,7 +19403,7 @@ function AiPricingCardOverlay({
|
|
|
19260
19403
|
onRemoveFeature: () => runMutation(active.sectionId, (tree) => removePricingCardFeature(tree, active.index))
|
|
19261
19404
|
}
|
|
19262
19405
|
) }),
|
|
19263
|
-
/* @__PURE__ */
|
|
19406
|
+
/* @__PURE__ */ jsx21(
|
|
19264
19407
|
"div",
|
|
19265
19408
|
{
|
|
19266
19409
|
"data-ohw-bridge": "",
|
|
@@ -19353,7 +19496,7 @@ function extractYouTubeId(input) {
|
|
|
19353
19496
|
}
|
|
19354
19497
|
|
|
19355
19498
|
// src/ui/ai-section/AiVideoOverlay.tsx
|
|
19356
|
-
import { Fragment as
|
|
19499
|
+
import { Fragment as Fragment9, jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
19357
19500
|
var PRIMARY5 = "#0885FE";
|
|
19358
19501
|
var OHW_BLUE2 = `var(--ohw-primary, ${PRIMARY5})`;
|
|
19359
19502
|
var OHW_BLUE_DARK2 = `color-mix(in srgb, var(--ohw-primary, ${PRIMARY5}) 60%, #000000)`;
|
|
@@ -19421,7 +19564,7 @@ function Pill2({
|
|
|
19421
19564
|
onClick,
|
|
19422
19565
|
disabled
|
|
19423
19566
|
}) {
|
|
19424
|
-
return /* @__PURE__ */
|
|
19567
|
+
return /* @__PURE__ */ jsx22(
|
|
19425
19568
|
"button",
|
|
19426
19569
|
{
|
|
19427
19570
|
type: "button",
|
|
@@ -19480,8 +19623,8 @@ function VideoUrlInput({ value, onCommit }) {
|
|
|
19480
19623
|
onCommit(id);
|
|
19481
19624
|
}
|
|
19482
19625
|
};
|
|
19483
|
-
return /* @__PURE__ */
|
|
19484
|
-
/* @__PURE__ */
|
|
19626
|
+
return /* @__PURE__ */ jsxs13("div", { style: { display: "flex", flexDirection: "column", gap: 4, width: "100%", maxWidth: 280 }, children: [
|
|
19627
|
+
/* @__PURE__ */ jsxs13(
|
|
19485
19628
|
"div",
|
|
19486
19629
|
{
|
|
19487
19630
|
style: {
|
|
@@ -19497,7 +19640,7 @@ function VideoUrlInput({ value, onCommit }) {
|
|
|
19497
19640
|
boxShadow: invalid ? "inset 0 0 0 1.5px #EF4444" : "none"
|
|
19498
19641
|
},
|
|
19499
19642
|
children: [
|
|
19500
|
-
/* @__PURE__ */
|
|
19643
|
+
/* @__PURE__ */ jsx22(
|
|
19501
19644
|
"span",
|
|
19502
19645
|
{
|
|
19503
19646
|
style: {
|
|
@@ -19512,7 +19655,7 @@ function VideoUrlInput({ value, onCommit }) {
|
|
|
19512
19655
|
children: "Video"
|
|
19513
19656
|
}
|
|
19514
19657
|
),
|
|
19515
|
-
/* @__PURE__ */
|
|
19658
|
+
/* @__PURE__ */ jsx22(
|
|
19516
19659
|
"input",
|
|
19517
19660
|
{
|
|
19518
19661
|
type: "text",
|
|
@@ -19549,7 +19692,7 @@ function VideoUrlInput({ value, onCommit }) {
|
|
|
19549
19692
|
]
|
|
19550
19693
|
}
|
|
19551
19694
|
),
|
|
19552
|
-
invalid && /* @__PURE__ */
|
|
19695
|
+
invalid && /* @__PURE__ */ jsx22("div", { style: { color: "#FCA5A5", fontSize: 11, textAlign: "center" }, children: "That doesn't look like a YouTube link \u2014 try pasting the video URL again." })
|
|
19553
19696
|
] });
|
|
19554
19697
|
}
|
|
19555
19698
|
function VideoToolbar({
|
|
@@ -19559,7 +19702,7 @@ function VideoToolbar({
|
|
|
19559
19702
|
onSetVideoId,
|
|
19560
19703
|
onRemove
|
|
19561
19704
|
}) {
|
|
19562
|
-
return /* @__PURE__ */
|
|
19705
|
+
return /* @__PURE__ */ jsxs13(
|
|
19563
19706
|
"div",
|
|
19564
19707
|
{
|
|
19565
19708
|
"data-ohw-bridge": "",
|
|
@@ -19579,9 +19722,9 @@ function VideoToolbar({
|
|
|
19579
19722
|
opacity: pending ? 0.6 : 1
|
|
19580
19723
|
},
|
|
19581
19724
|
children: [
|
|
19582
|
-
/* @__PURE__ */
|
|
19583
|
-
/* @__PURE__ */
|
|
19584
|
-
error && /* @__PURE__ */
|
|
19725
|
+
/* @__PURE__ */ jsx22(VideoUrlInput, { value: videoId, onCommit: onSetVideoId }),
|
|
19726
|
+
/* @__PURE__ */ jsx22(Pill2, { label: "Remove video", onClick: onRemove, disabled: !videoId }),
|
|
19727
|
+
error && /* @__PURE__ */ jsx22("div", { style: { color: "#FCA5A5", fontSize: 11, maxWidth: 220, textAlign: "center" }, children: error })
|
|
19585
19728
|
]
|
|
19586
19729
|
}
|
|
19587
19730
|
);
|
|
@@ -19701,8 +19844,8 @@ function AiVideoOverlay({
|
|
|
19701
19844
|
const activeBlockRect = useLiveBlockRect(active);
|
|
19702
19845
|
const TOOLBAR_APPROX_H = 90;
|
|
19703
19846
|
const toolbarState = activeBlockRect && activeBlockRect.top < TOOLBAR_APPROX_H ? "active-bottom" : "active-top";
|
|
19704
|
-
return /* @__PURE__ */
|
|
19705
|
-
hoverHandleRect && hover && /* @__PURE__ */
|
|
19847
|
+
return /* @__PURE__ */ jsxs13(Fragment9, { children: [
|
|
19848
|
+
hoverHandleRect && hover && /* @__PURE__ */ jsx22(
|
|
19706
19849
|
"button",
|
|
19707
19850
|
{
|
|
19708
19851
|
type: "button",
|
|
@@ -19730,15 +19873,15 @@ function AiVideoOverlay({
|
|
|
19730
19873
|
fontSize: 14,
|
|
19731
19874
|
fontWeight: 700
|
|
19732
19875
|
},
|
|
19733
|
-
children: /* @__PURE__ */
|
|
19876
|
+
children: /* @__PURE__ */ jsx22(Star3, { size: 14, style: { pointerEvents: "none" } })
|
|
19734
19877
|
}
|
|
19735
19878
|
),
|
|
19736
|
-
activeBlockRect && active && activeEntry && /* @__PURE__ */
|
|
19879
|
+
activeBlockRect && active && activeEntry && /* @__PURE__ */ jsx22(
|
|
19737
19880
|
ItemInteractionLayer,
|
|
19738
19881
|
{
|
|
19739
19882
|
rect: activeBlockRect,
|
|
19740
19883
|
state: toolbarState,
|
|
19741
|
-
toolbar: /* @__PURE__ */
|
|
19884
|
+
toolbar: /* @__PURE__ */ jsx22(
|
|
19742
19885
|
VideoToolbar,
|
|
19743
19886
|
{
|
|
19744
19887
|
videoId: videoIdAt(activeEntry.tree, active.path),
|
|
@@ -19813,7 +19956,7 @@ function setCarouselAutoplay(tree, on) {
|
|
|
19813
19956
|
}
|
|
19814
19957
|
|
|
19815
19958
|
// src/ui/ai-section/AiFadeCarouselOverlay.tsx
|
|
19816
|
-
import { Fragment as
|
|
19959
|
+
import { Fragment as Fragment10, jsx as jsx23, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
19817
19960
|
var PRIMARY6 = "#0885FE";
|
|
19818
19961
|
var OHW_BLUE3 = `var(--ohw-primary, ${PRIMARY6})`;
|
|
19819
19962
|
var OHW_BLUE_DARK3 = `color-mix(in srgb, var(--ohw-primary, ${PRIMARY6}) 60%, #000000)`;
|
|
@@ -19896,7 +20039,7 @@ function requestAssetPick2(postToParent2) {
|
|
|
19896
20039
|
});
|
|
19897
20040
|
}
|
|
19898
20041
|
function Pill3({ label, onClick, disabled }) {
|
|
19899
|
-
return /* @__PURE__ */
|
|
20042
|
+
return /* @__PURE__ */ jsx23(
|
|
19900
20043
|
"button",
|
|
19901
20044
|
{
|
|
19902
20045
|
type: "button",
|
|
@@ -19930,7 +20073,7 @@ function TogglePill({
|
|
|
19930
20073
|
onToggle,
|
|
19931
20074
|
disabled
|
|
19932
20075
|
}) {
|
|
19933
|
-
return /* @__PURE__ */
|
|
20076
|
+
return /* @__PURE__ */ jsxs14(
|
|
19934
20077
|
"button",
|
|
19935
20078
|
{
|
|
19936
20079
|
type: "button",
|
|
@@ -19959,7 +20102,7 @@ function TogglePill({
|
|
|
19959
20102
|
},
|
|
19960
20103
|
children: [
|
|
19961
20104
|
label,
|
|
19962
|
-
/* @__PURE__ */
|
|
20105
|
+
/* @__PURE__ */ jsx23(
|
|
19963
20106
|
"span",
|
|
19964
20107
|
{
|
|
19965
20108
|
"aria-hidden": true,
|
|
@@ -19975,7 +20118,7 @@ function TogglePill({
|
|
|
19975
20118
|
background: on ? OHW_BLUE_DARK3 : "#CBD5E1",
|
|
19976
20119
|
transition: "background 120ms ease"
|
|
19977
20120
|
},
|
|
19978
|
-
children: /* @__PURE__ */
|
|
20121
|
+
children: /* @__PURE__ */ jsx23(
|
|
19979
20122
|
"span",
|
|
19980
20123
|
{
|
|
19981
20124
|
style: {
|
|
@@ -20004,7 +20147,7 @@ function CarouselSlideToolbar({
|
|
|
20004
20147
|
onChangeImage,
|
|
20005
20148
|
onToggleAutoplay
|
|
20006
20149
|
}) {
|
|
20007
|
-
return /* @__PURE__ */
|
|
20150
|
+
return /* @__PURE__ */ jsxs14(
|
|
20008
20151
|
"div",
|
|
20009
20152
|
{
|
|
20010
20153
|
"data-ohw-bridge": "",
|
|
@@ -20027,11 +20170,11 @@ function CarouselSlideToolbar({
|
|
|
20027
20170
|
pointerEvents: pending ? "none" : "auto"
|
|
20028
20171
|
},
|
|
20029
20172
|
children: [
|
|
20030
|
-
/* @__PURE__ */
|
|
20031
|
-
/* @__PURE__ */
|
|
20032
|
-
/* @__PURE__ */
|
|
20173
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", gap: 6, alignItems: "center" }, children: [
|
|
20174
|
+
/* @__PURE__ */ jsx23(Pill3, { label: "Change Image", onClick: onChangeImage }),
|
|
20175
|
+
/* @__PURE__ */ jsx23(TogglePill, { label: "Autoplay", on: autoplay, onToggle: onToggleAutoplay })
|
|
20033
20176
|
] }),
|
|
20034
|
-
error && /* @__PURE__ */
|
|
20177
|
+
error && /* @__PURE__ */ jsx23("div", { style: { color: "#FCA5A5", fontSize: 11, maxWidth: 220, textAlign: "center" }, children: error })
|
|
20035
20178
|
]
|
|
20036
20179
|
}
|
|
20037
20180
|
);
|
|
@@ -20171,8 +20314,8 @@ function AiFadeCarouselOverlay({
|
|
|
20171
20314
|
const activeItemRect = useLiveItemRect2(active);
|
|
20172
20315
|
const TOOLBAR_APPROX_H = 90;
|
|
20173
20316
|
const toolbarState = activeItemRect && activeItemRect.top < TOOLBAR_APPROX_H ? "active-bottom" : "active-top";
|
|
20174
|
-
return /* @__PURE__ */
|
|
20175
|
-
hoverHandleRect && hover && /* @__PURE__ */
|
|
20317
|
+
return /* @__PURE__ */ jsxs14(Fragment10, { children: [
|
|
20318
|
+
hoverHandleRect && hover && /* @__PURE__ */ jsx23(
|
|
20176
20319
|
"button",
|
|
20177
20320
|
{
|
|
20178
20321
|
type: "button",
|
|
@@ -20201,10 +20344,10 @@ function AiFadeCarouselOverlay({
|
|
|
20201
20344
|
fontSize: 14,
|
|
20202
20345
|
fontWeight: 700
|
|
20203
20346
|
},
|
|
20204
|
-
children: /* @__PURE__ */
|
|
20347
|
+
children: /* @__PURE__ */ jsx23(Star4, { size: 14, style: { pointerEvents: "none" } })
|
|
20205
20348
|
}
|
|
20206
20349
|
),
|
|
20207
|
-
swapping && /* @__PURE__ */
|
|
20350
|
+
swapping && /* @__PURE__ */ jsx23(
|
|
20208
20351
|
"div",
|
|
20209
20352
|
{
|
|
20210
20353
|
ref: skeletonRef,
|
|
@@ -20222,15 +20365,15 @@ function AiFadeCarouselOverlay({
|
|
|
20222
20365
|
zIndex: 2147483646,
|
|
20223
20366
|
pointerEvents: "none"
|
|
20224
20367
|
},
|
|
20225
|
-
children: /* @__PURE__ */
|
|
20368
|
+
children: /* @__PURE__ */ jsx23("style", { children: MEDIA_SKELETON_CSS })
|
|
20226
20369
|
}
|
|
20227
20370
|
),
|
|
20228
|
-
activeItemRect && active && activeEntry && /* @__PURE__ */
|
|
20371
|
+
activeItemRect && active && activeEntry && /* @__PURE__ */ jsx23(
|
|
20229
20372
|
ItemInteractionLayer,
|
|
20230
20373
|
{
|
|
20231
20374
|
rect: activeItemRect,
|
|
20232
20375
|
state: toolbarState,
|
|
20233
|
-
toolbar: /* @__PURE__ */
|
|
20376
|
+
toolbar: /* @__PURE__ */ jsx23(
|
|
20234
20377
|
CarouselSlideToolbar,
|
|
20235
20378
|
{
|
|
20236
20379
|
pending,
|
|
@@ -20587,22 +20730,22 @@ import { useEffect as useEffect13 } from "react";
|
|
|
20587
20730
|
import * as React9 from "react";
|
|
20588
20731
|
import { Dialog as DialogPrimitive } from "radix-ui";
|
|
20589
20732
|
import { X as X2 } from "lucide-react";
|
|
20590
|
-
import { jsx as
|
|
20733
|
+
import { jsx as jsx24, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
20591
20734
|
function Dialog2({
|
|
20592
20735
|
...props
|
|
20593
20736
|
}) {
|
|
20594
|
-
return /* @__PURE__ */
|
|
20737
|
+
return /* @__PURE__ */ jsx24(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
|
|
20595
20738
|
}
|
|
20596
20739
|
function DialogPortal({
|
|
20597
20740
|
...props
|
|
20598
20741
|
}) {
|
|
20599
|
-
return /* @__PURE__ */
|
|
20742
|
+
return /* @__PURE__ */ jsx24(DialogPrimitive.Portal, { ...props });
|
|
20600
20743
|
}
|
|
20601
20744
|
function DialogOverlay({
|
|
20602
20745
|
className,
|
|
20603
20746
|
...props
|
|
20604
20747
|
}) {
|
|
20605
|
-
return /* @__PURE__ */
|
|
20748
|
+
return /* @__PURE__ */ jsx24(
|
|
20606
20749
|
DialogPrimitive.Overlay,
|
|
20607
20750
|
{
|
|
20608
20751
|
"data-slot": "dialog-overlay",
|
|
@@ -20615,9 +20758,9 @@ function DialogOverlay({
|
|
|
20615
20758
|
var DialogContent = React9.forwardRef(
|
|
20616
20759
|
({ className, children, showCloseButton = true, container, ...props }, ref) => {
|
|
20617
20760
|
const positionMode = container ? "absolute" : "fixed";
|
|
20618
|
-
return /* @__PURE__ */
|
|
20619
|
-
/* @__PURE__ */
|
|
20620
|
-
/* @__PURE__ */
|
|
20761
|
+
return /* @__PURE__ */ jsxs15(DialogPortal, { container: container ?? void 0, children: [
|
|
20762
|
+
/* @__PURE__ */ jsx24(DialogOverlay, { className: cn(positionMode, "inset-0") }),
|
|
20763
|
+
/* @__PURE__ */ jsxs15(
|
|
20621
20764
|
DialogPrimitive.Content,
|
|
20622
20765
|
{
|
|
20623
20766
|
ref,
|
|
@@ -20633,13 +20776,13 @@ var DialogContent = React9.forwardRef(
|
|
|
20633
20776
|
...props,
|
|
20634
20777
|
children: [
|
|
20635
20778
|
children,
|
|
20636
|
-
showCloseButton ? /* @__PURE__ */
|
|
20779
|
+
showCloseButton ? /* @__PURE__ */ jsx24(
|
|
20637
20780
|
DialogPrimitive.Close,
|
|
20638
20781
|
{
|
|
20639
20782
|
type: "button",
|
|
20640
20783
|
className: "absolute right-[9px] top-[9px] rounded-sm p-1.5 text-foreground hover:bg-muted/50",
|
|
20641
20784
|
"aria-label": "Close",
|
|
20642
|
-
children: /* @__PURE__ */
|
|
20785
|
+
children: /* @__PURE__ */ jsx24(X2, { size: 16, "aria-hidden": true })
|
|
20643
20786
|
}
|
|
20644
20787
|
) : null
|
|
20645
20788
|
]
|
|
@@ -20653,13 +20796,13 @@ function DialogHeader({
|
|
|
20653
20796
|
className,
|
|
20654
20797
|
...props
|
|
20655
20798
|
}) {
|
|
20656
|
-
return /* @__PURE__ */
|
|
20799
|
+
return /* @__PURE__ */ jsx24("div", { className: cn("flex flex-col gap-1.5", className), ...props });
|
|
20657
20800
|
}
|
|
20658
20801
|
function DialogFooter({
|
|
20659
20802
|
className,
|
|
20660
20803
|
...props
|
|
20661
20804
|
}) {
|
|
20662
|
-
return /* @__PURE__ */
|
|
20805
|
+
return /* @__PURE__ */ jsx24(
|
|
20663
20806
|
"div",
|
|
20664
20807
|
{
|
|
20665
20808
|
className: cn("flex items-center justify-end gap-2", className),
|
|
@@ -20667,7 +20810,7 @@ function DialogFooter({
|
|
|
20667
20810
|
}
|
|
20668
20811
|
);
|
|
20669
20812
|
}
|
|
20670
|
-
var DialogTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
20813
|
+
var DialogTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
20671
20814
|
DialogPrimitive.Title,
|
|
20672
20815
|
{
|
|
20673
20816
|
ref,
|
|
@@ -20679,7 +20822,7 @@ var DialogTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
20679
20822
|
}
|
|
20680
20823
|
));
|
|
20681
20824
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
20682
|
-
var DialogDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
20825
|
+
var DialogDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
20683
20826
|
DialogPrimitive.Description,
|
|
20684
20827
|
{
|
|
20685
20828
|
ref,
|
|
@@ -20695,19 +20838,19 @@ import { Info, X as X4 } from "lucide-react";
|
|
|
20695
20838
|
|
|
20696
20839
|
// src/ui/link-modal/DestinationBreadcrumb.tsx
|
|
20697
20840
|
import { ArrowRight as ArrowRight2, File, GalleryVertical } from "lucide-react";
|
|
20698
|
-
import { jsx as
|
|
20841
|
+
import { jsx as jsx25, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
20699
20842
|
function DestinationBreadcrumb({
|
|
20700
20843
|
pageTitle,
|
|
20701
20844
|
sectionLabel
|
|
20702
20845
|
}) {
|
|
20703
|
-
return /* @__PURE__ */
|
|
20704
|
-
/* @__PURE__ */
|
|
20705
|
-
/* @__PURE__ */
|
|
20706
|
-
/* @__PURE__ */
|
|
20707
|
-
/* @__PURE__ */
|
|
20708
|
-
/* @__PURE__ */
|
|
20846
|
+
return /* @__PURE__ */ jsxs16("div", { className: "flex w-full flex-col gap-2", children: [
|
|
20847
|
+
/* @__PURE__ */ jsx25("p", { className: "text-sm font-medium! text-foreground m-0", children: "Destination" }),
|
|
20848
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
|
|
20849
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
20850
|
+
/* @__PURE__ */ jsx25(File, { size: 16, className: "shrink-0 text-foreground", "aria-hidden": true }),
|
|
20851
|
+
/* @__PURE__ */ jsx25("span", { className: "text-sm font-medium leading-none text-foreground!", children: pageTitle })
|
|
20709
20852
|
] }),
|
|
20710
|
-
/* @__PURE__ */
|
|
20853
|
+
/* @__PURE__ */ jsx25(
|
|
20711
20854
|
ArrowRight2,
|
|
20712
20855
|
{
|
|
20713
20856
|
size: 16,
|
|
@@ -20715,8 +20858,8 @@ function DestinationBreadcrumb({
|
|
|
20715
20858
|
"aria-hidden": true
|
|
20716
20859
|
}
|
|
20717
20860
|
),
|
|
20718
|
-
/* @__PURE__ */
|
|
20719
|
-
/* @__PURE__ */
|
|
20861
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
20862
|
+
/* @__PURE__ */ jsx25(
|
|
20720
20863
|
GalleryVertical,
|
|
20721
20864
|
{
|
|
20722
20865
|
size: 16,
|
|
@@ -20724,7 +20867,7 @@ function DestinationBreadcrumb({
|
|
|
20724
20867
|
"aria-hidden": true
|
|
20725
20868
|
}
|
|
20726
20869
|
),
|
|
20727
|
-
/* @__PURE__ */
|
|
20870
|
+
/* @__PURE__ */ jsx25("span", { className: "truncate text-sm font-medium leading-none text-foreground", children: sectionLabel })
|
|
20728
20871
|
] })
|
|
20729
20872
|
] })
|
|
20730
20873
|
] });
|
|
@@ -20732,22 +20875,22 @@ function DestinationBreadcrumb({
|
|
|
20732
20875
|
|
|
20733
20876
|
// src/ui/link-modal/SectionTreeItem.tsx
|
|
20734
20877
|
import { GalleryVertical as GalleryVertical2 } from "lucide-react";
|
|
20735
|
-
import { jsx as
|
|
20878
|
+
import { jsx as jsx26, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
20736
20879
|
function SectionTreeItem({
|
|
20737
20880
|
section,
|
|
20738
20881
|
onSelect,
|
|
20739
20882
|
selected
|
|
20740
20883
|
}) {
|
|
20741
20884
|
const interactive = Boolean(onSelect);
|
|
20742
|
-
return /* @__PURE__ */
|
|
20743
|
-
/* @__PURE__ */
|
|
20885
|
+
return /* @__PURE__ */ jsxs17("div", { className: "flex h-9 w-full items-end pl-3", children: [
|
|
20886
|
+
/* @__PURE__ */ jsx26(
|
|
20744
20887
|
"div",
|
|
20745
20888
|
{
|
|
20746
20889
|
className: "-mr-px h-9 w-2 shrink-0 rounded-bl-sm border-b border-l border-border mb-4",
|
|
20747
20890
|
"aria-hidden": true
|
|
20748
20891
|
}
|
|
20749
20892
|
),
|
|
20750
|
-
/* @__PURE__ */
|
|
20893
|
+
/* @__PURE__ */ jsxs17(
|
|
20751
20894
|
"div",
|
|
20752
20895
|
{
|
|
20753
20896
|
role: interactive ? "button" : void 0,
|
|
@@ -20765,7 +20908,7 @@ function SectionTreeItem({
|
|
|
20765
20908
|
interactive && selected && "border-bridge-primary"
|
|
20766
20909
|
),
|
|
20767
20910
|
children: [
|
|
20768
|
-
/* @__PURE__ */
|
|
20911
|
+
/* @__PURE__ */ jsx26(
|
|
20769
20912
|
GalleryVertical2,
|
|
20770
20913
|
{
|
|
20771
20914
|
size: 16,
|
|
@@ -20773,7 +20916,7 @@ function SectionTreeItem({
|
|
|
20773
20916
|
"aria-hidden": true
|
|
20774
20917
|
}
|
|
20775
20918
|
),
|
|
20776
|
-
/* @__PURE__ */
|
|
20919
|
+
/* @__PURE__ */ jsx26("span", { className: "truncate text-sm font-normal leading-5 text-foreground", children: section.label })
|
|
20777
20920
|
]
|
|
20778
20921
|
}
|
|
20779
20922
|
)
|
|
@@ -20785,10 +20928,10 @@ import { useEffect as useEffect10, useId as useId2, useRef as useRef9, useState
|
|
|
20785
20928
|
|
|
20786
20929
|
// src/ui/input.tsx
|
|
20787
20930
|
import * as React10 from "react";
|
|
20788
|
-
import { jsx as
|
|
20931
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
20789
20932
|
var Input = React10.forwardRef(
|
|
20790
20933
|
({ className, type, ...props }, ref) => {
|
|
20791
|
-
return /* @__PURE__ */
|
|
20934
|
+
return /* @__PURE__ */ jsx27(
|
|
20792
20935
|
"input",
|
|
20793
20936
|
{
|
|
20794
20937
|
type,
|
|
@@ -20807,9 +20950,9 @@ Input.displayName = "Input";
|
|
|
20807
20950
|
|
|
20808
20951
|
// src/ui/label.tsx
|
|
20809
20952
|
import { Label as LabelPrimitive } from "radix-ui";
|
|
20810
|
-
import { jsx as
|
|
20953
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
20811
20954
|
function Label({ className, ...props }) {
|
|
20812
|
-
return /* @__PURE__ */
|
|
20955
|
+
return /* @__PURE__ */ jsx28(
|
|
20813
20956
|
LabelPrimitive.Root,
|
|
20814
20957
|
{
|
|
20815
20958
|
"data-slot": "label",
|
|
@@ -20821,11 +20964,11 @@ function Label({ className, ...props }) {
|
|
|
20821
20964
|
|
|
20822
20965
|
// src/ui/link-modal/UrlOrPageInput.tsx
|
|
20823
20966
|
import { ChevronDown as ChevronDown4, File as File2, X as X3 } from "lucide-react";
|
|
20824
|
-
import { jsx as
|
|
20967
|
+
import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
20825
20968
|
function FieldChevron({
|
|
20826
20969
|
onClick
|
|
20827
20970
|
}) {
|
|
20828
|
-
return /* @__PURE__ */
|
|
20971
|
+
return /* @__PURE__ */ jsx29(
|
|
20829
20972
|
"button",
|
|
20830
20973
|
{
|
|
20831
20974
|
type: "button",
|
|
@@ -20833,7 +20976,7 @@ function FieldChevron({
|
|
|
20833
20976
|
onClick,
|
|
20834
20977
|
"aria-label": "Open page list",
|
|
20835
20978
|
tabIndex: -1,
|
|
20836
|
-
children: /* @__PURE__ */
|
|
20979
|
+
children: /* @__PURE__ */ jsx29(ChevronDown4, { size: 16 })
|
|
20837
20980
|
}
|
|
20838
20981
|
);
|
|
20839
20982
|
}
|
|
@@ -20894,11 +21037,11 @@ function UrlOrPageInput({
|
|
|
20894
21037
|
"data-ohw-link-field flex h-[36px] w-full items-center overflow-hidden rounded-md border bg-background pl-3 pr-3 py-2 outline-none transition-[border-color,box-shadow]",
|
|
20895
21038
|
urlError ? "border-destructive shadow-[0_0_0_1px_var(--ohw-destructive)]" : isFocused ? "border-bridge-primary shadow-[0_0_0_1px_var(--ohw-primary)]" : "border-input"
|
|
20896
21039
|
);
|
|
20897
|
-
return /* @__PURE__ */
|
|
20898
|
-
/* @__PURE__ */
|
|
20899
|
-
/* @__PURE__ */
|
|
20900
|
-
/* @__PURE__ */
|
|
20901
|
-
selectedPage ? /* @__PURE__ */
|
|
21040
|
+
return /* @__PURE__ */ jsxs18("div", { className: "flex w-full flex-col gap-2 p-0", children: [
|
|
21041
|
+
/* @__PURE__ */ jsx29(Label, { htmlFor: inputId, className: cn(urlError && "text-destructive"), children: "Destination" }),
|
|
21042
|
+
/* @__PURE__ */ jsxs18("div", { ref: rootRef, className: "relative w-full", children: [
|
|
21043
|
+
/* @__PURE__ */ jsxs18("div", { "data-ohw-link-field": true, className: fieldClassName, children: [
|
|
21044
|
+
selectedPage ? /* @__PURE__ */ jsx29("div", { className: "flex shrink-0 items-center pr-2", children: /* @__PURE__ */ jsx29(
|
|
20902
21045
|
File2,
|
|
20903
21046
|
{
|
|
20904
21047
|
size: 16,
|
|
@@ -20906,7 +21049,7 @@ function UrlOrPageInput({
|
|
|
20906
21049
|
"aria-hidden": true
|
|
20907
21050
|
}
|
|
20908
21051
|
) }) : null,
|
|
20909
|
-
readOnly ? /* @__PURE__ */
|
|
21052
|
+
readOnly ? /* @__PURE__ */ jsx29("span", { className: "min-w-0 flex-1 truncate text-sm leading-5 text-foreground", children: selectedPage?.title ?? value }) : /* @__PURE__ */ jsx29(
|
|
20910
21053
|
Input,
|
|
20911
21054
|
{
|
|
20912
21055
|
ref: inputRef,
|
|
@@ -20932,7 +21075,7 @@ function UrlOrPageInput({
|
|
|
20932
21075
|
)
|
|
20933
21076
|
}
|
|
20934
21077
|
),
|
|
20935
|
-
selectedPage && !readOnly ? /* @__PURE__ */
|
|
21078
|
+
selectedPage && !readOnly ? /* @__PURE__ */ jsx29(
|
|
20936
21079
|
"button",
|
|
20937
21080
|
{
|
|
20938
21081
|
type: "button",
|
|
@@ -20940,26 +21083,26 @@ function UrlOrPageInput({
|
|
|
20940
21083
|
onMouseDown: clearSelection,
|
|
20941
21084
|
"aria-label": "Clear selected page",
|
|
20942
21085
|
tabIndex: -1,
|
|
20943
|
-
children: /* @__PURE__ */
|
|
21086
|
+
children: /* @__PURE__ */ jsx29(X3, { size: 16, "aria-hidden": true })
|
|
20944
21087
|
}
|
|
20945
21088
|
) : null,
|
|
20946
|
-
!readOnly ? /* @__PURE__ */
|
|
21089
|
+
!readOnly ? /* @__PURE__ */ jsx29(FieldChevron, { onClick: toggleDropdown }) : null
|
|
20947
21090
|
] }),
|
|
20948
|
-
dropdownOpen && !readOnly && filteredPages.length > 0 ? /* @__PURE__ */
|
|
21091
|
+
dropdownOpen && !readOnly && filteredPages.length > 0 ? /* @__PURE__ */ jsx29(
|
|
20949
21092
|
"div",
|
|
20950
21093
|
{
|
|
20951
21094
|
"data-ohw-link-page-dropdown": "",
|
|
20952
21095
|
className: "absolute left-0 right-0 top-[calc(100%+4px)] z-50 max-h-48 overflow-auto rounded-lg border border-border bg-popover py-1 shadow-lg",
|
|
20953
21096
|
onMouseDown: (e) => e.preventDefault(),
|
|
20954
|
-
children: filteredPages.map((page) => /* @__PURE__ */
|
|
21097
|
+
children: filteredPages.map((page) => /* @__PURE__ */ jsxs18(
|
|
20955
21098
|
"button",
|
|
20956
21099
|
{
|
|
20957
21100
|
type: "button",
|
|
20958
21101
|
className: "flex h-9 w-full items-center gap-2 border-0 bg-transparent px-3 text-left text-sm leading-5 text-foreground outline-none hover:bg-muted",
|
|
20959
21102
|
onClick: () => onPageSelect(page),
|
|
20960
21103
|
children: [
|
|
20961
|
-
/* @__PURE__ */
|
|
20962
|
-
/* @__PURE__ */
|
|
21104
|
+
/* @__PURE__ */ jsx29(File2, { size: 16, className: "shrink-0", "aria-hidden": true }),
|
|
21105
|
+
/* @__PURE__ */ jsx29("span", { className: "truncate", children: page.title })
|
|
20963
21106
|
]
|
|
20964
21107
|
},
|
|
20965
21108
|
page.path
|
|
@@ -20967,34 +21110,34 @@ function UrlOrPageInput({
|
|
|
20967
21110
|
}
|
|
20968
21111
|
) : null
|
|
20969
21112
|
] }),
|
|
20970
|
-
urlError ? /* @__PURE__ */
|
|
21113
|
+
urlError ? /* @__PURE__ */ jsx29("p", { className: "text-sm font-medium text-destructive", children: urlError }) : null
|
|
20971
21114
|
] });
|
|
20972
21115
|
}
|
|
20973
21116
|
|
|
20974
21117
|
// src/ui/link-modal/LinkEditorPanel.tsx
|
|
20975
|
-
import { Fragment as
|
|
21118
|
+
import { Fragment as Fragment11, jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
20976
21119
|
function LinkEditorPanel({ state, onClose }) {
|
|
20977
21120
|
const isCancel = state.secondaryLabel === "Cancel" || state.secondaryLabel === "Back to sections";
|
|
20978
|
-
return /* @__PURE__ */
|
|
20979
|
-
/* @__PURE__ */
|
|
21121
|
+
return /* @__PURE__ */ jsxs19(Fragment11, { children: [
|
|
21122
|
+
/* @__PURE__ */ jsx30(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx30(
|
|
20980
21123
|
"button",
|
|
20981
21124
|
{
|
|
20982
21125
|
type: "button",
|
|
20983
21126
|
className: "absolute right-[9px] top-[9px] rounded-sm p-1.5 text-foreground hover:bg-muted/50 h-7",
|
|
20984
21127
|
"aria-label": "Close",
|
|
20985
21128
|
onClick: onClose,
|
|
20986
|
-
children: /* @__PURE__ */
|
|
21129
|
+
children: /* @__PURE__ */ jsx30(X4, { size: 16, "aria-hidden": true })
|
|
20987
21130
|
}
|
|
20988
21131
|
) }),
|
|
20989
|
-
/* @__PURE__ */
|
|
20990
|
-
/* @__PURE__ */
|
|
20991
|
-
state.showBreadcrumb && state.selectedPage && state.selectedSection ? /* @__PURE__ */
|
|
21132
|
+
/* @__PURE__ */ jsx30(DialogHeader, { className: "w-full gap-1.5 p-6 pr-12", children: /* @__PURE__ */ jsx30(DialogTitle, { className: "m-0 w-full break-words", children: state.title }) }),
|
|
21133
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex w-full flex-col gap-3 px-6 pb-8 pt-1", children: [
|
|
21134
|
+
state.showBreadcrumb && state.selectedPage && state.selectedSection ? /* @__PURE__ */ jsx30(
|
|
20992
21135
|
DestinationBreadcrumb,
|
|
20993
21136
|
{
|
|
20994
21137
|
pageTitle: state.selectedPage.title,
|
|
20995
21138
|
sectionLabel: state.selectedSection.label
|
|
20996
21139
|
}
|
|
20997
|
-
) : /* @__PURE__ */
|
|
21140
|
+
) : /* @__PURE__ */ jsx30(
|
|
20998
21141
|
UrlOrPageInput,
|
|
20999
21142
|
{
|
|
21000
21143
|
value: state.searchValue,
|
|
@@ -21007,8 +21150,8 @@ function LinkEditorPanel({ state, onClose }) {
|
|
|
21007
21150
|
urlError: state.urlError
|
|
21008
21151
|
}
|
|
21009
21152
|
),
|
|
21010
|
-
state.showChooseSection ? /* @__PURE__ */
|
|
21011
|
-
/* @__PURE__ */
|
|
21153
|
+
state.showChooseSection ? /* @__PURE__ */ jsxs19("div", { className: "flex flex-col justify-center gap-2", children: [
|
|
21154
|
+
/* @__PURE__ */ jsx30(
|
|
21012
21155
|
Button,
|
|
21013
21156
|
{
|
|
21014
21157
|
type: "button",
|
|
@@ -21019,15 +21162,15 @@ function LinkEditorPanel({ state, onClose }) {
|
|
|
21019
21162
|
children: "Choose a section"
|
|
21020
21163
|
}
|
|
21021
21164
|
),
|
|
21022
|
-
/* @__PURE__ */
|
|
21023
|
-
/* @__PURE__ */
|
|
21024
|
-
/* @__PURE__ */
|
|
21165
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1 text-sm text-muted-foreground", children: [
|
|
21166
|
+
/* @__PURE__ */ jsx30(Info, { size: 16, className: "shrink-0", "aria-hidden": true }),
|
|
21167
|
+
/* @__PURE__ */ jsx30("span", { children: "Pick a section this link should scroll to." })
|
|
21025
21168
|
] })
|
|
21026
21169
|
] }) : null,
|
|
21027
|
-
state.showSectionRow && state.selectedSection ? /* @__PURE__ */
|
|
21170
|
+
state.showSectionRow && state.selectedSection ? /* @__PURE__ */ jsx30(SectionTreeItem, { section: state.selectedSection, selected: true }) : null
|
|
21028
21171
|
] }),
|
|
21029
|
-
/* @__PURE__ */
|
|
21030
|
-
/* @__PURE__ */
|
|
21172
|
+
/* @__PURE__ */ jsxs19(DialogFooter, { className: "w-full px-6 pb-6", children: [
|
|
21173
|
+
/* @__PURE__ */ jsx30(
|
|
21031
21174
|
Button,
|
|
21032
21175
|
{
|
|
21033
21176
|
type: "button",
|
|
@@ -21042,7 +21185,7 @@ function LinkEditorPanel({ state, onClose }) {
|
|
|
21042
21185
|
children: state.secondaryLabel
|
|
21043
21186
|
}
|
|
21044
21187
|
),
|
|
21045
|
-
/* @__PURE__ */
|
|
21188
|
+
/* @__PURE__ */ jsx30(
|
|
21046
21189
|
Button,
|
|
21047
21190
|
{
|
|
21048
21191
|
type: "button",
|
|
@@ -21085,7 +21228,7 @@ function getIframeChromeClip(parentScroll) {
|
|
|
21085
21228
|
}
|
|
21086
21229
|
|
|
21087
21230
|
// src/ui/link-modal/SectionPickerOverlay.tsx
|
|
21088
|
-
import { jsx as
|
|
21231
|
+
import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
21089
21232
|
var DIM_OVERLAY = "rgba(0, 0, 0, 0.45)";
|
|
21090
21233
|
function rectsEqual(a, b) {
|
|
21091
21234
|
if (a.size !== b.size) return false;
|
|
@@ -21316,7 +21459,7 @@ function SectionPickerOverlay({
|
|
|
21316
21459
|
const portalRoot = typeof document !== "undefined" ? document.querySelector("[data-ohw-bridge-root]") ?? document.body : null;
|
|
21317
21460
|
if (!portalRoot) return null;
|
|
21318
21461
|
return createPortal2(
|
|
21319
|
-
/* @__PURE__ */
|
|
21462
|
+
/* @__PURE__ */ jsxs20(
|
|
21320
21463
|
"div",
|
|
21321
21464
|
{
|
|
21322
21465
|
"data-ohw-section-picker": "",
|
|
@@ -21326,12 +21469,12 @@ function SectionPickerOverlay({
|
|
|
21326
21469
|
role: "dialog",
|
|
21327
21470
|
"aria-label": "Choose a section",
|
|
21328
21471
|
children: [
|
|
21329
|
-
/* @__PURE__ */
|
|
21472
|
+
/* @__PURE__ */ jsx31(
|
|
21330
21473
|
"div",
|
|
21331
21474
|
{
|
|
21332
21475
|
className: "pointer-events-auto fixed left-5 z-[2]",
|
|
21333
21476
|
style: { top: chromeClip.top + 20 },
|
|
21334
|
-
children: /* @__PURE__ */
|
|
21477
|
+
children: /* @__PURE__ */ jsxs20(
|
|
21335
21478
|
Button,
|
|
21336
21479
|
{
|
|
21337
21480
|
type: "button",
|
|
@@ -21340,14 +21483,14 @@ function SectionPickerOverlay({
|
|
|
21340
21483
|
className: "h-8 min-w-0 gap-1 border-border bg-background px-2 py-1.5 shadow-sm hover:bg-muted cursor-pointer",
|
|
21341
21484
|
onClick: onBack,
|
|
21342
21485
|
children: [
|
|
21343
|
-
/* @__PURE__ */
|
|
21486
|
+
/* @__PURE__ */ jsx31(ArrowLeft2, { className: "size-4 shrink-0", "aria-hidden": true }),
|
|
21344
21487
|
"Back"
|
|
21345
21488
|
]
|
|
21346
21489
|
}
|
|
21347
21490
|
)
|
|
21348
21491
|
}
|
|
21349
21492
|
),
|
|
21350
|
-
/* @__PURE__ */
|
|
21493
|
+
/* @__PURE__ */ jsx31(
|
|
21351
21494
|
"div",
|
|
21352
21495
|
{
|
|
21353
21496
|
className: "pointer-events-none fixed left-1/2 z-[2] rounded-lg px-4 py-3 text-xs leading-4 tracking-[0.18px] text-white shadow-md",
|
|
@@ -21360,7 +21503,7 @@ function SectionPickerOverlay({
|
|
|
21360
21503
|
children: "Click on section to select"
|
|
21361
21504
|
}
|
|
21362
21505
|
),
|
|
21363
|
-
!isOnTargetPage ? /* @__PURE__ */
|
|
21506
|
+
!isOnTargetPage ? /* @__PURE__ */ jsx31(
|
|
21364
21507
|
"div",
|
|
21365
21508
|
{
|
|
21366
21509
|
className: "pointer-events-none fixed left-1/2 z-[1] -translate-x-1/2 rounded-md px-3 py-2 text-sm text-muted-foreground shadow-sm",
|
|
@@ -21368,14 +21511,14 @@ function SectionPickerOverlay({
|
|
|
21368
21511
|
children: "Loading page preview\u2026"
|
|
21369
21512
|
}
|
|
21370
21513
|
) : null,
|
|
21371
|
-
isOnTargetPage && liveSections.length === 0 ? /* @__PURE__ */
|
|
21514
|
+
isOnTargetPage && liveSections.length === 0 ? /* @__PURE__ */ jsx31("div", { className: "pointer-events-auto fixed inset-0 z-[1] flex items-center justify-center bg-muted/40", children: /* @__PURE__ */ jsx31("p", { className: "text-sm text-muted-foreground", children: "No sections found on this page." }) }) : null,
|
|
21372
21515
|
isOnTargetPage ? liveSections.map((section) => {
|
|
21373
21516
|
const rect = rects.get(section.id);
|
|
21374
21517
|
if (!rect || rect.width <= 0 || rect.height <= 0) return null;
|
|
21375
21518
|
const isSelected = selectedId === section.id;
|
|
21376
21519
|
const isHovered = hoveredId === section.id;
|
|
21377
21520
|
const isLit = isSelected || isHovered;
|
|
21378
|
-
return /* @__PURE__ */
|
|
21521
|
+
return /* @__PURE__ */ jsxs20(
|
|
21379
21522
|
"button",
|
|
21380
21523
|
{
|
|
21381
21524
|
type: "button",
|
|
@@ -21390,7 +21533,7 @@ function SectionPickerOverlay({
|
|
|
21390
21533
|
"aria-label": `Select section ${section.label}`,
|
|
21391
21534
|
onClick: () => handleSelect(section),
|
|
21392
21535
|
children: [
|
|
21393
|
-
isLit ? /* @__PURE__ */
|
|
21536
|
+
isLit ? /* @__PURE__ */ jsx31(
|
|
21394
21537
|
"span",
|
|
21395
21538
|
{
|
|
21396
21539
|
className: "pointer-events-none absolute",
|
|
@@ -21403,13 +21546,13 @@ function SectionPickerOverlay({
|
|
|
21403
21546
|
"aria-hidden": true
|
|
21404
21547
|
}
|
|
21405
21548
|
) : null,
|
|
21406
|
-
isSelected ? /* @__PURE__ */
|
|
21549
|
+
isSelected ? /* @__PURE__ */ jsx31(
|
|
21407
21550
|
"span",
|
|
21408
21551
|
{
|
|
21409
21552
|
className: "absolute right-3 top-3 flex size-8 items-center justify-center rounded-full text-white",
|
|
21410
21553
|
style: { backgroundColor: "var(--ohw-primary, #0885fe)" },
|
|
21411
21554
|
"aria-hidden": true,
|
|
21412
|
-
children: /* @__PURE__ */
|
|
21555
|
+
children: /* @__PURE__ */ jsx31(Check3, { className: "size-5" })
|
|
21413
21556
|
}
|
|
21414
21557
|
) : null
|
|
21415
21558
|
]
|
|
@@ -21589,7 +21732,7 @@ function useLinkModalState({
|
|
|
21589
21732
|
}
|
|
21590
21733
|
|
|
21591
21734
|
// src/ui/link-modal/LinkPopover.tsx
|
|
21592
|
-
import { Fragment as
|
|
21735
|
+
import { Fragment as Fragment12, jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
21593
21736
|
function postToParent(data) {
|
|
21594
21737
|
window.parent?.postMessage(data, "*");
|
|
21595
21738
|
}
|
|
@@ -21685,15 +21828,15 @@ function LinkPopover({
|
|
|
21685
21828
|
);
|
|
21686
21829
|
};
|
|
21687
21830
|
}, [open, sectionPickerActive]);
|
|
21688
|
-
return /* @__PURE__ */
|
|
21689
|
-
/* @__PURE__ */
|
|
21831
|
+
return /* @__PURE__ */ jsxs21(Fragment12, { children: [
|
|
21832
|
+
/* @__PURE__ */ jsx32(
|
|
21690
21833
|
Dialog2,
|
|
21691
21834
|
{
|
|
21692
21835
|
open: open && !sectionPickerActive,
|
|
21693
21836
|
onOpenChange: (next) => {
|
|
21694
21837
|
if (!next) onClose?.();
|
|
21695
21838
|
},
|
|
21696
|
-
children: /* @__PURE__ */
|
|
21839
|
+
children: /* @__PURE__ */ jsx32(
|
|
21697
21840
|
DialogContent,
|
|
21698
21841
|
{
|
|
21699
21842
|
ref: panelRef,
|
|
@@ -21703,12 +21846,12 @@ function LinkPopover({
|
|
|
21703
21846
|
"data-ohw-bridge": "",
|
|
21704
21847
|
showCloseButton: false,
|
|
21705
21848
|
className: "gap-0 p-0 w-full max-w-[448px] pointer-events-auto z-[2147483646] overflow-visible",
|
|
21706
|
-
children: /* @__PURE__ */
|
|
21849
|
+
children: /* @__PURE__ */ jsx32(LinkEditorPanel, { state, onClose })
|
|
21707
21850
|
}
|
|
21708
21851
|
)
|
|
21709
21852
|
}
|
|
21710
21853
|
),
|
|
21711
|
-
sectionPickerActive && state.selectedPage ? /* @__PURE__ */
|
|
21854
|
+
sectionPickerActive && state.selectedPage ? /* @__PURE__ */ jsx32(
|
|
21712
21855
|
SectionPickerOverlay,
|
|
21713
21856
|
{
|
|
21714
21857
|
pagePath: state.selectedPage.path,
|
|
@@ -21867,7 +22010,7 @@ import {
|
|
|
21867
22010
|
useState as useState15
|
|
21868
22011
|
} from "react";
|
|
21869
22012
|
import { X as X5 } from "lucide-react";
|
|
21870
|
-
import { jsx as
|
|
22013
|
+
import { jsx as jsx33, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
21871
22014
|
var PANEL_WIDTH = 256;
|
|
21872
22015
|
var EDGE_MARGIN = 16;
|
|
21873
22016
|
var HEADER_MIN = 56;
|
|
@@ -22039,7 +22182,7 @@ function FloatingPanel({
|
|
|
22039
22182
|
}, [open]);
|
|
22040
22183
|
useEffect14(() => () => document.documentElement.removeAttribute("data-ohw-panel-dragging"), []);
|
|
22041
22184
|
if (!open) return null;
|
|
22042
|
-
return /* @__PURE__ */
|
|
22185
|
+
return /* @__PURE__ */ jsxs22(
|
|
22043
22186
|
"div",
|
|
22044
22187
|
{
|
|
22045
22188
|
ref: panelRef,
|
|
@@ -22056,7 +22199,7 @@ function FloatingPanel({
|
|
|
22056
22199
|
onPointerDown: (e) => e.stopPropagation(),
|
|
22057
22200
|
onClick: (e) => e.stopPropagation(),
|
|
22058
22201
|
children: [
|
|
22059
|
-
/* @__PURE__ */
|
|
22202
|
+
/* @__PURE__ */ jsxs22(
|
|
22060
22203
|
"div",
|
|
22061
22204
|
{
|
|
22062
22205
|
"data-ohw-floating-panel-header": "",
|
|
@@ -22066,14 +22209,14 @@ function FloatingPanel({
|
|
|
22066
22209
|
onPointerUp: endDrag,
|
|
22067
22210
|
onPointerCancel: endDrag,
|
|
22068
22211
|
children: [
|
|
22069
|
-
/* @__PURE__ */
|
|
22070
|
-
/* @__PURE__ */
|
|
22071
|
-
icon ? /* @__PURE__ */
|
|
22072
|
-
/* @__PURE__ */
|
|
22212
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
|
|
22213
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
|
|
22214
|
+
icon ? /* @__PURE__ */ jsx33("span", { className: "shrink-0 text-foreground", children: icon }) : null,
|
|
22215
|
+
/* @__PURE__ */ jsx33("p", { className: "min-w-0 flex-1 text-lg font-semibold leading-7 text-foreground", children: title })
|
|
22073
22216
|
] }),
|
|
22074
|
-
context ? /* @__PURE__ */
|
|
22217
|
+
context ? /* @__PURE__ */ jsx33("p", { className: "w-full text-sm leading-5 text-muted-foreground", children: context }) : null
|
|
22075
22218
|
] }),
|
|
22076
|
-
/* @__PURE__ */
|
|
22219
|
+
/* @__PURE__ */ jsx33(
|
|
22077
22220
|
"button",
|
|
22078
22221
|
{
|
|
22079
22222
|
type: "button",
|
|
@@ -22085,13 +22228,13 @@ function FloatingPanel({
|
|
|
22085
22228
|
onClose();
|
|
22086
22229
|
},
|
|
22087
22230
|
onPointerDown: (e) => e.stopPropagation(),
|
|
22088
|
-
children: /* @__PURE__ */
|
|
22231
|
+
children: /* @__PURE__ */ jsx33(X5, { size: 16, "aria-hidden": true })
|
|
22089
22232
|
}
|
|
22090
22233
|
)
|
|
22091
22234
|
]
|
|
22092
22235
|
}
|
|
22093
22236
|
),
|
|
22094
|
-
/* @__PURE__ */
|
|
22237
|
+
/* @__PURE__ */ jsx33(
|
|
22095
22238
|
"div",
|
|
22096
22239
|
{
|
|
22097
22240
|
"data-ohw-floating-panel-body": "",
|
|
@@ -22109,15 +22252,15 @@ function FloatingPanel({
|
|
|
22109
22252
|
}
|
|
22110
22253
|
|
|
22111
22254
|
// src/ui/socials-display-panel.tsx
|
|
22112
|
-
import { jsx as
|
|
22255
|
+
import { jsx as jsx34, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
22113
22256
|
function DisplaySwitch({
|
|
22114
22257
|
label,
|
|
22115
22258
|
checked,
|
|
22116
22259
|
disabled,
|
|
22117
22260
|
onChange
|
|
22118
22261
|
}) {
|
|
22119
|
-
return /* @__PURE__ */
|
|
22120
|
-
/* @__PURE__ */
|
|
22262
|
+
return /* @__PURE__ */ jsxs23("div", { className: "flex w-full items-center gap-2", children: [
|
|
22263
|
+
/* @__PURE__ */ jsx34(
|
|
22121
22264
|
"span",
|
|
22122
22265
|
{
|
|
22123
22266
|
className: cn(
|
|
@@ -22127,7 +22270,7 @@ function DisplaySwitch({
|
|
|
22127
22270
|
children: label
|
|
22128
22271
|
}
|
|
22129
22272
|
),
|
|
22130
|
-
/* @__PURE__ */
|
|
22273
|
+
/* @__PURE__ */ jsx34(
|
|
22131
22274
|
"button",
|
|
22132
22275
|
{
|
|
22133
22276
|
type: "button",
|
|
@@ -22141,7 +22284,7 @@ function DisplaySwitch({
|
|
|
22141
22284
|
checked ? "bg-bridge-primary" : "bg-primary-50",
|
|
22142
22285
|
disabled ? "cursor-default opacity-50" : "cursor-pointer"
|
|
22143
22286
|
),
|
|
22144
|
-
children: /* @__PURE__ */
|
|
22287
|
+
children: /* @__PURE__ */ jsx34(
|
|
22145
22288
|
"span",
|
|
22146
22289
|
{
|
|
22147
22290
|
className: cn(
|
|
@@ -22155,8 +22298,8 @@ function DisplaySwitch({
|
|
|
22155
22298
|
] });
|
|
22156
22299
|
}
|
|
22157
22300
|
function SocialsDisplayPanel({ display, onChange, className }) {
|
|
22158
|
-
return /* @__PURE__ */
|
|
22159
|
-
/* @__PURE__ */
|
|
22301
|
+
return /* @__PURE__ */ jsxs23("div", { className: cn("flex w-full flex-col gap-3", className), children: [
|
|
22302
|
+
/* @__PURE__ */ jsx34(
|
|
22160
22303
|
DisplaySwitch,
|
|
22161
22304
|
{
|
|
22162
22305
|
label: "Text",
|
|
@@ -22165,7 +22308,7 @@ function SocialsDisplayPanel({ display, onChange, className }) {
|
|
|
22165
22308
|
onChange: (text) => onChange({ ...display, text })
|
|
22166
22309
|
}
|
|
22167
22310
|
),
|
|
22168
|
-
/* @__PURE__ */
|
|
22311
|
+
/* @__PURE__ */ jsx34(
|
|
22169
22312
|
DisplaySwitch,
|
|
22170
22313
|
{
|
|
22171
22314
|
label: "Icon",
|
|
@@ -22179,7 +22322,7 @@ function SocialsDisplayPanel({ display, onChange, className }) {
|
|
|
22179
22322
|
|
|
22180
22323
|
// src/ui/button-style-panel.tsx
|
|
22181
22324
|
import { Check as Check4 } from "lucide-react";
|
|
22182
|
-
import { jsx as
|
|
22325
|
+
import { jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
22183
22326
|
var SIZE_LABEL = { s: "S", m: "M", l: "L" };
|
|
22184
22327
|
function ButtonStylePanel({
|
|
22185
22328
|
variants,
|
|
@@ -22193,15 +22336,15 @@ function ButtonStylePanel({
|
|
|
22193
22336
|
}) {
|
|
22194
22337
|
const preview = scaleGeometry(sizes.m, 0.75);
|
|
22195
22338
|
const label = previewLabel.trim() || "Book Now";
|
|
22196
|
-
return /* @__PURE__ */
|
|
22197
|
-
/* @__PURE__ */
|
|
22198
|
-
/* @__PURE__ */
|
|
22199
|
-
/* @__PURE__ */
|
|
22339
|
+
return /* @__PURE__ */ jsxs24("div", { className: "flex w-full flex-col gap-5", children: [
|
|
22340
|
+
/* @__PURE__ */ jsxs24("section", { className: "flex w-full flex-col gap-2.5", children: [
|
|
22341
|
+
/* @__PURE__ */ jsx35("h3", { className: "text-xs font-semibold uppercase leading-4 tracking-[0.6px] text-stone-500 font-sans", children: "Variants" }),
|
|
22342
|
+
/* @__PURE__ */ jsx35("div", { className: "flex w-full flex-col gap-2.5", children: BUTTON_VARIANT_IDS.map((id) => {
|
|
22200
22343
|
const chrome = variants[id];
|
|
22201
22344
|
const selected = id === variant;
|
|
22202
22345
|
const hasBorder = parseFloat(chrome.borderWidth) > 0;
|
|
22203
22346
|
const cardSlot = previewSlotForChrome(chrome, slotBackground);
|
|
22204
|
-
return /* @__PURE__ */
|
|
22347
|
+
return /* @__PURE__ */ jsxs24(
|
|
22205
22348
|
"button",
|
|
22206
22349
|
{
|
|
22207
22350
|
type: "button",
|
|
@@ -22217,12 +22360,12 @@ function ButtonStylePanel({
|
|
|
22217
22360
|
selected ? "border-2 border-primary" : "border border-border"
|
|
22218
22361
|
),
|
|
22219
22362
|
children: [
|
|
22220
|
-
/* @__PURE__ */
|
|
22363
|
+
/* @__PURE__ */ jsx35(
|
|
22221
22364
|
"div",
|
|
22222
22365
|
{
|
|
22223
22366
|
className: "flex w-full items-center justify-center py-4",
|
|
22224
22367
|
style: { background: cardSlot },
|
|
22225
|
-
children: /* @__PURE__ */
|
|
22368
|
+
children: /* @__PURE__ */ jsx35(
|
|
22226
22369
|
"span",
|
|
22227
22370
|
{
|
|
22228
22371
|
className: "inline-flex items-center justify-center whitespace-nowrap font-semibold uppercase leading-none",
|
|
@@ -22244,12 +22387,12 @@ function ButtonStylePanel({
|
|
|
22244
22387
|
)
|
|
22245
22388
|
}
|
|
22246
22389
|
),
|
|
22247
|
-
selected ? /* @__PURE__ */
|
|
22390
|
+
selected ? /* @__PURE__ */ jsx35(
|
|
22248
22391
|
"span",
|
|
22249
22392
|
{
|
|
22250
22393
|
className: "absolute right-0.5 top-0.5 flex size-5 items-center justify-center rounded-full bg-primary text-primary-foreground",
|
|
22251
22394
|
"aria-hidden": true,
|
|
22252
|
-
children: /* @__PURE__ */
|
|
22395
|
+
children: /* @__PURE__ */ jsx35(Check4, { className: "size-3", strokeWidth: 3 })
|
|
22253
22396
|
}
|
|
22254
22397
|
) : null
|
|
22255
22398
|
]
|
|
@@ -22258,9 +22401,9 @@ function ButtonStylePanel({
|
|
|
22258
22401
|
);
|
|
22259
22402
|
}) })
|
|
22260
22403
|
] }),
|
|
22261
|
-
/* @__PURE__ */
|
|
22262
|
-
/* @__PURE__ */
|
|
22263
|
-
/* @__PURE__ */
|
|
22404
|
+
/* @__PURE__ */ jsxs24("section", { className: "flex w-full flex-col gap-2.5", children: [
|
|
22405
|
+
/* @__PURE__ */ jsx35("h3", { className: "text-xs font-semibold uppercase leading-4 tracking-[0.6px] text-stone-500 font-sans", children: "Size" }),
|
|
22406
|
+
/* @__PURE__ */ jsx35(
|
|
22264
22407
|
"div",
|
|
22265
22408
|
{
|
|
22266
22409
|
className: "flex w-full items-start rounded-lg bg-stone-100 p-1",
|
|
@@ -22268,7 +22411,7 @@ function ButtonStylePanel({
|
|
|
22268
22411
|
"aria-label": "Size",
|
|
22269
22412
|
children: BUTTON_SIZE_IDS.map((id) => {
|
|
22270
22413
|
const selected = id === size;
|
|
22271
|
-
return /* @__PURE__ */
|
|
22414
|
+
return /* @__PURE__ */ jsx35(
|
|
22272
22415
|
"button",
|
|
22273
22416
|
{
|
|
22274
22417
|
type: "button",
|
|
@@ -23275,7 +23418,7 @@ function useSectionDrag({
|
|
|
23275
23418
|
|
|
23276
23419
|
// src/ui/footer-container-chrome.tsx
|
|
23277
23420
|
import { Plus as Plus3 } from "lucide-react";
|
|
23278
|
-
import { jsx as
|
|
23421
|
+
import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
23279
23422
|
function FooterContainerChrome({
|
|
23280
23423
|
rect,
|
|
23281
23424
|
onAdd,
|
|
@@ -23283,7 +23426,7 @@ function FooterContainerChrome({
|
|
|
23283
23426
|
}) {
|
|
23284
23427
|
const chromeGap = 6;
|
|
23285
23428
|
const buttonMargin = 7;
|
|
23286
|
-
return /* @__PURE__ */
|
|
23429
|
+
return /* @__PURE__ */ jsx36(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx36(
|
|
23287
23430
|
"div",
|
|
23288
23431
|
{
|
|
23289
23432
|
"data-ohw-footer-container-chrome": "",
|
|
@@ -23295,8 +23438,8 @@ function FooterContainerChrome({
|
|
|
23295
23438
|
width: rect.width + chromeGap * 2,
|
|
23296
23439
|
height: rect.height + chromeGap * 2
|
|
23297
23440
|
},
|
|
23298
|
-
children: /* @__PURE__ */
|
|
23299
|
-
/* @__PURE__ */
|
|
23441
|
+
children: /* @__PURE__ */ jsxs25(Tooltip, { children: [
|
|
23442
|
+
/* @__PURE__ */ jsx36(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx36(
|
|
23300
23443
|
"button",
|
|
23301
23444
|
{
|
|
23302
23445
|
type: "button",
|
|
@@ -23315,10 +23458,10 @@ function FooterContainerChrome({
|
|
|
23315
23458
|
if (addDisabled) return;
|
|
23316
23459
|
onAdd();
|
|
23317
23460
|
},
|
|
23318
|
-
children: /* @__PURE__ */
|
|
23461
|
+
children: /* @__PURE__ */ jsx36(Plus3, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
|
|
23319
23462
|
}
|
|
23320
23463
|
) }),
|
|
23321
|
-
/* @__PURE__ */
|
|
23464
|
+
/* @__PURE__ */ jsx36(TooltipContent, { side: "bottom", sideOffset: 9, children: addDisabled ? "Maximum columns reached" : "Add item" })
|
|
23322
23465
|
] })
|
|
23323
23466
|
}
|
|
23324
23467
|
) });
|
|
@@ -23495,13 +23638,13 @@ function deleteSelectedNavFooterItem(deps) {
|
|
|
23495
23638
|
|
|
23496
23639
|
// src/ui/navbar-container-chrome.tsx
|
|
23497
23640
|
import { Plus as Plus4 } from "lucide-react";
|
|
23498
|
-
import { jsx as
|
|
23641
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
23499
23642
|
function NavbarContainerChrome({
|
|
23500
23643
|
rect,
|
|
23501
23644
|
onAdd
|
|
23502
23645
|
}) {
|
|
23503
23646
|
const chromeGap = 6;
|
|
23504
|
-
return /* @__PURE__ */
|
|
23647
|
+
return /* @__PURE__ */ jsx37(
|
|
23505
23648
|
"div",
|
|
23506
23649
|
{
|
|
23507
23650
|
"data-ohw-navbar-container-chrome": "",
|
|
@@ -23513,7 +23656,7 @@ function NavbarContainerChrome({
|
|
|
23513
23656
|
width: rect.width + chromeGap * 2,
|
|
23514
23657
|
height: rect.height + chromeGap * 2
|
|
23515
23658
|
},
|
|
23516
|
-
children: /* @__PURE__ */
|
|
23659
|
+
children: /* @__PURE__ */ jsx37(
|
|
23517
23660
|
"button",
|
|
23518
23661
|
{
|
|
23519
23662
|
type: "button",
|
|
@@ -23530,7 +23673,7 @@ function NavbarContainerChrome({
|
|
|
23530
23673
|
e.stopPropagation();
|
|
23531
23674
|
onAdd();
|
|
23532
23675
|
},
|
|
23533
|
-
children: /* @__PURE__ */
|
|
23676
|
+
children: /* @__PURE__ */ jsx37(Plus4, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
|
|
23534
23677
|
}
|
|
23535
23678
|
)
|
|
23536
23679
|
}
|
|
@@ -23539,7 +23682,7 @@ function NavbarContainerChrome({
|
|
|
23539
23682
|
|
|
23540
23683
|
// src/ui/drop-indicator.tsx
|
|
23541
23684
|
import * as React11 from "react";
|
|
23542
|
-
import { jsx as
|
|
23685
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
23543
23686
|
var dropIndicatorVariants = cva(
|
|
23544
23687
|
"ov-gap-line pointer-events-none shrink-0 transition-opacity duration-150",
|
|
23545
23688
|
{
|
|
@@ -23563,7 +23706,7 @@ var dropIndicatorVariants = cva(
|
|
|
23563
23706
|
);
|
|
23564
23707
|
var DropIndicator = React11.forwardRef(
|
|
23565
23708
|
({ className, direction, state, ...props }, ref) => {
|
|
23566
|
-
return /* @__PURE__ */
|
|
23709
|
+
return /* @__PURE__ */ jsx38(
|
|
23567
23710
|
"div",
|
|
23568
23711
|
{
|
|
23569
23712
|
ref,
|
|
@@ -23580,7 +23723,7 @@ var DropIndicator = React11.forwardRef(
|
|
|
23580
23723
|
DropIndicator.displayName = "DropIndicator";
|
|
23581
23724
|
|
|
23582
23725
|
// src/ui/badge.tsx
|
|
23583
|
-
import { jsx as
|
|
23726
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
23584
23727
|
var badgeVariants = cva(
|
|
23585
23728
|
"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",
|
|
23586
23729
|
{
|
|
@@ -23598,12 +23741,12 @@ var badgeVariants = cva(
|
|
|
23598
23741
|
}
|
|
23599
23742
|
);
|
|
23600
23743
|
function Badge({ className, variant, ...props }) {
|
|
23601
|
-
return /* @__PURE__ */
|
|
23744
|
+
return /* @__PURE__ */ jsx39("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
23602
23745
|
}
|
|
23603
23746
|
|
|
23604
23747
|
// src/OhhwellsBridge.tsx
|
|
23605
23748
|
import { Brush as Brush2, Link as Link2, Plus as Plus5, Settings } from "lucide-react";
|
|
23606
|
-
import { Fragment as
|
|
23749
|
+
import { Fragment as Fragment13, jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
23607
23750
|
var PRIMARY7 = "#0885FE";
|
|
23608
23751
|
var IMAGE_FADE_MS = 300;
|
|
23609
23752
|
var MEDIA_SETTLE_TIMEOUT_MS = 2500;
|
|
@@ -23725,7 +23868,7 @@ function duplicateSchedulingWidget(instanceId, scheduleId) {
|
|
|
23725
23868
|
schedulingRoots.set(container, root);
|
|
23726
23869
|
flushSync3(() => {
|
|
23727
23870
|
root.render(
|
|
23728
|
-
/* @__PURE__ */
|
|
23871
|
+
/* @__PURE__ */ jsx40(
|
|
23729
23872
|
SchedulingWidget,
|
|
23730
23873
|
{
|
|
23731
23874
|
notifyOnConnect: false,
|
|
@@ -23853,7 +23996,7 @@ function mountSchedulingWidget(anchorId, notifyOnConnect = false, scheduleId, be
|
|
|
23853
23996
|
schedulingRoots.set(container, root);
|
|
23854
23997
|
flushSync3(() => {
|
|
23855
23998
|
root.render(
|
|
23856
|
-
/* @__PURE__ */
|
|
23999
|
+
/* @__PURE__ */ jsx40(
|
|
23857
24000
|
SchedulingWidget,
|
|
23858
24001
|
{
|
|
23859
24002
|
notifyOnConnect,
|
|
@@ -24633,7 +24776,7 @@ function EditGlowChrome({
|
|
|
24633
24776
|
hideHandle = false
|
|
24634
24777
|
}) {
|
|
24635
24778
|
const GAP = SELECTION_CHROME_GAP2;
|
|
24636
|
-
return /* @__PURE__ */
|
|
24779
|
+
return /* @__PURE__ */ jsxs26(
|
|
24637
24780
|
"div",
|
|
24638
24781
|
{
|
|
24639
24782
|
ref: elRef,
|
|
@@ -24648,7 +24791,7 @@ function EditGlowChrome({
|
|
|
24648
24791
|
zIndex: 2147483646
|
|
24649
24792
|
},
|
|
24650
24793
|
children: [
|
|
24651
|
-
/* @__PURE__ */
|
|
24794
|
+
/* @__PURE__ */ jsx40(
|
|
24652
24795
|
"div",
|
|
24653
24796
|
{
|
|
24654
24797
|
style: {
|
|
@@ -24662,7 +24805,7 @@ function EditGlowChrome({
|
|
|
24662
24805
|
}
|
|
24663
24806
|
}
|
|
24664
24807
|
),
|
|
24665
|
-
reorderHrefKey && !hideHandle && /* @__PURE__ */
|
|
24808
|
+
reorderHrefKey && !hideHandle && /* @__PURE__ */ jsx40(
|
|
24666
24809
|
"div",
|
|
24667
24810
|
{
|
|
24668
24811
|
"data-ohw-drag-handle-container": "",
|
|
@@ -24674,7 +24817,7 @@ function EditGlowChrome({
|
|
|
24674
24817
|
transform: "translate(calc(-100% - 7px), -50%)",
|
|
24675
24818
|
pointerEvents: dragDisabled ? "none" : "auto"
|
|
24676
24819
|
},
|
|
24677
|
-
children: /* @__PURE__ */
|
|
24820
|
+
children: /* @__PURE__ */ jsx40(
|
|
24678
24821
|
DragHandle,
|
|
24679
24822
|
{
|
|
24680
24823
|
"aria-label": `Reorder ${reorderHrefKey}`,
|
|
@@ -24878,7 +25021,7 @@ function FloatingToolbar({
|
|
|
24878
25021
|
return () => ro.disconnect();
|
|
24879
25022
|
}, [showEditLink, activeCommands]);
|
|
24880
25023
|
const { top, left, transform } = calcToolbarPos(rect, parentScroll, measuredW);
|
|
24881
|
-
return /* @__PURE__ */
|
|
25024
|
+
return /* @__PURE__ */ jsx40(
|
|
24882
25025
|
"div",
|
|
24883
25026
|
{
|
|
24884
25027
|
ref: setRefs,
|
|
@@ -24890,12 +25033,12 @@ function FloatingToolbar({
|
|
|
24890
25033
|
zIndex: 2147483647,
|
|
24891
25034
|
pointerEvents: "auto"
|
|
24892
25035
|
},
|
|
24893
|
-
children: /* @__PURE__ */
|
|
24894
|
-
TOOLBAR_GROUPS.map((btns, gi) => /* @__PURE__ */
|
|
24895
|
-
gi > 0 && /* @__PURE__ */
|
|
25036
|
+
children: /* @__PURE__ */ jsxs26(CustomToolbar, { children: [
|
|
25037
|
+
TOOLBAR_GROUPS.map((btns, gi) => /* @__PURE__ */ jsxs26(React12.Fragment, { children: [
|
|
25038
|
+
gi > 0 && /* @__PURE__ */ jsx40(CustomToolbarDivider, {}),
|
|
24896
25039
|
btns.map((btn) => {
|
|
24897
25040
|
const isActive = activeCommands.has(btn.cmd);
|
|
24898
|
-
return /* @__PURE__ */
|
|
25041
|
+
return /* @__PURE__ */ jsx40(
|
|
24899
25042
|
CustomToolbarButton,
|
|
24900
25043
|
{
|
|
24901
25044
|
title: btn.title,
|
|
@@ -24904,7 +25047,7 @@ function FloatingToolbar({
|
|
|
24904
25047
|
e.preventDefault();
|
|
24905
25048
|
onCommand(btn.cmd);
|
|
24906
25049
|
},
|
|
24907
|
-
children: /* @__PURE__ */
|
|
25050
|
+
children: /* @__PURE__ */ jsx40(
|
|
24908
25051
|
"svg",
|
|
24909
25052
|
{
|
|
24910
25053
|
width: "16",
|
|
@@ -24925,7 +25068,7 @@ function FloatingToolbar({
|
|
|
24925
25068
|
);
|
|
24926
25069
|
})
|
|
24927
25070
|
] }, gi)),
|
|
24928
|
-
showEditLink ? /* @__PURE__ */
|
|
25071
|
+
showEditLink ? /* @__PURE__ */ jsx40(
|
|
24929
25072
|
CustomToolbarButton,
|
|
24930
25073
|
{
|
|
24931
25074
|
type: "button",
|
|
@@ -24939,7 +25082,7 @@ function FloatingToolbar({
|
|
|
24939
25082
|
e.preventDefault();
|
|
24940
25083
|
e.stopPropagation();
|
|
24941
25084
|
},
|
|
24942
|
-
children: /* @__PURE__ */
|
|
25085
|
+
children: /* @__PURE__ */ jsx40(Link2, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
24943
25086
|
}
|
|
24944
25087
|
) : null
|
|
24945
25088
|
] })
|
|
@@ -24956,7 +25099,7 @@ function StateToggle({
|
|
|
24956
25099
|
states,
|
|
24957
25100
|
onStateChange
|
|
24958
25101
|
}) {
|
|
24959
|
-
return /* @__PURE__ */
|
|
25102
|
+
return /* @__PURE__ */ jsx40(
|
|
24960
25103
|
ToggleGroup,
|
|
24961
25104
|
{
|
|
24962
25105
|
"data-ohw-state-toggle": "",
|
|
@@ -24970,52 +25113,15 @@ function StateToggle({
|
|
|
24970
25113
|
left: rect.right - 8,
|
|
24971
25114
|
transform: "translateX(-100%)"
|
|
24972
25115
|
},
|
|
24973
|
-
children: states.map((state) => /* @__PURE__ */
|
|
25116
|
+
children: states.map((state) => /* @__PURE__ */ jsx40(ToggleGroupItem, { value: state, size: "sm", children: state }, state))
|
|
24974
25117
|
}
|
|
24975
25118
|
);
|
|
24976
25119
|
}
|
|
24977
25120
|
var contentCache = /* @__PURE__ */ new Map();
|
|
24978
25121
|
var fetchedContentPaths = /* @__PURE__ */ new Set();
|
|
24979
25122
|
var brandingCache = /* @__PURE__ */ new Map();
|
|
24980
|
-
var OHW_LOADER_STYLE = {
|
|
24981
|
-
position: "fixed",
|
|
24982
|
-
inset: 0,
|
|
24983
|
-
background: "#fff",
|
|
24984
|
-
zIndex: 2147483646,
|
|
24985
|
-
display: "flex",
|
|
24986
|
-
alignItems: "center",
|
|
24987
|
-
justifyContent: "center"
|
|
24988
|
-
};
|
|
24989
|
-
function OhwLoaderSpinner() {
|
|
24990
|
-
return /* @__PURE__ */ jsxs25("svg", { width: "28", height: "28", viewBox: "0 0 28 28", fill: "none", "aria-hidden": true, children: [
|
|
24991
|
-
/* @__PURE__ */ jsx39("circle", { cx: "14", cy: "14", r: "11", stroke: "#E7E5E4", strokeWidth: "3" }),
|
|
24992
|
-
/* @__PURE__ */ jsx39(
|
|
24993
|
-
"circle",
|
|
24994
|
-
{
|
|
24995
|
-
cx: "14",
|
|
24996
|
-
cy: "14",
|
|
24997
|
-
r: "11",
|
|
24998
|
-
stroke: "#1C1917",
|
|
24999
|
-
strokeWidth: "3",
|
|
25000
|
-
strokeDasharray: "17 52",
|
|
25001
|
-
strokeLinecap: "round",
|
|
25002
|
-
children: /* @__PURE__ */ jsx39(
|
|
25003
|
-
"animateTransform",
|
|
25004
|
-
{
|
|
25005
|
-
attributeName: "transform",
|
|
25006
|
-
type: "rotate",
|
|
25007
|
-
from: "0 14 14",
|
|
25008
|
-
to: "360 14 14",
|
|
25009
|
-
dur: "0.7s",
|
|
25010
|
-
repeatCount: "indefinite"
|
|
25011
|
-
}
|
|
25012
|
-
)
|
|
25013
|
-
}
|
|
25014
|
-
)
|
|
25015
|
-
] });
|
|
25016
|
-
}
|
|
25017
25123
|
function OhwBrandMark() {
|
|
25018
|
-
return /* @__PURE__ */
|
|
25124
|
+
return /* @__PURE__ */ jsxs26(
|
|
25019
25125
|
"svg",
|
|
25020
25126
|
{
|
|
25021
25127
|
width: "16",
|
|
@@ -25026,7 +25132,7 @@ function OhwBrandMark() {
|
|
|
25026
25132
|
style: { display: "block", flexShrink: 0 },
|
|
25027
25133
|
xmlns: "http://www.w3.org/2000/svg",
|
|
25028
25134
|
children: [
|
|
25029
|
-
/* @__PURE__ */
|
|
25135
|
+
/* @__PURE__ */ jsx40(
|
|
25030
25136
|
"mask",
|
|
25031
25137
|
{
|
|
25032
25138
|
id: "ohw-badge-mark",
|
|
@@ -25036,15 +25142,15 @@ function OhwBrandMark() {
|
|
|
25036
25142
|
y: "0",
|
|
25037
25143
|
width: "48",
|
|
25038
25144
|
height: "48",
|
|
25039
|
-
children: /* @__PURE__ */
|
|
25145
|
+
children: /* @__PURE__ */ jsx40("path", { d: "M23.8741 48C37.0594 48 47.7481 37.2548 47.7481 24C47.7481 10.7452 37.0594 0 23.8741 0C10.6888 0 0 10.7452 0 24C0 37.2548 10.6888 48 23.8741 48Z", fill: "white" })
|
|
25040
25146
|
}
|
|
25041
25147
|
),
|
|
25042
|
-
/* @__PURE__ */
|
|
25043
|
-
/* @__PURE__ */
|
|
25044
|
-
/* @__PURE__ */
|
|
25045
|
-
/* @__PURE__ */
|
|
25046
|
-
/* @__PURE__ */
|
|
25047
|
-
/* @__PURE__ */
|
|
25148
|
+
/* @__PURE__ */ jsxs26("g", { mask: "url(#ohw-badge-mark)", children: [
|
|
25149
|
+
/* @__PURE__ */ jsx40("path", { d: "M23.8731 48.0497C37.0584 48.0497 47.7472 37.3046 47.7472 24.0497C47.7472 10.7949 37.0584 0.0497208 23.8731 0.0497208C10.6878 0.0497208 -0.000976562 10.7949 -0.000976562 24.0497C-0.000976562 37.3046 10.6878 48.0497 23.8731 48.0497Z", fill: "#0078E5" }),
|
|
25150
|
+
/* @__PURE__ */ jsx40("path", { d: "M17.1307 14.7172C13.1687 14.7172 9.38102 18.1154 8.65114 22.34C8.38885 23.8488 8.5598 25.2581 9.06929 26.4451C6.20005 29.1677 1.77216 27.8721 -1.40212 26.1536C-2.73618 25.4317 -3.92695 27.4745 -2.59037 28.1981C1.33389 30.3226 6.86037 31.6621 10.4402 28.4188C11.4718 29.3859 12.867 29.9621 14.4894 29.9621C18.4161 29.9621 22.2038 26.5318 22.9337 22.34C23.6636 18.1162 21.0566 14.7172 17.1298 14.7172H17.1307ZM19.9798 22.34C19.5281 25.0399 17.2689 27.231 14.9754 27.231C12.6466 27.231 11.1877 25.0399 11.6394 22.34C12.1262 19.6401 14.3151 17.4482 16.6438 17.4482C18.9374 17.4482 20.4667 19.6401 19.9798 22.34Z", fill: "white" }),
|
|
25151
|
+
/* @__PURE__ */ jsx40("path", { d: "M40.0017 27.0262C39.1797 27.081 38.2721 26.995 37.4668 26.7415C37.3344 26.6993 37.28 26.5401 37.3529 26.4205C37.5959 26.0212 37.8255 25.6152 38.009 25.1889C38.1071 24.9918 38.2018 24.793 38.2897 24.5908C38.3274 24.5041 38.4163 24.451 38.5101 24.4619C38.63 24.4754 38.7054 24.4821 38.8881 24.4821L39.1529 24.4796L39.8283 24.4543C45.9229 24.0492 50.4765 20.4319 54.8466 16.9014C56.0172 15.9554 57.6932 17.6208 56.5116 18.5752C51.7687 22.4065 47.1966 26.5081 40.9319 26.9689", fill: "white" }),
|
|
25152
|
+
/* @__PURE__ */ jsx40("path", { d: "M37.9687 24.27C38.4472 23.1319 38.7656 21.9045 38.9609 20.6991C39.5927 16.76 38.5058 14.2193 36.1553 14.2193C34.1835 14.2193 33.1469 17.2427 32.9199 18.8694C32.743 19.9872 32.5914 22.1219 33.6028 23.9524C33.7553 24.259 34.15 24.7712 34.471 25.1259C34.5447 25.2067 34.6746 25.2 34.7349 25.1082C34.9528 24.7788 35.1615 24.4039 35.3584 24.0257C35.5444 23.6677 35.5888 23.6138 35.8587 23.0207C35.8838 22.966 35.8813 22.9002 35.8478 22.8505C35.5888 22.4597 35.2168 21.9787 35.1204 21.4614C34.9184 20.4455 34.9436 19.2257 35.2218 18.1078C35.4413 17.3118 35.7195 16.7844 35.9039 16.5106C35.9466 16.4466 36.0279 16.4129 36.0975 16.4449C36.369 16.5671 36.5827 16.8838 36.7385 17.396C37.0167 18.2089 37.0167 19.3782 36.814 20.6999C36.6991 21.5271 36.4771 22.3729 36.1746 23.1673C36.1293 23.308 36.0757 23.4461 36.0187 23.5826C36.0187 23.5868 36.0187 23.591 36.0187 23.5961C35.9911 23.6946 35.9207 23.8067 35.8846 23.901C35.5536 24.5497 35.2344 25.1697 34.8439 25.7838C34.8388 25.7863 34.8346 25.7914 34.8296 25.7931C34.6528 26.0525 34.4718 26.2901 34.2866 26.4965C34.2774 26.5099 34.2682 26.5234 34.2589 26.5369C34.2405 26.5638 34.2179 26.5815 34.1944 26.595C33.5064 27.3212 32.7665 27.6893 32.0123 27.6893C31.8606 27.6893 31.6838 27.664 31.507 27.4349C31.3042 27.1299 30.85 26.0879 31.2539 22.9112C31.4785 21.3949 31.8011 20.0268 31.931 19.5408C31.9579 19.4413 31.8908 19.3419 31.7886 19.3293L30.0062 19.1162C29.9241 19.1061 29.8478 19.1566 29.8252 19.2366C29.2704 21.1615 27.0305 27.6885 24.9599 27.6885C24.328 27.6885 24.1512 26.6211 24.1001 26.2909C23.775 23.6264 25.528 18.5492 29.5302 16.2267C29.6048 16.1838 29.635 16.0928 29.5998 16.0136L28.9042 14.467C28.8632 14.3752 28.7501 14.3389 28.6638 14.3886C25.8079 16.0414 24.1847 18.5231 23.2915 20.3436C22.2046 22.5793 21.6993 25.0189 21.9515 26.8738C22.1795 28.7794 23.1398 29.872 24.6054 29.872C26.0543 29.872 27.4369 28.9066 28.7098 27.0187C28.7953 26.8915 28.9889 26.9311 29.0149 27.0819C29.2646 28.5283 29.9811 29.872 31.6579 29.872C33.5282 29.872 35.3232 28.7288 36.7134 26.6447C36.7712 26.5874 36.7972 26.5411 36.8181 26.4906C36.8232 26.4931 36.8282 26.4948 36.8332 26.4973C37.01 26.2025 37.181 25.9051 37.3444 25.6027C37.4508 25.4005 37.5572 25.1992 37.6586 24.9945C37.7181 24.874 37.7743 24.7527 37.8262 24.6289C37.838 24.6002 37.8547 24.5665 37.8706 24.5337", fill: "white" }),
|
|
25153
|
+
/* @__PURE__ */ jsx40("path", { d: "M30.5839 31.6397C25.7546 34.8577 19.4773 34.7853 14.6907 31.5243C13.5368 30.7384 12.5044 32.6498 13.6474 33.4281C19.034 37.0985 26.3077 37.096 31.7218 33.488C32.8791 32.7172 31.7478 30.8639 30.5839 31.6397Z", fill: "white" })
|
|
25048
25154
|
] })
|
|
25049
25155
|
]
|
|
25050
25156
|
}
|
|
@@ -25081,7 +25187,7 @@ var OHW_BADGE_LABEL_STYLE = {
|
|
|
25081
25187
|
whiteSpace: "nowrap"
|
|
25082
25188
|
};
|
|
25083
25189
|
function MadeWithOhhWells() {
|
|
25084
|
-
return /* @__PURE__ */
|
|
25190
|
+
return /* @__PURE__ */ jsxs26(
|
|
25085
25191
|
"a",
|
|
25086
25192
|
{
|
|
25087
25193
|
href: "https://ohhwells.com",
|
|
@@ -25091,13 +25197,12 @@ function MadeWithOhhWells() {
|
|
|
25091
25197
|
"data-ohw-badge": "",
|
|
25092
25198
|
style: OHW_BADGE_STYLE,
|
|
25093
25199
|
children: [
|
|
25094
|
-
/* @__PURE__ */
|
|
25095
|
-
/* @__PURE__ */
|
|
25200
|
+
/* @__PURE__ */ jsx40(OhwBrandMark, {}),
|
|
25201
|
+
/* @__PURE__ */ jsx40("span", { style: OHW_BADGE_LABEL_STYLE, children: "Made with OhhWells" })
|
|
25096
25202
|
]
|
|
25097
25203
|
}
|
|
25098
25204
|
);
|
|
25099
25205
|
}
|
|
25100
|
-
var OHW_LOADER_PREHYDRATE_SCRIPT = `(function(){try{var fromGlobal=typeof window!=="undefined"&&window.__OHW_SUBDOMAIN__?String(window.__OHW_SUBDOMAIN__):"";var p=location.hostname.split(".");var fromHost=location.hostname.endsWith(".ohhwells.site")&&p[0]&&p[0]!=="www"?p[0]:"";var fromQuery=new URLSearchParams(location.search).get("subdomain")||"";var fromCookie=(document.cookie.match(/(?:^|; )ohw-subdomain=([^;]*)/)||[])[1];fromCookie=fromCookie?decodeURIComponent(fromCookie):"";if(!fromGlobal&&!fromHost&&!fromQuery&&!fromCookie)return;var e=document.getElementById("ohw-loader");if(e)e.style.display="flex"}catch(e){}})();`;
|
|
25101
25206
|
function subdomainFromCookie() {
|
|
25102
25207
|
if (typeof document === "undefined") return "";
|
|
25103
25208
|
const match = document.cookie.match(/(?:^|; )ohw-subdomain=([^;]*)/);
|
|
@@ -27458,6 +27563,7 @@ function OhhwellsBridge() {
|
|
|
27458
27563
|
const branding = Boolean(data?.showBranding);
|
|
27459
27564
|
contentCache.set(subdomain, content);
|
|
27460
27565
|
brandingCache.set(subdomain, branding);
|
|
27566
|
+
recordOverriddenPaths(subdomain, data?.overriddenPaths);
|
|
27461
27567
|
setShowBranding(branding);
|
|
27462
27568
|
return applyContent(content);
|
|
27463
27569
|
}).catch(() => {
|
|
@@ -27656,7 +27762,7 @@ function OhhwellsBridge() {
|
|
|
27656
27762
|
};
|
|
27657
27763
|
applyFromCache();
|
|
27658
27764
|
const pathCacheKey = `${subdomain}::${pathname}`;
|
|
27659
|
-
if (!fetchedContentPaths.has(pathCacheKey)) {
|
|
27765
|
+
if (!fetchedContentPaths.has(pathCacheKey) && shouldFetchContentForPath(subdomain, pathname)) {
|
|
27660
27766
|
fetchedContentPaths.add(pathCacheKey);
|
|
27661
27767
|
const apiUrl = process.env.NEXT_PUBLIC_FLOWOPS_API_URL ?? "https://flowops-backend-staging-2yfdh7pwpq-as.a.run.app";
|
|
27662
27768
|
fetch(`${apiUrl}/api/public/sites/${subdomain}/content?path=${encodeURIComponent(pathname)}`, { cache: "no-store" }).then((r2) => r2.ok ? r2.json() : null).then((data) => {
|
|
@@ -27666,7 +27772,17 @@ function OhhwellsBridge() {
|
|
|
27666
27772
|
}).catch(() => {
|
|
27667
27773
|
});
|
|
27668
27774
|
}
|
|
27669
|
-
observer = new MutationObserver(
|
|
27775
|
+
observer = new MutationObserver((records) => {
|
|
27776
|
+
if (hasMountedContentNodes(records)) {
|
|
27777
|
+
if (debounceTimer) {
|
|
27778
|
+
clearTimeout(debounceTimer);
|
|
27779
|
+
debounceTimer = null;
|
|
27780
|
+
}
|
|
27781
|
+
applyFromCache();
|
|
27782
|
+
return;
|
|
27783
|
+
}
|
|
27784
|
+
scheduleApply();
|
|
27785
|
+
});
|
|
27670
27786
|
observer.observe(document.body, { childList: true, subtree: true });
|
|
27671
27787
|
return () => {
|
|
27672
27788
|
observer?.disconnect();
|
|
@@ -27880,21 +27996,19 @@ function OhhwellsBridge() {
|
|
|
27880
27996
|
};
|
|
27881
27997
|
}, [pathname, isEditMode, postToParent2]);
|
|
27882
27998
|
useEffect17(() => {
|
|
27883
|
-
if (
|
|
27999
|
+
if (isEditMode) return;
|
|
27884
28000
|
const handleClick = (e) => {
|
|
28001
|
+
if (!isPlainLeftClick(e)) return;
|
|
27885
28002
|
const anchor = e.target.closest("a");
|
|
27886
|
-
if (!anchor
|
|
27887
|
-
const
|
|
27888
|
-
if (!
|
|
27889
|
-
const url = new URL(href, window.location.origin);
|
|
27890
|
-
if (url.searchParams.has("subdomain")) return;
|
|
28003
|
+
if (!anchor) return;
|
|
28004
|
+
const next = resolveStickyNavigation(anchor, window.location.search, window.location.origin);
|
|
28005
|
+
if (!next) return;
|
|
27891
28006
|
e.preventDefault();
|
|
27892
|
-
|
|
27893
|
-
router.push(url.pathname + url.search);
|
|
28007
|
+
router.push(next);
|
|
27894
28008
|
};
|
|
27895
28009
|
document.addEventListener("click", handleClick, true);
|
|
27896
28010
|
return () => document.removeEventListener("click", handleClick, true);
|
|
27897
|
-
}, [
|
|
28011
|
+
}, [isEditMode, router, pathname]);
|
|
27898
28012
|
useEffect17(() => {
|
|
27899
28013
|
if (!isEditMode) {
|
|
27900
28014
|
editStylesRef.current?.base.remove();
|
|
@@ -31613,7 +31727,7 @@ function OhhwellsBridge() {
|
|
|
31613
31727
|
postToParent2({
|
|
31614
31728
|
type: "ow:ready",
|
|
31615
31729
|
version: "1",
|
|
31616
|
-
bridgeVersion: "0.1.
|
|
31730
|
+
bridgeVersion: "0.1.152",
|
|
31617
31731
|
path: pathname,
|
|
31618
31732
|
nodes: collectEditableNodes(editContentRef.current),
|
|
31619
31733
|
sections
|
|
@@ -32150,14 +32264,13 @@ function OhhwellsBridge() {
|
|
|
32150
32264
|
},
|
|
32151
32265
|
[postToParent2]
|
|
32152
32266
|
);
|
|
32153
|
-
return /* @__PURE__ */
|
|
32154
|
-
/* @__PURE__ */
|
|
32155
|
-
/* @__PURE__ */
|
|
32156
|
-
subdomain && !isEditMode && showBranding && /* @__PURE__ */ jsx39(MadeWithOhhWells, {}),
|
|
32267
|
+
return /* @__PURE__ */ jsxs26(Fragment13, { children: [
|
|
32268
|
+
/* @__PURE__ */ jsx40(OhwLoaderSurface, {}),
|
|
32269
|
+
subdomain && !isEditMode && showBranding && /* @__PURE__ */ jsx40(MadeWithOhhWells, {}),
|
|
32157
32270
|
bridgeRoot ? createPortal3(
|
|
32158
|
-
/* @__PURE__ */
|
|
32159
|
-
/* @__PURE__ */
|
|
32160
|
-
isEditMode && /* @__PURE__ */
|
|
32271
|
+
/* @__PURE__ */ jsxs26(Fragment13, { children: [
|
|
32272
|
+
/* @__PURE__ */ jsx40("div", { ref: attachVisibleViewport, "data-ohw-visible-viewport": "", "aria-hidden": true }),
|
|
32273
|
+
isEditMode && /* @__PURE__ */ jsx40(
|
|
32161
32274
|
AiSectionOverlay,
|
|
32162
32275
|
{
|
|
32163
32276
|
postToParent: postToParent2,
|
|
@@ -32165,7 +32278,7 @@ function OhhwellsBridge() {
|
|
|
32165
32278
|
onSelectionChange: handleAiSectionSelectionChange
|
|
32166
32279
|
}
|
|
32167
32280
|
),
|
|
32168
|
-
isEditMode && /* @__PURE__ */
|
|
32281
|
+
isEditMode && /* @__PURE__ */ jsx40(
|
|
32169
32282
|
AiMediaStripOverlay,
|
|
32170
32283
|
{
|
|
32171
32284
|
postToParent: postToParent2,
|
|
@@ -32174,7 +32287,7 @@ function OhhwellsBridge() {
|
|
|
32174
32287
|
clearInteractionChromeRef
|
|
32175
32288
|
}
|
|
32176
32289
|
),
|
|
32177
|
-
isEditMode && /* @__PURE__ */
|
|
32290
|
+
isEditMode && /* @__PURE__ */ jsx40(
|
|
32178
32291
|
AiPricingCardOverlay,
|
|
32179
32292
|
{
|
|
32180
32293
|
postToParent: postToParent2,
|
|
@@ -32182,7 +32295,7 @@ function OhhwellsBridge() {
|
|
|
32182
32295
|
applyTreeLocalRef
|
|
32183
32296
|
}
|
|
32184
32297
|
),
|
|
32185
|
-
isEditMode && /* @__PURE__ */
|
|
32298
|
+
isEditMode && /* @__PURE__ */ jsx40(
|
|
32186
32299
|
AiVideoOverlay,
|
|
32187
32300
|
{
|
|
32188
32301
|
postToParent: postToParent2,
|
|
@@ -32191,7 +32304,7 @@ function OhhwellsBridge() {
|
|
|
32191
32304
|
clearInteractionChromeRef
|
|
32192
32305
|
}
|
|
32193
32306
|
),
|
|
32194
|
-
isEditMode && /* @__PURE__ */
|
|
32307
|
+
isEditMode && /* @__PURE__ */ jsx40(
|
|
32195
32308
|
AiFadeCarouselOverlay,
|
|
32196
32309
|
{
|
|
32197
32310
|
postToParent: postToParent2,
|
|
@@ -32200,12 +32313,12 @@ function OhhwellsBridge() {
|
|
|
32200
32313
|
clearInteractionChromeRef
|
|
32201
32314
|
}
|
|
32202
32315
|
),
|
|
32203
|
-
isSectionDragging && sectionDropSlots.map((slot, i) => /* @__PURE__ */
|
|
32316
|
+
isSectionDragging && sectionDropSlots.map((slot, i) => /* @__PURE__ */ jsx40(
|
|
32204
32317
|
"div",
|
|
32205
32318
|
{
|
|
32206
32319
|
className: "pointer-events-none fixed z-2147483646",
|
|
32207
32320
|
style: { left: slot.left, top: slot.y, width: slot.width, height: 3, transform: "translateY(-50%)" },
|
|
32208
|
-
children: /* @__PURE__ */
|
|
32321
|
+
children: /* @__PURE__ */ jsx40(
|
|
32209
32322
|
DropIndicator,
|
|
32210
32323
|
{
|
|
32211
32324
|
direction: "horizontal",
|
|
@@ -32216,7 +32329,7 @@ function OhhwellsBridge() {
|
|
|
32216
32329
|
},
|
|
32217
32330
|
`section-drop-${slot.insertIndex}-${i}`
|
|
32218
32331
|
)),
|
|
32219
|
-
Object.entries(uploadingRects).map(([key, { rect, fadingOut }]) => /* @__PURE__ */
|
|
32332
|
+
Object.entries(uploadingRects).map(([key, { rect, fadingOut }]) => /* @__PURE__ */ jsx40(
|
|
32220
32333
|
MediaOverlay,
|
|
32221
32334
|
{
|
|
32222
32335
|
hover: { key, rect, elementType: "image", isDragOver: false, hasTextOverlap: false },
|
|
@@ -32227,7 +32340,7 @@ function OhhwellsBridge() {
|
|
|
32227
32340
|
},
|
|
32228
32341
|
`uploading-${key}`
|
|
32229
32342
|
)),
|
|
32230
|
-
mediaHover && !(mediaHover.key in uploadingRects) && mediaHover.key !== selectedMedia?.key && /* @__PURE__ */
|
|
32343
|
+
mediaHover && !(mediaHover.key in uploadingRects) && mediaHover.key !== selectedMedia?.key && /* @__PURE__ */ jsx40(
|
|
32231
32344
|
MediaOverlay,
|
|
32232
32345
|
{
|
|
32233
32346
|
hover: mediaHover,
|
|
@@ -32238,7 +32351,7 @@ function OhhwellsBridge() {
|
|
|
32238
32351
|
onVideoSettingsChange: handleVideoSettingsChange
|
|
32239
32352
|
}
|
|
32240
32353
|
),
|
|
32241
|
-
selectedMedia && !(selectedMedia.key in uploadingRects) && !linkPopover && /* @__PURE__ */
|
|
32354
|
+
selectedMedia && !(selectedMedia.key in uploadingRects) && !linkPopover && /* @__PURE__ */ jsx40(
|
|
32242
32355
|
MediaOverlay,
|
|
32243
32356
|
{
|
|
32244
32357
|
hover: selectedMedia,
|
|
@@ -32250,7 +32363,7 @@ function OhhwellsBridge() {
|
|
|
32250
32363
|
onVideoSettingsChange: handleVideoSettingsChange
|
|
32251
32364
|
}
|
|
32252
32365
|
),
|
|
32253
|
-
carouselHover && !linkPopover && !isItemDragging && /* @__PURE__ */
|
|
32366
|
+
carouselHover && !linkPopover && !isItemDragging && /* @__PURE__ */ jsx40(
|
|
32254
32367
|
CarouselOverlay,
|
|
32255
32368
|
{
|
|
32256
32369
|
hover: carouselHover,
|
|
@@ -32258,10 +32371,10 @@ function OhhwellsBridge() {
|
|
|
32258
32371
|
cueOnly: !!carouselHover.fullBleedSectionId && carouselHover.fullBleedSectionId !== selectedAiSectionId
|
|
32259
32372
|
}
|
|
32260
32373
|
),
|
|
32261
|
-
siblingHintRect && !linkPopover && !isItemDragging && siblingHintRects.length === 0 && /* @__PURE__ */
|
|
32262
|
-
siblingHintRects.length > 0 && !linkPopover && !isItemDragging && siblingHintRects.map((rect, i) => /* @__PURE__ */
|
|
32263
|
-
isItemDragging && draggedItemRect && selectedElRef.current !== footerDragRef.current?.draggedEl && selectedElRef.current !== navDragRef.current?.draggedEl && selectedElRef.current !== buttonCollectionDragRef.current && /* @__PURE__ */
|
|
32264
|
-
isItemDragging && footerDropSlots.map((slot, i) => /* @__PURE__ */
|
|
32374
|
+
siblingHintRect && !linkPopover && !isItemDragging && siblingHintRects.length === 0 && /* @__PURE__ */ jsx40(ItemInteractionLayer, { rect: siblingHintRect, state: "sibling-hint" }),
|
|
32375
|
+
siblingHintRects.length > 0 && !linkPopover && !isItemDragging && siblingHintRects.map((rect, i) => /* @__PURE__ */ jsx40(ItemInteractionLayer, { rect, state: "sibling-hint" }, `sibling-hint-${i}`)),
|
|
32376
|
+
isItemDragging && draggedItemRect && selectedElRef.current !== footerDragRef.current?.draggedEl && selectedElRef.current !== navDragRef.current?.draggedEl && selectedElRef.current !== buttonCollectionDragRef.current && /* @__PURE__ */ jsx40(ItemInteractionLayer, { rect: draggedItemRect, state: "dragging" }),
|
|
32377
|
+
isItemDragging && footerDropSlots.map((slot, i) => /* @__PURE__ */ jsx40(
|
|
32265
32378
|
"div",
|
|
32266
32379
|
{
|
|
32267
32380
|
className: "pointer-events-none fixed z-2147483646",
|
|
@@ -32271,7 +32384,7 @@ function OhhwellsBridge() {
|
|
|
32271
32384
|
width: slot.width,
|
|
32272
32385
|
height: slot.height
|
|
32273
32386
|
},
|
|
32274
|
-
children: /* @__PURE__ */
|
|
32387
|
+
children: /* @__PURE__ */ jsx40(
|
|
32275
32388
|
DropIndicator,
|
|
32276
32389
|
{
|
|
32277
32390
|
direction: slot.direction,
|
|
@@ -32282,7 +32395,7 @@ function OhhwellsBridge() {
|
|
|
32282
32395
|
},
|
|
32283
32396
|
`footer-drop-${slot.direction}-${slot.columnIndex}-${slot.insertIndex}-${i}`
|
|
32284
32397
|
)),
|
|
32285
|
-
isItemDragging && navDropSlots.map((slot, i) => /* @__PURE__ */
|
|
32398
|
+
isItemDragging && navDropSlots.map((slot, i) => /* @__PURE__ */ jsx40(
|
|
32286
32399
|
"div",
|
|
32287
32400
|
{
|
|
32288
32401
|
className: "pointer-events-none fixed z-2147483646",
|
|
@@ -32292,7 +32405,7 @@ function OhhwellsBridge() {
|
|
|
32292
32405
|
width: slot.width,
|
|
32293
32406
|
height: slot.height
|
|
32294
32407
|
},
|
|
32295
|
-
children: /* @__PURE__ */
|
|
32408
|
+
children: /* @__PURE__ */ jsx40(
|
|
32296
32409
|
DropIndicator,
|
|
32297
32410
|
{
|
|
32298
32411
|
direction: slot.direction,
|
|
@@ -32303,7 +32416,7 @@ function OhhwellsBridge() {
|
|
|
32303
32416
|
},
|
|
32304
32417
|
`nav-drop-${slot.direction}-${slot.parentId ?? "root"}-${slot.insertIndex}-${i}`
|
|
32305
32418
|
)),
|
|
32306
|
-
isItemDragging && buttonDropSlots.map((slot, i) => /* @__PURE__ */
|
|
32419
|
+
isItemDragging && buttonDropSlots.map((slot, i) => /* @__PURE__ */ jsx40(
|
|
32307
32420
|
"div",
|
|
32308
32421
|
{
|
|
32309
32422
|
className: "pointer-events-none fixed z-2147483646",
|
|
@@ -32313,7 +32426,7 @@ function OhhwellsBridge() {
|
|
|
32313
32426
|
width: slot.width,
|
|
32314
32427
|
height: slot.height
|
|
32315
32428
|
},
|
|
32316
|
-
children: /* @__PURE__ */
|
|
32429
|
+
children: /* @__PURE__ */ jsx40(
|
|
32317
32430
|
DropIndicator,
|
|
32318
32431
|
{
|
|
32319
32432
|
direction: slot.direction,
|
|
@@ -32324,10 +32437,10 @@ function OhhwellsBridge() {
|
|
|
32324
32437
|
},
|
|
32325
32438
|
`button-drop-${slot.direction}-${slot.insertIndex}-${i}`
|
|
32326
32439
|
)),
|
|
32327
|
-
hoveredNavContainerRect && (toolbarVariant !== "select-frame" || isFooterFrameSelection) && !linkPopover && !isItemDragging && /* @__PURE__ */
|
|
32328
|
-
hoveredItemRect && !linkPopover && !hoveredNavContainerRect && !isItemDragging && hoveredItemElRef.current !== selectedElRef.current && /* @__PURE__ */
|
|
32329
|
-
hoveredTextRect && !hoveredNavContainerRect && !hoveredItemRect && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */
|
|
32330
|
-
formPickRect && !isItemDragging && /* @__PURE__ */
|
|
32440
|
+
hoveredNavContainerRect && (toolbarVariant !== "select-frame" || isFooterFrameSelection) && !linkPopover && !isItemDragging && /* @__PURE__ */ jsx40(ItemInteractionLayer, { rect: hoveredNavContainerRect, state: "hover" }),
|
|
32441
|
+
hoveredItemRect && !linkPopover && !hoveredNavContainerRect && !isItemDragging && hoveredItemElRef.current !== selectedElRef.current && /* @__PURE__ */ jsx40(ItemInteractionLayer, { rect: hoveredItemRect, state: "hover" }),
|
|
32442
|
+
hoveredTextRect && !hoveredNavContainerRect && !hoveredItemRect && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ jsx40(ItemInteractionLayer, { rect: hoveredTextRect, state: "hover" }),
|
|
32443
|
+
formPickRect && !isItemDragging && /* @__PURE__ */ jsx40(
|
|
32331
32444
|
ItemInteractionLayer,
|
|
32332
32445
|
{
|
|
32333
32446
|
rect: formPickRect,
|
|
@@ -32335,13 +32448,13 @@ function OhhwellsBridge() {
|
|
|
32335
32448
|
itemDragSurface: false,
|
|
32336
32449
|
toolbarAlign: "left",
|
|
32337
32450
|
chromeGap: 24,
|
|
32338
|
-
toolbar: fieldPickRect ? void 0 : /* @__PURE__ */
|
|
32451
|
+
toolbar: fieldPickRect ? void 0 : /* @__PURE__ */ jsxs26(
|
|
32339
32452
|
"div",
|
|
32340
32453
|
{
|
|
32341
32454
|
"data-ohw-form-toolbar": "",
|
|
32342
32455
|
className: "pointer-events-auto flex items-center gap-0.5 whitespace-nowrap rounded-lg border border-border bg-background p-1 shadow-md",
|
|
32343
32456
|
children: [
|
|
32344
|
-
/* @__PURE__ */
|
|
32457
|
+
/* @__PURE__ */ jsx40(
|
|
32345
32458
|
"button",
|
|
32346
32459
|
{
|
|
32347
32460
|
type: "button",
|
|
@@ -32349,11 +32462,11 @@ function OhhwellsBridge() {
|
|
|
32349
32462
|
className: "flex h-7 w-7 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted/80",
|
|
32350
32463
|
onClick: () => setFieldTypePickerOpen((open) => !open),
|
|
32351
32464
|
"data-ohw-add-field": "",
|
|
32352
|
-
children: /* @__PURE__ */
|
|
32465
|
+
children: /* @__PURE__ */ jsx40(Plus5, { size: 15, "aria-hidden": true })
|
|
32353
32466
|
}
|
|
32354
32467
|
),
|
|
32355
|
-
/* @__PURE__ */
|
|
32356
|
-
/* @__PURE__ */
|
|
32468
|
+
/* @__PURE__ */ jsx40("div", { className: "mx-0.5 h-5 w-px bg-border" }),
|
|
32469
|
+
/* @__PURE__ */ jsxs26(
|
|
32357
32470
|
"button",
|
|
32358
32471
|
{
|
|
32359
32472
|
type: "button",
|
|
@@ -32369,11 +32482,11 @@ function OhhwellsBridge() {
|
|
|
32369
32482
|
});
|
|
32370
32483
|
},
|
|
32371
32484
|
children: [
|
|
32372
|
-
/* @__PURE__ */
|
|
32485
|
+
/* @__PURE__ */ jsx40(Settings, { size: 14, "aria-hidden": true }),
|
|
32373
32486
|
"Form settings",
|
|
32374
32487
|
formPickCount ? (
|
|
32375
32488
|
// Counter pill, per the design — not a text suffix.
|
|
32376
|
-
/* @__PURE__ */
|
|
32489
|
+
/* @__PURE__ */ jsx40(
|
|
32377
32490
|
"span",
|
|
32378
32491
|
{
|
|
32379
32492
|
"data-ohw-form-count": "",
|
|
@@ -32385,8 +32498,8 @@ function OhhwellsBridge() {
|
|
|
32385
32498
|
]
|
|
32386
32499
|
}
|
|
32387
32500
|
),
|
|
32388
|
-
/* @__PURE__ */
|
|
32389
|
-
/* @__PURE__ */
|
|
32501
|
+
/* @__PURE__ */ jsx40("div", { className: "mx-0.5 h-5 w-px bg-border" }),
|
|
32502
|
+
/* @__PURE__ */ jsx40("div", { className: "flex items-center rounded-md bg-muted/70 p-0.5", children: ["default", "success"].map((state) => /* @__PURE__ */ jsx40(
|
|
32390
32503
|
"button",
|
|
32391
32504
|
{
|
|
32392
32505
|
type: "button",
|
|
@@ -32417,7 +32530,7 @@ function OhhwellsBridge() {
|
|
|
32417
32530
|
)
|
|
32418
32531
|
}
|
|
32419
32532
|
),
|
|
32420
|
-
formHoverRect && !isItemDragging && /* @__PURE__ */
|
|
32533
|
+
formHoverRect && !isItemDragging && /* @__PURE__ */ jsx40(
|
|
32421
32534
|
ItemInteractionLayer,
|
|
32422
32535
|
{
|
|
32423
32536
|
rect: formHoverRect,
|
|
@@ -32425,7 +32538,7 @@ function OhhwellsBridge() {
|
|
|
32425
32538
|
chromeGap: formHoverElRef.current && getFieldWrapper(formHoverElRef.current) ? 8 : 24
|
|
32426
32539
|
}
|
|
32427
32540
|
),
|
|
32428
|
-
fieldPickRect && fieldPickState && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */
|
|
32541
|
+
fieldPickRect && fieldPickState && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ jsx40(
|
|
32429
32542
|
ItemInteractionLayer,
|
|
32430
32543
|
{
|
|
32431
32544
|
rect: fieldPickRect,
|
|
@@ -32437,7 +32550,7 @@ function OhhwellsBridge() {
|
|
|
32437
32550
|
dragHandleLabel: "Reorder field",
|
|
32438
32551
|
onDragHandleDragStart: handleFieldDragStart,
|
|
32439
32552
|
onDragHandleDragEnd: handleFieldDragEnd,
|
|
32440
|
-
toolbar: /* @__PURE__ */
|
|
32553
|
+
toolbar: /* @__PURE__ */ jsx40(
|
|
32441
32554
|
FormFieldToolbar,
|
|
32442
32555
|
{
|
|
32443
32556
|
type: fieldPickState.type,
|
|
@@ -32450,12 +32563,12 @@ function OhhwellsBridge() {
|
|
|
32450
32563
|
)
|
|
32451
32564
|
}
|
|
32452
32565
|
),
|
|
32453
|
-
fieldDragging ? fieldDropSlots.map((slot, i) => /* @__PURE__ */
|
|
32566
|
+
fieldDragging ? fieldDropSlots.map((slot, i) => /* @__PURE__ */ jsx40(
|
|
32454
32567
|
"div",
|
|
32455
32568
|
{
|
|
32456
32569
|
className: "pointer-events-none fixed z-[2147483644]",
|
|
32457
32570
|
style: { top: slot.top, left: slot.left, width: slot.width },
|
|
32458
|
-
children: /* @__PURE__ */
|
|
32571
|
+
children: /* @__PURE__ */ jsx40(
|
|
32459
32572
|
DropIndicator,
|
|
32460
32573
|
{
|
|
32461
32574
|
direction: "horizontal",
|
|
@@ -32468,7 +32581,7 @@ function OhhwellsBridge() {
|
|
|
32468
32581
|
)) : null,
|
|
32469
32582
|
fieldTypePickerOpen && formPickRect ? (() => {
|
|
32470
32583
|
const toolbar = document.querySelector("[data-ohw-form-toolbar]")?.getBoundingClientRect();
|
|
32471
|
-
return /* @__PURE__ */
|
|
32584
|
+
return /* @__PURE__ */ jsx40(
|
|
32472
32585
|
"div",
|
|
32473
32586
|
{
|
|
32474
32587
|
className: "pointer-events-none fixed z-[2147483645]",
|
|
@@ -32476,12 +32589,12 @@ function OhhwellsBridge() {
|
|
|
32476
32589
|
top: toolbar ? toolbar.bottom + 6 : formPickRect.top + 16,
|
|
32477
32590
|
left: toolbar ? toolbar.left : formPickRect.left + 24
|
|
32478
32591
|
},
|
|
32479
|
-
children: /* @__PURE__ */
|
|
32592
|
+
children: /* @__PURE__ */ jsx40(FieldTypePicker, { onPick: handleAddField })
|
|
32480
32593
|
}
|
|
32481
32594
|
);
|
|
32482
32595
|
})() : null,
|
|
32483
|
-
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isNavbarLinksContainer2(selectedElRef.current) && /* @__PURE__ */
|
|
32484
|
-
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isFooterLinksContainer(selectedElRef.current) && /* @__PURE__ */
|
|
32596
|
+
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isNavbarLinksContainer2(selectedElRef.current) && /* @__PURE__ */ jsx40(NavbarContainerChrome, { rect: toolbarRect, onAdd: handleAddTopLevelNavItem }),
|
|
32597
|
+
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isFooterLinksContainer(selectedElRef.current) && /* @__PURE__ */ jsx40(
|
|
32485
32598
|
FooterContainerChrome,
|
|
32486
32599
|
{
|
|
32487
32600
|
rect: toolbarRect,
|
|
@@ -32489,7 +32602,7 @@ function OhhwellsBridge() {
|
|
|
32489
32602
|
addDisabled: !canAddFooterColumn()
|
|
32490
32603
|
}
|
|
32491
32604
|
),
|
|
32492
|
-
toolbarRect && !linkPopover && (toolbarVariant === "link-action" || toolbarVariant === "select-frame" || toolbarVariant === "logo") && /* @__PURE__ */
|
|
32605
|
+
toolbarRect && !linkPopover && (toolbarVariant === "link-action" || toolbarVariant === "select-frame" || toolbarVariant === "logo") && /* @__PURE__ */ jsx40(
|
|
32493
32606
|
ItemInteractionLayer,
|
|
32494
32607
|
{
|
|
32495
32608
|
rect: isItemDragging && draggedItemRect && (footerDragRef.current?.wasSelected || navDragRef.current?.wasSelected || selectedElRef.current === buttonCollectionDragRef.current) ? draggedItemRect : toolbarRect,
|
|
@@ -32509,7 +32622,7 @@ function OhhwellsBridge() {
|
|
|
32509
32622
|
onItemPointerDown: toolbarVariant === "logo" ? void 0 : handleItemChromePointerDown,
|
|
32510
32623
|
onItemClick: toolbarVariant === "logo" ? void 0 : handleItemChromeClick,
|
|
32511
32624
|
itemDragSurface: toolbarVariant !== "logo" && !isFooterFrameSelection && !selectedIsSocialsRow,
|
|
32512
|
-
toolbar: toolbarVariant === "link-action" && !isItemDragging || toolbarVariant === "select-frame" && (isFooterFrameSelection || selectedIsSocialsRow) && !isItemDragging ? /* @__PURE__ */
|
|
32625
|
+
toolbar: toolbarVariant === "link-action" && !isItemDragging || toolbarVariant === "select-frame" && (isFooterFrameSelection || selectedIsSocialsRow) && !isItemDragging ? /* @__PURE__ */ jsx40(
|
|
32513
32626
|
ItemActionToolbar,
|
|
32514
32627
|
{
|
|
32515
32628
|
onEditLink: openLinkPopoverForSelected,
|
|
@@ -32560,8 +32673,8 @@ function OhhwellsBridge() {
|
|
|
32560
32673
|
) : void 0
|
|
32561
32674
|
}
|
|
32562
32675
|
),
|
|
32563
|
-
toolbarRect && toolbarVariant === "rich-text" && !linkPopover && !isRectOutsideClip(toolbarRect, getIframeVisibleClip(parentScrollRef.current)) && /* @__PURE__ */
|
|
32564
|
-
/* @__PURE__ */
|
|
32676
|
+
toolbarRect && toolbarVariant === "rich-text" && !linkPopover && !isRectOutsideClip(toolbarRect, getIframeVisibleClip(parentScrollRef.current)) && /* @__PURE__ */ jsxs26(Fragment13, { children: [
|
|
32677
|
+
/* @__PURE__ */ jsx40(
|
|
32565
32678
|
EditGlowChrome,
|
|
32566
32679
|
{
|
|
32567
32680
|
rect: toolbarRect,
|
|
@@ -32571,7 +32684,7 @@ function OhhwellsBridge() {
|
|
|
32571
32684
|
hideHandle: isItemDragging
|
|
32572
32685
|
}
|
|
32573
32686
|
),
|
|
32574
|
-
/* @__PURE__ */
|
|
32687
|
+
/* @__PURE__ */ jsx40(
|
|
32575
32688
|
FloatingToolbar,
|
|
32576
32689
|
{
|
|
32577
32690
|
rect: toolbarRect,
|
|
@@ -32584,7 +32697,7 @@ function OhhwellsBridge() {
|
|
|
32584
32697
|
}
|
|
32585
32698
|
)
|
|
32586
32699
|
] }),
|
|
32587
|
-
maxBadge && /* @__PURE__ */
|
|
32700
|
+
maxBadge && /* @__PURE__ */ jsxs26(
|
|
32588
32701
|
"div",
|
|
32589
32702
|
{
|
|
32590
32703
|
"data-ohw-max-badge": "",
|
|
@@ -32610,7 +32723,7 @@ function OhhwellsBridge() {
|
|
|
32610
32723
|
]
|
|
32611
32724
|
}
|
|
32612
32725
|
),
|
|
32613
|
-
toggleState && !linkPopover && /* @__PURE__ */
|
|
32726
|
+
toggleState && !linkPopover && /* @__PURE__ */ jsx40(
|
|
32614
32727
|
StateToggle,
|
|
32615
32728
|
{
|
|
32616
32729
|
rect: toggleState.rect,
|
|
@@ -32619,15 +32732,15 @@ function OhhwellsBridge() {
|
|
|
32619
32732
|
onStateChange: handleStateChange
|
|
32620
32733
|
}
|
|
32621
32734
|
),
|
|
32622
|
-
sectionGap && !linkPopover && /* @__PURE__ */
|
|
32735
|
+
sectionGap && !linkPopover && /* @__PURE__ */ jsxs26(
|
|
32623
32736
|
"div",
|
|
32624
32737
|
{
|
|
32625
32738
|
"data-ohw-section-insert-line": "",
|
|
32626
32739
|
className: "fixed left-0 w-full z-2147483646 flex items-center pointer-events-none",
|
|
32627
32740
|
style: { top: sectionGap.y, transform: "translateY(-50%)" },
|
|
32628
32741
|
children: [
|
|
32629
|
-
/* @__PURE__ */
|
|
32630
|
-
/* @__PURE__ */
|
|
32742
|
+
/* @__PURE__ */ jsx40("div", { className: "flex-1 bg-bridge-primary", style: { height: 3 } }),
|
|
32743
|
+
/* @__PURE__ */ jsx40(
|
|
32631
32744
|
Badge,
|
|
32632
32745
|
{
|
|
32633
32746
|
className: "px-8 py-1 bg-bridge-primary hover:bg-bridge-primary text-primary-foreground text-xs font-medium shrink-0 rounded-full cursor-pointer pointer-events-auto",
|
|
@@ -32644,11 +32757,11 @@ function OhhwellsBridge() {
|
|
|
32644
32757
|
children: "Add Section"
|
|
32645
32758
|
}
|
|
32646
32759
|
),
|
|
32647
|
-
/* @__PURE__ */
|
|
32760
|
+
/* @__PURE__ */ jsx40("div", { className: "flex-1 bg-bridge-primary", style: { height: 3 } })
|
|
32648
32761
|
]
|
|
32649
32762
|
}
|
|
32650
32763
|
),
|
|
32651
|
-
linkPopover && dialogPortalContainer ? /* @__PURE__ */
|
|
32764
|
+
linkPopover && dialogPortalContainer ? /* @__PURE__ */ jsx40(
|
|
32652
32765
|
LinkPopover,
|
|
32653
32766
|
{
|
|
32654
32767
|
panelRef: linkPopoverPanelRef,
|
|
@@ -32665,7 +32778,7 @@ function OhhwellsBridge() {
|
|
|
32665
32778
|
},
|
|
32666
32779
|
linkPopover.key
|
|
32667
32780
|
) : null,
|
|
32668
|
-
floatingPanel && floatingPanel.kind === "socials-display" ? /* @__PURE__ */
|
|
32781
|
+
floatingPanel && floatingPanel.kind === "socials-display" ? /* @__PURE__ */ jsx40(
|
|
32669
32782
|
FloatingPanel,
|
|
32670
32783
|
{
|
|
32671
32784
|
open: true,
|
|
@@ -32675,7 +32788,7 @@ function OhhwellsBridge() {
|
|
|
32675
32788
|
onPositionChange: setFloatingPanelPos,
|
|
32676
32789
|
parentScroll: parentScrollSnap ?? parentScrollRef.current,
|
|
32677
32790
|
onClose: closeFloatingPanelOnly,
|
|
32678
|
-
children: /* @__PURE__ */
|
|
32791
|
+
children: /* @__PURE__ */ jsx40(
|
|
32679
32792
|
SocialsDisplayPanel,
|
|
32680
32793
|
{
|
|
32681
32794
|
display: socialsDisplayFor(floatingPanel.row, editContentRef.current),
|
|
@@ -32696,19 +32809,19 @@ function OhhwellsBridge() {
|
|
|
32696
32809
|
const tokens = tokensFromButton(button);
|
|
32697
32810
|
const current = assignmentFor(button, editContentRef.current, tokens);
|
|
32698
32811
|
void buttonStyleTick;
|
|
32699
|
-
return /* @__PURE__ */
|
|
32812
|
+
return /* @__PURE__ */ jsx40(
|
|
32700
32813
|
FloatingPanel,
|
|
32701
32814
|
{
|
|
32702
32815
|
open: true,
|
|
32703
32816
|
title: floatingPanel.title,
|
|
32704
32817
|
context: floatingPanel.context,
|
|
32705
|
-
icon: /* @__PURE__ */
|
|
32818
|
+
icon: /* @__PURE__ */ jsx40(Brush2, { className: "size-4 shrink-0", "aria-hidden": true }),
|
|
32706
32819
|
position: floatingPanelPos,
|
|
32707
32820
|
onPositionChange: setFloatingPanelPos,
|
|
32708
32821
|
parentScroll: parentScrollSnap ?? parentScrollRef.current,
|
|
32709
32822
|
onClose: closeFloatingPanelOnly,
|
|
32710
32823
|
bodyClassName: "gap-5",
|
|
32711
|
-
children: /* @__PURE__ */
|
|
32824
|
+
children: /* @__PURE__ */ jsx40(
|
|
32712
32825
|
ButtonStylePanel,
|
|
32713
32826
|
{
|
|
32714
32827
|
variants: tokens.variants,
|
|
@@ -32736,10 +32849,10 @@ function OhhwellsBridge() {
|
|
|
32736
32849
|
|
|
32737
32850
|
// src/ui/EmptySection.tsx
|
|
32738
32851
|
import Link3 from "next/link";
|
|
32739
|
-
import { Fragment as
|
|
32852
|
+
import { Fragment as Fragment14, jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
32740
32853
|
function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey }) {
|
|
32741
|
-
return /* @__PURE__ */
|
|
32742
|
-
/* @__PURE__ */
|
|
32854
|
+
return /* @__PURE__ */ jsxs27(Fragment14, { children: [
|
|
32855
|
+
/* @__PURE__ */ jsx41(
|
|
32743
32856
|
"p",
|
|
32744
32857
|
{
|
|
32745
32858
|
style: {
|
|
@@ -32751,10 +32864,10 @@ function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey
|
|
|
32751
32864
|
color: "var(--brand-accent)",
|
|
32752
32865
|
marginBottom: "1.5rem"
|
|
32753
32866
|
},
|
|
32754
|
-
children: /* @__PURE__ */
|
|
32867
|
+
children: /* @__PURE__ */ jsx41(Link3, { href: homeHref, style: { color: "inherit" }, children: /* @__PURE__ */ jsx41("span", { ...eyebrowKey ? { "data-ohw-editable": "text", "data-ohw-key": eyebrowKey } : {}, children: "Home" }) })
|
|
32755
32868
|
}
|
|
32756
32869
|
),
|
|
32757
|
-
/* @__PURE__ */
|
|
32870
|
+
/* @__PURE__ */ jsx41(
|
|
32758
32871
|
"h1",
|
|
32759
32872
|
{
|
|
32760
32873
|
style: {
|
|
@@ -32769,7 +32882,7 @@ function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey
|
|
|
32769
32882
|
children: title
|
|
32770
32883
|
}
|
|
32771
32884
|
),
|
|
32772
|
-
/* @__PURE__ */
|
|
32885
|
+
/* @__PURE__ */ jsx41(
|
|
32773
32886
|
"p",
|
|
32774
32887
|
{
|
|
32775
32888
|
style: {
|
|
@@ -32793,6 +32906,7 @@ export {
|
|
|
32793
32906
|
AI_TREE_TOKENS,
|
|
32794
32907
|
AiFooterRenderer,
|
|
32795
32908
|
AiTreeRenderer,
|
|
32909
|
+
BRAND_TITLE_KEY,
|
|
32796
32910
|
CustomToolbar,
|
|
32797
32911
|
CustomToolbarButton,
|
|
32798
32912
|
CustomToolbarDivider,
|
|
@@ -32812,7 +32926,12 @@ export {
|
|
|
32812
32926
|
ItemInteractionLayer,
|
|
32813
32927
|
LinkEditorPanel,
|
|
32814
32928
|
LinkPopover,
|
|
32929
|
+
OHW_LOADER_PREHYDRATE_SCRIPT,
|
|
32930
|
+
OHW_LOADER_STYLE,
|
|
32815
32931
|
OhhwellsBridge,
|
|
32932
|
+
OhwLoaderSpinner,
|
|
32933
|
+
OhwLoaderSurface,
|
|
32934
|
+
SITE_OG_IMAGE_KEY,
|
|
32816
32935
|
SchedulingWidget,
|
|
32817
32936
|
Toggle,
|
|
32818
32937
|
ToggleGroup,
|
|
@@ -32823,6 +32942,8 @@ export {
|
|
|
32823
32942
|
TooltipTrigger,
|
|
32824
32943
|
addFooterLinkColumn,
|
|
32825
32944
|
appendFooterSocial,
|
|
32945
|
+
applyBrandChrome,
|
|
32946
|
+
applyStickySearchParams,
|
|
32826
32947
|
buildDefaultFooterTree,
|
|
32827
32948
|
buildTarget,
|
|
32828
32949
|
dropIndicatorVariants,
|
|
@@ -32830,18 +32951,25 @@ export {
|
|
|
32830
32951
|
filterAvailablePages,
|
|
32831
32952
|
foldAlignIntoTrees,
|
|
32832
32953
|
getEditModeInitialState,
|
|
32954
|
+
hasMountedContentNodes,
|
|
32833
32955
|
insertFooterHours,
|
|
32834
32956
|
isEditSessionActive,
|
|
32957
|
+
isPlainLeftClick,
|
|
32835
32958
|
isRenderableFooterTree,
|
|
32836
32959
|
isRenderableTree,
|
|
32960
|
+
isStickySearchParam,
|
|
32837
32961
|
isValidUrl,
|
|
32838
32962
|
nextViableSlide,
|
|
32839
32963
|
parseAiFooterState,
|
|
32840
32964
|
parseAiSectionsState,
|
|
32841
32965
|
parseTarget,
|
|
32966
|
+
recordOverriddenPaths,
|
|
32842
32967
|
removeFooterBlock,
|
|
32968
|
+
resetOverriddenPathsCache,
|
|
32843
32969
|
resolveFooterCopyright,
|
|
32970
|
+
resolveStickyNavigation,
|
|
32844
32971
|
serializeAiFooterState,
|
|
32972
|
+
shouldFetchContentForPath,
|
|
32845
32973
|
stepViableSlide,
|
|
32846
32974
|
stripTextAlignCss,
|
|
32847
32975
|
toggleVariants,
|