@loafmarkets/ui 0.1.28 → 0.1.29
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.js +0 -65
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +0 -65
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3413,10 +3413,6 @@ var YourOrders = React5__namespace.forwardRef(
|
|
|
3413
3413
|
}
|
|
3414
3414
|
const gridTemplateColumns = columnTemplateParts.join(" ");
|
|
3415
3415
|
const displayTitle = title ?? activeTab?.title ?? activeTab?.label ?? "Portfolio Holdings";
|
|
3416
|
-
console.log("[YourOrders] tabs:", tabs?.map((t) => ({ id: t.id, ordersCount: t.orders?.length })));
|
|
3417
|
-
console.log("[YourOrders] activeTabId prop:", activeTabId);
|
|
3418
|
-
console.log("[YourOrders] effectiveActiveTabId:", effectiveActiveTabId);
|
|
3419
|
-
console.log("[YourOrders] activeTab:", activeTab?.id, "orders count:", activeOrders?.length);
|
|
3420
3416
|
const hasOrders = Array.isArray(activeOrders) && activeOrders.length > 0;
|
|
3421
3417
|
const emptyMessage = activeTab?.emptyState ?? "No holdings yet. Start trading to build your portfolio.";
|
|
3422
3418
|
const renderOrders = () => {
|
|
@@ -4480,23 +4476,12 @@ var Header = ({
|
|
|
4480
4476
|
const [isMoreMenuOpen, setIsMoreMenuOpen] = React5.useState(false);
|
|
4481
4477
|
const [showLoginPopup, setShowLoginPopup] = React5.useState(false);
|
|
4482
4478
|
const [loginPopupInitialView, setLoginPopupInitialView] = React5.useState(void 0);
|
|
4483
|
-
React5.useEffect(() => {
|
|
4484
|
-
console.log("[LoginTrace][Header] mounted");
|
|
4485
|
-
return () => console.log("[LoginTrace][Header] unmounted");
|
|
4486
|
-
}, []);
|
|
4487
|
-
React5.useEffect(() => {
|
|
4488
|
-
console.log("[LoginTrace][Header] showLoginPopup changed", { showLoginPopup, loginPopupInitialView });
|
|
4489
|
-
}, [showLoginPopup, loginPopupInitialView]);
|
|
4490
|
-
React5.useEffect(() => {
|
|
4491
|
-
console.log("[LoginTrace][Header] loginPopupComponent updated", { hasComponent: Boolean(LoginPopupComponent) });
|
|
4492
|
-
}, [LoginPopupComponent]);
|
|
4493
4479
|
React5.useEffect(() => {
|
|
4494
4480
|
const handleClickOutside = (event) => {
|
|
4495
4481
|
const target = event.target;
|
|
4496
4482
|
if (!target) return;
|
|
4497
4483
|
const clickedInsideUserMenu = target.closest(".user-menu") || target.closest(".user-menu-dropdown");
|
|
4498
4484
|
if (isUserMenuOpen && !clickedInsideUserMenu) {
|
|
4499
|
-
console.log("[LoginTrace][Header] Closing user menu due to outside click");
|
|
4500
4485
|
setIsUserMenuOpen(false);
|
|
4501
4486
|
}
|
|
4502
4487
|
if (isMobileMenuOpen && !target.closest(".mobile-menu") && !target.closest(".mobile-menu-button")) {
|
|
@@ -4516,7 +4501,6 @@ var Header = ({
|
|
|
4516
4501
|
const handleExternalLoginPopup = (event) => {
|
|
4517
4502
|
const customEvent = event;
|
|
4518
4503
|
setLoginPopupInitialView(customEvent.detail?.initialView);
|
|
4519
|
-
console.log("[LoginTrace][Header] Received LOGIN_POPUP_EVENT", customEvent.detail);
|
|
4520
4504
|
setShowLoginPopup(true);
|
|
4521
4505
|
};
|
|
4522
4506
|
window.addEventListener(LOGIN_POPUP_EVENT, handleExternalLoginPopup);
|
|
@@ -4531,7 +4515,6 @@ var Header = ({
|
|
|
4531
4515
|
};
|
|
4532
4516
|
const handleUserMenuToggle = () => {
|
|
4533
4517
|
const nextState = !isUserMenuOpen;
|
|
4534
|
-
console.log("[LoginTrace][Header] User dropdown toggle clicked", { nextState });
|
|
4535
4518
|
setIsUserMenuOpen(nextState);
|
|
4536
4519
|
};
|
|
4537
4520
|
const performNavigation = (path) => {
|
|
@@ -4576,13 +4559,11 @@ var Header = ({
|
|
|
4576
4559
|
const handleLogoutClick = async (event) => {
|
|
4577
4560
|
event?.preventDefault();
|
|
4578
4561
|
closeMenus();
|
|
4579
|
-
console.log("[LoginTrace][Header] Logout option selected, invoking onLogout handler");
|
|
4580
4562
|
await onLogout?.();
|
|
4581
4563
|
};
|
|
4582
4564
|
const handleAddFundingClick = (event) => {
|
|
4583
4565
|
event?.preventDefault();
|
|
4584
4566
|
closeMenus();
|
|
4585
|
-
console.log("[LoginTrace][Header] Add funding selected");
|
|
4586
4567
|
if (LoginPopupComponent) {
|
|
4587
4568
|
setLoginPopupInitialView("funding");
|
|
4588
4569
|
setShowLoginPopup(true);
|
|
@@ -4591,7 +4572,6 @@ var Header = ({
|
|
|
4591
4572
|
const handlePortfolioNavigate = (event) => {
|
|
4592
4573
|
event?.preventDefault();
|
|
4593
4574
|
closeMenus();
|
|
4594
|
-
console.log("[LoginTrace][Header] Portfolio selected");
|
|
4595
4575
|
if (_onOrdersNavigate) {
|
|
4596
4576
|
_onOrdersNavigate();
|
|
4597
4577
|
return;
|
|
@@ -4635,7 +4615,6 @@ var Header = ({
|
|
|
4635
4615
|
return false;
|
|
4636
4616
|
};
|
|
4637
4617
|
const handleSignIn = () => {
|
|
4638
|
-
console.log("[LoginTrace][Header] handleSignIn invoked", { hasCustomHandler: Boolean(onSignInClick) });
|
|
4639
4618
|
if (onSignInClick) {
|
|
4640
4619
|
onSignInClick();
|
|
4641
4620
|
return;
|
|
@@ -4644,12 +4623,10 @@ var Header = ({
|
|
|
4644
4623
|
return;
|
|
4645
4624
|
}
|
|
4646
4625
|
if (LoginPopupComponent) {
|
|
4647
|
-
console.log("[LoginTrace][Header] Opening login popup via handleSignIn");
|
|
4648
4626
|
setShowLoginPopup(true);
|
|
4649
4627
|
}
|
|
4650
4628
|
};
|
|
4651
4629
|
const handleLoginPopupClose = React5__namespace.default.useCallback(() => {
|
|
4652
|
-
console.log("[LoginTrace][Header] Closing login popup via onClose handler");
|
|
4653
4630
|
setShowLoginPopup(false);
|
|
4654
4631
|
setLoginPopupInitialView(void 0);
|
|
4655
4632
|
}, []);
|
|
@@ -4879,7 +4856,6 @@ var Header = ({
|
|
|
4879
4856
|
{
|
|
4880
4857
|
type: "button",
|
|
4881
4858
|
onClick: (event) => {
|
|
4882
|
-
console.log("[LoginTrace][Header] Add funding menu item clicked");
|
|
4883
4859
|
handleAddFundingClick(event);
|
|
4884
4860
|
},
|
|
4885
4861
|
children: /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { children: "Add funding" })
|
|
@@ -4890,7 +4866,6 @@ var Header = ({
|
|
|
4890
4866
|
{
|
|
4891
4867
|
type: "button",
|
|
4892
4868
|
onClick: (event) => {
|
|
4893
|
-
console.log("[LoginTrace][Header] Logout menu item clicked");
|
|
4894
4869
|
void handleLogoutClick(event);
|
|
4895
4870
|
},
|
|
4896
4871
|
children: /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { className: "logout", children: "Logout" })
|
|
@@ -5482,19 +5457,8 @@ var LoginPopup = ({
|
|
|
5482
5457
|
const [fundingError, setFundingError] = React5.useState("");
|
|
5483
5458
|
const [transakWidgetUrl, setTransakWidgetUrl] = React5.useState(null);
|
|
5484
5459
|
const suppressAutoCloseRef = React5__namespace.default.useRef(false);
|
|
5485
|
-
React5.useEffect(() => {
|
|
5486
|
-
console.log("[LoginTrace][Popup] mounted");
|
|
5487
|
-
return () => console.log("[LoginTrace][Popup] unmounted");
|
|
5488
|
-
}, []);
|
|
5489
|
-
React5.useEffect(() => {
|
|
5490
|
-
console.log("[LoginTrace][Popup] view updated", { view });
|
|
5491
|
-
}, [view]);
|
|
5492
|
-
React5.useEffect(() => {
|
|
5493
|
-
console.log("[LoginTrace][Popup] auth props updated", { isAuthenticated, hasUser: Boolean(currentUser) });
|
|
5494
|
-
}, [isAuthenticated, currentUser]);
|
|
5495
5460
|
React5.useEffect(() => {
|
|
5496
5461
|
if (typeof initialView === "string") {
|
|
5497
|
-
console.log("[LoginTrace][Popup] initialView prop changed", { initialView });
|
|
5498
5462
|
setView(initialView);
|
|
5499
5463
|
}
|
|
5500
5464
|
}, [initialView]);
|
|
@@ -5504,20 +5468,16 @@ var LoginPopup = ({
|
|
|
5504
5468
|
if (!event.origin.includes("transak.com") && !event.origin.includes("global.transak.com")) {
|
|
5505
5469
|
return;
|
|
5506
5470
|
}
|
|
5507
|
-
console.log("[LoginTrace][Popup] Transak message received", event.data);
|
|
5508
5471
|
try {
|
|
5509
5472
|
const data = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
|
|
5510
5473
|
if (data.event_id === "TRANSAK_ORDER_SUCCESSFUL") {
|
|
5511
|
-
console.log("[LoginTrace][Popup] Transak order successful", data);
|
|
5512
5474
|
setTimeout(() => {
|
|
5513
5475
|
onClose();
|
|
5514
5476
|
}, 2e3);
|
|
5515
5477
|
} else if (data.event_id === "TRANSAK_ORDER_FAILED") {
|
|
5516
|
-
console.error("[LoginTrace][Popup] Transak order failed", data);
|
|
5517
5478
|
setFundingError("Transaction failed. Please try again.");
|
|
5518
5479
|
setTransakWidgetUrl(null);
|
|
5519
5480
|
} else if (data.event_id === "TRANSAK_WIDGET_CLOSE") {
|
|
5520
|
-
console.log("[LoginTrace][Popup] Transak widget closed by user");
|
|
5521
5481
|
setTransakWidgetUrl(null);
|
|
5522
5482
|
}
|
|
5523
5483
|
} catch (err) {
|
|
@@ -5529,56 +5489,40 @@ var LoginPopup = ({
|
|
|
5529
5489
|
}, [transakWidgetUrl, onClose]);
|
|
5530
5490
|
React5.useEffect(() => {
|
|
5531
5491
|
if (!autoCloseOnAuth) {
|
|
5532
|
-
console.log("[LoginTrace][Popup] autoClose disabled", { autoCloseOnAuth, view });
|
|
5533
5492
|
return;
|
|
5534
5493
|
}
|
|
5535
5494
|
if (suppressAutoCloseRef.current) {
|
|
5536
|
-
console.log("[LoginTrace][Popup] autoClose suppressed", { view });
|
|
5537
5495
|
return;
|
|
5538
5496
|
}
|
|
5539
5497
|
if (view === "kyc" || view === "kyc-success" || view === "kyc-failed" || view === "funding") {
|
|
5540
|
-
console.log("[LoginTrace][Popup] autoClose skipped due to onboarding view", { view });
|
|
5541
5498
|
return;
|
|
5542
5499
|
}
|
|
5543
|
-
console.log("[LoginTrace][Popup] autoClose effect evaluating", {
|
|
5544
|
-
autoCloseOnAuth,
|
|
5545
|
-
isAuthenticated,
|
|
5546
|
-
hasUser: Boolean(currentUser),
|
|
5547
|
-
view
|
|
5548
|
-
});
|
|
5549
5500
|
if (isAuthenticated || currentUser) {
|
|
5550
|
-
console.log("[LoginTrace][Popup] autoClose triggered", { isAuthenticated, hasUser: Boolean(currentUser), view });
|
|
5551
5501
|
onClose();
|
|
5552
5502
|
}
|
|
5553
5503
|
}, [autoCloseOnAuth, currentUser, isAuthenticated, onClose, view]);
|
|
5554
5504
|
const handleWalletLogin = async () => {
|
|
5555
|
-
console.log("[LoginTrace][Popup] Wallet login clicked, onWalletLogin:", !!onWalletLogin);
|
|
5556
5505
|
if (onWalletLogin) {
|
|
5557
5506
|
try {
|
|
5558
|
-
console.log("[LoginTrace][Popup] Calling onWalletLogin...");
|
|
5559
5507
|
await onWalletLogin();
|
|
5560
|
-
console.log("[LoginTrace][Popup] onWalletLogin completed, closing popup");
|
|
5561
5508
|
onClose();
|
|
5562
5509
|
return;
|
|
5563
5510
|
} catch (err) {
|
|
5564
5511
|
console.error("[LoginTrace][Popup] Wallet login failed", err);
|
|
5565
5512
|
}
|
|
5566
5513
|
}
|
|
5567
|
-
console.log("[LoginTrace][Popup] No onWalletLogin handler, closing popup");
|
|
5568
5514
|
onClose();
|
|
5569
5515
|
if (onOpenEarlyAccess) {
|
|
5570
5516
|
onOpenEarlyAccess();
|
|
5571
5517
|
}
|
|
5572
5518
|
};
|
|
5573
5519
|
const handleEmailClick = (signUp = false) => {
|
|
5574
|
-
console.log("[LoginTrace][Popup] handleEmailClick", { signUp });
|
|
5575
5520
|
setIsSignUp(signUp);
|
|
5576
5521
|
setView("email");
|
|
5577
5522
|
setError("");
|
|
5578
5523
|
};
|
|
5579
5524
|
const handleSendCode = async (event) => {
|
|
5580
5525
|
event?.preventDefault();
|
|
5581
|
-
console.log("[LoginTrace][Popup] handleSendCode invoked", { email, isSignUp, handle, eventType: event?.type });
|
|
5582
5526
|
if (!email || !email.includes("@")) {
|
|
5583
5527
|
setError("Please enter a valid email address");
|
|
5584
5528
|
return;
|
|
@@ -5595,10 +5539,8 @@ var LoginPopup = ({
|
|
|
5595
5539
|
setError("");
|
|
5596
5540
|
const normalizedHandle = isSignUp ? handle.trim() : void 0;
|
|
5597
5541
|
try {
|
|
5598
|
-
console.log("[LoginTrace][Popup] Attempting demo login fallback", { hasDemoHandler: Boolean(onDemoLogin) });
|
|
5599
5542
|
const demoResult = await onDemoLogin?.(email, normalizedHandle ?? null);
|
|
5600
5543
|
if (demoResult && demoResult.success) {
|
|
5601
|
-
console.log("[LoginTrace][Popup] Demo login succeeded, skipping OTP flow");
|
|
5602
5544
|
setLoading(false);
|
|
5603
5545
|
return;
|
|
5604
5546
|
}
|
|
@@ -5611,23 +5553,19 @@ var LoginPopup = ({
|
|
|
5611
5553
|
return;
|
|
5612
5554
|
}
|
|
5613
5555
|
try {
|
|
5614
|
-
console.log("[LoginTrace][Popup] Calling onSendEmailCode", { email, isSignUp, normalizedHandle });
|
|
5615
5556
|
await onSendEmailCode({ email, isSignUp, handle: normalizedHandle ?? null });
|
|
5616
|
-
console.log("[LoginTrace][Popup] onSendEmailCode resolved, switching to OTP view");
|
|
5617
5557
|
setView("otp");
|
|
5618
5558
|
setOtp(Array(OTP_INPUT_LENGTH).fill(""));
|
|
5619
5559
|
} catch (err) {
|
|
5620
5560
|
const message = err instanceof Error ? err.message : "Failed to send verification code";
|
|
5621
5561
|
console.error("[LoginTrace][Popup] onSendEmailCode threw", err);
|
|
5622
5562
|
if (!isSignUp && message.includes("No account found")) {
|
|
5623
|
-
console.log("[LoginTrace][Popup] No account found during sign-in, switching to sign-up view");
|
|
5624
5563
|
setIsSignUp(true);
|
|
5625
5564
|
setError("");
|
|
5626
5565
|
setLoading(false);
|
|
5627
5566
|
return;
|
|
5628
5567
|
}
|
|
5629
5568
|
if (isSignUp && message.includes("Account already exists")) {
|
|
5630
|
-
console.log("[LoginTrace][Popup] Account exists during sign-up, auto-switching to sign-in and sending OTP");
|
|
5631
5569
|
setIsSignUp(false);
|
|
5632
5570
|
try {
|
|
5633
5571
|
await onSendEmailCode({ email, isSignUp: false, handle: null });
|
|
@@ -5696,7 +5634,6 @@ var LoginPopup = ({
|
|
|
5696
5634
|
const handleVerifyCode = async (event) => {
|
|
5697
5635
|
event.preventDefault();
|
|
5698
5636
|
const code = otp.join("");
|
|
5699
|
-
console.log("[LoginTrace][Popup] handleVerifyCode", { codeLength: code.length, isSignUp });
|
|
5700
5637
|
if (code.length !== OTP_INPUT_LENGTH) {
|
|
5701
5638
|
setError("Please enter the 6-digit code");
|
|
5702
5639
|
return;
|
|
@@ -5711,10 +5648,8 @@ var LoginPopup = ({
|
|
|
5711
5648
|
suppressAutoCloseRef.current = true;
|
|
5712
5649
|
}
|
|
5713
5650
|
try {
|
|
5714
|
-
console.log("[LoginTrace][Popup] Calling onVerifyEmailCode");
|
|
5715
5651
|
await onVerifyEmailCode({ code, email });
|
|
5716
5652
|
if (isSignUp) {
|
|
5717
|
-
console.log("[LoginTrace][Popup] Signup OTP verified, moving to funding view");
|
|
5718
5653
|
setView("funding");
|
|
5719
5654
|
setLoading(false);
|
|
5720
5655
|
return;
|