@b3dotfun/sdk 0.0.35 → 0.0.36
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/cjs/anyspend/react/components/AnySpend.js +5 -3
- package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +2 -2
- package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.d.ts +3 -1
- package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.js +5 -2
- package/dist/cjs/anyspend/react/components/common/CryptoPaySection.d.ts +16 -0
- package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +58 -0
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +1 -0
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +22 -15
- package/dist/cjs/anyspend/react/components/common/OrderDetails.js +12 -4
- package/dist/cjs/anyspend/react/components/common/PaySection.d.ts +2 -6
- package/dist/cjs/anyspend/react/components/common/PaySection.js +10 -15
- package/dist/cjs/anyspend/react/components/index.d.ts +2 -2
- package/dist/cjs/anyspend/react/components/index.js +5 -5
- package/dist/cjs/global-account/bsmnt.d.ts +2 -0
- package/dist/cjs/global-account/bsmnt.js +42 -1
- package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +6 -0
- package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.js +55 -0
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +6 -0
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +108 -0
- package/dist/cjs/global-account/react/components/B3DynamicModal.js +9 -1
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +3 -1
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +21 -11
- package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.d.ts +3 -1
- package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +19 -5
- package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.d.ts +3 -1
- package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +6 -6
- package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3.js +2 -2
- package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -13
- package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Privy.js +1 -3
- package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStep.js +0 -3
- package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +0 -3
- package/dist/cjs/global-account/react/components/icons/AppleIcon.d.ts +9 -0
- package/dist/cjs/global-account/react/components/icons/AppleIcon.js +8 -0
- package/dist/cjs/global-account/react/components/icons/DiscordIcon.d.ts +9 -0
- package/dist/cjs/global-account/react/components/icons/DiscordIcon.js +8 -0
- package/dist/cjs/global-account/react/components/icons/FarcasterIcon.d.ts +9 -0
- package/dist/cjs/global-account/react/components/icons/FarcasterIcon.js +8 -0
- package/dist/cjs/global-account/react/components/icons/GoogleIcon.d.ts +8 -0
- package/dist/cjs/global-account/react/components/icons/GoogleIcon.js +8 -0
- package/dist/cjs/global-account/react/components/icons/XIcon.d.ts +9 -0
- package/dist/cjs/global-account/react/components/icons/XIcon.js +8 -0
- package/dist/cjs/global-account/react/hooks/useAccountWallet.js +3 -2
- package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +1 -2
- package/dist/cjs/global-account/react/hooks/useAuthentication.js +16 -15
- package/dist/cjs/global-account/react/hooks/useProfile.d.ts +1 -1
- package/dist/cjs/global-account/react/hooks/useRPMToken.d.ts +7 -0
- package/dist/cjs/global-account/react/hooks/useRPMToken.js +11 -0
- package/dist/cjs/global-account/react/stores/useAuthStore.d.ts +2 -4
- package/dist/cjs/global-account/react/stores/useAuthStore.js +2 -4
- package/dist/cjs/global-account/react/stores/useModalStore.d.ts +11 -1
- package/dist/cjs/global-account/react/utils/updateAvatar.d.ts +4 -0
- package/dist/cjs/global-account/react/utils/updateAvatar.js +54 -0
- package/dist/esm/anyspend/react/components/AnySpend.js +5 -3
- package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -2
- package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.d.ts +3 -1
- package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.js +5 -2
- package/dist/esm/anyspend/react/components/common/CryptoPaySection.d.ts +16 -0
- package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +55 -0
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +1 -0
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +22 -15
- package/dist/esm/anyspend/react/components/common/OrderDetails.js +12 -4
- package/dist/esm/anyspend/react/components/common/PaySection.d.ts +2 -6
- package/dist/esm/anyspend/react/components/common/PaySection.js +10 -15
- package/dist/esm/anyspend/react/components/index.d.ts +2 -2
- package/dist/esm/anyspend/react/components/index.js +2 -2
- package/dist/esm/global-account/bsmnt.d.ts +2 -0
- package/dist/esm/global-account/bsmnt.js +39 -0
- package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +6 -0
- package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.js +52 -0
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +6 -0
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +102 -0
- package/dist/esm/global-account/react/components/B3DynamicModal.js +9 -1
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +3 -1
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +22 -12
- package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.d.ts +3 -1
- package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +20 -6
- package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.d.ts +3 -1
- package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +6 -6
- package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3.js +2 -2
- package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -13
- package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Privy.js +1 -3
- package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStep.js +0 -3
- package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +0 -3
- package/dist/esm/global-account/react/components/icons/AppleIcon.d.ts +9 -0
- package/dist/esm/global-account/react/components/icons/AppleIcon.js +5 -0
- package/dist/esm/global-account/react/components/icons/DiscordIcon.d.ts +9 -0
- package/dist/esm/global-account/react/components/icons/DiscordIcon.js +5 -0
- package/dist/esm/global-account/react/components/icons/FarcasterIcon.d.ts +9 -0
- package/dist/esm/global-account/react/components/icons/FarcasterIcon.js +5 -0
- package/dist/esm/global-account/react/components/icons/GoogleIcon.d.ts +8 -0
- package/dist/esm/global-account/react/components/icons/GoogleIcon.js +5 -0
- package/dist/esm/global-account/react/components/icons/XIcon.d.ts +9 -0
- package/dist/esm/global-account/react/components/icons/XIcon.js +5 -0
- package/dist/esm/global-account/react/hooks/useAccountWallet.js +3 -2
- package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +1 -2
- package/dist/esm/global-account/react/hooks/useAuthentication.js +16 -15
- package/dist/esm/global-account/react/hooks/useProfile.d.ts +1 -1
- package/dist/esm/global-account/react/hooks/useRPMToken.d.ts +7 -0
- package/dist/esm/global-account/react/hooks/useRPMToken.js +8 -0
- package/dist/esm/global-account/react/stores/useAuthStore.d.ts +2 -4
- package/dist/esm/global-account/react/stores/useAuthStore.js +2 -4
- package/dist/esm/global-account/react/stores/useModalStore.d.ts +11 -1
- package/dist/esm/global-account/react/utils/updateAvatar.d.ts +4 -0
- package/dist/esm/global-account/react/utils/updateAvatar.js +18 -0
- package/dist/styles/index.css +1 -1
- package/dist/types/anyspend/react/components/common/ConnectWalletPayment.d.ts +3 -1
- package/dist/types/anyspend/react/components/common/CryptoPaySection.d.ts +16 -0
- package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +1 -0
- package/dist/types/anyspend/react/components/common/PaySection.d.ts +2 -6
- package/dist/types/anyspend/react/components/index.d.ts +2 -2
- package/dist/types/global-account/bsmnt.d.ts +2 -0
- package/dist/types/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +6 -0
- package/dist/types/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +6 -0
- package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +3 -1
- package/dist/types/global-account/react/components/ManageAccount/BalanceContent.d.ts +3 -1
- package/dist/types/global-account/react/components/ManageAccount/ManageAccount.d.ts +3 -1
- package/dist/types/global-account/react/components/icons/AppleIcon.d.ts +9 -0
- package/dist/types/global-account/react/components/icons/DiscordIcon.d.ts +9 -0
- package/dist/types/global-account/react/components/icons/FarcasterIcon.d.ts +9 -0
- package/dist/types/global-account/react/components/icons/GoogleIcon.d.ts +8 -0
- package/dist/types/global-account/react/components/icons/XIcon.d.ts +9 -0
- package/dist/types/global-account/react/hooks/useAuthentication.d.ts +1 -2
- package/dist/types/global-account/react/hooks/useProfile.d.ts +1 -1
- package/dist/types/global-account/react/hooks/useRPMToken.d.ts +7 -0
- package/dist/types/global-account/react/stores/useAuthStore.d.ts +2 -4
- package/dist/types/global-account/react/stores/useModalStore.d.ts +11 -1
- package/dist/types/global-account/react/utils/updateAvatar.d.ts +4 -0
- package/package.json +8 -7
- package/src/anyspend/react/components/AnySpend.tsx +7 -6
- package/src/anyspend/react/components/AnyspendDepositHype.tsx +2 -5
- package/src/anyspend/react/components/common/ConnectWalletPayment.tsx +6 -1
- package/src/anyspend/react/components/common/CryptoPaySection.tsx +153 -0
- package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +80 -43
- package/src/anyspend/react/components/common/OrderDetails.tsx +13 -4
- package/src/anyspend/react/components/common/PaySection.tsx +64 -140
- package/src/anyspend/react/components/index.ts +2 -2
- package/src/global-account/bsmnt.ts +47 -0
- package/src/global-account/react/components/AvatarCreator/AvatarCreator.tsx +90 -0
- package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +233 -0
- package/src/global-account/react/components/B3DynamicModal.tsx +27 -2
- package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +40 -18
- package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +63 -35
- package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +106 -78
- package/src/global-account/react/components/SignInWithB3/SignInWithB3.tsx +2 -2
- package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +1 -13
- package/src/global-account/react/components/SignInWithB3/SignInWithB3Privy.tsx +1 -3
- package/src/global-account/react/components/SignInWithB3/steps/LoginStep.tsx +0 -3
- package/src/global-account/react/components/SignInWithB3/steps/LoginStepCustom.tsx +0 -3
- package/src/global-account/react/components/icons/AppleIcon.tsx +33 -0
- package/src/global-account/react/components/icons/DiscordIcon.tsx +32 -0
- package/src/global-account/react/components/icons/FarcasterIcon.tsx +37 -0
- package/src/global-account/react/components/icons/GoogleIcon.tsx +40 -0
- package/src/global-account/react/components/icons/XIcon.tsx +28 -0
- package/src/global-account/react/hooks/useAccountWallet.tsx +3 -2
- package/src/global-account/react/hooks/useAuthentication.ts +18 -15
- package/src/global-account/react/hooks/useProfile.ts +1 -1
- package/src/global-account/react/hooks/useRPMToken.ts +17 -0
- package/src/global-account/react/stores/useAuthStore.ts +4 -8
- package/src/global-account/react/stores/useModalStore.ts +13 -1
- package/src/global-account/react/utils/updateAvatar.ts +21 -0
|
@@ -12,6 +12,7 @@ import { AnySpendDepositHype } from "@b3dotfun/sdk/anyspend/react/components/Any
|
|
|
12
12
|
import { useIsMobile, useModalStore } from "@b3dotfun/sdk/global-account/react";
|
|
13
13
|
import { cn } from "@b3dotfun/sdk/shared/utils/cn";
|
|
14
14
|
import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
|
|
15
|
+
import { AvatarEditor } from "./AvatarEditor/AvatarEditor";
|
|
15
16
|
import { useB3 } from "./B3Provider/useB3";
|
|
16
17
|
import { LinkAccount } from "./LinkAccount/LinkAccount";
|
|
17
18
|
import { ManageAccount } from "./ManageAccount/ManageAccount";
|
|
@@ -40,6 +41,7 @@ export function B3DynamicModal() {
|
|
|
40
41
|
"anySpendSignatureMint",
|
|
41
42
|
"anySpendBondKit",
|
|
42
43
|
"linkAccount",
|
|
44
|
+
"avatarEditor",
|
|
43
45
|
];
|
|
44
46
|
|
|
45
47
|
const freestyleTypes = [
|
|
@@ -65,6 +67,9 @@ export function B3DynamicModal() {
|
|
|
65
67
|
isFreestyleType && "b3-modal-freestyle",
|
|
66
68
|
contentType?.type === "signInWithB3" && "p-0",
|
|
67
69
|
contentType?.type === "anySpend" && "md:px-6",
|
|
70
|
+
// Add specific styles for avatar editor
|
|
71
|
+
// contentType?.type === "avatarEditor_disabled" &&
|
|
72
|
+
// "h-[90dvh] w-[90vw] bg-black p-0 overflow-y-auto overflow-x-hidden max-md:-mt-8 max-md:rounded-t-xl",
|
|
68
73
|
);
|
|
69
74
|
|
|
70
75
|
debug("contentType", contentType);
|
|
@@ -102,6 +107,8 @@ export function B3DynamicModal() {
|
|
|
102
107
|
return <LinkAccount {...contentType} />;
|
|
103
108
|
case "anySpendDepositHype":
|
|
104
109
|
return <AnySpendDepositHype {...contentType} mode="modal" />;
|
|
110
|
+
case "avatarEditor":
|
|
111
|
+
return <AvatarEditor onSetAvatar={contentType.onSuccess} />;
|
|
105
112
|
// Add other modal types here
|
|
106
113
|
default:
|
|
107
114
|
return null;
|
|
@@ -120,8 +127,10 @@ export function B3DynamicModal() {
|
|
|
120
127
|
contentClass,
|
|
121
128
|
"rounded-2xl bg-white shadow-xl dark:bg-gray-900",
|
|
122
129
|
"border border-gray-200 dark:border-gray-800",
|
|
123
|
-
|
|
124
|
-
|
|
130
|
+
// Remove default width classes for avatar editor
|
|
131
|
+
contentType?.type === "avatarEditor"
|
|
132
|
+
? "!w-[90vw] !max-w-none" // Use !important to override default styles
|
|
133
|
+
: "mx-auto w-full max-w-md sm:max-w-lg",
|
|
125
134
|
)}
|
|
126
135
|
hideCloseButton={hideCloseButton}
|
|
127
136
|
>
|
|
@@ -155,6 +164,22 @@ export function B3DynamicModal() {
|
|
|
155
164
|
{renderContent()}
|
|
156
165
|
</div>
|
|
157
166
|
</ModalContent>
|
|
167
|
+
{contentType?.type === "avatarEditor" && (
|
|
168
|
+
<button
|
|
169
|
+
onClick={() => setB3ModalOpen(false)}
|
|
170
|
+
className="fixed right-5 top-5 z-[100] cursor-pointer text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white"
|
|
171
|
+
>
|
|
172
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
173
|
+
<path
|
|
174
|
+
d="M18 6L6 18M6 6L18 18"
|
|
175
|
+
stroke="currentColor"
|
|
176
|
+
strokeWidth="2"
|
|
177
|
+
strokeLinecap="round"
|
|
178
|
+
strokeLinejoin="round"
|
|
179
|
+
/>
|
|
180
|
+
</svg>
|
|
181
|
+
</button>
|
|
182
|
+
)}
|
|
158
183
|
</ModalComponent>
|
|
159
184
|
);
|
|
160
185
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import app from "@b3dotfun/sdk/global-account/app";
|
|
1
2
|
import { ecosystemWalletId } from "@b3dotfun/sdk/shared/constants";
|
|
2
3
|
import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
|
|
3
|
-
import { Loader2 } from "lucide-react";
|
|
4
|
+
import { Loader2, Mail, Phone } from "lucide-react";
|
|
4
5
|
import { useCallback, useEffect, useState } from "react";
|
|
5
6
|
import { toast } from "sonner";
|
|
6
7
|
import { useLinkProfile, useProfiles } from "thirdweb/react";
|
|
@@ -8,8 +9,12 @@ import { preAuthenticate } from "thirdweb/wallets";
|
|
|
8
9
|
import { LinkAccountModalProps, useModalStore } from "../../stores/useModalStore";
|
|
9
10
|
import { getProfileDisplayInfo } from "../../utils/profileDisplay";
|
|
10
11
|
import { useB3 } from "../B3Provider/useB3";
|
|
12
|
+
import { AppleIcon } from "../icons/AppleIcon";
|
|
13
|
+
import { DiscordIcon } from "../icons/DiscordIcon";
|
|
14
|
+
import { FarcasterIcon } from "../icons/FarcasterIcon";
|
|
15
|
+
import { GoogleIcon } from "../icons/GoogleIcon";
|
|
16
|
+
import { XIcon } from "../icons/XIcon";
|
|
11
17
|
import { Button } from "../ui/button";
|
|
12
|
-
import app from "@b3dotfun/sdk/global-account/app";
|
|
13
18
|
type OTPStrategy = "email" | "phone";
|
|
14
19
|
type SocialStrategy = "google" | "x" | "discord" | "apple" | "farcaster";
|
|
15
20
|
type Strategy = OTPStrategy | SocialStrategy;
|
|
@@ -18,17 +23,22 @@ interface AuthMethod {
|
|
|
18
23
|
id: Strategy;
|
|
19
24
|
label: string;
|
|
20
25
|
enabled: boolean;
|
|
21
|
-
icon
|
|
26
|
+
icon: React.ReactNode;
|
|
22
27
|
}
|
|
23
28
|
|
|
24
29
|
const AUTH_METHODS: AuthMethod[] = [
|
|
25
|
-
{ id: "email", label: "Email", enabled: true },
|
|
26
|
-
{ id: "phone", label: "Phone", enabled: true },
|
|
27
|
-
{ id: "google", label: "Google", enabled: true },
|
|
28
|
-
{ id: "x", label: "X (Twitter)", enabled: true },
|
|
29
|
-
{ id: "discord", label: "Discord", enabled: true },
|
|
30
|
-
{ id: "apple", label: "Apple", enabled: true },
|
|
31
|
-
{
|
|
30
|
+
{ id: "email", label: "Email", enabled: true, icon: <Mail className="text-b3-primary-blue size-6" /> },
|
|
31
|
+
{ id: "phone", label: "Phone", enabled: true, icon: <Phone className="text-b3-primary-blue size-6" /> },
|
|
32
|
+
{ id: "google", label: "Google", enabled: true, icon: <GoogleIcon className="size-6" /> },
|
|
33
|
+
{ id: "x", label: "X (Twitter)", enabled: true, icon: <XIcon className="size-6" /> },
|
|
34
|
+
{ id: "discord", label: "Discord", enabled: true, icon: <DiscordIcon className="size-6" /> },
|
|
35
|
+
{ id: "apple", label: "Apple", enabled: true, icon: <AppleIcon className="size-6" /> },
|
|
36
|
+
{
|
|
37
|
+
id: "farcaster",
|
|
38
|
+
label: "Farcaster",
|
|
39
|
+
enabled: true,
|
|
40
|
+
icon: <FarcasterIcon className="size-6" />,
|
|
41
|
+
},
|
|
32
42
|
];
|
|
33
43
|
|
|
34
44
|
export function LinkAccount({
|
|
@@ -37,7 +47,8 @@ export function LinkAccount({
|
|
|
37
47
|
onClose,
|
|
38
48
|
chain,
|
|
39
49
|
partnerId,
|
|
40
|
-
|
|
50
|
+
className,
|
|
51
|
+
}: LinkAccountModalProps & { className?: string }) {
|
|
41
52
|
const { isLinking, linkingMethod, setLinkingState, navigateBack, setB3ModalContentType } = useModalStore();
|
|
42
53
|
const [selectedMethod, setSelectedMethod] = useState<Strategy | null>(null);
|
|
43
54
|
const [email, setEmail] = useState("");
|
|
@@ -288,9 +299,9 @@ export function LinkAccount({
|
|
|
288
299
|
}
|
|
289
300
|
|
|
290
301
|
return (
|
|
291
|
-
<div className=
|
|
292
|
-
<div className="flex items-center justify-between">
|
|
293
|
-
<h2 className="text-b3-grey font-neue-montreal-semibold text-2xl">Link New Account</h2>
|
|
302
|
+
<div className={`b3-link-account space-y-6 p-6 ${className || ""}`} data-testid="link-account">
|
|
303
|
+
<div className="b3-link-account-header flex items-center justify-between">
|
|
304
|
+
<h2 className="b3-link-account-title text-b3-grey font-neue-montreal-semibold text-2xl">Link New Account</h2>
|
|
294
305
|
{selectedMethod && (
|
|
295
306
|
<Button variant="ghost" className="text-b3-grey hover:text-b3-grey/80" onClick={handleBack}>
|
|
296
307
|
Backs
|
|
@@ -299,11 +310,13 @@ export function LinkAccount({
|
|
|
299
310
|
</div>
|
|
300
311
|
|
|
301
312
|
{!selectedMethod ? (
|
|
302
|
-
<div className="grid gap-3">
|
|
313
|
+
<div className="b3-link-account-methods grid gap-3">
|
|
303
314
|
{availableAuthMethods.map(method => (
|
|
304
315
|
<Button
|
|
305
316
|
key={method.id}
|
|
306
|
-
|
|
317
|
+
variant="outline"
|
|
318
|
+
className="b3-link-account-method-button border-b3-line hover:border-b3-primary-blue/30 hover:bg-b3-primary-blue/5 text-b3-grey font-neue-montreal-medium h-14 justify-start bg-transparent px-6 text-base transition-all duration-200"
|
|
319
|
+
data-method={method.id}
|
|
307
320
|
onClick={() => {
|
|
308
321
|
if (method.id === "email" || method.id === "phone") {
|
|
309
322
|
setSelectedMethod(method.id);
|
|
@@ -313,7 +326,16 @@ export function LinkAccount({
|
|
|
313
326
|
}}
|
|
314
327
|
disabled={linkingMethod === method.id}
|
|
315
328
|
>
|
|
316
|
-
{isLinking && linkingMethod === method.id ?
|
|
329
|
+
{isLinking && linkingMethod === method.id ? (
|
|
330
|
+
<Loader2 className="h-5 w-5 animate-spin" />
|
|
331
|
+
) : (
|
|
332
|
+
<div className="b3-link-account-method-content flex items-center gap-4">
|
|
333
|
+
<div className="b3-link-account-method-icon flex items-center justify-center rounded-full">
|
|
334
|
+
{method.icon}
|
|
335
|
+
</div>
|
|
336
|
+
<span className="b3-link-account-method-label font-medium">{method.label}</span>
|
|
337
|
+
</div>
|
|
338
|
+
)}
|
|
317
339
|
</Button>
|
|
318
340
|
))}
|
|
319
341
|
{availableAuthMethods.length === 0 && (
|
|
@@ -323,7 +345,7 @@ export function LinkAccount({
|
|
|
323
345
|
)}
|
|
324
346
|
</div>
|
|
325
347
|
) : (
|
|
326
|
-
<div className="space-y-4">
|
|
348
|
+
<div className="b3-link-account-form space-y-4">
|
|
327
349
|
{selectedMethod === "email" && (
|
|
328
350
|
<div className="space-y-2">
|
|
329
351
|
<label className="text-b3-grey font-neue-montreal-medium text-sm">Email Address</label>
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
Button,
|
|
3
3
|
CopyToClipboard,
|
|
4
4
|
useAuthentication,
|
|
5
|
+
useB3,
|
|
5
6
|
useB3BalanceFromAddresses,
|
|
6
7
|
useModalStore,
|
|
7
8
|
useNativeBalance,
|
|
@@ -11,6 +12,7 @@ import { BankIcon } from "@b3dotfun/sdk/global-account/react/components/icons/Ba
|
|
|
11
12
|
import { SignOutIcon } from "@b3dotfun/sdk/global-account/react/components/icons/SignOutIcon";
|
|
12
13
|
import { SwapIcon } from "@b3dotfun/sdk/global-account/react/components/icons/SwapIcon";
|
|
13
14
|
import { formatUsername } from "@b3dotfun/sdk/shared/utils";
|
|
15
|
+
import { getIpfsUrl } from "@b3dotfun/sdk/shared/utils/ipfs";
|
|
14
16
|
import { Loader2, Pencil } from "lucide-react";
|
|
15
17
|
import { useEffect, useRef, useState } from "react";
|
|
16
18
|
import { useActiveAccount } from "thirdweb/react";
|
|
@@ -22,6 +24,8 @@ import { TokenBalanceRow } from "./TokenBalanceRow";
|
|
|
22
24
|
interface BalanceContentProps {
|
|
23
25
|
onLogout?: () => void;
|
|
24
26
|
partnerId: string;
|
|
27
|
+
showDeposit?: boolean;
|
|
28
|
+
showSwap?: boolean;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
function centerTruncate(str: string, length = 4) {
|
|
@@ -29,19 +33,34 @@ function centerTruncate(str: string, length = 4) {
|
|
|
29
33
|
return `${str.slice(0, length)}...${str.slice(-length)}`;
|
|
30
34
|
}
|
|
31
35
|
|
|
32
|
-
export function BalanceContent({ onLogout, partnerId }: BalanceContentProps) {
|
|
36
|
+
export function BalanceContent({ onLogout, partnerId, showDeposit = true, showSwap = true }: BalanceContentProps) {
|
|
33
37
|
const account = useActiveAccount();
|
|
34
38
|
const { address: eoaAddress, info: eoaInfo } = useFirstEOA();
|
|
35
39
|
const { data: profile } = useProfile({
|
|
36
40
|
address: eoaAddress || account?.address,
|
|
37
41
|
fresh: true,
|
|
38
42
|
});
|
|
39
|
-
const {
|
|
43
|
+
const { user } = useB3();
|
|
44
|
+
const { setB3ModalOpen, setB3ModalContentType, navigateBack } = useModalStore();
|
|
40
45
|
const { logout } = useAuthentication(partnerId);
|
|
41
46
|
const [logoutLoading, setLogoutLoading] = useState(false);
|
|
42
47
|
const [openAccordions, setOpenAccordions] = useState<string[]>([]);
|
|
43
48
|
const hasExpandedRef = useRef(false);
|
|
44
49
|
|
|
50
|
+
const avatarUrl = user?.avatar ? getIpfsUrl(user?.avatar) : profile?.avatar;
|
|
51
|
+
|
|
52
|
+
const handleEditAvatar = () => {
|
|
53
|
+
setB3ModalOpen(true);
|
|
54
|
+
setB3ModalContentType({
|
|
55
|
+
type: "avatarEditor",
|
|
56
|
+
showBackButton: true,
|
|
57
|
+
onSuccess: () => {
|
|
58
|
+
// navigate back on success
|
|
59
|
+
navigateBack();
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
45
64
|
console.log("eoaAddress", eoaAddress);
|
|
46
65
|
console.log("account?.address", account?.address);
|
|
47
66
|
|
|
@@ -98,14 +117,17 @@ export function BalanceContent({ onLogout, partnerId }: BalanceContentProps) {
|
|
|
98
117
|
<div className="flex items-center justify-between">
|
|
99
118
|
<div className="global-account-profile flex items-center gap-4">
|
|
100
119
|
<div className="global-account-profile-avatar relative">
|
|
101
|
-
{
|
|
102
|
-
<img src={
|
|
120
|
+
{avatarUrl ? (
|
|
121
|
+
<img src={avatarUrl} alt="Profile" className="size-24 rounded-full" />
|
|
103
122
|
) : (
|
|
104
123
|
<div className="bg-b3-primary-wash size-24 rounded-full" />
|
|
105
124
|
)}
|
|
106
|
-
<
|
|
125
|
+
<button
|
|
126
|
+
onClick={handleEditAvatar}
|
|
127
|
+
className="bg-b3-grey border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-8 items-center justify-center rounded-full border-4 transition-colors"
|
|
128
|
+
>
|
|
107
129
|
<Pencil size={16} className="text-b3-background" />
|
|
108
|
-
</
|
|
130
|
+
</button>
|
|
109
131
|
</div>
|
|
110
132
|
<div className="global-account-profile-info">
|
|
111
133
|
<h2 className="text-b3-grey text-xl font-semibold">
|
|
@@ -122,35 +144,41 @@ export function BalanceContent({ onLogout, partnerId }: BalanceContentProps) {
|
|
|
122
144
|
</div>
|
|
123
145
|
|
|
124
146
|
{/* Quick Actions */}
|
|
125
|
-
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
147
|
+
{(showDeposit || showSwap) && (
|
|
148
|
+
<div className="grid grid-cols-2 gap-3">
|
|
149
|
+
{showDeposit && (
|
|
150
|
+
<Button
|
|
151
|
+
className="manage-account-deposit bg-b3-primary-wash hover:bg-b3-primary-wash/70 h-[84px] w-full flex-col items-start gap-2 rounded-2xl"
|
|
152
|
+
onClick={() => {
|
|
153
|
+
setB3ModalOpen(true);
|
|
154
|
+
setB3ModalContentType({
|
|
155
|
+
type: "anySpend",
|
|
156
|
+
defaultActiveTab: "fiat",
|
|
157
|
+
showBackButton: true,
|
|
158
|
+
});
|
|
159
|
+
}}
|
|
160
|
+
>
|
|
161
|
+
<BankIcon size={24} className="text-b3-primary-blue shrink-0" />
|
|
162
|
+
<div className="text-b3-grey font-neue-montreal-semibold">Deposit</div>
|
|
163
|
+
</Button>
|
|
164
|
+
)}
|
|
165
|
+
{showSwap && (
|
|
166
|
+
<Button
|
|
167
|
+
className="manage-account-swap bg-b3-primary-wash hover:bg-b3-primary-wash/70 flex h-[84px] w-full flex-col items-start gap-2 rounded-2xl"
|
|
168
|
+
onClick={() => {
|
|
169
|
+
setB3ModalOpen(true);
|
|
170
|
+
setB3ModalContentType({
|
|
171
|
+
type: "anySpend",
|
|
172
|
+
showBackButton: true,
|
|
173
|
+
});
|
|
174
|
+
}}
|
|
175
|
+
>
|
|
176
|
+
<SwapIcon size={24} className="text-b3-primary-blue" />
|
|
177
|
+
<div className="text-b3-grey font-neue-montreal-semibold">Swap</div>
|
|
178
|
+
</Button>
|
|
179
|
+
)}
|
|
180
|
+
</div>
|
|
181
|
+
)}
|
|
154
182
|
|
|
155
183
|
{/* Balance Sections with Accordions */}
|
|
156
184
|
<Accordion type="multiple" value={openAccordions} onValueChange={setOpenAccordions} className="space-y-2">
|