@loafmarkets/ui 0.1.151 → 0.1.153
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.js +167 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +167 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -7945,6 +7945,7 @@ function GalleryMapSection({
|
|
|
7945
7945
|
const [carouselIndex, setCarouselIndex] = useState(0);
|
|
7946
7946
|
const [showVideo, setShowVideo] = useState(false);
|
|
7947
7947
|
const [autoPlaying, setAutoPlaying] = useState(autoPlay);
|
|
7948
|
+
const [showFullMap, setShowFullMap] = useState(false);
|
|
7948
7949
|
const resolvedMapUrl = mapUrl ?? (tokenName ? `/map/${tokenName}?embed=true&zoom=14&hideOthers=true` : "about:blank");
|
|
7949
7950
|
useEffect(() => {
|
|
7950
7951
|
if (!autoPlaying || images.length <= 1) return;
|
|
@@ -8038,7 +8039,13 @@ function GalleryMapSection({
|
|
|
8038
8039
|
/* @__PURE__ */ jsx(BiMap, {}),
|
|
8039
8040
|
" Location"
|
|
8040
8041
|
] }),
|
|
8041
|
-
/* @__PURE__ */
|
|
8042
|
+
/* @__PURE__ */ jsxs(MapHeaderRight, { children: [
|
|
8043
|
+
/* @__PURE__ */ jsx("span", { children: propertyLocation }),
|
|
8044
|
+
/* @__PURE__ */ jsxs("button", { type: "button", onClick: () => setShowFullMap(true), children: [
|
|
8045
|
+
/* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", style: { width: 14, height: 14 }, children: /* @__PURE__ */ jsx("path", { d: "M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3" }) }),
|
|
8046
|
+
"Full Screen"
|
|
8047
|
+
] })
|
|
8048
|
+
] })
|
|
8042
8049
|
] }),
|
|
8043
8050
|
/* @__PURE__ */ jsxs(MapFrame, { children: [
|
|
8044
8051
|
/* @__PURE__ */ jsx(IframeShield, { onClick: (e) => e.currentTarget.style.display = "none" }),
|
|
@@ -8048,17 +8055,73 @@ function GalleryMapSection({
|
|
|
8048
8055
|
src: resolvedMapUrl,
|
|
8049
8056
|
width: "100%",
|
|
8050
8057
|
height: "100%",
|
|
8051
|
-
style: { border: 0, minHeight:
|
|
8058
|
+
style: { border: 0, minHeight: 380, pointerEvents: "auto" },
|
|
8052
8059
|
allow: "autoplay; fullscreen; web-share; xr-spatial-tracking;",
|
|
8053
8060
|
title: "Property Location",
|
|
8054
8061
|
referrerPolicy: "unsafe-url",
|
|
8055
8062
|
tabIndex: -1
|
|
8056
8063
|
}
|
|
8057
8064
|
)
|
|
8065
|
+
] }),
|
|
8066
|
+
/* @__PURE__ */ jsxs(SuburbProfile, { children: [
|
|
8067
|
+
/* @__PURE__ */ jsxs(SuburbProfileTitle, { children: [
|
|
8068
|
+
"Suburb Profile \u2014 ",
|
|
8069
|
+
propertyLocation.split(",")[0]?.trim() || propertyLocation
|
|
8070
|
+
] }),
|
|
8071
|
+
/* @__PURE__ */ jsxs(SuburbStatsGrid, { children: [
|
|
8072
|
+
/* @__PURE__ */ jsxs(SuburbStat, { children: [
|
|
8073
|
+
/* @__PURE__ */ jsx(SuburbStatLabel, { children: "Median House Price" }),
|
|
8074
|
+
/* @__PURE__ */ jsx(SuburbStatValue, { children: "$6.2M" })
|
|
8075
|
+
] }),
|
|
8076
|
+
/* @__PURE__ */ jsxs(SuburbStat, { children: [
|
|
8077
|
+
/* @__PURE__ */ jsx(SuburbStatLabel, { children: "5yr Growth" }),
|
|
8078
|
+
/* @__PURE__ */ jsx(SuburbStatValue, { children: "+42%" })
|
|
8079
|
+
] }),
|
|
8080
|
+
/* @__PURE__ */ jsxs(SuburbStat, { children: [
|
|
8081
|
+
/* @__PURE__ */ jsx(SuburbStatLabel, { children: "Rental Yield" }),
|
|
8082
|
+
/* @__PURE__ */ jsx(SuburbStatValue, { children: "2.1%" })
|
|
8083
|
+
] }),
|
|
8084
|
+
/* @__PURE__ */ jsxs(SuburbStat, { children: [
|
|
8085
|
+
/* @__PURE__ */ jsx(SuburbStatLabel, { children: "Population" }),
|
|
8086
|
+
/* @__PURE__ */ jsx(SuburbStatValue, { children: "30,200" })
|
|
8087
|
+
] })
|
|
8088
|
+
] }),
|
|
8089
|
+
/* @__PURE__ */ jsx(SuburbDesc, { children: "Premium harbourside suburb on Sydney's Lower North Shore. Known for heritage homes, village atmosphere, and proximity to Taronga Zoo and Balmoral Beach." })
|
|
8058
8090
|
] })
|
|
8059
|
-
] })
|
|
8091
|
+
] }),
|
|
8092
|
+
showFullMap && /* @__PURE__ */ jsx(FullMapPopup, { onClose: () => setShowFullMap(false) })
|
|
8060
8093
|
] });
|
|
8061
8094
|
}
|
|
8095
|
+
function FullMapPopup({ onClose }) {
|
|
8096
|
+
useEffect(() => {
|
|
8097
|
+
const handleEsc = (e) => {
|
|
8098
|
+
if (e.key === "Escape") onClose();
|
|
8099
|
+
};
|
|
8100
|
+
window.addEventListener("keydown", handleEsc);
|
|
8101
|
+
return () => window.removeEventListener("keydown", handleEsc);
|
|
8102
|
+
}, [onClose]);
|
|
8103
|
+
return /* @__PURE__ */ jsx(FullMapOverlay, { onClick: onClose, children: /* @__PURE__ */ jsxs(FullMapPanel, { onClick: (e) => e.stopPropagation(), children: [
|
|
8104
|
+
/* @__PURE__ */ jsxs(FullMapHeader, { children: [
|
|
8105
|
+
/* @__PURE__ */ jsxs(FullMapTitle, { children: [
|
|
8106
|
+
/* @__PURE__ */ jsx(BiMap, {}),
|
|
8107
|
+
" Map View"
|
|
8108
|
+
] }),
|
|
8109
|
+
/* @__PURE__ */ jsx(FullMapClose, { onClick: onClose, "aria-label": "Close map", children: "\u2715" })
|
|
8110
|
+
] }),
|
|
8111
|
+
/* @__PURE__ */ jsx(FullMapFrame, { children: /* @__PURE__ */ jsx(
|
|
8112
|
+
"iframe",
|
|
8113
|
+
{
|
|
8114
|
+
src: "/map",
|
|
8115
|
+
width: "100%",
|
|
8116
|
+
height: "100%",
|
|
8117
|
+
style: { border: 0 },
|
|
8118
|
+
allow: "autoplay; fullscreen; web-share; xr-spatial-tracking;",
|
|
8119
|
+
title: "Full Screen Map",
|
|
8120
|
+
referrerPolicy: "unsafe-url"
|
|
8121
|
+
}
|
|
8122
|
+
) })
|
|
8123
|
+
] }) });
|
|
8124
|
+
}
|
|
8062
8125
|
var Row = styled9.div`
|
|
8063
8126
|
display: grid;
|
|
8064
8127
|
grid-template-columns: 2fr 1fr;
|
|
@@ -8176,11 +8239,111 @@ var MapPanel = styled9(PanelBase)`
|
|
|
8176
8239
|
min-width: 0; overflow: hidden;
|
|
8177
8240
|
`;
|
|
8178
8241
|
var MapFrame = styled9.div`
|
|
8179
|
-
flex: 1; border-radius: 6px; overflow: hidden; min-height:
|
|
8242
|
+
flex: 1; border-radius: 6px; overflow: hidden; min-height: 380px; position: relative;
|
|
8180
8243
|
`;
|
|
8181
8244
|
var IframeShield = styled9.div`
|
|
8182
8245
|
position: absolute; inset: 0; z-index: 1; cursor: pointer;
|
|
8183
8246
|
`;
|
|
8247
|
+
var SuburbProfile = styled9.div`
|
|
8248
|
+
margin-top: 1rem;
|
|
8249
|
+
padding-top: 0.85rem;
|
|
8250
|
+
border-top: 1px solid rgba(255,255,255,0.06);
|
|
8251
|
+
`;
|
|
8252
|
+
var SuburbProfileTitle = styled9.div`
|
|
8253
|
+
font-size: 0.65rem;
|
|
8254
|
+
color: #D4AF37;
|
|
8255
|
+
text-transform: uppercase;
|
|
8256
|
+
letter-spacing: 0.1em;
|
|
8257
|
+
font-weight: 600;
|
|
8258
|
+
margin-bottom: 0.75rem;
|
|
8259
|
+
`;
|
|
8260
|
+
var SuburbStatsGrid = styled9.div`
|
|
8261
|
+
display: grid;
|
|
8262
|
+
grid-template-columns: 1fr 1fr;
|
|
8263
|
+
gap: 0.5rem;
|
|
8264
|
+
margin-bottom: 0.75rem;
|
|
8265
|
+
`;
|
|
8266
|
+
var SuburbStat = styled9.div`
|
|
8267
|
+
background: rgba(255,255,255,0.03);
|
|
8268
|
+
border-radius: 6px;
|
|
8269
|
+
padding: 0.5rem 0.65rem;
|
|
8270
|
+
border: 1px solid rgba(255,255,255,0.04);
|
|
8271
|
+
`;
|
|
8272
|
+
var SuburbStatLabel = styled9.div`
|
|
8273
|
+
font-size: 0.6rem;
|
|
8274
|
+
color: rgba(255,255,255,0.4);
|
|
8275
|
+
text-transform: uppercase;
|
|
8276
|
+
letter-spacing: 0.06em;
|
|
8277
|
+
margin-bottom: 0.2rem;
|
|
8278
|
+
`;
|
|
8279
|
+
var SuburbStatValue = styled9.div`
|
|
8280
|
+
font-size: 0.9rem;
|
|
8281
|
+
font-weight: 600;
|
|
8282
|
+
color: #fff;
|
|
8283
|
+
font-variant-numeric: tabular-nums;
|
|
8284
|
+
`;
|
|
8285
|
+
var SuburbDesc = styled9.p`
|
|
8286
|
+
margin: 0;
|
|
8287
|
+
font-size: 0.75rem;
|
|
8288
|
+
color: rgba(255,255,255,0.45);
|
|
8289
|
+
line-height: 1.5;
|
|
8290
|
+
`;
|
|
8291
|
+
var MapHeaderRight = styled9.div`
|
|
8292
|
+
display: flex;
|
|
8293
|
+
align-items: center;
|
|
8294
|
+
gap: 0.75rem;
|
|
8295
|
+
`;
|
|
8296
|
+
var FullMapOverlay = styled9.div`
|
|
8297
|
+
position: fixed;
|
|
8298
|
+
inset: 0;
|
|
8299
|
+
background: rgba(0,0,0,0.75);
|
|
8300
|
+
z-index: 9999;
|
|
8301
|
+
display: flex;
|
|
8302
|
+
align-items: center;
|
|
8303
|
+
justify-content: center;
|
|
8304
|
+
backdrop-filter: blur(4px);
|
|
8305
|
+
`;
|
|
8306
|
+
var FullMapPanel = styled9.div`
|
|
8307
|
+
background: #111;
|
|
8308
|
+
border: 1px solid rgba(255,255,255,0.08);
|
|
8309
|
+
border-radius: 14px;
|
|
8310
|
+
width: 94%;
|
|
8311
|
+
height: 90vh;
|
|
8312
|
+
display: flex;
|
|
8313
|
+
flex-direction: column;
|
|
8314
|
+
overflow: hidden;
|
|
8315
|
+
`;
|
|
8316
|
+
var FullMapHeader = styled9.div`
|
|
8317
|
+
display: flex;
|
|
8318
|
+
align-items: center;
|
|
8319
|
+
justify-content: space-between;
|
|
8320
|
+
padding: 1rem 1.5rem;
|
|
8321
|
+
border-bottom: 1px solid rgba(255,255,255,0.06);
|
|
8322
|
+
flex-shrink: 0;
|
|
8323
|
+
`;
|
|
8324
|
+
var FullMapTitle = styled9.h3`
|
|
8325
|
+
margin: 0;
|
|
8326
|
+
font-size: 1.1rem;
|
|
8327
|
+
font-weight: 600;
|
|
8328
|
+
color: #fff;
|
|
8329
|
+
display: flex;
|
|
8330
|
+
align-items: center;
|
|
8331
|
+
gap: 0.5rem;
|
|
8332
|
+
`;
|
|
8333
|
+
var FullMapClose = styled9.button`
|
|
8334
|
+
background: none;
|
|
8335
|
+
border: none;
|
|
8336
|
+
color: rgba(255,255,255,0.4);
|
|
8337
|
+
font-size: 1.1rem;
|
|
8338
|
+
cursor: pointer;
|
|
8339
|
+
padding: 0.25rem;
|
|
8340
|
+
line-height: 1;
|
|
8341
|
+
&:hover { color: #fff; }
|
|
8342
|
+
`;
|
|
8343
|
+
var FullMapFrame = styled9.div`
|
|
8344
|
+
flex: 1;
|
|
8345
|
+
min-height: 0;
|
|
8346
|
+
`;
|
|
8184
8347
|
var BedIcon = /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8185
8348
|
/* @__PURE__ */ jsx("path", { d: "M2 4v16" }),
|
|
8186
8349
|
/* @__PURE__ */ jsx("path", { d: "M2 8h18a2 2 0 0 1 2 2v10" }),
|