@loafmarkets/ui 0.1.382 → 0.1.384
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 +4 -31
- package/dist/index.d.ts +4 -31
- package/dist/index.js +492 -897
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +492 -898
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -13
package/dist/index.mjs
CHANGED
|
@@ -7,7 +7,6 @@ import { twMerge } from 'tailwind-merge';
|
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import styled10, { keyframes, css } from 'styled-components';
|
|
9
9
|
import * as ReactDOM from 'react-dom';
|
|
10
|
-
import { createPortal } from 'react-dom';
|
|
11
10
|
import { Newspaper } from 'lucide-react';
|
|
12
11
|
import * as LightweightCharts from 'lightweight-charts';
|
|
13
12
|
import { MdKingBed, MdBathtub, MdDirectionsCar, MdPool, MdYard, MdFitnessCenter } from 'react-icons/md';
|
|
@@ -1875,7 +1874,6 @@ var Orderbook = React5.forwardRef(
|
|
|
1875
1874
|
amountPrecision = 2,
|
|
1876
1875
|
defaultTab = "orderbook",
|
|
1877
1876
|
onTabChange,
|
|
1878
|
-
showTradesTab = true,
|
|
1879
1877
|
rightHeader,
|
|
1880
1878
|
variant = "auto",
|
|
1881
1879
|
userOrderPrices,
|
|
@@ -1889,9 +1887,7 @@ var Orderbook = React5.forwardRef(
|
|
|
1889
1887
|
...props
|
|
1890
1888
|
}, ref) => {
|
|
1891
1889
|
const resolvedRightHeader = rightHeader ?? /* @__PURE__ */ jsx(LoafLiquidityBadge, { className: "text-[0.6rem] orderbook-ll-badge", onClick: onLoafLiquidityClick });
|
|
1892
|
-
const [tab,
|
|
1893
|
-
const setTab = setTabState;
|
|
1894
|
-
const effectiveTab = showTradesTab ? tab : "orderbook";
|
|
1890
|
+
const [tab, setTab] = React5.useState(defaultTab);
|
|
1895
1891
|
const [tradeFilter, setTradeFilter] = React5.useState("all");
|
|
1896
1892
|
const viewportCompact = useViewportCompact(COMPACT_BREAKPOINT_PX);
|
|
1897
1893
|
const { userAskPrices, userBidPrices } = React5.useMemo(() => {
|
|
@@ -1985,8 +1981,7 @@ var Orderbook = React5.forwardRef(
|
|
|
1985
1981
|
const midClass = midChangePercent == null ? "text-white" : midChangePercent >= 0 ? "text-[#0ecb81]" : "text-[#f6465d]";
|
|
1986
1982
|
const tradeFiltered = trades.filter((t) => tradeFilter === "all" || t.type === tradeFilter);
|
|
1987
1983
|
const layoutProps = {
|
|
1988
|
-
tab
|
|
1989
|
-
showTradesTab,
|
|
1984
|
+
tab,
|
|
1990
1985
|
handleTab,
|
|
1991
1986
|
tradeFilter,
|
|
1992
1987
|
setTradeFilter,
|
|
@@ -2063,7 +2058,6 @@ function SkeletonRow({ compact }) {
|
|
|
2063
2058
|
}
|
|
2064
2059
|
function DesktopOrderbookLayout({
|
|
2065
2060
|
tab,
|
|
2066
|
-
showTradesTab = true,
|
|
2067
2061
|
handleTab,
|
|
2068
2062
|
tradeFilter,
|
|
2069
2063
|
setTradeFilter,
|
|
@@ -2113,7 +2107,7 @@ function DesktopOrderbookLayout({
|
|
|
2113
2107
|
]
|
|
2114
2108
|
}
|
|
2115
2109
|
),
|
|
2116
|
-
|
|
2110
|
+
/* @__PURE__ */ jsxs(
|
|
2117
2111
|
"button",
|
|
2118
2112
|
{
|
|
2119
2113
|
type: "button",
|
|
@@ -2127,7 +2121,7 @@ function DesktopOrderbookLayout({
|
|
|
2127
2121
|
tab === "trades" ? /* @__PURE__ */ jsx("span", { className: "absolute -bottom-px left-0 h-[2px] w-full bg-[#E6C87E]" }) : null
|
|
2128
2122
|
]
|
|
2129
2123
|
}
|
|
2130
|
-
)
|
|
2124
|
+
)
|
|
2131
2125
|
] }),
|
|
2132
2126
|
tab === "trades" ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-xs", children: [
|
|
2133
2127
|
/* @__PURE__ */ jsx(
|
|
@@ -2266,7 +2260,6 @@ function DesktopOrderbookLayout({
|
|
|
2266
2260
|
}
|
|
2267
2261
|
function MobileOrderbookLayout({
|
|
2268
2262
|
tab,
|
|
2269
|
-
showTradesTab = true,
|
|
2270
2263
|
handleTab,
|
|
2271
2264
|
tradeFilter,
|
|
2272
2265
|
setTradeFilter,
|
|
@@ -2315,7 +2308,7 @@ function MobileOrderbookLayout({
|
|
|
2315
2308
|
children: "Orderbook"
|
|
2316
2309
|
}
|
|
2317
2310
|
),
|
|
2318
|
-
|
|
2311
|
+
/* @__PURE__ */ jsx(
|
|
2319
2312
|
"span",
|
|
2320
2313
|
{
|
|
2321
2314
|
onClick: () => handleTab("trades"),
|
|
@@ -2329,7 +2322,7 @@ function MobileOrderbookLayout({
|
|
|
2329
2322
|
},
|
|
2330
2323
|
children: "Trades"
|
|
2331
2324
|
}
|
|
2332
|
-
)
|
|
2325
|
+
)
|
|
2333
2326
|
] }),
|
|
2334
2327
|
tab === "trades" ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 text-[0.6rem] text-white/70", children: ["all", "buy", "sell"].map((filter) => /* @__PURE__ */ jsx(
|
|
2335
2328
|
"button",
|
|
@@ -5017,9 +5010,9 @@ var PulsingDot = styled10.span`
|
|
|
5017
5010
|
`;
|
|
5018
5011
|
function fmtCompactUsd(n) {
|
|
5019
5012
|
const abs = Math.abs(n);
|
|
5020
|
-
if (abs >= 1e6) return
|
|
5021
|
-
if (abs >= 1e3) return
|
|
5022
|
-
return
|
|
5013
|
+
if (abs >= 1e6) return `$${(abs / 1e6).toFixed(2)}M`;
|
|
5014
|
+
if (abs >= 1e3) return `$${(abs / 1e3).toFixed(1)}K`;
|
|
5015
|
+
return `$${abs.toFixed(2)}`;
|
|
5023
5016
|
}
|
|
5024
5017
|
function useIsNarrow(maxWidthPx = 768) {
|
|
5025
5018
|
const query = `(max-width:${maxWidthPx}px)`;
|
|
@@ -5042,6 +5035,8 @@ var DEFAULT_ABOUT_PATH = "/about";
|
|
|
5042
5035
|
var DEFAULT_LEARN_PATH = "/learn";
|
|
5043
5036
|
var DEFAULT_API_PATH = "/api";
|
|
5044
5037
|
var DEFAULT_PROPERTY_MAP_PATH = "/map";
|
|
5038
|
+
var DEFAULT_LEADERBOARD_PATH = "/league";
|
|
5039
|
+
var DEFAULT_LEADERBOARD_PAGE_PATH = "/leaderboard";
|
|
5045
5040
|
var DEFAULT_PORTFOLIO_PATH = "/portfolio";
|
|
5046
5041
|
var DEFAULT_LOAF_LIQUIDITY_PATH = "/loaf-liquidity";
|
|
5047
5042
|
var DEFAULT_AUTH_RETURN_PARAM = "returnTo";
|
|
@@ -5062,6 +5057,8 @@ var Header = ({
|
|
|
5062
5057
|
apiPath = DEFAULT_API_PATH,
|
|
5063
5058
|
offeringsPath,
|
|
5064
5059
|
propertyMapPath = DEFAULT_PROPERTY_MAP_PATH,
|
|
5060
|
+
leaderboardPath = DEFAULT_LEADERBOARD_PATH,
|
|
5061
|
+
leaderboardPagePath = DEFAULT_LEADERBOARD_PAGE_PATH,
|
|
5065
5062
|
portfolioPath = DEFAULT_PORTFOLIO_PATH,
|
|
5066
5063
|
loafLiquidityPath = DEFAULT_LOAF_LIQUIDITY_PATH,
|
|
5067
5064
|
authLoginUrl,
|
|
@@ -5335,6 +5332,8 @@ var Header = ({
|
|
|
5335
5332
|
const resolvedOfferingsPath = offeringsPath ?? void 0;
|
|
5336
5333
|
const offeringsHref = resolvedOfferingsPath ?? resolvedHomePath;
|
|
5337
5334
|
const resolvedPropertyMapPath = propertyMapPath ?? DEFAULT_PROPERTY_MAP_PATH;
|
|
5335
|
+
const resolvedLeaderboardPath = leaderboardPath ?? DEFAULT_LEADERBOARD_PATH;
|
|
5336
|
+
const resolvedLeaderboardPagePath = leaderboardPagePath ?? DEFAULT_LEADERBOARD_PAGE_PATH;
|
|
5338
5337
|
const resolvedPortfolioPath = portfolioPath ?? DEFAULT_PORTFOLIO_PATH;
|
|
5339
5338
|
const resolvedLoafLiquidityPath = loafLiquidityPath ?? DEFAULT_LOAF_LIQUIDITY_PATH;
|
|
5340
5339
|
const inferredActiveTab = (() => {
|
|
@@ -5345,6 +5344,8 @@ var Header = ({
|
|
|
5345
5344
|
if (locationPath === resolvedApiPath) return "api";
|
|
5346
5345
|
if (resolvedOfferingsPath && locationPath.startsWith(resolvedOfferingsPath)) return "offerings";
|
|
5347
5346
|
if (locationPath === resolvedPropertyMapPath) return "propertyMap";
|
|
5347
|
+
if (locationPath === resolvedLeaderboardPagePath) return "leaderboardPage";
|
|
5348
|
+
if (locationPath === resolvedLeaderboardPath) return "leaderboard";
|
|
5348
5349
|
if (locationPath === resolvedPortfolioPath) return "portfolio";
|
|
5349
5350
|
return null;
|
|
5350
5351
|
})();
|
|
@@ -5353,6 +5354,8 @@ var Header = ({
|
|
|
5353
5354
|
const homeActive = resolvedActiveTab === "home";
|
|
5354
5355
|
const offeringsActive = resolvedActiveTab === "offerings";
|
|
5355
5356
|
const propertyMapActive = resolvedActiveTab === "propertyMap";
|
|
5357
|
+
const leaderboardActive = resolvedActiveTab === "leaderboard";
|
|
5358
|
+
const leaderboardPageActive = resolvedActiveTab === "leaderboardPage";
|
|
5356
5359
|
const aboutActive = resolvedActiveTab === "about";
|
|
5357
5360
|
const portfolioActive = resolvedActiveTab === "portfolio";
|
|
5358
5361
|
const learnActive = resolvedActiveTab === "learn";
|
|
@@ -5360,7 +5363,7 @@ var Header = ({
|
|
|
5360
5363
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5361
5364
|
/* @__PURE__ */ jsx(SafeAreaCover, {}),
|
|
5362
5365
|
/* @__PURE__ */ jsx(Overlay, { $isOpen: isMobileMenuOpen, onClick: () => setIsMobileMenuOpen(false) }),
|
|
5363
|
-
/* @__PURE__ */ jsxs(HeaderContainer, { id: "loaf-header", $bgOpacity: headerBgOpacity,
|
|
5366
|
+
/* @__PURE__ */ jsxs(HeaderContainer, { id: "loaf-header", $bgOpacity: headerBgOpacity, children: [
|
|
5364
5367
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
|
|
5365
5368
|
/* @__PURE__ */ jsxs(Logo, { children: [
|
|
5366
5369
|
/* @__PURE__ */ jsx(LogoLink, { href: logoHref ?? resolvedHomePath, onClick: handleLogoNavigation, children: /* @__PURE__ */ jsx("img", { src: Loaf_logo_Banner_default, alt: "LOAF Logo" }) }),
|
|
@@ -5436,48 +5439,91 @@ var Header = ({
|
|
|
5436
5439
|
/* @__PURE__ */ jsx(
|
|
5437
5440
|
NavLink,
|
|
5438
5441
|
{
|
|
5439
|
-
href:
|
|
5440
|
-
className:
|
|
5442
|
+
href: resolvedLeaderboardPath,
|
|
5443
|
+
className: leaderboardActive ? "active" : "",
|
|
5441
5444
|
onClick: (event) => {
|
|
5442
5445
|
event.preventDefault();
|
|
5443
|
-
handleNavigation(
|
|
5446
|
+
handleNavigation(resolvedLeaderboardPath);
|
|
5444
5447
|
},
|
|
5445
|
-
children: "
|
|
5448
|
+
children: "Competition"
|
|
5446
5449
|
}
|
|
5447
5450
|
),
|
|
5448
5451
|
/* @__PURE__ */ jsx(
|
|
5449
5452
|
NavLink,
|
|
5450
5453
|
{
|
|
5451
|
-
href:
|
|
5452
|
-
className:
|
|
5454
|
+
href: resolvedLeaderboardPagePath,
|
|
5455
|
+
className: leaderboardPageActive ? "active" : "",
|
|
5453
5456
|
onClick: (event) => {
|
|
5454
5457
|
event.preventDefault();
|
|
5455
|
-
handleNavigation(
|
|
5458
|
+
handleNavigation(resolvedLeaderboardPagePath);
|
|
5456
5459
|
},
|
|
5457
|
-
children: "
|
|
5460
|
+
children: "Leaderboard"
|
|
5458
5461
|
}
|
|
5459
5462
|
),
|
|
5460
5463
|
/* @__PURE__ */ jsx(
|
|
5461
5464
|
NavLink,
|
|
5462
5465
|
{
|
|
5463
|
-
href:
|
|
5464
|
-
className:
|
|
5466
|
+
href: resolvedLearnPath,
|
|
5467
|
+
className: learnActive ? "active" : "",
|
|
5465
5468
|
onClick: (event) => {
|
|
5466
5469
|
event.preventDefault();
|
|
5467
|
-
handleNavigation(
|
|
5470
|
+
handleNavigation(resolvedLearnPath);
|
|
5468
5471
|
},
|
|
5469
|
-
children: "
|
|
5470
|
-
}
|
|
5471
|
-
),
|
|
5472
|
-
/* @__PURE__ */ jsx(
|
|
5473
|
-
NavLink,
|
|
5474
|
-
{
|
|
5475
|
-
href: "https://docs.loafmarkets.com/en/",
|
|
5476
|
-
target: "_blank",
|
|
5477
|
-
rel: "noopener noreferrer",
|
|
5478
|
-
children: "Docs"
|
|
5472
|
+
children: "Learn"
|
|
5479
5473
|
}
|
|
5480
5474
|
),
|
|
5475
|
+
/* @__PURE__ */ jsxs(MoreMenu, { className: "more-menu", children: [
|
|
5476
|
+
/* @__PURE__ */ jsxs(
|
|
5477
|
+
MoreTrigger,
|
|
5478
|
+
{
|
|
5479
|
+
type: "button",
|
|
5480
|
+
className: `${isMoreMenuOpen ? "open" : ""} ${aboutActive || apiActive ? "active" : ""}`,
|
|
5481
|
+
"aria-haspopup": "true",
|
|
5482
|
+
"aria-expanded": isMoreMenuOpen,
|
|
5483
|
+
onClick: () => setIsMoreMenuOpen((open) => !open),
|
|
5484
|
+
children: [
|
|
5485
|
+
"More",
|
|
5486
|
+
/* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M6 9l6 6 6-6", strokeLinecap: "round", strokeLinejoin: "round" }) })
|
|
5487
|
+
]
|
|
5488
|
+
}
|
|
5489
|
+
),
|
|
5490
|
+
isMoreMenuOpen && /* @__PURE__ */ jsxs(MoreDropdown, { children: [
|
|
5491
|
+
/* @__PURE__ */ jsx(
|
|
5492
|
+
MoreItem,
|
|
5493
|
+
{
|
|
5494
|
+
href: resolvedAboutPath,
|
|
5495
|
+
className: aboutActive ? "active" : "",
|
|
5496
|
+
onClick: (event) => {
|
|
5497
|
+
event.preventDefault();
|
|
5498
|
+
handleNavigation(resolvedAboutPath);
|
|
5499
|
+
},
|
|
5500
|
+
children: "About"
|
|
5501
|
+
}
|
|
5502
|
+
),
|
|
5503
|
+
/* @__PURE__ */ jsx(
|
|
5504
|
+
MoreItem,
|
|
5505
|
+
{
|
|
5506
|
+
href: resolvedApiPath,
|
|
5507
|
+
className: apiActive ? "active" : "",
|
|
5508
|
+
onClick: (event) => {
|
|
5509
|
+
event.preventDefault();
|
|
5510
|
+
handleNavigation(resolvedApiPath);
|
|
5511
|
+
},
|
|
5512
|
+
children: "API"
|
|
5513
|
+
}
|
|
5514
|
+
),
|
|
5515
|
+
/* @__PURE__ */ jsx(
|
|
5516
|
+
MoreItem,
|
|
5517
|
+
{
|
|
5518
|
+
href: "https://docs.loafmarkets.com/en/",
|
|
5519
|
+
target: "_blank",
|
|
5520
|
+
rel: "noopener noreferrer",
|
|
5521
|
+
onClick: () => setIsMoreMenuOpen(false),
|
|
5522
|
+
children: "Docs"
|
|
5523
|
+
}
|
|
5524
|
+
)
|
|
5525
|
+
] })
|
|
5526
|
+
] }),
|
|
5481
5527
|
/* @__PURE__ */ jsx("div", { style: { marginLeft: "auto", display: "flex", alignItems: "center" }, children: /* @__PURE__ */ jsx(
|
|
5482
5528
|
"div",
|
|
5483
5529
|
{
|
|
@@ -5518,6 +5564,8 @@ var Header = ({
|
|
|
5518
5564
|
),
|
|
5519
5565
|
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(offeringsHref), children: "Initial Offerings" }),
|
|
5520
5566
|
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(resolvedPropertyMapPath), children: "Property Map" }),
|
|
5567
|
+
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(resolvedLeaderboardPath), children: "Competition" }),
|
|
5568
|
+
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(resolvedLeaderboardPagePath), children: "Leaderboard" }),
|
|
5521
5569
|
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(resolvedLearnPath), children: "Learn" }),
|
|
5522
5570
|
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(resolvedAboutPath), children: "About" }),
|
|
5523
5571
|
/* @__PURE__ */ jsx(MobileNavItem, { onClick: () => handleNavigation(resolvedApiPath), children: "API" }),
|
|
@@ -5791,8 +5839,7 @@ var Overlay = styled10.div`
|
|
|
5791
5839
|
height: 100%;
|
|
5792
5840
|
background-color: rgba(0, 0, 0, 0.7);
|
|
5793
5841
|
backdrop-filter: blur(3px);
|
|
5794
|
-
|
|
5795
|
-
z-index: 10070;
|
|
5842
|
+
z-index: 970;
|
|
5796
5843
|
`;
|
|
5797
5844
|
var MobileOnlyButton = styled10.button.attrs({ type: "button" })`
|
|
5798
5845
|
display: none;
|
|
@@ -5840,11 +5887,7 @@ var HeaderContainer = styled10.header`
|
|
|
5840
5887
|
top: 0;
|
|
5841
5888
|
left: 0;
|
|
5842
5889
|
right: 0;
|
|
5843
|
-
|
|
5844
|
-
(and the Nav drawer trapped inside its stacking context) above the
|
|
5845
|
-
backdrop Overlay (10070) AND the trade page's modal layers (10001) so
|
|
5846
|
-
the drawer renders on top instead of being dimmed by the backdrop. */
|
|
5847
|
-
z-index: ${({ $menuOpen }) => $menuOpen ? 10075 : 1e3};
|
|
5890
|
+
z-index: 1000;
|
|
5848
5891
|
width: 100%;
|
|
5849
5892
|
/* Fallback min-height for browsers that can't evaluate calc+env */
|
|
5850
5893
|
min-height: 56px;
|
|
@@ -5938,8 +5981,7 @@ var Nav = styled10.nav`
|
|
|
5938
5981
|
max-width: 100%;
|
|
5939
5982
|
height: calc(100dvh - var(--loaf-menu-top, calc(56px + max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px)))));
|
|
5940
5983
|
background: rgb(17, 17, 19);
|
|
5941
|
-
|
|
5942
|
-
z-index: 10080;
|
|
5984
|
+
z-index: 980;
|
|
5943
5985
|
/* Gentle fade + slide-down instead of an abrupt slide-in. */
|
|
5944
5986
|
opacity: ${(props) => props.$isOpen ? "1" : "0"};
|
|
5945
5987
|
transform: ${(props) => props.$isOpen ? "translateY(0)" : "translateY(-14px)"};
|
|
@@ -5957,12 +5999,9 @@ var Nav = styled10.nav`
|
|
|
5957
5999
|
display: flex;
|
|
5958
6000
|
flex-direction: column;
|
|
5959
6001
|
align-items: center;
|
|
5960
|
-
|
|
5961
|
-
2.5rem top padding) when the logged-in menu overflows — otherwise flex
|
|
5962
|
-
centering pushes the first item + padding above the scroll area and clips it. */
|
|
5963
|
-
justify-content: safe center;
|
|
6002
|
+
justify-content: center;
|
|
5964
6003
|
min-height: 100%;
|
|
5965
|
-
padding:
|
|
6004
|
+
padding: 2rem 1.5rem 2.5rem;
|
|
5966
6005
|
gap: 0.4rem;
|
|
5967
6006
|
}
|
|
5968
6007
|
}
|
|
@@ -6035,6 +6074,77 @@ var NavLink = styled10.a`
|
|
|
6035
6074
|
}
|
|
6036
6075
|
}
|
|
6037
6076
|
`;
|
|
6077
|
+
var MoreMenu = styled10.div`
|
|
6078
|
+
position: relative;
|
|
6079
|
+
display: flex;
|
|
6080
|
+
align-items: center;
|
|
6081
|
+
height: 56px;
|
|
6082
|
+
`;
|
|
6083
|
+
var MoreTrigger = styled10.button`
|
|
6084
|
+
margin: 0 12px;
|
|
6085
|
+
padding: 0 4px;
|
|
6086
|
+
height: 56px;
|
|
6087
|
+
display: inline-flex;
|
|
6088
|
+
align-items: center;
|
|
6089
|
+
gap: 4px;
|
|
6090
|
+
background: none;
|
|
6091
|
+
border: none;
|
|
6092
|
+
cursor: pointer;
|
|
6093
|
+
color: #eaecef;
|
|
6094
|
+
font-weight: 500;
|
|
6095
|
+
font-size: 14px;
|
|
6096
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
|
|
6097
|
+
letter-spacing: 0.2px;
|
|
6098
|
+
transition: color 0.2s ease;
|
|
6099
|
+
|
|
6100
|
+
&:hover,
|
|
6101
|
+
&.active {
|
|
6102
|
+
color: #E6C87E;
|
|
6103
|
+
}
|
|
6104
|
+
|
|
6105
|
+
svg {
|
|
6106
|
+
width: 14px;
|
|
6107
|
+
height: 14px;
|
|
6108
|
+
transition: transform 0.2s ease;
|
|
6109
|
+
}
|
|
6110
|
+
&.open svg {
|
|
6111
|
+
transform: rotate(180deg);
|
|
6112
|
+
}
|
|
6113
|
+
`;
|
|
6114
|
+
var MoreDropdown = styled10.div`
|
|
6115
|
+
position: absolute;
|
|
6116
|
+
top: 100%;
|
|
6117
|
+
right: 0;
|
|
6118
|
+
min-width: 160px;
|
|
6119
|
+
padding: 6px;
|
|
6120
|
+
background: #1e2026;
|
|
6121
|
+
border: 1px solid #2b3139;
|
|
6122
|
+
border-radius: 10px;
|
|
6123
|
+
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4);
|
|
6124
|
+
display: flex;
|
|
6125
|
+
flex-direction: column;
|
|
6126
|
+
z-index: 1100;
|
|
6127
|
+
`;
|
|
6128
|
+
var MoreItem = styled10.a`
|
|
6129
|
+
padding: 10px 12px;
|
|
6130
|
+
border-radius: 6px;
|
|
6131
|
+
color: #eaecef;
|
|
6132
|
+
font-weight: 500;
|
|
6133
|
+
font-size: 14px;
|
|
6134
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
|
|
6135
|
+
letter-spacing: 0.2px;
|
|
6136
|
+
text-decoration: none;
|
|
6137
|
+
cursor: pointer;
|
|
6138
|
+
transition: background 0.15s ease, color 0.15s ease;
|
|
6139
|
+
|
|
6140
|
+
&:hover {
|
|
6141
|
+
background: #2b3139;
|
|
6142
|
+
color: #E6C87E;
|
|
6143
|
+
}
|
|
6144
|
+
&.active {
|
|
6145
|
+
color: #E6C87E;
|
|
6146
|
+
}
|
|
6147
|
+
`;
|
|
6038
6148
|
var Button2 = styled10.button.attrs({ type: "button" })`
|
|
6039
6149
|
padding: 0.5rem 1rem;
|
|
6040
6150
|
border-radius: 6px;
|
|
@@ -6601,17 +6711,6 @@ PropertySubheader.displayName = "PropertySubheader";
|
|
|
6601
6711
|
var DEFAULT_LOGO_SRC = Loaf_logo_Banner_default;
|
|
6602
6712
|
var DEFAULT_LOGO_ALT = "Loaf";
|
|
6603
6713
|
var OTP_INPUT_LENGTH = 6;
|
|
6604
|
-
var CODE_PREFIX = "LOAF-";
|
|
6605
|
-
var CODE_SUFFIX_LEN = 5;
|
|
6606
|
-
var normalizeAccessCode = (raw) => CODE_PREFIX + raw.toUpperCase().replace(/^LOAF-?/, "").replace(/[^A-Z0-9]/g, "").slice(0, CODE_SUFFIX_LEN);
|
|
6607
|
-
var friendlyError = (err, fallback) => {
|
|
6608
|
-
const data = err?.response?.data;
|
|
6609
|
-
if (typeof data?.error === "string" && data.error.trim()) return data.error;
|
|
6610
|
-
if (typeof data?.message === "string" && data.message.trim()) return data.message;
|
|
6611
|
-
const msg = err instanceof Error ? err.message : "";
|
|
6612
|
-
if (msg && !/request failed with status code/i.test(msg) && !/network error/i.test(msg)) return msg;
|
|
6613
|
-
return fallback;
|
|
6614
|
-
};
|
|
6615
6714
|
var LoginPopup = ({
|
|
6616
6715
|
onClose,
|
|
6617
6716
|
onOpenEarlyAccess,
|
|
@@ -6630,13 +6729,10 @@ var LoginPopup = ({
|
|
|
6630
6729
|
renderKycWidget,
|
|
6631
6730
|
onFundWallet,
|
|
6632
6731
|
initialView,
|
|
6633
|
-
initialCode,
|
|
6634
6732
|
kycStatus: kycStatusProp,
|
|
6635
6733
|
walletAddress,
|
|
6636
6734
|
onSubmitReferralCode,
|
|
6637
|
-
|
|
6638
|
-
onCheckAccess,
|
|
6639
|
-
gate
|
|
6735
|
+
onJoinWaitlist
|
|
6640
6736
|
}) => {
|
|
6641
6737
|
const [view, setView] = useState(() => initialView ?? "main");
|
|
6642
6738
|
const [email, setEmail] = useState("");
|
|
@@ -6644,17 +6740,19 @@ var LoginPopup = ({
|
|
|
6644
6740
|
const [otp, setOtp] = useState(Array(OTP_INPUT_LENGTH).fill(""));
|
|
6645
6741
|
const [error, setError] = useState("");
|
|
6646
6742
|
const [copied, setCopied] = useState(false);
|
|
6647
|
-
const [referralCode, setReferralCode] = useState(
|
|
6648
|
-
() => gate && initialCode ? normalizeAccessCode(initialCode) : ""
|
|
6649
|
-
);
|
|
6743
|
+
const [referralCode, setReferralCode] = useState("");
|
|
6650
6744
|
const [referralLoading, setReferralLoading] = useState(false);
|
|
6651
6745
|
const [referralError, setReferralError] = useState("");
|
|
6652
|
-
const [
|
|
6653
|
-
const [
|
|
6654
|
-
const [otpStatus, setOtpStatus] = useState("idle");
|
|
6655
|
-
const [signInMode, setSignInMode] = useState(false);
|
|
6746
|
+
const [waitlistLoading, setWaitlistLoading] = useState(false);
|
|
6747
|
+
const [waitlistMessage, setWaitlistMessage] = useState("");
|
|
6656
6748
|
const [loading, setLoading] = useState(false);
|
|
6657
6749
|
const [isSignUp, setIsSignUp] = useState(false);
|
|
6750
|
+
const [loginTitle] = useState(() => {
|
|
6751
|
+
if (typeof window === "undefined") return null;
|
|
6752
|
+
const t = window.__LOAF_LOGIN_TITLE__ ?? null;
|
|
6753
|
+
if (t) delete window.__LOAF_LOGIN_TITLE__;
|
|
6754
|
+
return t;
|
|
6755
|
+
});
|
|
6658
6756
|
const [fundingAmount] = useState("");
|
|
6659
6757
|
const [kycLoading, setKycLoading] = useState(false);
|
|
6660
6758
|
const [showKycWidget, setShowKycWidget] = useState(false);
|
|
@@ -6664,64 +6762,6 @@ var LoginPopup = ({
|
|
|
6664
6762
|
const [fundingError, setFundingError] = useState("");
|
|
6665
6763
|
const [transakWidgetUrl, setTransakWidgetUrl] = useState(null);
|
|
6666
6764
|
const suppressAutoCloseRef = React5__default.useRef(false);
|
|
6667
|
-
const validatedCodeRef = React5__default.useRef(null);
|
|
6668
|
-
const finishGate = React5__default.useCallback(async () => {
|
|
6669
|
-
if (!gate) return true;
|
|
6670
|
-
const code = validatedCodeRef.current;
|
|
6671
|
-
if (code) {
|
|
6672
|
-
try {
|
|
6673
|
-
await onSubmitReferralCode?.(code);
|
|
6674
|
-
window.dispatchEvent(new CustomEvent("loaf:onboarding-start"));
|
|
6675
|
-
return true;
|
|
6676
|
-
} catch {
|
|
6677
|
-
}
|
|
6678
|
-
}
|
|
6679
|
-
const hasAccess = onCheckAccess ? await onCheckAccess() : true;
|
|
6680
|
-
if (hasAccess) return true;
|
|
6681
|
-
suppressAutoCloseRef.current = true;
|
|
6682
|
-
validatedCodeRef.current = null;
|
|
6683
|
-
setOtp(Array(OTP_INPUT_LENGTH).fill(""));
|
|
6684
|
-
setOtpStatus("idle");
|
|
6685
|
-
setSignInMode(false);
|
|
6686
|
-
setSignInRevealed(false);
|
|
6687
|
-
setCodeStatus(code ? "invalid" : "idle");
|
|
6688
|
-
setView("referral");
|
|
6689
|
-
setError(
|
|
6690
|
-
code ? "That code can't be redeemed anymore. Enter a different access code." : "Enter your access code to continue."
|
|
6691
|
-
);
|
|
6692
|
-
return false;
|
|
6693
|
-
}, [gate, onSubmitReferralCode, onCheckAccess]);
|
|
6694
|
-
const runCodeValidation = React5__default.useCallback(async (fullCode) => {
|
|
6695
|
-
setCodeStatus("checking");
|
|
6696
|
-
setError("");
|
|
6697
|
-
try {
|
|
6698
|
-
const ok = onValidateCode ? await onValidateCode(fullCode) : true;
|
|
6699
|
-
if (!ok) {
|
|
6700
|
-
validatedCodeRef.current = null;
|
|
6701
|
-
setCodeStatus("invalid");
|
|
6702
|
-
return;
|
|
6703
|
-
}
|
|
6704
|
-
validatedCodeRef.current = fullCode;
|
|
6705
|
-
setCodeStatus("valid");
|
|
6706
|
-
if (isAuthenticated) {
|
|
6707
|
-
if (await finishGate()) setTimeout(() => onClose(), 500);
|
|
6708
|
-
return;
|
|
6709
|
-
}
|
|
6710
|
-
setIsSignUp(true);
|
|
6711
|
-
setSignInRevealed(true);
|
|
6712
|
-
} catch {
|
|
6713
|
-
validatedCodeRef.current = null;
|
|
6714
|
-
setCodeStatus("invalid");
|
|
6715
|
-
}
|
|
6716
|
-
}, [onValidateCode, isAuthenticated, finishGate, onClose]);
|
|
6717
|
-
const autoCodeTriedRef = React5__default.useRef(false);
|
|
6718
|
-
useEffect(() => {
|
|
6719
|
-
if (autoCodeTriedRef.current || !gate || !initialCode) return;
|
|
6720
|
-
const full = normalizeAccessCode(initialCode);
|
|
6721
|
-
if (full.length !== CODE_PREFIX.length + CODE_SUFFIX_LEN) return;
|
|
6722
|
-
autoCodeTriedRef.current = true;
|
|
6723
|
-
void runCodeValidation(full);
|
|
6724
|
-
}, [gate, initialCode, runCodeValidation]);
|
|
6725
6765
|
useEffect(() => {
|
|
6726
6766
|
if (typeof initialView === "string") {
|
|
6727
6767
|
setView(initialView);
|
|
@@ -6776,11 +6816,11 @@ var LoginPopup = ({
|
|
|
6776
6816
|
}, [autoCloseOnAuth, currentUser, isAuthenticated, onClose, view]);
|
|
6777
6817
|
useEffect(() => {
|
|
6778
6818
|
const handleEsc = (e) => {
|
|
6779
|
-
if (e.key === "Escape"
|
|
6819
|
+
if (e.key === "Escape") onClose();
|
|
6780
6820
|
};
|
|
6781
6821
|
window.addEventListener("keydown", handleEsc);
|
|
6782
6822
|
return () => window.removeEventListener("keydown", handleEsc);
|
|
6783
|
-
}, [onClose
|
|
6823
|
+
}, [onClose]);
|
|
6784
6824
|
const handleWalletLogin = async () => {
|
|
6785
6825
|
if (onWalletLogin) {
|
|
6786
6826
|
suppressAutoCloseRef.current = true;
|
|
@@ -6792,16 +6832,12 @@ var LoginPopup = ({
|
|
|
6792
6832
|
setView("wallet-handle");
|
|
6793
6833
|
return;
|
|
6794
6834
|
}
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
onClose();
|
|
6798
|
-
}
|
|
6835
|
+
suppressAutoCloseRef.current = false;
|
|
6836
|
+
onClose();
|
|
6799
6837
|
return;
|
|
6800
6838
|
} catch (err) {
|
|
6801
6839
|
console.error("[LoginTrace][Popup] Wallet login failed", err);
|
|
6802
6840
|
suppressAutoCloseRef.current = false;
|
|
6803
|
-
setError(friendlyError(err, "Wallet login failed. Please try again."));
|
|
6804
|
-
return;
|
|
6805
6841
|
}
|
|
6806
6842
|
}
|
|
6807
6843
|
onClose();
|
|
@@ -6823,13 +6859,6 @@ var LoginPopup = ({
|
|
|
6823
6859
|
setError("");
|
|
6824
6860
|
try {
|
|
6825
6861
|
await onWalletSignup(handle.trim());
|
|
6826
|
-
if (gate) {
|
|
6827
|
-
if (await finishGate()) {
|
|
6828
|
-
suppressAutoCloseRef.current = false;
|
|
6829
|
-
onClose();
|
|
6830
|
-
}
|
|
6831
|
-
return;
|
|
6832
|
-
}
|
|
6833
6862
|
if (onSubmitReferralCode) {
|
|
6834
6863
|
setView("referral");
|
|
6835
6864
|
} else {
|
|
@@ -6841,11 +6870,6 @@ var LoginPopup = ({
|
|
|
6841
6870
|
setLoading(false);
|
|
6842
6871
|
}
|
|
6843
6872
|
};
|
|
6844
|
-
const handleEmailClick = (signUp = false) => {
|
|
6845
|
-
setIsSignUp(signUp);
|
|
6846
|
-
setView("email");
|
|
6847
|
-
setError("");
|
|
6848
|
-
};
|
|
6849
6873
|
const handleSendCode = async (event) => {
|
|
6850
6874
|
event?.preventDefault();
|
|
6851
6875
|
if (!email || !email.includes("@")) {
|
|
@@ -6858,7 +6882,6 @@ var LoginPopup = ({
|
|
|
6858
6882
|
}
|
|
6859
6883
|
setLoading(true);
|
|
6860
6884
|
setError("");
|
|
6861
|
-
setOtpStatus("idle");
|
|
6862
6885
|
const normalizedHandle = isSignUp && handle.trim() ? handle.trim() : void 0;
|
|
6863
6886
|
try {
|
|
6864
6887
|
const demoResult = await onDemoLogin?.(email, normalizedHandle ?? null);
|
|
@@ -6879,15 +6902,11 @@ var LoginPopup = ({
|
|
|
6879
6902
|
setView("otp");
|
|
6880
6903
|
setOtp(Array(OTP_INPUT_LENGTH).fill(""));
|
|
6881
6904
|
} catch (err) {
|
|
6882
|
-
const message =
|
|
6905
|
+
const message = err instanceof Error ? err.message : "Failed to send verification code";
|
|
6883
6906
|
console.error("[LoginTrace][Popup] onSendEmailCode threw", err);
|
|
6884
6907
|
if (!isSignUp && message.includes("No account found")) {
|
|
6885
|
-
if (signInMode) {
|
|
6886
|
-
setError("No account found for this email. Go back and enter your access code to create one.");
|
|
6887
|
-
setLoading(false);
|
|
6888
|
-
return;
|
|
6889
|
-
}
|
|
6890
6908
|
setIsSignUp(true);
|
|
6909
|
+
setView("email");
|
|
6891
6910
|
setError("");
|
|
6892
6911
|
setLoading(false);
|
|
6893
6912
|
return;
|
|
@@ -6899,7 +6918,7 @@ var LoginPopup = ({
|
|
|
6899
6918
|
setView("otp");
|
|
6900
6919
|
setOtp(Array(OTP_INPUT_LENGTH).fill(""));
|
|
6901
6920
|
} catch (retryErr) {
|
|
6902
|
-
setError(
|
|
6921
|
+
setError(retryErr instanceof Error ? retryErr.message : "Failed to send verification code");
|
|
6903
6922
|
}
|
|
6904
6923
|
setLoading(false);
|
|
6905
6924
|
return;
|
|
@@ -6993,30 +7012,6 @@ var LoginPopup = ({
|
|
|
6993
7012
|
setLoading(false);
|
|
6994
7013
|
}
|
|
6995
7014
|
};
|
|
6996
|
-
const runGateOtpVerify = React5__default.useCallback(async (code) => {
|
|
6997
|
-
if (!onVerifyEmailCode) return;
|
|
6998
|
-
setOtpStatus("checking");
|
|
6999
|
-
setError("");
|
|
7000
|
-
suppressAutoCloseRef.current = true;
|
|
7001
|
-
try {
|
|
7002
|
-
await onVerifyEmailCode({ code, email });
|
|
7003
|
-
if (await finishGate()) {
|
|
7004
|
-
setOtpStatus("valid");
|
|
7005
|
-
setTimeout(() => onClose(), 750);
|
|
7006
|
-
}
|
|
7007
|
-
} catch {
|
|
7008
|
-
suppressAutoCloseRef.current = false;
|
|
7009
|
-
setOtpStatus("invalid");
|
|
7010
|
-
}
|
|
7011
|
-
}, [onVerifyEmailCode, email, finishGate, onClose]);
|
|
7012
|
-
useEffect(() => {
|
|
7013
|
-
if (!gate || view !== "otp") return;
|
|
7014
|
-
if (otp.join("").length < OTP_INPUT_LENGTH) {
|
|
7015
|
-
if (otpStatus === "invalid") setOtpStatus("idle");
|
|
7016
|
-
return;
|
|
7017
|
-
}
|
|
7018
|
-
if (otpStatus === "idle") void runGateOtpVerify(otp.join(""));
|
|
7019
|
-
}, [gate, view, otp, otpStatus, runGateOtpVerify]);
|
|
7020
7015
|
const handleKycWidgetResult = (result) => {
|
|
7021
7016
|
setShowKycWidget(false);
|
|
7022
7017
|
if (result.passed) {
|
|
@@ -7113,36 +7108,35 @@ var LoginPopup = ({
|
|
|
7113
7108
|
setError("");
|
|
7114
7109
|
};
|
|
7115
7110
|
if (view === "main") {
|
|
7116
|
-
return /* @__PURE__ */ jsx(Overlay2, {
|
|
7111
|
+
return /* @__PURE__ */ jsx(Overlay2, { onClick: onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7117
7112
|
/* @__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" }) }) }),
|
|
7118
|
-
/* @__PURE__ */
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7113
|
+
/* @__PURE__ */ jsx(MainHeading, { children: loginTitle?.title ?? "Welcome to Loaf" }),
|
|
7114
|
+
(loginTitle ? loginTitle.subtitle : "Sign in to claim 100k in test USD.") && /* @__PURE__ */ jsx(MainSubtitle, { children: loginTitle ? loginTitle.subtitle : "Sign in to claim 100k in test USD." }),
|
|
7115
|
+
/* @__PURE__ */ jsxs(GateForm, { onSubmit: handleSendCode, children: [
|
|
7116
|
+
/* @__PURE__ */ jsxs(GateInputRow, { children: [
|
|
7117
|
+
/* @__PURE__ */ jsx(
|
|
7118
|
+
GateInput,
|
|
7119
|
+
{
|
|
7120
|
+
type: "email",
|
|
7121
|
+
placeholder: "Enter your email",
|
|
7122
|
+
value: email,
|
|
7123
|
+
onChange: (event) => setEmail(event.target.value),
|
|
7124
|
+
autoFocus: true
|
|
7125
|
+
}
|
|
7126
|
+
),
|
|
7127
|
+
/* @__PURE__ */ jsx(GateSubmit, { type: "submit", disabled: loading || !email, "aria-label": "Continue with email", children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M5 12h14M13 6l6 6-6 6" }) }) })
|
|
7130
7128
|
] }),
|
|
7131
|
-
/* @__PURE__ */ jsx(
|
|
7132
|
-
/* @__PURE__ */ jsxs(LoginButton, { onClick: handleWalletLogin, children: [
|
|
7133
|
-
/* @__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" }) }),
|
|
7134
|
-
"Sign in with Wallet"
|
|
7135
|
-
] })
|
|
7129
|
+
error && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: error })
|
|
7136
7130
|
] }),
|
|
7137
|
-
/* @__PURE__ */
|
|
7138
|
-
|
|
7139
|
-
" ",
|
|
7140
|
-
|
|
7131
|
+
/* @__PURE__ */ jsx(GateOr, { children: "or" }),
|
|
7132
|
+
/* @__PURE__ */ jsxs(LoginButton, { onClick: handleWalletLogin, children: [
|
|
7133
|
+
/* @__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" }) }),
|
|
7134
|
+
"Join with wallet"
|
|
7141
7135
|
] })
|
|
7142
7136
|
] }) });
|
|
7143
7137
|
}
|
|
7144
7138
|
if (view === "email") {
|
|
7145
|
-
return /* @__PURE__ */ jsx(Overlay2, {
|
|
7139
|
+
return /* @__PURE__ */ jsx(Overlay2, { onClick: onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7146
7140
|
/* @__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" }) }) }),
|
|
7147
7141
|
/* @__PURE__ */ jsxs(BackButton, { onClick: handleBack, children: [
|
|
7148
7142
|
/* @__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" }) }),
|
|
@@ -7181,7 +7175,7 @@ var LoginPopup = ({
|
|
|
7181
7175
|
] }) });
|
|
7182
7176
|
}
|
|
7183
7177
|
if (view === "wallet-handle") {
|
|
7184
|
-
return /* @__PURE__ */ jsx(Overlay2, {
|
|
7178
|
+
return /* @__PURE__ */ jsx(Overlay2, { onClick: loading ? void 0 : onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7185
7179
|
!loading && /* @__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" }) }) }),
|
|
7186
7180
|
/* @__PURE__ */ jsxs(Title, { children: [
|
|
7187
7181
|
/* @__PURE__ */ jsx(LogoContainer3, { children: /* @__PURE__ */ jsx(LogoImage, { src: logoSrc, alt: logoAlt }) }),
|
|
@@ -7206,71 +7200,7 @@ var LoginPopup = ({
|
|
|
7206
7200
|
] }) });
|
|
7207
7201
|
}
|
|
7208
7202
|
if (view === "otp") {
|
|
7209
|
-
|
|
7210
|
-
return /* @__PURE__ */ jsxs(GateShell, { children: [
|
|
7211
|
-
/* @__PURE__ */ jsx(GateTint, { $reveal: otpStatus === "valid" ? 3 : 2 }),
|
|
7212
|
-
/* @__PURE__ */ jsxs(GateForm, { children: [
|
|
7213
|
-
/* @__PURE__ */ jsxs(GateBrand, { children: [
|
|
7214
|
-
/* @__PURE__ */ jsx(GateLogoLink, { href: "https://loafmarkets.com", "aria-label": "Go to loafmarkets.com", children: /* @__PURE__ */ jsx(GateLogo, { src: logoSrc, alt: logoAlt }) }),
|
|
7215
|
-
/* @__PURE__ */ jsx(GateBrandDivider, {}),
|
|
7216
|
-
/* @__PURE__ */ jsx(GateBetaTag, { children: "Private Beta" })
|
|
7217
|
-
] }),
|
|
7218
|
-
/* @__PURE__ */ jsxs(GateOtpText, { children: [
|
|
7219
|
-
"We sent a code to",
|
|
7220
|
-
/* @__PURE__ */ jsx("br", {}),
|
|
7221
|
-
/* @__PURE__ */ jsx("strong", { children: email })
|
|
7222
|
-
] }),
|
|
7223
|
-
/* @__PURE__ */ jsx(OTPContainer, { children: otp.map((digit, index) => /* @__PURE__ */ jsx(
|
|
7224
|
-
OTPInput,
|
|
7225
|
-
{
|
|
7226
|
-
id: `otp-${index}`,
|
|
7227
|
-
type: "text",
|
|
7228
|
-
inputMode: "numeric",
|
|
7229
|
-
maxLength: 1,
|
|
7230
|
-
$status: otpStatus,
|
|
7231
|
-
readOnly: otpStatus === "valid" || otpStatus === "checking",
|
|
7232
|
-
value: digit,
|
|
7233
|
-
onChange: (event) => handleOTPChange(index, event.target.value),
|
|
7234
|
-
onKeyDown: (event) => handleOTPKeyDown(index, event),
|
|
7235
|
-
onInput: (event) => handleOTPInput(index, event),
|
|
7236
|
-
onPaste: handleOTPPaste,
|
|
7237
|
-
autoComplete: index === 0 ? "one-time-code" : "off",
|
|
7238
|
-
autoFocus: index === 0
|
|
7239
|
-
},
|
|
7240
|
-
index
|
|
7241
|
-
)) }),
|
|
7242
|
-
otpStatus === "invalid" && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: "That code isn't right. Try again." }),
|
|
7243
|
-
/* @__PURE__ */ jsxs(GateResendText, { children: [
|
|
7244
|
-
/* @__PURE__ */ jsx(
|
|
7245
|
-
"button",
|
|
7246
|
-
{
|
|
7247
|
-
type: "button",
|
|
7248
|
-
onClick: (event) => {
|
|
7249
|
-
event.preventDefault();
|
|
7250
|
-
void handleSendCode(event);
|
|
7251
|
-
},
|
|
7252
|
-
children: "Resend code"
|
|
7253
|
-
}
|
|
7254
|
-
),
|
|
7255
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }),
|
|
7256
|
-
/* @__PURE__ */ jsx(
|
|
7257
|
-
"button",
|
|
7258
|
-
{
|
|
7259
|
-
type: "button",
|
|
7260
|
-
onClick: () => {
|
|
7261
|
-
setOtp(Array(OTP_INPUT_LENGTH).fill(""));
|
|
7262
|
-
setOtpStatus("idle");
|
|
7263
|
-
setError("");
|
|
7264
|
-
setView("referral");
|
|
7265
|
-
},
|
|
7266
|
-
children: "Back"
|
|
7267
|
-
}
|
|
7268
|
-
)
|
|
7269
|
-
] })
|
|
7270
|
-
] })
|
|
7271
|
-
] });
|
|
7272
|
-
}
|
|
7273
|
-
return /* @__PURE__ */ jsx(Overlay2, { $transparent: gate, onClick: loading ? void 0 : onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7203
|
+
return /* @__PURE__ */ jsx(Overlay2, { onClick: loading ? void 0 : onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7274
7204
|
!loading && /* @__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" }) }) }),
|
|
7275
7205
|
loading ? /* @__PURE__ */ jsxs(AccountCreationLoader, { children: [
|
|
7276
7206
|
/* @__PURE__ */ jsx(SpinnerRing, {}),
|
|
@@ -7359,8 +7289,8 @@ var LoginPopup = ({
|
|
|
7359
7289
|
/* @__PURE__ */ jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
|
|
7360
7290
|
/* @__PURE__ */ jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
7361
7291
|
] }) }),
|
|
7362
|
-
/* @__PURE__ */ jsx(KycHeading, { children: "Verify
|
|
7363
|
-
/* @__PURE__ */ jsx(KycSubline, { children: "Initial offerings are only available to
|
|
7292
|
+
/* @__PURE__ */ jsx(KycHeading, { children: "Verify Your Identity" }),
|
|
7293
|
+
/* @__PURE__ */ jsx(KycSubline, { children: "Initial offerings are only available to verified investors" }),
|
|
7364
7294
|
/* @__PURE__ */ jsx(KycStartButton, { type: "button", onClick: handleKycStart, disabled: kycLoading, children: kycLoading ? "Verifying\u2026" : kycStatusProp === "PENDING" || kycStatusProp === "ON_HOLD" ? "Resume Verification" : "Start Verification" }),
|
|
7365
7295
|
/* @__PURE__ */ jsx(KycDuration, { children: "Takes about 2 minutes" }),
|
|
7366
7296
|
/* @__PURE__ */ jsx(KycDivider, {}),
|
|
@@ -7446,7 +7376,7 @@ var LoginPopup = ({
|
|
|
7446
7376
|
/* @__PURE__ */ jsx("div", { style: { color: "rgba(255,255,255,0.5)", fontSize: "0.8rem" }, children: "Deposit USDC from an exchange or wallet" })
|
|
7447
7377
|
] })
|
|
7448
7378
|
] }),
|
|
7449
|
-
/* @__PURE__ */ jsxs(ModalOptionCard, { onClick: handleFiatFund, disabled:
|
|
7379
|
+
/* @__PURE__ */ jsxs(ModalOptionCard, { onClick: handleFiatFund, disabled: fiatFundingLoading, children: [
|
|
7450
7380
|
/* @__PURE__ */ jsxs("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", style: { color: "rgba(255,255,255,0.6)", flexShrink: 0 }, children: [
|
|
7451
7381
|
/* @__PURE__ */ jsx("line", { x1: "3", y1: "22", x2: "21", y2: "22" }),
|
|
7452
7382
|
/* @__PURE__ */ jsx("line", { x1: "6", y1: "18", x2: "6", y2: "11" }),
|
|
@@ -7456,10 +7386,7 @@ var LoginPopup = ({
|
|
|
7456
7386
|
/* @__PURE__ */ jsx("polygon", { points: "12 2 20 7 4 7" })
|
|
7457
7387
|
] }),
|
|
7458
7388
|
/* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
|
|
7459
|
-
/* @__PURE__ */
|
|
7460
|
-
/* @__PURE__ */ jsx("span", { style: { color: "#fff", fontWeight: 600, fontSize: "0.95rem" }, children: fiatFundingLoading ? "Loading widget\u2026" : "Bank Deposit" }),
|
|
7461
|
-
/* @__PURE__ */ jsx("span", { style: { fontSize: "0.6rem", fontWeight: 700, color: "#E6C87E", background: "rgba(230,198,86,0.12)", padding: "0.12rem 0.4rem", borderRadius: "4px", textTransform: "uppercase", letterSpacing: "0.04em", whiteSpace: "nowrap" }, children: "Coming Soon" })
|
|
7462
|
-
] }),
|
|
7389
|
+
/* @__PURE__ */ jsx("div", { style: { color: "#fff", fontWeight: 600, fontSize: "0.95rem", marginBottom: "0.25rem" }, children: fiatFundingLoading ? "Loading widget\u2026" : "Bank Deposit" }),
|
|
7463
7390
|
/* @__PURE__ */ jsx("div", { style: { color: "rgba(255,255,255,0.5)", fontSize: "0.8rem" }, children: "Deposit to your account via card or bank transfer" })
|
|
7464
7391
|
] })
|
|
7465
7392
|
] })
|
|
@@ -7490,162 +7417,84 @@ var LoginPopup = ({
|
|
|
7490
7417
|
setReferralLoading(false);
|
|
7491
7418
|
}
|
|
7492
7419
|
};
|
|
7493
|
-
const
|
|
7494
|
-
|
|
7495
|
-
|
|
7420
|
+
const handleJoinWaitlistSkip = async () => {
|
|
7421
|
+
if (!onJoinWaitlist || !email) {
|
|
7422
|
+
onClose();
|
|
7423
|
+
return;
|
|
7424
|
+
}
|
|
7496
7425
|
setReferralError("");
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
|
|
7503
|
-
|
|
7426
|
+
setWaitlistLoading(true);
|
|
7427
|
+
try {
|
|
7428
|
+
const message = await onJoinWaitlist(email);
|
|
7429
|
+
setWaitlistMessage(message || "You're on the waitlist.");
|
|
7430
|
+
setTimeout(() => onClose(), 1400);
|
|
7431
|
+
} catch (err) {
|
|
7432
|
+
setReferralError(err instanceof Error ? err.message : "Couldn't join the waitlist. Please try again.");
|
|
7433
|
+
setWaitlistLoading(false);
|
|
7504
7434
|
}
|
|
7505
7435
|
};
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
onPaste: handleCodePaste,
|
|
7529
|
-
onKeyDown: (e) => {
|
|
7530
|
-
if (e.key !== "Enter" || !codeComplete) return;
|
|
7531
|
-
if (gate) void runCodeValidation(referralCode);
|
|
7532
|
-
else void handleReferralSubmit();
|
|
7533
|
-
},
|
|
7534
|
-
autoFocus: true
|
|
7535
|
-
}
|
|
7536
|
-
);
|
|
7537
|
-
const signInStep = /* @__PURE__ */ jsxs(GateReveal, { children: [
|
|
7538
|
-
/* @__PURE__ */ jsxs("form", { onSubmit: handleSendCode, style: { width: "100%" }, children: [
|
|
7539
|
-
/* @__PURE__ */ jsxs(CodeInputWrapper, { children: [
|
|
7436
|
+
return /* @__PURE__ */ jsx(Overlay2, { onClick: onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7437
|
+
/* @__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" }) }) }),
|
|
7438
|
+
/* @__PURE__ */ jsxs(OnboardingStepContainer, { children: [
|
|
7439
|
+
/* @__PURE__ */ jsx("div", { style: {
|
|
7440
|
+
width: 52,
|
|
7441
|
+
height: 52,
|
|
7442
|
+
borderRadius: 14,
|
|
7443
|
+
background: "linear-gradient(135deg, rgba(230,200,126,0.15) 0%, rgba(230,200,126,0.08) 100%)",
|
|
7444
|
+
border: "1px solid rgba(230,200,126,0.25)",
|
|
7445
|
+
display: "flex",
|
|
7446
|
+
alignItems: "center",
|
|
7447
|
+
justifyContent: "center",
|
|
7448
|
+
marginBottom: "1.1rem"
|
|
7449
|
+
}, children: /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "#e6c87e", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
7450
|
+
/* @__PURE__ */ jsx("path", { d: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" }),
|
|
7451
|
+
/* @__PURE__ */ jsx("circle", { cx: "9", cy: "7", r: "4" }),
|
|
7452
|
+
/* @__PURE__ */ jsx("path", { d: "M23 21v-2a4 4 0 0 0-3-3.87" }),
|
|
7453
|
+
/* @__PURE__ */ jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
7454
|
+
] }) }),
|
|
7455
|
+
/* @__PURE__ */ jsx(OnboardingHeading, { children: "Enter code to access Private Beta trading" }),
|
|
7456
|
+
/* @__PURE__ */ jsx(OnboardingSubtext, { style: { marginBottom: "1.5rem" }, children: "Enter code to trade 100k in USDC, or skip to continue." }),
|
|
7457
|
+
/* @__PURE__ */ jsxs(EmailFormContainer, { style: { width: "100%", marginBottom: 0 }, children: [
|
|
7540
7458
|
/* @__PURE__ */ jsx(
|
|
7541
|
-
|
|
7459
|
+
EmailInput,
|
|
7542
7460
|
{
|
|
7543
|
-
type: "
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7461
|
+
type: "text",
|
|
7462
|
+
placeholder: "e.g. LOAF-XXXX",
|
|
7463
|
+
value: referralCode,
|
|
7464
|
+
onChange: (e) => {
|
|
7465
|
+
setReferralCode(e.target.value.toUpperCase());
|
|
7466
|
+
setReferralError("");
|
|
7467
|
+
},
|
|
7468
|
+
onKeyDown: (e) => {
|
|
7469
|
+
if (e.key === "Enter") void handleReferralSubmit();
|
|
7470
|
+
},
|
|
7549
7471
|
autoFocus: true
|
|
7550
7472
|
}
|
|
7551
7473
|
),
|
|
7552
|
-
/* @__PURE__ */ jsx(
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
] })
|
|
7563
|
-
] });
|
|
7564
|
-
if (gate) {
|
|
7565
|
-
const codeAccepted = codeStatus === "valid";
|
|
7566
|
-
const showSignIn = signInMode || signInRevealed;
|
|
7567
|
-
return /* @__PURE__ */ jsxs(GateShell, { children: [
|
|
7568
|
-
/* @__PURE__ */ jsx(GateTint, { $reveal: showSignIn ? 1 : 0 }),
|
|
7569
|
-
/* @__PURE__ */ jsxs(GateForm, { children: [
|
|
7570
|
-
/* @__PURE__ */ jsxs(GateBrand, { children: [
|
|
7571
|
-
/* @__PURE__ */ jsx(GateLogoLink, { href: "https://loafmarkets.com", "aria-label": "Go to loafmarkets.com", children: /* @__PURE__ */ jsx(GateLogo, { src: logoSrc, alt: logoAlt }) }),
|
|
7572
|
-
/* @__PURE__ */ jsx(GateBrandDivider, {}),
|
|
7573
|
-
/* @__PURE__ */ jsx(GateBetaTag, { children: "Private Beta" })
|
|
7574
|
-
] }),
|
|
7575
|
-
signInMode ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7576
|
-
signInStep,
|
|
7577
|
-
/* @__PURE__ */ jsx(GateResendText, { children: /* @__PURE__ */ jsx(
|
|
7578
|
-
"button",
|
|
7579
|
-
{
|
|
7580
|
-
type: "button",
|
|
7581
|
-
onClick: () => {
|
|
7582
|
-
setError("");
|
|
7583
|
-
setSignInMode(false);
|
|
7584
|
-
},
|
|
7585
|
-
children: "\u2190 Enter access code instead"
|
|
7586
|
-
}
|
|
7587
|
-
) })
|
|
7588
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7589
|
-
/* @__PURE__ */ jsxs(CodeInputWrapper, { $status: codeStatus, children: [
|
|
7590
|
-
/* @__PURE__ */ jsx(CodePrefix, { children: CODE_PREFIX }),
|
|
7591
|
-
codeInput,
|
|
7592
|
-
/* @__PURE__ */ jsx(
|
|
7593
|
-
GateSubmit,
|
|
7594
|
-
{
|
|
7595
|
-
type: "button",
|
|
7596
|
-
"aria-label": "Submit access code",
|
|
7597
|
-
$status: codeStatus,
|
|
7598
|
-
disabled: codeStatus === "checking" || !codeComplete,
|
|
7599
|
-
onClick: () => void runCodeValidation(referralCode),
|
|
7600
|
-
children: codeAccepted ? /* @__PURE__ */ jsx("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M20 6L9 17l-5-5" }) }) : codeStatus === "checking" ? /* @__PURE__ */ jsx(GateSpinner, {}) : /* @__PURE__ */ jsx("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M5 12h14M13 6l6 6-6 6" }) })
|
|
7601
|
-
}
|
|
7602
|
-
)
|
|
7603
|
-
] }),
|
|
7604
|
-
(codeStatus === "invalid" || error && !signInRevealed) && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: error || "That code isn't valid. Double-check and try again." }),
|
|
7605
|
-
signInRevealed ? signInStep : /* @__PURE__ */ jsxs(GateResendText, { children: [
|
|
7606
|
-
"Already have an account?",
|
|
7607
|
-
" ",
|
|
7608
|
-
/* @__PURE__ */ jsx(
|
|
7609
|
-
"button",
|
|
7610
|
-
{
|
|
7611
|
-
type: "button",
|
|
7612
|
-
onClick: () => {
|
|
7613
|
-
setError("");
|
|
7614
|
-
setIsSignUp(false);
|
|
7615
|
-
setSignInMode(true);
|
|
7616
|
-
},
|
|
7617
|
-
children: "Sign in"
|
|
7618
|
-
}
|
|
7619
|
-
)
|
|
7620
|
-
] })
|
|
7621
|
-
] })
|
|
7622
|
-
] })
|
|
7623
|
-
] });
|
|
7624
|
-
}
|
|
7625
|
-
return /* @__PURE__ */ jsx(Overlay2, { onClick: onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
|
|
7626
|
-
/* @__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" }) }) }),
|
|
7627
|
-
/* @__PURE__ */ jsxs(Title, { children: [
|
|
7628
|
-
/* @__PURE__ */ jsxs(LogoContainer3, { children: [
|
|
7629
|
-
/* @__PURE__ */ jsx(LogoImage, { src: logoSrc, alt: logoAlt }),
|
|
7630
|
-
/* @__PURE__ */ jsx(LogoBeta, { children: "Private Beta" })
|
|
7631
|
-
] }),
|
|
7632
|
-
/* @__PURE__ */ jsx(TitleText, { children: "Enter your access code" })
|
|
7633
|
-
] }),
|
|
7634
|
-
/* @__PURE__ */ jsxs(EmailFormContainer, { style: { width: "100%", marginTop: "1.5rem", marginBottom: 0 }, children: [
|
|
7635
|
-
/* @__PURE__ */ jsxs(CodeInputWrapper, { children: [
|
|
7636
|
-
/* @__PURE__ */ jsx(CodePrefix, { children: CODE_PREFIX }),
|
|
7637
|
-
codeInput
|
|
7474
|
+
/* @__PURE__ */ jsx(
|
|
7475
|
+
SubmitButton,
|
|
7476
|
+
{
|
|
7477
|
+
type: "button",
|
|
7478
|
+
onClick: () => void handleReferralSubmit(),
|
|
7479
|
+
disabled: referralLoading || !referralCode.trim(),
|
|
7480
|
+
children: referralLoading ? "Verifying\u2026" : "Apply Code"
|
|
7481
|
+
}
|
|
7482
|
+
),
|
|
7483
|
+
referralError && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: referralError })
|
|
7638
7484
|
] }),
|
|
7639
|
-
/* @__PURE__ */
|
|
7640
|
-
|
|
7485
|
+
waitlistMessage ? /* @__PURE__ */ jsxs(StatusMessage, { style: { marginTop: "0.75rem" }, children: [
|
|
7486
|
+
"\u2713 ",
|
|
7487
|
+
waitlistMessage
|
|
7488
|
+
] }) : /* @__PURE__ */ jsx(
|
|
7489
|
+
OnboardingSkipButton,
|
|
7641
7490
|
{
|
|
7642
7491
|
type: "button",
|
|
7643
|
-
onClick: () => void
|
|
7644
|
-
disabled:
|
|
7645
|
-
|
|
7492
|
+
onClick: () => void handleJoinWaitlistSkip(),
|
|
7493
|
+
disabled: waitlistLoading,
|
|
7494
|
+
style: { marginTop: "0.75rem" },
|
|
7495
|
+
children: waitlistLoading ? "Joining\u2026" : email ? "Skip for now & join Waitlist" : "Skip for now"
|
|
7646
7496
|
}
|
|
7647
|
-
)
|
|
7648
|
-
referralError && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: referralError })
|
|
7497
|
+
)
|
|
7649
7498
|
] })
|
|
7650
7499
|
] }) });
|
|
7651
7500
|
}
|
|
@@ -7765,9 +7614,8 @@ var Overlay2 = styled10.div`
|
|
|
7765
7614
|
left: 0;
|
|
7766
7615
|
right: 0;
|
|
7767
7616
|
bottom: 0;
|
|
7768
|
-
background-color:
|
|
7769
|
-
backdrop-filter:
|
|
7770
|
-
transition: background-color 0.4s ease, backdrop-filter 0.4s ease;
|
|
7617
|
+
background-color: rgba(0, 0, 0, 0.8);
|
|
7618
|
+
backdrop-filter: blur(4px);
|
|
7771
7619
|
display: flex;
|
|
7772
7620
|
justify-content: center;
|
|
7773
7621
|
align-items: center;
|
|
@@ -7784,15 +7632,15 @@ var Overlay2 = styled10.div`
|
|
|
7784
7632
|
}
|
|
7785
7633
|
`;
|
|
7786
7634
|
var PopupContainer = styled10.div`
|
|
7787
|
-
background-color:
|
|
7788
|
-
border:
|
|
7635
|
+
background-color: var(--color-background, #0a0a0a);
|
|
7636
|
+
border: 1px solid rgba(230, 198, 86, 0.3);
|
|
7789
7637
|
border-radius: var(--border-radius, 12px);
|
|
7790
7638
|
padding: 2.5rem;
|
|
7791
7639
|
max-width: 440px;
|
|
7792
7640
|
width: 90%;
|
|
7793
7641
|
position: relative;
|
|
7794
7642
|
animation: slideUp 0.3s ease-out;
|
|
7795
|
-
box-shadow:
|
|
7643
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
|
7796
7644
|
|
|
7797
7645
|
@keyframes slideUp {
|
|
7798
7646
|
from {
|
|
@@ -7979,379 +7827,180 @@ var Title = styled10.h2`
|
|
|
7979
7827
|
flex-direction: column;
|
|
7980
7828
|
align-items: center;
|
|
7981
7829
|
justify-content: center;
|
|
7982
|
-
gap:
|
|
7983
|
-
`;
|
|
7984
|
-
var TitleText = styled10.span`
|
|
7985
|
-
text-align: center;
|
|
7986
|
-
line-height: 1.2;
|
|
7987
|
-
`;
|
|
7988
|
-
var LogoBeta = styled10.span`
|
|
7989
|
-
color: var(--color-accent, #E6C87E);
|
|
7990
|
-
font-size: 0.6rem;
|
|
7991
|
-
font-weight: 600;
|
|
7992
|
-
letter-spacing: 0.14em;
|
|
7993
|
-
text-transform: uppercase;
|
|
7994
|
-
white-space: nowrap;
|
|
7995
|
-
padding-bottom: 0.95rem;
|
|
7830
|
+
gap: 0.4rem;
|
|
7996
7831
|
`;
|
|
7997
|
-
|
|
7832
|
+
styled10.p`
|
|
7998
7833
|
font-size: 0.9rem;
|
|
7999
7834
|
font-weight: 400;
|
|
8000
7835
|
color: var(--color-text-secondary, #848e9c);
|
|
8001
7836
|
text-align: center;
|
|
8002
7837
|
margin: 0 0 2rem;
|
|
8003
7838
|
`;
|
|
8004
|
-
var
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
justify-content: center;
|
|
8008
|
-
gap: 0.45rem;
|
|
8009
|
-
margin-bottom: 0.5rem;
|
|
8010
|
-
`;
|
|
8011
|
-
var LogoImage = styled10.img`
|
|
8012
|
-
height: 60px;
|
|
8013
|
-
`;
|
|
8014
|
-
var ButtonsContainer = styled10.div`
|
|
8015
|
-
display: flex;
|
|
8016
|
-
flex-direction: column;
|
|
8017
|
-
gap: 1rem;
|
|
8018
|
-
margin-bottom: 1.5rem;
|
|
8019
|
-
`;
|
|
8020
|
-
var SignUpPrompt = styled10.div`
|
|
8021
|
-
text-align: center;
|
|
8022
|
-
font-size: 0.875rem;
|
|
8023
|
-
color: var(--color-text-secondary, #848e9c);
|
|
8024
|
-
margin-bottom: 0.5rem;
|
|
8025
|
-
`;
|
|
8026
|
-
var SignUpLink = styled10.button`
|
|
8027
|
-
background: none;
|
|
8028
|
-
border: none;
|
|
8029
|
-
padding: 0;
|
|
8030
|
-
font: inherit;
|
|
8031
|
-
color: var(--color-accent, #E6C87E);
|
|
8032
|
-
text-decoration: underline;
|
|
8033
|
-
cursor: pointer;
|
|
8034
|
-
|
|
8035
|
-
&:hover {
|
|
8036
|
-
opacity: 0.85;
|
|
8037
|
-
}
|
|
8038
|
-
`;
|
|
8039
|
-
var LoginButton = styled10.button`
|
|
8040
|
-
display: flex;
|
|
8041
|
-
align-items: center;
|
|
8042
|
-
justify-content: center;
|
|
8043
|
-
gap: 0.75rem;
|
|
8044
|
-
padding: 1rem 1.5rem;
|
|
8045
|
-
background-color: var(--color-background-light, #1a1a1a);
|
|
8046
|
-
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
8047
|
-
border-radius: var(--border-radius, 8px);
|
|
8048
|
-
color: var(--color-text, #eaecef);
|
|
8049
|
-
font-size: 1rem;
|
|
8050
|
-
font-weight: 500;
|
|
8051
|
-
cursor: pointer;
|
|
8052
|
-
transition: all 0.2s ease;
|
|
8053
|
-
|
|
8054
|
-
&:hover {
|
|
8055
|
-
background-color: rgba(230, 198, 86, 0.1);
|
|
8056
|
-
border-color: var(--color-accent, #E6C87E);
|
|
8057
|
-
}
|
|
8058
|
-
|
|
8059
|
-
svg {
|
|
8060
|
-
width: 20px;
|
|
8061
|
-
height: 20px;
|
|
8062
|
-
color: var(--color-accent, #E6C87E);
|
|
8063
|
-
}
|
|
8064
|
-
`;
|
|
8065
|
-
var InfoText = styled10.p`
|
|
8066
|
-
color: var(--color-text-secondary, #848e9c);
|
|
8067
|
-
font-size: 0.875rem;
|
|
8068
|
-
text-align: center;
|
|
8069
|
-
line-height: 1.5;
|
|
8070
|
-
`;
|
|
8071
|
-
var EmailFormContainer = styled10.div`
|
|
8072
|
-
display: flex;
|
|
8073
|
-
flex-direction: column;
|
|
8074
|
-
gap: 1rem;
|
|
8075
|
-
margin-bottom: 1.5rem;
|
|
8076
|
-
`;
|
|
8077
|
-
var EmailInput = styled10.input`
|
|
8078
|
-
width: 100%;
|
|
8079
|
-
padding: 1rem 1.25rem;
|
|
8080
|
-
background-color: var(--color-background-light, #1a1a1a);
|
|
8081
|
-
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
8082
|
-
border-radius: var(--border-radius, 8px);
|
|
8083
|
-
color: var(--color-text, #eaecef);
|
|
8084
|
-
font-size: 1rem;
|
|
8085
|
-
transition: all 0.2s ease;
|
|
8086
|
-
|
|
8087
|
-
&:focus {
|
|
8088
|
-
outline: none;
|
|
8089
|
-
border-color: var(--color-accent, #E6C87E);
|
|
8090
|
-
}
|
|
8091
|
-
|
|
8092
|
-
&::placeholder {
|
|
8093
|
-
color: var(--color-text-secondary, #848e9c);
|
|
8094
|
-
}
|
|
8095
|
-
`;
|
|
8096
|
-
var codeBorderColor = (status, focused) => {
|
|
8097
|
-
if (status === "valid") return "var(--color-positive, #00C076)";
|
|
8098
|
-
if (status === "invalid") return "var(--color-negative, #FF5757)";
|
|
8099
|
-
return focused ? "var(--color-accent, #E6C87E)" : "rgba(230, 198, 86, 0.2)";
|
|
8100
|
-
};
|
|
8101
|
-
var CodeInputWrapper = styled10.div`
|
|
8102
|
-
display: flex;
|
|
8103
|
-
align-items: center;
|
|
8104
|
-
width: 100%;
|
|
8105
|
-
padding: 1rem 1.25rem;
|
|
8106
|
-
background-color: var(--color-background-light, #1a1a1a);
|
|
8107
|
-
border: 1px solid ${(props) => codeBorderColor(props.$status, false)};
|
|
8108
|
-
border-radius: var(--border-radius, 8px);
|
|
8109
|
-
box-shadow: ${(props) => props.$status === "valid" ? "0 0 0 1px var(--color-positive, #00C076)" : props.$status === "invalid" ? "0 0 0 1px var(--color-negative, #FF5757)" : "none"};
|
|
8110
|
-
transition: all 0.2s ease;
|
|
8111
|
-
|
|
8112
|
-
&:focus-within {
|
|
8113
|
-
border-color: ${(props) => codeBorderColor(props.$status, true)};
|
|
8114
|
-
}
|
|
8115
|
-
`;
|
|
8116
|
-
var CodePrefix = styled10.span`
|
|
8117
|
-
color: var(--color-text-secondary, #848e9c);
|
|
8118
|
-
font-size: 1.1rem;
|
|
8119
|
-
font-weight: 600;
|
|
8120
|
-
letter-spacing: 0.22em;
|
|
8121
|
-
font-family: 'Space Grotesk', monospace;
|
|
8122
|
-
user-select: none;
|
|
8123
|
-
`;
|
|
8124
|
-
var CodeSuffixInput = styled10.input`
|
|
8125
|
-
flex: 1;
|
|
8126
|
-
min-width: 0;
|
|
8127
|
-
border: none;
|
|
8128
|
-
background: transparent;
|
|
7839
|
+
var MainHeading = styled10.h2`
|
|
7840
|
+
font-size: 1.5rem;
|
|
7841
|
+
font-weight: 700;
|
|
8129
7842
|
color: var(--color-text, #eaecef);
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
letter-spacing: 0.22em;
|
|
8133
|
-
text-transform: uppercase;
|
|
8134
|
-
font-family: 'Space Grotesk', monospace;
|
|
8135
|
-
/* Explicit line-height so iOS in-app WebViews size the caret to the text
|
|
8136
|
-
box instead of rendering a short, top-aligned caret (line-height: normal
|
|
8137
|
-
+ webfont + letter-spacing miscomputes it in some WebViews). */
|
|
8138
|
-
line-height: 1.5;
|
|
8139
|
-
|
|
8140
|
-
&:focus {
|
|
8141
|
-
outline: none;
|
|
8142
|
-
}
|
|
8143
|
-
|
|
8144
|
-
&::placeholder {
|
|
8145
|
-
color: rgba(132, 142, 156, 0.45);
|
|
8146
|
-
letter-spacing: 0.22em;
|
|
8147
|
-
}
|
|
8148
|
-
`;
|
|
8149
|
-
var GateBrand = styled10.div`
|
|
8150
|
-
display: flex;
|
|
8151
|
-
align-items: center;
|
|
8152
|
-
justify-content: center;
|
|
8153
|
-
gap: 0.7rem;
|
|
8154
|
-
margin-bottom: 0.6rem;
|
|
8155
|
-
`;
|
|
8156
|
-
var GateLogoLink = styled10.a`
|
|
8157
|
-
display: inline-flex;
|
|
8158
|
-
align-items: center;
|
|
8159
|
-
cursor: pointer;
|
|
8160
|
-
transition: opacity 0.15s ease;
|
|
8161
|
-
|
|
8162
|
-
&:hover {
|
|
8163
|
-
opacity: 0.85;
|
|
8164
|
-
}
|
|
8165
|
-
`;
|
|
8166
|
-
var GateLogo = styled10.img`
|
|
8167
|
-
height: 44px;
|
|
8168
|
-
display: block;
|
|
8169
|
-
`;
|
|
8170
|
-
var GateBrandDivider = styled10.span`
|
|
8171
|
-
width: 1px;
|
|
8172
|
-
height: 26px;
|
|
8173
|
-
background: rgba(255, 255, 255, 0.18);
|
|
7843
|
+
text-align: left;
|
|
7844
|
+
margin: 0 0 0.35rem;
|
|
8174
7845
|
`;
|
|
8175
|
-
var
|
|
7846
|
+
var MainSubtitle = styled10.p`
|
|
7847
|
+
font-size: 0.9rem;
|
|
7848
|
+
font-weight: 400;
|
|
8176
7849
|
color: var(--color-text-secondary, #848e9c);
|
|
8177
|
-
|
|
8178
|
-
|
|
8179
|
-
|
|
8180
|
-
text-transform: uppercase;
|
|
8181
|
-
`;
|
|
8182
|
-
var GateForm = styled10.div`
|
|
8183
|
-
display: flex;
|
|
8184
|
-
flex-direction: column;
|
|
8185
|
-
align-items: center;
|
|
8186
|
-
gap: 0.9rem;
|
|
8187
|
-
width: 100%;
|
|
8188
|
-
max-width: 360px;
|
|
8189
|
-
position: relative;
|
|
8190
|
-
z-index: 1;
|
|
7850
|
+
text-align: left;
|
|
7851
|
+
margin: 0 0 1.5rem;
|
|
7852
|
+
line-height: 1.5;
|
|
8191
7853
|
`;
|
|
8192
|
-
var
|
|
8193
|
-
position: fixed;
|
|
8194
|
-
inset: 0;
|
|
7854
|
+
var LogoContainer3 = styled10.div`
|
|
8195
7855
|
display: flex;
|
|
8196
|
-
align-items:
|
|
7856
|
+
align-items: flex-end;
|
|
8197
7857
|
justify-content: center;
|
|
8198
|
-
|
|
8199
|
-
|
|
7858
|
+
gap: 0.45rem;
|
|
7859
|
+
margin-bottom: 0.5rem;
|
|
8200
7860
|
`;
|
|
8201
|
-
var
|
|
8202
|
-
|
|
8203
|
-
left: 0;
|
|
8204
|
-
right: 0;
|
|
8205
|
-
bottom: 0;
|
|
8206
|
-
height: calc(${(props) => (3 - Math.max(0, Math.min(3, props.$reveal))) / 3 * 100}% + 90px);
|
|
8207
|
-
background: linear-gradient(
|
|
8208
|
-
to top,
|
|
8209
|
-
var(--color-background, #0a0a0c) calc(100% - 90px),
|
|
8210
|
-
rgba(10, 10, 12, 0) 100%
|
|
8211
|
-
);
|
|
8212
|
-
transition: height 0.65s ease;
|
|
8213
|
-
pointer-events: none;
|
|
7861
|
+
var LogoImage = styled10.img`
|
|
7862
|
+
height: 40px;
|
|
8214
7863
|
`;
|
|
8215
|
-
|
|
8216
|
-
|
|
7864
|
+
styled10.div`
|
|
7865
|
+
display: flex;
|
|
7866
|
+
flex-direction: column;
|
|
7867
|
+
gap: 1rem;
|
|
7868
|
+
margin-bottom: 1.5rem;
|
|
7869
|
+
`;
|
|
7870
|
+
styled10.div`
|
|
8217
7871
|
text-align: center;
|
|
8218
|
-
font-size: 0.
|
|
8219
|
-
line-height: 1.5;
|
|
7872
|
+
font-size: 0.875rem;
|
|
8220
7873
|
color: var(--color-text-secondary, #848e9c);
|
|
8221
|
-
|
|
8222
|
-
strong {
|
|
8223
|
-
color: var(--color-text, #eaecef);
|
|
8224
|
-
font-weight: 600;
|
|
8225
|
-
}
|
|
7874
|
+
margin-bottom: 0.5rem;
|
|
8226
7875
|
`;
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
7876
|
+
styled10.button`
|
|
7877
|
+
background: none;
|
|
7878
|
+
border: none;
|
|
7879
|
+
padding: 0;
|
|
7880
|
+
font: inherit;
|
|
7881
|
+
color: var(--color-accent, #E6C87E);
|
|
7882
|
+
text-decoration: underline;
|
|
7883
|
+
cursor: pointer;
|
|
8231
7884
|
|
|
8232
|
-
|
|
8233
|
-
|
|
8234
|
-
border: none;
|
|
8235
|
-
color: var(--color-accent, #E6C87E);
|
|
8236
|
-
cursor: pointer;
|
|
8237
|
-
text-decoration: underline;
|
|
8238
|
-
font-size: inherit;
|
|
7885
|
+
&:hover {
|
|
7886
|
+
opacity: 0.85;
|
|
8239
7887
|
}
|
|
8240
7888
|
`;
|
|
8241
|
-
var
|
|
7889
|
+
var LoginButton = styled10.button`
|
|
8242
7890
|
display: flex;
|
|
7891
|
+
width: 100%;
|
|
7892
|
+
box-sizing: border-box;
|
|
8243
7893
|
align-items: center;
|
|
8244
7894
|
justify-content: center;
|
|
8245
|
-
|
|
8246
|
-
|
|
8247
|
-
|
|
8248
|
-
|
|
8249
|
-
|
|
8250
|
-
|
|
8251
|
-
|
|
7895
|
+
gap: 0.55rem;
|
|
7896
|
+
padding: 0.55rem 1.1rem;
|
|
7897
|
+
background-color: var(--color-background-light, #1a1a1a);
|
|
7898
|
+
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
7899
|
+
border-radius: var(--border-radius, 8px);
|
|
7900
|
+
color: var(--color-text, #eaecef);
|
|
7901
|
+
font-size: 0.82rem;
|
|
7902
|
+
font-weight: 500;
|
|
8252
7903
|
cursor: pointer;
|
|
8253
|
-
|
|
8254
|
-
transition: color 0.15s ease, transform 0.15s ease, opacity 0.15s ease;
|
|
7904
|
+
transition: all 0.2s ease;
|
|
8255
7905
|
|
|
8256
|
-
|
|
8257
|
-
|
|
7906
|
+
svg { width: 16px; height: 16px; }
|
|
7907
|
+
|
|
7908
|
+
&:hover {
|
|
7909
|
+
background-color: rgba(230, 198, 86, 0.1);
|
|
7910
|
+
border-color: var(--color-accent, #E6C87E);
|
|
8258
7911
|
}
|
|
8259
7912
|
|
|
8260
|
-
|
|
8261
|
-
|
|
8262
|
-
|
|
8263
|
-
|
|
7913
|
+
svg {
|
|
7914
|
+
width: 20px;
|
|
7915
|
+
height: 20px;
|
|
7916
|
+
color: var(--color-accent, #E6C87E);
|
|
8264
7917
|
}
|
|
8265
7918
|
`;
|
|
8266
|
-
var
|
|
8267
|
-
|
|
8268
|
-
|
|
8269
|
-
|
|
8270
|
-
|
|
7919
|
+
var InfoText = styled10.p`
|
|
7920
|
+
color: var(--color-text-secondary, #848e9c);
|
|
7921
|
+
font-size: 0.875rem;
|
|
7922
|
+
text-align: center;
|
|
7923
|
+
line-height: 1.5;
|
|
7924
|
+
`;
|
|
7925
|
+
var EmailFormContainer = styled10.div`
|
|
7926
|
+
display: flex;
|
|
7927
|
+
flex-direction: column;
|
|
7928
|
+
gap: 1rem;
|
|
7929
|
+
margin-bottom: 1.5rem;
|
|
7930
|
+
`;
|
|
7931
|
+
var EmailInput = styled10.input`
|
|
7932
|
+
width: 100%;
|
|
7933
|
+
padding: 1rem 1.25rem;
|
|
7934
|
+
background-color: var(--color-background-light, #1a1a1a);
|
|
7935
|
+
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
7936
|
+
border-radius: var(--border-radius, 8px);
|
|
8271
7937
|
color: var(--color-text, #eaecef);
|
|
8272
7938
|
font-size: 1rem;
|
|
7939
|
+
transition: all 0.2s ease;
|
|
8273
7940
|
|
|
8274
7941
|
&:focus {
|
|
8275
7942
|
outline: none;
|
|
7943
|
+
border-color: var(--color-accent, #E6C87E);
|
|
8276
7944
|
}
|
|
8277
7945
|
|
|
8278
7946
|
&::placeholder {
|
|
8279
|
-
color:
|
|
8280
|
-
}
|
|
8281
|
-
`;
|
|
8282
|
-
var GateSpinner = styled10.span`
|
|
8283
|
-
width: 18px;
|
|
8284
|
-
height: 18px;
|
|
8285
|
-
border: 2px solid rgba(230, 198, 86, 0.3);
|
|
8286
|
-
border-top-color: var(--color-accent, #E6C87E);
|
|
8287
|
-
border-radius: 50%;
|
|
8288
|
-
animation: gateSpin 0.7s linear infinite;
|
|
8289
|
-
|
|
8290
|
-
@keyframes gateSpin {
|
|
8291
|
-
to { transform: rotate(360deg); }
|
|
7947
|
+
color: var(--color-text-secondary, #848e9c);
|
|
8292
7948
|
}
|
|
8293
7949
|
`;
|
|
8294
|
-
var
|
|
7950
|
+
var GateForm = styled10.form`
|
|
8295
7951
|
display: flex;
|
|
8296
|
-
|
|
7952
|
+
flex-direction: column;
|
|
8297
7953
|
gap: 0.6rem;
|
|
8298
7954
|
width: 100%;
|
|
8299
|
-
|
|
8300
|
-
|
|
8301
|
-
|
|
7955
|
+
`;
|
|
7956
|
+
var GateInputRow = styled10.div`
|
|
7957
|
+
position: relative;
|
|
7958
|
+
width: 100%;
|
|
7959
|
+
`;
|
|
7960
|
+
var GateInput = styled10.input`
|
|
7961
|
+
width: 100%;
|
|
7962
|
+
box-sizing: border-box;
|
|
7963
|
+
padding: 1rem 3.25rem 1rem 1.25rem;
|
|
7964
|
+
background-color: var(--color-background-light, #1a1a1a);
|
|
7965
|
+
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
7966
|
+
border-radius: var(--border-radius, 8px);
|
|
7967
|
+
color: var(--color-text, #eaecef);
|
|
7968
|
+
font-size: 1rem;
|
|
7969
|
+
transition: all 0.2s ease;
|
|
8302
7970
|
|
|
8303
|
-
|
|
8304
|
-
&::
|
|
8305
|
-
content: "";
|
|
8306
|
-
flex: 1;
|
|
8307
|
-
height: 1px;
|
|
8308
|
-
background: rgba(255, 255, 255, 0.1);
|
|
8309
|
-
}
|
|
7971
|
+
&:focus { outline: none; border-color: var(--color-accent, #E6C87E); }
|
|
7972
|
+
&::placeholder { color: var(--color-text-secondary, #848e9c); }
|
|
8310
7973
|
`;
|
|
8311
|
-
var
|
|
8312
|
-
|
|
7974
|
+
var GateSubmit = styled10.button`
|
|
7975
|
+
position: absolute;
|
|
7976
|
+
top: 50%;
|
|
7977
|
+
right: 0.55rem;
|
|
7978
|
+
transform: translateY(-50%);
|
|
7979
|
+
width: 34px;
|
|
7980
|
+
height: 34px;
|
|
7981
|
+
display: flex;
|
|
8313
7982
|
align-items: center;
|
|
8314
7983
|
justify-content: center;
|
|
8315
|
-
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
background: transparent;
|
|
8319
|
-
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
8320
|
-
border-radius: var(--border-radius, 8px);
|
|
7984
|
+
background: none;
|
|
7985
|
+
border: none;
|
|
7986
|
+
border-radius: 8px;
|
|
8321
7987
|
color: var(--color-text-secondary, #848e9c);
|
|
8322
|
-
font-size: 0.85rem;
|
|
8323
|
-
font-weight: 500;
|
|
8324
7988
|
cursor: pointer;
|
|
8325
|
-
transition:
|
|
8326
|
-
|
|
8327
|
-
svg {
|
|
8328
|
-
width: 16px;
|
|
8329
|
-
height: 16px;
|
|
8330
|
-
}
|
|
7989
|
+
transition: color 0.2s ease, background 0.2s ease;
|
|
8331
7990
|
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
}
|
|
7991
|
+
svg { width: 18px; height: 18px; }
|
|
7992
|
+
&:hover:not(:disabled) { color: var(--color-accent, #E6C87E); background: rgba(230, 198, 86, 0.1); }
|
|
7993
|
+
&:disabled { opacity: 0.4; cursor: not-allowed; }
|
|
8336
7994
|
`;
|
|
8337
|
-
var
|
|
7995
|
+
var GateOr = styled10.div`
|
|
8338
7996
|
display: flex;
|
|
8339
|
-
flex-direction: column;
|
|
8340
7997
|
align-items: center;
|
|
8341
|
-
gap: 0.
|
|
8342
|
-
|
|
8343
|
-
|
|
7998
|
+
gap: 0.75rem;
|
|
7999
|
+
color: var(--color-text-secondary, #848e9c);
|
|
8000
|
+
font-size: 0.8rem;
|
|
8001
|
+
margin: 0.4rem 0;
|
|
8344
8002
|
|
|
8345
|
-
|
|
8346
|
-
from {
|
|
8347
|
-
opacity: 0;
|
|
8348
|
-
transform: translateY(-6px);
|
|
8349
|
-
}
|
|
8350
|
-
to {
|
|
8351
|
-
opacity: 1;
|
|
8352
|
-
transform: translateY(0);
|
|
8353
|
-
}
|
|
8354
|
-
}
|
|
8003
|
+
&::before, &::after { content: ""; flex: 1; height: 1px; background: rgba(255, 255, 255, 0.08); }
|
|
8355
8004
|
`;
|
|
8356
8005
|
var OTPContainer = styled10.div`
|
|
8357
8006
|
display: flex;
|
|
@@ -8365,17 +8014,15 @@ var OTPInput = styled10.input`
|
|
|
8365
8014
|
font-size: 1.5rem;
|
|
8366
8015
|
font-weight: 600;
|
|
8367
8016
|
background-color: var(--color-background-light, #1a1a1a);
|
|
8368
|
-
border: 1px solid
|
|
8017
|
+
border: 1px solid rgba(230, 198, 86, 0.2);
|
|
8369
8018
|
border-radius: var(--border-radius, 8px);
|
|
8370
|
-
color:
|
|
8371
|
-
box-shadow: ${(props) => props.$status === "valid" ? "0 0 0 1px var(--color-positive, #00C076)" : props.$status === "invalid" ? "0 0 0 1px var(--color-negative, #FF5757)" : "none"};
|
|
8372
|
-
opacity: ${(props) => props.$status === "checking" ? 0.6 : 1};
|
|
8019
|
+
color: var(--color-accent, #E6C87E);
|
|
8373
8020
|
transition: all 0.2s ease;
|
|
8374
8021
|
|
|
8375
8022
|
&:focus {
|
|
8376
8023
|
outline: none;
|
|
8377
|
-
border-color:
|
|
8378
|
-
box-shadow: 0 0 0 2px
|
|
8024
|
+
border-color: var(--color-accent, #E6C87E);
|
|
8025
|
+
box-shadow: 0 0 0 2px rgba(230, 198, 86, 0.2);
|
|
8379
8026
|
}
|
|
8380
8027
|
`;
|
|
8381
8028
|
var SubmitButton = styled10.button`
|
|
@@ -8743,24 +8390,15 @@ var SpinnerRing = styled10.div`
|
|
|
8743
8390
|
}
|
|
8744
8391
|
`;
|
|
8745
8392
|
var PREPARING_FACTS = [
|
|
8746
|
-
|
|
8393
|
+
"Property is the world's largest asset class \u2014 worth over US$300 trillion.",
|
|
8394
|
+
"Loaf settles trades in about 1 second. Traditional property takes ~90 days.",
|
|
8747
8395
|
"Our matching engine processes orders in 30 microseconds.",
|
|
8748
|
-
"
|
|
8396
|
+
"Every token is backed 1:1 by land-title-registered property.",
|
|
8397
|
+
"Own a slice of premium real estate \u2014 no mortgage, no paperwork.",
|
|
8749
8398
|
"Buy and sell property as easily as a stock, on a live orderbook.",
|
|
8750
|
-
"
|
|
8751
|
-
"
|
|
8752
|
-
|
|
8753
|
-
"Hold shares secured 1:1 by the underlying property, as regulated securities.",
|
|
8754
|
-
"The same economic exposure as owning the property. Without the friction, gatekeeping, or illiquidity.",
|
|
8755
|
-
"Securitisation of property brings a new dimension of flexibility and tradability.",
|
|
8756
|
-
// Frictionless
|
|
8757
|
-
"Settle in seconds, then sell again whenever you want. No waiting days or weeks.",
|
|
8758
|
-
"99% of the frictions in property transactions can be, and have been, reduced.",
|
|
8759
|
-
// Vision
|
|
8760
|
-
"A family office can rebalance a billion dollars in an afternoon, but couldn't sell a $50M property in under six months.",
|
|
8761
|
-
"Family offices and HNWIs prize capital flexibility. Loaf makes property flexible.",
|
|
8762
|
-
"There's no law of physics that says the world's oldest asset class must stay illiquid.",
|
|
8763
|
-
"What if property underwent an IPO?"
|
|
8399
|
+
"Earn rental yield on the exact fraction of property you own.",
|
|
8400
|
+
"Title-backed by the NSW Land Registry \u2014 real ownership, on-chain.",
|
|
8401
|
+
"Loaf ran the world's first property IPO."
|
|
8764
8402
|
];
|
|
8765
8403
|
var FactCard = styled10.div`
|
|
8766
8404
|
margin-top: 1.5rem;
|
|
@@ -8868,7 +8506,7 @@ var LogoImage2 = styled10.img`
|
|
|
8868
8506
|
height: 30px;
|
|
8869
8507
|
width: auto;
|
|
8870
8508
|
`;
|
|
8871
|
-
var
|
|
8509
|
+
var LogoBeta = styled10.span`
|
|
8872
8510
|
font-size: 0.6rem;
|
|
8873
8511
|
font-weight: 600;
|
|
8874
8512
|
letter-spacing: 0.08em;
|
|
@@ -9026,7 +8664,7 @@ function OnboardingGuide({
|
|
|
9026
8664
|
/* @__PURE__ */ jsx(CloseButton2, { onClick: onClose, "aria-label": "Skip", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 6l12 12M18 6L6 18" }) }) }),
|
|
9027
8665
|
/* @__PURE__ */ jsxs(LogoRow, { children: [
|
|
9028
8666
|
/* @__PURE__ */ jsx(LogoImage2, { src: logoSrc, alt: "Loaf" }),
|
|
9029
|
-
/* @__PURE__ */ jsx(
|
|
8667
|
+
/* @__PURE__ */ jsx(LogoBeta, { children: "Private Beta" })
|
|
9030
8668
|
] }),
|
|
9031
8669
|
/* @__PURE__ */ jsx(Title2, { children: "You're in \u{1F389}" }),
|
|
9032
8670
|
/* @__PURE__ */ jsx(Subtitle2, { children: "Here's everything you need to make your first trade." }),
|
|
@@ -12396,8 +12034,7 @@ function AssetSelectorBar({
|
|
|
12396
12034
|
onSelect,
|
|
12397
12035
|
trailing,
|
|
12398
12036
|
imageUrl,
|
|
12399
|
-
badgeLabel
|
|
12400
|
-
tickerPrimary
|
|
12037
|
+
badgeLabel
|
|
12401
12038
|
}) {
|
|
12402
12039
|
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
|
12403
12040
|
const hasItems = selectorItems && selectorItems.length > 0;
|
|
@@ -12408,14 +12045,9 @@ function AssetSelectorBar({
|
|
|
12408
12045
|
];
|
|
12409
12046
|
return /* @__PURE__ */ jsx(AssetSelectorWrapper, { children: /* @__PURE__ */ jsxs(IPOAssetSelector, { children: [
|
|
12410
12047
|
imageUrl && /* @__PURE__ */ jsx(AssetThumbnail, { src: imageUrl, alt: propertyName }),
|
|
12411
|
-
/* @__PURE__ */ jsx(AssetSelectorDropdown, {
|
|
12412
|
-
|
|
12413
|
-
|
|
12414
|
-
/* @__PURE__ */ jsx(AssetSubName, { children: propertyName })
|
|
12415
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
12416
|
-
propertyName,
|
|
12417
|
-
currentTicker ? ` (${currentTicker.toUpperCase()})` : ""
|
|
12418
|
-
] }),
|
|
12048
|
+
/* @__PURE__ */ jsx(AssetSelectorDropdown, { onClick: () => hasItems && setIsDropdownOpen((prev) => !prev), children: /* @__PURE__ */ jsxs(AssetName, { children: [
|
|
12049
|
+
propertyName,
|
|
12050
|
+
currentTicker ? ` (${currentTicker.toUpperCase()})` : "",
|
|
12419
12051
|
badgeLabel && /* @__PURE__ */ jsx(CompetitionBadge, { children: badgeLabel }),
|
|
12420
12052
|
hasItems && /* @__PURE__ */ jsx(
|
|
12421
12053
|
"svg",
|
|
@@ -12444,7 +12076,7 @@ function AssetSelectorBar({
|
|
|
12444
12076
|
] })
|
|
12445
12077
|
] })
|
|
12446
12078
|
] }, m.label)) }),
|
|
12447
|
-
trailing != null && /* @__PURE__ */ jsx(TrailingWrapper, {
|
|
12079
|
+
trailing != null && /* @__PURE__ */ jsx(TrailingWrapper, { children: /* @__PURE__ */ jsx(TrailingInner, { children: trailing }) }),
|
|
12448
12080
|
isDropdownOpen && hasItems && /* @__PURE__ */ jsx(IPODropdown, { children: selectorItems.map((item) => {
|
|
12449
12081
|
const isCurrent = item.tokenName === currentTokenName;
|
|
12450
12082
|
const status = item.status?.toUpperCase();
|
|
@@ -12535,40 +12167,13 @@ var AssetSelectorDropdown = styled10.div`
|
|
|
12535
12167
|
display: flex;
|
|
12536
12168
|
align-items: center;
|
|
12537
12169
|
cursor: pointer;
|
|
12538
|
-
|
|
12539
|
-
selector doesn't make the ticker appear shoved right by the highlight box. */
|
|
12540
|
-
padding: ${(p) => p.$flush ? "0.25rem 0" : "0.5rem"};
|
|
12170
|
+
padding: 0.5rem;
|
|
12541
12171
|
border-radius: 8px;
|
|
12542
|
-
transition:
|
|
12172
|
+
transition: all 0.2s ease;
|
|
12543
12173
|
flex: 0 1 auto;
|
|
12544
12174
|
min-width: 0;
|
|
12545
12175
|
overflow: hidden;
|
|
12546
|
-
&:hover { background-color:
|
|
12547
|
-
`;
|
|
12548
|
-
var AssetIdentity = styled10.div`
|
|
12549
|
-
display: flex;
|
|
12550
|
-
flex-direction: column;
|
|
12551
|
-
min-width: 0;
|
|
12552
|
-
line-height: 1.2;
|
|
12553
|
-
`;
|
|
12554
|
-
var AssetTicker = styled10.span`
|
|
12555
|
-
font-weight: 700;
|
|
12556
|
-
font-size: 1.35rem;
|
|
12557
|
-
color: var(--color-text);
|
|
12558
|
-
letter-spacing: -0.01em;
|
|
12559
|
-
white-space: nowrap;
|
|
12560
|
-
overflow: hidden;
|
|
12561
|
-
text-overflow: ellipsis;
|
|
12562
|
-
|
|
12563
|
-
@media (max-width: 480px) { font-size: 1.2rem; }
|
|
12564
|
-
`;
|
|
12565
|
-
var AssetSubName = styled10.span`
|
|
12566
|
-
font-size: 0.8rem;
|
|
12567
|
-
font-weight: 500;
|
|
12568
|
-
color: rgba(255, 255, 255, 0.4);
|
|
12569
|
-
white-space: nowrap;
|
|
12570
|
-
overflow: hidden;
|
|
12571
|
-
text-overflow: ellipsis;
|
|
12176
|
+
&:hover { background-color: rgba(255,255,255,0.05); }
|
|
12572
12177
|
`;
|
|
12573
12178
|
var AssetName = styled10.div`
|
|
12574
12179
|
display: flex;
|
|
@@ -15246,30 +14851,27 @@ function PortfolioActivityPanel({
|
|
|
15246
14851
|
] }, pos.tokenName);
|
|
15247
14852
|
})
|
|
15248
14853
|
] }),
|
|
15249
|
-
positions.length > 0 && closeAllOpen && onClosePosition &&
|
|
15250
|
-
/* @__PURE__ */ jsx(
|
|
15251
|
-
|
|
15252
|
-
|
|
15253
|
-
|
|
15254
|
-
/* @__PURE__ */
|
|
15255
|
-
|
|
15256
|
-
|
|
15257
|
-
|
|
15258
|
-
/* @__PURE__ */
|
|
15259
|
-
|
|
15260
|
-
|
|
15261
|
-
|
|
15262
|
-
|
|
15263
|
-
|
|
15264
|
-
|
|
15265
|
-
|
|
15266
|
-
|
|
15267
|
-
|
|
15268
|
-
|
|
15269
|
-
|
|
15270
|
-
] }) }),
|
|
15271
|
-
document.body
|
|
15272
|
-
)
|
|
14854
|
+
positions.length > 0 && closeAllOpen && onClosePosition && /* @__PURE__ */ jsx(CloseAllOverlay, { onClick: () => setCloseAllOpen(false), children: /* @__PURE__ */ jsxs(CloseAllModal, { onClick: (e) => e.stopPropagation(), children: [
|
|
14855
|
+
/* @__PURE__ */ jsx(CloseAllModalX, { onClick: () => setCloseAllOpen(false), children: "\xD7" }),
|
|
14856
|
+
/* @__PURE__ */ jsx(CloseAllTitle, { children: "Confirm Sell All" }),
|
|
14857
|
+
/* @__PURE__ */ jsx(CloseAllDesc, { children: "This will sell all your positions and cancel their associated TP/SL orders." }),
|
|
14858
|
+
/* @__PURE__ */ jsxs(CloseAllOption, { onClick: () => setCloseAllType("market"), children: [
|
|
14859
|
+
/* @__PURE__ */ jsx(CloseAllRadio, { $selected: closeAllType === "market" }),
|
|
14860
|
+
/* @__PURE__ */ jsx("span", { children: "Market Sell" })
|
|
14861
|
+
] }),
|
|
14862
|
+
/* @__PURE__ */ jsxs(CloseAllOption, { onClick: () => setCloseAllType("limit"), children: [
|
|
14863
|
+
/* @__PURE__ */ jsx(CloseAllRadio, { $selected: closeAllType === "limit" }),
|
|
14864
|
+
/* @__PURE__ */ jsx("span", { children: "Limit Sell at Mid Price" })
|
|
14865
|
+
] }),
|
|
14866
|
+
/* @__PURE__ */ jsxs(CloseAllConfirmBtn, { onClick: () => {
|
|
14867
|
+
positions.forEach((pos) => onClosePosition(pos.tokenName, closeAllType, pos.quantity, pos.marketPrice));
|
|
14868
|
+
setCloseAllOpen(false);
|
|
14869
|
+
}, children: [
|
|
14870
|
+
"Confirm ",
|
|
14871
|
+
closeAllType === "market" ? "Market" : "Limit",
|
|
14872
|
+
" Sell"
|
|
14873
|
+
] })
|
|
14874
|
+
] }) })
|
|
15273
14875
|
] }),
|
|
15274
14876
|
activeTab === "subscriptions" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15275
14877
|
offeringOrders.length === 0 && /* @__PURE__ */ jsx(EmptyState, { children: "IPO allocations will appear here once you subscribe." }),
|
|
@@ -15726,63 +15328,57 @@ function PortfolioActivityPanel({
|
|
|
15726
15328
|
] }),
|
|
15727
15329
|
/* @__PURE__ */ jsx(PaginationBtn, { disabled: currentPage >= totalPages - 1, onClick: () => setCurrentPage((p) => p + 1), children: "Next \u203A" })
|
|
15728
15330
|
] }),
|
|
15729
|
-
cancelAllConfirmOpen &&
|
|
15730
|
-
/* @__PURE__ */ jsx(
|
|
15731
|
-
|
|
15732
|
-
|
|
15733
|
-
|
|
15734
|
-
|
|
15735
|
-
|
|
15736
|
-
|
|
15737
|
-
/* @__PURE__ */
|
|
15738
|
-
|
|
15739
|
-
|
|
15740
|
-
|
|
15741
|
-
|
|
15742
|
-
|
|
15743
|
-
|
|
15744
|
-
|
|
15745
|
-
|
|
15746
|
-
|
|
15747
|
-
|
|
15748
|
-
|
|
15749
|
-
|
|
15750
|
-
setCancellingAll(false);
|
|
15751
|
-
}
|
|
15752
|
-
}
|
|
15753
|
-
setCancelAllConfirmOpen(false);
|
|
15754
|
-
},
|
|
15755
|
-
children: cancellingAll ? "Cancelling\u2026" : "Yes, Cancel All"
|
|
15756
|
-
}
|
|
15757
|
-
)
|
|
15758
|
-
] })
|
|
15759
|
-
] }) }),
|
|
15760
|
-
document.body
|
|
15761
|
-
),
|
|
15762
|
-
pendingCancelOrderId !== null && typeof document !== "undefined" && createPortal(
|
|
15763
|
-
/* @__PURE__ */ jsx(CancelConfirmOverlay, { onClick: () => setPendingCancelOrderId(null), children: /* @__PURE__ */ jsxs(CancelConfirmModal, { onClick: (e) => e.stopPropagation(), children: [
|
|
15764
|
-
/* @__PURE__ */ jsx(CancelConfirmTitle, { children: "Cancel Order" }),
|
|
15765
|
-
/* @__PURE__ */ jsx(CancelConfirmBody, { children: "Are you sure you want to cancel this order? This action cannot be undone." }),
|
|
15766
|
-
/* @__PURE__ */ jsxs(CancelConfirmActions, { children: [
|
|
15767
|
-
/* @__PURE__ */ jsx(CancelConfirmDismiss, { type: "button", onClick: () => setPendingCancelOrderId(null), children: "Keep Order" }),
|
|
15768
|
-
/* @__PURE__ */ jsx(
|
|
15769
|
-
CancelConfirmProceed,
|
|
15770
|
-
{
|
|
15771
|
-
type: "button",
|
|
15772
|
-
disabled: cancellingOrderId != null,
|
|
15773
|
-
onClick: async () => {
|
|
15774
|
-
if (onCancelOrder && pendingCancelOrderId !== null) {
|
|
15775
|
-
await onCancelOrder(pendingCancelOrderId);
|
|
15331
|
+
cancelAllConfirmOpen && /* @__PURE__ */ jsx(CancelConfirmOverlay, { onClick: () => setCancelAllConfirmOpen(false), children: /* @__PURE__ */ jsxs(CancelConfirmModal, { onClick: (e) => e.stopPropagation(), children: [
|
|
15332
|
+
/* @__PURE__ */ jsx(CancelConfirmTitle, { children: "Cancel All Orders" }),
|
|
15333
|
+
/* @__PURE__ */ jsxs(CancelConfirmBody, { children: [
|
|
15334
|
+
"Are you sure you want to cancel all ",
|
|
15335
|
+
openOrdersCount,
|
|
15336
|
+
" open orders? This action cannot be undone."
|
|
15337
|
+
] }),
|
|
15338
|
+
/* @__PURE__ */ jsxs(CancelConfirmActions, { children: [
|
|
15339
|
+
/* @__PURE__ */ jsx(CancelConfirmDismiss, { type: "button", onClick: () => setCancelAllConfirmOpen(false), children: "Keep Orders" }),
|
|
15340
|
+
/* @__PURE__ */ jsx(
|
|
15341
|
+
CancelConfirmProceed,
|
|
15342
|
+
{
|
|
15343
|
+
type: "button",
|
|
15344
|
+
disabled: cancellingAll,
|
|
15345
|
+
onClick: async () => {
|
|
15346
|
+
if (onCancelAllOrders) {
|
|
15347
|
+
setCancellingAll(true);
|
|
15348
|
+
try {
|
|
15349
|
+
await onCancelAllOrders();
|
|
15350
|
+
} finally {
|
|
15351
|
+
setCancellingAll(false);
|
|
15776
15352
|
}
|
|
15777
|
-
|
|
15778
|
-
|
|
15779
|
-
|
|
15780
|
-
|
|
15781
|
-
|
|
15782
|
-
|
|
15783
|
-
] })
|
|
15784
|
-
|
|
15785
|
-
)
|
|
15353
|
+
}
|
|
15354
|
+
setCancelAllConfirmOpen(false);
|
|
15355
|
+
},
|
|
15356
|
+
children: cancellingAll ? "Cancelling\u2026" : "Yes, Cancel All"
|
|
15357
|
+
}
|
|
15358
|
+
)
|
|
15359
|
+
] })
|
|
15360
|
+
] }) }),
|
|
15361
|
+
pendingCancelOrderId !== null && /* @__PURE__ */ jsx(CancelConfirmOverlay, { onClick: () => setPendingCancelOrderId(null), children: /* @__PURE__ */ jsxs(CancelConfirmModal, { onClick: (e) => e.stopPropagation(), children: [
|
|
15362
|
+
/* @__PURE__ */ jsx(CancelConfirmTitle, { children: "Cancel Order" }),
|
|
15363
|
+
/* @__PURE__ */ jsx(CancelConfirmBody, { children: "Are you sure you want to cancel this order? This action cannot be undone." }),
|
|
15364
|
+
/* @__PURE__ */ jsxs(CancelConfirmActions, { children: [
|
|
15365
|
+
/* @__PURE__ */ jsx(CancelConfirmDismiss, { type: "button", onClick: () => setPendingCancelOrderId(null), children: "Keep Order" }),
|
|
15366
|
+
/* @__PURE__ */ jsx(
|
|
15367
|
+
CancelConfirmProceed,
|
|
15368
|
+
{
|
|
15369
|
+
type: "button",
|
|
15370
|
+
disabled: cancellingOrderId != null,
|
|
15371
|
+
onClick: async () => {
|
|
15372
|
+
if (onCancelOrder && pendingCancelOrderId !== null) {
|
|
15373
|
+
await onCancelOrder(pendingCancelOrderId);
|
|
15374
|
+
}
|
|
15375
|
+
setPendingCancelOrderId(null);
|
|
15376
|
+
},
|
|
15377
|
+
children: cancellingOrderId === pendingCancelOrderId ? "Cancelling\u2026" : "Yes, Cancel"
|
|
15378
|
+
}
|
|
15379
|
+
)
|
|
15380
|
+
] })
|
|
15381
|
+
] }) })
|
|
15786
15382
|
] });
|
|
15787
15383
|
}
|
|
15788
15384
|
var Container2 = styled10.div`
|
|
@@ -16038,8 +15634,7 @@ var CancelConfirmOverlay = styled10.div`
|
|
|
16038
15634
|
display: flex;
|
|
16039
15635
|
align-items: center;
|
|
16040
15636
|
justify-content: center;
|
|
16041
|
-
|
|
16042
|
-
z-index: 10050;
|
|
15637
|
+
z-index: 1000;
|
|
16043
15638
|
`;
|
|
16044
15639
|
var CancelConfirmModal = styled10.div`
|
|
16045
15640
|
background: #1a1a1a;
|
|
@@ -16153,8 +15748,7 @@ var CloseAllOverlay = styled10.div`
|
|
|
16153
15748
|
display: flex;
|
|
16154
15749
|
align-items: center;
|
|
16155
15750
|
justify-content: center;
|
|
16156
|
-
|
|
16157
|
-
z-index: 10050;
|
|
15751
|
+
z-index: 1000;
|
|
16158
15752
|
`;
|
|
16159
15753
|
var CloseAllModal = styled10.div`
|
|
16160
15754
|
background: #1a1a1a;
|