@b3dotfun/sdk 0.0.65-test.5 → 0.0.65-test.6
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 +1 -1
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +2 -1
- package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
- package/dist/cjs/anyspend/react/components/common/OrderDetails.js +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderHistory.js +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderHistoryItem.js +1 -1
- package/dist/cjs/anyspend/react/components/common/PanelOnramp.js +4 -2
- package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
- package/dist/cjs/anyspend/react/hooks/useConnectedWalletDisplay.js +2 -1
- package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +9 -9
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -3
- package/dist/cjs/global-account/react/components/B3DynamicModal.js +2 -1
- package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +1 -1
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +30 -9
- package/dist/cjs/global-account/react/components/ManageAccount/Header.js +1 -1
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +5 -1
- package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +1 -1
- package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -1
- package/dist/cjs/global-account/react/components/ui/Tabs.js +1 -1
- package/dist/cjs/global-account/react/components/ui/dialog.js +1 -1
- package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +1 -0
- package/dist/cjs/global-account/react/utils/profileDisplay.js +1 -1
- package/dist/esm/anyspend/react/components/AnySpend.js +1 -1
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +3 -2
- package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
- package/dist/esm/anyspend/react/components/common/OrderDetails.js +1 -1
- package/dist/esm/anyspend/react/components/common/OrderHistory.js +1 -1
- package/dist/esm/anyspend/react/components/common/OrderHistoryItem.js +1 -1
- package/dist/esm/anyspend/react/components/common/PanelOnramp.js +4 -2
- package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
- package/dist/esm/anyspend/react/hooks/useConnectedWalletDisplay.js +2 -1
- package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +9 -9
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -3
- package/dist/esm/global-account/react/components/B3DynamicModal.js +2 -1
- package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +1 -1
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +31 -10
- package/dist/esm/global-account/react/components/ManageAccount/Header.js +1 -1
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +5 -1
- package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +1 -1
- package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -1
- package/dist/esm/global-account/react/components/ui/Tabs.js +1 -1
- package/dist/esm/global-account/react/components/ui/dialog.js +1 -1
- package/dist/esm/global-account/react/utils/profileDisplay.d.ts +1 -0
- package/dist/esm/global-account/react/utils/profileDisplay.js +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/types/global-account/react/utils/profileDisplay.d.ts +1 -0
- package/package.json +1 -1
- package/src/anyspend/react/components/AnySpend.tsx +1 -1
- package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +7 -2
- package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
- package/src/anyspend/react/components/common/OrderDetails.tsx +4 -1
- package/src/anyspend/react/components/common/OrderHistory.tsx +1 -1
- package/src/anyspend/react/components/common/OrderHistoryItem.tsx +4 -4
- package/src/anyspend/react/components/common/PanelOnramp.tsx +5 -2
- package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
- package/src/anyspend/react/hooks/useConnectedWalletDisplay.ts +2 -1
- package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +20 -20
- package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +4 -4
- package/src/global-account/react/components/B3DynamicModal.tsx +5 -1
- package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +1 -1
- package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +42 -14
- package/src/global-account/react/components/ManageAccount/Header.tsx +1 -1
- package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +7 -1
- package/src/global-account/react/components/SignInWithB3/SignIn.tsx +1 -1
- package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +1 -1
- package/src/global-account/react/components/ui/Tabs.tsx +1 -1
- package/src/global-account/react/components/ui/dialog.tsx +1 -10
- package/src/global-account/react/utils/profileDisplay.ts +2 -1
- package/src/styles/index.css +6 -0
|
@@ -88,7 +88,7 @@ export function RecipientSelection({
|
|
|
88
88
|
const canConfirm = recipientAddress && isAddressValid;
|
|
89
89
|
|
|
90
90
|
return (
|
|
91
|
-
<div className="recipient-selection mx-auto w-[460px] max-w-full
|
|
91
|
+
<div className="recipient-selection mx-auto w-[460px] max-w-full p-5">
|
|
92
92
|
<div className="flex flex-col gap-6">
|
|
93
93
|
{/* Header */}
|
|
94
94
|
<div className="flex justify-around">
|
|
@@ -32,7 +32,8 @@ export function useConnectedWalletDisplay(
|
|
|
32
32
|
|
|
33
33
|
// Determine which wallet to show (prefer connectedEOAWallet if both exist and are the same)
|
|
34
34
|
const shouldShowConnectedEOA = !!connectedEOAWallet;
|
|
35
|
-
|
|
35
|
+
// this is disabled because we don't want to display In-App Wallet as a payment method
|
|
36
|
+
const shouldShowWagmiWallet = false; // wagmiWalletIsConnected && (!isWalletDuplicated || !connectedEOAWallet);
|
|
36
37
|
|
|
37
38
|
// Determine which address to use based on payment method
|
|
38
39
|
let walletAddress: string | undefined;
|
|
@@ -15,6 +15,26 @@ interface GroupedNFTs {
|
|
|
15
15
|
|
|
16
16
|
export function AccountAssets({ nfts, isLoading }: AccountAssetsProps) {
|
|
17
17
|
// Initialize with all collections expanded
|
|
18
|
+
// Group NFTs by collection
|
|
19
|
+
const groupedNFTs = nfts?.nfts?.reduce(
|
|
20
|
+
(acc, nft) => {
|
|
21
|
+
const collectionId = nft.collection?.collection_id || "unknown";
|
|
22
|
+
if (!acc[collectionId]) {
|
|
23
|
+
acc[collectionId] = {
|
|
24
|
+
collection_id: collectionId,
|
|
25
|
+
collection_name: nft.collection?.name || "Unknown Collection",
|
|
26
|
+
collection_image: nft.collection?.image_url || nft.previews?.image_small_url || "",
|
|
27
|
+
nfts: [],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
acc[collectionId].nfts.push(nft);
|
|
31
|
+
return acc;
|
|
32
|
+
},
|
|
33
|
+
{} as Record<string, GroupedNFTs>,
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const collections = Object.values(groupedNFTs || {});
|
|
37
|
+
|
|
18
38
|
const [expandedCollections, setExpandedCollections] = useState<Set<string>>(
|
|
19
39
|
() => new Set(collections.map(c => c.collection_id)),
|
|
20
40
|
);
|
|
@@ -39,26 +59,6 @@ export function AccountAssets({ nfts, isLoading }: AccountAssetsProps) {
|
|
|
39
59
|
return <div className="text-b3-react-muted-foreground py-8 text-center">No NFTs found</div>;
|
|
40
60
|
}
|
|
41
61
|
|
|
42
|
-
// Group NFTs by collection
|
|
43
|
-
const groupedNFTs = nfts.nfts.reduce(
|
|
44
|
-
(acc, nft) => {
|
|
45
|
-
const collectionId = nft.collection?.collection_id || "unknown";
|
|
46
|
-
if (!acc[collectionId]) {
|
|
47
|
-
acc[collectionId] = {
|
|
48
|
-
collection_id: collectionId,
|
|
49
|
-
collection_name: nft.collection?.name || "Unknown Collection",
|
|
50
|
-
collection_image: nft.collection?.image_url || nft.previews?.image_small_url || "",
|
|
51
|
-
nfts: [],
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
acc[collectionId].nfts.push(nft);
|
|
55
|
-
return acc;
|
|
56
|
-
},
|
|
57
|
-
{} as Record<string, GroupedNFTs>,
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
const collections = Object.values(groupedNFTs);
|
|
61
|
-
|
|
62
62
|
const toggleCollection = (collectionId: string) => {
|
|
63
63
|
setExpandedCollections(prev => {
|
|
64
64
|
const next = new Set(prev);
|
|
@@ -359,7 +359,7 @@ export function AvatarEditor({ onSetAvatar, className }: AvatarEditorProps) {
|
|
|
359
359
|
.filter(p => p.avatar !== null) || []; // Filter out profiles with invalid avatars
|
|
360
360
|
|
|
361
361
|
return (
|
|
362
|
-
<div className={cn("flex w-full max-w-md flex-col bg-white", className)}>
|
|
362
|
+
<div className={cn("b3-modal-avatar-editor flex w-full max-w-md flex-col bg-white", className)}>
|
|
363
363
|
{/* Header */}
|
|
364
364
|
{viewStep === "upload" && <ModalHeader title="Upload Image" />}
|
|
365
365
|
|
|
@@ -449,7 +449,7 @@ export function AvatarEditor({ onSetAvatar, className }: AvatarEditorProps) {
|
|
|
449
449
|
{/* Link More Account */}
|
|
450
450
|
<button
|
|
451
451
|
onClick={handleLinkMoreAccount}
|
|
452
|
-
className="font-inter flex items-center gap-2 text-sm font-semibold text-[#3368ef] hover:underline"
|
|
452
|
+
className="b3-modal-link-more-account font-inter flex items-center gap-2 text-sm font-semibold text-[#3368ef] hover:underline"
|
|
453
453
|
>
|
|
454
454
|
<svg
|
|
455
455
|
width="16"
|
|
@@ -479,7 +479,7 @@ export function AvatarEditor({ onSetAvatar, className }: AvatarEditorProps) {
|
|
|
479
479
|
onDragOver={handleDragOver}
|
|
480
480
|
onDrop={handleDrop}
|
|
481
481
|
className={cn(
|
|
482
|
-
"mb-6 flex w-full cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-16 transition-colors",
|
|
482
|
+
"b3-modal-upload-view mb-6 flex w-full cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-16 transition-colors",
|
|
483
483
|
isDragging
|
|
484
484
|
? "border-[#3368ef] bg-[#f0f5ff]"
|
|
485
485
|
: "border-[#e4e4e7] hover:border-[#3368ef] hover:bg-[#f0f5ff]",
|
|
@@ -565,7 +565,7 @@ export function AvatarEditor({ onSetAvatar, className }: AvatarEditorProps) {
|
|
|
565
565
|
<Button
|
|
566
566
|
onClick={handleSaveChanges}
|
|
567
567
|
disabled={isLoading || (!selectedFile && !selectedProfileType)}
|
|
568
|
-
className="flex-1 rounded-xl bg-[#3368ef] text-white hover:bg-[#2952cc]"
|
|
568
|
+
className="b3-modal-save-button flex-1 rounded-xl bg-[#3368ef] text-white hover:bg-[#2952cc]"
|
|
569
569
|
>
|
|
570
570
|
{isLoading ? (
|
|
571
571
|
<>
|
|
@@ -90,6 +90,7 @@ export function B3DynamicModal() {
|
|
|
90
90
|
|
|
91
91
|
// Check if current content type is in freestyle types
|
|
92
92
|
const isFreestyleType = freestyleTypes.includes(contentType?.type as string);
|
|
93
|
+
console.log("contentType :", contentType);
|
|
93
94
|
const hideCloseButton = true;
|
|
94
95
|
|
|
95
96
|
// Build content class using cn utility
|
|
@@ -100,7 +101,10 @@ export function B3DynamicModal() {
|
|
|
100
101
|
fullWidthTypes.includes(contentType?.type as string) && "w-full",
|
|
101
102
|
isFreestyleType && "b3-modal-freestyle",
|
|
102
103
|
contentType?.type === "signInWithB3" && "p-0",
|
|
103
|
-
contentType?.type === "anySpend" && "md:
|
|
104
|
+
contentType?.type === "anySpend" && "md:p-0",
|
|
105
|
+
contentType?.type === "send" && "p-0",
|
|
106
|
+
contentType?.type === "manageAccount" && " md:p-0 md:pt-2",
|
|
107
|
+
contentType?.type === "linkAccount" && "md:p-0",
|
|
104
108
|
// Add specific styles for avatar editor
|
|
105
109
|
// contentType?.type === "avatarEditor_disabled" &&
|
|
106
110
|
// "h-[90dvh] w-[90vw] bg-black p-0 overflow-y-auto overflow-x-hidden max-md:-mt-8 max-md:rounded-t-xl",
|
|
@@ -59,7 +59,7 @@ export function IPFSMediaRenderer({
|
|
|
59
59
|
if (!src) {
|
|
60
60
|
return (
|
|
61
61
|
<div className={className} style={style} aria-label={alt}>
|
|
62
|
-
<div className="bg-b3-primary-wash flex h-full w-full items-center justify-center">
|
|
62
|
+
<div className="bg-b3-primary-wash flex h-full w-full items-center justify-center rounded-full">
|
|
63
63
|
<span className="text-b3-grey font-neue-montreal-semibold text-xs">{alt.charAt(0).toUpperCase()}</span>
|
|
64
64
|
</div>
|
|
65
65
|
</div>
|
|
@@ -3,7 +3,7 @@ import { Button, ManageAccountModalProps, useB3, useModalStore, useQueryB3 } fro
|
|
|
3
3
|
import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
|
|
4
4
|
import { truncateAddress } from "@b3dotfun/sdk/shared/utils/truncateAddress";
|
|
5
5
|
import { Copy, Loader2, Pencil, UnlinkIcon } from "lucide-react";
|
|
6
|
-
import { useRef, useState } from "react";
|
|
6
|
+
import { useEffect, useRef, useState } from "react";
|
|
7
7
|
import { toast } from "sonner";
|
|
8
8
|
import { useProfiles, useUnlinkProfile } from "thirdweb/react";
|
|
9
9
|
|
|
@@ -41,6 +41,7 @@ export const LinkAccount = ({
|
|
|
41
41
|
chain: Chain;
|
|
42
42
|
}) => {
|
|
43
43
|
const [unlinkingAccountId, setUnlinkingAccountId] = useState<string | null>(null);
|
|
44
|
+
const [profileToUnlink, setProfileToUnlink] = useState<any>(null);
|
|
44
45
|
const { data: profilesRaw = [], isLoading: isLoadingProfiles } = useProfiles({ client });
|
|
45
46
|
const { mutate: unlinkProfile, isPending: isUnlinking } = useUnlinkProfile();
|
|
46
47
|
const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
|
|
@@ -115,15 +116,33 @@ export const LinkAccount = ({
|
|
|
115
116
|
...getProfileDisplayInfo(profile),
|
|
116
117
|
originalProfile: profile,
|
|
117
118
|
}));
|
|
119
|
+
console.log("profiles :", profiles);
|
|
118
120
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
121
|
+
// Reset confirmation state after 3 seconds
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
if (profileToUnlink) {
|
|
124
|
+
const timer = setTimeout(() => {
|
|
125
|
+
setProfileToUnlink(null);
|
|
126
|
+
}, 5000);
|
|
127
|
+
return () => clearTimeout(timer);
|
|
128
|
+
}
|
|
129
|
+
}, [profileToUnlink]);
|
|
130
|
+
|
|
131
|
+
const handleUnlinkClick = (profile: any) => {
|
|
132
|
+
// If this profile is already pending confirmation, perform the unlink
|
|
133
|
+
if (profileToUnlink?.title === profile.title) {
|
|
134
|
+
setUnlinkingAccountId(profile.title);
|
|
135
|
+
try {
|
|
136
|
+
unlinkProfile({ client, profileToUnlink: profile.originalProfile }, mutationOptions);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
console.error("Error unlinking account:", error);
|
|
139
|
+
} finally {
|
|
140
|
+
setUnlinkingAccountId(null);
|
|
141
|
+
setProfileToUnlink(null);
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
// First click - set pending confirmation
|
|
145
|
+
setProfileToUnlink(profile);
|
|
127
146
|
}
|
|
128
147
|
};
|
|
129
148
|
|
|
@@ -225,13 +244,22 @@ export const LinkAccount = ({
|
|
|
225
244
|
</div>
|
|
226
245
|
<Button
|
|
227
246
|
variant="ghost"
|
|
228
|
-
size="icon"
|
|
229
|
-
className=
|
|
230
|
-
|
|
247
|
+
size={profileToUnlink?.title === profile.title ? "sm" : "icon"}
|
|
248
|
+
className={`linked-account-unlink-button transition-all ${
|
|
249
|
+
profileToUnlink?.title === profile.title
|
|
250
|
+
? "bg-b3-negative hover:bg-b3-negative/90 text-white"
|
|
251
|
+
: "text-b3-grey hover:text-b3-negative"
|
|
252
|
+
}`}
|
|
253
|
+
onClick={() => handleUnlinkClick(profile)}
|
|
231
254
|
disabled={unlinkingAccountId === profile.title || isUnlinking}
|
|
232
255
|
>
|
|
233
256
|
{unlinkingAccountId === profile.title || isUnlinking ? (
|
|
234
|
-
<Loader2 className="linked-account-unlink-loading animate-spin" />
|
|
257
|
+
<Loader2 className="linked-account-unlink-loading h-4 w-4 animate-spin" />
|
|
258
|
+
) : profileToUnlink?.title === profile.title ? (
|
|
259
|
+
<div className="flex items-center gap-1.5">
|
|
260
|
+
<UnlinkIcon size={14} className="linked-account-unlink-icon" />
|
|
261
|
+
<span className="text-xs font-semibold">Unlink</span>
|
|
262
|
+
</div>
|
|
235
263
|
) : (
|
|
236
264
|
<UnlinkIcon size={16} className="linked-account-unlink-icon" />
|
|
237
265
|
)}
|
|
@@ -240,7 +268,7 @@ export const LinkAccount = ({
|
|
|
240
268
|
))}
|
|
241
269
|
</div>
|
|
242
270
|
) : (
|
|
243
|
-
<div className="linked-accounts-empty text-b3-foreground-muted py-8 text-center">
|
|
271
|
+
<div className="linked-accounts-empty font-neue-montreal-medium text-b3-foreground-muted py-8 text-center">
|
|
244
272
|
No linked accounts found
|
|
245
273
|
</div>
|
|
246
274
|
)}
|
|
@@ -157,7 +157,7 @@ export function Header({ onLogout }: { onLogout?: () => void }) {
|
|
|
157
157
|
)}
|
|
158
158
|
</div>
|
|
159
159
|
<div className="flex flex-col gap-0.5">
|
|
160
|
-
<p className="text-b3-grey font-neue-montreal-semibold text-sm">Active Wallet</p>
|
|
160
|
+
<p className="text-b3-grey font-neue-montreal-semibold text-left text-sm">Active Wallet</p>
|
|
161
161
|
<div className="flex items-center gap-1">
|
|
162
162
|
<p className="text-b3-foreground-muted font-neue-montreal-medium text-sm">
|
|
163
163
|
{centerTruncate(address, 4)}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { useModalStore } from "@b3dotfun/sdk/global-account/react";
|
|
2
|
+
import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
|
|
2
3
|
import { Chain } from "thirdweb";
|
|
4
|
+
import { useProfiles } from "thirdweb/react";
|
|
3
5
|
import LinkIcon from "../icons/LinkIcon";
|
|
4
6
|
import ModalHeader from "../ModalHeader/ModalHeader";
|
|
5
7
|
import SettingsMenuItem from "./SettingsMenuItem";
|
|
@@ -17,6 +19,10 @@ const SettingsContent = ({
|
|
|
17
19
|
const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
|
|
18
20
|
const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
|
|
19
21
|
|
|
22
|
+
const { data: profilesRaw = [] } = useProfiles({ client });
|
|
23
|
+
|
|
24
|
+
const profiles = profilesRaw.filter((profile: any) => !["custom_auth_endpoint"].includes(profile.type));
|
|
25
|
+
|
|
20
26
|
const handleNavigate = (type: "home" | "swap" | "linkAccount" | "avatarEditor") => {
|
|
21
27
|
if (type === "home") {
|
|
22
28
|
setB3ModalContentType({
|
|
@@ -64,7 +70,7 @@ const SettingsContent = ({
|
|
|
64
70
|
<SettingsMenuItem
|
|
65
71
|
icon={<LinkIcon className="text-b3-grey-500" />}
|
|
66
72
|
title="Linked Accounts"
|
|
67
|
-
subtitle=
|
|
73
|
+
subtitle={`${profiles.length} connected account${profiles.length > 1 ? "s" : ""}`}
|
|
68
74
|
onClick={() => handleNavigate("linkAccount")}
|
|
69
75
|
/>
|
|
70
76
|
{/* <SettingsMenuItem
|
|
@@ -124,7 +124,7 @@ export function SignIn(props: SignInWithB3Props) {
|
|
|
124
124
|
<div className="ml-4 grow">
|
|
125
125
|
{ensName && <div>{ensName}</div>}
|
|
126
126
|
<div>{truncateAddress(globalAddress)}</div>
|
|
127
|
-
<div>{walletInfo?.name}</div>
|
|
127
|
+
{/* <div>{walletInfo?.name}</div> */}
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
130
130
|
{isActiveEOAWallet && <Icon className="fill-b3-react-primary" name="check" />}
|
|
@@ -217,7 +217,7 @@ export function SignInWithB3Flow({
|
|
|
217
217
|
if (isAuthenticating || (isFetchingSigners && step === "login") || source === "requestPermissions") {
|
|
218
218
|
return (
|
|
219
219
|
<LoginStepContainer partnerId={partnerId}>
|
|
220
|
-
<div className="
|
|
220
|
+
<div className="my-8 flex min-h-[350px] items-center justify-center">
|
|
221
221
|
<Loading variant="white" size="lg" />
|
|
222
222
|
</div>
|
|
223
223
|
</LoginStepContainer>
|
|
@@ -25,7 +25,7 @@ export function TabTrigger({ className, ...props }: React.ComponentProps<typeof
|
|
|
25
25
|
className={cn(
|
|
26
26
|
"text-md inline-flex h-full items-center justify-center whitespace-nowrap px-3 font-semibold transition-all",
|
|
27
27
|
"focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
|
|
28
|
-
"data-[state=active]:
|
|
28
|
+
"data-[state=active]:font-bold data-[state=active]:text-[#0B57C2]",
|
|
29
29
|
"hover:text-b3-react-foreground data-[state=inactive]:text-b3-react-muted-foreground",
|
|
30
30
|
"flex-1",
|
|
31
31
|
className,
|
|
@@ -76,16 +76,7 @@ const DialogContent: React.ForwardRefExoticComponent<DialogContentProps & React.
|
|
|
76
76
|
</div>
|
|
77
77
|
{/* Global Account Footer */}
|
|
78
78
|
<div className="b3-modal-ga-branding flex items-center justify-center gap-1.5 pt-[10px]">
|
|
79
|
-
<
|
|
80
|
-
<path
|
|
81
|
-
d="M2 4.66667C2 3.19391 3.19391 2 4.66667 2H11.3333C12.8061 2 14 3.19391 14 4.66667V11.3333C14 12.8061 12.8061 14 11.3333 14H4.66667C3.19391 14 2 12.8061 2 11.3333V4.66667Z"
|
|
82
|
-
fill="#0B57C2"
|
|
83
|
-
/>
|
|
84
|
-
<path
|
|
85
|
-
d="M5.33333 6C5.33333 5.63181 5.63181 5.33333 6 5.33333H10C10.3682 5.33333 10.6667 5.63181 10.6667 6V10C10.6667 10.3682 10.3682 10.6667 10 10.6667H6C5.63181 10.6667 5.33333 10.3682 5.33333 10V6Z"
|
|
86
|
-
fill="white"
|
|
87
|
-
/>
|
|
88
|
-
</svg>
|
|
79
|
+
<img src="https://cdn.b3.fun/b3_logo.svg" alt="B3" className="h-4 w-4" />
|
|
89
80
|
<span className="font-neue-montreal-semibold text-xs uppercase leading-none tracking-[0.72px] text-[#0B57C2]">
|
|
90
81
|
Global Account
|
|
91
82
|
</span>
|
|
@@ -64,6 +64,7 @@ export function validateImageUrl(url: string | null | undefined): string | null
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
export interface ExtendedProfileDetails {
|
|
67
|
+
fid?: string;
|
|
67
68
|
id?: string;
|
|
68
69
|
email?: string;
|
|
69
70
|
phone?: string;
|
|
@@ -112,7 +113,7 @@ export function getProfileDisplayInfo(profile: ExtendedProfile): ProfileDisplayI
|
|
|
112
113
|
break;
|
|
113
114
|
case "farcaster":
|
|
114
115
|
displayInfo = {
|
|
115
|
-
title: details.name || details.username || "Unknown",
|
|
116
|
+
title: details.name || details.username || "FID:" + details?.fid || "Unknown",
|
|
116
117
|
subtitle: details.username ? `@${details.username}` : "Farcaster Account",
|
|
117
118
|
imageUrl: validateImageUrl(details.pfpUrl || details.profileImageUrl),
|
|
118
119
|
initial: "F",
|
package/src/styles/index.css
CHANGED
|
@@ -390,6 +390,8 @@ Dark version
|
|
|
390
390
|
}
|
|
391
391
|
|
|
392
392
|
.b3-login-step {
|
|
393
|
+
padding-bottom: 10px;
|
|
394
|
+
|
|
393
395
|
& > div > div > div > div > div > div > div > img {
|
|
394
396
|
display: none;
|
|
395
397
|
}
|
|
@@ -662,3 +664,7 @@ Dark version
|
|
|
662
664
|
.animate-accordion-up {
|
|
663
665
|
animation: accordion-up 0.2s ease-out;
|
|
664
666
|
}
|
|
667
|
+
|
|
668
|
+
.tw-header {
|
|
669
|
+
display: none !important; /* Hide the TW "BSMNT" header */
|
|
670
|
+
}
|