@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.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React5 from 'react';
|
|
2
|
-
import React5__default, { createContext, useState, useEffect, useMemo,
|
|
2
|
+
import React5__default, { createContext, useState, useEffect, useMemo, useCallback, useRef, useContext } from 'react';
|
|
3
3
|
import { Slot } from '@radix-ui/react-slot';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
@@ -1984,7 +1984,7 @@ function DesktopOrderbookLayout({
|
|
|
1984
1984
|
/* @__PURE__ */ jsx(
|
|
1985
1985
|
"div",
|
|
1986
1986
|
{
|
|
1987
|
-
className: "divide-y divide-white/5 overflow-y-auto",
|
|
1987
|
+
className: "flex flex-col justify-end divide-y divide-white/5 overflow-y-auto",
|
|
1988
1988
|
style: { height: `${sectionHeight}px`, scrollbarGutter: "stable" },
|
|
1989
1989
|
children: asks.map((l, idx) => /* @__PURE__ */ jsx(
|
|
1990
1990
|
DepthRow,
|
|
@@ -4850,6 +4850,7 @@ var Header = ({
|
|
|
4850
4850
|
const portfolioActive = resolvedActiveTab === "portfolio";
|
|
4851
4851
|
const learnActive = resolvedActiveTab === "learn";
|
|
4852
4852
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4853
|
+
/* @__PURE__ */ jsx(SafeAreaCover, {}),
|
|
4853
4854
|
/* @__PURE__ */ jsx(Overlay, { $isOpen: isMobileMenuOpen, onClick: () => setIsMobileMenuOpen(false) }),
|
|
4854
4855
|
/* @__PURE__ */ jsxs(HeaderContainer, { children: [
|
|
4855
4856
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
|
|
@@ -5099,6 +5100,17 @@ var Header = ({
|
|
|
5099
5100
|
] });
|
|
5100
5101
|
};
|
|
5101
5102
|
Header.displayName = "Header";
|
|
5103
|
+
var SafeAreaCover = styled24.div`
|
|
5104
|
+
position: fixed;
|
|
5105
|
+
top: 0;
|
|
5106
|
+
left: 0;
|
|
5107
|
+
right: 0;
|
|
5108
|
+
height: env(safe-area-inset-top, 0px);
|
|
5109
|
+
min-height: env(safe-area-inset-top, 0px);
|
|
5110
|
+
background-color: #0d1117;
|
|
5111
|
+
z-index: 1001;
|
|
5112
|
+
pointer-events: none;
|
|
5113
|
+
`;
|
|
5102
5114
|
var Overlay = styled24.div`
|
|
5103
5115
|
display: ${(props) => props.$isOpen ? "block" : "none"};
|
|
5104
5116
|
position: fixed;
|
|
@@ -5145,20 +5157,24 @@ var HeaderContainer = styled24.header`
|
|
|
5145
5157
|
display: flex;
|
|
5146
5158
|
justify-content: space-between;
|
|
5147
5159
|
align-items: center;
|
|
5160
|
+
/* Split padding so browsers that don't support env() inside shorthand
|
|
5161
|
+
still get the horizontal padding — only the top falls back to 0 */
|
|
5148
5162
|
padding: 0 2rem;
|
|
5163
|
+
padding-top: env(safe-area-inset-top, 0px);
|
|
5149
5164
|
background-color: #0d1117;
|
|
5150
5165
|
border-bottom: 1px solid #232a32;
|
|
5151
5166
|
position: sticky;
|
|
5152
5167
|
top: 0;
|
|
5153
|
-
left: 0;
|
|
5154
|
-
right: 0;
|
|
5155
5168
|
z-index: 1000;
|
|
5156
5169
|
width: 100%;
|
|
5157
|
-
height
|
|
5170
|
+
/* Fallback min-height for browsers that can't evaluate calc+env */
|
|
5171
|
+
min-height: 56px;
|
|
5172
|
+
min-height: calc(56px + env(safe-area-inset-top, 0px));
|
|
5158
5173
|
box-sizing: border-box;
|
|
5159
5174
|
|
|
5160
5175
|
@media (max-width: 768px) {
|
|
5161
5176
|
padding: 0 1rem;
|
|
5177
|
+
padding-top: env(safe-area-inset-top, 0px);
|
|
5162
5178
|
}
|
|
5163
5179
|
`;
|
|
5164
5180
|
var Logo = styled24.div`
|
|
@@ -7270,7 +7286,7 @@ function GalleryMapSection({
|
|
|
7270
7286
|
const [carouselIndex, setCarouselIndex] = useState(0);
|
|
7271
7287
|
const [showVideo, setShowVideo] = useState(false);
|
|
7272
7288
|
const [autoPlaying, setAutoPlaying] = useState(autoPlay);
|
|
7273
|
-
const resolvedMapUrl = mapUrl ?? (tokenName ?
|
|
7289
|
+
const resolvedMapUrl = mapUrl ?? (tokenName ? `/map/${tokenName}?embed=true&zoom=14&hideOthers=true` : "about:blank");
|
|
7274
7290
|
useEffect(() => {
|
|
7275
7291
|
if (!autoPlaying || images.length <= 1) return;
|
|
7276
7292
|
const interval = setInterval(() => {
|
|
@@ -8945,6 +8961,16 @@ var IPOAssetSelector = styled24.div`
|
|
|
8945
8961
|
z-index: 10;
|
|
8946
8962
|
transition: all 0.3s ease;
|
|
8947
8963
|
&:hover { box-shadow: 0 12px 32px rgba(0,0,0,0.4); border-color: rgba(255,255,255,0.15); }
|
|
8964
|
+
|
|
8965
|
+
@media (max-width: 768px) {
|
|
8966
|
+
flex-wrap: wrap;
|
|
8967
|
+
padding: 0.75rem 1rem;
|
|
8968
|
+
gap: 0.5rem;
|
|
8969
|
+
}
|
|
8970
|
+
|
|
8971
|
+
@media (max-width: 480px) {
|
|
8972
|
+
padding: 0.6rem 0.75rem;
|
|
8973
|
+
}
|
|
8948
8974
|
`;
|
|
8949
8975
|
var AssetSelectorDropdown = styled24.div`
|
|
8950
8976
|
display: flex;
|
|
@@ -8964,6 +8990,15 @@ var AssetName = styled24.div`
|
|
|
8964
8990
|
letter-spacing: -0.02em;
|
|
8965
8991
|
svg { margin-left: 0.75rem; transition: transform 0.3s cubic-bezier(0.4,0,0.2,1); opacity: 0.7; }
|
|
8966
8992
|
&:hover svg { opacity: 1; }
|
|
8993
|
+
|
|
8994
|
+
@media (max-width: 768px) {
|
|
8995
|
+
font-size: 1rem;
|
|
8996
|
+
}
|
|
8997
|
+
|
|
8998
|
+
@media (max-width: 480px) {
|
|
8999
|
+
font-size: 0.9rem;
|
|
9000
|
+
svg { margin-left: 0.4rem; width: 16px; height: 16px; }
|
|
9001
|
+
}
|
|
8967
9002
|
`;
|
|
8968
9003
|
var SelectorMetrics = styled24.div`
|
|
8969
9004
|
display: flex;
|
|
@@ -8975,6 +9010,20 @@ var SelectorMetrics = styled24.div`
|
|
|
8975
9010
|
background: rgba(255,255,255,0.03);
|
|
8976
9011
|
border-radius: 8px;
|
|
8977
9012
|
border: 1px solid rgba(255,255,255,0.05);
|
|
9013
|
+
|
|
9014
|
+
@media (max-width: 768px) {
|
|
9015
|
+
gap: 0.6rem;
|
|
9016
|
+
padding: 0.4rem 0.75rem;
|
|
9017
|
+
margin-right: 0;
|
|
9018
|
+
}
|
|
9019
|
+
|
|
9020
|
+
@media (max-width: 480px) {
|
|
9021
|
+
width: 100%;
|
|
9022
|
+
justify-content: center;
|
|
9023
|
+
margin-left: 0;
|
|
9024
|
+
padding: 0.35rem 0.5rem;
|
|
9025
|
+
gap: 0.5rem;
|
|
9026
|
+
}
|
|
8978
9027
|
`;
|
|
8979
9028
|
var MetricLabel2 = styled24.span`
|
|
8980
9029
|
font-size: 0.75rem;
|
|
@@ -8983,11 +9032,24 @@ var MetricLabel2 = styled24.span`
|
|
|
8983
9032
|
letter-spacing: 0.05em;
|
|
8984
9033
|
font-weight: 500;
|
|
8985
9034
|
margin-right: 0.5rem;
|
|
9035
|
+
|
|
9036
|
+
@media (max-width: 768px) {
|
|
9037
|
+
font-size: 0.65rem;
|
|
9038
|
+
margin-right: 0.35rem;
|
|
9039
|
+
}
|
|
8986
9040
|
`;
|
|
8987
9041
|
var MetricValue = styled24.span`
|
|
8988
9042
|
font-size: 1.25rem;
|
|
8989
9043
|
font-weight: 700;
|
|
8990
9044
|
color: ${(p) => p.$accent ? "#D4AF37" : "#fff"};
|
|
9045
|
+
|
|
9046
|
+
@media (max-width: 768px) {
|
|
9047
|
+
font-size: 1.05rem;
|
|
9048
|
+
}
|
|
9049
|
+
|
|
9050
|
+
@media (max-width: 480px) {
|
|
9051
|
+
font-size: 0.95rem;
|
|
9052
|
+
}
|
|
8991
9053
|
`;
|
|
8992
9054
|
var MetricChange = styled24.span`
|
|
8993
9055
|
font-size: 0.85rem;
|
|
@@ -8996,6 +9058,10 @@ var MetricChange = styled24.span`
|
|
|
8996
9058
|
display: flex;
|
|
8997
9059
|
align-items: center;
|
|
8998
9060
|
gap: 0.25rem;
|
|
9061
|
+
|
|
9062
|
+
@media (max-width: 768px) {
|
|
9063
|
+
font-size: 0.75rem;
|
|
9064
|
+
}
|
|
8999
9065
|
`;
|
|
9000
9066
|
var Separator = styled24.span`
|
|
9001
9067
|
font-size: 1rem;
|
|
@@ -9014,6 +9080,11 @@ var IPODropdown = styled24.div`
|
|
|
9014
9080
|
max-height: 360px;
|
|
9015
9081
|
overflow-y: auto;
|
|
9016
9082
|
border: 1px solid rgba(255,255,255,0.08);
|
|
9083
|
+
|
|
9084
|
+
@media (max-width: 480px) {
|
|
9085
|
+
max-height: 280px;
|
|
9086
|
+
border-radius: 12px;
|
|
9087
|
+
}
|
|
9017
9088
|
animation: slideDown 0.3s cubic-bezier(0.4,0,0.2,1);
|
|
9018
9089
|
@keyframes slideDown {
|
|
9019
9090
|
from { opacity: 0; transform: translateY(-10px); }
|
|
@@ -9701,6 +9772,7 @@ function OrderPanel({
|
|
|
9701
9772
|
displayedOwnedTokens,
|
|
9702
9773
|
ownedTokensJustUpdated,
|
|
9703
9774
|
lastOrderQuantity,
|
|
9775
|
+
orderPendingAllocation,
|
|
9704
9776
|
orderPlacedSuccess,
|
|
9705
9777
|
lastOrderDetails,
|
|
9706
9778
|
tokenQuantity,
|
|
@@ -9763,7 +9835,40 @@ function OrderPanel({
|
|
|
9763
9835
|
statusLabel
|
|
9764
9836
|
] })
|
|
9765
9837
|
] }),
|
|
9766
|
-
|
|
9838
|
+
orderPendingAllocation ? /* @__PURE__ */ jsxs(OrderPendingCard, { children: [
|
|
9839
|
+
/* @__PURE__ */ jsxs("div", { className: "pending-header", children: [
|
|
9840
|
+
/* @__PURE__ */ jsx("div", { className: "spinner" }),
|
|
9841
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
9842
|
+
/* @__PURE__ */ jsx("p", { children: "Processing Order" }),
|
|
9843
|
+
/* @__PURE__ */ jsx("small", { children: "Awaiting allocation..." })
|
|
9844
|
+
] })
|
|
9845
|
+
] }),
|
|
9846
|
+
/* @__PURE__ */ jsxs("div", { className: "pending-body", children: [
|
|
9847
|
+
[
|
|
9848
|
+
{ label: "Units Requested", value: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9849
|
+
lastOrderDetails?.tokens?.toFixed(2) || "0.00",
|
|
9850
|
+
" ",
|
|
9851
|
+
/* @__PURE__ */ jsx("span", { style: { color: "rgba(255,255,255,0.4)", fontWeight: 400 }, children: tokenSymbol })
|
|
9852
|
+
] }) },
|
|
9853
|
+
{ label: "Price Per Unit", value: `$${tokenPrice.toFixed(2)}` },
|
|
9854
|
+
{
|
|
9855
|
+
label: `${tokenDisplayName} Exposure`,
|
|
9856
|
+
value: `${((lastOrderDetails?.tokens ?? 0) / supplyToSell * 100).toFixed(3)}%`
|
|
9857
|
+
}
|
|
9858
|
+
].map((row) => /* @__PURE__ */ jsxs("div", { className: "pending-row", children: [
|
|
9859
|
+
/* @__PURE__ */ jsx("span", { children: row.label }),
|
|
9860
|
+
/* @__PURE__ */ jsx("strong", { children: row.value })
|
|
9861
|
+
] }, row.label)),
|
|
9862
|
+
/* @__PURE__ */ jsxs("div", { className: "pending-total", children: [
|
|
9863
|
+
/* @__PURE__ */ jsx("span", { children: "Total Investment" }),
|
|
9864
|
+
/* @__PURE__ */ jsxs("strong", { children: [
|
|
9865
|
+
"$",
|
|
9866
|
+
lastOrderDetails?.total?.toLocaleString() || "0"
|
|
9867
|
+
] })
|
|
9868
|
+
] })
|
|
9869
|
+
] }),
|
|
9870
|
+
/* @__PURE__ */ jsx("div", { className: "pending-footnote", children: "Your order has been submitted and is being processed. This usually takes a few seconds." })
|
|
9871
|
+
] }) : orderPlacedSuccess ? /* @__PURE__ */ jsxs(OrderSuccessCard, { children: [
|
|
9767
9872
|
/* @__PURE__ */ jsxs("div", { className: "success-header", children: [
|
|
9768
9873
|
/* @__PURE__ */ jsx("div", { className: "icon", children: /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
|
|
9769
9874
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -9942,7 +10047,7 @@ function OrderPanel({
|
|
|
9942
10047
|
] })
|
|
9943
10048
|
] })
|
|
9944
10049
|
] }),
|
|
9945
|
-
!orderPlacedSuccess && /* @__PURE__ */ jsx(
|
|
10050
|
+
!orderPlacedSuccess && !orderPendingAllocation && /* @__PURE__ */ jsx(
|
|
9946
10051
|
SubscribeButton,
|
|
9947
10052
|
{
|
|
9948
10053
|
type: "button",
|
|
@@ -10023,9 +10128,10 @@ var Panel2 = styled24.div`
|
|
|
10023
10128
|
}
|
|
10024
10129
|
@media (max-width: 768px) {
|
|
10025
10130
|
padding: 1rem;
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10131
|
+
}
|
|
10132
|
+
@media (max-width: 480px) {
|
|
10133
|
+
padding: 0.75rem;
|
|
10134
|
+
border-radius: 6px;
|
|
10029
10135
|
}
|
|
10030
10136
|
`;
|
|
10031
10137
|
var PanelHeader2 = styled24.div`
|
|
@@ -10059,6 +10165,11 @@ var Card2 = styled24.div`
|
|
|
10059
10165
|
border: 1px solid rgba(255,255,255,0.15);
|
|
10060
10166
|
border-radius: 12px;
|
|
10061
10167
|
padding: 1rem 1.25rem;
|
|
10168
|
+
|
|
10169
|
+
@media (max-width: 480px) {
|
|
10170
|
+
padding: 0.75rem 1rem;
|
|
10171
|
+
border-radius: 10px;
|
|
10172
|
+
}
|
|
10062
10173
|
`;
|
|
10063
10174
|
var CardLabel = styled24.div`
|
|
10064
10175
|
font-size: 0.75rem;
|
|
@@ -10077,6 +10188,10 @@ var CardInputRow = styled24.div`
|
|
|
10077
10188
|
font-weight: 600;
|
|
10078
10189
|
color: #fff;
|
|
10079
10190
|
width: 100%;
|
|
10191
|
+
|
|
10192
|
+
@media (max-width: 480px) {
|
|
10193
|
+
font-size: 1.35rem;
|
|
10194
|
+
}
|
|
10080
10195
|
}
|
|
10081
10196
|
span {
|
|
10082
10197
|
font-size: 1rem;
|
|
@@ -10090,8 +10205,10 @@ var QuickSelectRow = styled24.div`
|
|
|
10090
10205
|
display: flex;
|
|
10091
10206
|
gap: 0.5rem;
|
|
10092
10207
|
margin-top: 0.75rem;
|
|
10208
|
+
flex-wrap: wrap;
|
|
10093
10209
|
button {
|
|
10094
10210
|
flex: 1;
|
|
10211
|
+
min-width: 50px;
|
|
10095
10212
|
padding: 0.4rem 0;
|
|
10096
10213
|
font-size: 0.75rem;
|
|
10097
10214
|
font-weight: 500;
|
|
@@ -10107,6 +10224,11 @@ var QuickSelectRow = styled24.div`
|
|
|
10107
10224
|
border-color: rgba(212,175,55,0.5);
|
|
10108
10225
|
color: #D4AF37;
|
|
10109
10226
|
}
|
|
10227
|
+
|
|
10228
|
+
@media (max-width: 480px) {
|
|
10229
|
+
gap: 0.35rem;
|
|
10230
|
+
button { font-size: 0.7rem; padding: 0.35rem 0; }
|
|
10231
|
+
}
|
|
10110
10232
|
`;
|
|
10111
10233
|
var FundsRow = styled24.div`
|
|
10112
10234
|
display: flex;
|
|
@@ -10230,6 +10352,10 @@ var BalanceValue = styled24.div`
|
|
|
10230
10352
|
color: #0ecb81;
|
|
10231
10353
|
font-weight: 600;
|
|
10232
10354
|
}
|
|
10355
|
+
|
|
10356
|
+
@media (max-width: 480px) {
|
|
10357
|
+
font-size: 1.2rem;
|
|
10358
|
+
}
|
|
10233
10359
|
`;
|
|
10234
10360
|
var BalanceAction = styled24.div`
|
|
10235
10361
|
font-size: 0.75rem;
|
|
@@ -10244,6 +10370,110 @@ var BalanceSub = styled24.div`
|
|
|
10244
10370
|
color: var(--color-text-secondary);
|
|
10245
10371
|
margin-top: 0.25rem;
|
|
10246
10372
|
`;
|
|
10373
|
+
var OrderPendingCard = styled24.div`
|
|
10374
|
+
margin-bottom: 1.5rem;
|
|
10375
|
+
background: linear-gradient(180deg, rgba(25,27,31,0.95) 0%, rgba(18,20,24,0.98) 100%);
|
|
10376
|
+
border: 1px solid rgba(212,175,55,0.08);
|
|
10377
|
+
border-radius: 12px;
|
|
10378
|
+
overflow: hidden;
|
|
10379
|
+
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
|
|
10380
|
+
|
|
10381
|
+
@keyframes spin {
|
|
10382
|
+
to { transform: rotate(360deg); }
|
|
10383
|
+
}
|
|
10384
|
+
|
|
10385
|
+
@keyframes pulse {
|
|
10386
|
+
0%, 100% { opacity: 1; }
|
|
10387
|
+
50% { opacity: 0.6; }
|
|
10388
|
+
}
|
|
10389
|
+
|
|
10390
|
+
.pending-header {
|
|
10391
|
+
border-bottom: 1px solid rgba(255,255,255,0.06);
|
|
10392
|
+
padding: 1.25rem 1.5rem;
|
|
10393
|
+
display: flex;
|
|
10394
|
+
align-items: center;
|
|
10395
|
+
gap: 0.875rem;
|
|
10396
|
+
background: linear-gradient(135deg, rgba(212,175,55,0.04) 0%, transparent 100%);
|
|
10397
|
+
|
|
10398
|
+
.spinner {
|
|
10399
|
+
width: 32px;
|
|
10400
|
+
height: 32px;
|
|
10401
|
+
border-radius: 50%;
|
|
10402
|
+
border: 2.5px solid rgba(212,175,55,0.15);
|
|
10403
|
+
border-top-color: #D4AF37;
|
|
10404
|
+
animation: spin 0.8s linear infinite;
|
|
10405
|
+
flex-shrink: 0;
|
|
10406
|
+
}
|
|
10407
|
+
|
|
10408
|
+
p {
|
|
10409
|
+
font-size: 0.95rem;
|
|
10410
|
+
font-weight: 600;
|
|
10411
|
+
color: #fff;
|
|
10412
|
+
margin: 0;
|
|
10413
|
+
animation: pulse 2s ease-in-out infinite;
|
|
10414
|
+
}
|
|
10415
|
+
small {
|
|
10416
|
+
font-size: 0.7rem;
|
|
10417
|
+
color: rgba(255,255,255,0.4);
|
|
10418
|
+
}
|
|
10419
|
+
}
|
|
10420
|
+
|
|
10421
|
+
.pending-body {
|
|
10422
|
+
padding: 1.25rem 1.5rem;
|
|
10423
|
+
}
|
|
10424
|
+
.pending-row {
|
|
10425
|
+
display: flex;
|
|
10426
|
+
justify-content: space-between;
|
|
10427
|
+
align-items: center;
|
|
10428
|
+
padding-bottom: 0.875rem;
|
|
10429
|
+
margin-bottom: 0.875rem;
|
|
10430
|
+
border-bottom: 1px solid rgba(255,255,255,0.06);
|
|
10431
|
+
span {
|
|
10432
|
+
font-size: 0.75rem;
|
|
10433
|
+
color: rgba(255,255,255,0.4);
|
|
10434
|
+
text-transform: uppercase;
|
|
10435
|
+
letter-spacing: 0.05em;
|
|
10436
|
+
font-weight: 500;
|
|
10437
|
+
}
|
|
10438
|
+
strong {
|
|
10439
|
+
font-size: 0.95rem;
|
|
10440
|
+
font-weight: 500;
|
|
10441
|
+
color: rgba(255,255,255,0.5);
|
|
10442
|
+
font-family: monospace;
|
|
10443
|
+
}
|
|
10444
|
+
}
|
|
10445
|
+
.pending-total {
|
|
10446
|
+
display: flex;
|
|
10447
|
+
justify-content: space-between;
|
|
10448
|
+
align-items: center;
|
|
10449
|
+
padding: 0.875rem;
|
|
10450
|
+
background: rgba(212,175,55,0.03);
|
|
10451
|
+
border-radius: 8px;
|
|
10452
|
+
border: 1px solid rgba(212,175,55,0.06);
|
|
10453
|
+
span {
|
|
10454
|
+
font-size: 0.75rem;
|
|
10455
|
+
color: rgba(255,255,255,0.5);
|
|
10456
|
+
text-transform: uppercase;
|
|
10457
|
+
letter-spacing: 0.05em;
|
|
10458
|
+
font-weight: 500;
|
|
10459
|
+
}
|
|
10460
|
+
strong {
|
|
10461
|
+
font-size: 1.05rem;
|
|
10462
|
+
font-weight: 700;
|
|
10463
|
+
color: rgba(212,175,55,0.7);
|
|
10464
|
+
font-family: monospace;
|
|
10465
|
+
}
|
|
10466
|
+
}
|
|
10467
|
+
.pending-footnote {
|
|
10468
|
+
padding: 1rem 1.5rem;
|
|
10469
|
+
border-top: 1px solid rgba(255,255,255,0.06);
|
|
10470
|
+
background: rgba(0,0,0,0.2);
|
|
10471
|
+
font-size: 0.75rem;
|
|
10472
|
+
color: rgba(255,255,255,0.4);
|
|
10473
|
+
line-height: 1.6;
|
|
10474
|
+
animation: pulse 2s ease-in-out infinite;
|
|
10475
|
+
}
|
|
10476
|
+
`;
|
|
10247
10477
|
var OrderSuccessCard = styled24.div`
|
|
10248
10478
|
margin-bottom: 1.5rem;
|
|
10249
10479
|
background: linear-gradient(180deg, rgba(25,27,31,0.95) 0%, rgba(18,20,24,0.98) 100%);
|
|
@@ -10688,6 +10918,10 @@ var TabContainer = styled24.div`
|
|
|
10688
10918
|
gap: 0;
|
|
10689
10919
|
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
|
|
10690
10920
|
margin-bottom: 0.75rem;
|
|
10921
|
+
overflow-x: auto;
|
|
10922
|
+
-webkit-overflow-scrolling: touch;
|
|
10923
|
+
scrollbar-width: none;
|
|
10924
|
+
&::-webkit-scrollbar { display: none; }
|
|
10691
10925
|
`;
|
|
10692
10926
|
var Tab = styled24.button`
|
|
10693
10927
|
background: transparent;
|
|
@@ -10695,6 +10929,8 @@ var Tab = styled24.button`
|
|
|
10695
10929
|
padding: 0.6rem 1rem;
|
|
10696
10930
|
font-size: 0.75rem;
|
|
10697
10931
|
font-weight: 500;
|
|
10932
|
+
white-space: nowrap;
|
|
10933
|
+
flex-shrink: 0;
|
|
10698
10934
|
color: ${({ $active }) => $active ? "#f0b90b" : "rgba(255, 255, 255, 0.4)"};
|
|
10699
10935
|
cursor: pointer;
|
|
10700
10936
|
transition: color 0.15s;
|
|
@@ -10965,8 +11201,14 @@ var Row2 = styled24.div`
|
|
|
10965
11201
|
max-width: 1800px;
|
|
10966
11202
|
margin-left: auto;
|
|
10967
11203
|
margin-right: auto;
|
|
10968
|
-
|
|
11204
|
+
overflow: hidden;
|
|
11205
|
+
@media (max-width: 768px) {
|
|
10969
11206
|
grid-template-columns: 1fr;
|
|
11207
|
+
gap: 1rem;
|
|
11208
|
+
}
|
|
11209
|
+
& > * {
|
|
11210
|
+
min-width: 0;
|
|
11211
|
+
overflow: hidden;
|
|
10970
11212
|
}
|
|
10971
11213
|
`;
|
|
10972
11214
|
var TradeNewsPanel = styled24.div`
|
|
@@ -10978,8 +11220,8 @@ var TradeNewsPanel = styled24.div`
|
|
|
10978
11220
|
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
|
|
10979
11221
|
border: 1px solid var(--color-border);
|
|
10980
11222
|
min-height: 280px;
|
|
10981
|
-
overflow:
|
|
10982
|
-
@media (max-width:
|
|
11223
|
+
overflow: hidden;
|
|
11224
|
+
@media (max-width: 768px) {
|
|
10983
11225
|
max-width: 100%;
|
|
10984
11226
|
flex: 0 0 100%;
|
|
10985
11227
|
}
|
|
@@ -11087,6 +11329,7 @@ function OrderConfirmationModal({
|
|
|
11087
11329
|
tokenQuantity,
|
|
11088
11330
|
tokenPrice,
|
|
11089
11331
|
propertyName,
|
|
11332
|
+
tokenSymbol,
|
|
11090
11333
|
estExposure,
|
|
11091
11334
|
orderTotal,
|
|
11092
11335
|
availableBalance,
|
|
@@ -11101,7 +11344,7 @@ function OrderConfirmationModal({
|
|
|
11101
11344
|
/* @__PURE__ */ jsx(ModalBody, { children: [
|
|
11102
11345
|
{ label: "Order Type", value: "Primary Offering" },
|
|
11103
11346
|
{ label: "Property", value: propertyName },
|
|
11104
|
-
{ label: "Units", value: `${tokenQuantity.toLocaleString()}
|
|
11347
|
+
{ label: "Units", value: `${tokenQuantity.toLocaleString()} ${tokenSymbol}`, highlight: true },
|
|
11105
11348
|
{
|
|
11106
11349
|
label: "Unit Price",
|
|
11107
11350
|
value: `$${tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
|
|
@@ -11132,7 +11375,9 @@ function OrderConfirmationModal({
|
|
|
11132
11375
|
"Your order for ",
|
|
11133
11376
|
/* @__PURE__ */ jsxs("strong", { children: [
|
|
11134
11377
|
tokenQuantity.toLocaleString(),
|
|
11135
|
-
"
|
|
11378
|
+
" ",
|
|
11379
|
+
tokenSymbol,
|
|
11380
|
+
" units"
|
|
11136
11381
|
] }),
|
|
11137
11382
|
" in the",
|
|
11138
11383
|
" ",
|
|
@@ -11361,6 +11606,7 @@ function PropertyBuy({
|
|
|
11361
11606
|
const [displayedOwnedTokens, setDisplayedOwnedTokens] = useState(0);
|
|
11362
11607
|
const [ownedTokensJustUpdated, setOwnedTokensJustUpdated] = useState(false);
|
|
11363
11608
|
const [lastOrderQuantity, setLastOrderQuantity] = useState(0);
|
|
11609
|
+
const [orderPendingAllocation, setOrderPendingAllocation] = useState(false);
|
|
11364
11610
|
const [orderPlacedSuccess, setOrderPlacedSuccess] = useState(false);
|
|
11365
11611
|
const [lastOrderDetails, setLastOrderDetails] = useState(null);
|
|
11366
11612
|
const [showOrderConfirmModal, setShowOrderConfirmModal] = useState(false);
|
|
@@ -11408,12 +11654,23 @@ function PropertyBuy({
|
|
|
11408
11654
|
}
|
|
11409
11655
|
setShowOrderConfirmModal(true);
|
|
11410
11656
|
};
|
|
11411
|
-
|
|
11657
|
+
useEffect(() => {
|
|
11658
|
+
if (purchaseStatus === "success" && orderPendingAllocation) {
|
|
11659
|
+
setOrderPendingAllocation(false);
|
|
11660
|
+
setOrderPlacedSuccess(true);
|
|
11661
|
+
}
|
|
11662
|
+
}, [purchaseStatus, orderPendingAllocation]);
|
|
11663
|
+
const handlePlaceAnotherOrder = useCallback(() => {
|
|
11664
|
+
setOrderPlacedSuccess(false);
|
|
11665
|
+
setOrderPendingAllocation(false);
|
|
11666
|
+
}, []);
|
|
11667
|
+
const isPurchaseInFlight = purchaseStatus === "checking-allowance" || purchaseStatus === "approving" || purchaseStatus === "purchasing" || purchaseStatus === "pending-allocation";
|
|
11412
11668
|
const getOrderButtonText = () => {
|
|
11413
11669
|
if (!isAuthenticated) return "Sign In to Invest";
|
|
11414
11670
|
if (purchaseStatus === "checking-allowance") return "Checking allowance\u2026";
|
|
11415
11671
|
if (purchaseStatus === "approving") return "Approving USDC\u2026";
|
|
11416
11672
|
if (purchaseStatus === "purchasing") return "Confirming purchase\u2026";
|
|
11673
|
+
if (purchaseStatus === "pending-allocation") return "Awaiting allocation\u2026";
|
|
11417
11674
|
if (ipoStatus === "PENDING" && !isPrivateClient) return "Sale Not Open Yet";
|
|
11418
11675
|
if (ipoStatus === "CLOSED") return "Sale Completed";
|
|
11419
11676
|
if (ipoStatus === "CANCELLED") return "Sale Cancelled";
|
|
@@ -11456,7 +11713,7 @@ function PropertyBuy({
|
|
|
11456
11713
|
total: orderTotal,
|
|
11457
11714
|
price: tokenPrice
|
|
11458
11715
|
});
|
|
11459
|
-
|
|
11716
|
+
setOrderPendingAllocation(true);
|
|
11460
11717
|
setSliderValue(0);
|
|
11461
11718
|
setManualOrderAmount(null);
|
|
11462
11719
|
};
|
|
@@ -11542,6 +11799,7 @@ function PropertyBuy({
|
|
|
11542
11799
|
displayedOwnedTokens,
|
|
11543
11800
|
ownedTokensJustUpdated,
|
|
11544
11801
|
lastOrderQuantity,
|
|
11802
|
+
orderPendingAllocation,
|
|
11545
11803
|
orderPlacedSuccess,
|
|
11546
11804
|
lastOrderDetails,
|
|
11547
11805
|
tokenQuantity,
|
|
@@ -11556,7 +11814,7 @@ function PropertyBuy({
|
|
|
11556
11814
|
orderButtonText: getOrderButtonText(),
|
|
11557
11815
|
isOrderButtonDisabled: isOrderButtonDisabled(),
|
|
11558
11816
|
hasInsufficientFunds,
|
|
11559
|
-
onPlaceAnotherOrder:
|
|
11817
|
+
onPlaceAnotherOrder: handlePlaceAnotherOrder,
|
|
11560
11818
|
onDeposit
|
|
11561
11819
|
}
|
|
11562
11820
|
),
|
|
@@ -11590,6 +11848,7 @@ function PropertyBuy({
|
|
|
11590
11848
|
tokenQuantity,
|
|
11591
11849
|
tokenPrice,
|
|
11592
11850
|
propertyName,
|
|
11851
|
+
tokenSymbol,
|
|
11593
11852
|
estExposure,
|
|
11594
11853
|
orderTotal,
|
|
11595
11854
|
availableBalance,
|
|
@@ -11630,29 +11889,42 @@ var HeroGrid = styled24.div`
|
|
|
11630
11889
|
}
|
|
11631
11890
|
|
|
11632
11891
|
@media (max-width: 1024px) {
|
|
11633
|
-
|
|
11634
|
-
|
|
11892
|
+
display: flex;
|
|
11893
|
+
flex-direction: column;
|
|
11635
11894
|
gap: 1rem;
|
|
11895
|
+
overflow: hidden;
|
|
11636
11896
|
|
|
11637
11897
|
& > div:nth-child(1) {
|
|
11638
11898
|
display: none;
|
|
11639
11899
|
}
|
|
11640
11900
|
|
|
11641
11901
|
& > div:nth-child(2) {
|
|
11642
|
-
grid-column: 1 / -1;
|
|
11643
11902
|
order: 1;
|
|
11903
|
+
min-width: 0;
|
|
11904
|
+
width: 100%;
|
|
11644
11905
|
}
|
|
11645
11906
|
|
|
11646
11907
|
& > div:nth-child(4) {
|
|
11647
|
-
grid-column: 1 / -1;
|
|
11648
11908
|
order: 2;
|
|
11909
|
+
min-width: 0;
|
|
11910
|
+
width: 100%;
|
|
11911
|
+
height: auto;
|
|
11649
11912
|
}
|
|
11650
11913
|
|
|
11651
11914
|
& > div:nth-child(3) {
|
|
11652
|
-
grid-column: 1 / -1;
|
|
11653
11915
|
order: 3;
|
|
11916
|
+
min-width: 0;
|
|
11917
|
+
width: 100%;
|
|
11654
11918
|
}
|
|
11655
11919
|
}
|
|
11920
|
+
|
|
11921
|
+
@media (max-width: 768px) {
|
|
11922
|
+
gap: 0.75rem;
|
|
11923
|
+
}
|
|
11924
|
+
|
|
11925
|
+
@media (max-width: 480px) {
|
|
11926
|
+
gap: 0.5rem;
|
|
11927
|
+
}
|
|
11656
11928
|
`;
|
|
11657
11929
|
var PaymentOption = styled24.div`
|
|
11658
11930
|
display: flex;
|