@loafmarkets/ui 0.1.39 → 0.1.41
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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +295 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +296 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -901,7 +901,7 @@ type PropertyBuyProps = {
|
|
|
901
901
|
walletUsdcBalance?: number | null;
|
|
902
902
|
walletPropertyTokenBalance?: number | null;
|
|
903
903
|
onPurchase?: (tokenAmount: number) => Promise<void>;
|
|
904
|
-
purchaseStatus?: 'idle' | 'checking-allowance' | 'approving' | 'purchasing' | 'success' | 'error';
|
|
904
|
+
purchaseStatus?: 'idle' | 'checking-allowance' | 'approving' | 'purchasing' | 'pending-allocation' | 'success' | 'error';
|
|
905
905
|
purchaseError?: string | null;
|
|
906
906
|
onDeposit?: () => void;
|
|
907
907
|
initialUserSubscriptions?: PropertySubscription[];
|
package/dist/index.d.ts
CHANGED
|
@@ -901,7 +901,7 @@ type PropertyBuyProps = {
|
|
|
901
901
|
walletUsdcBalance?: number | null;
|
|
902
902
|
walletPropertyTokenBalance?: number | null;
|
|
903
903
|
onPurchase?: (tokenAmount: number) => Promise<void>;
|
|
904
|
-
purchaseStatus?: 'idle' | 'checking-allowance' | 'approving' | 'purchasing' | 'success' | 'error';
|
|
904
|
+
purchaseStatus?: 'idle' | 'checking-allowance' | 'approving' | 'purchasing' | 'pending-allocation' | 'success' | 'error';
|
|
905
905
|
purchaseError?: string | null;
|
|
906
906
|
onDeposit?: () => void;
|
|
907
907
|
initialUserSubscriptions?: PropertySubscription[];
|
package/dist/index.js
CHANGED
|
@@ -2009,7 +2009,7 @@ function DesktopOrderbookLayout({
|
|
|
2009
2009
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2010
2010
|
"div",
|
|
2011
2011
|
{
|
|
2012
|
-
className: "divide-y divide-white/5 overflow-y-auto",
|
|
2012
|
+
className: "flex flex-col justify-end divide-y divide-white/5 overflow-y-auto",
|
|
2013
2013
|
style: { height: `${sectionHeight}px`, scrollbarGutter: "stable" },
|
|
2014
2014
|
children: asks.map((l, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2015
2015
|
DepthRow,
|
|
@@ -4875,6 +4875,7 @@ var Header = ({
|
|
|
4875
4875
|
const portfolioActive = resolvedActiveTab === "portfolio";
|
|
4876
4876
|
const learnActive = resolvedActiveTab === "learn";
|
|
4877
4877
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4878
|
+
/* @__PURE__ */ jsxRuntime.jsx(SafeAreaCover, {}),
|
|
4878
4879
|
/* @__PURE__ */ jsxRuntime.jsx(Overlay, { $isOpen: isMobileMenuOpen, onClick: () => setIsMobileMenuOpen(false) }),
|
|
4879
4880
|
/* @__PURE__ */ jsxRuntime.jsxs(HeaderContainer, { children: [
|
|
4880
4881
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
|
|
@@ -5124,6 +5125,17 @@ var Header = ({
|
|
|
5124
5125
|
] });
|
|
5125
5126
|
};
|
|
5126
5127
|
Header.displayName = "Header";
|
|
5128
|
+
var SafeAreaCover = styled24__default.default.div`
|
|
5129
|
+
position: fixed;
|
|
5130
|
+
top: 0;
|
|
5131
|
+
left: 0;
|
|
5132
|
+
right: 0;
|
|
5133
|
+
height: env(safe-area-inset-top, 0px);
|
|
5134
|
+
min-height: env(safe-area-inset-top, 0px);
|
|
5135
|
+
background-color: #0d1117;
|
|
5136
|
+
z-index: 1001;
|
|
5137
|
+
pointer-events: none;
|
|
5138
|
+
`;
|
|
5127
5139
|
var Overlay = styled24__default.default.div`
|
|
5128
5140
|
display: ${(props) => props.$isOpen ? "block" : "none"};
|
|
5129
5141
|
position: fixed;
|
|
@@ -5170,20 +5182,24 @@ var HeaderContainer = styled24__default.default.header`
|
|
|
5170
5182
|
display: flex;
|
|
5171
5183
|
justify-content: space-between;
|
|
5172
5184
|
align-items: center;
|
|
5185
|
+
/* Split padding so browsers that don't support env() inside shorthand
|
|
5186
|
+
still get the horizontal padding — only the top falls back to 0 */
|
|
5173
5187
|
padding: 0 2rem;
|
|
5188
|
+
padding-top: env(safe-area-inset-top, 0px);
|
|
5174
5189
|
background-color: #0d1117;
|
|
5175
5190
|
border-bottom: 1px solid #232a32;
|
|
5176
5191
|
position: sticky;
|
|
5177
5192
|
top: 0;
|
|
5178
|
-
left: 0;
|
|
5179
|
-
right: 0;
|
|
5180
5193
|
z-index: 1000;
|
|
5181
5194
|
width: 100%;
|
|
5182
|
-
height
|
|
5195
|
+
/* Fallback min-height for browsers that can't evaluate calc+env */
|
|
5196
|
+
min-height: 56px;
|
|
5197
|
+
min-height: calc(56px + env(safe-area-inset-top, 0px));
|
|
5183
5198
|
box-sizing: border-box;
|
|
5184
5199
|
|
|
5185
5200
|
@media (max-width: 768px) {
|
|
5186
5201
|
padding: 0 1rem;
|
|
5202
|
+
padding-top: env(safe-area-inset-top, 0px);
|
|
5187
5203
|
}
|
|
5188
5204
|
`;
|
|
5189
5205
|
var Logo = styled24__default.default.div`
|
|
@@ -7295,7 +7311,7 @@ function GalleryMapSection({
|
|
|
7295
7311
|
const [carouselIndex, setCarouselIndex] = React5.useState(0);
|
|
7296
7312
|
const [showVideo, setShowVideo] = React5.useState(false);
|
|
7297
7313
|
const [autoPlaying, setAutoPlaying] = React5.useState(autoPlay);
|
|
7298
|
-
const resolvedMapUrl = mapUrl ?? (tokenName ?
|
|
7314
|
+
const resolvedMapUrl = mapUrl ?? (tokenName ? `/map/${tokenName}?embed=true&zoom=14&hideOthers=true` : "about:blank");
|
|
7299
7315
|
React5.useEffect(() => {
|
|
7300
7316
|
if (!autoPlaying || images.length <= 1) return;
|
|
7301
7317
|
const interval = setInterval(() => {
|
|
@@ -8970,6 +8986,16 @@ var IPOAssetSelector = styled24__default.default.div`
|
|
|
8970
8986
|
z-index: 10;
|
|
8971
8987
|
transition: all 0.3s ease;
|
|
8972
8988
|
&:hover { box-shadow: 0 12px 32px rgba(0,0,0,0.4); border-color: rgba(255,255,255,0.15); }
|
|
8989
|
+
|
|
8990
|
+
@media (max-width: 768px) {
|
|
8991
|
+
flex-wrap: wrap;
|
|
8992
|
+
padding: 0.75rem 1rem;
|
|
8993
|
+
gap: 0.5rem;
|
|
8994
|
+
}
|
|
8995
|
+
|
|
8996
|
+
@media (max-width: 480px) {
|
|
8997
|
+
padding: 0.6rem 0.75rem;
|
|
8998
|
+
}
|
|
8973
8999
|
`;
|
|
8974
9000
|
var AssetSelectorDropdown = styled24__default.default.div`
|
|
8975
9001
|
display: flex;
|
|
@@ -8989,6 +9015,15 @@ var AssetName = styled24__default.default.div`
|
|
|
8989
9015
|
letter-spacing: -0.02em;
|
|
8990
9016
|
svg { margin-left: 0.75rem; transition: transform 0.3s cubic-bezier(0.4,0,0.2,1); opacity: 0.7; }
|
|
8991
9017
|
&:hover svg { opacity: 1; }
|
|
9018
|
+
|
|
9019
|
+
@media (max-width: 768px) {
|
|
9020
|
+
font-size: 1rem;
|
|
9021
|
+
}
|
|
9022
|
+
|
|
9023
|
+
@media (max-width: 480px) {
|
|
9024
|
+
font-size: 0.9rem;
|
|
9025
|
+
svg { margin-left: 0.4rem; width: 16px; height: 16px; }
|
|
9026
|
+
}
|
|
8992
9027
|
`;
|
|
8993
9028
|
var SelectorMetrics = styled24__default.default.div`
|
|
8994
9029
|
display: flex;
|
|
@@ -9000,6 +9035,20 @@ var SelectorMetrics = styled24__default.default.div`
|
|
|
9000
9035
|
background: rgba(255,255,255,0.03);
|
|
9001
9036
|
border-radius: 8px;
|
|
9002
9037
|
border: 1px solid rgba(255,255,255,0.05);
|
|
9038
|
+
|
|
9039
|
+
@media (max-width: 768px) {
|
|
9040
|
+
gap: 0.6rem;
|
|
9041
|
+
padding: 0.4rem 0.75rem;
|
|
9042
|
+
margin-right: 0;
|
|
9043
|
+
}
|
|
9044
|
+
|
|
9045
|
+
@media (max-width: 480px) {
|
|
9046
|
+
width: 100%;
|
|
9047
|
+
justify-content: center;
|
|
9048
|
+
margin-left: 0;
|
|
9049
|
+
padding: 0.35rem 0.5rem;
|
|
9050
|
+
gap: 0.5rem;
|
|
9051
|
+
}
|
|
9003
9052
|
`;
|
|
9004
9053
|
var MetricLabel2 = styled24__default.default.span`
|
|
9005
9054
|
font-size: 0.75rem;
|
|
@@ -9008,11 +9057,24 @@ var MetricLabel2 = styled24__default.default.span`
|
|
|
9008
9057
|
letter-spacing: 0.05em;
|
|
9009
9058
|
font-weight: 500;
|
|
9010
9059
|
margin-right: 0.5rem;
|
|
9060
|
+
|
|
9061
|
+
@media (max-width: 768px) {
|
|
9062
|
+
font-size: 0.65rem;
|
|
9063
|
+
margin-right: 0.35rem;
|
|
9064
|
+
}
|
|
9011
9065
|
`;
|
|
9012
9066
|
var MetricValue = styled24__default.default.span`
|
|
9013
9067
|
font-size: 1.25rem;
|
|
9014
9068
|
font-weight: 700;
|
|
9015
9069
|
color: ${(p) => p.$accent ? "#D4AF37" : "#fff"};
|
|
9070
|
+
|
|
9071
|
+
@media (max-width: 768px) {
|
|
9072
|
+
font-size: 1.05rem;
|
|
9073
|
+
}
|
|
9074
|
+
|
|
9075
|
+
@media (max-width: 480px) {
|
|
9076
|
+
font-size: 0.95rem;
|
|
9077
|
+
}
|
|
9016
9078
|
`;
|
|
9017
9079
|
var MetricChange = styled24__default.default.span`
|
|
9018
9080
|
font-size: 0.85rem;
|
|
@@ -9021,6 +9083,10 @@ var MetricChange = styled24__default.default.span`
|
|
|
9021
9083
|
display: flex;
|
|
9022
9084
|
align-items: center;
|
|
9023
9085
|
gap: 0.25rem;
|
|
9086
|
+
|
|
9087
|
+
@media (max-width: 768px) {
|
|
9088
|
+
font-size: 0.75rem;
|
|
9089
|
+
}
|
|
9024
9090
|
`;
|
|
9025
9091
|
var Separator = styled24__default.default.span`
|
|
9026
9092
|
font-size: 1rem;
|
|
@@ -9039,6 +9105,11 @@ var IPODropdown = styled24__default.default.div`
|
|
|
9039
9105
|
max-height: 360px;
|
|
9040
9106
|
overflow-y: auto;
|
|
9041
9107
|
border: 1px solid rgba(255,255,255,0.08);
|
|
9108
|
+
|
|
9109
|
+
@media (max-width: 480px) {
|
|
9110
|
+
max-height: 280px;
|
|
9111
|
+
border-radius: 12px;
|
|
9112
|
+
}
|
|
9042
9113
|
animation: slideDown 0.3s cubic-bezier(0.4,0,0.2,1);
|
|
9043
9114
|
@keyframes slideDown {
|
|
9044
9115
|
from { opacity: 0; transform: translateY(-10px); }
|
|
@@ -9726,6 +9797,7 @@ function OrderPanel({
|
|
|
9726
9797
|
displayedOwnedTokens,
|
|
9727
9798
|
ownedTokensJustUpdated,
|
|
9728
9799
|
lastOrderQuantity,
|
|
9800
|
+
orderPendingAllocation,
|
|
9729
9801
|
orderPlacedSuccess,
|
|
9730
9802
|
lastOrderDetails,
|
|
9731
9803
|
tokenQuantity,
|
|
@@ -9788,7 +9860,40 @@ function OrderPanel({
|
|
|
9788
9860
|
statusLabel
|
|
9789
9861
|
] })
|
|
9790
9862
|
] }),
|
|
9791
|
-
|
|
9863
|
+
orderPendingAllocation ? /* @__PURE__ */ jsxRuntime.jsxs(OrderPendingCard, { children: [
|
|
9864
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pending-header", children: [
|
|
9865
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "spinner" }),
|
|
9866
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
9867
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { children: "Processing Order" }),
|
|
9868
|
+
/* @__PURE__ */ jsxRuntime.jsx("small", { children: "Awaiting allocation..." })
|
|
9869
|
+
] })
|
|
9870
|
+
] }),
|
|
9871
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pending-body", children: [
|
|
9872
|
+
[
|
|
9873
|
+
{ label: "Units Requested", value: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9874
|
+
lastOrderDetails?.tokens?.toFixed(2) || "0.00",
|
|
9875
|
+
" ",
|
|
9876
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "rgba(255,255,255,0.4)", fontWeight: 400 }, children: tokenSymbol })
|
|
9877
|
+
] }) },
|
|
9878
|
+
{ label: "Price Per Unit", value: `$${tokenPrice.toFixed(2)}` },
|
|
9879
|
+
{
|
|
9880
|
+
label: `${tokenDisplayName} Exposure`,
|
|
9881
|
+
value: `${((lastOrderDetails?.tokens ?? 0) / supplyToSell * 100).toFixed(3)}%`
|
|
9882
|
+
}
|
|
9883
|
+
].map((row) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pending-row", children: [
|
|
9884
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: row.label }),
|
|
9885
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: row.value })
|
|
9886
|
+
] }, row.label)),
|
|
9887
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pending-total", children: [
|
|
9888
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Total Investment" }),
|
|
9889
|
+
/* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
|
|
9890
|
+
"$",
|
|
9891
|
+
lastOrderDetails?.total?.toLocaleString() || "0"
|
|
9892
|
+
] })
|
|
9893
|
+
] })
|
|
9894
|
+
] }),
|
|
9895
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pending-footnote", children: "Your order has been submitted and is being processed. This usually takes a few seconds." })
|
|
9896
|
+
] }) : orderPlacedSuccess ? /* @__PURE__ */ jsxRuntime.jsxs(OrderSuccessCard, { children: [
|
|
9792
9897
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "success-header", children: [
|
|
9793
9898
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "icon", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
|
|
9794
9899
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -9967,7 +10072,7 @@ function OrderPanel({
|
|
|
9967
10072
|
] })
|
|
9968
10073
|
] })
|
|
9969
10074
|
] }),
|
|
9970
|
-
!orderPlacedSuccess && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10075
|
+
!orderPlacedSuccess && !orderPendingAllocation && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9971
10076
|
SubscribeButton,
|
|
9972
10077
|
{
|
|
9973
10078
|
type: "button",
|
|
@@ -10048,9 +10153,10 @@ var Panel2 = styled24__default.default.div`
|
|
|
10048
10153
|
}
|
|
10049
10154
|
@media (max-width: 768px) {
|
|
10050
10155
|
padding: 1rem;
|
|
10051
|
-
|
|
10052
|
-
|
|
10053
|
-
|
|
10156
|
+
}
|
|
10157
|
+
@media (max-width: 480px) {
|
|
10158
|
+
padding: 0.75rem;
|
|
10159
|
+
border-radius: 6px;
|
|
10054
10160
|
}
|
|
10055
10161
|
`;
|
|
10056
10162
|
var PanelHeader2 = styled24__default.default.div`
|
|
@@ -10084,6 +10190,11 @@ var Card2 = styled24__default.default.div`
|
|
|
10084
10190
|
border: 1px solid rgba(255,255,255,0.15);
|
|
10085
10191
|
border-radius: 12px;
|
|
10086
10192
|
padding: 1rem 1.25rem;
|
|
10193
|
+
|
|
10194
|
+
@media (max-width: 480px) {
|
|
10195
|
+
padding: 0.75rem 1rem;
|
|
10196
|
+
border-radius: 10px;
|
|
10197
|
+
}
|
|
10087
10198
|
`;
|
|
10088
10199
|
var CardLabel = styled24__default.default.div`
|
|
10089
10200
|
font-size: 0.75rem;
|
|
@@ -10102,6 +10213,10 @@ var CardInputRow = styled24__default.default.div`
|
|
|
10102
10213
|
font-weight: 600;
|
|
10103
10214
|
color: #fff;
|
|
10104
10215
|
width: 100%;
|
|
10216
|
+
|
|
10217
|
+
@media (max-width: 480px) {
|
|
10218
|
+
font-size: 1.35rem;
|
|
10219
|
+
}
|
|
10105
10220
|
}
|
|
10106
10221
|
span {
|
|
10107
10222
|
font-size: 1rem;
|
|
@@ -10115,8 +10230,10 @@ var QuickSelectRow = styled24__default.default.div`
|
|
|
10115
10230
|
display: flex;
|
|
10116
10231
|
gap: 0.5rem;
|
|
10117
10232
|
margin-top: 0.75rem;
|
|
10233
|
+
flex-wrap: wrap;
|
|
10118
10234
|
button {
|
|
10119
10235
|
flex: 1;
|
|
10236
|
+
min-width: 50px;
|
|
10120
10237
|
padding: 0.4rem 0;
|
|
10121
10238
|
font-size: 0.75rem;
|
|
10122
10239
|
font-weight: 500;
|
|
@@ -10132,6 +10249,11 @@ var QuickSelectRow = styled24__default.default.div`
|
|
|
10132
10249
|
border-color: rgba(212,175,55,0.5);
|
|
10133
10250
|
color: #D4AF37;
|
|
10134
10251
|
}
|
|
10252
|
+
|
|
10253
|
+
@media (max-width: 480px) {
|
|
10254
|
+
gap: 0.35rem;
|
|
10255
|
+
button { font-size: 0.7rem; padding: 0.35rem 0; }
|
|
10256
|
+
}
|
|
10135
10257
|
`;
|
|
10136
10258
|
var FundsRow = styled24__default.default.div`
|
|
10137
10259
|
display: flex;
|
|
@@ -10255,6 +10377,10 @@ var BalanceValue = styled24__default.default.div`
|
|
|
10255
10377
|
color: #0ecb81;
|
|
10256
10378
|
font-weight: 600;
|
|
10257
10379
|
}
|
|
10380
|
+
|
|
10381
|
+
@media (max-width: 480px) {
|
|
10382
|
+
font-size: 1.2rem;
|
|
10383
|
+
}
|
|
10258
10384
|
`;
|
|
10259
10385
|
var BalanceAction = styled24__default.default.div`
|
|
10260
10386
|
font-size: 0.75rem;
|
|
@@ -10269,6 +10395,110 @@ var BalanceSub = styled24__default.default.div`
|
|
|
10269
10395
|
color: var(--color-text-secondary);
|
|
10270
10396
|
margin-top: 0.25rem;
|
|
10271
10397
|
`;
|
|
10398
|
+
var OrderPendingCard = styled24__default.default.div`
|
|
10399
|
+
margin-bottom: 1.5rem;
|
|
10400
|
+
background: linear-gradient(180deg, rgba(25,27,31,0.95) 0%, rgba(18,20,24,0.98) 100%);
|
|
10401
|
+
border: 1px solid rgba(212,175,55,0.08);
|
|
10402
|
+
border-radius: 12px;
|
|
10403
|
+
overflow: hidden;
|
|
10404
|
+
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
|
|
10405
|
+
|
|
10406
|
+
@keyframes spin {
|
|
10407
|
+
to { transform: rotate(360deg); }
|
|
10408
|
+
}
|
|
10409
|
+
|
|
10410
|
+
@keyframes pulse {
|
|
10411
|
+
0%, 100% { opacity: 1; }
|
|
10412
|
+
50% { opacity: 0.6; }
|
|
10413
|
+
}
|
|
10414
|
+
|
|
10415
|
+
.pending-header {
|
|
10416
|
+
border-bottom: 1px solid rgba(255,255,255,0.06);
|
|
10417
|
+
padding: 1.25rem 1.5rem;
|
|
10418
|
+
display: flex;
|
|
10419
|
+
align-items: center;
|
|
10420
|
+
gap: 0.875rem;
|
|
10421
|
+
background: linear-gradient(135deg, rgba(212,175,55,0.04) 0%, transparent 100%);
|
|
10422
|
+
|
|
10423
|
+
.spinner {
|
|
10424
|
+
width: 32px;
|
|
10425
|
+
height: 32px;
|
|
10426
|
+
border-radius: 50%;
|
|
10427
|
+
border: 2.5px solid rgba(212,175,55,0.15);
|
|
10428
|
+
border-top-color: #D4AF37;
|
|
10429
|
+
animation: spin 0.8s linear infinite;
|
|
10430
|
+
flex-shrink: 0;
|
|
10431
|
+
}
|
|
10432
|
+
|
|
10433
|
+
p {
|
|
10434
|
+
font-size: 0.95rem;
|
|
10435
|
+
font-weight: 600;
|
|
10436
|
+
color: #fff;
|
|
10437
|
+
margin: 0;
|
|
10438
|
+
animation: pulse 2s ease-in-out infinite;
|
|
10439
|
+
}
|
|
10440
|
+
small {
|
|
10441
|
+
font-size: 0.7rem;
|
|
10442
|
+
color: rgba(255,255,255,0.4);
|
|
10443
|
+
}
|
|
10444
|
+
}
|
|
10445
|
+
|
|
10446
|
+
.pending-body {
|
|
10447
|
+
padding: 1.25rem 1.5rem;
|
|
10448
|
+
}
|
|
10449
|
+
.pending-row {
|
|
10450
|
+
display: flex;
|
|
10451
|
+
justify-content: space-between;
|
|
10452
|
+
align-items: center;
|
|
10453
|
+
padding-bottom: 0.875rem;
|
|
10454
|
+
margin-bottom: 0.875rem;
|
|
10455
|
+
border-bottom: 1px solid rgba(255,255,255,0.06);
|
|
10456
|
+
span {
|
|
10457
|
+
font-size: 0.75rem;
|
|
10458
|
+
color: rgba(255,255,255,0.4);
|
|
10459
|
+
text-transform: uppercase;
|
|
10460
|
+
letter-spacing: 0.05em;
|
|
10461
|
+
font-weight: 500;
|
|
10462
|
+
}
|
|
10463
|
+
strong {
|
|
10464
|
+
font-size: 0.95rem;
|
|
10465
|
+
font-weight: 500;
|
|
10466
|
+
color: rgba(255,255,255,0.5);
|
|
10467
|
+
font-family: monospace;
|
|
10468
|
+
}
|
|
10469
|
+
}
|
|
10470
|
+
.pending-total {
|
|
10471
|
+
display: flex;
|
|
10472
|
+
justify-content: space-between;
|
|
10473
|
+
align-items: center;
|
|
10474
|
+
padding: 0.875rem;
|
|
10475
|
+
background: rgba(212,175,55,0.03);
|
|
10476
|
+
border-radius: 8px;
|
|
10477
|
+
border: 1px solid rgba(212,175,55,0.06);
|
|
10478
|
+
span {
|
|
10479
|
+
font-size: 0.75rem;
|
|
10480
|
+
color: rgba(255,255,255,0.5);
|
|
10481
|
+
text-transform: uppercase;
|
|
10482
|
+
letter-spacing: 0.05em;
|
|
10483
|
+
font-weight: 500;
|
|
10484
|
+
}
|
|
10485
|
+
strong {
|
|
10486
|
+
font-size: 1.05rem;
|
|
10487
|
+
font-weight: 700;
|
|
10488
|
+
color: rgba(212,175,55,0.7);
|
|
10489
|
+
font-family: monospace;
|
|
10490
|
+
}
|
|
10491
|
+
}
|
|
10492
|
+
.pending-footnote {
|
|
10493
|
+
padding: 1rem 1.5rem;
|
|
10494
|
+
border-top: 1px solid rgba(255,255,255,0.06);
|
|
10495
|
+
background: rgba(0,0,0,0.2);
|
|
10496
|
+
font-size: 0.75rem;
|
|
10497
|
+
color: rgba(255,255,255,0.4);
|
|
10498
|
+
line-height: 1.6;
|
|
10499
|
+
animation: pulse 2s ease-in-out infinite;
|
|
10500
|
+
}
|
|
10501
|
+
`;
|
|
10272
10502
|
var OrderSuccessCard = styled24__default.default.div`
|
|
10273
10503
|
margin-bottom: 1.5rem;
|
|
10274
10504
|
background: linear-gradient(180deg, rgba(25,27,31,0.95) 0%, rgba(18,20,24,0.98) 100%);
|
|
@@ -10713,6 +10943,10 @@ var TabContainer = styled24__default.default.div`
|
|
|
10713
10943
|
gap: 0;
|
|
10714
10944
|
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
|
|
10715
10945
|
margin-bottom: 0.75rem;
|
|
10946
|
+
overflow-x: auto;
|
|
10947
|
+
-webkit-overflow-scrolling: touch;
|
|
10948
|
+
scrollbar-width: none;
|
|
10949
|
+
&::-webkit-scrollbar { display: none; }
|
|
10716
10950
|
`;
|
|
10717
10951
|
var Tab = styled24__default.default.button`
|
|
10718
10952
|
background: transparent;
|
|
@@ -10720,6 +10954,8 @@ var Tab = styled24__default.default.button`
|
|
|
10720
10954
|
padding: 0.6rem 1rem;
|
|
10721
10955
|
font-size: 0.75rem;
|
|
10722
10956
|
font-weight: 500;
|
|
10957
|
+
white-space: nowrap;
|
|
10958
|
+
flex-shrink: 0;
|
|
10723
10959
|
color: ${({ $active }) => $active ? "#f0b90b" : "rgba(255, 255, 255, 0.4)"};
|
|
10724
10960
|
cursor: pointer;
|
|
10725
10961
|
transition: color 0.15s;
|
|
@@ -10990,8 +11226,14 @@ var Row2 = styled24__default.default.div`
|
|
|
10990
11226
|
max-width: 1800px;
|
|
10991
11227
|
margin-left: auto;
|
|
10992
11228
|
margin-right: auto;
|
|
10993
|
-
|
|
11229
|
+
overflow: hidden;
|
|
11230
|
+
@media (max-width: 768px) {
|
|
10994
11231
|
grid-template-columns: 1fr;
|
|
11232
|
+
gap: 1rem;
|
|
11233
|
+
}
|
|
11234
|
+
& > * {
|
|
11235
|
+
min-width: 0;
|
|
11236
|
+
overflow: hidden;
|
|
10995
11237
|
}
|
|
10996
11238
|
`;
|
|
10997
11239
|
var TradeNewsPanel = styled24__default.default.div`
|
|
@@ -11003,8 +11245,8 @@ var TradeNewsPanel = styled24__default.default.div`
|
|
|
11003
11245
|
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
|
|
11004
11246
|
border: 1px solid var(--color-border);
|
|
11005
11247
|
min-height: 280px;
|
|
11006
|
-
overflow:
|
|
11007
|
-
@media (max-width:
|
|
11248
|
+
overflow: hidden;
|
|
11249
|
+
@media (max-width: 768px) {
|
|
11008
11250
|
max-width: 100%;
|
|
11009
11251
|
flex: 0 0 100%;
|
|
11010
11252
|
}
|
|
@@ -11112,6 +11354,7 @@ function OrderConfirmationModal({
|
|
|
11112
11354
|
tokenQuantity,
|
|
11113
11355
|
tokenPrice,
|
|
11114
11356
|
propertyName,
|
|
11357
|
+
tokenSymbol,
|
|
11115
11358
|
estExposure,
|
|
11116
11359
|
orderTotal,
|
|
11117
11360
|
availableBalance,
|
|
@@ -11126,7 +11369,7 @@ function OrderConfirmationModal({
|
|
|
11126
11369
|
/* @__PURE__ */ jsxRuntime.jsx(ModalBody, { children: [
|
|
11127
11370
|
{ label: "Order Type", value: "Primary Offering" },
|
|
11128
11371
|
{ label: "Property", value: propertyName },
|
|
11129
|
-
{ label: "Units", value: `${tokenQuantity.toLocaleString()}
|
|
11372
|
+
{ label: "Units", value: `${tokenQuantity.toLocaleString()} ${tokenSymbol}`, highlight: true },
|
|
11130
11373
|
{
|
|
11131
11374
|
label: "Unit Price",
|
|
11132
11375
|
value: `$${tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
|
|
@@ -11157,7 +11400,9 @@ function OrderConfirmationModal({
|
|
|
11157
11400
|
"Your order for ",
|
|
11158
11401
|
/* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
|
|
11159
11402
|
tokenQuantity.toLocaleString(),
|
|
11160
|
-
"
|
|
11403
|
+
" ",
|
|
11404
|
+
tokenSymbol,
|
|
11405
|
+
" units"
|
|
11161
11406
|
] }),
|
|
11162
11407
|
" in the",
|
|
11163
11408
|
" ",
|
|
@@ -11386,6 +11631,7 @@ function PropertyBuy({
|
|
|
11386
11631
|
const [displayedOwnedTokens, setDisplayedOwnedTokens] = React5.useState(0);
|
|
11387
11632
|
const [ownedTokensJustUpdated, setOwnedTokensJustUpdated] = React5.useState(false);
|
|
11388
11633
|
const [lastOrderQuantity, setLastOrderQuantity] = React5.useState(0);
|
|
11634
|
+
const [orderPendingAllocation, setOrderPendingAllocation] = React5.useState(false);
|
|
11389
11635
|
const [orderPlacedSuccess, setOrderPlacedSuccess] = React5.useState(false);
|
|
11390
11636
|
const [lastOrderDetails, setLastOrderDetails] = React5.useState(null);
|
|
11391
11637
|
const [showOrderConfirmModal, setShowOrderConfirmModal] = React5.useState(false);
|
|
@@ -11433,12 +11679,23 @@ function PropertyBuy({
|
|
|
11433
11679
|
}
|
|
11434
11680
|
setShowOrderConfirmModal(true);
|
|
11435
11681
|
};
|
|
11436
|
-
|
|
11682
|
+
React5.useEffect(() => {
|
|
11683
|
+
if (purchaseStatus === "success" && orderPendingAllocation) {
|
|
11684
|
+
setOrderPendingAllocation(false);
|
|
11685
|
+
setOrderPlacedSuccess(true);
|
|
11686
|
+
}
|
|
11687
|
+
}, [purchaseStatus, orderPendingAllocation]);
|
|
11688
|
+
const handlePlaceAnotherOrder = React5.useCallback(() => {
|
|
11689
|
+
setOrderPlacedSuccess(false);
|
|
11690
|
+
setOrderPendingAllocation(false);
|
|
11691
|
+
}, []);
|
|
11692
|
+
const isPurchaseInFlight = purchaseStatus === "checking-allowance" || purchaseStatus === "approving" || purchaseStatus === "purchasing" || purchaseStatus === "pending-allocation";
|
|
11437
11693
|
const getOrderButtonText = () => {
|
|
11438
11694
|
if (!isAuthenticated) return "Sign In to Invest";
|
|
11439
11695
|
if (purchaseStatus === "checking-allowance") return "Checking allowance\u2026";
|
|
11440
11696
|
if (purchaseStatus === "approving") return "Approving USDC\u2026";
|
|
11441
11697
|
if (purchaseStatus === "purchasing") return "Confirming purchase\u2026";
|
|
11698
|
+
if (purchaseStatus === "pending-allocation") return "Awaiting allocation\u2026";
|
|
11442
11699
|
if (ipoStatus === "PENDING" && !isPrivateClient) return "Sale Not Open Yet";
|
|
11443
11700
|
if (ipoStatus === "CLOSED") return "Sale Completed";
|
|
11444
11701
|
if (ipoStatus === "CANCELLED") return "Sale Cancelled";
|
|
@@ -11481,7 +11738,7 @@ function PropertyBuy({
|
|
|
11481
11738
|
total: orderTotal,
|
|
11482
11739
|
price: tokenPrice
|
|
11483
11740
|
});
|
|
11484
|
-
|
|
11741
|
+
setOrderPendingAllocation(true);
|
|
11485
11742
|
setSliderValue(0);
|
|
11486
11743
|
setManualOrderAmount(null);
|
|
11487
11744
|
};
|
|
@@ -11567,6 +11824,7 @@ function PropertyBuy({
|
|
|
11567
11824
|
displayedOwnedTokens,
|
|
11568
11825
|
ownedTokensJustUpdated,
|
|
11569
11826
|
lastOrderQuantity,
|
|
11827
|
+
orderPendingAllocation,
|
|
11570
11828
|
orderPlacedSuccess,
|
|
11571
11829
|
lastOrderDetails,
|
|
11572
11830
|
tokenQuantity,
|
|
@@ -11581,7 +11839,7 @@ function PropertyBuy({
|
|
|
11581
11839
|
orderButtonText: getOrderButtonText(),
|
|
11582
11840
|
isOrderButtonDisabled: isOrderButtonDisabled(),
|
|
11583
11841
|
hasInsufficientFunds,
|
|
11584
|
-
onPlaceAnotherOrder:
|
|
11842
|
+
onPlaceAnotherOrder: handlePlaceAnotherOrder,
|
|
11585
11843
|
onDeposit
|
|
11586
11844
|
}
|
|
11587
11845
|
),
|
|
@@ -11615,6 +11873,7 @@ function PropertyBuy({
|
|
|
11615
11873
|
tokenQuantity,
|
|
11616
11874
|
tokenPrice,
|
|
11617
11875
|
propertyName,
|
|
11876
|
+
tokenSymbol,
|
|
11618
11877
|
estExposure,
|
|
11619
11878
|
orderTotal,
|
|
11620
11879
|
availableBalance,
|
|
@@ -11655,29 +11914,42 @@ var HeroGrid = styled24__default.default.div`
|
|
|
11655
11914
|
}
|
|
11656
11915
|
|
|
11657
11916
|
@media (max-width: 1024px) {
|
|
11658
|
-
|
|
11659
|
-
|
|
11917
|
+
display: flex;
|
|
11918
|
+
flex-direction: column;
|
|
11660
11919
|
gap: 1rem;
|
|
11920
|
+
overflow: hidden;
|
|
11661
11921
|
|
|
11662
11922
|
& > div:nth-child(1) {
|
|
11663
11923
|
display: none;
|
|
11664
11924
|
}
|
|
11665
11925
|
|
|
11666
11926
|
& > div:nth-child(2) {
|
|
11667
|
-
grid-column: 1 / -1;
|
|
11668
11927
|
order: 1;
|
|
11928
|
+
min-width: 0;
|
|
11929
|
+
width: 100%;
|
|
11669
11930
|
}
|
|
11670
11931
|
|
|
11671
11932
|
& > div:nth-child(4) {
|
|
11672
|
-
grid-column: 1 / -1;
|
|
11673
11933
|
order: 2;
|
|
11934
|
+
min-width: 0;
|
|
11935
|
+
width: 100%;
|
|
11936
|
+
height: auto;
|
|
11674
11937
|
}
|
|
11675
11938
|
|
|
11676
11939
|
& > div:nth-child(3) {
|
|
11677
|
-
grid-column: 1 / -1;
|
|
11678
11940
|
order: 3;
|
|
11941
|
+
min-width: 0;
|
|
11942
|
+
width: 100%;
|
|
11679
11943
|
}
|
|
11680
11944
|
}
|
|
11945
|
+
|
|
11946
|
+
@media (max-width: 768px) {
|
|
11947
|
+
gap: 0.75rem;
|
|
11948
|
+
}
|
|
11949
|
+
|
|
11950
|
+
@media (max-width: 480px) {
|
|
11951
|
+
gap: 0.5rem;
|
|
11952
|
+
}
|
|
11681
11953
|
`;
|
|
11682
11954
|
var PaymentOption = styled24__default.default.div`
|
|
11683
11955
|
display: flex;
|