@loafmarkets/ui 0.1.350 → 0.1.352
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 +13 -3
- package/dist/index.d.ts +13 -3
- package/dist/index.js +121 -134
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +121 -134
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -6678,7 +6678,11 @@ var LoginPopup = ({
|
|
|
6678
6678
|
try {
|
|
6679
6679
|
await onVerifyEmailCode({ code, email });
|
|
6680
6680
|
if (isSignUp) {
|
|
6681
|
-
|
|
6681
|
+
if (onSubmitReferralCode) {
|
|
6682
|
+
setView("referral");
|
|
6683
|
+
} else {
|
|
6684
|
+
onClose();
|
|
6685
|
+
}
|
|
6682
6686
|
setLoading(false);
|
|
6683
6687
|
return;
|
|
6684
6688
|
}
|
|
@@ -6891,7 +6895,8 @@ var LoginPopup = ({
|
|
|
6891
6895
|
loading ? /* @__PURE__ */ jsxs(AccountCreationLoader, { children: [
|
|
6892
6896
|
/* @__PURE__ */ jsx(SpinnerRing, {}),
|
|
6893
6897
|
/* @__PURE__ */ jsx(AccountCreationText, { children: isSignUp ? "Preparing your account\u2026" : "Signing you in\u2026" }),
|
|
6894
|
-
/* @__PURE__ */ jsx(AccountCreationSubtext, { children: "This may take a few seconds" })
|
|
6898
|
+
/* @__PURE__ */ jsx(AccountCreationSubtext, { children: "This may take a few seconds" }),
|
|
6899
|
+
/* @__PURE__ */ jsx(PreparingFacts, {})
|
|
6895
6900
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6896
6901
|
/* @__PURE__ */ jsxs(BackButton, { onClick: () => setView("email"), children: [
|
|
6897
6902
|
/* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" }) }),
|
|
@@ -7094,7 +7099,7 @@ var LoginPopup = ({
|
|
|
7094
7099
|
setReferralLoading(true);
|
|
7095
7100
|
try {
|
|
7096
7101
|
await onSubmitReferralCode?.(trimmed);
|
|
7097
|
-
|
|
7102
|
+
onClose();
|
|
7098
7103
|
} catch (err) {
|
|
7099
7104
|
setReferralError(err instanceof Error ? err.message : "Invalid referral code. Please try again.");
|
|
7100
7105
|
} finally {
|
|
@@ -7121,7 +7126,7 @@ var LoginPopup = ({
|
|
|
7121
7126
|
/* @__PURE__ */ jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
7122
7127
|
] }) }),
|
|
7123
7128
|
/* @__PURE__ */ jsx(OnboardingHeading, { children: "Do you have a referral code?" }),
|
|
7124
|
-
/* @__PURE__ */ jsx(OnboardingSubtext, { style: { marginBottom: "1.5rem" }, children: "Enter your code to unlock
|
|
7129
|
+
/* @__PURE__ */ jsx(OnboardingSubtext, { style: { marginBottom: "1.5rem" }, children: "Enter your code to unlock $100k in testnet USD, or skip to continue." }),
|
|
7125
7130
|
/* @__PURE__ */ jsxs(EmailFormContainer, { style: { width: "100%", marginBottom: 0 }, children: [
|
|
7126
7131
|
/* @__PURE__ */ jsx(
|
|
7127
7132
|
EmailInput,
|
|
@@ -7154,7 +7159,7 @@ var LoginPopup = ({
|
|
|
7154
7159
|
OnboardingSkipButton,
|
|
7155
7160
|
{
|
|
7156
7161
|
type: "button",
|
|
7157
|
-
onClick:
|
|
7162
|
+
onClick: onClose,
|
|
7158
7163
|
style: { marginTop: "0.75rem" },
|
|
7159
7164
|
children: "Skip for now"
|
|
7160
7165
|
}
|
|
@@ -7996,6 +8001,59 @@ var SpinnerRing = styled9.div`
|
|
|
7996
8001
|
to { transform: rotate(360deg); }
|
|
7997
8002
|
}
|
|
7998
8003
|
`;
|
|
8004
|
+
var PREPARING_FACTS = [
|
|
8005
|
+
"Property is the world's largest asset class \u2014 worth over US$300 trillion.",
|
|
8006
|
+
"Loaf settles trades in about 1 second. Traditional property takes ~90 days.",
|
|
8007
|
+
"Our matching engine processes orders in 30 microseconds.",
|
|
8008
|
+
"Every token is backed 1:1 by land-title-registered property.",
|
|
8009
|
+
"Own a slice of premium real estate \u2014 no mortgage, no paperwork.",
|
|
8010
|
+
"Buy and sell property as easily as a stock, on a live orderbook.",
|
|
8011
|
+
"Earn rental yield on the exact fraction of property you own.",
|
|
8012
|
+
"Title-backed by the NSW Land Registry \u2014 real ownership, on-chain.",
|
|
8013
|
+
"Loaf ran the world's first property IPO."
|
|
8014
|
+
];
|
|
8015
|
+
var FactCard = styled9.div`
|
|
8016
|
+
margin-top: 1.5rem;
|
|
8017
|
+
max-width: 340px;
|
|
8018
|
+
padding: 0.85rem 1.1rem;
|
|
8019
|
+
border: 1px solid rgba(230, 198, 86, 0.18);
|
|
8020
|
+
border-radius: 12px;
|
|
8021
|
+
background: rgba(230, 198, 86, 0.05);
|
|
8022
|
+
text-align: center;
|
|
8023
|
+
`;
|
|
8024
|
+
var FactLabel = styled9.div`
|
|
8025
|
+
font-size: 0.6rem;
|
|
8026
|
+
letter-spacing: 0.12em;
|
|
8027
|
+
text-transform: uppercase;
|
|
8028
|
+
font-weight: 700;
|
|
8029
|
+
color: var(--color-accent, #e6c656);
|
|
8030
|
+
margin-bottom: 0.4rem;
|
|
8031
|
+
`;
|
|
8032
|
+
var FactText = styled9.p`
|
|
8033
|
+
margin: 0;
|
|
8034
|
+
font-size: 0.85rem;
|
|
8035
|
+
line-height: 1.5;
|
|
8036
|
+
color: var(--color-text, #eaecef);
|
|
8037
|
+
animation: factFade 0.5s ease;
|
|
8038
|
+
|
|
8039
|
+
@keyframes factFade {
|
|
8040
|
+
from { opacity: 0; transform: translateY(4px); }
|
|
8041
|
+
to { opacity: 1; transform: translateY(0); }
|
|
8042
|
+
}
|
|
8043
|
+
`;
|
|
8044
|
+
var PreparingFacts = () => {
|
|
8045
|
+
const [index, setIndex] = useState(() => Math.floor(Math.random() * PREPARING_FACTS.length));
|
|
8046
|
+
useEffect(() => {
|
|
8047
|
+
const id = setInterval(() => {
|
|
8048
|
+
setIndex((i) => (i + 1) % PREPARING_FACTS.length);
|
|
8049
|
+
}, 4e3);
|
|
8050
|
+
return () => clearInterval(id);
|
|
8051
|
+
}, []);
|
|
8052
|
+
return /* @__PURE__ */ jsxs(FactCard, { children: [
|
|
8053
|
+
/* @__PURE__ */ jsx(FactLabel, { children: "Did you know?" }),
|
|
8054
|
+
/* @__PURE__ */ jsx(FactText, { children: PREPARING_FACTS[index] }, index)
|
|
8055
|
+
] });
|
|
8056
|
+
};
|
|
7999
8057
|
LoginPopup.displayName = "LoginPopup";
|
|
8000
8058
|
var PropertyCompareBar = React5.forwardRef(
|
|
8001
8059
|
({
|
|
@@ -8939,7 +8997,9 @@ function PropertyOverview({
|
|
|
8939
8997
|
volume24h,
|
|
8940
8998
|
openOrdersValue,
|
|
8941
8999
|
holderCount,
|
|
8942
|
-
priceHistory: priceHistoryProp
|
|
9000
|
+
priceHistory: priceHistoryProp,
|
|
9001
|
+
beta = false,
|
|
9002
|
+
marketHours
|
|
8943
9003
|
}) {
|
|
8944
9004
|
const [isDescExpanded, setDescExpanded] = useState(false);
|
|
8945
9005
|
const [showDividendHistory, setShowDividendHistory] = useState(false);
|
|
@@ -9001,20 +9061,21 @@ function PropertyOverview({
|
|
|
9001
9061
|
{ label: "Open Orders", value: isLoading && openOrdersValue == null ? loadingSkeleton : openOrdersValue != null && openOrdersValue > 0 ? fmtDollar(openOrdersValue) : "\u2014" },
|
|
9002
9062
|
{ label: "Holders", value: isLoading && holderCount == null ? loadingSkeleton : holderCount != null ? holderCount.toLocaleString() : "\u2014" }
|
|
9003
9063
|
];
|
|
9004
|
-
const
|
|
9005
|
-
const monthlyDivPerShare = annualDividend && resolvedTokensIssued ? annualDividend / 12 / resolvedTokensIssued : null;
|
|
9064
|
+
const growthPct = overviewData?.growth5Yr;
|
|
9006
9065
|
const propertyStats = [
|
|
9007
9066
|
{ label: "Property Value", value: isLoading && tokenMarketCap == null ? loadingSkeleton : tokenMarketCap ? fmtDollar(tokenMarketCap) : "\u2014" },
|
|
9008
|
-
{ label: "Offers", value: "3" },
|
|
9009
|
-
{ label: "Growth (5yr)", value: "+
|
|
9010
|
-
{ label: "Last Dividend", value:
|
|
9011
|
-
{ label: "Next Dividend", value: (()
|
|
9012
|
-
const now = /* @__PURE__ */ new Date();
|
|
9013
|
-
const lastDay = new Date(now.getFullYear(), now.getMonth() + 1, 0);
|
|
9014
|
-
while (lastDay.getDay() === 0 || lastDay.getDay() === 6) lastDay.setDate(lastDay.getDate() - 1);
|
|
9015
|
-
return lastDay.toLocaleDateString("en-AU", { day: "2-digit", month: "short", year: "numeric" });
|
|
9016
|
-
})() }
|
|
9067
|
+
...beta ? [] : [{ label: "Offers", value: "3" }],
|
|
9068
|
+
{ label: "Growth (5yr)", value: growthPct != null ? `${growthPct > 0 ? "+" : ""}${growthPct}%` : "\u2014" },
|
|
9069
|
+
{ label: "Last Dividend", value: overviewData?.lastDividend != null ? `$${overviewData.lastDividend.toFixed(2)}` : "\u2014" },
|
|
9070
|
+
{ label: "Next Dividend", value: overviewData?.nextDividendDate != null ? new Date(overviewData.nextDividendDate * 1e3).toLocaleDateString("en-AU", { day: "2-digit", month: "short", year: "numeric" }) : "\u2014" }
|
|
9017
9071
|
];
|
|
9072
|
+
const ownershipLabel = overviewData?.ownership ? overviewData.ownership.charAt(0).toUpperCase() + overviewData.ownership.slice(1).toLowerCase() : null;
|
|
9073
|
+
const propertyHistory = overviewData?.propertyHistory ?? [];
|
|
9074
|
+
const closedDays = marketHours?.marketClosedDays.filter((d) => d.toLowerCase() !== "never") ?? [];
|
|
9075
|
+
const tradingHoursValue = marketHours ? marketHours.marketOpenTime === marketHours.marketCloseTime ? "24 Hours" : `${marketHours.marketOpenTime} \u2013 ${marketHours.marketCloseTime}` : "";
|
|
9076
|
+
const tradingDaysValue = marketHours ? closedDays.length ? `Closed ${closedDays.join(", ")}` : "Every day" : "";
|
|
9077
|
+
const tradingHoursNote = marketHours ? `All times shown in ${marketHours.marketTimezone}.` : "";
|
|
9078
|
+
const showTradingHours = marketHours != null;
|
|
9018
9079
|
return /* @__PURE__ */ jsxs(Wrapper, { children: [
|
|
9019
9080
|
/* @__PURE__ */ jsxs(Section, { children: [
|
|
9020
9081
|
/* @__PURE__ */ jsx(SectionHeader, { children: "About" }),
|
|
@@ -9066,7 +9127,7 @@ function PropertyOverview({
|
|
|
9066
9127
|
/* @__PURE__ */ jsx(StatsRowLabel, { children: "Token Performance" }),
|
|
9067
9128
|
/* @__PURE__ */ jsx(StatsHRow, { children: tokenStats.map((item) => /* @__PURE__ */ jsxs(StatsHCell, { children: [
|
|
9068
9129
|
/* @__PURE__ */ jsx(StatsHCellLabel, { children: item.label }),
|
|
9069
|
-
item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatsHCellValue, { $gold: !!item.gold, children: item.value })
|
|
9130
|
+
item.label === "Holders" && holderCount != null && !beta ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatsHCellValue, { $gold: !!item.gold, children: item.value })
|
|
9070
9131
|
] }, item.label)) })
|
|
9071
9132
|
] }),
|
|
9072
9133
|
/* @__PURE__ */ jsxs(StatsRowSection, { children: [
|
|
@@ -9075,7 +9136,7 @@ function PropertyOverview({
|
|
|
9075
9136
|
/* @__PURE__ */ jsx(StatsHCellLabel, { children: item.label }),
|
|
9076
9137
|
/* @__PURE__ */ jsx(StatsHCellValue, { children: item.value })
|
|
9077
9138
|
] }, item.label)) }),
|
|
9078
|
-
/* @__PURE__ */ jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
|
|
9139
|
+
!beta && /* @__PURE__ */ jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
|
|
9079
9140
|
] })
|
|
9080
9141
|
] }),
|
|
9081
9142
|
/* @__PURE__ */ jsx(StatsMobile, { children: /* @__PURE__ */ jsxs(StatsTabbedCard, { children: [
|
|
@@ -9085,14 +9146,14 @@ function PropertyOverview({
|
|
|
9085
9146
|
] }),
|
|
9086
9147
|
statsTab === "token" && /* @__PURE__ */ jsx(StatsTabContent, { children: tokenStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { $gold: !!item.gold, children: [
|
|
9087
9148
|
/* @__PURE__ */ jsx(StatLabel, { children: item.label }),
|
|
9088
|
-
item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatValue, { $gold: !!item.gold, children: item.value })
|
|
9149
|
+
item.label === "Holders" && holderCount != null && !beta ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatValue, { $gold: !!item.gold, children: item.value })
|
|
9089
9150
|
] }, item.label)) }),
|
|
9090
9151
|
statsTab === "property" && /* @__PURE__ */ jsxs(StatsTabContent, { children: [
|
|
9091
9152
|
propertyStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9092
9153
|
/* @__PURE__ */ jsx(StatLabel, { children: item.label }),
|
|
9093
9154
|
/* @__PURE__ */ jsx(StatValue, { children: item.value })
|
|
9094
9155
|
] }, item.label)),
|
|
9095
|
-
/* @__PURE__ */ jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
|
|
9156
|
+
!beta && /* @__PURE__ */ jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
|
|
9096
9157
|
] })
|
|
9097
9158
|
] }) })
|
|
9098
9159
|
] }),
|
|
@@ -9141,122 +9202,61 @@ function PropertyOverview({
|
|
|
9141
9202
|
/* @__PURE__ */ jsxs(StatsColumn, { children: [
|
|
9142
9203
|
/* @__PURE__ */ jsx(StatsColumnHeader, { children: "Asset Specification" }),
|
|
9143
9204
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9144
|
-
/* @__PURE__ */
|
|
9145
|
-
|
|
9146
|
-
|
|
9147
|
-
|
|
9148
|
-
|
|
9205
|
+
/* @__PURE__ */ jsxs(StatLabel, { children: [
|
|
9206
|
+
"Land",
|
|
9207
|
+
ownershipLabel ? ` (${ownershipLabel})` : ""
|
|
9208
|
+
] }),
|
|
9209
|
+
/* @__PURE__ */ jsx(StatValue, { children: landSize != null ? `${landSize.toLocaleString()} sqm` : "\u2014" })
|
|
9149
9210
|
] }),
|
|
9150
9211
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9151
9212
|
/* @__PURE__ */ jsx(StatLabel, { children: "Interior" }),
|
|
9152
|
-
/* @__PURE__ */
|
|
9153
|
-
buildingSize?.toLocaleString() ?? "~800",
|
|
9154
|
-
" sqm"
|
|
9155
|
-
] })
|
|
9213
|
+
/* @__PURE__ */ jsx(StatValue, { children: buildingSize != null ? `${buildingSize.toLocaleString()} sqm` : "\u2014" })
|
|
9156
9214
|
] }),
|
|
9157
9215
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9158
9216
|
/* @__PURE__ */ jsx(StatLabel, { children: "Built" }),
|
|
9159
|
-
/* @__PURE__ */ jsx(StatValue, { children: "
|
|
9217
|
+
/* @__PURE__ */ jsx(StatValue, { children: overviewData?.yearBuilt ?? "\u2014" })
|
|
9160
9218
|
] }),
|
|
9161
9219
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9162
9220
|
/* @__PURE__ */ jsx(StatLabel, { children: "Heritage Status" }),
|
|
9163
|
-
/* @__PURE__ */ jsx(StatValue, { children:
|
|
9221
|
+
/* @__PURE__ */ jsx(StatValue, { children: overviewData?.heritageStatus || "\u2014" })
|
|
9164
9222
|
] }),
|
|
9165
9223
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9166
9224
|
/* @__PURE__ */ jsx(StatLabel, { children: "Zoning" }),
|
|
9167
|
-
/* @__PURE__ */ jsx(StatValue, { children:
|
|
9225
|
+
/* @__PURE__ */ jsx(StatValue, { children: overviewData?.zoning || "\u2014" })
|
|
9168
9226
|
] }),
|
|
9169
9227
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9170
9228
|
/* @__PURE__ */ jsx(StatLabel, { children: "Development Optionality" }),
|
|
9171
|
-
/* @__PURE__ */ jsx(StatValue, {
|
|
9229
|
+
/* @__PURE__ */ jsx(StatValue, { children: overviewData?.developmentOptionality || "\u2014" })
|
|
9172
9230
|
] }),
|
|
9173
9231
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9174
|
-
/* @__PURE__ */ jsx(StatLabel, { children: "Suburb Median
|
|
9175
|
-
/* @__PURE__ */ jsx(StatValue, { children:
|
|
9232
|
+
/* @__PURE__ */ jsx(StatLabel, { children: "Suburb Median" }),
|
|
9233
|
+
/* @__PURE__ */ jsx(StatValue, { children: overviewData?.suburbMedian != null ? fmtDollar(overviewData.suburbMedian) : "\u2014" })
|
|
9176
9234
|
] }),
|
|
9177
9235
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9178
9236
|
/* @__PURE__ */ jsx(StatLabel, { children: "5yr Property Growth" }),
|
|
9179
|
-
/* @__PURE__ */ jsx(StatValue, { style: { color: "#4ade80" }, children: "+
|
|
9237
|
+
/* @__PURE__ */ jsx(StatValue, { style: growthPct != null && growthPct > 0 ? { color: "#4ade80" } : void 0, children: growthPct != null ? `${growthPct > 0 ? "+" : ""}${growthPct}%` : "\u2014" })
|
|
9180
9238
|
] }),
|
|
9181
9239
|
/* @__PURE__ */ jsxs(StatRow, { children: [
|
|
9182
9240
|
/* @__PURE__ */ jsx(StatLabel, { children: "Current Dividend" }),
|
|
9183
|
-
/* @__PURE__ */ jsx(StatValue, {
|
|
9241
|
+
/* @__PURE__ */ jsx(StatValue, { children: overviewData?.lastDividend != null ? `$${overviewData.lastDividend.toFixed(2)} / share / mo` : "\u2014" })
|
|
9184
9242
|
] }),
|
|
9185
|
-
/* @__PURE__ */
|
|
9186
|
-
|
|
9187
|
-
/* @__PURE__ */
|
|
9188
|
-
|
|
9189
|
-
/* @__PURE__ */
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
/* @__PURE__ */ jsxs(TimelineDetail, { children: [
|
|
9196
|
-
/* @__PURE__ */ jsx(TimelineLabel, { children: "Acquired" }),
|
|
9197
|
-
/* @__PURE__ */ jsx(TimelinePriceWrap, { children: /* @__PURE__ */ jsx(TimelinePrice, { children: "\xA340,000" }) })
|
|
9198
|
-
] })
|
|
9199
|
-
] }),
|
|
9200
|
-
/* @__PURE__ */ jsxs(TimelineEntry, { children: [
|
|
9201
|
-
/* @__PURE__ */ jsx(TimelineYear, { children: "1993" }),
|
|
9202
|
-
/* @__PURE__ */ jsx(TimelineDot, {}),
|
|
9203
|
-
/* @__PURE__ */ jsxs(TimelineDetail, { children: [
|
|
9204
|
-
/* @__PURE__ */ jsxs(TimelineLabel, { children: [
|
|
9205
|
-
"Sold ",
|
|
9206
|
-
/* @__PURE__ */ jsx(TimelineHoldPeriod, { children: "17 yrs" })
|
|
9207
|
-
] }),
|
|
9208
|
-
/* @__PURE__ */ jsxs(TimelinePriceWrap, { children: [
|
|
9209
|
-
/* @__PURE__ */ jsx(TimelineGain, { children: "+1,563%" }),
|
|
9210
|
-
/* @__PURE__ */ jsx(TimelinePrice, { children: "$1.33M" })
|
|
9211
|
-
] })
|
|
9212
|
-
] })
|
|
9213
|
-
] }),
|
|
9214
|
-
/* @__PURE__ */ jsxs(TimelineEntry, { children: [
|
|
9215
|
-
/* @__PURE__ */ jsx(TimelineYear, { children: "2006" }),
|
|
9216
|
-
/* @__PURE__ */ jsx(TimelineDot, {}),
|
|
9217
|
-
/* @__PURE__ */ jsxs(TimelineDetail, { children: [
|
|
9218
|
-
/* @__PURE__ */ jsxs(TimelineLabel, { children: [
|
|
9219
|
-
"Sold ",
|
|
9220
|
-
/* @__PURE__ */ jsx(TimelineHoldPeriod, { children: "13 yrs" })
|
|
9221
|
-
] }),
|
|
9222
|
-
/* @__PURE__ */ jsxs(TimelinePriceWrap, { children: [
|
|
9223
|
-
/* @__PURE__ */ jsx(TimelineGain, { children: "+491%" }),
|
|
9224
|
-
/* @__PURE__ */ jsx(TimelinePrice, { children: "$7.86M" })
|
|
9225
|
-
] })
|
|
9226
|
-
] })
|
|
9227
|
-
] }),
|
|
9228
|
-
/* @__PURE__ */ jsxs(TimelineEntry, { children: [
|
|
9229
|
-
/* @__PURE__ */ jsx(TimelineYear, { children: "2021" }),
|
|
9230
|
-
/* @__PURE__ */ jsx(TimelineDot, {}),
|
|
9231
|
-
/* @__PURE__ */ jsxs(TimelineDetail, { children: [
|
|
9232
|
-
/* @__PURE__ */ jsxs(TimelineLabel, { children: [
|
|
9233
|
-
"Sold (COVID correction) ",
|
|
9234
|
-
/* @__PURE__ */ jsx(TimelineHoldPeriod, { children: "15 yrs" })
|
|
9235
|
-
] }),
|
|
9236
|
-
/* @__PURE__ */ jsxs(TimelinePriceWrap, { children: [
|
|
9237
|
-
/* @__PURE__ */ jsx(TimelineGain, { children: "+16%" }),
|
|
9238
|
-
/* @__PURE__ */ jsx(TimelinePrice, { children: "$9.09M" })
|
|
9239
|
-
] })
|
|
9240
|
-
] })
|
|
9241
|
-
] }),
|
|
9242
|
-
/* @__PURE__ */ jsxs(TimelineEntry, { $last: true, children: [
|
|
9243
|
-
/* @__PURE__ */ jsx(TimelineYear, { children: "2026" }),
|
|
9244
|
-
/* @__PURE__ */ jsx(TimelineDot, { $active: true }),
|
|
9245
|
-
/* @__PURE__ */ jsxs(TimelineDetail, { children: [
|
|
9246
|
-
/* @__PURE__ */ jsxs(TimelineLabel, { children: [
|
|
9247
|
-
"Loaf Offering ",
|
|
9248
|
-
/* @__PURE__ */ jsx(TimelineHoldPeriod, { children: "5 yrs" })
|
|
9249
|
-
] }),
|
|
9250
|
-
/* @__PURE__ */ jsxs(TimelinePriceWrap, { children: [
|
|
9251
|
-
/* @__PURE__ */ jsx(TimelineGain, { children: "+105%" }),
|
|
9252
|
-
/* @__PURE__ */ jsx(TimelinePrice, { $gold: true, children: "$18.65M" })
|
|
9243
|
+
propertyHistory.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9244
|
+
/* @__PURE__ */ jsx(StatsColumnHeader, { style: { marginTop: "1.25rem" }, children: "Capital History" }),
|
|
9245
|
+
/* @__PURE__ */ jsx(TimelineWrap, { children: propertyHistory.map((h, i) => {
|
|
9246
|
+
const last = i === propertyHistory.length - 1;
|
|
9247
|
+
return /* @__PURE__ */ jsxs(TimelineEntry, { $last: last, children: [
|
|
9248
|
+
/* @__PURE__ */ jsx(TimelineYear, { children: h.year }),
|
|
9249
|
+
/* @__PURE__ */ jsx(TimelineDot, { $active: last }),
|
|
9250
|
+
/* @__PURE__ */ jsxs(TimelineDetail, { children: [
|
|
9251
|
+
/* @__PURE__ */ jsx(TimelineLabel, { children: h.event }),
|
|
9252
|
+
h.amount != null && /* @__PURE__ */ jsx(TimelinePriceWrap, { children: /* @__PURE__ */ jsx(TimelinePrice, { $gold: last, children: fmtDollar(h.amount) }) })
|
|
9253
9253
|
] })
|
|
9254
|
-
] })
|
|
9255
|
-
|
|
9254
|
+
] }, `${h.year}-${i}`);
|
|
9255
|
+
}) })
|
|
9256
9256
|
] })
|
|
9257
9257
|
] })
|
|
9258
9258
|
] }),
|
|
9259
|
-
/* @__PURE__ */ jsxs(AssetBentoNarratives, { children: [
|
|
9259
|
+
!beta && /* @__PURE__ */ jsxs(AssetBentoNarratives, { children: [
|
|
9260
9260
|
/* @__PURE__ */ jsxs(NarrativeCard, { children: [
|
|
9261
9261
|
/* @__PURE__ */ jsx(NarrativeIcon, { children: /* @__PURE__ */ jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ jsx("path", { d: "M22 12h-4l-3 9L9 3l-3 9H2" }) }) }),
|
|
9262
9262
|
/* @__PURE__ */ jsx(NarrativeTitle, { children: "Generational Compounding" }),
|
|
@@ -9278,23 +9278,23 @@ function PropertyOverview({
|
|
|
9278
9278
|
] })
|
|
9279
9279
|
] })
|
|
9280
9280
|
] }),
|
|
9281
|
-
/* @__PURE__ */ jsxs(Section, { children: [
|
|
9281
|
+
showTradingHours && /* @__PURE__ */ jsxs(Section, { children: [
|
|
9282
9282
|
/* @__PURE__ */ jsx(SectionHeader, { children: "Trading Hours" }),
|
|
9283
9283
|
/* @__PURE__ */ jsxs(TradingHoursCard, { children: [
|
|
9284
9284
|
/* @__PURE__ */ jsxs(TradingHoursRow, { children: [
|
|
9285
9285
|
/* @__PURE__ */ jsx(THLabel, { children: "Session" }),
|
|
9286
|
-
/* @__PURE__ */ jsx(THLabel, { children: "Hours
|
|
9286
|
+
/* @__PURE__ */ jsx(THLabel, { children: "Hours" }),
|
|
9287
9287
|
/* @__PURE__ */ jsx(THLabel, { children: "Days" })
|
|
9288
9288
|
] }),
|
|
9289
9289
|
/* @__PURE__ */ jsxs(TradingHoursRow, { $last: true, children: [
|
|
9290
9290
|
/* @__PURE__ */ jsx(THValue, { children: "Continuous Trading" }),
|
|
9291
|
-
/* @__PURE__ */ jsx(THValue, { children:
|
|
9292
|
-
/* @__PURE__ */ jsx(THValue, { children:
|
|
9291
|
+
/* @__PURE__ */ jsx(THValue, { children: tradingHoursValue }),
|
|
9292
|
+
/* @__PURE__ */ jsx(THValue, { children: tradingDaysValue })
|
|
9293
9293
|
] }),
|
|
9294
|
-
/* @__PURE__ */ jsx(TradingHoursNote, { children:
|
|
9294
|
+
/* @__PURE__ */ jsx(TradingHoursNote, { children: tradingHoursNote })
|
|
9295
9295
|
] })
|
|
9296
9296
|
] }),
|
|
9297
|
-
/* @__PURE__ */ jsxs(Section, { children: [
|
|
9297
|
+
!beta && /* @__PURE__ */ jsxs(Section, { children: [
|
|
9298
9298
|
/* @__PURE__ */ jsx(SectionHeader, { children: "Tokenholder Security" }),
|
|
9299
9299
|
/* @__PURE__ */ jsxs(SecurityGrid, { children: [
|
|
9300
9300
|
/* @__PURE__ */ jsxs(SecurityCol, { children: [
|
|
@@ -9914,22 +9914,6 @@ var TimelinePrice = styled9.span`
|
|
|
9914
9914
|
color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
|
|
9915
9915
|
font-variant-numeric: tabular-nums;
|
|
9916
9916
|
`;
|
|
9917
|
-
var TimelineGain = styled9.span`
|
|
9918
|
-
font-size: 0.68rem;
|
|
9919
|
-
font-weight: 600;
|
|
9920
|
-
color: #4ade80;
|
|
9921
|
-
background: rgba(74,222,128,0.08);
|
|
9922
|
-
border: 1px solid rgba(74,222,128,0.15);
|
|
9923
|
-
padding: 1px 6px;
|
|
9924
|
-
border-radius: 4px;
|
|
9925
|
-
font-variant-numeric: tabular-nums;
|
|
9926
|
-
white-space: nowrap;
|
|
9927
|
-
`;
|
|
9928
|
-
var TimelineHoldPeriod = styled9.span`
|
|
9929
|
-
font-size: 0.68rem;
|
|
9930
|
-
color: rgba(255,255,255,0.25);
|
|
9931
|
-
font-weight: 400;
|
|
9932
|
-
`;
|
|
9933
9917
|
var FeaturesPanel = styled9.div`
|
|
9934
9918
|
display: flex;
|
|
9935
9919
|
flex-wrap: wrap;
|
|
@@ -18073,13 +18057,16 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
18073
18057
|
] });
|
|
18074
18058
|
}
|
|
18075
18059
|
var ToastContext = createContext(null);
|
|
18076
|
-
function ToastProvider({ children }) {
|
|
18060
|
+
function ToastProvider({ children, maxVisible }) {
|
|
18077
18061
|
const [toasts, setToasts] = useState([]);
|
|
18078
18062
|
const addToast = useCallback((data) => {
|
|
18079
18063
|
const id = `toast-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;
|
|
18080
|
-
setToasts((prev) =>
|
|
18064
|
+
setToasts((prev) => {
|
|
18065
|
+
const next = [...prev, { ...data, id }];
|
|
18066
|
+
return maxVisible && next.length > maxVisible ? next.slice(next.length - maxVisible) : next;
|
|
18067
|
+
});
|
|
18081
18068
|
return id;
|
|
18082
|
-
}, []);
|
|
18069
|
+
}, [maxVisible]);
|
|
18083
18070
|
const update = useCallback((id, patch) => {
|
|
18084
18071
|
setToasts((prev) => prev.map((t) => t.id === id ? { ...t, ...patch } : t));
|
|
18085
18072
|
}, []);
|