@loafmarkets/ui 0.1.405 → 0.1.406
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.d.mts +10 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.js +127 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +127 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -5076,6 +5076,7 @@ var Header = ({
|
|
|
5076
5076
|
onOrdersNavigate: _onOrdersNavigate,
|
|
5077
5077
|
onWalletNavigate: _onWalletNavigate,
|
|
5078
5078
|
onSettingsClick,
|
|
5079
|
+
onReferClick,
|
|
5079
5080
|
portfolioSummary,
|
|
5080
5081
|
fundsPending = false,
|
|
5081
5082
|
transparentOnTop = false,
|
|
@@ -5514,7 +5515,7 @@ var Header = ({
|
|
|
5514
5515
|
onClick: (event) => {
|
|
5515
5516
|
event?.preventDefault();
|
|
5516
5517
|
closeMenus();
|
|
5517
|
-
onSettingsClick?.();
|
|
5518
|
+
(onReferClick ?? onSettingsClick)?.();
|
|
5518
5519
|
},
|
|
5519
5520
|
children: "Refer"
|
|
5520
5521
|
}
|
|
@@ -5557,7 +5558,7 @@ var Header = ({
|
|
|
5557
5558
|
onClick: (event) => {
|
|
5558
5559
|
event?.preventDefault();
|
|
5559
5560
|
closeMenus();
|
|
5560
|
-
onSettingsClick?.();
|
|
5561
|
+
(onReferClick ?? onSettingsClick)?.();
|
|
5561
5562
|
},
|
|
5562
5563
|
children: /* @__PURE__ */ jsx(MenuItem, { children: "Refer" })
|
|
5563
5564
|
}
|
|
@@ -7675,12 +7676,12 @@ var LoginPopup = ({
|
|
|
7675
7676
|
marginBottom: "1.25rem"
|
|
7676
7677
|
}, children: [
|
|
7677
7678
|
/* @__PURE__ */ jsx("div", { style: { width: 7, height: 7, borderRadius: "50%", background: "#0052FF", flexShrink: 0 } }),
|
|
7678
|
-
/* @__PURE__ */ jsx("span", { style: { fontSize: "0.72rem", fontWeight: 600, color: "#6b9fff", letterSpacing: "0.02em" }, children: "
|
|
7679
|
+
/* @__PURE__ */ jsx("span", { style: { fontSize: "0.72rem", fontWeight: 600, color: "#6b9fff", letterSpacing: "0.02em" }, children: "Arbitrum Sepolia" })
|
|
7679
7680
|
] }),
|
|
7680
7681
|
/* @__PURE__ */ jsxs("p", { style: { fontSize: "0.82rem", color: "rgba(255,255,255,0.5)", textAlign: "center", marginBottom: "1.1rem", lineHeight: 1.5, maxWidth: 320 }, children: [
|
|
7681
7682
|
"Send ",
|
|
7682
7683
|
/* @__PURE__ */ jsx("strong", { style: { color: "rgba(255,255,255,0.8)" }, children: "USDC" }),
|
|
7683
|
-
" on
|
|
7684
|
+
" on Arbitrum Sepolia to the address below. Only send on this network."
|
|
7684
7685
|
] }),
|
|
7685
7686
|
/* @__PURE__ */ jsxs("div", { style: {
|
|
7686
7687
|
width: "100%",
|
|
@@ -10325,7 +10326,7 @@ function PropertyOverview({
|
|
|
10325
10326
|
isLoading = false,
|
|
10326
10327
|
ticker,
|
|
10327
10328
|
contractAddress,
|
|
10328
|
-
chain = "
|
|
10329
|
+
chain = "Arbitrum (Ethereum L2)",
|
|
10329
10330
|
volume24h,
|
|
10330
10331
|
priceHistory: priceHistoryProp,
|
|
10331
10332
|
beta = false,
|
|
@@ -10364,13 +10365,13 @@ function PropertyOverview({
|
|
|
10364
10365
|
const resolvedPropertyType = rawPropertyType?.toLowerCase() === "house" ? "Residential" : rawPropertyType;
|
|
10365
10366
|
const galleryImages = images ?? [];
|
|
10366
10367
|
const chainValue = /* @__PURE__ */ jsxs(ChainLogos, { children: [
|
|
10367
|
-
/* @__PURE__ */ jsx(ChainLogoImg, { src: "/
|
|
10368
|
+
/* @__PURE__ */ jsx(ChainLogoImg, { src: "/Arbitrum-Symbol.svg", alt: "Arbitrum" }),
|
|
10368
10369
|
/* @__PURE__ */ jsx(ChainLogoImg, { src: "/Ethereum-Logo.png", alt: "Ethereum", style: { filter: "brightness(0) invert(1)" } }),
|
|
10369
10370
|
/* @__PURE__ */ jsx("span", { children: chain })
|
|
10370
10371
|
] });
|
|
10371
10372
|
const tokenDetailsItems = [
|
|
10372
10373
|
{ label: "Chain", value: chainValue },
|
|
10373
|
-
{ label: "On-Chain Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true, link: contractAddress ? `https://sepolia.
|
|
10374
|
+
{ label: "On-Chain Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true, link: contractAddress ? `https://sepolia.arbiscan.io/address/${contractAddress}` : void 0, copyValue: contractAddress },
|
|
10374
10375
|
{ label: "Token Ticker", value: ticker ?? "\u2014" },
|
|
10375
10376
|
{ label: "Total Circulating Tokens", value: isLoading && resolvedTokensIssued == null ? loadingSkeleton : resolvedTokensIssued?.toLocaleString() ?? "\u2014" },
|
|
10376
10377
|
{ label: "Legal Structuring", value: "See Documents", docLink: true },
|
|
@@ -10390,7 +10391,9 @@ function PropertyOverview({
|
|
|
10390
10391
|
];
|
|
10391
10392
|
const growthPct = overviewData?.growth5Yr;
|
|
10392
10393
|
const propertyStats = [
|
|
10393
|
-
|
|
10394
|
+
// Property Value = the API offeringValuation (OverviewResponse.offeringValuation), NOT
|
|
10395
|
+
// midPrice×tokensIssued market cap (fixed 2026-07-22). null → '—', never a fabricated cap.
|
|
10396
|
+
{ label: "Property Value", value: isLoading && overviewData?.offeringValuation == null ? loadingSkeleton : overviewData?.offeringValuation ? fmtDollar(overviewData.offeringValuation) : "\u2014" },
|
|
10394
10397
|
...beta ? [] : [{ label: "Offers", value: "3" }],
|
|
10395
10398
|
{ label: "Growth (5yr)", value: growthPct != null ? `${growthPct > 0 ? "+" : ""}${growthPct}%` : "\u2014" },
|
|
10396
10399
|
{ label: "Last Dividend", value: overviewData?.lastDividend != null ? `$${overviewData.lastDividend.toFixed(2)}` : "\u2014" },
|
|
@@ -14891,7 +14894,7 @@ var getOrderStatusMeta = (statusRaw) => {
|
|
|
14891
14894
|
return { color: "#E6C87E", bg: "rgba(240,185,11,0.15)" };
|
|
14892
14895
|
};
|
|
14893
14896
|
var ChevronDown = () => /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "rgba(255,255,255,0.5)", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "6 9 12 15 18 9" }) });
|
|
14894
|
-
var
|
|
14897
|
+
var ArbiscanIconLink = ({ url }) => /* @__PURE__ */ jsx(TxLink, { href: url, target: "_blank", rel: "noopener noreferrer", title: "View on Arbiscan", onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
14895
14898
|
/* @__PURE__ */ jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
|
|
14896
14899
|
/* @__PURE__ */ jsx("polyline", { points: "15 3 21 3 21 9" }),
|
|
14897
14900
|
/* @__PURE__ */ jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
@@ -14916,7 +14919,7 @@ function PortfolioActivityPanel({
|
|
|
14916
14919
|
defaultTab,
|
|
14917
14920
|
onTabChange,
|
|
14918
14921
|
pageSize = ACTIVITY_PAGE_SIZE_DEFAULT,
|
|
14919
|
-
blockExplorerBaseUrl: _blockExplorerBaseUrl = "https://sepolia.
|
|
14922
|
+
blockExplorerBaseUrl: _blockExplorerBaseUrl = "https://sepolia.arbiscan.io/tx",
|
|
14920
14923
|
className,
|
|
14921
14924
|
style
|
|
14922
14925
|
}) {
|
|
@@ -15360,7 +15363,7 @@ function PortfolioActivityPanel({
|
|
|
15360
15363
|
/* @__PURE__ */ jsxs("span", { style: { display: "inline-flex", alignItems: "center", gap: "0.35rem" }, children: [
|
|
15361
15364
|
formatNumber2(order.quantity),
|
|
15362
15365
|
order.ticker && /* @__PURE__ */ jsx(TickerTag, { style: { marginLeft: 0 }, children: order.ticker.toUpperCase() }),
|
|
15363
|
-
order.txHash && /* @__PURE__ */ jsx(
|
|
15366
|
+
order.txHash && /* @__PURE__ */ jsx(ArbiscanIconLink, { url: `${_blockExplorerBaseUrl}/${order.txHash}` })
|
|
15364
15367
|
] })
|
|
15365
15368
|
] }),
|
|
15366
15369
|
/* @__PURE__ */ jsxs(CUnitsCell, { children: [
|
|
@@ -15413,7 +15416,7 @@ function PortfolioActivityPanel({
|
|
|
15413
15416
|
order.status === "REJECTED" && order.rejectionReason && /* @__PURE__ */ jsx(CellText, { $muted: true, style: { fontSize: "0.62rem", marginTop: "0.2rem", maxWidth: "120px", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, title: order.rejectionReason, children: order.rejectionReason })
|
|
15414
15417
|
] }),
|
|
15415
15418
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatTimestamp(order.createdAt) }) }),
|
|
15416
|
-
/* @__PURE__ */ jsx(GridCell, { children: order.txHash && /* @__PURE__ */ jsx(TxLink, { href: `${_blockExplorerBaseUrl}/${order.txHash}`, target: "_blank", rel: "noopener noreferrer", title: "View on
|
|
15419
|
+
/* @__PURE__ */ jsx(GridCell, { children: order.txHash && /* @__PURE__ */ jsx(TxLink, { href: `${_blockExplorerBaseUrl}/${order.txHash}`, target: "_blank", rel: "noopener noreferrer", title: "View on Arbiscan", children: /* @__PURE__ */ jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
15417
15420
|
/* @__PURE__ */ jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
|
|
15418
15421
|
/* @__PURE__ */ jsx("polyline", { points: "15 3 21 3 21 9" }),
|
|
15419
15422
|
/* @__PURE__ */ jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
@@ -15657,7 +15660,7 @@ function PortfolioActivityPanel({
|
|
|
15657
15660
|
/* @__PURE__ */ jsxs("span", { style: { display: "inline-flex", alignItems: "center", gap: "0.35rem" }, children: [
|
|
15658
15661
|
formatNumber2(trade.quantity),
|
|
15659
15662
|
trade.ticker && /* @__PURE__ */ jsx(TickerTag, { style: { marginLeft: 0 }, children: trade.ticker.toUpperCase() }),
|
|
15660
|
-
trade.txHash && /* @__PURE__ */ jsx(
|
|
15663
|
+
trade.txHash && /* @__PURE__ */ jsx(ArbiscanIconLink, { url: `${_blockExplorerBaseUrl}/${trade.txHash}` })
|
|
15661
15664
|
] })
|
|
15662
15665
|
] }),
|
|
15663
15666
|
/* @__PURE__ */ jsxs(CUnitsCell, { children: [
|
|
@@ -15724,7 +15727,7 @@ function PortfolioActivityPanel({
|
|
|
15724
15727
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency4(trade.price * trade.quantity) }) }),
|
|
15725
15728
|
/* @__PURE__ */ jsx(GridCell, { children: settlementMeta ? /* @__PURE__ */ jsx(ActivityTag, { $color: settlementMeta.color, $bg: settlementMeta.bg, children: settlementLabel }) : /* @__PURE__ */ jsx(CellText, { $muted: true, children: "\u2014" }) }),
|
|
15726
15729
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatTimestamp(trade.executedAt) }) }),
|
|
15727
|
-
/* @__PURE__ */ jsx(GridCell, { children: trade.txHash && /* @__PURE__ */ jsx(TxLink, { href: `${_blockExplorerBaseUrl}/${trade.txHash}`, target: "_blank", rel: "noopener noreferrer", title: "View on
|
|
15730
|
+
/* @__PURE__ */ jsx(GridCell, { children: trade.txHash && /* @__PURE__ */ jsx(TxLink, { href: `${_blockExplorerBaseUrl}/${trade.txHash}`, target: "_blank", rel: "noopener noreferrer", title: "View on Arbiscan", children: /* @__PURE__ */ jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
15728
15731
|
/* @__PURE__ */ jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
|
|
15729
15732
|
/* @__PURE__ */ jsx("polyline", { points: "15 3 21 3 21 9" }),
|
|
15730
15733
|
/* @__PURE__ */ jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
@@ -15771,7 +15774,7 @@ function PortfolioActivityPanel({
|
|
|
15771
15774
|
/* @__PURE__ */ jsx(CDValue, { children: formatTimestamp(t.createdAt) })
|
|
15772
15775
|
] })
|
|
15773
15776
|
] }),
|
|
15774
|
-
txUrl && /* @__PURE__ */ jsx(CExpandedLink, { href: txUrl, target: "_blank", rel: "noopener noreferrer", children: "View on
|
|
15777
|
+
txUrl && /* @__PURE__ */ jsx(CExpandedLink, { href: txUrl, target: "_blank", rel: "noopener noreferrer", children: "View on Arbiscan \u2197" })
|
|
15775
15778
|
] })
|
|
15776
15779
|
] }, rowKey);
|
|
15777
15780
|
}),
|
|
@@ -15797,7 +15800,7 @@ function PortfolioActivityPanel({
|
|
|
15797
15800
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatAddress(t.address) }) }),
|
|
15798
15801
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(ActivityTag, { $color: statusMeta.color, $bg: statusMeta.bg, children: prettyLabel(t.status) }) }),
|
|
15799
15802
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatTimestamp(t.createdAt) }) }),
|
|
15800
|
-
/* @__PURE__ */ jsx(GridCell, { children: txUrl && /* @__PURE__ */ jsx(TxLink, { href: txUrl, target: "_blank", rel: "noopener noreferrer", title: "View on
|
|
15803
|
+
/* @__PURE__ */ jsx(GridCell, { children: txUrl && /* @__PURE__ */ jsx(TxLink, { href: txUrl, target: "_blank", rel: "noopener noreferrer", title: "View on Arbiscan", children: /* @__PURE__ */ jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
15801
15804
|
/* @__PURE__ */ jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
|
|
15802
15805
|
/* @__PURE__ */ jsx("polyline", { points: "15 3 21 3 21 9" }),
|
|
15803
15806
|
/* @__PURE__ */ jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
@@ -18900,13 +18903,14 @@ var CloseButton3 = styled10.button`
|
|
|
18900
18903
|
var MainImageContainer = styled10.div`
|
|
18901
18904
|
position: relative;
|
|
18902
18905
|
flex: 1;
|
|
18906
|
+
min-height: 0;
|
|
18903
18907
|
display: flex;
|
|
18904
18908
|
align-items: center;
|
|
18905
18909
|
justify-content: center;
|
|
18906
|
-
padding:
|
|
18910
|
+
padding: 20px 20px 160px;
|
|
18907
18911
|
|
|
18908
18912
|
@media (max-width: 768px) {
|
|
18909
|
-
padding:
|
|
18913
|
+
padding: 10px 0 130px;
|
|
18910
18914
|
}
|
|
18911
18915
|
`;
|
|
18912
18916
|
var MainImage = styled10.img`
|
|
@@ -18918,8 +18922,11 @@ var MainImage = styled10.img`
|
|
|
18918
18922
|
opacity: ${(p) => p.$visible ? 1 : 0};
|
|
18919
18923
|
pointer-events: ${(p) => p.$visible ? "auto" : "none"};
|
|
18920
18924
|
transition: opacity 300ms ease;
|
|
18921
|
-
/*
|
|
18922
|
-
|
|
18925
|
+
/* All slides share the same absolute box so switching only crossfades opacity —
|
|
18926
|
+
no relative↔absolute size jump (the "grow then shrink" on navigation).
|
|
18927
|
+
The inset box excludes the bottom thumbnail strip so margin:auto centres the image
|
|
18928
|
+
in the space ABOVE the thumbnails (absolute positioning ignores the parent's padding,
|
|
18929
|
+
which otherwise let the image sink behind the thumbnails / "lean down"). */
|
|
18923
18930
|
position: absolute;
|
|
18924
18931
|
top: 24px;
|
|
18925
18932
|
left: 24px;
|
|
@@ -19113,9 +19120,11 @@ function PropertyPhotoGallery({
|
|
|
19113
19120
|
isOpen,
|
|
19114
19121
|
onClose,
|
|
19115
19122
|
startIndex = 0,
|
|
19123
|
+
startWithVideo = false,
|
|
19116
19124
|
title = "28 Derby Street, Vaucluse",
|
|
19117
19125
|
subtitle = "Elara \u2014 Luxury Harbour Residence",
|
|
19118
|
-
images
|
|
19126
|
+
images,
|
|
19127
|
+
videoUrl
|
|
19119
19128
|
}) {
|
|
19120
19129
|
const galleryImages = images?.length ? images : DEFAULT_IMAGES;
|
|
19121
19130
|
if (!isOpen) return null;
|
|
@@ -19124,16 +19133,19 @@ function PropertyPhotoGallery({
|
|
|
19124
19133
|
{
|
|
19125
19134
|
galleryImages,
|
|
19126
19135
|
startIndex,
|
|
19136
|
+
startWithVideo,
|
|
19127
19137
|
title,
|
|
19128
19138
|
subtitle,
|
|
19129
|
-
onClose
|
|
19139
|
+
onClose,
|
|
19140
|
+
videoUrl
|
|
19130
19141
|
},
|
|
19131
|
-
`${startIndex}-${galleryImages.length}`
|
|
19142
|
+
`${startIndex}-${galleryImages.length}-${startWithVideo}`
|
|
19132
19143
|
);
|
|
19133
19144
|
}
|
|
19134
|
-
function GalleryContent({ galleryImages, startIndex, title, subtitle, onClose }) {
|
|
19145
|
+
function GalleryContent({ galleryImages, startIndex, startWithVideo, title, subtitle, onClose, videoUrl }) {
|
|
19135
19146
|
const [currentIndex, setCurrentIndex] = useState(() => clampIndex(startIndex, galleryImages.length));
|
|
19136
19147
|
const [activeHotspotId, setActiveHotspotId] = useState(null);
|
|
19148
|
+
const [showVideo, setShowVideo] = useState(startWithVideo ?? false);
|
|
19137
19149
|
const sliderRef = useRef(null);
|
|
19138
19150
|
const [isDragging, setIsDragging] = useState(false);
|
|
19139
19151
|
const wasDraggingRef = useRef(false);
|
|
@@ -19183,7 +19195,7 @@ function GalleryContent({ galleryImages, startIndex, title, subtitle, onClose })
|
|
|
19183
19195
|
] }),
|
|
19184
19196
|
/* @__PURE__ */ jsx(CloseButton3, { onClick: onClose, "aria-label": "Close gallery", children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", width: "22", height: "22", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx("path", { d: "M6 6l12 12M6 18L18 6" }) }) })
|
|
19185
19197
|
] }),
|
|
19186
|
-
/* @__PURE__ */ jsxs(SliderContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
19198
|
+
!showVideo && /* @__PURE__ */ jsxs(SliderContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
19187
19199
|
/* @__PURE__ */ jsxs(
|
|
19188
19200
|
SliderTrack,
|
|
19189
19201
|
{
|
|
@@ -19246,7 +19258,21 @@ function GalleryContent({ galleryImages, startIndex, title, subtitle, onClose })
|
|
|
19246
19258
|
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", width: "22", height: "22", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx("path", { d: "M15 18l-6-6 6-6" }) })
|
|
19247
19259
|
}
|
|
19248
19260
|
),
|
|
19249
|
-
|
|
19261
|
+
showVideo && videoUrl ? /* @__PURE__ */ jsx(GalleryVideoWrap, { children: /* @__PURE__ */ jsx(
|
|
19262
|
+
"video",
|
|
19263
|
+
{
|
|
19264
|
+
autoPlay: true,
|
|
19265
|
+
loop: true,
|
|
19266
|
+
playsInline: true,
|
|
19267
|
+
muted: true,
|
|
19268
|
+
controls: true,
|
|
19269
|
+
onVolumeChange: (e) => {
|
|
19270
|
+
if (!e.currentTarget.muted) e.currentTarget.muted = true;
|
|
19271
|
+
},
|
|
19272
|
+
style: { objectFit: "contain", borderRadius: 12, boxShadow: "0 30px 80px rgba(0,0,0,0.55)" },
|
|
19273
|
+
children: /* @__PURE__ */ jsx("source", { src: videoUrl, type: "video/mp4" })
|
|
19274
|
+
}
|
|
19275
|
+
) }) : galleryImages.map((image, idx) => /* @__PURE__ */ jsx(MainImage, { src: image.src, alt: image.alt, $visible: idx === currentIndex }, image.alt)),
|
|
19250
19276
|
galleryImages[currentIndex]?.hotspots?.map((hotspot) => /* @__PURE__ */ jsx(
|
|
19251
19277
|
Hotspot,
|
|
19252
19278
|
{
|
|
@@ -19291,11 +19317,83 @@ function GalleryContent({ galleryImages, startIndex, title, subtitle, onClose })
|
|
|
19291
19317
|
]
|
|
19292
19318
|
}
|
|
19293
19319
|
),
|
|
19294
|
-
/* @__PURE__ */
|
|
19320
|
+
/* @__PURE__ */ jsxs(ThumbnailStrip, { onClick: (event) => event.stopPropagation(), children: [
|
|
19321
|
+
galleryImages.map((image, idx) => /* @__PURE__ */ jsx(Thumbnail3, { $active: !showVideo && idx === currentIndex, onClick: () => {
|
|
19322
|
+
setShowVideo(false);
|
|
19323
|
+
setCurrentIndex(idx);
|
|
19324
|
+
}, "aria-label": `Preview ${image.label}`, children: /* @__PURE__ */ jsx("img", { src: image.src, alt: image.alt }) }, image.alt)),
|
|
19325
|
+
videoUrl && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19326
|
+
/* @__PURE__ */ jsx(ThumbnailDivider, {}),
|
|
19327
|
+
/* @__PURE__ */ jsxs(VideoBtn, { $active: showVideo, onClick: () => setShowVideo(true), children: [
|
|
19328
|
+
/* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
19329
|
+
/* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "14", height: "16", rx: "2" }),
|
|
19330
|
+
/* @__PURE__ */ jsx("path", { d: "M16 8l6-4v16l-6-4z" })
|
|
19331
|
+
] }),
|
|
19332
|
+
"Video"
|
|
19333
|
+
] })
|
|
19334
|
+
] })
|
|
19335
|
+
] })
|
|
19295
19336
|
]
|
|
19296
19337
|
}
|
|
19297
19338
|
);
|
|
19298
19339
|
}
|
|
19340
|
+
var GalleryVideoWrap = styled10.div`
|
|
19341
|
+
position: absolute;
|
|
19342
|
+
inset: 0;
|
|
19343
|
+
display: flex;
|
|
19344
|
+
align-items: center;
|
|
19345
|
+
justify-content: center;
|
|
19346
|
+
padding: 20px 20px 160px;
|
|
19347
|
+
|
|
19348
|
+
video {
|
|
19349
|
+
max-width: 90%;
|
|
19350
|
+
max-height: 100%;
|
|
19351
|
+
}
|
|
19352
|
+
|
|
19353
|
+
/* Property videos stay permanently muted — remove the volume + mute buttons
|
|
19354
|
+
from the native player (Chrome/Edge/Safari/iOS/Android). Firefox ignores
|
|
19355
|
+
these and is covered by the onVolumeChange force-mute fallback. */
|
|
19356
|
+
video::-webkit-media-controls-mute-button,
|
|
19357
|
+
video::-webkit-media-controls-volume-slider,
|
|
19358
|
+
video::-webkit-media-controls-volume-control-container {
|
|
19359
|
+
display: none !important;
|
|
19360
|
+
}
|
|
19361
|
+
|
|
19362
|
+
@media (max-width: 768px) {
|
|
19363
|
+
padding: 10px 0 130px;
|
|
19364
|
+
|
|
19365
|
+
video {
|
|
19366
|
+
max-width: 100%;
|
|
19367
|
+
}
|
|
19368
|
+
}
|
|
19369
|
+
`;
|
|
19370
|
+
var ThumbnailDivider = styled10.div`
|
|
19371
|
+
width: 1px;
|
|
19372
|
+
height: 48px;
|
|
19373
|
+
background: rgba(255, 255, 255, 0.15);
|
|
19374
|
+
flex-shrink: 0;
|
|
19375
|
+
align-self: center;
|
|
19376
|
+
`;
|
|
19377
|
+
var VideoBtn = styled10.button`
|
|
19378
|
+
display: flex;
|
|
19379
|
+
align-items: center;
|
|
19380
|
+
gap: 6px;
|
|
19381
|
+
padding: 8px 14px;
|
|
19382
|
+
border-radius: 8px;
|
|
19383
|
+
border: 1px solid ${(p) => p.$active ? "var(--color-accent, #E6C87E)" : "rgba(255, 255, 255, 0.2)"};
|
|
19384
|
+
background: ${(p) => p.$active ? "rgba(240, 185, 11, 0.15)" : "rgba(255, 255, 255, 0.08)"};
|
|
19385
|
+
color: ${(p) => p.$active ? "var(--color-accent, #E6C87E)" : "#fff"};
|
|
19386
|
+
font-size: 0.82rem;
|
|
19387
|
+
font-weight: 500;
|
|
19388
|
+
cursor: pointer;
|
|
19389
|
+
flex-shrink: 0;
|
|
19390
|
+
transition: all 0.2s ease;
|
|
19391
|
+
|
|
19392
|
+
&:hover {
|
|
19393
|
+
background: rgba(255, 255, 255, 0.15);
|
|
19394
|
+
border-color: rgba(255, 255, 255, 0.3);
|
|
19395
|
+
}
|
|
19396
|
+
`;
|
|
19299
19397
|
var slideIn2 = keyframes`
|
|
19300
19398
|
from { transform: translateX(110%); opacity: 0; }
|
|
19301
19399
|
to { transform: translateX(0); opacity: 1; }
|
|
@@ -19464,7 +19562,7 @@ var Container3 = styled10.div`
|
|
|
19464
19562
|
gap: 8px;
|
|
19465
19563
|
}
|
|
19466
19564
|
`;
|
|
19467
|
-
var DEFAULT_EXPLORER = "https://sepolia.
|
|
19565
|
+
var DEFAULT_EXPLORER = "https://sepolia.arbiscan.io/tx/";
|
|
19468
19566
|
function truncateHash(hash) {
|
|
19469
19567
|
return `${hash.slice(0, 6)}\u2026${hash.slice(-4)}`;
|
|
19470
19568
|
}
|
|
@@ -20031,8 +20129,7 @@ var SiteFooter = () => {
|
|
|
20031
20129
|
/* @__PURE__ */ jsxs(LegalLinks, { children: [
|
|
20032
20130
|
/* @__PURE__ */ jsx(LegalLink, { href: "/privacy", children: "Privacy Policy" }),
|
|
20033
20131
|
/* @__PURE__ */ jsx(LegalLink, { href: "/terms", children: "Terms of Use" }),
|
|
20034
|
-
/* @__PURE__ */ jsx(LegalLink, { href: "/cookies", children: "Cookie Policy" })
|
|
20035
|
-
/* @__PURE__ */ jsx(LegalLink, { href: "/risk", children: "Risk Warning" })
|
|
20132
|
+
/* @__PURE__ */ jsx(LegalLink, { href: "/cookies", children: "Cookie Policy" })
|
|
20036
20133
|
] })
|
|
20037
20134
|
] }),
|
|
20038
20135
|
/* @__PURE__ */ jsx(Disclaimer2, { children: /* @__PURE__ */ jsx(DisclaimerText, { children: "Warning: Digital asset prices can be volatile. The value of your investment can go down or up and you may not get back the amount invested. Past gains are not indicative of future returns. You are solely responsible for your investment decisions and Loaf is not liable for any losses you may incur. The information here should not be regarded as financial or investment advice. For more information, see our Terms of Use and Risk Warning." }) })
|