@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.mjs
CHANGED
|
@@ -3388,10 +3388,6 @@ var YourOrders = React5.forwardRef(
|
|
|
3388
3388
|
}
|
|
3389
3389
|
const gridTemplateColumns = columnTemplateParts.join(" ");
|
|
3390
3390
|
const displayTitle = title ?? activeTab?.title ?? activeTab?.label ?? "Portfolio Holdings";
|
|
3391
|
-
console.log("[YourOrders] tabs:", tabs?.map((t) => ({ id: t.id, ordersCount: t.orders?.length })));
|
|
3392
|
-
console.log("[YourOrders] activeTabId prop:", activeTabId);
|
|
3393
|
-
console.log("[YourOrders] effectiveActiveTabId:", effectiveActiveTabId);
|
|
3394
|
-
console.log("[YourOrders] activeTab:", activeTab?.id, "orders count:", activeOrders?.length);
|
|
3395
3391
|
const hasOrders = Array.isArray(activeOrders) && activeOrders.length > 0;
|
|
3396
3392
|
const emptyMessage = activeTab?.emptyState ?? "No holdings yet. Start trading to build your portfolio.";
|
|
3397
3393
|
const renderOrders = () => {
|
|
@@ -4455,23 +4451,12 @@ var Header = ({
|
|
|
4455
4451
|
const [isMoreMenuOpen, setIsMoreMenuOpen] = useState(false);
|
|
4456
4452
|
const [showLoginPopup, setShowLoginPopup] = useState(false);
|
|
4457
4453
|
const [loginPopupInitialView, setLoginPopupInitialView] = useState(void 0);
|
|
4458
|
-
useEffect(() => {
|
|
4459
|
-
console.log("[LoginTrace][Header] mounted");
|
|
4460
|
-
return () => console.log("[LoginTrace][Header] unmounted");
|
|
4461
|
-
}, []);
|
|
4462
|
-
useEffect(() => {
|
|
4463
|
-
console.log("[LoginTrace][Header] showLoginPopup changed", { showLoginPopup, loginPopupInitialView });
|
|
4464
|
-
}, [showLoginPopup, loginPopupInitialView]);
|
|
4465
|
-
useEffect(() => {
|
|
4466
|
-
console.log("[LoginTrace][Header] loginPopupComponent updated", { hasComponent: Boolean(LoginPopupComponent) });
|
|
4467
|
-
}, [LoginPopupComponent]);
|
|
4468
4454
|
useEffect(() => {
|
|
4469
4455
|
const handleClickOutside = (event) => {
|
|
4470
4456
|
const target = event.target;
|
|
4471
4457
|
if (!target) return;
|
|
4472
4458
|
const clickedInsideUserMenu = target.closest(".user-menu") || target.closest(".user-menu-dropdown");
|
|
4473
4459
|
if (isUserMenuOpen && !clickedInsideUserMenu) {
|
|
4474
|
-
console.log("[LoginTrace][Header] Closing user menu due to outside click");
|
|
4475
4460
|
setIsUserMenuOpen(false);
|
|
4476
4461
|
}
|
|
4477
4462
|
if (isMobileMenuOpen && !target.closest(".mobile-menu") && !target.closest(".mobile-menu-button")) {
|
|
@@ -4491,7 +4476,6 @@ var Header = ({
|
|
|
4491
4476
|
const handleExternalLoginPopup = (event) => {
|
|
4492
4477
|
const customEvent = event;
|
|
4493
4478
|
setLoginPopupInitialView(customEvent.detail?.initialView);
|
|
4494
|
-
console.log("[LoginTrace][Header] Received LOGIN_POPUP_EVENT", customEvent.detail);
|
|
4495
4479
|
setShowLoginPopup(true);
|
|
4496
4480
|
};
|
|
4497
4481
|
window.addEventListener(LOGIN_POPUP_EVENT, handleExternalLoginPopup);
|
|
@@ -4506,7 +4490,6 @@ var Header = ({
|
|
|
4506
4490
|
};
|
|
4507
4491
|
const handleUserMenuToggle = () => {
|
|
4508
4492
|
const nextState = !isUserMenuOpen;
|
|
4509
|
-
console.log("[LoginTrace][Header] User dropdown toggle clicked", { nextState });
|
|
4510
4493
|
setIsUserMenuOpen(nextState);
|
|
4511
4494
|
};
|
|
4512
4495
|
const performNavigation = (path) => {
|
|
@@ -4551,13 +4534,11 @@ var Header = ({
|
|
|
4551
4534
|
const handleLogoutClick = async (event) => {
|
|
4552
4535
|
event?.preventDefault();
|
|
4553
4536
|
closeMenus();
|
|
4554
|
-
console.log("[LoginTrace][Header] Logout option selected, invoking onLogout handler");
|
|
4555
4537
|
await onLogout?.();
|
|
4556
4538
|
};
|
|
4557
4539
|
const handleAddFundingClick = (event) => {
|
|
4558
4540
|
event?.preventDefault();
|
|
4559
4541
|
closeMenus();
|
|
4560
|
-
console.log("[LoginTrace][Header] Add funding selected");
|
|
4561
4542
|
if (LoginPopupComponent) {
|
|
4562
4543
|
setLoginPopupInitialView("funding");
|
|
4563
4544
|
setShowLoginPopup(true);
|
|
@@ -4566,7 +4547,6 @@ var Header = ({
|
|
|
4566
4547
|
const handlePortfolioNavigate = (event) => {
|
|
4567
4548
|
event?.preventDefault();
|
|
4568
4549
|
closeMenus();
|
|
4569
|
-
console.log("[LoginTrace][Header] Portfolio selected");
|
|
4570
4550
|
if (_onOrdersNavigate) {
|
|
4571
4551
|
_onOrdersNavigate();
|
|
4572
4552
|
return;
|
|
@@ -4610,7 +4590,6 @@ var Header = ({
|
|
|
4610
4590
|
return false;
|
|
4611
4591
|
};
|
|
4612
4592
|
const handleSignIn = () => {
|
|
4613
|
-
console.log("[LoginTrace][Header] handleSignIn invoked", { hasCustomHandler: Boolean(onSignInClick) });
|
|
4614
4593
|
if (onSignInClick) {
|
|
4615
4594
|
onSignInClick();
|
|
4616
4595
|
return;
|
|
@@ -4619,12 +4598,10 @@ var Header = ({
|
|
|
4619
4598
|
return;
|
|
4620
4599
|
}
|
|
4621
4600
|
if (LoginPopupComponent) {
|
|
4622
|
-
console.log("[LoginTrace][Header] Opening login popup via handleSignIn");
|
|
4623
4601
|
setShowLoginPopup(true);
|
|
4624
4602
|
}
|
|
4625
4603
|
};
|
|
4626
4604
|
const handleLoginPopupClose = React5__default.useCallback(() => {
|
|
4627
|
-
console.log("[LoginTrace][Header] Closing login popup via onClose handler");
|
|
4628
4605
|
setShowLoginPopup(false);
|
|
4629
4606
|
setLoginPopupInitialView(void 0);
|
|
4630
4607
|
}, []);
|
|
@@ -4854,7 +4831,6 @@ var Header = ({
|
|
|
4854
4831
|
{
|
|
4855
4832
|
type: "button",
|
|
4856
4833
|
onClick: (event) => {
|
|
4857
|
-
console.log("[LoginTrace][Header] Add funding menu item clicked");
|
|
4858
4834
|
handleAddFundingClick(event);
|
|
4859
4835
|
},
|
|
4860
4836
|
children: /* @__PURE__ */ jsx(MenuItem, { children: "Add funding" })
|
|
@@ -4865,7 +4841,6 @@ var Header = ({
|
|
|
4865
4841
|
{
|
|
4866
4842
|
type: "button",
|
|
4867
4843
|
onClick: (event) => {
|
|
4868
|
-
console.log("[LoginTrace][Header] Logout menu item clicked");
|
|
4869
4844
|
void handleLogoutClick(event);
|
|
4870
4845
|
},
|
|
4871
4846
|
children: /* @__PURE__ */ jsx(MenuItem, { className: "logout", children: "Logout" })
|
|
@@ -5457,19 +5432,8 @@ var LoginPopup = ({
|
|
|
5457
5432
|
const [fundingError, setFundingError] = useState("");
|
|
5458
5433
|
const [transakWidgetUrl, setTransakWidgetUrl] = useState(null);
|
|
5459
5434
|
const suppressAutoCloseRef = React5__default.useRef(false);
|
|
5460
|
-
useEffect(() => {
|
|
5461
|
-
console.log("[LoginTrace][Popup] mounted");
|
|
5462
|
-
return () => console.log("[LoginTrace][Popup] unmounted");
|
|
5463
|
-
}, []);
|
|
5464
|
-
useEffect(() => {
|
|
5465
|
-
console.log("[LoginTrace][Popup] view updated", { view });
|
|
5466
|
-
}, [view]);
|
|
5467
|
-
useEffect(() => {
|
|
5468
|
-
console.log("[LoginTrace][Popup] auth props updated", { isAuthenticated, hasUser: Boolean(currentUser) });
|
|
5469
|
-
}, [isAuthenticated, currentUser]);
|
|
5470
5435
|
useEffect(() => {
|
|
5471
5436
|
if (typeof initialView === "string") {
|
|
5472
|
-
console.log("[LoginTrace][Popup] initialView prop changed", { initialView });
|
|
5473
5437
|
setView(initialView);
|
|
5474
5438
|
}
|
|
5475
5439
|
}, [initialView]);
|
|
@@ -5479,20 +5443,16 @@ var LoginPopup = ({
|
|
|
5479
5443
|
if (!event.origin.includes("transak.com") && !event.origin.includes("global.transak.com")) {
|
|
5480
5444
|
return;
|
|
5481
5445
|
}
|
|
5482
|
-
console.log("[LoginTrace][Popup] Transak message received", event.data);
|
|
5483
5446
|
try {
|
|
5484
5447
|
const data = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
|
|
5485
5448
|
if (data.event_id === "TRANSAK_ORDER_SUCCESSFUL") {
|
|
5486
|
-
console.log("[LoginTrace][Popup] Transak order successful", data);
|
|
5487
5449
|
setTimeout(() => {
|
|
5488
5450
|
onClose();
|
|
5489
5451
|
}, 2e3);
|
|
5490
5452
|
} else if (data.event_id === "TRANSAK_ORDER_FAILED") {
|
|
5491
|
-
console.error("[LoginTrace][Popup] Transak order failed", data);
|
|
5492
5453
|
setFundingError("Transaction failed. Please try again.");
|
|
5493
5454
|
setTransakWidgetUrl(null);
|
|
5494
5455
|
} else if (data.event_id === "TRANSAK_WIDGET_CLOSE") {
|
|
5495
|
-
console.log("[LoginTrace][Popup] Transak widget closed by user");
|
|
5496
5456
|
setTransakWidgetUrl(null);
|
|
5497
5457
|
}
|
|
5498
5458
|
} catch (err) {
|
|
@@ -5504,56 +5464,40 @@ var LoginPopup = ({
|
|
|
5504
5464
|
}, [transakWidgetUrl, onClose]);
|
|
5505
5465
|
useEffect(() => {
|
|
5506
5466
|
if (!autoCloseOnAuth) {
|
|
5507
|
-
console.log("[LoginTrace][Popup] autoClose disabled", { autoCloseOnAuth, view });
|
|
5508
5467
|
return;
|
|
5509
5468
|
}
|
|
5510
5469
|
if (suppressAutoCloseRef.current) {
|
|
5511
|
-
console.log("[LoginTrace][Popup] autoClose suppressed", { view });
|
|
5512
5470
|
return;
|
|
5513
5471
|
}
|
|
5514
5472
|
if (view === "kyc" || view === "kyc-success" || view === "kyc-failed" || view === "funding") {
|
|
5515
|
-
console.log("[LoginTrace][Popup] autoClose skipped due to onboarding view", { view });
|
|
5516
5473
|
return;
|
|
5517
5474
|
}
|
|
5518
|
-
console.log("[LoginTrace][Popup] autoClose effect evaluating", {
|
|
5519
|
-
autoCloseOnAuth,
|
|
5520
|
-
isAuthenticated,
|
|
5521
|
-
hasUser: Boolean(currentUser),
|
|
5522
|
-
view
|
|
5523
|
-
});
|
|
5524
5475
|
if (isAuthenticated || currentUser) {
|
|
5525
|
-
console.log("[LoginTrace][Popup] autoClose triggered", { isAuthenticated, hasUser: Boolean(currentUser), view });
|
|
5526
5476
|
onClose();
|
|
5527
5477
|
}
|
|
5528
5478
|
}, [autoCloseOnAuth, currentUser, isAuthenticated, onClose, view]);
|
|
5529
5479
|
const handleWalletLogin = async () => {
|
|
5530
|
-
console.log("[LoginTrace][Popup] Wallet login clicked, onWalletLogin:", !!onWalletLogin);
|
|
5531
5480
|
if (onWalletLogin) {
|
|
5532
5481
|
try {
|
|
5533
|
-
console.log("[LoginTrace][Popup] Calling onWalletLogin...");
|
|
5534
5482
|
await onWalletLogin();
|
|
5535
|
-
console.log("[LoginTrace][Popup] onWalletLogin completed, closing popup");
|
|
5536
5483
|
onClose();
|
|
5537
5484
|
return;
|
|
5538
5485
|
} catch (err) {
|
|
5539
5486
|
console.error("[LoginTrace][Popup] Wallet login failed", err);
|
|
5540
5487
|
}
|
|
5541
5488
|
}
|
|
5542
|
-
console.log("[LoginTrace][Popup] No onWalletLogin handler, closing popup");
|
|
5543
5489
|
onClose();
|
|
5544
5490
|
if (onOpenEarlyAccess) {
|
|
5545
5491
|
onOpenEarlyAccess();
|
|
5546
5492
|
}
|
|
5547
5493
|
};
|
|
5548
5494
|
const handleEmailClick = (signUp = false) => {
|
|
5549
|
-
console.log("[LoginTrace][Popup] handleEmailClick", { signUp });
|
|
5550
5495
|
setIsSignUp(signUp);
|
|
5551
5496
|
setView("email");
|
|
5552
5497
|
setError("");
|
|
5553
5498
|
};
|
|
5554
5499
|
const handleSendCode = async (event) => {
|
|
5555
5500
|
event?.preventDefault();
|
|
5556
|
-
console.log("[LoginTrace][Popup] handleSendCode invoked", { email, isSignUp, handle, eventType: event?.type });
|
|
5557
5501
|
if (!email || !email.includes("@")) {
|
|
5558
5502
|
setError("Please enter a valid email address");
|
|
5559
5503
|
return;
|
|
@@ -5570,10 +5514,8 @@ var LoginPopup = ({
|
|
|
5570
5514
|
setError("");
|
|
5571
5515
|
const normalizedHandle = isSignUp ? handle.trim() : void 0;
|
|
5572
5516
|
try {
|
|
5573
|
-
console.log("[LoginTrace][Popup] Attempting demo login fallback", { hasDemoHandler: Boolean(onDemoLogin) });
|
|
5574
5517
|
const demoResult = await onDemoLogin?.(email, normalizedHandle ?? null);
|
|
5575
5518
|
if (demoResult && demoResult.success) {
|
|
5576
|
-
console.log("[LoginTrace][Popup] Demo login succeeded, skipping OTP flow");
|
|
5577
5519
|
setLoading(false);
|
|
5578
5520
|
return;
|
|
5579
5521
|
}
|
|
@@ -5586,23 +5528,19 @@ var LoginPopup = ({
|
|
|
5586
5528
|
return;
|
|
5587
5529
|
}
|
|
5588
5530
|
try {
|
|
5589
|
-
console.log("[LoginTrace][Popup] Calling onSendEmailCode", { email, isSignUp, normalizedHandle });
|
|
5590
5531
|
await onSendEmailCode({ email, isSignUp, handle: normalizedHandle ?? null });
|
|
5591
|
-
console.log("[LoginTrace][Popup] onSendEmailCode resolved, switching to OTP view");
|
|
5592
5532
|
setView("otp");
|
|
5593
5533
|
setOtp(Array(OTP_INPUT_LENGTH).fill(""));
|
|
5594
5534
|
} catch (err) {
|
|
5595
5535
|
const message = err instanceof Error ? err.message : "Failed to send verification code";
|
|
5596
5536
|
console.error("[LoginTrace][Popup] onSendEmailCode threw", err);
|
|
5597
5537
|
if (!isSignUp && message.includes("No account found")) {
|
|
5598
|
-
console.log("[LoginTrace][Popup] No account found during sign-in, switching to sign-up view");
|
|
5599
5538
|
setIsSignUp(true);
|
|
5600
5539
|
setError("");
|
|
5601
5540
|
setLoading(false);
|
|
5602
5541
|
return;
|
|
5603
5542
|
}
|
|
5604
5543
|
if (isSignUp && message.includes("Account already exists")) {
|
|
5605
|
-
console.log("[LoginTrace][Popup] Account exists during sign-up, auto-switching to sign-in and sending OTP");
|
|
5606
5544
|
setIsSignUp(false);
|
|
5607
5545
|
try {
|
|
5608
5546
|
await onSendEmailCode({ email, isSignUp: false, handle: null });
|
|
@@ -5671,7 +5609,6 @@ var LoginPopup = ({
|
|
|
5671
5609
|
const handleVerifyCode = async (event) => {
|
|
5672
5610
|
event.preventDefault();
|
|
5673
5611
|
const code = otp.join("");
|
|
5674
|
-
console.log("[LoginTrace][Popup] handleVerifyCode", { codeLength: code.length, isSignUp });
|
|
5675
5612
|
if (code.length !== OTP_INPUT_LENGTH) {
|
|
5676
5613
|
setError("Please enter the 6-digit code");
|
|
5677
5614
|
return;
|
|
@@ -5686,10 +5623,8 @@ var LoginPopup = ({
|
|
|
5686
5623
|
suppressAutoCloseRef.current = true;
|
|
5687
5624
|
}
|
|
5688
5625
|
try {
|
|
5689
|
-
console.log("[LoginTrace][Popup] Calling onVerifyEmailCode");
|
|
5690
5626
|
await onVerifyEmailCode({ code, email });
|
|
5691
5627
|
if (isSignUp) {
|
|
5692
|
-
console.log("[LoginTrace][Popup] Signup OTP verified, moving to funding view");
|
|
5693
5628
|
setView("funding");
|
|
5694
5629
|
setLoading(false);
|
|
5695
5630
|
return;
|