@meetelise/studio-components 0.0.22 → 0.0.23

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.
Files changed (35) hide show
  1. package/dist/components/Accordion.d.ts +1 -1
  2. package/dist/components/Accordion.d.ts.map +1 -1
  3. package/dist/components/Accordion.js +5 -1
  4. package/dist/components/Accordion.js.map +1 -1
  5. package/dist/components/AddressBlock.d.ts.map +1 -1
  6. package/dist/components/AddressBlock.js +4 -0
  7. package/dist/components/AddressBlock.js.map +1 -1
  8. package/dist/components/AmenityList.d.ts +1 -1
  9. package/dist/components/AmenityList.d.ts.map +1 -1
  10. package/dist/components/AmenityList.js +37 -6
  11. package/dist/components/AmenityList.js.map +1 -1
  12. package/dist/components/Gallery.d.ts +1 -1
  13. package/dist/components/Gallery.d.ts.map +1 -1
  14. package/dist/components/Gallery.js +32 -9
  15. package/dist/components/Gallery.js.map +1 -1
  16. package/dist/components/Link.d.ts.map +1 -1
  17. package/dist/components/Link.js +4 -0
  18. package/dist/components/Link.js.map +1 -1
  19. package/dist/components/Modal.d.ts +1 -1
  20. package/dist/components/Modal.d.ts.map +1 -1
  21. package/dist/components/Modal.js +4 -2
  22. package/dist/components/Modal.js.map +1 -1
  23. package/dist/components/PropertyCard.d.ts +1 -1
  24. package/dist/components/PropertyCard.d.ts.map +1 -1
  25. package/dist/components/PropertyCard.js +7 -0
  26. package/dist/components/PropertyCard.js.map +1 -1
  27. package/dist/components/StudioEditPlaceholder.d.ts +9 -0
  28. package/dist/components/StudioEditPlaceholder.d.ts.map +1 -0
  29. package/dist/components/StudioEditPlaceholder.js +8 -0
  30. package/dist/components/StudioEditPlaceholder.js.map +1 -0
  31. package/dist/components/VideoPlayer.d.ts +1 -1
  32. package/dist/components/VideoPlayer.d.ts.map +1 -1
  33. package/dist/components/VideoPlayer.js +4 -2
  34. package/dist/components/VideoPlayer.js.map +1 -1
  35. package/package.json +1 -1
@@ -5,7 +5,7 @@ interface AccordionItem {
5
5
  children?: React.ReactNode;
6
6
  }
