@loafmarkets/ui 0.1.366 → 0.1.367
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 +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.js +727 -370
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +727 -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;
|
|
@@ -15375,7 +15737,7 @@ var RecentOrderPanel = styled9.div`
|
|
|
15375
15737
|
height: 40px;
|
|
15376
15738
|
border-radius: 50%;
|
|
15377
15739
|
border: 2px solid rgba(212,175,55,0.3);
|
|
15378
|
-
border-top-color: #
|
|
15740
|
+
border-top-color: #E6C87E;
|
|
15379
15741
|
animation: roaSpin 1s linear infinite;
|
|
15380
15742
|
}
|
|
15381
15743
|
|
|
@@ -15532,7 +15894,7 @@ var PaymentMethodDetails = styled9.div`
|
|
|
15532
15894
|
}
|
|
15533
15895
|
`;
|
|
15534
15896
|
var ConfirmButton = styled9.button`
|
|
15535
|
-
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #
|
|
15897
|
+
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #E6C87E, #f2d35b)"};
|
|
15536
15898
|
border: none;
|
|
15537
15899
|
border-radius: 8px;
|
|
15538
15900
|
padding: 0.75rem 1.5rem;
|
|
@@ -15543,7 +15905,7 @@ var ConfirmButton = styled9.button`
|
|
|
15543
15905
|
transition: all 0.2s;
|
|
15544
15906
|
|
|
15545
15907
|
&:hover {
|
|
15546
|
-
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #f2d35b, #
|
|
15908
|
+
background: ${(props) => props.disabled ? "rgba(255, 255, 255, 0.1)" : "linear-gradient(to right, #f2d35b, #E6C87E)"};
|
|
15547
15909
|
transform: ${(props) => props.disabled ? "none" : "translateY(-2px)"};
|
|
15548
15910
|
}
|
|
15549
15911
|
`;
|
|
@@ -15616,7 +15978,7 @@ function PaymentPopup({
|
|
|
15616
15978
|
] }),
|
|
15617
15979
|
/* @__PURE__ */ jsx("h4", { className: "text-[1.2rem] m-0 mb-4 text-white", children: "Select Payment Method" }),
|
|
15618
15980
|
/* @__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: "#
|
|
15981
|
+
/* @__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
15982
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
15621
15983
|
/* @__PURE__ */ jsx("div", { className: "font-semibold mb-1", children: "Loaf Tokens" }),
|
|
15622
15984
|
/* @__PURE__ */ jsx("div", { className: "text-[0.85rem] text-white/70", children: "Pay with your Loaf token balance" })
|
|
@@ -15997,9 +16359,9 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
15997
16359
|
),
|
|
15998
16360
|
/* @__PURE__ */ jsx(DateSelectorDropdown, { $isOpen: isDateSelectorOpen, children: /* @__PURE__ */ jsxs("div", { className: "p-3", children: [
|
|
15999
16361
|
/* @__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-[#
|
|
16362
|
+
/* @__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
16363
|
/* @__PURE__ */ jsx("span", { className: "text-white text-base", children: selectorYear }),
|
|
16002
|
-
/* @__PURE__ */ jsx("button", { onClick: () => changeYear(1), className: "bg-none border-none text-[#
|
|
16364
|
+
/* @__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
16365
|
] }),
|
|
16004
16366
|
/* @__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
16367
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: monthNames.map((month, index) => /* @__PURE__ */ jsx(
|
|
@@ -16015,8 +16377,8 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
16015
16377
|
] })
|
|
16016
16378
|
] }),
|
|
16017
16379
|
/* @__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-[#
|
|
16380
|
+
/* @__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: "<" }),
|
|
16381
|
+
/* @__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
16382
|
/* @__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
16383
|
] })
|
|
16022
16384
|
] }),
|
|
@@ -16182,7 +16544,7 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
16182
16544
|
" nights"
|
|
16183
16545
|
] }),
|
|
16184
16546
|
/* @__PURE__ */ jsxs("div", { className: "text-right", children: [
|
|
16185
|
-
/* @__PURE__ */ jsxs("div", { className: "text-[0.95rem] font-semibold text-[#
|
|
16547
|
+
/* @__PURE__ */ jsxs("div", { className: "text-[0.95rem] font-semibold text-[#E6C87E]", children: [
|
|
16186
16548
|
range.tokens.toFixed(4),
|
|
16187
16549
|
" Elara"
|
|
16188
16550
|
] }),
|
|
@@ -16223,7 +16585,7 @@ var OwnerBooking = ({ propertyName, token }) => {
|
|
|
16223
16585
|
{
|
|
16224
16586
|
onClick: () => setIsPaymentPopupOpen(true),
|
|
16225
16587
|
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, #
|
|
16588
|
+
style: { background: "linear-gradient(90deg, #E6C87E, #f2d35b)" },
|
|
16227
16589
|
children: "Confirm Reservation"
|
|
16228
16590
|
}
|
|
16229
16591
|
)
|
|
@@ -16266,8 +16628,8 @@ var DateSelectorDropdown = styled9.div`
|
|
|
16266
16628
|
var MonthButton = styled9.button`
|
|
16267
16629
|
background: ${({ $isSelected }) => $isSelected ? "rgba(212, 175, 55, 0.2)" : "transparent"};
|
|
16268
16630
|
border: 1px solid
|
|
16269
|
-
${({ $isSelected }) => $isSelected ? "#
|
|
16270
|
-
color: ${({ $isSelected }) => $isSelected ? "#
|
|
16631
|
+
${({ $isSelected }) => $isSelected ? "#E6C87E" : "rgba(255, 255, 255, 0.12)"};
|
|
16632
|
+
color: ${({ $isSelected }) => $isSelected ? "#E6C87E" : "#fff"};
|
|
16271
16633
|
border-radius: 6px;
|
|
16272
16634
|
padding: 0.4rem 0;
|
|
16273
16635
|
cursor: pointer;
|
|
@@ -16352,7 +16714,7 @@ var ReservationCard = styled9.div`
|
|
|
16352
16714
|
var ActionButton = styled9.button`
|
|
16353
16715
|
background: none;
|
|
16354
16716
|
border: none;
|
|
16355
|
-
color: ${({ $variant }) => $variant === "danger" ? "#ff7676" : "#
|
|
16717
|
+
color: ${({ $variant }) => $variant === "danger" ? "#ff7676" : "#E6C87E"};
|
|
16356
16718
|
cursor: pointer;
|
|
16357
16719
|
padding: 0.25rem;
|
|
16358
16720
|
display: inline-flex;
|
|
@@ -16368,7 +16730,7 @@ var musgraveComparisonData = {
|
|
|
16368
16730
|
datasets: [
|
|
16369
16731
|
{
|
|
16370
16732
|
name: "Musgrave",
|
|
16371
|
-
color: "#
|
|
16733
|
+
color: "#E6C87E",
|
|
16372
16734
|
data: [100, 115, 125, 118, 130, 145, 155, 165, 180, 195, 210, 225, 240, 225, 235, 231, 265, 285, 300, 310, 320]
|
|
16373
16735
|
},
|
|
16374
16736
|
{
|
|
@@ -16471,7 +16833,7 @@ function PropertyValuation({
|
|
|
16471
16833
|
const year = musgraveComparisonData.labels[ctx.dataIndex];
|
|
16472
16834
|
if (year === "2006") return "#4CAF50";
|
|
16473
16835
|
if (year === "2021") return "#FF5722";
|
|
16474
|
-
if (year === "2026") return "#
|
|
16836
|
+
if (year === "2026") return "#E6C87E";
|
|
16475
16837
|
}
|
|
16476
16838
|
return dataset.color;
|
|
16477
16839
|
},
|
|
@@ -16495,13 +16857,13 @@ function PropertyValuation({
|
|
|
16495
16857
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
16496
16858
|
/* @__PURE__ */ jsx(ValuationHeading, { children: "Valuation Model" }),
|
|
16497
16859
|
/* @__PURE__ */ jsxs(LoafPricingSection, { children: [
|
|
16498
|
-
/* @__PURE__ */ jsx("h2", { style: { color: "#
|
|
16860
|
+
/* @__PURE__ */ jsx("h2", { style: { color: "#E6C87E", marginBottom: "0" }, children: "Loaf Pricing Model" }),
|
|
16499
16861
|
/* @__PURE__ */ jsx(BlurredContent, { children: /* @__PURE__ */ jsxs(PricingModelCard, { children: [
|
|
16500
16862
|
/* @__PURE__ */ jsxs(PricingModelHeader, { children: [
|
|
16501
16863
|
/* @__PURE__ */ jsx(PricingModelTitle, { children: propertyTitle }),
|
|
16502
16864
|
/* @__PURE__ */ jsxs("div", { style: { textAlign: "right" }, children: [
|
|
16503
16865
|
/* @__PURE__ */ jsx("div", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.7)" }, children: "Valuation as of" }),
|
|
16504
|
-
/* @__PURE__ */ jsx("div", { style: { color: "#
|
|
16866
|
+
/* @__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
16867
|
/* @__PURE__ */ jsxs("div", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.7)" }, children: [
|
|
16506
16868
|
(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
16869
|
" AEST"
|
|
@@ -16521,7 +16883,7 @@ function PropertyValuation({
|
|
|
16521
16883
|
valSummary.confidence
|
|
16522
16884
|
] })
|
|
16523
16885
|
] }),
|
|
16524
|
-
/* @__PURE__ */ jsx(PricingDetailValue, { style: { color: "#
|
|
16886
|
+
/* @__PURE__ */ jsx(PricingDetailValue, { style: { color: "#E6C87E", fontWeight: "bold" }, children: valSummary?.fairValue != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16525
16887
|
`$${valSummary.fairValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`,
|
|
16526
16888
|
totalUnits > 0 && /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
|
|
16527
16889
|
" ($",
|
|
@@ -16541,9 +16903,9 @@ function PropertyValuation({
|
|
|
16541
16903
|
padding: "10px 16px",
|
|
16542
16904
|
border: "1px solid rgba(212, 175, 55, 0.2)"
|
|
16543
16905
|
}, children: [
|
|
16544
|
-
/* @__PURE__ */ jsx("span", { style: { color: "#
|
|
16906
|
+
/* @__PURE__ */ jsx("span", { style: { color: "#E6C87E", fontWeight: "600" }, children: valSummary?.valuationStatus ?? "Fair Value" }),
|
|
16545
16907
|
/* @__PURE__ */ jsx("div", { style: {
|
|
16546
|
-
background: "linear-gradient(135deg, #
|
|
16908
|
+
background: "linear-gradient(135deg, #E6C87E 0%, #B8960C 100%)",
|
|
16547
16909
|
color: "white",
|
|
16548
16910
|
padding: "5px 12px",
|
|
16549
16911
|
borderRadius: "20px",
|
|
@@ -16600,7 +16962,7 @@ function PropertyValuation({
|
|
|
16600
16962
|
/* @__PURE__ */ jsxs(ValuationIndicator, { children: [
|
|
16601
16963
|
/* @__PURE__ */ jsxs(ValuationHeader, { children: [
|
|
16602
16964
|
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#4CAF50" }, children: "Undervalued" }),
|
|
16603
|
-
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#
|
|
16965
|
+
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#E6C87E" }, children: "Fair Value" }),
|
|
16604
16966
|
/* @__PURE__ */ jsx(ValuationTitle, { style: { color: "#F44336" }, children: "Overvalued" })
|
|
16605
16967
|
] }),
|
|
16606
16968
|
/* @__PURE__ */ jsxs(ValuationGauge, { children: [
|
|
@@ -16608,7 +16970,7 @@ function PropertyValuation({
|
|
|
16608
16970
|
/* @__PURE__ */ jsx(GaugeIndicator, { $position: gaugePosition }),
|
|
16609
16971
|
/* @__PURE__ */ jsxs(GaugePriceTag, { $position: gaugePosition, children: [
|
|
16610
16972
|
/* @__PURE__ */ jsx("span", { children: "IPO Price" }),
|
|
16611
|
-
/* @__PURE__ */ jsx("span", { style: { color: "#
|
|
16973
|
+
/* @__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
16974
|
] })
|
|
16613
16975
|
] }),
|
|
16614
16976
|
/* @__PURE__ */ jsxs(ValuationDetails, { children: [
|
|
@@ -16623,7 +16985,7 @@ function PropertyValuation({
|
|
|
16623
16985
|
"m)"
|
|
16624
16986
|
] })
|
|
16625
16987
|
] }) : /* @__PURE__ */ jsx(Skeleton, { width: 90, height: 16 }) }) }),
|
|
16626
|
-
/* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsx(ValuationValue, { style: { color: "#
|
|
16988
|
+
/* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsx(ValuationValue, { style: { color: "#E6C87E" }, children: tokenPriceValue != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16627
16989
|
/* @__PURE__ */ jsx("span", { children: `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` }),
|
|
16628
16990
|
totalUnits > 0 && /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.8rem", fontWeight: "normal", color: "rgba(255,255,255,0.6)" }, children: [
|
|
16629
16991
|
"($",
|
|
@@ -16683,8 +17045,8 @@ function PropertyValuation({
|
|
|
16683
17045
|
{
|
|
16684
17046
|
$active: hoveredSaleYear === marker.year,
|
|
16685
17047
|
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" : "#
|
|
17048
|
+
backgroundColor: marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#E6C87E",
|
|
17049
|
+
boxShadow: hoveredSaleYear === marker.year ? `0 0 12px ${marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#E6C87E"}` : "none"
|
|
16688
17050
|
}
|
|
16689
17051
|
}
|
|
16690
17052
|
),
|
|
@@ -16866,7 +17228,7 @@ var ValuationGauge = styled9.div`
|
|
|
16866
17228
|
var GaugeBackground = styled9.div`
|
|
16867
17229
|
height: 8px;
|
|
16868
17230
|
border-radius: 4px;
|
|
16869
|
-
background: linear-gradient(to right, #4CAF50 0%, #4CAF50 33%, #
|
|
17231
|
+
background: linear-gradient(to right, #4CAF50 0%, #4CAF50 33%, #E6C87E 33%, #E6C87E 66%, #F44336 66%, #F44336 100%);
|
|
16870
17232
|
`;
|
|
16871
17233
|
var GaugeIndicator = styled9.div`
|
|
16872
17234
|
position: absolute;
|
|
@@ -16875,7 +17237,7 @@ var GaugeIndicator = styled9.div`
|
|
|
16875
17237
|
transform: translateX(-50%);
|
|
16876
17238
|
width: 3px;
|
|
16877
17239
|
height: 30px;
|
|
16878
|
-
background: #
|
|
17240
|
+
background: #E6C87E;
|
|
16879
17241
|
border-radius: 2px;
|
|
16880
17242
|
`;
|
|
16881
17243
|
var GaugePriceTag = styled9.div`
|
|
@@ -17080,7 +17442,7 @@ var FeatureTooltip = styled9.div`
|
|
|
17080
17442
|
max-width: 220px;
|
|
17081
17443
|
padding: 0.65rem 0.85rem;
|
|
17082
17444
|
border-radius: 10px;
|
|
17083
|
-
border: 1px solid var(--color-accent, #
|
|
17445
|
+
border: 1px solid var(--color-accent, #E6C87E);
|
|
17084
17446
|
background: rgba(20, 23, 29, 0.95);
|
|
17085
17447
|
color: white;
|
|
17086
17448
|
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35);
|
|
@@ -17093,7 +17455,7 @@ var FeatureTooltip = styled9.div`
|
|
|
17093
17455
|
h4 {
|
|
17094
17456
|
margin: 0 0 0.2rem;
|
|
17095
17457
|
font-size: 0.9rem;
|
|
17096
|
-
color: var(--color-accent, #
|
|
17458
|
+
color: var(--color-accent, #E6C87E);
|
|
17097
17459
|
font-weight: 600;
|
|
17098
17460
|
}
|
|
17099
17461
|
|
|
@@ -17194,12 +17556,27 @@ var MainImage = styled9.img`
|
|
|
17194
17556
|
opacity: ${(p) => p.$visible ? 1 : 0};
|
|
17195
17557
|
pointer-events: ${(p) => p.$visible ? "auto" : "none"};
|
|
17196
17558
|
transition: opacity 300ms ease;
|
|
17559
|
+
/* Inset box excludes the bottom thumbnail strip so margin:auto centres the image in the
|
|
17560
|
+
space ABOVE the thumbnails (absolute ignores the parent's padding). */
|
|
17197
17561
|
position: absolute;
|
|
17198
|
-
|
|
17562
|
+
top: 24px;
|
|
17563
|
+
left: 24px;
|
|
17564
|
+
right: 24px;
|
|
17565
|
+
bottom: 120px;
|
|
17199
17566
|
margin: auto;
|
|
17200
17567
|
|
|
17568
|
+
/* Desktop: keep the image from dominating the viewport (incl. 14"/16" MacBooks). */
|
|
17569
|
+
@media (min-width: 769px) {
|
|
17570
|
+
max-width: 72%;
|
|
17571
|
+
max-height: 84%;
|
|
17572
|
+
}
|
|
17573
|
+
|
|
17201
17574
|
@media (max-width: 768px) {
|
|
17202
17575
|
max-width: 100%;
|
|
17576
|
+
left: 0;
|
|
17577
|
+
right: 0;
|
|
17578
|
+
top: 12px;
|
|
17579
|
+
bottom: 64px;
|
|
17203
17580
|
}
|
|
17204
17581
|
`;
|
|
17205
17582
|
var Hotspot = styled9.button`
|
|
@@ -17209,7 +17586,7 @@ var Hotspot = styled9.button`
|
|
|
17209
17586
|
border-radius: 50%;
|
|
17210
17587
|
border: none;
|
|
17211
17588
|
cursor: pointer;
|
|
17212
|
-
background: var(--color-accent, #
|
|
17589
|
+
background: var(--color-accent, #E6C87E);
|
|
17213
17590
|
color: #0b0e13;
|
|
17214
17591
|
transform: translate(-50%, -50%);
|
|
17215
17592
|
opacity: ${(p) => p.$visible ? 1 : 0};
|
|
@@ -17232,6 +17609,10 @@ var ThumbnailStrip = styled9.div`
|
|
|
17232
17609
|
overflow-x: auto;
|
|
17233
17610
|
background: linear-gradient(0deg, rgba(0, 0, 0, 0.9) 0%, transparent 100%);
|
|
17234
17611
|
|
|
17612
|
+
/* Hide the native scrollbar — still scrollable via drag/trackpad. */
|
|
17613
|
+
scrollbar-width: none;
|
|
17614
|
+
&::-webkit-scrollbar { display: none; }
|
|
17615
|
+
|
|
17235
17616
|
@media (max-width: 768px) {
|
|
17236
17617
|
display: none;
|
|
17237
17618
|
}
|
|
@@ -17241,7 +17622,7 @@ var Thumbnail3 = styled9.button`
|
|
|
17241
17622
|
height: 64px;
|
|
17242
17623
|
border-radius: 6px;
|
|
17243
17624
|
overflow: hidden;
|
|
17244
|
-
border: 2px solid ${(p) => p.$active ? "var(--color-accent, #
|
|
17625
|
+
border: 2px solid ${(p) => p.$active ? "var(--color-accent, #E6C87E)" : "transparent"};
|
|
17245
17626
|
opacity: ${(p) => p.$active ? 1 : 0.45};
|
|
17246
17627
|
transition: all 0.2s ease;
|
|
17247
17628
|
background: transparent;
|
|
@@ -17278,21 +17659,8 @@ var NavigationButton = styled9.button`
|
|
|
17278
17659
|
}
|
|
17279
17660
|
`;
|
|
17280
17661
|
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
|
-
}
|
|
17662
|
+
/* Slider/scrubber removed — navigate via thumbnails + arrows (desktop) or swipe (mobile). */
|
|
17663
|
+
display: none;
|
|
17296
17664
|
`;
|
|
17297
17665
|
var SliderTrack = styled9.div`
|
|
17298
17666
|
position: relative;
|
|
@@ -17305,7 +17673,7 @@ var SliderProgress = styled9.div`
|
|
|
17305
17673
|
position: absolute;
|
|
17306
17674
|
inset: 0;
|
|
17307
17675
|
width: ${(p) => p.$progress}%;
|
|
17308
|
-
background: linear-gradient(90deg, var(--color-accent, #
|
|
17676
|
+
background: linear-gradient(90deg, var(--color-accent, #E6C87E), rgba(240, 185, 11, 0.5));
|
|
17309
17677
|
border-radius: inherit;
|
|
17310
17678
|
`;
|
|
17311
17679
|
var SliderThumb = styled9.div`
|
|
@@ -17316,24 +17684,13 @@ var SliderThumb = styled9.div`
|
|
|
17316
17684
|
width: 18px;
|
|
17317
17685
|
height: 18px;
|
|
17318
17686
|
border-radius: 50%;
|
|
17319
|
-
background: var(--color-accent, #
|
|
17687
|
+
background: var(--color-accent, #E6C87E);
|
|
17320
17688
|
border: 3px solid white;
|
|
17321
17689
|
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3);
|
|
17322
17690
|
`;
|
|
17323
17691
|
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
|
-
}
|
|
17692
|
+
/* Per-image category labels removed from the fullscreen carousel. */
|
|
17693
|
+
display: none;
|
|
17337
17694
|
`;
|
|
17338
17695
|
var MobileDots = styled9.div`
|
|
17339
17696
|
position: absolute;
|
|
@@ -17352,7 +17709,7 @@ var MobileDot = styled9.button`
|
|
|
17352
17709
|
height: 8px;
|
|
17353
17710
|
border-radius: 50%;
|
|
17354
17711
|
border: none;
|
|
17355
|
-
background: ${(p) => p.$active ? "var(--color-accent, #
|
|
17712
|
+
background: ${(p) => p.$active ? "var(--color-accent, #E6C87E)" : "rgba(255,255,255,0.3)"};
|
|
17356
17713
|
${(p) => p.$active && css`
|
|
17357
17714
|
transform: scale(1.2);
|
|
17358
17715
|
`}
|