@loafmarkets/ui 0.1.366 → 0.1.368
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 +17 -3
- package/dist/index.d.ts +17 -3
- package/dist/index.js +728 -370
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +728 -370
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -28,7 +28,7 @@ var buttonVariants = cva(
|
|
|
28
28
|
primary: "bg-teal-500 text-slate-950 hover:bg-teal-400 focus-visible:ring-teal-200",
|
|
29
29
|
onboarding: "rounded-lg bg-[#F2D898] text-[#0A0C15] shadow-[0_20px_60px_rgba(242,216,152,0.35)] transition will-change-transform hover:-translate-y-0.5 hover:brightness-110 focus-visible:ring-[#F2D898]/50 focus-visible:ring-offset-[#0A0C15]",
|
|
30
30
|
onboardingOutline: "rounded-lg border border-[#F2D898] bg-transparent text-white hover:bg-white/5 focus-visible:ring-[#F2D898]/50 focus-visible:ring-offset-[#0A0C15]",
|
|
31
|
-
accent: "bg-[var(--color-accent,#e6c87e)] text-black hover:bg-[var(--color-accent-hover,#
|
|
31
|
+
accent: "bg-[var(--color-accent,#e6c87e)] text-black hover:bg-[var(--color-accent-hover,#F2D898)] focus-visible:ring-[var(--color-accent,#e6c87e)]",
|
|
32
32
|
accentOutline: "border border-[var(--color-accent,#e6c87e)] bg-transparent text-[var(--color-accent,#e6c87e)] hover:bg-[rgba(230,200,126,0.10)] focus-visible:ring-[var(--color-accent,#e6c87e)]",
|
|
33
33
|
media: "border border-white/10 bg-transparent text-white/90 hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)] focus-visible:ring-[var(--color-accent,#e6c87e)]",
|
|
34
34
|
outline: "border border-slate-800/20 bg-white text-slate-900 hover:border-slate-800/40 focus-visible:ring-slate-200",
|
|
@@ -782,7 +782,7 @@ function HousePositionSlider({
|
|
|
782
782
|
}
|
|
783
783
|
},
|
|
784
784
|
placeholder: "Price",
|
|
785
|
-
className: "w-full rounded-[8px] border border-white/10 bg-black/30 px-4 py-3 pr-14 text-[0.95rem] text-white outline-none focus:border-[#
|
|
785
|
+
className: "w-full rounded-[8px] border border-white/10 bg-black/30 px-4 py-3 pr-14 text-[0.95rem] text-white outline-none focus:border-[#E6C87E]"
|
|
786
786
|
}
|
|
787
787
|
),
|
|
788
788
|
/* @__PURE__ */ jsx("span", { className: "absolute right-4 top-1/2 -translate-y-1/2 text-[0.8rem] text-white/50", children: "USD" })
|
|
@@ -792,7 +792,7 @@ function HousePositionSlider({
|
|
|
792
792
|
"Available: $",
|
|
793
793
|
availableCash.toLocaleString()
|
|
794
794
|
] }),
|
|
795
|
-
/* @__PURE__ */ jsx("button", { type: "button", className: "text-[#
|
|
795
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "text-[#E6C87E] hover:underline", children: "Add Funds" })
|
|
796
796
|
] })
|
|
797
797
|
] })
|
|
798
798
|
] });
|
|
@@ -995,7 +995,7 @@ var styles = {
|
|
|
995
995
|
addFundsButton: {
|
|
996
996
|
background: "none",
|
|
997
997
|
border: "none",
|
|
998
|
-
color: "#
|
|
998
|
+
color: "#E6C87E",
|
|
999
999
|
fontSize: "0.75rem",
|
|
1000
1000
|
cursor: "pointer",
|
|
1001
1001
|
padding: 0
|
|
@@ -1811,7 +1811,8 @@ function DepthRow({
|
|
|
1811
1811
|
amountPrecision,
|
|
1812
1812
|
hasUserOrder,
|
|
1813
1813
|
onPriceClick,
|
|
1814
|
-
flashOnMount
|
|
1814
|
+
flashOnMount,
|
|
1815
|
+
fillHeight
|
|
1815
1816
|
}) {
|
|
1816
1817
|
const isAsk = side === "ask";
|
|
1817
1818
|
const rowRef = React5.useRef(null);
|
|
@@ -1821,7 +1822,7 @@ function DepthRow({
|
|
|
1821
1822
|
{
|
|
1822
1823
|
ref: rowRef,
|
|
1823
1824
|
className: "relative grid grid-cols-3 items-center gap-3 px-3 text-[0.8rem]",
|
|
1824
|
-
style: { height: `${DEPTH_ROW_HEIGHT_PX}px`, cursor: onPriceClick ? "pointer" : void 0 },
|
|
1825
|
+
style: fillHeight ? { flex: "1 1 0", minHeight: 0, cursor: onPriceClick ? "pointer" : void 0 } : { height: `${DEPTH_ROW_HEIGHT_PX}px`, cursor: onPriceClick ? "pointer" : void 0 },
|
|
1825
1826
|
onClick: onPriceClick ? () => onPriceClick(price) : void 0,
|
|
1826
1827
|
children: [
|
|
1827
1828
|
/* @__PURE__ */ jsx(
|
|
@@ -2208,7 +2209,8 @@ function DesktopOrderbookLayout({
|
|
|
2208
2209
|
amountPrecision,
|
|
2209
2210
|
hasUserOrder: userAskPrices.has(l.price),
|
|
2210
2211
|
onPriceClick,
|
|
2211
|
-
flashOnMount: newAskPrices.has(l.price)
|
|
2212
|
+
flashOnMount: newAskPrices.has(l.price),
|
|
2213
|
+
fillHeight
|
|
2212
2214
|
},
|
|
2213
2215
|
`ask-${l.price}`
|
|
2214
2216
|
))
|
|
@@ -2246,7 +2248,8 @@ function DesktopOrderbookLayout({
|
|
|
2246
2248
|
amountPrecision,
|
|
2247
2249
|
hasUserOrder: userBidPrices.has(l.price),
|
|
2248
2250
|
onPriceClick,
|
|
2249
|
-
flashOnMount: newBidPrices.has(l.price)
|
|
2251
|
+
flashOnMount: newBidPrices.has(l.price),
|
|
2252
|
+
fillHeight
|
|
2250
2253
|
},
|
|
2251
2254
|
`bid-${l.price}`
|
|
2252
2255
|
))
|
|
@@ -2603,6 +2606,9 @@ var PropertyTour = React5.forwardRef(
|
|
|
2603
2606
|
ref: videoRef,
|
|
2604
2607
|
className: "absolute inset-0 h-full w-full object-cover object-center",
|
|
2605
2608
|
controls,
|
|
2609
|
+
controlsList: "nodownload noplaybackrate",
|
|
2610
|
+
disablePictureInPicture: true,
|
|
2611
|
+
onContextMenu: (e) => e.preventDefault(),
|
|
2606
2612
|
loop,
|
|
2607
2613
|
autoPlay,
|
|
2608
2614
|
muted,
|
|
@@ -2658,7 +2664,7 @@ var categoryStyles = {
|
|
|
2658
2664
|
label: "Market News",
|
|
2659
2665
|
backgroundColor: "rgba(248, 209, 47, 0.15)",
|
|
2660
2666
|
borderColor: "rgba(248, 209, 47, 0.45)",
|
|
2661
|
-
color: "#
|
|
2667
|
+
color: "#F2D898"
|
|
2662
2668
|
}
|
|
2663
2669
|
};
|
|
2664
2670
|
var formatDate = (value) => {
|
|
@@ -2827,7 +2833,7 @@ function NewsArticleModal({ item, onClose }) {
|
|
|
2827
2833
|
gap: "0.4rem",
|
|
2828
2834
|
fontSize: "0.8rem",
|
|
2829
2835
|
fontWeight: 600,
|
|
2830
|
-
color: "var(--color-accent, #
|
|
2836
|
+
color: "var(--color-accent, #E6C87E)",
|
|
2831
2837
|
textDecoration: "none",
|
|
2832
2838
|
transition: "opacity 0.15s"
|
|
2833
2839
|
},
|
|
@@ -2929,7 +2935,7 @@ var PropertyNewsUpdates = React5.forwardRef(
|
|
|
2929
2935
|
subheading ? /* @__PURE__ */ jsx("p", { className: "text-sm text-white/60", children: subheading }) : null
|
|
2930
2936
|
] })
|
|
2931
2937
|
] }),
|
|
2932
|
-
isHomeVariant && viewAllHref ? /* @__PURE__ */ jsxs("a", { href: viewAllHref, style: { color: "var(--color-accent, #
|
|
2938
|
+
isHomeVariant && viewAllHref ? /* @__PURE__ */ jsxs("a", { href: viewAllHref, style: { color: "var(--color-accent, #E6C87E)", fontWeight: 500, fontSize: "0.75rem", textDecoration: "none", display: "flex", alignItems: "center", gap: "0.25rem", height: "24px" }, children: [
|
|
2933
2939
|
viewAllLabel,
|
|
2934
2940
|
/* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }) })
|
|
2935
2941
|
] }) : !isHomeVariant && !isPurchaseVariant ? connectionStatus === "connecting" ? /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center font-semibold uppercase", style: { gap: "0.35rem", fontSize: "0.8rem", letterSpacing: "0.15em", color: "#f97316" }, children: [
|
|
@@ -2948,7 +2954,7 @@ var PropertyNewsUpdates = React5.forwardRef(
|
|
|
2948
2954
|
style: {
|
|
2949
2955
|
background: "transparent",
|
|
2950
2956
|
border: "none",
|
|
2951
|
-
borderBottom: homeTab === tab ? "2px solid var(--color-accent, #
|
|
2957
|
+
borderBottom: homeTab === tab ? "2px solid var(--color-accent, #E6C87E)" : "2px solid transparent",
|
|
2952
2958
|
padding: "0 0 0.5rem 0",
|
|
2953
2959
|
marginBottom: "-1px",
|
|
2954
2960
|
fontSize: "0.75rem",
|
|
@@ -2989,7 +2995,7 @@ var PropertyNewsUpdates = React5.forwardRef(
|
|
|
2989
2995
|
purchase.id
|
|
2990
2996
|
);
|
|
2991
2997
|
}) : /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", padding: "3rem 0", gap: "0.75rem" }, children: [
|
|
2992
|
-
/* @__PURE__ */ jsx("div", { style: { width: "28px", height: "28px", border: "3px solid rgba(255,255,255,0.1)", borderTopColor: "var(--color-accent, #
|
|
2998
|
+
/* @__PURE__ */ jsx("div", { style: { width: "28px", height: "28px", border: "3px solid rgba(255,255,255,0.1)", borderTopColor: "var(--color-accent, #E6C87E)", borderRadius: "50%", animation: "propertyNewsSpin 1s linear infinite" } }),
|
|
2993
2999
|
/* @__PURE__ */ jsx("span", { style: { fontSize: "0.8rem", color: "rgba(255,255,255,0.4)" }, children: "Awaiting offering..." })
|
|
2994
3000
|
] }) : isHomeVariant ? hasItems ? homePaginatedItems.map((item, index) => {
|
|
2995
3001
|
const key = item.displayId ?? item.id ?? `${item.title}-${index}`;
|
|
@@ -3031,7 +3037,7 @@ var PropertyNewsUpdates = React5.forwardRef(
|
|
|
3031
3037
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: isMobile ? "0.35rem" : "0.5rem", alignItems: "center", flexWrap: "wrap" }, children: [
|
|
3032
3038
|
/* @__PURE__ */ jsx("span", { style: { color: "#848e9c", fontSize: isMobile ? "0.55rem" : "0.7rem" }, children: formatDateShort(item.date) }),
|
|
3033
3039
|
item.source && /* @__PURE__ */ jsx("span", { style: { padding: isMobile ? "0.08rem 0.35rem" : "0.1rem 0.4rem", borderRadius: "3px", fontSize: isMobile ? "0.52rem" : "0.62rem", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.07)", color: "#848e9c", whiteSpace: "nowrap" }, children: item.source }),
|
|
3034
|
-
/* @__PURE__ */ jsx("span", { style: { padding: isMobile ? "0.1rem 0.35rem" : "0.15rem 0.4rem", borderRadius: "2px", fontSize: isMobile ? "0.52rem" : "0.65rem", fontWeight: 500, backgroundColor: isProperty ? "rgba(14,203,129,0.1)" : "rgba(240,185,11,0.1)", color: isProperty ? "#0ecb81" : "#
|
|
3040
|
+
/* @__PURE__ */ jsx("span", { style: { padding: isMobile ? "0.1rem 0.35rem" : "0.15rem 0.4rem", borderRadius: "2px", fontSize: isMobile ? "0.52rem" : "0.65rem", fontWeight: 500, backgroundColor: isProperty ? "rgba(14,203,129,0.1)" : "rgba(240,185,11,0.1)", color: isProperty ? "#0ecb81" : "#E6C87E" }, children: isProperty ? "Property Update" : "Market News" }),
|
|
3035
3041
|
sentimentInfo && /* @__PURE__ */ jsxs("span", { style: { fontSize: isMobile ? "0.52rem" : "0.65rem", fontWeight: 600, color: sentimentInfo.color }, children: [
|
|
3036
3042
|
sentimentInfo.arrow ? `${sentimentInfo.arrow} ` : "",
|
|
3037
3043
|
sentimentInfo.label
|
|
@@ -3995,7 +4001,7 @@ var YourOrders = React5.forwardRef(
|
|
|
3995
4001
|
) : null
|
|
3996
4002
|
] }) : null
|
|
3997
4003
|
] }),
|
|
3998
|
-
/* @__PURE__ */ jsx("div", { style: { fontSize: "0.9rem", fontWeight: 500, color: "#
|
|
4004
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: "0.9rem", fontWeight: 500, color: "#E6C87E" }, children: formatCurrency2(value) }),
|
|
3999
4005
|
/* @__PURE__ */ jsx("div", { style: { fontSize: "0.9rem", color: "rgba(255,255,255,0.92)" }, children: holding }),
|
|
4000
4006
|
showPropertyPercentColumn ? /* @__PURE__ */ jsx("div", { style: { fontSize: "0.9rem", color: "rgba(255,255,255,0.8)" }, children: formatPercent(propertyPercent, 3) }) : null,
|
|
4001
4007
|
/* @__PURE__ */ jsx("div", { style: { fontSize: "0.9rem", color: "rgba(255,255,255,0.9)" }, children: formatCurrency2(avgPrice) }),
|
|
@@ -4114,7 +4120,7 @@ var YourOrders = React5.forwardRef(
|
|
|
4114
4120
|
left: 0,
|
|
4115
4121
|
right: 0,
|
|
4116
4122
|
height: "2px",
|
|
4117
|
-
background: "#
|
|
4123
|
+
background: "#E6C87E"
|
|
4118
4124
|
}
|
|
4119
4125
|
}
|
|
4120
4126
|
) : null
|
|
@@ -4974,7 +4980,7 @@ var StatusBadge = styled9.div`
|
|
|
4974
4980
|
align-items: center;
|
|
4975
4981
|
gap: 0.5rem;
|
|
4976
4982
|
background-color: ${({ $isLive }) => $isLive ? "rgba(20, 20, 20, 0.85)" : "rgba(240, 185, 11, 0.9)"};
|
|
4977
|
-
color: ${({ $isLive }) => $isLive ? "#
|
|
4983
|
+
color: ${({ $isLive }) => $isLive ? "#E6C87E" : "#000"};
|
|
4978
4984
|
padding: 0.5rem 1rem;
|
|
4979
4985
|
border-radius: 6px;
|
|
4980
4986
|
font-weight: 600;
|
|
@@ -4987,7 +4993,7 @@ var PulsingDot = styled9.span`
|
|
|
4987
4993
|
display: inline-block;
|
|
4988
4994
|
width: 8px;
|
|
4989
4995
|
height: 8px;
|
|
4990
|
-
background-color: #
|
|
4996
|
+
background-color: #E6C87E;
|
|
4991
4997
|
border-radius: 50%;
|
|
4992
4998
|
animation: heroStatusPulse 1.5s infinite;
|
|
4993
4999
|
|
|
@@ -5044,6 +5050,7 @@ var Header = ({
|
|
|
5044
5050
|
onSettingsClick,
|
|
5045
5051
|
showTradeTab = true,
|
|
5046
5052
|
portfolioSummary,
|
|
5053
|
+
fundsPending = false,
|
|
5047
5054
|
transparentOnTop = false
|
|
5048
5055
|
}) => {
|
|
5049
5056
|
const [headerBgOpacity, setHeaderBgOpacity] = useState(transparentOnTop ? 0 : 1);
|
|
@@ -5068,6 +5075,27 @@ var Header = ({
|
|
|
5068
5075
|
return next;
|
|
5069
5076
|
});
|
|
5070
5077
|
}, []);
|
|
5078
|
+
const SIMULATE_FUNDS = false;
|
|
5079
|
+
const [simFundsPending, setSimFundsPending] = useState(true);
|
|
5080
|
+
useEffect(() => {
|
|
5081
|
+
return;
|
|
5082
|
+
}, [simFundsPending]);
|
|
5083
|
+
const showFundsPending = (fundsPending || SIMULATE_FUNDS) && isAuthenticated && isPortfolioBarVisible;
|
|
5084
|
+
const [fundsCountdown, setFundsCountdown] = useState(10);
|
|
5085
|
+
useEffect(() => {
|
|
5086
|
+
if (!showFundsPending) return;
|
|
5087
|
+
setFundsCountdown(10);
|
|
5088
|
+
const id = setInterval(() => {
|
|
5089
|
+
setFundsCountdown((n) => {
|
|
5090
|
+
if (n <= 1) {
|
|
5091
|
+
clearInterval(id);
|
|
5092
|
+
return 0;
|
|
5093
|
+
}
|
|
5094
|
+
return n - 1;
|
|
5095
|
+
});
|
|
5096
|
+
}, 1e3);
|
|
5097
|
+
return () => clearInterval(id);
|
|
5098
|
+
}, [showFundsPending]);
|
|
5071
5099
|
useEffect(() => {
|
|
5072
5100
|
const handler = () => {
|
|
5073
5101
|
if (LoginPopupComponent) {
|
|
@@ -5480,18 +5508,16 @@ var Header = ({
|
|
|
5480
5508
|
] })
|
|
5481
5509
|
] })
|
|
5482
5510
|
] }),
|
|
5483
|
-
isMobileMenuOpen && /* @__PURE__ */ jsx(
|
|
5484
|
-
MobileOnlyButton,
|
|
5485
|
-
{
|
|
5486
|
-
onClick: () => setIsMobileMenuOpen(false),
|
|
5487
|
-
$isOpen: true,
|
|
5488
|
-
style: { position: "fixed", right: "1rem", top: "4rem" },
|
|
5489
|
-
"aria-label": "Close menu",
|
|
5490
|
-
children: "\u2715"
|
|
5491
|
-
}
|
|
5492
|
-
),
|
|
5493
5511
|
isAuthenticated ? /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
|
|
5494
|
-
|
|
5512
|
+
showFundsPending && /* @__PURE__ */ jsxs(FundsPendingInline, { className: "loaf-funds-pending", children: [
|
|
5513
|
+
/* @__PURE__ */ jsx(FundsPendingText, { children: "Your test funds will arrive soon\u2026" }),
|
|
5514
|
+
fundsCountdown > 0 && /* @__PURE__ */ jsxs(FundsPendingCountdown, { children: [
|
|
5515
|
+
"~",
|
|
5516
|
+
fundsCountdown,
|
|
5517
|
+
"s"
|
|
5518
|
+
] })
|
|
5519
|
+
] }),
|
|
5520
|
+
!showFundsPending && portfolioSummary && isPortfolioBarVisible && (() => {
|
|
5495
5521
|
const fmtInline = (n) => n.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
5496
5522
|
const isPLPos = portfolioSummary.pnl >= 0;
|
|
5497
5523
|
return /* @__PURE__ */ jsxs(PortfolioInline, { className: "loaf-portfolio-inline", children: [
|
|
@@ -5513,7 +5539,7 @@ var Header = ({
|
|
|
5513
5539
|
/* @__PURE__ */ jsx(PBOperator, { children: "=" }),
|
|
5514
5540
|
/* @__PURE__ */ jsxs(PBMetric, { children: [
|
|
5515
5541
|
/* @__PURE__ */ jsx(PBMetricLabel, { children: "Portfolio" }),
|
|
5516
|
-
/* @__PURE__ */ jsxs(PBMetricValue, { style: { color: "#
|
|
5542
|
+
/* @__PURE__ */ jsxs(PBMetricValue, { style: { color: "#E6C87E", fontWeight: 700 }, children: [
|
|
5517
5543
|
"$",
|
|
5518
5544
|
fmtInline(portfolioSummary.portfolioValue)
|
|
5519
5545
|
] })
|
|
@@ -5620,84 +5646,93 @@ var Header = ({
|
|
|
5620
5646
|
)
|
|
5621
5647
|
] })
|
|
5622
5648
|
] }),
|
|
5623
|
-
|
|
5649
|
+
/* @__PURE__ */ jsx(
|
|
5624
5650
|
MobileOnlyButton,
|
|
5625
5651
|
{
|
|
5626
|
-
onClick: () => setIsMobileMenuOpen(
|
|
5627
|
-
$isOpen:
|
|
5652
|
+
onClick: () => setIsMobileMenuOpen((v) => !v),
|
|
5653
|
+
$isOpen: isMobileMenuOpen,
|
|
5628
5654
|
className: "mobile-menu-button",
|
|
5629
|
-
"aria-label": "Open menu",
|
|
5630
|
-
children: "\u2630"
|
|
5655
|
+
"aria-label": isMobileMenuOpen ? "Close menu" : "Open menu",
|
|
5656
|
+
children: isMobileMenuOpen ? "\u2715" : "\u2630"
|
|
5631
5657
|
}
|
|
5632
5658
|
)
|
|
5633
5659
|
] }) : /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
|
|
5634
5660
|
/* @__PURE__ */ jsx(Button2, { className: "signup", onClick: handleSignIn, children: "Connect" }),
|
|
5635
|
-
|
|
5661
|
+
/* @__PURE__ */ jsx(
|
|
5636
5662
|
MobileOnlyButton,
|
|
5637
5663
|
{
|
|
5638
|
-
onClick: () => setIsMobileMenuOpen(
|
|
5639
|
-
$isOpen:
|
|
5664
|
+
onClick: () => setIsMobileMenuOpen((v) => !v),
|
|
5665
|
+
$isOpen: isMobileMenuOpen,
|
|
5640
5666
|
className: "mobile-menu-button",
|
|
5641
|
-
"aria-label": "Open menu",
|
|
5642
|
-
children: "\u2630"
|
|
5667
|
+
"aria-label": isMobileMenuOpen ? "Close menu" : "Open menu",
|
|
5668
|
+
children: isMobileMenuOpen ? "\u2715" : "\u2630"
|
|
5643
5669
|
}
|
|
5644
5670
|
)
|
|
5645
5671
|
] })
|
|
5646
5672
|
] }),
|
|
5647
5673
|
/* @__PURE__ */ jsx(HeaderSpacer, {}),
|
|
5648
|
-
isAuthenticated &&
|
|
5649
|
-
|
|
5650
|
-
|
|
5651
|
-
|
|
5652
|
-
|
|
5653
|
-
|
|
5654
|
-
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
/* @__PURE__ */
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
|
|
5673
|
-
|
|
5674
|
-
|
|
5675
|
-
|
|
5676
|
-
|
|
5677
|
-
|
|
5678
|
-
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5674
|
+
isAuthenticated && isPortfolioBarVisible && (showFundsPending || portfolioSummary) && /* @__PURE__ */ jsx(PortfolioBarContainer, { className: "loaf-portfolio-bar loaf-portfolio-bar-dropdown", children: /* @__PURE__ */ jsxs(PortfolioBarPill, { ref: portfolioPillRef, className: "loaf-portfolio-pill", children: [
|
|
5675
|
+
portfolioArrowLeft !== null && /* @__PURE__ */ jsx(PortfolioBarArrow, { className: "loaf-portfolio-arrow", style: { left: `${portfolioArrowLeft}px` } }),
|
|
5676
|
+
showFundsPending ? /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, className: "loaf-funds-pending", children: [
|
|
5677
|
+
/* @__PURE__ */ jsx(FundsPendingText, { children: "Your test funds will arrive soon\u2026" }),
|
|
5678
|
+
fundsCountdown > 0 && /* @__PURE__ */ jsxs(FundsPendingCountdown, { children: [
|
|
5679
|
+
"~",
|
|
5680
|
+
fundsCountdown,
|
|
5681
|
+
"s"
|
|
5682
|
+
] })
|
|
5683
|
+
] }) : portfolioSummary ? (() => {
|
|
5684
|
+
const fmt = (n) => n.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
5685
|
+
const isPLPositive = portfolioSummary.pnl >= 0;
|
|
5686
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5687
|
+
/* @__PURE__ */ jsxs(PBMetric, { children: [
|
|
5688
|
+
/* @__PURE__ */ jsx(PBMetricLabel, { children: "Holdings" }),
|
|
5689
|
+
/* @__PURE__ */ jsxs(PBMetricValue, { children: [
|
|
5690
|
+
"$",
|
|
5691
|
+
fmt(portfolioSummary.holdings)
|
|
5692
|
+
] })
|
|
5693
|
+
] }),
|
|
5694
|
+
/* @__PURE__ */ jsx(PBOperator, { children: "+" }),
|
|
5695
|
+
/* @__PURE__ */ jsxs(PBMetric, { children: [
|
|
5696
|
+
/* @__PURE__ */ jsx(PBMetricLabel, { children: "Cash" }),
|
|
5697
|
+
/* @__PURE__ */ jsxs(PBMetricValue, { children: [
|
|
5698
|
+
"$",
|
|
5699
|
+
fmt(portfolioSummary.cash)
|
|
5700
|
+
] })
|
|
5701
|
+
] }),
|
|
5702
|
+
/* @__PURE__ */ jsx(PBOperator, { children: "=" }),
|
|
5703
|
+
/* @__PURE__ */ jsxs(PBMetric, { children: [
|
|
5704
|
+
/* @__PURE__ */ jsx(PBMetricLabel, { children: "Portfolio" }),
|
|
5705
|
+
/* @__PURE__ */ jsxs(PBMetricValue, { style: { color: "#E6C87E", fontWeight: 700 }, children: [
|
|
5706
|
+
"$",
|
|
5707
|
+
fmt(portfolioSummary.portfolioValue)
|
|
5708
|
+
] })
|
|
5709
|
+
] }),
|
|
5710
|
+
/* @__PURE__ */ jsx(PBDot, {}),
|
|
5711
|
+
/* @__PURE__ */ jsxs(PBMetric, { children: [
|
|
5712
|
+
/* @__PURE__ */ jsx(PBMetricLabel, { children: "Locked Balance" }),
|
|
5713
|
+
/* @__PURE__ */ jsxs(PBMetricValue, { style: { color: "#B0B0B8" }, children: [
|
|
5714
|
+
"$",
|
|
5715
|
+
fmt(portfolioSummary.frozen ?? 0)
|
|
5716
|
+
] })
|
|
5717
|
+
] }),
|
|
5718
|
+
/* @__PURE__ */ jsx(PBDot, {}),
|
|
5719
|
+
/* @__PURE__ */ jsxs(PBMetric, { children: [
|
|
5720
|
+
/* @__PURE__ */ jsx(PBMetricLabel, { children: "P&L" }),
|
|
5721
|
+
/* @__PURE__ */ jsxs(PBMetricValue, { $positive: isPLPositive, $negative: !isPLPositive, children: [
|
|
5693
5722
|
isPLPositive ? "+" : "",
|
|
5694
|
-
|
|
5695
|
-
|
|
5723
|
+
"$",
|
|
5724
|
+
fmt(Math.abs(portfolioSummary.pnl)),
|
|
5725
|
+
/* @__PURE__ */ jsxs("span", { style: { fontSize: "0.6rem", marginLeft: "2px", opacity: 0.7 }, children: [
|
|
5726
|
+
"(",
|
|
5727
|
+
isPLPositive ? "+" : "",
|
|
5728
|
+
portfolioSummary.pnlPercent.toFixed(2),
|
|
5729
|
+
"%)"
|
|
5730
|
+
] })
|
|
5696
5731
|
] })
|
|
5697
5732
|
] })
|
|
5698
|
-
] })
|
|
5699
|
-
|
|
5700
|
-
})
|
|
5733
|
+
] });
|
|
5734
|
+
})() : null
|
|
5735
|
+
] }) }),
|
|
5701
5736
|
LoginPopupComponent && showLoginPopup && /* @__PURE__ */ jsx(
|
|
5702
5737
|
LoginPopupComponent,
|
|
5703
5738
|
{
|
|
@@ -5728,11 +5763,11 @@ var Overlay = styled9.div`
|
|
|
5728
5763
|
height: 100%;
|
|
5729
5764
|
background-color: rgba(0, 0, 0, 0.7);
|
|
5730
5765
|
backdrop-filter: blur(3px);
|
|
5731
|
-
z-index:
|
|
5766
|
+
z-index: 970;
|
|
5732
5767
|
`;
|
|
5733
5768
|
var MobileOnlyButton = styled9.button.attrs({ type: "button" })`
|
|
5734
5769
|
display: none;
|
|
5735
|
-
background-color: ${(props) => props.$isOpen ? "rgba(
|
|
5770
|
+
background-color: ${(props) => props.$isOpen ? "rgba(230, 200, 126, 0.2)" : "#E6C87E"};
|
|
5736
5771
|
color: ${(props) => props.$isOpen ? "#ffffff" : "#0b0e11"};
|
|
5737
5772
|
font-size: 18px;
|
|
5738
5773
|
font-weight: bold;
|
|
@@ -5743,18 +5778,18 @@ var MobileOnlyButton = styled9.button.attrs({ type: "button" })`
|
|
|
5743
5778
|
margin-left: 0.5rem;
|
|
5744
5779
|
z-index: 1100;
|
|
5745
5780
|
border-radius: 6px;
|
|
5746
|
-
border: ${(props) => props.$isOpen ? "1px solid #
|
|
5781
|
+
border: ${(props) => props.$isOpen ? "1px solid #E6C87E" : "none"};
|
|
5747
5782
|
line-height: 1;
|
|
5748
5783
|
padding: 0;
|
|
5749
5784
|
cursor: pointer;
|
|
5750
5785
|
box-shadow: ${(props) => props.$isOpen ? "0 2px 8px rgba(0, 0, 0, 0.3)" : "none"};
|
|
5751
5786
|
|
|
5752
5787
|
&:hover {
|
|
5753
|
-
background-color: ${(props) => props.$isOpen ? "rgba(
|
|
5788
|
+
background-color: ${(props) => props.$isOpen ? "rgba(230, 200, 126, 0.3)" : "#F2D898"};
|
|
5754
5789
|
}
|
|
5755
5790
|
|
|
5756
5791
|
&:active {
|
|
5757
|
-
background-color: ${(props) => props.$isOpen ? "rgba(
|
|
5792
|
+
background-color: ${(props) => props.$isOpen ? "rgba(230, 200, 126, 0.4)" : "#F2D898"};
|
|
5758
5793
|
}
|
|
5759
5794
|
|
|
5760
5795
|
@media (max-width: 1024px) {
|
|
@@ -5769,7 +5804,7 @@ var HeaderContainer = styled9.header`
|
|
|
5769
5804
|
still get the horizontal padding — only the top falls back to 0 */
|
|
5770
5805
|
padding: 0 2rem;
|
|
5771
5806
|
padding-top: max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px));
|
|
5772
|
-
background-color: rgba(
|
|
5807
|
+
background-color: rgba(17, 17, 19, ${({ $bgOpacity }) => $bgOpacity ?? 1});
|
|
5773
5808
|
border-bottom: 1px solid rgba(35, 42, 50, ${({ $bgOpacity }) => $bgOpacity ?? 1});
|
|
5774
5809
|
transition: background-color 0.15s ease, border-bottom-color 0.15s ease;
|
|
5775
5810
|
position: fixed;
|
|
@@ -5792,7 +5827,7 @@ var HeaderContainer = styled9.header`
|
|
|
5792
5827
|
min-height: 46px;
|
|
5793
5828
|
padding: 0 0.75rem;
|
|
5794
5829
|
border-radius: 12px;
|
|
5795
|
-
background-color: rgba(
|
|
5830
|
+
background-color: rgba(17, 17, 19, ${({ $bgOpacity }) => Math.max(($bgOpacity ?? 1) * 0.92, 0)});
|
|
5796
5831
|
backdrop-filter: blur(${({ $bgOpacity }) => Math.round(($bgOpacity ?? 1) * 12)}px);
|
|
5797
5832
|
border: 1px solid rgba(255, 255, 255, ${({ $bgOpacity }) => ($bgOpacity ?? 1) * 0.08});
|
|
5798
5833
|
border-bottom: 1px solid rgba(255, 255, 255, ${({ $bgOpacity }) => ($bgOpacity ?? 1) * 0.08});
|
|
@@ -5860,19 +5895,25 @@ var Nav = styled9.nav`
|
|
|
5860
5895
|
|
|
5861
5896
|
@media (max-width: 1024px) {
|
|
5862
5897
|
position: fixed;
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
|
|
5867
|
-
|
|
5868
|
-
|
|
5869
|
-
|
|
5898
|
+
/* Opens just below the nav — and below the Private Beta banner when it's showing.
|
|
5899
|
+
The shell publishes --loaf-menu-top (banner-aware); the fallback is the bare
|
|
5900
|
+
nav bottom for standalone apps with no shell/banner. */
|
|
5901
|
+
top: var(--loaf-menu-top, calc(56px + max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px))));
|
|
5902
|
+
right: 0;
|
|
5903
|
+
left: 0;
|
|
5904
|
+
width: 100%;
|
|
5905
|
+
max-width: 100%;
|
|
5906
|
+
height: calc(100dvh - var(--loaf-menu-top, calc(56px + max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px)))));
|
|
5870
5907
|
background: linear-gradient(180deg, #0f1419 0%, #0a0e13 100%);
|
|
5871
|
-
z-index:
|
|
5872
|
-
|
|
5873
|
-
|
|
5908
|
+
z-index: 980;
|
|
5909
|
+
/* Gentle fade + slide-down instead of an abrupt slide-in. */
|
|
5910
|
+
opacity: ${(props) => props.$isOpen ? "1" : "0"};
|
|
5911
|
+
transform: ${(props) => props.$isOpen ? "translateY(0)" : "translateY(-14px)"};
|
|
5912
|
+
visibility: ${(props) => props.$isOpen ? "visible" : "hidden"};
|
|
5913
|
+
pointer-events: ${(props) => props.$isOpen ? "auto" : "none"};
|
|
5914
|
+
transition: opacity 0.28s ease, transform 0.28s ease, visibility 0.28s ease;
|
|
5915
|
+
box-shadow: ${(props) => props.$isOpen ? "0 12px 30px rgba(0, 0, 0, 0.5)" : "none"};
|
|
5874
5916
|
overflow-y: auto;
|
|
5875
|
-
border-left: 1px solid rgba(255, 255, 255, 0.05);
|
|
5876
5917
|
|
|
5877
5918
|
.desktop-nav {
|
|
5878
5919
|
display: none;
|
|
@@ -5881,10 +5922,18 @@ var Nav = styled9.nav`
|
|
|
5881
5922
|
.mobile-menu-content {
|
|
5882
5923
|
display: flex;
|
|
5883
5924
|
flex-direction: column;
|
|
5884
|
-
|
|
5885
|
-
|
|
5925
|
+
align-items: center;
|
|
5926
|
+
justify-content: center;
|
|
5927
|
+
min-height: 100%;
|
|
5928
|
+
padding: 2rem 1.5rem 2.5rem;
|
|
5929
|
+
gap: 0.4rem;
|
|
5886
5930
|
}
|
|
5887
5931
|
}
|
|
5932
|
+
|
|
5933
|
+
@media (max-width: 768px) {
|
|
5934
|
+
top: var(--loaf-menu-top, calc(0.5rem + 46px + max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px))));
|
|
5935
|
+
height: calc(100dvh - var(--loaf-menu-top, calc(0.5rem + 46px + max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px)))));
|
|
5936
|
+
}
|
|
5888
5937
|
`;
|
|
5889
5938
|
var NavLink = styled9.a`
|
|
5890
5939
|
margin: 0 12px;
|
|
@@ -5906,7 +5955,7 @@ var NavLink = styled9.a`
|
|
|
5906
5955
|
|
|
5907
5956
|
&:hover,
|
|
5908
5957
|
&.active {
|
|
5909
|
-
color: #
|
|
5958
|
+
color: #E6C87E;
|
|
5910
5959
|
}
|
|
5911
5960
|
|
|
5912
5961
|
&.active::after {
|
|
@@ -5916,7 +5965,7 @@ var NavLink = styled9.a`
|
|
|
5916
5965
|
left: 0;
|
|
5917
5966
|
width: 100%;
|
|
5918
5967
|
height: 3px;
|
|
5919
|
-
background-color: #
|
|
5968
|
+
background-color: #E6C87E;
|
|
5920
5969
|
}
|
|
5921
5970
|
|
|
5922
5971
|
@media (max-width: 768px) {
|
|
@@ -5955,8 +6004,8 @@ var Button2 = styled9.button.attrs({ type: "button" })`
|
|
|
5955
6004
|
|
|
5956
6005
|
&.login {
|
|
5957
6006
|
background-color: transparent;
|
|
5958
|
-
border: 1px solid #
|
|
5959
|
-
color: #
|
|
6007
|
+
border: 1px solid #E6C87E;
|
|
6008
|
+
color: #E6C87E;
|
|
5960
6009
|
|
|
5961
6010
|
&:hover {
|
|
5962
6011
|
background-color: rgba(240, 185, 11, 0.1);
|
|
@@ -5968,12 +6017,12 @@ var Button2 = styled9.button.attrs({ type: "button" })`
|
|
|
5968
6017
|
}
|
|
5969
6018
|
|
|
5970
6019
|
&.signup {
|
|
5971
|
-
background-color: #
|
|
6020
|
+
background-color: #E6C87E;
|
|
5972
6021
|
color: #0b0e11;
|
|
5973
6022
|
border: none;
|
|
5974
6023
|
|
|
5975
6024
|
&:hover {
|
|
5976
|
-
background-color: #
|
|
6025
|
+
background-color: #F2D898;
|
|
5977
6026
|
}
|
|
5978
6027
|
}
|
|
5979
6028
|
|
|
@@ -6064,7 +6113,7 @@ var MenuItem = styled9.div`
|
|
|
6064
6113
|
border-bottom: none;
|
|
6065
6114
|
|
|
6066
6115
|
&:hover {
|
|
6067
|
-
color: #
|
|
6116
|
+
color: #E6C87E;
|
|
6068
6117
|
background-color: rgba(240, 185, 11, 0.08);
|
|
6069
6118
|
}
|
|
6070
6119
|
|
|
@@ -6073,13 +6122,7 @@ var MenuItem = styled9.div`
|
|
|
6073
6122
|
}
|
|
6074
6123
|
`;
|
|
6075
6124
|
var MobileMenuHeader = styled9.div`
|
|
6076
|
-
display:
|
|
6077
|
-
justify-content: flex-end;
|
|
6078
|
-
align-items: center;
|
|
6079
|
-
padding: 16px 20px;
|
|
6080
|
-
margin-top: 60px;
|
|
6081
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
6082
|
-
background: rgba(0, 0, 0, 0.2);
|
|
6125
|
+
display: none;
|
|
6083
6126
|
`;
|
|
6084
6127
|
var MobileMenuClose = styled9.button.attrs({ type: "button" })`
|
|
6085
6128
|
background: none;
|
|
@@ -6095,19 +6138,20 @@ var MobileMenuClose = styled9.button.attrs({ type: "button" })`
|
|
|
6095
6138
|
var MobileNavItem = styled9.div`
|
|
6096
6139
|
display: flex;
|
|
6097
6140
|
align-items: center;
|
|
6098
|
-
|
|
6099
|
-
|
|
6100
|
-
|
|
6141
|
+
justify-content: center;
|
|
6142
|
+
padding: 13px 20px;
|
|
6143
|
+
width: 100%;
|
|
6144
|
+
max-width: 320px;
|
|
6145
|
+
color: rgba(255, 255, 255, 0.88);
|
|
6146
|
+
font-size: 18px;
|
|
6101
6147
|
cursor: pointer;
|
|
6102
|
-
|
|
6103
|
-
|
|
6104
|
-
transition: all 0.2s ease;
|
|
6148
|
+
font-weight: 500;
|
|
6149
|
+
transition: color 0.2s ease;
|
|
6105
6150
|
letter-spacing: 0.2px;
|
|
6151
|
+
text-align: center;
|
|
6106
6152
|
|
|
6107
6153
|
&:hover {
|
|
6108
|
-
|
|
6109
|
-
color: #ffffff;
|
|
6110
|
-
padding-left: 24px;
|
|
6154
|
+
color: #E6C87E;
|
|
6111
6155
|
}
|
|
6112
6156
|
`;
|
|
6113
6157
|
var pbShimmer = keyframes`
|
|
@@ -6123,14 +6167,14 @@ var PortfolioEyeButton = styled9.button`
|
|
|
6123
6167
|
display: flex;
|
|
6124
6168
|
align-items: center;
|
|
6125
6169
|
justify-content: center;
|
|
6126
|
-
color: ${(p) => p.$active ? "#
|
|
6170
|
+
color: ${(p) => p.$active ? "#E6C87E" : "rgba(255,255,255,0.5)"};
|
|
6127
6171
|
transition: all 0.2s ease;
|
|
6128
6172
|
margin-left: 6px;
|
|
6129
6173
|
margin-right: 10px;
|
|
6130
6174
|
|
|
6131
6175
|
&:hover {
|
|
6132
6176
|
background: rgba(212, 175, 55, 0.2);
|
|
6133
|
-
color: #
|
|
6177
|
+
color: #E6C87E;
|
|
6134
6178
|
}
|
|
6135
6179
|
|
|
6136
6180
|
@media (max-width: 768px) {
|
|
@@ -6262,6 +6306,35 @@ var PortfolioInline = styled9.div`
|
|
|
6262
6306
|
display: none;
|
|
6263
6307
|
}
|
|
6264
6308
|
`;
|
|
6309
|
+
var fundsPendingPulse = keyframes`
|
|
6310
|
+
0% { opacity: 0.25; }
|
|
6311
|
+
50% { opacity: 1; }
|
|
6312
|
+
100% { opacity: 0.25; }
|
|
6313
|
+
`;
|
|
6314
|
+
var FundsPendingInline = styled9.div`
|
|
6315
|
+
display: flex;
|
|
6316
|
+
align-items: center;
|
|
6317
|
+
gap: 0.5rem;
|
|
6318
|
+
margin-right: 0.75rem;
|
|
6319
|
+
|
|
6320
|
+
@media (max-width: 1800px) {
|
|
6321
|
+
display: none;
|
|
6322
|
+
}
|
|
6323
|
+
`;
|
|
6324
|
+
var FundsPendingText = styled9.span`
|
|
6325
|
+
font-size: 0.8rem;
|
|
6326
|
+
font-weight: 600;
|
|
6327
|
+
letter-spacing: 0.2px;
|
|
6328
|
+
color: #E6C87E;
|
|
6329
|
+
white-space: nowrap;
|
|
6330
|
+
animation: ${fundsPendingPulse} 1.8s ease-in-out infinite;
|
|
6331
|
+
`;
|
|
6332
|
+
var FundsPendingCountdown = styled9.span`
|
|
6333
|
+
font-size: 0.7rem;
|
|
6334
|
+
font-weight: 600;
|
|
6335
|
+
color: rgba(255, 255, 255, 0.55);
|
|
6336
|
+
font-variant-numeric: tabular-nums;
|
|
6337
|
+
`;
|
|
6265
6338
|
var PBMetric = styled9.div`
|
|
6266
6339
|
display: flex;
|
|
6267
6340
|
flex-direction: column;
|
|
@@ -6588,20 +6661,6 @@ var LoginPopup = ({
|
|
|
6588
6661
|
setLoading(false);
|
|
6589
6662
|
}
|
|
6590
6663
|
};
|
|
6591
|
-
const handlePasskeyLogin = async () => {
|
|
6592
|
-
if (!onPasskeyLogin) return;
|
|
6593
|
-
setError("");
|
|
6594
|
-
setLoading(true);
|
|
6595
|
-
try {
|
|
6596
|
-
await onPasskeyLogin();
|
|
6597
|
-
onClose();
|
|
6598
|
-
} catch (err) {
|
|
6599
|
-
const message = err instanceof Error ? err.message : "Passkey sign-in failed";
|
|
6600
|
-
setError(message);
|
|
6601
|
-
} finally {
|
|
6602
|
-
setLoading(false);
|
|
6603
|
-
}
|
|
6604
|
-
};
|
|
6605
6664
|
const handleEmailClick = (signUp = false) => {
|
|
6606
6665
|
setIsSignUp(signUp);
|
|
6607
6666
|
setView("email");
|
|
@@ -6617,13 +6676,9 @@ var LoginPopup = ({
|
|
|
6617
6676
|
setError("Email addresses with '+' are not allowed. Please use your base email address.");
|
|
6618
6677
|
return;
|
|
6619
6678
|
}
|
|
6620
|
-
if (isSignUp && !handle.trim()) {
|
|
6621
|
-
setError("Please claim a handle to continue");
|
|
6622
|
-
return;
|
|
6623
|
-
}
|
|
6624
6679
|
setLoading(true);
|
|
6625
6680
|
setError("");
|
|
6626
|
-
const normalizedHandle = isSignUp ? handle.trim() : void 0;
|
|
6681
|
+
const normalizedHandle = isSignUp && handle.trim() ? handle.trim() : void 0;
|
|
6627
6682
|
try {
|
|
6628
6683
|
const demoResult = await onDemoLogin?.(email, normalizedHandle ?? null);
|
|
6629
6684
|
if (demoResult && demoResult.success) {
|
|
@@ -6851,13 +6906,13 @@ var LoginPopup = ({
|
|
|
6851
6906
|
return /* @__PURE__ */ jsx(Overlay2, { onClick: onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
6852
6907
|
/* @__PURE__ */ jsx(CloseButton, { onClick: onClose, "aria-label": "Close login popup", children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) }),
|
|
6853
6908
|
/* @__PURE__ */ jsxs(Title, { children: [
|
|
6854
|
-
/* @__PURE__ */
|
|
6855
|
-
|
|
6856
|
-
"
|
|
6857
|
-
|
|
6858
|
-
|
|
6909
|
+
/* @__PURE__ */ jsxs(LogoContainer3, { children: [
|
|
6910
|
+
/* @__PURE__ */ jsx(LogoImage, { src: logoSrc, alt: logoAlt }),
|
|
6911
|
+
/* @__PURE__ */ jsx(LogoBeta, { children: "Private Beta" })
|
|
6912
|
+
] }),
|
|
6913
|
+
/* @__PURE__ */ jsx(TitleText, { children: "Welcome to Loaf" })
|
|
6859
6914
|
] }),
|
|
6860
|
-
/* @__PURE__ */ jsx(Subtitle, { children: "Sign in to claim
|
|
6915
|
+
/* @__PURE__ */ jsx(Subtitle, { children: "Sign in to claim 100k in test USD." }),
|
|
6861
6916
|
/* @__PURE__ */ jsxs(ButtonsContainer, { children: [
|
|
6862
6917
|
/* @__PURE__ */ jsxs(LoginButton, { onClick: () => handleEmailClick(false), children: [
|
|
6863
6918
|
/* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" }) }),
|
|
@@ -6867,11 +6922,12 @@ var LoginPopup = ({
|
|
|
6867
6922
|
/* @__PURE__ */ jsxs(LoginButton, { onClick: handleWalletLogin, children: [
|
|
6868
6923
|
/* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z" }) }),
|
|
6869
6924
|
"Sign in with Wallet"
|
|
6870
|
-
] }),
|
|
6871
|
-
onPasskeyLogin && /* @__PURE__ */ jsxs(LoginButton, { onClick: handlePasskeyLogin, disabled: loading, children: [
|
|
6872
|
-
/* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M12 2C9.79 2 8 3.79 8 6v4H6c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2h-2V6c0-2.21-1.79-4-4-4zm-2 4c0-1.1.9-2 2-2s2 .9 2 2v4h-4V6zm2 9a2 2 0 100 4 2 2 0 000-4z" }) }),
|
|
6873
|
-
"Sign in with Passkey"
|
|
6874
6925
|
] })
|
|
6926
|
+
] }),
|
|
6927
|
+
/* @__PURE__ */ jsxs(SignUpPrompt, { children: [
|
|
6928
|
+
"New to Loaf?",
|
|
6929
|
+
" ",
|
|
6930
|
+
/* @__PURE__ */ jsx(SignUpLink, { type: "button", onClick: () => handleEmailClick(true), children: "Sign up" })
|
|
6875
6931
|
] })
|
|
6876
6932
|
] }) });
|
|
6877
6933
|
}
|
|
@@ -6886,7 +6942,7 @@ var LoginPopup = ({
|
|
|
6886
6942
|
/* @__PURE__ */ jsx(LogoContainer3, { children: /* @__PURE__ */ jsx(LogoImage, { src: logoSrc, alt: logoAlt }) }),
|
|
6887
6943
|
isSignUp ? "Sign up with Email" : "Sign in with Email"
|
|
6888
6944
|
] }),
|
|
6889
|
-
/* @__PURE__ */ jsx("form", { onSubmit: handleSendCode, children: /* @__PURE__ */ jsxs(EmailFormContainer, { children: [
|
|
6945
|
+
/* @__PURE__ */ jsx("form", { onSubmit: handleSendCode, style: { marginTop: "1.5rem" }, children: /* @__PURE__ */ jsxs(EmailFormContainer, { children: [
|
|
6890
6946
|
/* @__PURE__ */ jsx(
|
|
6891
6947
|
EmailInput,
|
|
6892
6948
|
{
|
|
@@ -6901,13 +6957,13 @@ var LoginPopup = ({
|
|
|
6901
6957
|
EmailInput,
|
|
6902
6958
|
{
|
|
6903
6959
|
type: "text",
|
|
6904
|
-
placeholder: "Claim your
|
|
6960
|
+
placeholder: "Claim your username (Optional)",
|
|
6905
6961
|
value: handle,
|
|
6906
6962
|
onChange: (event) => setHandle(event.target.value),
|
|
6907
6963
|
style: { marginTop: "0.5rem" }
|
|
6908
6964
|
}
|
|
6909
6965
|
),
|
|
6910
|
-
/* @__PURE__ */ jsx(SubmitButton, { type: "submit", disabled: loading || !email
|
|
6966
|
+
/* @__PURE__ */ jsx(SubmitButton, { type: "submit", disabled: loading || !email, children: loading ? "Sending..." : "Continue" }),
|
|
6911
6967
|
error && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: error })
|
|
6912
6968
|
] }) }),
|
|
6913
6969
|
/* @__PURE__ */ jsx(InfoText, { children: "We'll send you a verification code to sign in securely." }),
|
|
@@ -6995,7 +7051,7 @@ var LoginPopup = ({
|
|
|
6995
7051
|
style: {
|
|
6996
7052
|
background: "none",
|
|
6997
7053
|
border: "none",
|
|
6998
|
-
color: "#
|
|
7054
|
+
color: "#E6C87E",
|
|
6999
7055
|
cursor: "pointer",
|
|
7000
7056
|
textDecoration: "underline"
|
|
7001
7057
|
},
|
|
@@ -7025,7 +7081,7 @@ var LoginPopup = ({
|
|
|
7025
7081
|
] })
|
|
7026
7082
|
] }),
|
|
7027
7083
|
!showKycWidget && /* @__PURE__ */ jsxs(KycLandingContainer, { children: [
|
|
7028
|
-
/* @__PURE__ */ jsx(KycLockIcon, { children: /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "#
|
|
7084
|
+
/* @__PURE__ */ jsx(KycLockIcon, { children: /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "#E6C87E", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
7029
7085
|
/* @__PURE__ */ jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
|
|
7030
7086
|
/* @__PURE__ */ jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
7031
7087
|
] }) }),
|
|
@@ -7192,7 +7248,7 @@ var LoginPopup = ({
|
|
|
7192
7248
|
/* @__PURE__ */ jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
7193
7249
|
] }) }),
|
|
7194
7250
|
/* @__PURE__ */ jsx(OnboardingHeading, { children: "Enter code to access Private Beta trading" }),
|
|
7195
|
-
/* @__PURE__ */ jsx(OnboardingSubtext, { style: { marginBottom: "1.5rem" }, children: "Enter
|
|
7251
|
+
/* @__PURE__ */ jsx(OnboardingSubtext, { style: { marginBottom: "1.5rem" }, children: "Enter code to trade 100k in USDC, or skip to continue." }),
|
|
7196
7252
|
/* @__PURE__ */ jsxs(EmailFormContainer, { style: { width: "100%", marginBottom: 0 }, children: [
|
|
7197
7253
|
/* @__PURE__ */ jsx(
|
|
7198
7254
|
EmailInput,
|
|
@@ -7500,7 +7556,7 @@ var KycStartButton = styled9.button`
|
|
|
7500
7556
|
border-radius: 8px;
|
|
7501
7557
|
border: none;
|
|
7502
7558
|
cursor: pointer;
|
|
7503
|
-
background: #
|
|
7559
|
+
background: #E6C87E;
|
|
7504
7560
|
color: #0a0a0a;
|
|
7505
7561
|
font-weight: 600;
|
|
7506
7562
|
font-size: 0.9rem;
|
|
@@ -7569,18 +7625,17 @@ var Title = styled9.h2`
|
|
|
7569
7625
|
gap: 1rem;
|
|
7570
7626
|
`;
|
|
7571
7627
|
var TitleText = styled9.span`
|
|
7572
|
-
display: flex;
|
|
7573
|
-
flex-direction: column;
|
|
7574
|
-
align-items: center;
|
|
7575
|
-
gap: 0.35rem;
|
|
7576
7628
|
text-align: center;
|
|
7577
7629
|
line-height: 1.2;
|
|
7578
7630
|
`;
|
|
7579
|
-
var
|
|
7580
|
-
|
|
7581
|
-
font-
|
|
7582
|
-
|
|
7631
|
+
var LogoBeta = styled9.span`
|
|
7632
|
+
color: var(--color-accent, #E6C87E);
|
|
7633
|
+
font-size: 0.6rem;
|
|
7634
|
+
font-weight: 600;
|
|
7635
|
+
letter-spacing: 0.14em;
|
|
7636
|
+
text-transform: uppercase;
|
|
7583
7637
|
white-space: nowrap;
|
|
7638
|
+
padding-bottom: 0.95rem;
|
|
7584
7639
|
`;
|
|
7585
7640
|
var Subtitle = styled9.p`
|
|
7586
7641
|
font-size: 0.9rem;
|
|
@@ -7591,7 +7646,9 @@ var Subtitle = styled9.p`
|
|
|
7591
7646
|
`;
|
|
7592
7647
|
var LogoContainer3 = styled9.div`
|
|
7593
7648
|
display: flex;
|
|
7649
|
+
align-items: flex-end;
|
|
7594
7650
|
justify-content: center;
|
|
7651
|
+
gap: 0.45rem;
|
|
7595
7652
|
margin-bottom: 0.5rem;
|
|
7596
7653
|
`;
|
|
7597
7654
|
var LogoImage = styled9.img`
|
|
@@ -7603,6 +7660,25 @@ var ButtonsContainer = styled9.div`
|
|
|
7603
7660
|
gap: 1rem;
|
|
7604
7661
|
margin-bottom: 1.5rem;
|
|
7605
7662
|
`;
|
|
7663
|
+
var SignUpPrompt = styled9.div`
|
|
7664
|
+
text-align: center;
|
|
7665
|
+
font-size: 0.875rem;
|
|
7666
|
+
color: var(--color-text-secondary, #848e9c);
|
|
7667
|
+
margin-bottom: 0.5rem;
|
|
7668
|
+
`;
|
|
7669
|
+
var SignUpLink = styled9.button`
|
|
7670
|
+
background: none;
|
|
7671
|
+
border: none;
|
|
7672
|
+
padding: 0;
|
|
7673
|
+
font: inherit;
|
|
7674
|
+
color: var(--color-accent, #E6C87E);
|
|
7675
|
+
text-decoration: underline;
|
|
7676
|
+
cursor: pointer;
|
|
7677
|
+
|
|
7678
|
+
&:hover {
|
|
7679
|
+
opacity: 0.85;
|
|
7680
|
+
}
|
|
7681
|
+
`;
|
|
7606
7682
|
var LoginButton = styled9.button`
|
|
7607
7683
|
display: flex;
|
|
7608
7684
|
align-items: center;
|
|
@@ -7620,13 +7696,13 @@ var LoginButton = styled9.button`
|
|
|
7620
7696
|
|
|
7621
7697
|
&:hover {
|
|
7622
7698
|
background-color: rgba(230, 198, 86, 0.1);
|
|
7623
|
-
border-color: var(--color-accent, #
|
|
7699
|
+
border-color: var(--color-accent, #E6C87E);
|
|
7624
7700
|
}
|
|
7625
7701
|
|
|
7626
7702
|
svg {
|
|
7627
7703
|
width: 20px;
|
|
7628
7704
|
height: 20px;
|
|
7629
|
-
color: var(--color-accent, #
|
|
7705
|
+
color: var(--color-accent, #E6C87E);
|
|
7630
7706
|
}
|
|
7631
7707
|
`;
|
|
7632
7708
|
var InfoText = styled9.p`
|
|
@@ -7653,7 +7729,7 @@ var EmailInput = styled9.input`
|
|
|
7653
7729
|
|
|
7654
7730
|
&:focus {
|
|
7655
7731
|
outline: none;
|
|
7656
|
-
border-color: var(--color-accent, #
|
|
7732
|
+
border-color: var(--color-accent, #E6C87E);
|
|
7657
7733
|
}
|
|
7658
7734
|
|
|
7659
7735
|
&::placeholder {
|
|
@@ -7674,19 +7750,19 @@ var OTPInput = styled9.input`
|
|
|
7674
7750
|
background-color: var(--color-background-light, #1a1a1a);
|
|
7675
7751
|
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
7676
7752
|
border-radius: var(--border-radius, 8px);
|
|
7677
|
-
color: var(--color-accent, #
|
|
7753
|
+
color: var(--color-accent, #E6C87E);
|
|
7678
7754
|
transition: all 0.2s ease;
|
|
7679
7755
|
|
|
7680
7756
|
&:focus {
|
|
7681
7757
|
outline: none;
|
|
7682
|
-
border-color: var(--color-accent, #
|
|
7758
|
+
border-color: var(--color-accent, #E6C87E);
|
|
7683
7759
|
box-shadow: 0 0 0 2px rgba(230, 198, 86, 0.2);
|
|
7684
7760
|
}
|
|
7685
7761
|
`;
|
|
7686
7762
|
var SubmitButton = styled9.button`
|
|
7687
7763
|
width: 100%;
|
|
7688
7764
|
padding: 0.85rem;
|
|
7689
|
-
background-color: var(--color-accent, #
|
|
7765
|
+
background-color: var(--color-accent, #E6C87E);
|
|
7690
7766
|
border: none;
|
|
7691
7767
|
border-radius: var(--border-radius, 8px);
|
|
7692
7768
|
color: var(--color-background, #0a0a0a);
|
|
@@ -7696,7 +7772,7 @@ var SubmitButton = styled9.button`
|
|
|
7696
7772
|
transition: all 0.2s ease;
|
|
7697
7773
|
|
|
7698
7774
|
&:hover:not(:disabled) {
|
|
7699
|
-
background-color: var(--color-accent-hover, #
|
|
7775
|
+
background-color: var(--color-accent-hover, #F2D898);
|
|
7700
7776
|
transform: translateY(-1px);
|
|
7701
7777
|
}
|
|
7702
7778
|
|
|
@@ -7718,7 +7794,7 @@ var BackButton = styled9.button`
|
|
|
7718
7794
|
margin-bottom: 1rem;
|
|
7719
7795
|
|
|
7720
7796
|
&:hover {
|
|
7721
|
-
color: var(--color-accent, #
|
|
7797
|
+
color: var(--color-accent, #E6C87E);
|
|
7722
7798
|
}
|
|
7723
7799
|
`;
|
|
7724
7800
|
var StatusMessage = styled9.p`
|
|
@@ -8039,7 +8115,7 @@ var SpinnerRing = styled9.div`
|
|
|
8039
8115
|
width: 40px;
|
|
8040
8116
|
height: 40px;
|
|
8041
8117
|
border: 3px solid rgba(230, 198, 86, 0.2);
|
|
8042
|
-
border-top-color: var(--color-accent, #
|
|
8118
|
+
border-top-color: var(--color-accent, #E6C87E);
|
|
8043
8119
|
border-radius: 50%;
|
|
8044
8120
|
animation: spin 0.8s linear infinite;
|
|
8045
8121
|
|
|
@@ -8072,7 +8148,7 @@ var FactLabel = styled9.div`
|
|
|
8072
8148
|
letter-spacing: 0.12em;
|
|
8073
8149
|
text-transform: uppercase;
|
|
8074
8150
|
font-weight: 700;
|
|
8075
|
-
color: var(--color-accent, #
|
|
8151
|
+
color: var(--color-accent, #E6C87E);
|
|
8076
8152
|
margin-bottom: 0.4rem;
|
|
8077
8153
|
`;
|
|
8078
8154
|
var FactText = styled9.p`
|
|
@@ -8529,6 +8605,18 @@ var PriceChange = styled9.span`
|
|
|
8529
8605
|
gap: 0.35rem;
|
|
8530
8606
|
color: ${(props) => props.$isPositive == null ? "var(--color-text-secondary, rgba(255, 255, 255, 0.6))" : props.$isPositive ? "var(--color-positive, #0ecb81)" : "var(--color-negative, #f6465d)"};
|
|
8531
8607
|
`;
|
|
8608
|
+
function useMaxWidth(maxWidth) {
|
|
8609
|
+
const [match, setMatch] = useState(() => typeof window !== "undefined" && window.matchMedia(`(max-width: ${maxWidth}px)`).matches);
|
|
8610
|
+
useEffect(() => {
|
|
8611
|
+
if (typeof window === "undefined") return;
|
|
8612
|
+
const mq = window.matchMedia(`(max-width: ${maxWidth}px)`);
|
|
8613
|
+
const onChange = () => setMatch(mq.matches);
|
|
8614
|
+
onChange();
|
|
8615
|
+
mq.addEventListener("change", onChange);
|
|
8616
|
+
return () => mq.removeEventListener("change", onChange);
|
|
8617
|
+
}, [maxWidth]);
|
|
8618
|
+
return match;
|
|
8619
|
+
}
|
|
8532
8620
|
function GalleryMapSection({
|
|
8533
8621
|
images = [],
|
|
8534
8622
|
categories = [],
|
|
@@ -8548,6 +8636,8 @@ function GalleryMapSection({
|
|
|
8548
8636
|
const [showVideo, setShowVideo] = useState(false);
|
|
8549
8637
|
const [autoPlaying, setAutoPlaying] = useState(autoPlay);
|
|
8550
8638
|
const [showFullMap, setShowFullMap] = useState(false);
|
|
8639
|
+
const [showFullVideo, setShowFullVideo] = useState(false);
|
|
8640
|
+
const isMobile = useMaxWidth(768);
|
|
8551
8641
|
const resolvedMapUrl = mapUrl ?? (tokenName ? `/map/${tokenName}?embed=true&zoom=14&hideOthers=true` : "about:blank");
|
|
8552
8642
|
useEffect(() => {
|
|
8553
8643
|
if (!autoPlaying || images.length <= 1) return;
|
|
@@ -8578,62 +8668,67 @@ function GalleryMapSection({
|
|
|
8578
8668
|
/* @__PURE__ */ jsx(BiImages, {}),
|
|
8579
8669
|
" Property Gallery"
|
|
8580
8670
|
] }),
|
|
8581
|
-
/* @__PURE__ */ jsxs("button", { type: "button", onClick: () =>
|
|
8671
|
+
isMobile ? videoUrl && /* @__PURE__ */ jsxs("button", { type: "button", onClick: () => setShowFullVideo(true), children: [
|
|
8672
|
+
/* @__PURE__ */ jsx(BiVideo, { size: 15 }),
|
|
8673
|
+
"Video"
|
|
8674
|
+
] }) : /* @__PURE__ */ jsxs("button", { type: "button", onClick: () => onPhotoClick?.(carouselIndex), children: [
|
|
8582
8675
|
/* @__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" }) }),
|
|
8583
8676
|
"Full View"
|
|
8584
8677
|
] })
|
|
8585
8678
|
] }),
|
|
8586
|
-
/* @__PURE__ */ jsxs(
|
|
8587
|
-
|
|
8588
|
-
|
|
8589
|
-
/* @__PURE__ */ jsx(
|
|
8590
|
-
|
|
8591
|
-
/* @__PURE__ */
|
|
8592
|
-
|
|
8679
|
+
isMobile ? /* @__PURE__ */ jsx(StackedGallery, { images, onPhotoClick }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8680
|
+
/* @__PURE__ */ jsxs(Carousel, { children: [
|
|
8681
|
+
showVideo && videoUrl && /* @__PURE__ */ jsx(VideoOverlay, { children: /* @__PURE__ */ jsx("video", { autoPlay: true, loop: true, playsInline: true, controls: true, style: { width: "100%", height: "100%", objectFit: "cover", borderRadius: 8 }, children: /* @__PURE__ */ jsx("source", { src: videoUrl, type: "video/mp4" }) }) }),
|
|
8682
|
+
/* @__PURE__ */ jsx(Track, { style: { transform: `translateX(-${carouselIndex * 100}%)` }, children: images.map((img, idx) => /* @__PURE__ */ jsxs(Slide, { onClick: () => onPhotoClick?.(idx), children: [
|
|
8683
|
+
/* @__PURE__ */ jsx("img", { src: img.src, alt: img.title }),
|
|
8684
|
+
/* @__PURE__ */ jsxs(SlideCaption, { children: [
|
|
8685
|
+
/* @__PURE__ */ jsx("h4", { children: img.title }),
|
|
8686
|
+
img.subtitle && /* @__PURE__ */ jsx("p", { children: img.subtitle })
|
|
8687
|
+
] })
|
|
8688
|
+
] }, idx)) }),
|
|
8689
|
+
!showVideo && images.length > 1 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8690
|
+
/* @__PURE__ */ jsx(CarouselButton, { className: "prev", onClick: goPrev, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M15 18l-6-6 6-6" }) }) }),
|
|
8691
|
+
/* @__PURE__ */ jsx(CarouselButton, { className: "next", onClick: goNext, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M9 18l6-6-6-6" }) }) })
|
|
8593
8692
|
] })
|
|
8594
|
-
] }
|
|
8595
|
-
|
|
8596
|
-
/* @__PURE__ */ jsx(
|
|
8597
|
-
|
|
8598
|
-
|
|
8599
|
-
|
|
8600
|
-
|
|
8601
|
-
|
|
8602
|
-
|
|
8603
|
-
|
|
8604
|
-
|
|
8605
|
-
|
|
8606
|
-
|
|
8607
|
-
|
|
8608
|
-
|
|
8609
|
-
|
|
8610
|
-
|
|
8611
|
-
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
|
|
8615
|
-
|
|
8616
|
-
|
|
8617
|
-
/* @__PURE__ */ jsx("rect", { x: "2", y: "2", width: "20", height: "20", rx: "1" }),
|
|
8618
|
-
/* @__PURE__ */ jsx("line", { x1: "2", y1: "10", x2: "22", y2: "10" }),
|
|
8619
|
-
/* @__PURE__ */ jsx("line", { x1: "10", y1: "2", x2: "10", y2: "22" })
|
|
8693
|
+
] }),
|
|
8694
|
+
/* @__PURE__ */ jsxs(ThumbStrip, { children: [
|
|
8695
|
+
/* @__PURE__ */ jsx(ThumbScroll, { children: images.filter((img) => img.category !== "Floorplan").map((img) => {
|
|
8696
|
+
const actualIndex = images.indexOf(img);
|
|
8697
|
+
return /* @__PURE__ */ jsx(Thumbnail2, { "data-active": !showVideo && carouselIndex === actualIndex, onClick: () => {
|
|
8698
|
+
stopAutoPlay();
|
|
8699
|
+
setShowVideo(false);
|
|
8700
|
+
setCarouselIndex(actualIndex);
|
|
8701
|
+
}, children: /* @__PURE__ */ jsx("img", { src: img.src, alt: img.title }) }, actualIndex);
|
|
8702
|
+
}) }),
|
|
8703
|
+
/* @__PURE__ */ jsx(ThumbDivider, {}),
|
|
8704
|
+
/* @__PURE__ */ jsxs(FixedButtons, { children: [
|
|
8705
|
+
floorplanIndex !== -1 && /* @__PURE__ */ jsxs(FixedBtn, { $active: isFloorplan, onClick: () => {
|
|
8706
|
+
stopAutoPlay();
|
|
8707
|
+
setShowVideo(false);
|
|
8708
|
+
setCarouselIndex(floorplanIndex);
|
|
8709
|
+
}, children: [
|
|
8710
|
+
/* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8711
|
+
/* @__PURE__ */ jsx("rect", { x: "2", y: "2", width: "20", height: "20", rx: "1" }),
|
|
8712
|
+
/* @__PURE__ */ jsx("line", { x1: "2", y1: "10", x2: "22", y2: "10" }),
|
|
8713
|
+
/* @__PURE__ */ jsx("line", { x1: "10", y1: "2", x2: "10", y2: "22" })
|
|
8714
|
+
] }),
|
|
8715
|
+
"Floor Plan"
|
|
8620
8716
|
] }),
|
|
8621
|
-
|
|
8622
|
-
|
|
8623
|
-
|
|
8624
|
-
|
|
8625
|
-
" Video"
|
|
8717
|
+
videoUrl && /* @__PURE__ */ jsxs(FixedBtn, { $active: showVideo, onClick: () => setShowVideo((p) => !p), children: [
|
|
8718
|
+
/* @__PURE__ */ jsx(BiVideo, { size: 16 }),
|
|
8719
|
+
" Video"
|
|
8720
|
+
] })
|
|
8626
8721
|
] })
|
|
8627
|
-
] })
|
|
8628
|
-
|
|
8629
|
-
|
|
8630
|
-
|
|
8631
|
-
|
|
8632
|
-
|
|
8633
|
-
|
|
8634
|
-
|
|
8635
|
-
}
|
|
8636
|
-
|
|
8722
|
+
] }),
|
|
8723
|
+
filteredCategories.length > 0 && /* @__PURE__ */ jsx(CategoryRow, { children: filteredCategories.map((cat, i) => {
|
|
8724
|
+
const isActive = carouselIndex >= cat.startIndex && (i === filteredCategories.length - 1 || carouselIndex < filteredCategories[i + 1].startIndex);
|
|
8725
|
+
return /* @__PURE__ */ jsx("button", { type: "button", "data-active": isActive, onClick: () => {
|
|
8726
|
+
stopAutoPlay();
|
|
8727
|
+
setShowVideo(false);
|
|
8728
|
+
setCarouselIndex(cat.startIndex);
|
|
8729
|
+
}, children: cat.name }, cat.name);
|
|
8730
|
+
}) })
|
|
8731
|
+
] })
|
|
8637
8732
|
] }),
|
|
8638
8733
|
featuresSlot,
|
|
8639
8734
|
!hideMap && /* @__PURE__ */ jsxs(MapPanel, { children: [
|
|
@@ -8693,7 +8788,130 @@ function GalleryMapSection({
|
|
|
8693
8788
|
] }),
|
|
8694
8789
|
/* @__PURE__ */ jsx(SuburbDesc, { children: "One of Sydney's most prestigious harbourside suburbs, consistently ranked among Australia's highest-value residential markets. Strong capital growth driven by limited supply, heritage conservation overlays, and international buyer demand." })
|
|
8695
8790
|
] }),
|
|
8696
|
-
showFullMap && !hideMap && /* @__PURE__ */ jsx(FullMapPopup, { onClose: () => setShowFullMap(false), mapUrl: resolvedMapUrl })
|
|
8791
|
+
showFullMap && !hideMap && /* @__PURE__ */ jsx(FullMapPopup, { onClose: () => setShowFullMap(false), mapUrl: resolvedMapUrl }),
|
|
8792
|
+
showFullVideo && videoUrl && /* @__PURE__ */ jsxs(FullVideoOverlay, { onClick: () => setShowFullVideo(false), children: [
|
|
8793
|
+
/* @__PURE__ */ jsx(FullVideoClose, { onClick: () => setShowFullVideo(false), "aria-label": "Close video", children: "\u2715" }),
|
|
8794
|
+
/* @__PURE__ */ jsx(
|
|
8795
|
+
"video",
|
|
8796
|
+
{
|
|
8797
|
+
src: videoUrl,
|
|
8798
|
+
autoPlay: true,
|
|
8799
|
+
controls: true,
|
|
8800
|
+
playsInline: true,
|
|
8801
|
+
controlsList: "nodownload",
|
|
8802
|
+
disablePictureInPicture: true,
|
|
8803
|
+
onClick: (e) => e.stopPropagation(),
|
|
8804
|
+
onContextMenu: (e) => e.preventDefault()
|
|
8805
|
+
}
|
|
8806
|
+
)
|
|
8807
|
+
] })
|
|
8808
|
+
] });
|
|
8809
|
+
}
|
|
8810
|
+
function StackedGallery({ images, onPhotoClick }) {
|
|
8811
|
+
const [expanded, setExpanded] = useState(false);
|
|
8812
|
+
const [cardH, setCardH] = useState(200);
|
|
8813
|
+
const wrapRef = useRef(null);
|
|
8814
|
+
useEffect(() => {
|
|
8815
|
+
const el = wrapRef.current;
|
|
8816
|
+
if (!el) return;
|
|
8817
|
+
const measure = () => {
|
|
8818
|
+
const w = el.clientWidth;
|
|
8819
|
+
if (w > 0) setCardH(Math.round(w * 9 / 16));
|
|
8820
|
+
};
|
|
8821
|
+
measure();
|
|
8822
|
+
const ro = new ResizeObserver(measure);
|
|
8823
|
+
ro.observe(el);
|
|
8824
|
+
return () => ro.disconnect();
|
|
8825
|
+
}, []);
|
|
8826
|
+
useEffect(() => {
|
|
8827
|
+
const el = wrapRef.current;
|
|
8828
|
+
if (!el) return;
|
|
8829
|
+
const update = () => {
|
|
8830
|
+
const nav = document.getElementById("loaf-header");
|
|
8831
|
+
let topPx = nav ? nav.getBoundingClientRect().bottom : 56;
|
|
8832
|
+
const header = document.querySelector(".trade-top-sticky");
|
|
8833
|
+
if (header) {
|
|
8834
|
+
const b = header.getBoundingClientRect().bottom;
|
|
8835
|
+
if (b > 0 && b < window.innerHeight * 0.5) topPx = Math.max(topPx, b);
|
|
8836
|
+
}
|
|
8837
|
+
el.style.setProperty("--gallery-showless-top", `${Math.round(topPx) + 12}px`);
|
|
8838
|
+
};
|
|
8839
|
+
update();
|
|
8840
|
+
window.addEventListener("scroll", update, { passive: true });
|
|
8841
|
+
window.addEventListener("resize", update);
|
|
8842
|
+
return () => {
|
|
8843
|
+
window.removeEventListener("scroll", update);
|
|
8844
|
+
window.removeEventListener("resize", update);
|
|
8845
|
+
};
|
|
8846
|
+
}, []);
|
|
8847
|
+
const collapse = () => {
|
|
8848
|
+
setExpanded(false);
|
|
8849
|
+
requestAnimationFrame(() => {
|
|
8850
|
+
const wrap = wrapRef.current;
|
|
8851
|
+
const panel = wrap?.parentElement;
|
|
8852
|
+
if (!panel) return;
|
|
8853
|
+
const nav = document.getElementById("loaf-header");
|
|
8854
|
+
let offset = nav ? nav.getBoundingClientRect().bottom : 56;
|
|
8855
|
+
const header = document.querySelector(".trade-top-sticky");
|
|
8856
|
+
if (header) {
|
|
8857
|
+
const b = header.getBoundingClientRect().bottom;
|
|
8858
|
+
if (b > 0 && b < window.innerHeight * 0.5) offset = Math.max(offset, b);
|
|
8859
|
+
}
|
|
8860
|
+
const top = panel.getBoundingClientRect().top + window.scrollY - offset - 64;
|
|
8861
|
+
window.scrollTo({ top: Math.max(0, top), behavior: "auto" });
|
|
8862
|
+
});
|
|
8863
|
+
};
|
|
8864
|
+
const n = images.length;
|
|
8865
|
+
const PEEK = 12;
|
|
8866
|
+
const INSET = 10;
|
|
8867
|
+
const GAP = 14;
|
|
8868
|
+
const MAX_BEHIND = 2;
|
|
8869
|
+
const collapsedHeight = cardH + MAX_BEHIND * PEEK;
|
|
8870
|
+
const expandedHeight = n * cardH + (n - 1) * GAP;
|
|
8871
|
+
return /* @__PURE__ */ jsxs(StackWrap, { ref: wrapRef, children: [
|
|
8872
|
+
expanded && /* @__PURE__ */ jsxs(ShowLessBtn, { type: "button", onClick: collapse, children: [
|
|
8873
|
+
/* @__PURE__ */ jsx(BiChevronUp, { size: 16 }),
|
|
8874
|
+
" Show less"
|
|
8875
|
+
] }),
|
|
8876
|
+
/* @__PURE__ */ jsx(StackViewport, { style: { height: (expanded ? expandedHeight : collapsedHeight) || void 0 }, children: images.map((img, i) => {
|
|
8877
|
+
const depth = Math.min(i, MAX_BEHIND);
|
|
8878
|
+
const top = expanded ? i * (cardH + GAP) : depth * PEEK;
|
|
8879
|
+
const side = expanded ? 0 : depth * INSET;
|
|
8880
|
+
const hidden = !expanded && i > MAX_BEHIND;
|
|
8881
|
+
return /* @__PURE__ */ jsxs(
|
|
8882
|
+
StackCard,
|
|
8883
|
+
{
|
|
8884
|
+
style: {
|
|
8885
|
+
top,
|
|
8886
|
+
left: side,
|
|
8887
|
+
right: side,
|
|
8888
|
+
height: cardH,
|
|
8889
|
+
zIndex: expanded ? 1 : n - i,
|
|
8890
|
+
opacity: hidden ? 0 : 1,
|
|
8891
|
+
pointerEvents: hidden ? "none" : "auto"
|
|
8892
|
+
},
|
|
8893
|
+
onClick: () => {
|
|
8894
|
+
if (!expanded) setExpanded(true);
|
|
8895
|
+
else onPhotoClick?.(i);
|
|
8896
|
+
},
|
|
8897
|
+
children: [
|
|
8898
|
+
/* @__PURE__ */ jsx("img", { src: img.src, alt: img.title, draggable: false }),
|
|
8899
|
+
/* @__PURE__ */ jsxs(StackCaption, { children: [
|
|
8900
|
+
/* @__PURE__ */ jsx("h4", { children: img.title }),
|
|
8901
|
+
img.subtitle && /* @__PURE__ */ jsx("p", { children: img.subtitle })
|
|
8902
|
+
] }),
|
|
8903
|
+
!expanded && i === 0 && n > 1 && /* @__PURE__ */ jsxs(StackBadge, { children: [
|
|
8904
|
+
/* @__PURE__ */ jsx(BiImages, { size: 13 }),
|
|
8905
|
+
" ",
|
|
8906
|
+
n,
|
|
8907
|
+
" photos ",
|
|
8908
|
+
/* @__PURE__ */ jsx(BiChevronDown, { size: 14 })
|
|
8909
|
+
] })
|
|
8910
|
+
]
|
|
8911
|
+
},
|
|
8912
|
+
i
|
|
8913
|
+
);
|
|
8914
|
+
}) })
|
|
8697
8915
|
] });
|
|
8698
8916
|
}
|
|
8699
8917
|
function FullMapPopup({ onClose, mapUrl }) {
|
|
@@ -8757,6 +8975,9 @@ var Row = styled9.div`
|
|
|
8757
8975
|
overflow: hidden;
|
|
8758
8976
|
box-sizing: border-box;
|
|
8759
8977
|
width: 100%;
|
|
8978
|
+
/* Mobile uses the stacked gallery whose "Show less" is position:sticky — overflow:hidden
|
|
8979
|
+
on any ancestor breaks sticky, so open it up here (no carousel to clip on mobile). */
|
|
8980
|
+
@media (max-width: 768px) { overflow: visible; }
|
|
8760
8981
|
`;
|
|
8761
8982
|
var PanelBase = styled9.div`
|
|
8762
8983
|
background: #111111;
|
|
@@ -8775,7 +8996,7 @@ var PanelHeader = styled9.div`
|
|
|
8775
8996
|
border-bottom: 1px solid rgba(255,255,255,0.1);
|
|
8776
8997
|
h3 { margin: 0; font-size: 1rem; font-weight: 600; display: flex; align-items: center; gap: 0.5rem; }
|
|
8777
8998
|
button {
|
|
8778
|
-
background: transparent; border: 1px solid #
|
|
8999
|
+
background: transparent; border: 1px solid #E6C87E; color: #E6C87E;
|
|
8779
9000
|
padding: 0.35rem 0.75rem; border-radius: 4px; font-size: 0.75rem;
|
|
8780
9001
|
cursor: pointer; display: flex; align-items: center; gap: 0.35rem;
|
|
8781
9002
|
}
|
|
@@ -8783,6 +9004,90 @@ var PanelHeader = styled9.div`
|
|
|
8783
9004
|
`;
|
|
8784
9005
|
var GalleryPanel = styled9(PanelBase)`
|
|
8785
9006
|
min-width: 0; overflow: hidden;
|
|
9007
|
+
/* Allow the sticky "Show less" to pin against the viewport on mobile. */
|
|
9008
|
+
@media (max-width: 768px) { overflow: visible; }
|
|
9009
|
+
`;
|
|
9010
|
+
var StackWrap = styled9.div`
|
|
9011
|
+
position: relative;
|
|
9012
|
+
width: 100%;
|
|
9013
|
+
`;
|
|
9014
|
+
var StackViewport = styled9.div`
|
|
9015
|
+
position: relative;
|
|
9016
|
+
width: 100%;
|
|
9017
|
+
transition: height 0.45s cubic-bezier(0.22, 1, 0.36, 1);
|
|
9018
|
+
`;
|
|
9019
|
+
var StackCard = styled9.div`
|
|
9020
|
+
position: absolute;
|
|
9021
|
+
border-radius: 14px;
|
|
9022
|
+
overflow: hidden;
|
|
9023
|
+
cursor: pointer;
|
|
9024
|
+
background: #0c0c0c;
|
|
9025
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
|
|
9026
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
9027
|
+
transition: top 0.45s cubic-bezier(0.22, 1, 0.36, 1),
|
|
9028
|
+
left 0.45s cubic-bezier(0.22, 1, 0.36, 1),
|
|
9029
|
+
right 0.45s cubic-bezier(0.22, 1, 0.36, 1),
|
|
9030
|
+
opacity 0.3s ease;
|
|
9031
|
+
img {
|
|
9032
|
+
width: 100%;
|
|
9033
|
+
height: 100%;
|
|
9034
|
+
object-fit: cover;
|
|
9035
|
+
display: block;
|
|
9036
|
+
user-select: none;
|
|
9037
|
+
-webkit-user-drag: none;
|
|
9038
|
+
}
|
|
9039
|
+
`;
|
|
9040
|
+
var StackCaption = styled9.div`
|
|
9041
|
+
position: absolute;
|
|
9042
|
+
bottom: 0;
|
|
9043
|
+
left: 0;
|
|
9044
|
+
right: 0;
|
|
9045
|
+
padding: 0.9rem 1rem;
|
|
9046
|
+
background: linear-gradient(to top, rgba(0, 0, 0, 0.82), transparent);
|
|
9047
|
+
pointer-events: none;
|
|
9048
|
+
h4 { margin: 0; font-size: 0.92rem; font-weight: 600; color: #fff; }
|
|
9049
|
+
p { margin: 0.2rem 0 0; font-size: 0.72rem; color: rgba(255, 255, 255, 0.72); }
|
|
9050
|
+
`;
|
|
9051
|
+
var StackBadge = styled9.div`
|
|
9052
|
+
position: absolute;
|
|
9053
|
+
top: 0.65rem;
|
|
9054
|
+
right: 0.65rem;
|
|
9055
|
+
display: flex;
|
|
9056
|
+
align-items: center;
|
|
9057
|
+
gap: 0.3rem;
|
|
9058
|
+
padding: 0.32rem 0.6rem;
|
|
9059
|
+
border-radius: 999px;
|
|
9060
|
+
background: rgba(0, 0, 0, 0.55);
|
|
9061
|
+
backdrop-filter: blur(6px);
|
|
9062
|
+
border: 1px solid rgba(255, 255, 255, 0.16);
|
|
9063
|
+
color: #fff;
|
|
9064
|
+
font-size: 0.72rem;
|
|
9065
|
+
font-weight: 600;
|
|
9066
|
+
`;
|
|
9067
|
+
var ShowLessBtn = styled9.button`
|
|
9068
|
+
/* Starts above the first image (right-aligned). As you scroll it pins just below the
|
|
9069
|
+
page's tab bar (--gallery-showless-top, measured live) and rides along; sticky
|
|
9070
|
+
auto-releases at the bottom of the gallery, so it stops at the last image's bottom-right. */
|
|
9071
|
+
position: sticky;
|
|
9072
|
+
top: var(--gallery-showless-top, 116px);
|
|
9073
|
+
z-index: 9;
|
|
9074
|
+
display: flex;
|
|
9075
|
+
width: fit-content;
|
|
9076
|
+
align-items: center;
|
|
9077
|
+
justify-content: center;
|
|
9078
|
+
gap: 0.3rem;
|
|
9079
|
+
margin: 0 0 0.75rem auto;
|
|
9080
|
+
padding: 0.45rem 1rem;
|
|
9081
|
+
border-radius: 999px;
|
|
9082
|
+
background: rgba(20, 20, 24, 0.92);
|
|
9083
|
+
backdrop-filter: blur(8px);
|
|
9084
|
+
border: 1px solid rgba(255, 255, 255, 0.18);
|
|
9085
|
+
color: #fff;
|
|
9086
|
+
font-size: 0.78rem;
|
|
9087
|
+
font-weight: 600;
|
|
9088
|
+
cursor: pointer;
|
|
9089
|
+
transition: background 0.15s ease, border-color 0.15s ease;
|
|
9090
|
+
&:hover { background: rgba(40, 40, 46, 0.95); border-color: #E6C87E; color: #E6C87E; }
|
|
8786
9091
|
`;
|
|
8787
9092
|
var Carousel = styled9.div`
|
|
8788
9093
|
position: relative; width: 100%; overflow: hidden; border-radius: 8px;
|
|
@@ -8829,7 +9134,7 @@ var Thumbnail2 = styled9.div`
|
|
|
8829
9134
|
min-width: 60px; height: 45px; border-radius: 4px; overflow: hidden;
|
|
8830
9135
|
cursor: pointer; border: 2px solid transparent; opacity: 0.6;
|
|
8831
9136
|
transition: all 0.2s ease; flex-shrink: 0;
|
|
8832
|
-
&[data-active='true'] { border-color: #
|
|
9137
|
+
&[data-active='true'] { border-color: #E6C87E; opacity: 1; }
|
|
8833
9138
|
img { width: 100%; height: 100%; object-fit: cover; }
|
|
8834
9139
|
`;
|
|
8835
9140
|
var ThumbDivider = styled9.div`
|
|
@@ -8843,9 +9148,9 @@ var FixedBtn = styled9.button`
|
|
|
8843
9148
|
height: 45px; padding: 0 0.75rem; border-radius: 4px;
|
|
8844
9149
|
display: flex; align-items: center; justify-content: center; gap: 0.4rem;
|
|
8845
9150
|
cursor: pointer; transition: all 0.2s ease;
|
|
8846
|
-
border: 1px solid ${(p) => p.$active ? "#
|
|
9151
|
+
border: 1px solid ${(p) => p.$active ? "#E6C87E" : "rgba(255,255,255,0.25)"};
|
|
8847
9152
|
background: ${(p) => p.$active ? "rgba(212,175,55,0.15)" : "rgba(255,255,255,0.06)"};
|
|
8848
|
-
color: ${(p) => p.$active ? "#
|
|
9153
|
+
color: ${(p) => p.$active ? "#E6C87E" : "rgba(255,255,255,0.7)"};
|
|
8849
9154
|
font-size: 0.75rem; font-weight: 500; letter-spacing: 0.02em; white-space: nowrap;
|
|
8850
9155
|
`;
|
|
8851
9156
|
var CategoryRow = styled9.div`
|
|
@@ -8858,7 +9163,7 @@ var CategoryRow = styled9.div`
|
|
|
8858
9163
|
font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease;
|
|
8859
9164
|
flex-shrink: 0; white-space: nowrap;
|
|
8860
9165
|
}
|
|
8861
|
-
button[data-active='true'] { background: rgba(212,175,55,0.2); border-color: #
|
|
9166
|
+
button[data-active='true'] { background: rgba(212,175,55,0.2); border-color: #E6C87E; color: #E6C87E; }
|
|
8862
9167
|
`;
|
|
8863
9168
|
var MapPanel = styled9(PanelBase)`
|
|
8864
9169
|
min-height: 350px; padding: 1.5rem;
|
|
@@ -8875,7 +9180,7 @@ var SuburbProfilePanel = styled9(PanelBase)`
|
|
|
8875
9180
|
`;
|
|
8876
9181
|
var SuburbProfileTitle = styled9.div`
|
|
8877
9182
|
font-size: 0.65rem;
|
|
8878
|
-
color: #
|
|
9183
|
+
color: #E6C87E;
|
|
8879
9184
|
text-transform: uppercase;
|
|
8880
9185
|
letter-spacing: 0.1em;
|
|
8881
9186
|
font-weight: 600;
|
|
@@ -8927,6 +9232,44 @@ var FullMapOverlay = styled9.div`
|
|
|
8927
9232
|
justify-content: center;
|
|
8928
9233
|
backdrop-filter: blur(4px);
|
|
8929
9234
|
`;
|
|
9235
|
+
var FullVideoOverlay = styled9.div`
|
|
9236
|
+
position: fixed;
|
|
9237
|
+
inset: 0;
|
|
9238
|
+
background: rgba(0, 0, 0, 0.92);
|
|
9239
|
+
z-index: 10000;
|
|
9240
|
+
display: flex;
|
|
9241
|
+
align-items: center;
|
|
9242
|
+
justify-content: center;
|
|
9243
|
+
padding: 1rem;
|
|
9244
|
+
video {
|
|
9245
|
+
max-width: 100%;
|
|
9246
|
+
max-height: 100%;
|
|
9247
|
+
width: auto;
|
|
9248
|
+
height: auto;
|
|
9249
|
+
border-radius: 10px;
|
|
9250
|
+
background: #000;
|
|
9251
|
+
}
|
|
9252
|
+
`;
|
|
9253
|
+
var FullVideoClose = styled9.button`
|
|
9254
|
+
position: absolute;
|
|
9255
|
+
top: max(1rem, env(safe-area-inset-top, 0px));
|
|
9256
|
+
right: 1rem;
|
|
9257
|
+
z-index: 1;
|
|
9258
|
+
width: 40px;
|
|
9259
|
+
height: 40px;
|
|
9260
|
+
border-radius: 50%;
|
|
9261
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
9262
|
+
background: rgba(0, 0, 0, 0.55);
|
|
9263
|
+
backdrop-filter: blur(6px);
|
|
9264
|
+
color: #fff;
|
|
9265
|
+
font-size: 1.1rem;
|
|
9266
|
+
line-height: 1;
|
|
9267
|
+
cursor: pointer;
|
|
9268
|
+
display: flex;
|
|
9269
|
+
align-items: center;
|
|
9270
|
+
justify-content: center;
|
|
9271
|
+
&:hover { background: rgba(40, 40, 46, 0.9); }
|
|
9272
|
+
`;
|
|
8930
9273
|
var FullMapPanel = styled9.div`
|
|
8931
9274
|
background: #111;
|
|
8932
9275
|
border: 1px solid rgba(255,255,255,0.08);
|
|
@@ -9506,6 +9849,9 @@ var GallerySpecLeft = styled9.div`
|
|
|
9506
9849
|
display: flex;
|
|
9507
9850
|
flex-direction: column;
|
|
9508
9851
|
gap: 0.75rem;
|
|
9852
|
+
/* Don't clip the stacked gallery's sticky "Show less" on mobile (overflow:hidden on an
|
|
9853
|
+
ancestor disables position:sticky). */
|
|
9854
|
+
@media (max-width: 768px) { overflow: visible; }
|
|
9509
9855
|
`;
|
|
9510
9856
|
var AssetBentoNarratives = styled9.div`
|
|
9511
9857
|
display: grid;
|
|
@@ -9598,7 +9944,7 @@ var TokenDetailsCard = styled9.div`
|
|
|
9598
9944
|
`;
|
|
9599
9945
|
var TokenDetailsTitle = styled9.div`
|
|
9600
9946
|
font-size: 0.65rem;
|
|
9601
|
-
color: #
|
|
9947
|
+
color: #E6C87E;
|
|
9602
9948
|
text-transform: uppercase;
|
|
9603
9949
|
letter-spacing: 0.12em;
|
|
9604
9950
|
font-weight: 600;
|
|
@@ -9645,7 +9991,7 @@ var CopyBtn = styled9.button`
|
|
|
9645
9991
|
var DocLinkBtn = styled9.button`
|
|
9646
9992
|
background: none;
|
|
9647
9993
|
border: none;
|
|
9648
|
-
color: #
|
|
9994
|
+
color: #E6C87E;
|
|
9649
9995
|
cursor: pointer;
|
|
9650
9996
|
padding: 0;
|
|
9651
9997
|
font-size: inherit;
|
|
@@ -9683,7 +10029,7 @@ var StatsRowSection = styled9.div`
|
|
|
9683
10029
|
`;
|
|
9684
10030
|
var StatsRowLabel = styled9.div`
|
|
9685
10031
|
font-size: 0.65rem;
|
|
9686
|
-
color: #
|
|
10032
|
+
color: #E6C87E;
|
|
9687
10033
|
text-transform: uppercase;
|
|
9688
10034
|
letter-spacing: 0.12em;
|
|
9689
10035
|
font-weight: 600;
|
|
@@ -9717,14 +10063,13 @@ var StatsHCellLabel = styled9.span`
|
|
|
9717
10063
|
var StatsHCellValue = styled9.span`
|
|
9718
10064
|
font-size: 0.92rem;
|
|
9719
10065
|
font-weight: 500;
|
|
9720
|
-
color: ${(p) => p.$gold ? "#
|
|
10066
|
+
color: ${(p) => p.$gold ? "#E6C87E" : "#fff"};
|
|
9721
10067
|
font-variant-numeric: tabular-nums;
|
|
9722
10068
|
`;
|
|
9723
10069
|
var StatsTabbedCard = styled9.div`
|
|
9724
10070
|
background: #111111;
|
|
9725
10071
|
border: 1px solid rgba(255,255,255,0.1);
|
|
9726
10072
|
border-radius: 12px;
|
|
9727
|
-
max-width: 400px;
|
|
9728
10073
|
`;
|
|
9729
10074
|
var StatsTabBar = styled9.div`
|
|
9730
10075
|
display: flex;
|
|
@@ -9741,10 +10086,10 @@ var StatsTab = styled9.button`
|
|
|
9741
10086
|
letter-spacing: 0.1em;
|
|
9742
10087
|
cursor: pointer;
|
|
9743
10088
|
transition: color 0.15s, border-color 0.15s;
|
|
9744
|
-
color: ${(p) => p.$active ? "#
|
|
9745
|
-
border-bottom: 2px solid ${(p) => p.$active ? "#
|
|
10089
|
+
color: ${(p) => p.$active ? "#E6C87E" : "rgba(255,255,255,0.35)"};
|
|
10090
|
+
border-bottom: 2px solid ${(p) => p.$active ? "#E6C87E" : "transparent"};
|
|
9746
10091
|
margin-bottom: -1px;
|
|
9747
|
-
&:hover { color: ${(p) => p.$active ? "#
|
|
10092
|
+
&:hover { color: ${(p) => p.$active ? "#E6C87E" : "rgba(255,255,255,0.6)"}; }
|
|
9748
10093
|
`;
|
|
9749
10094
|
var StatsTabContent = styled9.div`
|
|
9750
10095
|
padding: 0.5rem 1.25rem 1.25rem;
|
|
@@ -9757,7 +10102,7 @@ var StatsColumn = styled9.div`
|
|
|
9757
10102
|
`;
|
|
9758
10103
|
var StatsColumnHeader = styled9.div`
|
|
9759
10104
|
font-size: 0.65rem;
|
|
9760
|
-
color: #
|
|
10105
|
+
color: #E6C87E;
|
|
9761
10106
|
text-transform: uppercase;
|
|
9762
10107
|
letter-spacing: 0.12em;
|
|
9763
10108
|
font-weight: 600;
|
|
@@ -9788,7 +10133,7 @@ var StatLabel = styled9.span`
|
|
|
9788
10133
|
var StatValue = styled9.span`
|
|
9789
10134
|
font-size: 0.88rem;
|
|
9790
10135
|
font-weight: 500;
|
|
9791
|
-
color: ${(p) => p.$gold ? "#
|
|
10136
|
+
color: ${(p) => p.$gold ? "#E6C87E" : "#fff"};
|
|
9792
10137
|
font-variant-numeric: tabular-nums;
|
|
9793
10138
|
`;
|
|
9794
10139
|
var NarrativeCard = styled9.div`
|
|
@@ -9811,7 +10156,7 @@ var NarrativeIcon = styled9.div`
|
|
|
9811
10156
|
display: flex;
|
|
9812
10157
|
align-items: center;
|
|
9813
10158
|
justify-content: center;
|
|
9814
|
-
color: #
|
|
10159
|
+
color: #E6C87E;
|
|
9815
10160
|
flex-shrink: 0;
|
|
9816
10161
|
`;
|
|
9817
10162
|
var NarrativeTitle = styled9.div`
|
|
@@ -9853,7 +10198,7 @@ var TimelineDot = styled9.div`
|
|
|
9853
10198
|
width: 8px;
|
|
9854
10199
|
height: 8px;
|
|
9855
10200
|
border-radius: 50%;
|
|
9856
|
-
background: ${(p) => p.$active ? "#
|
|
10201
|
+
background: ${(p) => p.$active ? "#E6C87E" : "rgba(255,255,255,0.15)"};
|
|
9857
10202
|
border: ${(p) => p.$active ? "2px solid rgba(212,175,55,0.4)" : "none"};
|
|
9858
10203
|
justify-self: center;
|
|
9859
10204
|
`;
|
|
@@ -9876,7 +10221,7 @@ var TimelinePriceWrap = styled9.div`
|
|
|
9876
10221
|
var TimelinePrice = styled9.span`
|
|
9877
10222
|
font-size: 0.85rem;
|
|
9878
10223
|
font-weight: 600;
|
|
9879
|
-
color: ${(p) => p.$gold ? "#
|
|
10224
|
+
color: ${(p) => p.$gold ? "#E6C87E" : "#fff"};
|
|
9880
10225
|
font-variant-numeric: tabular-nums;
|
|
9881
10226
|
`;
|
|
9882
10227
|
var FeaturesPanel = styled9.div`
|
|
@@ -9977,7 +10322,7 @@ var SecurityValue = styled9.span`
|
|
|
9977
10322
|
`;
|
|
9978
10323
|
var SecurityDocLink = styled9.a`
|
|
9979
10324
|
font-size: 0.82rem;
|
|
9980
|
-
color: #
|
|
10325
|
+
color: #E6C87E;
|
|
9981
10326
|
font-weight: 600;
|
|
9982
10327
|
text-decoration: none;
|
|
9983
10328
|
cursor: pointer;
|
|
@@ -9991,7 +10336,7 @@ var DividendHistoryBtn = styled9.button`
|
|
|
9991
10336
|
padding: 0.5rem 0;
|
|
9992
10337
|
background: none;
|
|
9993
10338
|
border: none;
|
|
9994
|
-
color: #
|
|
10339
|
+
color: #E6C87E;
|
|
9995
10340
|
font-size: 0.78rem;
|
|
9996
10341
|
font-weight: 500;
|
|
9997
10342
|
cursor: pointer;
|
|
@@ -10107,7 +10452,7 @@ var STATUS_BG = {
|
|
|
10107
10452
|
var STATUS_COLOR = {
|
|
10108
10453
|
active: "#0ecb81",
|
|
10109
10454
|
rejected: "#f6465d",
|
|
10110
|
-
pending: "#
|
|
10455
|
+
pending: "#E6C87E",
|
|
10111
10456
|
historical: "#3861fb",
|
|
10112
10457
|
expired: "rgba(255,255,255,0.7)"
|
|
10113
10458
|
};
|
|
@@ -10128,7 +10473,7 @@ function PropertyOffers({ offers, totalShares }) {
|
|
|
10128
10473
|
"button",
|
|
10129
10474
|
{
|
|
10130
10475
|
onClick: () => alert("Coming soon..."),
|
|
10131
|
-
className: "rounded-md px-6 py-[0.65rem] font-semibold text-[0.9rem] cursor-pointer transition-all duration-200 bg-[var(--color-accent,#
|
|
10476
|
+
className: "rounded-md px-6 py-[0.65rem] font-semibold text-[0.9rem] cursor-pointer transition-all duration-200 bg-[var(--color-accent,#E6C87E)] border-none text-black hover:bg-[var(--color-accent-hover,#F2D898)] hover:-translate-y-px",
|
|
10132
10477
|
children: "Make Offer"
|
|
10133
10478
|
}
|
|
10134
10479
|
),
|
|
@@ -10136,7 +10481,7 @@ function PropertyOffers({ offers, totalShares }) {
|
|
|
10136
10481
|
"button",
|
|
10137
10482
|
{
|
|
10138
10483
|
onClick: () => alert("Coming soon..."),
|
|
10139
|
-
className: "rounded-md px-6 py-[0.65rem] font-semibold text-[0.9rem] cursor-pointer transition-all duration-200 bg-transparent border border-[var(--color-accent,#
|
|
10484
|
+
className: "rounded-md px-6 py-[0.65rem] font-semibold text-[0.9rem] cursor-pointer transition-all duration-200 bg-transparent border border-[var(--color-accent,#E6C87E)] text-[var(--color-accent,#E6C87E)] hover:bg-[rgba(240,185,11,0.12)] hover:-translate-y-px",
|
|
10140
10485
|
children: "Enquire"
|
|
10141
10486
|
}
|
|
10142
10487
|
)
|
|
@@ -10180,7 +10525,7 @@ function PropertyOffers({ offers, totalShares }) {
|
|
|
10180
10525
|
"button",
|
|
10181
10526
|
{
|
|
10182
10527
|
onClick: () => alert(`Voted for offer: ${offer.price} by ${offer.buyer}`),
|
|
10183
|
-
className: "bg-[var(--color-accent,#
|
|
10528
|
+
className: "bg-[var(--color-accent,#E6C87E)] text-black border-none rounded-md px-5 py-[0.45rem] font-semibold text-[0.78rem] uppercase cursor-pointer transition-all duration-200 hover:bg-[var(--color-accent-hover,#F2D898)] hover:-translate-y-px",
|
|
10184
10529
|
children: "Vote"
|
|
10185
10530
|
}
|
|
10186
10531
|
)
|
|
@@ -10603,9 +10948,9 @@ var FilterButtonsContainer = styled9.div`
|
|
|
10603
10948
|
}
|
|
10604
10949
|
`;
|
|
10605
10950
|
var FilterButton = styled9.button`
|
|
10606
|
-
background-color: ${(props) => props.$active ? "var(--color-accent, #
|
|
10951
|
+
background-color: ${(props) => props.$active ? "var(--color-accent, #E6C87E)" : "transparent"};
|
|
10607
10952
|
color: ${(props) => props.$active ? "#000" : "#fff"};
|
|
10608
|
-
border: 1px solid var(--color-accent, #
|
|
10953
|
+
border: 1px solid var(--color-accent, #E6C87E);
|
|
10609
10954
|
border-radius: 4px;
|
|
10610
10955
|
padding: 0.4rem 0.8rem;
|
|
10611
10956
|
font-size: 0.9rem;
|
|
@@ -10613,7 +10958,7 @@ var FilterButton = styled9.button`
|
|
|
10613
10958
|
transition: all 0.2s;
|
|
10614
10959
|
|
|
10615
10960
|
&:hover {
|
|
10616
|
-
background-color: ${(props) => props.$active ? "var(--color-accent, #
|
|
10961
|
+
background-color: ${(props) => props.$active ? "var(--color-accent, #E6C87E)" : "rgba(240, 185, 11, 0.1)"};
|
|
10617
10962
|
}
|
|
10618
10963
|
|
|
10619
10964
|
@media (max-width: 768px) {
|
|
@@ -10724,7 +11069,7 @@ var TypeBadge2 = styled9.span`
|
|
|
10724
11069
|
background-color: ${(props) => {
|
|
10725
11070
|
switch (props.$type) {
|
|
10726
11071
|
case "Listed":
|
|
10727
|
-
return "var(--color-accent, #
|
|
11072
|
+
return "var(--color-accent, #E6C87E)";
|
|
10728
11073
|
case "Sale":
|
|
10729
11074
|
return "rgba(14, 203, 129, 0.15)";
|
|
10730
11075
|
case "Leased":
|
|
@@ -10936,7 +11281,7 @@ var ComingSoonBadge = styled9.span`
|
|
|
10936
11281
|
margin-left: auto;
|
|
10937
11282
|
padding: 0.25rem 0.5rem;
|
|
10938
11283
|
background: rgba(212, 175, 55, 0.1);
|
|
10939
|
-
color: #
|
|
11284
|
+
color: #E6C87E;
|
|
10940
11285
|
border-radius: 0.25rem;
|
|
10941
11286
|
font-size: 0.7rem;
|
|
10942
11287
|
font-weight: 500;
|
|
@@ -11073,8 +11418,8 @@ var SpotsLeft = styled9.span`
|
|
|
11073
11418
|
var BookButton = styled9.button`
|
|
11074
11419
|
padding: 0.4rem 1rem;
|
|
11075
11420
|
background: transparent;
|
|
11076
|
-
border: 1px solid var(--color-accent, #
|
|
11077
|
-
color: var(--color-accent, #
|
|
11421
|
+
border: 1px solid var(--color-accent, #E6C87E);
|
|
11422
|
+
color: var(--color-accent, #E6C87E);
|
|
11078
11423
|
border-radius: 4px;
|
|
11079
11424
|
font-size: 0.8rem;
|
|
11080
11425
|
font-weight: 600;
|
|
@@ -11135,8 +11480,8 @@ var SignInSub = styled9.div`
|
|
|
11135
11480
|
var SignInButton = styled9.button`
|
|
11136
11481
|
padding: 0.5rem 1.25rem;
|
|
11137
11482
|
background: transparent;
|
|
11138
|
-
border: 1px solid var(--color-accent, #
|
|
11139
|
-
color: var(--color-accent, #
|
|
11483
|
+
border: 1px solid var(--color-accent, #E6C87E);
|
|
11484
|
+
color: var(--color-accent, #E6C87E);
|
|
11140
11485
|
border-radius: 4px;
|
|
11141
11486
|
font-size: 0.8rem;
|
|
11142
11487
|
font-weight: 600;
|
|
@@ -11259,8 +11604,20 @@ var IPOAssetSelector = styled9.div`
|
|
|
11259
11604
|
|
|
11260
11605
|
@media (max-width: 768px) {
|
|
11261
11606
|
flex-wrap: nowrap;
|
|
11262
|
-
|
|
11263
|
-
|
|
11607
|
+
gap: 0.5rem;
|
|
11608
|
+
/* Curved ribbon extending down from the nav: the box stretches up UNDER the
|
|
11609
|
+
nav (negative margin) while the content is pushed back down (top padding),
|
|
11610
|
+
so the dark background runs all the way to the nav with no visible top edge.
|
|
11611
|
+
The nav has a higher z-index and covers the overhang. Inset to the nav's width. */
|
|
11612
|
+
margin: -2.25rem 0.25rem 0;
|
|
11613
|
+
padding: 3rem 0.9rem 0.75rem;
|
|
11614
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
11615
|
+
border-top: none;
|
|
11616
|
+
border-radius: 0 0 14px 14px;
|
|
11617
|
+
background: rgba(20, 24, 31, 0.97);
|
|
11618
|
+
backdrop-filter: blur(12px);
|
|
11619
|
+
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.35);
|
|
11620
|
+
&:hover { box-shadow: 0 10px 24px rgba(0, 0, 0, 0.35); border-color: rgba(255, 255, 255, 0.08); }
|
|
11264
11621
|
}
|
|
11265
11622
|
`;
|
|
11266
11623
|
var AssetThumbnail = styled9.img`
|
|
@@ -11272,9 +11629,9 @@ var AssetThumbnail = styled9.img`
|
|
|
11272
11629
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
11273
11630
|
|
|
11274
11631
|
@media (max-width: 768px) {
|
|
11275
|
-
width:
|
|
11276
|
-
height:
|
|
11277
|
-
border-radius:
|
|
11632
|
+
width: 42px;
|
|
11633
|
+
height: 42px;
|
|
11634
|
+
border-radius: 8px;
|
|
11278
11635
|
}
|
|
11279
11636
|
`;
|
|
11280
11637
|
var AssetSelectorDropdown = styled9.div`
|
|
@@ -11305,7 +11662,7 @@ var AssetName = styled9.div`
|
|
|
11305
11662
|
}
|
|
11306
11663
|
|
|
11307
11664
|
@media (max-width: 768px) {
|
|
11308
|
-
font-size:
|
|
11665
|
+
font-size: 1.2rem;
|
|
11309
11666
|
overflow: hidden;
|
|
11310
11667
|
text-overflow: ellipsis;
|
|
11311
11668
|
white-space: nowrap;
|
|
@@ -11376,7 +11733,7 @@ var MetricLabel = styled9.span`
|
|
|
11376
11733
|
var MetricValue = styled9.span`
|
|
11377
11734
|
font-size: ${(p) => p.$secondary ? "0.95rem" : "1.25rem"};
|
|
11378
11735
|
font-weight: ${(p) => p.$secondary ? "600" : "700"};
|
|
11379
|
-
color: ${(p) => p.$accent ? "#
|
|
11736
|
+
color: ${(p) => p.$accent ? "#E6C87E" : p.$secondary ? "rgba(255,255,255,0.7)" : "#fff"};
|
|
11380
11737
|
|
|
11381
11738
|
@media (max-width: 768px) {
|
|
11382
11739
|
font-size: ${(p) => p.$secondary ? "0.85rem" : "1.05rem"};
|
|
@@ -11621,8 +11978,8 @@ function OfferingProgressCard({
|
|
|
11621
11978
|
] }) : ipoStarted ? /* @__PURE__ */ jsxs(StatusSpan, { $color: "#0ecb81", children: [
|
|
11622
11979
|
/* @__PURE__ */ jsx(StatusDot3, { $color: "#0ecb81", $pulse: true }),
|
|
11623
11980
|
"LIVE"
|
|
11624
|
-
] }) : /* @__PURE__ */ jsxs(StatusSpan, { $color: statusColor || "#
|
|
11625
|
-
/* @__PURE__ */ jsx(StatusDot3, { $color: statusColor || "#
|
|
11981
|
+
] }) : /* @__PURE__ */ jsxs(StatusSpan, { $color: statusColor || "#E6C87E", children: [
|
|
11982
|
+
/* @__PURE__ */ jsx(StatusDot3, { $color: statusColor || "#E6C87E" }),
|
|
11626
11983
|
statusLabel || "Preparing"
|
|
11627
11984
|
] }) })
|
|
11628
11985
|
] }),
|
|
@@ -11741,8 +12098,8 @@ function OfferingProgressCard({
|
|
|
11741
12098
|
" ",
|
|
11742
12099
|
"AEST"
|
|
11743
12100
|
] })
|
|
11744
|
-
] }) : /* @__PURE__ */ jsxs(StatusSpan, { $color: statusColor || "#
|
|
11745
|
-
/* @__PURE__ */ jsx(StatusDot3, { $color: statusColor || "#
|
|
12101
|
+
] }) : /* @__PURE__ */ jsxs(StatusSpan, { $color: statusColor || "#E6C87E", children: [
|
|
12102
|
+
/* @__PURE__ */ jsx(StatusDot3, { $color: statusColor || "#E6C87E", $pulse: true }),
|
|
11746
12103
|
isPrivateClient ? "PRE-OFFERING" : statusLabel || "PREPARING"
|
|
11747
12104
|
] }) })
|
|
11748
12105
|
] }),
|
|
@@ -11907,7 +12264,7 @@ var MetricLabel2 = styled9.div`
|
|
|
11907
12264
|
var MetricValue2 = styled9.div`
|
|
11908
12265
|
font-size: 1.5rem;
|
|
11909
12266
|
font-weight: 700;
|
|
11910
|
-
color: ${(p) => p.$accent ? "#
|
|
12267
|
+
color: ${(p) => p.$accent ? "#E6C87E" : "#fff"};
|
|
11911
12268
|
`;
|
|
11912
12269
|
var CountdownCenter = styled9.div`
|
|
11913
12270
|
text-align: center;
|
|
@@ -11933,7 +12290,7 @@ var CountdownNumber = styled9.span`
|
|
|
11933
12290
|
font-size: 2rem;
|
|
11934
12291
|
font-weight: 700;
|
|
11935
12292
|
font-family: monospace;
|
|
11936
|
-
color: #
|
|
12293
|
+
color: #E6C87E;
|
|
11937
12294
|
@media (max-width: 768px) {
|
|
11938
12295
|
font-size: 1.5rem;
|
|
11939
12296
|
}
|
|
@@ -11974,7 +12331,7 @@ var LiveLabel = styled9.div`
|
|
|
11974
12331
|
var LivePercent = styled9.div`
|
|
11975
12332
|
font-size: 2rem;
|
|
11976
12333
|
font-weight: 600;
|
|
11977
|
-
color: #
|
|
12334
|
+
color: #E6C87E;
|
|
11978
12335
|
display: flex;
|
|
11979
12336
|
align-items: center;
|
|
11980
12337
|
.arrow {
|
|
@@ -11988,7 +12345,7 @@ var UnitsValue = styled9.div`
|
|
|
11988
12345
|
font-size: clamp(1.25rem, 4vw, 1.75rem);
|
|
11989
12346
|
font-weight: 700;
|
|
11990
12347
|
white-space: nowrap;
|
|
11991
|
-
span { color: #
|
|
12348
|
+
span { color: #E6C87E; }
|
|
11992
12349
|
small { color: rgba(255,255,255,0.3); font-weight: 700; margin-left: 0.35rem; font-size: inherit; }
|
|
11993
12350
|
`;
|
|
11994
12351
|
var ProgressBarOuter = styled9.div`
|
|
@@ -12001,7 +12358,7 @@ var ProgressBarOuter = styled9.div`
|
|
|
12001
12358
|
`;
|
|
12002
12359
|
var ProgressBarInner = styled9.div`
|
|
12003
12360
|
height: 100%;
|
|
12004
|
-
background: linear-gradient(90deg, #
|
|
12361
|
+
background: linear-gradient(90deg, #E6C87E, #E6C87E);
|
|
12005
12362
|
border-radius: 6px;
|
|
12006
12363
|
transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
|
|
12007
12364
|
will-change: width;
|
|
@@ -12017,7 +12374,7 @@ var ProgressSubscribers = styled9.div`
|
|
|
12017
12374
|
`;
|
|
12018
12375
|
var ProgressAmounts = styled9.div`
|
|
12019
12376
|
font-weight: 600;
|
|
12020
|
-
.raised { color: #
|
|
12377
|
+
.raised { color: #E6C87E; }
|
|
12021
12378
|
.target { color: rgba(255,255,255,0.3); }
|
|
12022
12379
|
`;
|
|
12023
12380
|
var CompactContainer = styled9.div`
|
|
@@ -12064,7 +12421,7 @@ var HomeSpinner = styled9.span`
|
|
|
12064
12421
|
width: 14px;
|
|
12065
12422
|
height: 14px;
|
|
12066
12423
|
border: 2px solid rgba(255, 255, 255, 0.1);
|
|
12067
|
-
border-top-color: var(--color-accent, #
|
|
12424
|
+
border-top-color: var(--color-accent, #E6C87E);
|
|
12068
12425
|
border-radius: 50%;
|
|
12069
12426
|
animation: homeSpin 1s linear infinite;
|
|
12070
12427
|
vertical-align: middle;
|
|
@@ -12263,7 +12620,7 @@ function OrderPanel({
|
|
|
12263
12620
|
/* @__PURE__ */ jsx("div", { className: "pending-footnote", children: "Your order has been submitted and is being processed. This usually takes a few seconds." })
|
|
12264
12621
|
] }) : orderPlacedSuccess ? /* @__PURE__ */ jsxs(OrderSuccessCard, { children: [
|
|
12265
12622
|
/* @__PURE__ */ jsxs("div", { className: "success-header", children: [
|
|
12266
|
-
/* @__PURE__ */ jsx("div", { className: "icon", children: /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "#
|
|
12623
|
+
/* @__PURE__ */ jsx("div", { className: "icon", children: /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "#E6C87E", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
|
|
12267
12624
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
12268
12625
|
/* @__PURE__ */ jsx("p", { children: "Order Complete" }),
|
|
12269
12626
|
/* @__PURE__ */ jsxs("small", { children: [
|
|
@@ -12645,7 +13002,7 @@ var QuickSelectRow = styled9.div`
|
|
|
12645
13002
|
button.active {
|
|
12646
13003
|
background: rgba(212,175,55,0.2);
|
|
12647
13004
|
border-color: rgba(212,175,55,0.5);
|
|
12648
|
-
color: #
|
|
13005
|
+
color: #E6C87E;
|
|
12649
13006
|
}
|
|
12650
13007
|
|
|
12651
13008
|
@media (max-width: 480px) {
|
|
@@ -12670,7 +13027,7 @@ var DepositButton2 = styled9.button`
|
|
|
12670
13027
|
border-radius: 4px;
|
|
12671
13028
|
padding: 0.25rem 0.5rem;
|
|
12672
13029
|
font-size: 0.65rem;
|
|
12673
|
-
color: #
|
|
13030
|
+
color: #E6C87E;
|
|
12674
13031
|
cursor: pointer;
|
|
12675
13032
|
font-weight: 500;
|
|
12676
13033
|
`;
|
|
@@ -12739,11 +13096,11 @@ var SubscribeButton = styled9.button`
|
|
|
12739
13096
|
color: #fff;
|
|
12740
13097
|
}
|
|
12741
13098
|
&:not([disabled])[data-green='false'] {
|
|
12742
|
-
background-color: #
|
|
13099
|
+
background-color: #E6C87E;
|
|
12743
13100
|
color: #0a0a0a;
|
|
12744
13101
|
}
|
|
12745
13102
|
&:not([disabled])[data-verify='true'] {
|
|
12746
|
-
background: linear-gradient(135deg, #
|
|
13103
|
+
background: linear-gradient(135deg, #E6C87E 0%, #E6C87E 100%);
|
|
12747
13104
|
color: #0a0a0a;
|
|
12748
13105
|
font-weight: 700;
|
|
12749
13106
|
box-shadow: 0 2px 8px rgba(212,175,55,0.25);
|
|
@@ -12788,7 +13145,7 @@ var BalanceValue = styled9.div`
|
|
|
12788
13145
|
`;
|
|
12789
13146
|
var BalanceAction = styled9.div`
|
|
12790
13147
|
font-size: 0.75rem;
|
|
12791
|
-
color: #
|
|
13148
|
+
color: #E6C87E;
|
|
12792
13149
|
cursor: pointer;
|
|
12793
13150
|
font-weight: 500;
|
|
12794
13151
|
margin-top: 0.5rem;
|
|
@@ -12829,7 +13186,7 @@ var OrderPendingCard = styled9.div`
|
|
|
12829
13186
|
height: 32px;
|
|
12830
13187
|
border-radius: 50%;
|
|
12831
13188
|
border: 2.5px solid rgba(212,175,55,0.15);
|
|
12832
|
-
border-top-color: #
|
|
13189
|
+
border-top-color: #E6C87E;
|
|
12833
13190
|
animation: spin 0.8s linear infinite;
|
|
12834
13191
|
flex-shrink: 0;
|
|
12835
13192
|
}
|
|
@@ -12981,7 +13338,7 @@ var OrderSuccessCard = styled9.div`
|
|
|
12981
13338
|
strong {
|
|
12982
13339
|
font-size: 1.05rem;
|
|
12983
13340
|
font-weight: 700;
|
|
12984
|
-
color: #
|
|
13341
|
+
color: #E6C87E;
|
|
12985
13342
|
font-family: monospace;
|
|
12986
13343
|
}
|
|
12987
13344
|
}
|
|
@@ -13000,7 +13357,7 @@ var OrderSuccessCard = styled9.div`
|
|
|
13000
13357
|
font-weight: 600;
|
|
13001
13358
|
font-size: 0.9rem;
|
|
13002
13359
|
cursor: pointer;
|
|
13003
|
-
background: linear-gradient(135deg, #
|
|
13360
|
+
background: linear-gradient(135deg, #E6C87E 0%, #E6C87E 100%);
|
|
13004
13361
|
color: #0a0a0a;
|
|
13005
13362
|
border: none;
|
|
13006
13363
|
box-shadow: 0 2px 8px rgba(212,175,55,0.25);
|
|
@@ -13310,7 +13667,7 @@ var Badge2 = styled9.span`
|
|
|
13310
13667
|
text-transform: uppercase;
|
|
13311
13668
|
letter-spacing: 0.5px;
|
|
13312
13669
|
background: linear-gradient(135deg, rgba(212,175,55,0.2) 0%, rgba(212,175,55,0.1) 100%);
|
|
13313
|
-
color: #
|
|
13670
|
+
color: #E6C87E;
|
|
13314
13671
|
border: 1px solid rgba(212,175,55,0.3);
|
|
13315
13672
|
`;
|
|
13316
13673
|
var ModalBody = styled9.div`
|
|
@@ -13337,7 +13694,7 @@ var ModalRow = styled9.div`
|
|
|
13337
13694
|
font-size: 0.95rem;
|
|
13338
13695
|
}
|
|
13339
13696
|
strong[data-highlight='true'] {
|
|
13340
|
-
color: #
|
|
13697
|
+
color: #E6C87E;
|
|
13341
13698
|
font-weight: 600;
|
|
13342
13699
|
}
|
|
13343
13700
|
`;
|
|
@@ -13459,7 +13816,7 @@ var PrimaryButton = styled9(BaseButton)`
|
|
|
13459
13816
|
|
|
13460
13817
|
// src/components/property-buy/constants.ts
|
|
13461
13818
|
var STATUS_COLOR2 = {
|
|
13462
|
-
PENDING: "#
|
|
13819
|
+
PENDING: "#E6C87E",
|
|
13463
13820
|
LIVE: "#0ecb81",
|
|
13464
13821
|
CLOSED: "#848e9c",
|
|
13465
13822
|
CANCELLED: "#f6465d"
|
|
@@ -13497,7 +13854,7 @@ var getOrderStatusMeta = (statusRaw) => {
|
|
|
13497
13854
|
if (status === "CANCELLED" || status === "CANCELED" || status === "REJECTED") {
|
|
13498
13855
|
return { color: "#f6465d", bg: "rgba(246,70,93,0.12)" };
|
|
13499
13856
|
}
|
|
13500
|
-
return { color: "#
|
|
13857
|
+
return { color: "#E6C87E", bg: "rgba(240,185,11,0.15)" };
|
|
13501
13858
|
};
|
|
13502
13859
|
function EditableField({ value, onCommit, format }) {
|
|
13503
13860
|
const [editing, setEditing] = useState(false);
|
|
@@ -14076,7 +14433,7 @@ function PortfolioActivityPanel({
|
|
|
14076
14433
|
const isFailed = s === "SETTLEMENT_FAILED" || s === "REJECTED" || s === "CANCELLED" || s === "CANCELED";
|
|
14077
14434
|
const isSettling = !isSettled && !isFailed && !!trade.status;
|
|
14078
14435
|
const settlementLabel = isSettled ? "Settled" : isFailed ? "Settlement Failed" : isSettling ? prettyLabel(trade.status) : "\u2014";
|
|
14079
|
-
const settlementMeta = isSettled ? { color: "#0ecb81", bg: "rgba(14,203,129,0.1)" } : isFailed ? { color: "#f6465d", bg: "rgba(246,70,93,0.12)" } : isSettling ? { color: "#
|
|
14436
|
+
const settlementMeta = isSettled ? { color: "#0ecb81", bg: "rgba(14,203,129,0.1)" } : isFailed ? { color: "#f6465d", bg: "rgba(246,70,93,0.12)" } : isSettling ? { color: "#E6C87E", bg: "rgba(240,185,11,0.15)" } : null;
|
|
14080
14437
|
return /* @__PURE__ */ jsxs(GridRow, { $columns: "1.2fr 0.6fr 0.8fr 1fr 1fr 1fr 1fr 36px", children: [
|
|
14081
14438
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $primary: true, children: trade.tokenName }) }),
|
|
14082
14439
|
/* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(SideBadge, { $side: sideLabel(trade.side), children: sideLabel(trade.side) }) }),
|
|
@@ -14211,6 +14568,11 @@ var PanelTitle = styled9.h3`
|
|
|
14211
14568
|
font-weight: 600;
|
|
14212
14569
|
color: var(--color-text, #fff);
|
|
14213
14570
|
margin: 0 0 0.75rem;
|
|
14571
|
+
padding-left: 1rem;
|
|
14572
|
+
/* Redundant on mobile — the tab row already says what this is. Reclaim the space. */
|
|
14573
|
+
@media (max-width: 768px) {
|
|
14574
|
+
display: none;
|
|
14575
|
+
}
|
|
14214
14576
|
`;
|
|
14215
14577
|
var TabContainer = styled9.div`
|
|
14216
14578
|
display: flex;
|
|
@@ -14951,9 +15313,9 @@ function PropertyBuy({
|
|
|
14951
15313
|
const ipoStarted = ipoStatus === "LIVE" || isPrivateClient && ipoStatus === "PENDING";
|
|
14952
15314
|
const ipoEnded = ipoStatus === "CLOSED" || ipoStatus === "CANCELLED";
|
|
14953
15315
|
const statusLabel = ipoStatus === "PENDING" ? "Preparing" : ipoStatus;
|
|
14954
|
-
const statusColor = STATUS_COLOR2[ipoStatus] ?? "#
|
|
15316
|
+
const statusColor = STATUS_COLOR2[ipoStatus] ?? "#E6C87E";
|
|
14955
15317
|
const displayStatusLabel = isPrivateClient && ipoStatus !== "LIVE" ? "Private Client Access" : statusLabel;
|
|
14956
|
-
const displayStatusColor = isPrivateClient && ipoStatus !== "LIVE" ? "#
|
|
15318
|
+
const displayStatusColor = isPrivateClient && ipoStatus !== "LIVE" ? "#E6C87E" : statusColor;
|
|
14957
15319
|
const rawSpend = manualOrderAmount !== null ? manualOrderAmount : sliderValue === 100 ? Math.floor(availableBalance / (1 + feeRate)) : Math.round(sliderValue / 100 * availableBalance);
|
|
14958
15320
|
const tokenQuantity = Math.floor(rawSpend / tokenPrice);
|
|
14959
15321
|
const feeInUsd = tokenQuantity * tokenPrice * feeRate;
|
|
@@ -15096,6 +15458,7 @@ function PropertyBuy({
|
|
|
15096
15458
|
tradeHistory: portfolioActivity?.tradeHistory,
|
|
15097
15459
|
transfers: portfolioActivity?.transfers,
|
|
15098
15460
|
onCancelOrder: portfolioActivity?.onCancelOrder,
|
|
15461
|
+
onCancelAllOrders: portfolioActivity?.onCancelAllOrders,
|
|
15099
15462
|
onClosePosition: portfolioActivity?.onClosePosition,
|
|
15100
15463
|
cancellingOrderId: portfolioActivity?.cancellingOrderId,
|
|
15101
15464
|
defaultTab: "subscriptions",
|
|
@@ -15375,7 +15738,7 @@ var RecentOrderPanel = styled9.div`
|
|
|
15375
15738
|
height: 40px;
|
|
15376
15739
|
border-radius: 50%;
|
|
15377
15740
|
border: 2px solid rgba(212,175,55,0.3);
|
|
15378
|
-
border-top-color: #
|
|
15741
|
+
border-top-color: #E6C87E;
|
|
15379
15742
|
animation: roaSpin 1s linear infinite;
|
|
15380
15743
|
}
|
|
15381
15744
|
|
|
@@ -15532,7 +15895,7 @@ var PaymentMethodDetails = styled9.div`
|
|
|
15532
15895
|
}
|
|
15533
15896
|
`;
|
|
15534
15897
|
var ConfirmButton = styled9.button`
|
|
15535
|
-
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #
|
|
15898
|
+
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #E6C87E, #f2d35b)"};
|
|
15536
15899
|
border: none;
|
|
15537
15900
|
border-radius: 8px;
|
|
15538
15901
|
padding: 0.75rem 1.5rem;
|
|
@@ -15543,7 +15906,7 @@ var ConfirmButton = styled9.button`
|
|
|
15543
15906
|
transition: all 0.2s;
|
|
15544
15907
|
|
|
15545
15908
|
&:hover {
|
|
15546
|
-
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #f2d35b, #
|
|
15909
|
+
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #f2d35b, #E6C87E)"};
|
|
15547
15910
|
transform: ${(props) => props.disabled ? "none" : "translateY(-2px)"};
|
|
15548
15911
|
}
|
|
15549
15912
|
`;
|
|
@@ -15616,7 +15979,7 @@ function PaymentPopup({
|
|
|
15616
15979
|
] }),
|
|
15617
15980
|
/* @__PURE__ */ jsx("h4", { className: "text-[1.2rem] m-0 mb-4 text-white", children: "Select Payment Method" }),
|
|
15618
15981
|
/* @__PURE__ */ jsxs(PaymentOption, { $isSelected: selectedPaymentMethod === "tokens", onClick: () => setSelectedPaymentMethod("tokens"), children: [
|
|
15619
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-10 h-10 rounded-full bg-white/10 mr-4", style: { color: "#
|
|
15982
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-10 h-10 rounded-full bg-white/10 mr-4", style: { color: "#E6C87E" }, children: /* @__PURE__ */ jsx(BiCoin, { size: 24 }) }),
|
|
15620
15983
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
15621
15984
|
/* @__PURE__ */ jsx("div", { className: "font-semibold mb-1", children: "Loaf Tokens" }),
|
|
15622
15985
|
/* @__PURE__ */ jsx("div", { className: "text-[0.85rem] text-white/70", children: "Pay with your Loaf token balance" })
|
|
@@ -15997,9 +16360,9 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
15997
16360
|
),
|
|
15998
16361
|
/* @__PURE__ */ jsx(DateSelectorDropdown, { $isOpen: isDateSelectorOpen, children: /* @__PURE__ */ jsxs("div", { className: "p-3", children: [
|
|
15999
16362
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center mb-[0.6rem]", children: [
|
|
16000
|
-
/* @__PURE__ */ jsx("button", { onClick: () => changeYear(-1), className: "bg-none border-none text-[#
|
|
16363
|
+
/* @__PURE__ */ jsx("button", { onClick: () => changeYear(-1), className: "bg-none border-none text-[#E6C87E] text-[1.1rem] cursor-pointer px-2 py-1 transition-colors duration-200 hover:text-[#f2d35b]", children: "<" }),
|
|
16001
16364
|
/* @__PURE__ */ jsx("span", { className: "text-white text-base", children: selectorYear }),
|
|
16002
|
-
/* @__PURE__ */ jsx("button", { onClick: () => changeYear(1), className: "bg-none border-none text-[#
|
|
16365
|
+
/* @__PURE__ */ jsx("button", { onClick: () => changeYear(1), className: "bg-none border-none text-[#E6C87E] text-[1.1rem] cursor-pointer px-2 py-1 transition-colors duration-200 hover:text-[#f2d35b]", children: ">" })
|
|
16003
16366
|
] }),
|
|
16004
16367
|
/* @__PURE__ */ jsx("h4", { className: "m-0 mt-[0.65rem] mb-[0.4rem] text-[0.85rem] uppercase tracking-[0.08em] text-[rgba(212,175,55,0.9)]", children: "Select Month" }),
|
|
16005
16368
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: monthNames.map((month, index) => /* @__PURE__ */ jsx(
|
|
@@ -16015,8 +16378,8 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
16015
16378
|
] })
|
|
16016
16379
|
] }),
|
|
16017
16380
|
/* @__PURE__ */ jsxs("div", { className: "flex gap-2 items-center flex-wrap", children: [
|
|
16018
|
-
/* @__PURE__ */ jsx("button", { onClick: () => shiftMonth("prev"), className: "bg-[rgba(212,175,55,0.15)] border-none rounded-md text-[#
|
|
16019
|
-
/* @__PURE__ */ jsx("button", { onClick: () => shiftMonth("next"), className: "bg-[rgba(212,175,55,0.15)] border-none rounded-md text-[#
|
|
16381
|
+
/* @__PURE__ */ jsx("button", { onClick: () => shiftMonth("prev"), className: "bg-[rgba(212,175,55,0.15)] border-none rounded-md text-[#E6C87E] w-8 h-8 flex items-center justify-center cursor-pointer transition-colors duration-200 hover:bg-[rgba(212,175,55,0.3)]", children: "<" }),
|
|
16382
|
+
/* @__PURE__ */ jsx("button", { onClick: () => shiftMonth("next"), className: "bg-[rgba(212,175,55,0.15)] border-none rounded-md text-[#E6C87E] w-8 h-8 flex items-center justify-center cursor-pointer transition-colors duration-200 hover:bg-[rgba(212,175,55,0.3)]", children: ">" }),
|
|
16020
16383
|
/* @__PURE__ */ jsx("button", { onClick: jumpToNextAvailable, className: "bg-[rgba(212,175,55,0.18)] border border-[rgba(212,175,55,0.4)] rounded-md text-[#f2d35b] px-3 py-[0.35rem] text-[0.85rem] cursor-pointer whitespace-nowrap transition-all duration-200 hover:bg-[rgba(212,175,55,0.3)]", children: "Next Available Date" })
|
|
16021
16384
|
] })
|
|
16022
16385
|
] }),
|
|
@@ -16182,7 +16545,7 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
16182
16545
|
" nights"
|
|
16183
16546
|
] }),
|
|
16184
16547
|
/* @__PURE__ */ jsxs("div", { className: "text-right", children: [
|
|
16185
|
-
/* @__PURE__ */ jsxs("div", { className: "text-[0.95rem] font-semibold text-[#
|
|
16548
|
+
/* @__PURE__ */ jsxs("div", { className: "text-[0.95rem] font-semibold text-[#E6C87E]", children: [
|
|
16186
16549
|
range.tokens.toFixed(4),
|
|
16187
16550
|
" Elara"
|
|
16188
16551
|
] }),
|
|
@@ -16223,7 +16586,7 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
16223
16586
|
{
|
|
16224
16587
|
onClick: () => setIsPaymentPopupOpen(true),
|
|
16225
16588
|
className: "mt-2 w-full border-none rounded-xl p-4 text-base font-semibold text-black cursor-pointer transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_12px_30px_rgba(212,175,55,0.3)]",
|
|
16226
|
-
style: { background: "linear-gradient(90deg, #
|
|
16589
|
+
style: { background: "linear-gradient(90deg, #E6C87E, #f2d35b)" },
|
|
16227
16590
|
children: "Confirm Reservation"
|
|
16228
16591
|
}
|
|
16229
16592
|
)
|
|
@@ -16266,8 +16629,8 @@ var DateSelectorDropdown = styled9.div`
|
|
|
16266
16629
|
var MonthButton = styled9.button`
|
|
16267
16630
|
background: ${({ $isSelected }) => $isSelected ? "rgba(212, 175, 55, 0.2)" : "transparent"};
|
|
16268
16631
|
border: 1px solid
|
|
16269
|
-
${({ $isSelected }) => $isSelected ? "#
|
|
16270
|
-
color: ${({ $isSelected }) => $isSelected ? "#
|
|
16632
|
+
${({ $isSelected }) => $isSelected ? "#E6C87E" : "rgba(255, 255, 255, 0.12)"};
|
|
16633
|
+
color: ${({ $isSelected }) => $isSelected ? "#E6C87E" : "#fff"};
|
|
16271
16634
|
border-radius: 6px;
|
|
16272
16635
|
padding: 0.4rem 0;
|
|
16273
16636
|
cursor: pointer;
|
|
@@ -16352,7 +16715,7 @@ var ReservationCard = styled9.div`
|
|
|
16352
16715
|
var ActionButton = styled9.button`
|
|
16353
16716
|
background: none;
|
|
16354
16717
|
border: none;
|
|
16355
|
-
color: ${({ $variant }) => $variant === "danger" ? "#ff7676" : "#
|
|
16718
|
+
color: ${({ $variant }) => $variant === "danger" ? "#ff7676" : "#E6C87E"};
|
|
16356
16719
|
cursor: pointer;
|
|
16357
16720
|
padding: 0.25rem;
|
|
16358
16721
|
display: inline-flex;
|
|
@@ -16368,7 +16731,7 @@ var musgraveComparisonData = {
|
|
|
16368
16731
|
datasets: [
|
|
16369
16732
|
{
|
|
16370
16733
|
name: "Musgrave",
|
|
16371
|
-
color: "#
|
|
16734
|
+
color: "#E6C87E",
|
|
16372
16735
|
data: [100, 115, 125, 118, 130, 145, 155, 165, 180, 195, 210, 225, 240, 225, 235, 231, 265, 285, 300, 310, 320]
|
|
16373
16736
|
},
|
|
16374
16737
|
{
|
|
@@ -16471,7 +16834,7 @@ function PropertyValuation({
|
|
|
16471
16834
|
const year = musgraveComparisonData.labels[ctx.dataIndex];
|
|
16472
16835
|
if (year === "2006") return "#4CAF50";
|
|
16473
16836
|
if (year === "2021") return "#FF5722";
|
|
16474
|
-
if (year === "2026") return "#
|
|
16837
|
+
if (year === "2026") return "#E6C87E";
|
|
16475
16838
|
}
|
|
16476
16839
|
return dataset.color;
|
|
16477
16840
|
},
|
|
@@ -16495,13 +16858,13 @@ function PropertyValuation({
|
|
|
16495
16858
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
16496
16859
|
/* @__PURE__ */ jsx(ValuationHeading, { children: "Valuation Model" }),
|
|
16497
16860
|
/* @__PURE__ */ jsxs(LoafPricingSection, { children: [
|
|
16498
|
-
/* @__PURE__ */ jsx("h2", { style: { color: "#
|
|
16861
|
+
/* @__PURE__ */ jsx("h2", { style: { color: "#E6C87E", marginBottom: "0" }, children: "Loaf Pricing Model" }),
|
|
16499
16862
|
/* @__PURE__ */ jsx(BlurredContent, { children: /* @__PURE__ */ jsxs(PricingModelCard, { children: [
|
|
16500
16863
|
/* @__PURE__ */ jsxs(PricingModelHeader, { children: [
|
|
16501
16864
|
/* @__PURE__ */ jsx(PricingModelTitle, { children: propertyTitle }),
|
|
16502
16865
|
/* @__PURE__ */ jsxs("div", { style: { textAlign: "right" }, children: [
|
|
16503
16866
|
/* @__PURE__ */ jsx("div", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.7)" }, children: "Valuation as of" }),
|
|
16504
|
-
/* @__PURE__ */ jsx("div", { style: { color: "#
|
|
16867
|
+
/* @__PURE__ */ jsx("div", { style: { color: "#E6C87E", fontWeight: "600" }, children: (valSummary?.valuationAsOf ? new Date(valSummary.valuationAsOf) : /* @__PURE__ */ new Date()).toLocaleDateString("en-US", { day: "2-digit", month: "short", year: "numeric" }) }),
|
|
16505
16868
|
/* @__PURE__ */ jsxs("div", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.7)" }, children: [
|
|
16506
16869
|
(valSummary?.valuationAsOf ? new Date(valSummary.valuationAsOf) : /* @__PURE__ */ new Date()).toLocaleTimeString("en-AU", { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false, timeZone: "Australia/Sydney" }),
|
|
16507
16870
|
" AEST"
|
|
@@ -16521,7 +16884,7 @@ function PropertyValuation({
|
|
|
16521
16884
|
valSummary.confidence
|
|
16522
16885
|
] })
|
|
16523
16886
|
] }),
|
|
16524
|
-
/* @__PURE__ */ jsx(PricingDetailValue, { style: { color: "#
|
|
16887
|
+
/* @__PURE__ */ jsx(PricingDetailValue, { style: { color: "#E6C87E", fontWeight: "bold" }, children: valSummary?.fairValue != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16525
16888
|
`$${valSummary.fairValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`,
|
|
16526
16889
|
totalUnits > 0 && /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
|
|
16527
16890
|
" ($",
|
|
@@ -16541,9 +16904,9 @@ function PropertyValuation({
|
|
|
16541
16904
|
padding: "10px 16px",
|
|
16542
16905
|
border: "1px solid rgba(212, 175, 55, 0.2)"
|
|
16543
16906
|
}, children: [
|
|
16544
|
-
/* @__PURE__ */ jsx("span", { style: { color: "#
|
|
16907
|
+
/* @__PURE__ */ jsx("span", { style: { color: "#E6C87E", fontWeight: "600" }, children: valSummary?.valuationStatus ?? "Fair Value" }),
|
|
16545
16908
|
/* @__PURE__ */ jsx("div", { style: {
|
|
16546
|
-
background: "linear-gradient(135deg, #
|
|
16909
|
+
background: "linear-gradient(135deg, #E6C87E 0%, #B8960C 100%)",
|
|
16547
16910
|
color: "white",
|
|
16548
16911
|
padding: "5px 12px",
|
|
16549
16912
|
borderRadius: "20px",
|
|
@@ -16600,7 +16963,7 @@ function PropertyValuation({
|
|
|
16600
16963
|
/* @__PURE__ */ jsxs(ValuationIndicator, { children: [
|
|
16601
16964
|
/* @__PURE__ */ jsxs(ValuationHeader, { children: [
|
|
16602
16965
|
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#4CAF50" }, children: "Undervalued" }),
|
|
16603
|
-
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#
|
|
16966
|
+
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#E6C87E" }, children: "Fair Value" }),
|
|
16604
16967
|
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#F44336" }, children: "Overvalued" })
|
|
16605
16968
|
] }),
|
|
16606
16969
|
/* @__PURE__ */ jsxs(ValuationGauge, { children: [
|
|
@@ -16608,7 +16971,7 @@ function PropertyValuation({
|
|
|
16608
16971
|
/* @__PURE__ */ jsx(GaugeIndicator, { $position: gaugePosition }),
|
|
16609
16972
|
/* @__PURE__ */ jsxs(GaugePriceTag, { $position: gaugePosition, children: [
|
|
16610
16973
|
/* @__PURE__ */ jsx("span", { children: "IPO Price" }),
|
|
16611
|
-
/* @__PURE__ */ jsx("span", { style: { color: "#
|
|
16974
|
+
/* @__PURE__ */ jsx("span", { style: { color: "#E6C87E" }, children: tokenPriceValue != null ? `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : /* @__PURE__ */ jsx(Skeleton, { width: 60, height: 12 }) })
|
|
16612
16975
|
] })
|
|
16613
16976
|
] }),
|
|
16614
16977
|
/* @__PURE__ */ jsxs(ValuationDetails, { children: [
|
|
@@ -16623,7 +16986,7 @@ function PropertyValuation({
|
|
|
16623
16986
|
"m)"
|
|
16624
16987
|
] })
|
|
16625
16988
|
] }) : /* @__PURE__ */ jsx(Skeleton, { width: 90, height: 16 }) }) }),
|
|
16626
|
-
/* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsx(ValuationValue, { style: { color: "#
|
|
16989
|
+
/* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsx(ValuationValue, { style: { color: "#E6C87E" }, children: tokenPriceValue != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16627
16990
|
/* @__PURE__ */ jsx("span", { children: `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` }),
|
|
16628
16991
|
totalUnits > 0 && /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.8rem", fontWeight: "normal", color: "rgba(255,255,255,0.6)" }, children: [
|
|
16629
16992
|
"($",
|
|
@@ -16683,8 +17046,8 @@ function PropertyValuation({
|
|
|
16683
17046
|
{
|
|
16684
17047
|
$active: hoveredSaleYear === marker.year,
|
|
16685
17048
|
style: {
|
|
16686
|
-
backgroundColor: marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#
|
|
16687
|
-
boxShadow: hoveredSaleYear === marker.year ? `0 0 12px ${marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#
|
|
17049
|
+
backgroundColor: marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#E6C87E",
|
|
17050
|
+
boxShadow: hoveredSaleYear === marker.year ? `0 0 12px ${marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#E6C87E"}` : "none"
|
|
16688
17051
|
}
|
|
16689
17052
|
}
|
|
16690
17053
|
),
|
|
@@ -16866,7 +17229,7 @@ var ValuationGauge = styled9.div`
|
|
|
16866
17229
|
var GaugeBackground = styled9.div`
|
|
16867
17230
|
height: 8px;
|
|
16868
17231
|
border-radius: 4px;
|
|
16869
|
-
background: linear-gradient(to right, #4CAF50 0%, #4CAF50 33%, #
|
|
17232
|
+
background: linear-gradient(to right, #4CAF50 0%, #4CAF50 33%, #E6C87E 33%, #E6C87E 66%, #F44336 66%, #F44336 100%);
|
|
16870
17233
|
`;
|
|
16871
17234
|
var GaugeIndicator = styled9.div`
|
|
16872
17235
|
position: absolute;
|
|
@@ -16875,7 +17238,7 @@ var GaugeIndicator = styled9.div`
|
|
|
16875
17238
|
transform: translateX(-50%);
|
|
16876
17239
|
width: 3px;
|
|
16877
17240
|
height: 30px;
|
|
16878
|
-
background: #
|
|
17241
|
+
background: #E6C87E;
|
|
16879
17242
|
border-radius: 2px;
|
|
16880
17243
|
`;
|
|
16881
17244
|
var GaugePriceTag = styled9.div`
|
|
@@ -17080,7 +17443,7 @@ var FeatureTooltip = styled9.div`
|
|
|
17080
17443
|
max-width: 220px;
|
|
17081
17444
|
padding: 0.65rem 0.85rem;
|
|
17082
17445
|
border-radius: 10px;
|
|
17083
|
-
border: 1px solid var(--color-accent, #
|
|
17446
|
+
border: 1px solid var(--color-accent, #E6C87E);
|
|
17084
17447
|
background: rgba(20, 23, 29, 0.95);
|
|
17085
17448
|
color: white;
|
|
17086
17449
|
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35);
|
|
@@ -17093,7 +17456,7 @@ var FeatureTooltip = styled9.div`
|
|
|
17093
17456
|
h4 {
|
|
17094
17457
|
margin: 0 0 0.2rem;
|
|
17095
17458
|
font-size: 0.9rem;
|
|
17096
|
-
color: var(--color-accent, #
|
|
17459
|
+
color: var(--color-accent, #E6C87E);
|
|
17097
17460
|
font-weight: 600;
|
|
17098
17461
|
}
|
|
17099
17462
|
|
|
@@ -17194,12 +17557,27 @@ var MainImage = styled9.img`
|
|
|
17194
17557
|
opacity: ${(p) => p.$visible ? 1 : 0};
|
|
17195
17558
|
pointer-events: ${(p) => p.$visible ? "auto" : "none"};
|
|
17196
17559
|
transition: opacity 300ms ease;
|
|
17560
|
+
/* Inset box excludes the bottom thumbnail strip so margin:auto centres the image in the
|
|
17561
|
+
space ABOVE the thumbnails (absolute ignores the parent's padding). */
|
|
17197
17562
|
position: absolute;
|
|
17198
|
-
|
|
17563
|
+
top: 24px;
|
|
17564
|
+
left: 24px;
|
|
17565
|
+
right: 24px;
|
|
17566
|
+
bottom: 120px;
|
|
17199
17567
|
margin: auto;
|
|
17200
17568
|
|
|
17569
|
+
/* Desktop: keep the image from dominating the viewport (incl. 14"/16" MacBooks). */
|
|
17570
|
+
@media (min-width: 769px) {
|
|
17571
|
+
max-width: 72%;
|
|
17572
|
+
max-height: 84%;
|
|
17573
|
+
}
|
|
17574
|
+
|
|
17201
17575
|
@media (max-width: 768px) {
|
|
17202
17576
|
max-width: 100%;
|
|
17577
|
+
left: 0;
|
|
17578
|
+
right: 0;
|
|
17579
|
+
top: 12px;
|
|
17580
|
+
bottom: 64px;
|
|
17203
17581
|
}
|
|
17204
17582
|
`;
|
|
17205
17583
|
var Hotspot = styled9.button`
|
|
@@ -17209,7 +17587,7 @@ var Hotspot = styled9.button`
|
|
|
17209
17587
|
border-radius: 50%;
|
|
17210
17588
|
border: none;
|
|
17211
17589
|
cursor: pointer;
|
|
17212
|
-
background: var(--color-accent, #
|
|
17590
|
+
background: var(--color-accent, #E6C87E);
|
|
17213
17591
|
color: #0b0e13;
|
|
17214
17592
|
transform: translate(-50%, -50%);
|
|
17215
17593
|
opacity: ${(p) => p.$visible ? 1 : 0};
|
|
@@ -17232,6 +17610,10 @@ var ThumbnailStrip = styled9.div`
|
|
|
17232
17610
|
overflow-x: auto;
|
|
17233
17611
|
background: linear-gradient(0deg, rgba(0, 0, 0, 0.9) 0%, transparent 100%);
|
|
17234
17612
|
|
|
17613
|
+
/* Hide the native scrollbar — still scrollable via drag/trackpad. */
|
|
17614
|
+
scrollbar-width: none;
|
|
17615
|
+
&::-webkit-scrollbar { display: none; }
|
|
17616
|
+
|
|
17235
17617
|
@media (max-width: 768px) {
|
|
17236
17618
|
display: none;
|
|
17237
17619
|
}
|
|
@@ -17241,7 +17623,7 @@ var Thumbnail3 = styled9.button`
|
|
|
17241
17623
|
height: 64px;
|
|
17242
17624
|
border-radius: 6px;
|
|
17243
17625
|
overflow: hidden;
|
|
17244
|
-
border: 2px solid ${(p) => p.$active ? "var(--color-accent, #
|
|
17626
|
+
border: 2px solid ${(p) => p.$active ? "var(--color-accent, #E6C87E)" : "transparent"};
|
|
17245
17627
|
opacity: ${(p) => p.$active ? 1 : 0.45};
|
|
17246
17628
|
transition: all 0.2s ease;
|
|
17247
17629
|
background: transparent;
|
|
@@ -17278,21 +17660,8 @@ var NavigationButton = styled9.button`
|
|
|
17278
17660
|
}
|
|
17279
17661
|
`;
|
|
17280
17662
|
var SliderContainer = styled9.div`
|
|
17281
|
-
|
|
17282
|
-
|
|
17283
|
-
left: 50%;
|
|
17284
|
-
transform: translateX(-50%);
|
|
17285
|
-
width: min(860px, 90%);
|
|
17286
|
-
background: rgba(0, 0, 0, 0.8);
|
|
17287
|
-
border-radius: 16px;
|
|
17288
|
-
padding: 0.75rem 1.5rem;
|
|
17289
|
-
backdrop-filter: blur(12px);
|
|
17290
|
-
user-select: none;
|
|
17291
|
-
|
|
17292
|
-
@media (max-width: 768px) {
|
|
17293
|
-
bottom: 70px;
|
|
17294
|
-
width: 85%;
|
|
17295
|
-
}
|
|
17663
|
+
/* Slider/scrubber removed — navigate via thumbnails + arrows (desktop) or swipe (mobile). */
|
|
17664
|
+
display: none;
|
|
17296
17665
|
`;
|
|
17297
17666
|
var SliderTrack = styled9.div`
|
|
17298
17667
|
position: relative;
|
|
@@ -17305,7 +17674,7 @@ var SliderProgress = styled9.div`
|
|
|
17305
17674
|
position: absolute;
|
|
17306
17675
|
inset: 0;
|
|
17307
17676
|
width: ${(p) => p.$progress}%;
|
|
17308
|
-
background: linear-gradient(90deg, var(--color-accent, #
|
|
17677
|
+
background: linear-gradient(90deg, var(--color-accent, #E6C87E), rgba(240, 185, 11, 0.5));
|
|
17309
17678
|
border-radius: inherit;
|
|
17310
17679
|
`;
|
|
17311
17680
|
var SliderThumb = styled9.div`
|
|
@@ -17316,24 +17685,13 @@ var SliderThumb = styled9.div`
|
|
|
17316
17685
|
width: 18px;
|
|
17317
17686
|
height: 18px;
|
|
17318
17687
|
border-radius: 50%;
|
|
17319
|
-
background: var(--color-accent, #
|
|
17688
|
+
background: var(--color-accent, #E6C87E);
|
|
17320
17689
|
border: 3px solid white;
|
|
17321
17690
|
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3);
|
|
17322
17691
|
`;
|
|
17323
17692
|
var SliderLabels = styled9.div`
|
|
17324
|
-
|
|
17325
|
-
|
|
17326
|
-
margin-top: 0.75rem;
|
|
17327
|
-
font-size: 0.75rem;
|
|
17328
|
-
color: rgba(255, 255, 255, 0.7);
|
|
17329
|
-
|
|
17330
|
-
span {
|
|
17331
|
-
cursor: pointer;
|
|
17332
|
-
}
|
|
17333
|
-
|
|
17334
|
-
@media (max-width: 768px) {
|
|
17335
|
-
display: none;
|
|
17336
|
-
}
|
|
17693
|
+
/* Per-image category labels removed from the fullscreen carousel. */
|
|
17694
|
+
display: none;
|
|
17337
17695
|
`;
|
|
17338
17696
|
var MobileDots = styled9.div`
|
|
17339
17697
|
position: absolute;
|
|
@@ -17352,7 +17710,7 @@ var MobileDot = styled9.button`
|
|
|
17352
17710
|
height: 8px;
|
|
17353
17711
|
border-radius: 50%;
|
|
17354
17712
|
border: none;
|
|
17355
|
-
background: ${(p) => p.$active ? "var(--color-accent, #
|
|
17713
|
+
background: ${(p) => p.$active ? "var(--color-accent, #E6C87E)" : "rgba(255,255,255,0.3)"};
|
|
17356
17714
|
${(p) => p.$active && css`
|
|
17357
17715
|
transform: scale(1.2);
|
|
17358
17716
|
`}
|