7
7
  interface AccordionProps extends EditableNodeAttributes {
8
- items: AccordionItem[];
8
+ items?: AccordionItem[];
9
9
  allowMultiple?: boolean;
10
10
  defaultOpen?: number[];
11
11
  colorScheme?: "light" | "dark";
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,cAAe,SAAQ,sBAAsB;IACrD,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,aAAqB,EACrB,WAAgB,EAChB,WAAqB,EACrB,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,cAAc,2CAiFhB"}
1
+ {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,cAAe,SAAQ,sBAAsB;IACrD,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAU,EACV,aAAqB,EACrB,WAAgB,EAChB,WAAqB,EACrB,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,cAAc,2CA4FhB"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useCallback } from "react";
3
3
  import { twMerge } from "tailwind-merge";
4
- export function Accordion({ items, allowMultiple = false, defaultOpen = [], colorScheme = "light", className, "data-node-id": dataNodeId, }) {
4
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
5
+ export function Accordion({ items = [], allowMultiple = false, defaultOpen = [], colorScheme = "light", className, "data-node-id": dataNodeId, }) {
5
6
  const isDark = colorScheme === "dark";
6
7
  const [openIndices, setOpenIndices] = useState(new Set(defaultOpen));
7
8
  const toggle = useCallback((index) => {
@@ -16,6 +17,9 @@ export function Accordion({ items, allowMultiple = false, defaultOpen = [], colo
16
17
  return next;
17
18
  });
18
19
  }, [allowMultiple]);
20
+ if (items.length === 0) {
21
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Add accordion items", hint: "Questions will appear here", className: className }));
22
+ }
19
23
  return (_jsx("div", { "data-node-id": dataNodeId, className: twMerge("divide-y border-y", isDark
20
24
  ? "divide-white/10 border-white/10"
21
25
  : "divide-[var(--color-muted)]/15 border-[var(--color-muted)]/15", className), children: items.map((item, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAkBzC,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,OAAO,EACrB,SAAS,EACT,cAAc,EAAE,UAAU,GACX;IACf,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC;IACtC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAC5C,IAAI,GAAG,CAAC,WAAW,CAAC,CACrB,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,KAAa,EAAE,EAAE;QAChB,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,OAAO,CACL,8BACgB,UAAU,EACxB,SAAS,EAAE,OAAO,CAChB,mBAAmB,EACnB,MAAM;YACJ,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,+DAA+D,EACnE,SAAS,CACV,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,CACL,0BACE,kBACE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACxB,SAAS,EAAE,OAAO,CAChB,8GAA8G,EAC9G,MAAM;4BACJ,CAAC,CAAC,gDAAgD;4BAClD,CAAC,CAAC,kEAAkE,CACvE,mBACc,MAAM,aAErB,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACzB,cACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,SAAS,EAAE,OAAO,CAChB,iDAAiD,EACjD,MAAM,IAAI,YAAY,CACvB,YAED,eAAM,CAAC,EAAC,cAAc,GAAG,GACrB,IACC,EACT,cACE,SAAS,EAAE,OAAO,CAChB,6CAA6C,EAC7C,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAC3C,YAEA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,YAAG,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,+BAA+B,CAAC,YACzF,IAAI,CAAC,OAAO,GACX,CACL,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,QAAQ,CACd,GACG,KAxCE,CAAC,CAyCL,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddressBlock.d.ts","sourceRoot":"","sources":["../../src/components/AddressBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,iBAAkB,SAAQ,sBAAsB;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,aAAa,EACb,MAAkB,EAClB,WAAqB,EACrB,SAAc,EACd,cAAc,EAAE,UAAU,GAC3B,EAAE,iBAAiB,2CAwCnB"}
1
+ {"version":3,"file":"AddressBlock.d.ts","sourceRoot":"","sources":["../../src/components/AddressBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,iBAAkB,SAAQ,sBAAsB;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,aAAa,EACb,MAAkB,EAClB,WAAqB,EACrB,SAAc,EACd,cAAc,EAAE,UAAU,GAC3B,EAAE,iBAAiB,2CAmDnB"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
2
3
  export function AddressBlock({ address, city, state, postalCode, phone, googleMapsUrl, layout = "stacked", colorScheme = "light", className = "", "data-node-id": dataNodeId, }) {
3
4
  const textColor = colorScheme === "dark" ? "text-white" : "text-[var(--color-foreground)]";
4
5
  const mutedColor = colorScheme === "dark" ? "text-white/70" : "text-[var(--color-secondary)]";
@@ -8,6 +9,9 @@ export function AddressBlock({ address, city, state, postalCode, phone, googleMa
8
9
  .join(", ");
9
10
  const mapsUrl = googleMapsUrl ??
10
11
  (fullAddress ? `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(fullAddress)}` : undefined);
12
+ if (!fullAddress && !phone && !mapsUrl) {
13
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Add address or phone", hint: "Address details will appear here", className: className }));
14
+ }
11
15
  return (_jsxs("div", { "data-node-id": dataNodeId, className: `${isInline ? "flex flex-wrap items-center gap-4" : "flex flex-col gap-2"} ${className}`, children: [fullAddress && _jsx("p", { className: `${textColor} font-[family-name:var(--font-body)]`, children: fullAddress }), _jsxs("div", { className: `flex ${isInline ? "gap-4" : "flex-col gap-2"}`, children: [phone && (_jsx("a", { href: `tel:${phone.replace(/[^\d+]/g, "")}`, className: `${mutedColor} hover:text-[var(--color-primary)] transition-colors font-[family-name:var(--font-body)]`, children: phone })), mapsUrl && (_jsx("a", { href: mapsUrl, target: "_blank", rel: "noopener noreferrer", className: "text-[var(--color-primary)] hover:underline font-[family-name:var(--font-body)]", children: "Get Directions \u2192" }))] })] }));
12
16
  }
13
17
  //# sourceMappingURL=AddressBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddressBlock.js","sourceRoot":"","sources":["../../src/components/AddressBlock.tsx"],"names":[],"mappings":";AAcA,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,aAAa,EACb,MAAM,GAAG,SAAS,EAClB,WAAW,GAAG,OAAO,EACrB,SAAS,GAAG,EAAE,EACd,cAAc,EAAE,UAAU,GACR;IAClB,MAAM,SAAS,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gCAAgC,CAAC;IAC3F,MAAM,UAAU,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,+BAA+B,CAAC;IAC9F,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ,CAAC;IAErC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC5F,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GACX,aAAa;QACb,CAAC,WAAW,CAAC,CAAC,CAAC,mDAAmD,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEnH,OAAO,CACL,+BAAmB,UAAU,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,qBAAqB,IAAI,SAAS,EAAE,aAC/H,WAAW,IAAI,YAAG,SAAS,EAAE,GAAG,SAAS,sCAAsC,YAAG,WAAW,GAAK,EAEnG,eAAK,SAAS,EAAE,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAC5D,KAAK,IAAI,CACR,YACE,IAAI,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAC3C,SAAS,EAAE,GAAG,UAAU,0FAA0F,YAEjH,KAAK,GACJ,CACL,EAEA,OAAO,IAAI,CACV,YACE,IAAI,EAAE,OAAO,EACb,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,iFAAiF,sCAGzF,CACL,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AddressBlock.js","sourceRoot":"","sources":["../../src/components/AddressBlock.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAchE,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,aAAa,EACb,MAAM,GAAG,SAAS,EAClB,WAAW,GAAG,OAAO,EACrB,SAAS,GAAG,EAAE,EACd,cAAc,EAAE,UAAU,GACR;IAClB,MAAM,SAAS,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gCAAgC,CAAC;IAC3F,MAAM,UAAU,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,+BAA+B,CAAC;IAC9F,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ,CAAC;IAErC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC5F,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GACX,aAAa;QACb,CAAC,WAAW,CAAC,CAAC,CAAC,mDAAmD,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEnH,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,CACL,KAAC,qBAAqB,oBACN,UAAU,EACxB,KAAK,EAAC,sBAAsB,EAC5B,IAAI,EAAC,kCAAkC,EACvC,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,+BAAmB,UAAU,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,qBAAqB,IAAI,SAAS,EAAE,aAC/H,WAAW,IAAI,YAAG,SAAS,EAAE,GAAG,SAAS,sCAAsC,YAAG,WAAW,GAAK,EAEnG,eAAK,SAAS,EAAE,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAC5D,KAAK,IAAI,CACR,YACE,IAAI,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAC3C,SAAS,EAAE,GAAG,UAAU,0FAA0F,YAEjH,KAAK,GACJ,CACL,EAEA,OAAO,IAAI,CACV,YACE,IAAI,EAAE,OAAO,EACb,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,iFAAiF,sCAGzF,CACL,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -16,6 +16,6 @@ interface AmenityListProps extends EditableNodeAttributes {
16
16
  colorScheme?: "light" | "dark";
17
17
  className?: string;
18
18
  }
19
- export declare function AmenityList({ propertyId: propertyIdProp, amenities: staticAmenities, layout, columns, showIcons, colorScheme, className, "data-node-id": dataNodeId, }: AmenityListProps): import("react/jsx-runtime").JSX.Element | null;
19
+ export declare function AmenityList({ propertyId: propertyIdProp, amenities: staticAmenities, layout, columns, showIcons, colorScheme, className, "data-node-id": dataNodeId, }: AmenityListProps): import("react/jsx-runtime").JSX.Element;
20
20
  export {};
21
21
  //# sourceMappingURL=AmenityList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AmenityList.d.ts","sourceRoot":"","sources":["../../src/components/AmenityList.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAiB,SAAQ,sBAAsB;IACvD,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkCD,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,eAAoB,EAC/B,MAAmB,EACnB,OAAW,EACX,SAAgB,EAChB,WAAqB,EACrB,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,gBAAgB,kDAsHlB"}
1
+ {"version":3,"file":"AmenityList.d.ts","sourceRoot":"","sources":["../../src/components/AmenityList.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAiB,SAAQ,sBAAsB;IACvD,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkCD,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,eAAoB,EAC/B,MAAmB,EACnB,OAAW,EACX,SAAgB,EAChB,WAAqB,EACrB,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,gBAAgB,2CAoKlB"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo, useState, useEffect, useCallback } from "react";
2
+ import { useMemo, useState, useEffect, useCallback, useRef } from "react";
3
3
  import { twMerge } from "tailwind-merge";
4
4
  import { useSiteConfig } from "../hooks/useSiteConfig";
5
5
  import { useAuth } from "../hooks/useAuth";
6
6
  import { Icon } from "./Icon";
7
7
  import { Accordion } from "./Accordion";
8
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
8
9
  const gridColClasses = {
9
10
  2: "grid-cols-2",
10
11
  3: "grid-cols-2 sm:grid-cols-3",
@@ -21,9 +22,15 @@ export function AmenityList({ propertyId: propertyIdProp, amenities: staticAmeni
21
22
  const propertyId = propertyIdProp ?? config.property?.propertyId;
22
23
  const apiBaseUrl = config.property?.apiBaseUrl ?? "";
23
24
  const [apiAmenities, setApiAmenities] = useState(null);
25
+ const [loading, setLoading] = useState(Boolean(propertyId));
26
+ const [loadedPropertyId, setLoadedPropertyId] = useState(null);
27
+ const requestSeqRef = useRef(0);
24
28
  const fetchAmenities = useCallback(async () => {
25
29
  if (!propertyId)
26
30
  return;
31
+ const requestSeq = requestSeqRef.current + 1;
32
+ requestSeqRef.current = requestSeq;
33
+ setLoading(true);
27
34
  try {
28
35
  const url = `${apiBaseUrl}/v1/properties/${propertyId}?include_amenities=true`;
29
36
  const res = await authenticatedFetch(url);
@@ -36,17 +43,37 @@ export function AmenityList({ propertyId: propertyIdProp, amenities: staticAmeni
36
43
  : a.amenity_level === "Community" ? "Community Amenities"
37
44
  : a.amenity_level ?? a.category,
38
45
  }));
46
+ if (requestSeq !== requestSeqRef.current)
47
+ return;
39
48
  setApiAmenities(items);
40
49
  }
41
50
  catch {
51
+ if (requestSeq !== requestSeqRef.current)
52
+ return;
42
53
  setApiAmenities(null);
43
54
  }
55
+ finally {
56
+ if (requestSeq === requestSeqRef.current) {
57
+ setLoadedPropertyId(propertyId);
58
+ setLoading(false);
59
+ }
60
+ }
44
61
  }, [propertyId, apiBaseUrl, authenticatedFetch]);
45
62
  useEffect(() => {
46
- if (propertyId)
47
- fetchAmenities();
63
+ if (!propertyId) {
64
+ requestSeqRef.current += 1;
65
+ setApiAmenities(null);
66
+ setLoadedPropertyId(null);
67
+ setLoading(false);
68
+ return;
69
+ }
70
+ fetchAmenities();
48
71
  }, [propertyId, fetchAmenities]);
49
- const amenities = apiAmenities ?? staticAmenities;
72
+ const hasFreshApiAmenities = Boolean(propertyId) && loadedPropertyId === propertyId && apiAmenities !== null;
73
+ const amenities = hasFreshApiAmenities ? apiAmenities : staticAmenities;
74
+ const isWaitingForApiAmenities = Boolean(propertyId) &&
75
+ staticAmenities.length === 0 &&
76
+ (loading || loadedPropertyId !== propertyId);
50
77
  const grouped = useMemo(() => {
51
78
  const map = new Map();
52
79
  for (const item of amenities) {
@@ -57,8 +84,12 @@ export function AmenityList({ propertyId: propertyIdProp, amenities: staticAmeni
57
84
  }
58
85
  return map;
59
86
  }, [amenities]);
60
- if (amenities.length === 0)
61
- return null;
87
+ if (isWaitingForApiAmenities) {
88
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Loading amenities", hint: "Fetching property amenities", className: className }));
89
+ }
90
+ if (amenities.length === 0) {
91
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Add amenities", hint: "Amenities will appear here", className: className }));
92
+ }
62
93
  if (layout === "iconGrid") {
63
94
  return (_jsx("div", { "data-node-id": dataNodeId, className: twMerge("grid gap-6", gridColClasses[columns] ?? gridColClasses[3], className), children: amenities.map((item) => (_jsxs("div", { className: "flex flex-col items-center gap-2 text-center", children: [showIcons && item.icon && (_jsx(Icon, { name: item.icon, size: "lg", className: isDark ? "text-[var(--color-accent)]" : "text-[var(--color-primary)]" })), _jsx("span", { className: twMerge("text-sm font-medium", isDark ? "text-white" : "text-[var(--color-foreground)]"), children: item.name })] }, item.name))) }));
64
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AmenityList.js","sourceRoot":"","sources":["../../src/components/AmenityList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AmenityList.js","sourceRoot":"","sources":["../../src/components/AmenityList.tsx"],"names":[],"mappings":"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"}
@@ -14,6 +14,6 @@ interface GalleryProps extends EditableNodeAttributes {
14
14
  columns?: 2 | 3 | 4;
15
15
  className?: string;
16
16
  }
17
- export declare function Gallery({ propertyId: propertyIdProp, images: staticImages, categories, layout, columns, className, "data-node-id": dataNodeId, }: GalleryProps): import("react/jsx-runtime").JSX.Element | null;
17
+ export declare function Gallery({ propertyId: propertyIdProp, images: staticImages, categories, layout, columns, className, "data-node-id": dataNodeId, }: GalleryProps): import("react/jsx-runtime").JSX.Element;
18
18
  export {};
19
19
  //# sourceMappingURL=Gallery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../src/components/Gallery.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAa,SAAQ,sBAAsB;IACnD,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,OAAO,CAAC,EACtB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,YAAiB,EACzB,UAAU,EACV,MAAe,EACf,OAAW,EACX,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,YAAY,kDAgNd"}
1
+ {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../src/components/Gallery.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAa,SAAQ,sBAAsB;IACnD,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,OAAO,CAAC,EACtB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,YAAiB,EACzB,UAAU,EACV,MAAe,EACf,OAAW,EACX,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,YAAY,2CA+Od"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useMemo, useEffect, useCallback } from "react";
2
+ import { useState, useMemo, useEffect, useCallback, useRef } from "react";
3
3
  import { twMerge } from "tailwind-merge";
4
4
  import { useSiteConfig } from "../hooks/useSiteConfig";
5
5
  import { useAuth } from "../hooks/useAuth";
6
6
  import { imageUrl } from "../utils/imageUrl";
7
7
  import { Lightbox } from "./Lightbox";
8
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
8
9
  const gridColClasses = {
9
10
  2: "grid-cols-1 sm:grid-cols-2",
10
11
  3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
@@ -22,11 +23,15 @@ export function Gallery({ propertyId: propertyIdProp, images: staticImages = [],
22
23
  const propertyId = propertyIdProp ?? config.property?.propertyId;
23
24
  const apiBaseUrl = config.property?.apiBaseUrl ?? "";
24
25
  const [apiImages, setApiImages] = useState(null);
25
- const [loading, setLoading] = useState(false);
26
+ const [loading, setLoading] = useState(Boolean(propertyId));
27
+ const [loadedPropertyId, setLoadedPropertyId] = useState(null);
28
+ const requestSeqRef = useRef(0);
26
29
  // Fetch from media API when propertyId is available
27
30
  const fetchMedia = useCallback(async () => {
28
31
  if (!propertyId)
29
32
  return;
33
+ const requestSeq = requestSeqRef.current + 1;
34
+ requestSeqRef.current = requestSeq;
30
35
  setLoading(true);
31
36
  try {
32
37
  const res = await authenticatedFetch(`${apiBaseUrl}/v1/properties/${propertyId}?include_media=true`);
@@ -37,21 +42,38 @@ export function Gallery({ propertyId: propertyIdProp, images: staticImages = [],
37
42
  alt: m.name || m.description || "",
38
43
  category: TYPE_TO_CATEGORY[m.type ?? ""] ?? m.type ?? undefined,
39
44
  }));
45
+ if (requestSeq !== requestSeqRef.current)
46
+ return;
40
47
  setApiImages(items);
41
48
  }
42
49
  catch {
50
+ if (requestSeq !== requestSeqRef.current)
51
+ return;
43
52
  setApiImages(null);
44
53
  }
45
54
  finally {
46
- setLoading(false);
55
+ if (requestSeq === requestSeqRef.current) {
56
+ setLoadedPropertyId(propertyId);
57
+ setLoading(false);
58
+ }
47
59
  }
48
60
  }, [propertyId, apiBaseUrl, authenticatedFetch]);
49
61
  useEffect(() => {
50
- if (propertyId)
51
- fetchMedia();
62
+ if (!propertyId) {
63
+ requestSeqRef.current += 1;
64
+ setApiImages(null);
65
+ setLoadedPropertyId(null);
66
+ setLoading(false);
67
+ return;
68
+ }
69
+ fetchMedia();
52
70
  }, [propertyId, fetchMedia]);
53
71
  // Use API images if available, else static content-blob images
54
- const images = apiImages ?? staticImages;
72
+ const hasFreshApiImages = Boolean(propertyId) && loadedPropertyId === propertyId && apiImages !== null;
73
+ const images = hasFreshApiImages ? apiImages : staticImages;
74
+ const isWaitingForApiImages = Boolean(propertyId) &&
75
+ staticImages.length === 0 &&
76
+ (loading || loadedPropertyId !== propertyId);
55
77
  const [activeCategory, setActiveCategory] = useState(null);
56
78
  const [lightboxIndex, setLightboxIndex] = useState(null);
57
79
  const [carouselIndex, setCarouselIndex] = useState(0);
@@ -66,11 +88,12 @@ export function Gallery({ propertyId: propertyIdProp, images: staticImages = [],
66
88
  return images;
67
89
  return images.filter((img) => img.category === activeCategory);
68
90
  }, [images, activeCategory]);
69
- if (loading) {
91
+ if (loading || isWaitingForApiImages) {
70
92
  return (_jsx("div", { "data-node-id": dataNodeId, className: twMerge("text-center py-8 text-[var(--color-muted)]", className), children: "Loading gallery..." }));
71
93
  }
72
- if (images.length === 0)
73
- return null;
94
+ if (images.length === 0) {
95
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Add gallery images", hint: "Photos will appear here", className: className }));
96
+ }
74
97
  return (_jsxs("div", { "data-node-id": dataNodeId, className: twMerge("w-full", className), children: [derivedCategories.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-6", children: derivedCategories.map((cat) => {
75
98
  const isActive = cat === "All" ? !activeCategory : activeCategory === cat;
76
99
  return (_jsx("button", { onClick: () => setActiveCategory(cat === "All" ? null : cat), className: twMerge("rounded-full px-4 py-1.5 text-sm font-medium transition-colors cursor-pointer", isActive
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../../src/components/Gallery.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../../src/components/Gallery.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,SAAU,SAAQ,sBAAsB;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,SAAS,2CAgBrF"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,SAAU,SAAQ,sBAAsB;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,SAAS,2CA2BrF"}
@@ -1,9 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { twMerge } from "tailwind-merge";
3
3
  import { useNavigate } from "../router";
4
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
4
5
  const defaults = "text-[var(--color-primary)] underline-offset-2 hover:underline cursor-pointer";
5
6
  export function Link({ to, content, className, "data-node-id": dataNodeId }) {
6
7
  const navigate = useNavigate();
8
+ if (!content) {
9
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Empty Link", hint: "Add link text", className: className }));
10
+ }
7
11
  return (_jsx("a", { "data-node-id": dataNodeId, href: to, className: twMerge(defaults, className), onClick: (e) => {
8
12
  e.preventDefault();
9
13
  navigate(to);
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,MAAM,QAAQ,GAAG,+EAA+E,CAAC;AAEjG,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAa;IACpF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CACL,4BACgB,UAAU,EACxB,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EACvC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC,YAEA,OAAO,GACN,CACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,MAAM,QAAQ,GAAG,+EAA+E,CAAC;AAEjG,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAa;IACpF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,KAAC,qBAAqB,oBACN,UAAU,EACxB,KAAK,EAAC,YAAY,EAClB,IAAI,EAAC,eAAe,EACpB,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,4BACgB,UAAU,EACxB,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EACvC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC,YAEA,OAAO,GACN,CACL,CAAC;AACJ,CAAC"}
@@ -5,6 +5,6 @@ interface ModalProps extends EditableNodeAttributes {
5
5
  children?: React.ReactNode;
6
6
  className?: string;
7
7
  }
8
- export declare function Modal({ id, title, children, className, "data-node-id": dataNodeId }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
8
+ export declare function Modal({ id, title, children, className, "data-node-id": dataNodeId }: ModalProps): import("react/jsx-runtime").JSX.Element;
9
9
  export {};
10
10
  //# sourceMappingURL=Modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,UAAW,SAAQ,sBAAsB;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,UAAU,kDA4D/F"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,UAAW,SAAQ,sBAAsB;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,UAAU,2CAqE/F"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRef, useEffect } from "react";
3
3
  import { twMerge } from "tailwind-merge";
4
4
  import { useModal } from "../hooks/useModal";
5
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
5
6
  export function Modal({ id, title, children, className, "data-node-id": dataNodeId }) {
6
7
  const { activeModalId, closeModal } = useModal();
7
8
  const panelRef = useRef(null);
@@ -12,8 +13,9 @@ export function Modal({ id, title, children, className, "data-node-id": dataNode
12
13
  panelRef.current.focus();
13
14
  }
14
15
  }, [isOpen]);
15
- if (!isOpen)
16
- return null;
16
+ if (!isOpen) {
17
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Closed Modal", hint: "Open this modal from a button", className: className }));
18
+ }
17
19
  return (_jsxs("div", { "data-node-id": dataNodeId, className: "fixed inset-0 z-50 flex items-center justify-center p-4", onClick: closeModal, role: "dialog", "aria-modal": "true", "aria-label": title, children: [_jsx("div", { className: "absolute inset-0 bg-black/60" }), _jsxs("div", { ref: panelRef, tabIndex: -1, onClick: (e) => e.stopPropagation(), className: twMerge("relative z-10 w-full max-w-lg max-h-[90vh] overflow-y-auto rounded-[var(--radius)] bg-white shadow-2xl", className), children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-100 px-6 py-4", children: [title && (_jsx("h2", { className: "text-lg font-semibold text-[var(--color-foreground)]", children: title })), _jsx("button", { onClick: closeModal, className: "ml-auto rounded-md p-1 text-[var(--color-muted)] hover:text-[var(--color-foreground)] transition-colors cursor-pointer", "aria-label": "Close", children: _jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M5 5l10 10M15 5L5 15" }) }) })] }), _jsx("div", { className: "px-6 py-5", children: children })] })] }));
18
20
  }
19
21
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAU7C,MAAM,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAc;IAC9F,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,aAAa,KAAK,EAAE,CAAC;IAEpC,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC/B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,+BACgB,UAAU,EACxB,SAAS,EAAC,yDAAyD,EACnE,OAAO,EAAE,UAAU,EACnB,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,KAAK,aAGjB,cAAK,SAAS,EAAC,8BAA8B,GAAG,EAGhD,eACE,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,SAAS,EAAE,OAAO,CAChB,wGAAwG,EACxG,SAAS,CACV,aAGD,eAAK,SAAS,EAAC,sEAAsE,aAClF,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,sDAAsD,YACjE,KAAK,GACH,CACN,EACD,iBACE,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,wHAAwH,gBACvH,OAAO,YAElB,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,YAC/F,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAC7B,GACC,IACL,EAGN,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,IACvC,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAc;IAC9F,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,aAAa,KAAK,EAAE,CAAC;IAEpC,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC/B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CACL,KAAC,qBAAqB,oBACN,UAAU,EACxB,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,+BAA+B,EACpC,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,+BACgB,UAAU,EACxB,SAAS,EAAC,yDAAyD,EACnE,OAAO,EAAE,UAAU,EACnB,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,KAAK,aAGjB,cAAK,SAAS,EAAC,8BAA8B,GAAG,EAGhD,eACE,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,SAAS,EAAE,OAAO,CAChB,wGAAwG,EACxG,SAAS,CACV,aAGD,eAAK,SAAS,EAAC,sEAAsE,aAClF,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,sDAAsD,YACjE,KAAK,GACH,CACN,EACD,iBACE,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,wHAAwH,gBACvH,OAAO,YAElB,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,YAC/F,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAC7B,GACC,IACL,EAGN,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,IACvC,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { PublicProperty } from "../hooks/useProperties";
2
2
  import type { EditableNodeAttributes } from "../types";
3
3
  interface PropertyCardProps extends EditableNodeAttributes {
4
- property: PublicProperty;
4
+ property?: PublicProperty | null;
5
5
  /**
6
6
  * Link target template. Placeholders: {id}, {name}, {city}, {state}.
7
7
  * Use an absolute URL (https://…) to link to a property's own website.
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyCard.d.ts","sourceRoot":"","sources":["../../src/components/PropertyCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,iBAAkB,SAAQ,sBAAsB;IACxD,QAAQ,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,CAMnF;AAQD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAgC,EAChC,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,iBAAiB,2CA6CnB"}
1
+ {"version":3,"file":"PropertyCard.d.ts","sourceRoot":"","sources":["../../src/components/PropertyCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,iBAAkB,SAAQ,sBAAsB;IACxD,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,CAMnF;AAYD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAgC,EAChC,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,iBAAiB,2CAyDnB"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { twMerge } from "tailwind-merge";
3
3
  import { useNavigate } from "../router";
4
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
4
5
  export function buildPropertyHref(pattern, property) {
5
6
  return pattern
6
7
  .replace(/\{id\}/g, String(property.id))
@@ -14,8 +15,14 @@ function primaryImageUrl(property) {
14
15
  const sorted = [...property.media].sort((a, b) => (a.rank ?? 999) - (b.rank ?? 999));
15
16
  return sorted[0]?.url ?? null;
16
17
  }
18
+ function isUsableProperty(value) {
19
+ return Boolean(value && typeof value === "object" && (value.id != null || value.name));
20
+ }
17
21
  export function PropertyCard({ property, hrefPattern = "/properties/{id}", className, "data-node-id": dataNodeId, }) {
18
22
  const navigate = useNavigate();
23
+ if (!isUsableProperty(property)) {
24
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Configure property card", hint: "Property cards are usually rendered by Property Grid", className: className }));
25
+ }
19
26
  const href = buildPropertyHref(hrefPattern, property);
20
27
  const isExternal = /^https?:\/\//i.test(href);
21
28
  const image = primaryImageUrl(property);
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyCard.js","sourceRoot":"","sources":["../../src/components/PropertyCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAcxC,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAwB;IACzE,OAAO,OAAO;SACX,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACvC,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC7D,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC7D,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,QAAwB;IAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,GAAG,kBAAkB,EAChC,SAAS,EACT,cAAc,EAAE,UAAU,GACR;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC7D,IAAI,UAAU;YAAE,OAAO,CAAC,6CAA6C;QACrE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CACL,6BACgB,UAAU,EACxB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACzC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,EACnD,SAAS,EAAE,OAAO,CAChB,iKAAiK,EACjK,SAAS,CACV,aAED,cAAK,SAAS,EAAC,gEAAgE,YAC5E,KAAK,IAAI,CACR,cACE,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,UAAU,EAChC,OAAO,EAAC,MAAM,EACd,SAAS,EAAC,oFAAoF,GAC9F,CACH,GACG,EACN,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,wDAAwD,YACrE,QAAQ,CAAC,IAAI,IAAI,WAAW,GACxB,EACN,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,uCAAuC,YAAE,QAAQ,GAAQ,CAC1E,IACG,IACJ,CACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"PropertyCard.js","sourceRoot":"","sources":["../../src/components/PropertyCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { EditableNodeAttributes } from "../types";
2
+ interface StudioEditPlaceholderProps extends EditableNodeAttributes {
3
+ label: string;
4
+ hint?: string;
5
+ className?: string;
6
+ }
7
+ export declare function StudioEditPlaceholder({ label, hint, className, "data-node-id": dataNodeId, }: StudioEditPlaceholderProps): import("react/jsx-runtime").JSX.Element | null;
8
+ export {};
9
+ //# sourceMappingURL=StudioEditPlaceholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudioEditPlaceholder.d.ts","sourceRoot":"","sources":["../../src/components/StudioEditPlaceholder.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,IAAI,EACJ,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,0BAA0B,kDAe5B"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { twMerge } from "tailwind-merge";
3
+ export function StudioEditPlaceholder({ label, hint, className, "data-node-id": dataNodeId, }) {
4
+ if (!dataNodeId)
5
+ return null;
6
+ return (_jsxs("div", { "data-node-id": dataNodeId, "data-studio-runtime-placeholder": "true", "data-studio-empty-kind": "component", "data-studio-empty-label": label, className: twMerge("studio-edit-placeholder", className), children: [_jsx("span", { children: label }), hint && _jsx("small", { children: hint })] }));
7
+ }
8
+ //# sourceMappingURL=StudioEditPlaceholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudioEditPlaceholder.js","sourceRoot":"","sources":["../../src/components/StudioEditPlaceholder.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AASzC,MAAM,UAAU,qBAAqB,CAAC,EACpC,KAAK,EACL,IAAI,EACJ,SAAS,EACT,cAAc,EAAE,UAAU,GACC;IAC3B,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,OAAO,CACL,+BACgB,UAAU,qCACQ,MAAM,4BACf,WAAW,6BACT,KAAK,EAC9B,SAAS,EAAE,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC,aAExD,yBAAO,KAAK,GAAQ,EACnB,IAAI,IAAI,0BAAQ,IAAI,GAAS,IAC1B,CACP,CAAC;AACJ,CAAC"}
@@ -14,6 +14,6 @@ interface VideoPlayerProps extends EditableNodeAttributes {
14
14
  aspect?: "16/9" | "4/3" | "1/1" | "auto";
15
15
  className?: string;
16
16
  }
17
- export declare function VideoPlayer({ src, poster, controls, autoplay, loop, aspect, className, "data-node-id": dataNodeId, }: VideoPlayerProps): import("react/jsx-runtime").JSX.Element | null;
17
+ export declare function VideoPlayer({ src, poster, controls, autoplay, loop, aspect, className, "data-node-id": dataNodeId, }: VideoPlayerProps): import("react/jsx-runtime").JSX.Element;
18
18
  export {};
19
19
  //# sourceMappingURL=VideoPlayer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,gBAAiB,SAAQ,sBAAsB;IACvD,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAe,EACf,QAAgB,EAChB,IAAY,EACZ,MAAe,EACf,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,gBAAgB,kDAwBlB"}
1
+ {"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,UAAU,gBAAiB,SAAQ,sBAAsB;IACvD,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAe,EACf,QAAgB,EAChB,IAAY,EACZ,MAAe,EACf,SAAS,EACT,cAAc,EAAE,UAAU,GAC3B,EAAE,gBAAgB,2CAiClB"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { twMerge } from "tailwind-merge";
3
+ import { StudioEditPlaceholder } from "./StudioEditPlaceholder";
3
4
  const aspectClasses = {
4
5
  "16/9": "aspect-[16/9]",
5
6
  "4/3": "aspect-[4/3]",
@@ -7,8 +8,9 @@ const aspectClasses = {
7
8
  auto: "",
8
9
  };
9
10
  export function VideoPlayer({ src, poster, controls = true, autoplay = false, loop = false, aspect = "16/9", className, "data-node-id": dataNodeId, }) {
10
- if (!src)
11
- return null;
11
+ if (!src) {
12
+ return (_jsx(StudioEditPlaceholder, { "data-node-id": dataNodeId, label: "Configure video", hint: "Add a video URL", className: className }));
13
+ }
12
14
  return (_jsx("div", { "data-node-id": dataNodeId, className: twMerge("w-full overflow-hidden rounded-lg bg-black", aspectClasses[aspect] ?? aspectClasses["16/9"], className), children: _jsx("video", { src: src, poster: poster, controls: controls, autoPlay: autoplay, loop: loop, muted: autoplay, playsInline: true, className: "w-full h-full object-cover" }) }));
13
15
  }
14
16
  //# sourceMappingURL=VideoPlayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAmBzC,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,eAAe;IACvB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,MAAM,EACf,SAAS,EACT,cAAc,EAAE,UAAU,GACT;IACjB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,OAAO,CACL,8BACgB,UAAU,EACxB,SAAS,EAAE,OAAO,CAChB,4CAA4C,EAC5C,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAC9C,SAAS,CACV,YAED,gBACE,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,QAAQ,EACf,WAAW,QACX,SAAS,EAAC,4BAA4B,GACtC,GACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAkBhE,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,eAAe;IACvB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,MAAM,EACf,SAAS,EACT,cAAc,EAAE,UAAU,GACT;IACjB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CACL,KAAC,qBAAqB,oBACN,UAAU,EACxB,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAC,iBAAiB,EACtB,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,8BACgB,UAAU,EACxB,SAAS,EAAE,OAAO,CAChB,4CAA4C,EAC5C,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAC9C,SAAS,CACV,YAED,gBACE,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,QAAQ,EACf,WAAW,QACX,SAAS,EAAC,4BAA4B,GACtC,GACE,CACP,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meetelise/studio-components",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "Elise Studio component library — renderer, layout primitives, and data-fetching components for property websites",
5
5
  "repository": {
6
6
  "type": "git",