@b3dotfun/sdk 0.0.65-test.5 → 0.0.66
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 +69 -97
- package/dist/cjs/anyspend/react/components/AnySpendCustom.js +23 -10
- package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
- package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +45 -14
- package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
- package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.js +41 -0
- package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
- package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +14 -251
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +3 -5
- package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
- package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
- package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderHistory.js +3 -7
- package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +2 -10
- package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
- package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
- package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
- package/dist/cjs/anyspend/react/components/index.d.ts +1 -0
- package/dist/cjs/anyspend/react/components/index.js +4 -1
- package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
- package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +16 -10
- package/dist/cjs/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
- package/dist/cjs/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.js +13 -9
- package/dist/cjs/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
- package/dist/cjs/anyspend/react/hooks/useCryptoPaymentMethodState.js +51 -0
- package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
- package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +35 -251
- package/dist/cjs/global-account/react/components/B3DynamicModal.js +15 -23
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +279 -113
- package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +5 -6
- package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +193 -24
- package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
- package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.js +141 -0
- package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +1 -3
- package/dist/cjs/global-account/react/components/index.d.ts +4 -5
- package/dist/cjs/global-account/react/components/index.js +9 -14
- package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
- package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
- package/dist/cjs/global-account/react/components/ui/drawer.js +1 -1
- package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
- package/dist/cjs/global-account/react/hooks/index.js +1 -3
- package/dist/cjs/global-account/react/hooks/useAccountWallet.d.ts +0 -1
- package/dist/cjs/global-account/react/hooks/useAccountWallet.js +0 -18
- package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
- package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +6 -14
- package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +2 -2
- package/dist/cjs/global-account/react/stores/index.d.ts +0 -1
- package/dist/cjs/global-account/react/stores/index.js +1 -3
- package/dist/cjs/global-account/react/stores/useModalStore.d.ts +26 -31
- package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +0 -2
- package/dist/cjs/global-account/react/utils/profileDisplay.js +2 -2
- package/dist/cjs/shared/constants/chains/supported.d.ts +3 -3
- package/dist/cjs/shared/utils/ipfs.js +3 -10
- package/dist/esm/anyspend/react/components/AnySpend.js +70 -98
- package/dist/esm/anyspend/react/components/AnySpendCustom.js +23 -10
- package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
- package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +45 -14
- package/dist/esm/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
- package/dist/esm/anyspend/react/components/AnySpendDepositUpside.js +38 -0
- package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
- package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +15 -249
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +3 -5
- package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
- package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
- package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/esm/anyspend/react/components/common/OrderHistory.js +5 -6
- package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +2 -10
- package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
- package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
- package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
- package/dist/esm/anyspend/react/components/index.d.ts +1 -0
- package/dist/esm/anyspend/react/components/index.js +1 -0
- package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
- package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +16 -10
- package/dist/esm/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
- package/dist/esm/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.js +13 -9
- package/dist/esm/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
- package/dist/esm/anyspend/react/hooks/useCryptoPaymentMethodState.js +48 -0
- package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
- package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +38 -254
- package/dist/esm/global-account/react/components/B3DynamicModal.js +15 -23
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +280 -113
- package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +5 -6
- package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +195 -26
- package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
- package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.js +135 -0
- package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +2 -4
- package/dist/esm/global-account/react/components/index.d.ts +4 -5
- package/dist/esm/global-account/react/components/index.js +5 -9
- package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
- package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
- package/dist/esm/global-account/react/components/ui/drawer.js +1 -1
- package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
- package/dist/esm/global-account/react/hooks/index.js +1 -1
- package/dist/esm/global-account/react/hooks/useAccountWallet.d.ts +0 -1
- package/dist/esm/global-account/react/hooks/useAccountWallet.js +0 -17
- package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
- package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +6 -14
- package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +2 -2
- package/dist/esm/global-account/react/stores/index.d.ts +0 -1
- package/dist/esm/global-account/react/stores/index.js +0 -1
- package/dist/esm/global-account/react/stores/useModalStore.d.ts +26 -31
- package/dist/esm/global-account/react/utils/profileDisplay.d.ts +0 -2
- package/dist/esm/global-account/react/utils/profileDisplay.js +2 -2
- package/dist/esm/shared/constants/chains/supported.d.ts +3 -3
- package/dist/esm/shared/utils/ipfs.js +3 -10
- package/dist/styles/index.css +1 -1
- package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
- package/dist/types/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
- package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
- package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
- package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/types/anyspend/react/components/index.d.ts +1 -0
- package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
- package/dist/types/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
- package/dist/types/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
- package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
- package/dist/types/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
- package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
- package/dist/types/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
- package/dist/types/global-account/react/components/index.d.ts +4 -5
- package/dist/types/global-account/react/hooks/index.d.ts +1 -1
- package/dist/types/global-account/react/hooks/useAccountWallet.d.ts +0 -1
- package/dist/types/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/types/global-account/react/hooks/useUserQuery.d.ts +2 -2
- package/dist/types/global-account/react/stores/index.d.ts +0 -1
- package/dist/types/global-account/react/stores/useModalStore.d.ts +26 -31
- package/dist/types/global-account/react/utils/profileDisplay.d.ts +0 -2
- package/dist/types/shared/constants/chains/supported.d.ts +3 -3
- package/package.json +1 -2
- package/src/anyspend/react/components/AnySpend.tsx +218 -256
- package/src/anyspend/react/components/AnySpendCustom.tsx +31 -16
- package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +56 -13
- package/src/anyspend/react/components/AnySpendDepositUpside.tsx +81 -0
- package/src/anyspend/react/components/AnyspendDepositHype.tsx +36 -524
- package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +14 -7
- package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
- package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
- package/src/anyspend/react/components/common/OrderHistory.tsx +13 -8
- package/src/anyspend/react/components/common/OrderTokenAmount.tsx +2 -13
- package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +1 -1
- package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
- package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
- package/src/anyspend/react/components/index.ts +1 -0
- package/src/anyspend/react/hooks/useAnyspendFlow.ts +24 -12
- package/src/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.ts +20 -12
- package/src/anyspend/react/hooks/useCryptoPaymentMethodState.ts +71 -0
- package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +25 -115
- package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +128 -477
- package/src/global-account/react/components/B3DynamicModal.tsx +17 -28
- package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +433 -332
- package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +10 -6
- package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +589 -73
- package/src/global-account/react/components/ProfileEditor/ProfileEditor.tsx +265 -0
- package/src/global-account/react/components/SignInWithB3/SignIn.tsx +7 -11
- package/src/global-account/react/components/index.ts +5 -11
- package/src/global-account/react/components/ui/Tabs.tsx +13 -5
- package/src/global-account/react/components/ui/dialog.tsx +14 -32
- package/src/global-account/react/components/ui/drawer.tsx +1 -1
- package/src/global-account/react/hooks/index.ts +0 -3
- package/src/global-account/react/hooks/useAccountWallet.tsx +0 -26
- package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +0 -1
- package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +6 -12
- package/src/global-account/react/stores/index.ts +0 -1
- package/src/global-account/react/stores/useModalStore.ts +28 -35
- package/src/global-account/react/utils/profileDisplay.ts +2 -4
- package/src/shared/utils/ipfs.ts +3 -10
- package/src/styles/index.css +9 -6
- package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +0 -1
- package/dist/cjs/global-account/react/components/Deposit/Deposit.js +0 -65
- package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
- package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +0 -37
- package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
- package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -331
- package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
- package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +0 -34
- package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
- package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +0 -23
- package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +0 -3
- package/dist/cjs/global-account/react/components/ManageAccount/Header.js +0 -120
- package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
- package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +0 -43
- package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
- package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +0 -16
- package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
- package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +0 -15
- package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
- package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +0 -47
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +0 -50
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -8
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -106
- package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
- package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +0 -22
- package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
- package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +0 -12
- package/dist/cjs/global-account/react/components/Send/Send.d.ts +0 -5
- package/dist/cjs/global-account/react/components/Send/Send.js +0 -187
- package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +0 -3
- package/dist/cjs/global-account/react/components/icons/BellIcon.js +0 -5
- package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
- package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +0 -7
- package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +0 -2
- package/dist/cjs/global-account/react/components/icons/CopyIcon.js +0 -7
- package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +0 -3
- package/dist/cjs/global-account/react/components/icons/LinkIcon.js +0 -5
- package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +0 -3
- package/dist/cjs/global-account/react/components/icons/LockIcon.js +0 -5
- package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +0 -2
- package/dist/cjs/global-account/react/components/icons/WalletIcon.js +0 -7
- package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
- package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +0 -36
- package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +0 -1
- package/dist/esm/global-account/react/components/Deposit/Deposit.js +0 -59
- package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
- package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +0 -34
- package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
- package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -325
- package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
- package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +0 -32
- package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
- package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +0 -21
- package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +0 -3
- package/dist/esm/global-account/react/components/ManageAccount/Header.js +0 -81
- package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
- package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +0 -41
- package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
- package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +0 -10
- package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
- package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +0 -13
- package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
- package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +0 -45
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +0 -45
- package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
- package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -6
- package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
- package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -101
- package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
- package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +0 -20
- package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
- package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +0 -10
- package/dist/esm/global-account/react/components/Send/Send.d.ts +0 -5
- package/dist/esm/global-account/react/components/Send/Send.js +0 -181
- package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +0 -3
- package/dist/esm/global-account/react/components/icons/BellIcon.js +0 -3
- package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
- package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +0 -4
- package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +0 -2
- package/dist/esm/global-account/react/components/icons/CopyIcon.js +0 -4
- package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +0 -3
- package/dist/esm/global-account/react/components/icons/LinkIcon.js +0 -3
- package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +0 -3
- package/dist/esm/global-account/react/components/icons/LockIcon.js +0 -3
- package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +0 -2
- package/dist/esm/global-account/react/components/icons/WalletIcon.js +0 -4
- package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
- package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +0 -33
- package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +0 -1
- package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
- package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
- package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
- package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
- package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +0 -3
- package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
- package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
- package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
- package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
- package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
- package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
- package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
- package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
- package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
- package/dist/types/global-account/react/components/Send/Send.d.ts +0 -5
- package/dist/types/global-account/react/components/icons/BellIcon.d.ts +0 -3
- package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
- package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +0 -2
- package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +0 -3
- package/dist/types/global-account/react/components/icons/LockIcon.d.ts +0 -3
- package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +0 -2
- package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
- package/src/global-account/react/components/Deposit/Deposit.tsx +0 -211
- package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +0 -84
- package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +0 -490
- package/src/global-account/react/components/ManageAccount/AppsContent.tsx +0 -79
- package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +0 -83
- package/src/global-account/react/components/ManageAccount/Header.tsx +0 -230
- package/src/global-account/react/components/ManageAccount/HomeActions.tsx +0 -118
- package/src/global-account/react/components/ManageAccount/HomeContent.tsx +0 -42
- package/src/global-account/react/components/ManageAccount/NFTContent.tsx +0 -24
- package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +0 -79
- package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +0 -87
- package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +0 -31
- package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +0 -182
- package/src/global-account/react/components/ManageAccount/TokenContent.tsx +0 -41
- package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +0 -61
- package/src/global-account/react/components/Send/Send.tsx +0 -585
- package/src/global-account/react/components/icons/BellIcon.tsx +0 -15
- package/src/global-account/react/components/icons/ChevronDownIcon.tsx +0 -17
- package/src/global-account/react/components/icons/CopyIcon.tsx +0 -22
- package/src/global-account/react/components/icons/LinkIcon.tsx +0 -15
- package/src/global-account/react/components/icons/LockIcon.tsx +0 -15
- package/src/global-account/react/components/icons/WalletIcon.tsx +0 -21
- package/src/global-account/react/stores/useRecentAddressesStore.ts +0 -55
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Users } from "@b3dotfun/b3-api";
|
|
4
|
+
import app from "@b3dotfun/sdk/global-account/app";
|
|
5
|
+
import { Button, useB3, useProfile } from "@b3dotfun/sdk/global-account/react";
|
|
6
|
+
import { validateImageUrl } from "@b3dotfun/sdk/global-account/react/utils/profileDisplay";
|
|
7
|
+
import { cn } from "@b3dotfun/sdk/shared/utils/cn";
|
|
8
|
+
import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
|
|
9
|
+
import { getIpfsUrl } from "@b3dotfun/sdk/shared/utils/ipfs";
|
|
10
|
+
import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
|
|
11
|
+
import { Check, Loader2, Upload, X } from "lucide-react";
|
|
12
|
+
import { useRef, useState } from "react";
|
|
13
|
+
import { toast } from "sonner";
|
|
14
|
+
import { useActiveAccount } from "thirdweb/react";
|
|
15
|
+
import { upload } from "thirdweb/storage";
|
|
16
|
+
|
|
17
|
+
const debug = debugB3React("ProfileEditor");
|
|
18
|
+
|
|
19
|
+
interface ProfileEditorProps {
|
|
20
|
+
onSuccess?: () => void;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function ProfileEditor({ onSuccess, className }: ProfileEditorProps) {
|
|
25
|
+
const [selectedFile, setSelectedFile] = useState<File | null>(null);
|
|
26
|
+
const [previewUrl, setPreviewUrl] = useState<string | null>(null);
|
|
27
|
+
const [username, setUsername] = useState<string>("");
|
|
28
|
+
const [isUploading, setIsUploading] = useState(false);
|
|
29
|
+
const [isSaving, setIsSaving] = useState(false);
|
|
30
|
+
const fileInputRef = useRef<HTMLInputElement>(null);
|
|
31
|
+
const { user, setUser } = useB3();
|
|
32
|
+
|
|
33
|
+
const account = useActiveAccount();
|
|
34
|
+
const { data: profile, refetch: refreshProfile } = useProfile({
|
|
35
|
+
address: account?.address,
|
|
36
|
+
fresh: true,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const rawAvatarUrl = user?.avatar ? getIpfsUrl(user?.avatar) : profile?.avatar;
|
|
40
|
+
const avatarUrl = validateImageUrl(rawAvatarUrl);
|
|
41
|
+
const safePreviewUrl = validateImageUrl(previewUrl);
|
|
42
|
+
const hasAvatar = !!avatarUrl;
|
|
43
|
+
const currentUsername = user?.username || "";
|
|
44
|
+
|
|
45
|
+
const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
46
|
+
const file = event.target.files?.[0];
|
|
47
|
+
if (file) {
|
|
48
|
+
// Validate file type
|
|
49
|
+
if (!file.type.startsWith("image/")) {
|
|
50
|
+
toast.error("Please select an image file");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Validate file size (max 5MB)
|
|
55
|
+
if (file.size > 5 * 1024 * 1024) {
|
|
56
|
+
toast.error("File size must be less than 5MB");
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
setSelectedFile(file);
|
|
61
|
+
|
|
62
|
+
// Create preview URL
|
|
63
|
+
const url = URL.createObjectURL(file);
|
|
64
|
+
setPreviewUrl(url);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const handleRemoveFile = () => {
|
|
69
|
+
setSelectedFile(null);
|
|
70
|
+
if (previewUrl) {
|
|
71
|
+
URL.revokeObjectURL(previewUrl);
|
|
72
|
+
setPreviewUrl(null);
|
|
73
|
+
}
|
|
74
|
+
if (fileInputRef.current) {
|
|
75
|
+
fileInputRef.current.value = "";
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const handleSave = async () => {
|
|
80
|
+
// Check if there are any changes
|
|
81
|
+
const hasAvatarChange = selectedFile !== null;
|
|
82
|
+
const hasUsernameChange = username.trim() !== "" && username !== currentUsername;
|
|
83
|
+
|
|
84
|
+
if (!hasAvatarChange && !hasUsernameChange) {
|
|
85
|
+
toast.error("Please make at least one change");
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
setIsSaving(true);
|
|
90
|
+
try {
|
|
91
|
+
let ipfsUrl: string | undefined;
|
|
92
|
+
|
|
93
|
+
// Upload avatar if selected
|
|
94
|
+
if (hasAvatarChange && selectedFile) {
|
|
95
|
+
debug("Starting upload to IPFS", selectedFile);
|
|
96
|
+
setIsUploading(true);
|
|
97
|
+
|
|
98
|
+
ipfsUrl = await upload({
|
|
99
|
+
client,
|
|
100
|
+
files: [selectedFile],
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
debug("Upload successful", ipfsUrl);
|
|
104
|
+
setIsUploading(false);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Update user profile
|
|
108
|
+
let updatedUser = user as Users | undefined;
|
|
109
|
+
|
|
110
|
+
// If both avatar and username need updating, do them sequentially
|
|
111
|
+
// Update avatar first if uploaded
|
|
112
|
+
if (ipfsUrl) {
|
|
113
|
+
// @ts-expect-error this resolved fine, look into why expect-error needed
|
|
114
|
+
updatedUser = await app.service("users").setAvatar(
|
|
115
|
+
{
|
|
116
|
+
avatar: ipfsUrl,
|
|
117
|
+
},
|
|
118
|
+
// @ts-expect-error - our typed client is expecting context even though it's set elsewhere
|
|
119
|
+
{},
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Update username if changed (this will use the updated user from avatar change if both were updated)
|
|
124
|
+
if (hasUsernameChange && user?._id) {
|
|
125
|
+
// @ts-expect-error this resolved fine, look into why expect-error needed
|
|
126
|
+
updatedUser = await app.service("users").registerUsername(
|
|
127
|
+
{ username: username },
|
|
128
|
+
// @ts-expect-error - our typed client is expecting context even though it's set elsewhere
|
|
129
|
+
{},
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Update user state
|
|
134
|
+
setUser(updatedUser);
|
|
135
|
+
|
|
136
|
+
// Refresh profile to get updated data
|
|
137
|
+
await refreshProfile();
|
|
138
|
+
|
|
139
|
+
// Show success message
|
|
140
|
+
const changes = [];
|
|
141
|
+
if (hasAvatarChange) changes.push("avatar");
|
|
142
|
+
if (hasUsernameChange) changes.push("username");
|
|
143
|
+
toast.success(`Successfully updated ${changes.join(" and ")}!`);
|
|
144
|
+
|
|
145
|
+
onSuccess?.();
|
|
146
|
+
|
|
147
|
+
// Clean up
|
|
148
|
+
handleRemoveFile();
|
|
149
|
+
setUsername("");
|
|
150
|
+
} catch (error) {
|
|
151
|
+
debug("Error updating profile:", error);
|
|
152
|
+
toast.error("Failed to update profile. Please try again.");
|
|
153
|
+
} finally {
|
|
154
|
+
setIsUploading(false);
|
|
155
|
+
setIsSaving(false);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const handleFileInputClick = () => {
|
|
160
|
+
fileInputRef.current?.click();
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const isLoading = isUploading || isSaving;
|
|
164
|
+
const hasChanges = selectedFile !== null || (username.trim() !== "" && username !== currentUsername);
|
|
165
|
+
|
|
166
|
+
return (
|
|
167
|
+
<div className={cn("flex flex-col items-center justify-center space-y-6 p-8", className)}>
|
|
168
|
+
<div className="space-y-2 text-center">
|
|
169
|
+
<h2 className="font-neue-montreal-semibold text-b3-grey text-2xl">Edit Your Profile</h2>
|
|
170
|
+
<p className="text-b3-foreground-muted font-neue-montreal-medium">Update your avatar and username</p>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
{/* Avatar Section */}
|
|
174
|
+
<div className="w-full max-w-md space-y-4">
|
|
175
|
+
<div className="space-y-2">
|
|
176
|
+
<label className="text-b3-grey font-neue-montreal-semibold text-sm">Avatar</label>
|
|
177
|
+
|
|
178
|
+
{/* Current/Preview Avatar */}
|
|
179
|
+
<div className="flex justify-center">
|
|
180
|
+
{safePreviewUrl || avatarUrl ? (
|
|
181
|
+
<div className="relative">
|
|
182
|
+
<div className="border-b3-primary-blue h-32 w-32 overflow-hidden rounded-full border-4">
|
|
183
|
+
<img
|
|
184
|
+
src={safePreviewUrl || avatarUrl || ""}
|
|
185
|
+
alt={safePreviewUrl ? "Preview" : "Current avatar"}
|
|
186
|
+
className="h-full w-full object-cover"
|
|
187
|
+
/>
|
|
188
|
+
</div>
|
|
189
|
+
{safePreviewUrl && (
|
|
190
|
+
<button
|
|
191
|
+
onClick={handleRemoveFile}
|
|
192
|
+
className="bg-b3-negative absolute -right-2 -top-2 flex h-8 w-8 items-center justify-center rounded-full text-white transition-colors hover:bg-red-600"
|
|
193
|
+
disabled={isLoading}
|
|
194
|
+
>
|
|
195
|
+
<X size={16} />
|
|
196
|
+
</button>
|
|
197
|
+
)}
|
|
198
|
+
</div>
|
|
199
|
+
) : (
|
|
200
|
+
<div className="bg-b3-primary-wash h-32 w-32 rounded-full" />
|
|
201
|
+
)}
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
{/* Upload Button */}
|
|
205
|
+
{!selectedFile && (
|
|
206
|
+
<Button variant="outline" onClick={handleFileInputClick} disabled={isLoading} className="w-full">
|
|
207
|
+
<Upload className="mr-2 h-4 w-4" />
|
|
208
|
+
{hasAvatar ? "Change Avatar" : "Upload Avatar"}
|
|
209
|
+
</Button>
|
|
210
|
+
)}
|
|
211
|
+
|
|
212
|
+
{/* Hidden file input */}
|
|
213
|
+
<input ref={fileInputRef} type="file" accept="image/*" onChange={handleFileSelect} className="hidden" />
|
|
214
|
+
</div>
|
|
215
|
+
|
|
216
|
+
{/* Username Section */}
|
|
217
|
+
<div className="space-y-2">
|
|
218
|
+
<label htmlFor="username" className="text-b3-grey font-neue-montreal-semibold text-sm">
|
|
219
|
+
Username
|
|
220
|
+
</label>
|
|
221
|
+
<input
|
|
222
|
+
id="username"
|
|
223
|
+
type="text"
|
|
224
|
+
value={username}
|
|
225
|
+
onChange={e => setUsername(e.target.value)}
|
|
226
|
+
placeholder={currentUsername || "Enter username"}
|
|
227
|
+
className="border-b3-line bg-b3-background text-b3-grey placeholder:text-b3-foreground-muted font-neue-montreal-medium focus:border-b3-primary-blue w-full rounded-lg border px-4 py-3 transition-colors focus:outline-none"
|
|
228
|
+
disabled={isLoading}
|
|
229
|
+
/>
|
|
230
|
+
{currentUsername && (
|
|
231
|
+
<p className="text-b3-foreground-muted font-neue-montreal-medium text-xs">Current: {currentUsername}</p>
|
|
232
|
+
)}
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
{/* Action Buttons */}
|
|
237
|
+
<div className="flex w-full max-w-md gap-3">
|
|
238
|
+
<Button
|
|
239
|
+
onClick={handleSave}
|
|
240
|
+
disabled={isLoading || !hasChanges}
|
|
241
|
+
className="bg-b3-primary-blue hover:bg-b3-primary-blue/90 flex-1 text-white disabled:opacity-50"
|
|
242
|
+
>
|
|
243
|
+
{isLoading ? (
|
|
244
|
+
<>
|
|
245
|
+
<Loader2 className="mr-2 h-4 w-4 animate-spin" />
|
|
246
|
+
{isUploading ? "Uploading..." : "Saving..."}
|
|
247
|
+
</>
|
|
248
|
+
) : (
|
|
249
|
+
<>
|
|
250
|
+
<Check className="mr-2 h-4 w-4" />
|
|
251
|
+
Save Changes
|
|
252
|
+
</>
|
|
253
|
+
)}
|
|
254
|
+
</Button>
|
|
255
|
+
</div>
|
|
256
|
+
|
|
257
|
+
{/* Help Text */}
|
|
258
|
+
<div className="text-b3-foreground-muted font-neue-montreal-medium max-w-md text-center text-xs">
|
|
259
|
+
<p>
|
|
260
|
+
Your avatar will be uploaded to IPFS and stored securely. Make sure you have the rights to use this image.
|
|
261
|
+
</p>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
IPFSMediaRenderer,
|
|
3
2
|
SignInWithB3,
|
|
4
3
|
SignInWithB3ModalProps,
|
|
5
4
|
StyleRoot,
|
|
@@ -14,7 +13,6 @@ import { cn, truncateAddress } from "@b3dotfun/sdk/shared/utils";
|
|
|
14
13
|
import { Menu, MenuButton, MenuItems, Transition } from "@headlessui/react";
|
|
15
14
|
import { ReactNode, useEffect } from "react";
|
|
16
15
|
import { useConnectedWallets, useSetActiveWallet, useWalletInfo } from "thirdweb/react";
|
|
17
|
-
import { useAccountWalletImage } from "../../hooks/useAccountWallet";
|
|
18
16
|
import { ManageAccountButton } from "../custom/ManageAccountButton";
|
|
19
17
|
|
|
20
18
|
type SignInProps = {
|
|
@@ -46,7 +44,7 @@ export function SignIn(props: SignInWithB3Props) {
|
|
|
46
44
|
|
|
47
45
|
const isMobile = useIsMobile();
|
|
48
46
|
const { logout } = useAuthentication(partnerId);
|
|
49
|
-
const onDisconnect = async ()
|
|
47
|
+
const onDisconnect = async () => {
|
|
50
48
|
await logout();
|
|
51
49
|
};
|
|
52
50
|
|
|
@@ -75,19 +73,17 @@ export function SignIn(props: SignInWithB3Props) {
|
|
|
75
73
|
}
|
|
76
74
|
}, [connectedEOAWallet, isActiveEOAWallet, setActiveWallet, automaticallySetFirstEoa]);
|
|
77
75
|
|
|
78
|
-
const walletImage = useAccountWalletImage();
|
|
79
|
-
|
|
80
76
|
// Desktop version - original dropdown menu
|
|
81
77
|
return (
|
|
82
78
|
<StyleRoot>
|
|
83
79
|
<Menu className={`relative flex items-center ${className || ""}`} as="div">
|
|
84
80
|
{globalAddress ? (
|
|
85
81
|
<>
|
|
86
|
-
<MenuButton className="bg-b3-react-background group flex h-10 items-center gap-1 rounded-xl px-3
|
|
87
|
-
{!!
|
|
88
|
-
<
|
|
89
|
-
src={
|
|
90
|
-
alt=
|
|
82
|
+
<MenuButton className="bg-b3-react-background group flex h-10 items-center gap-1 rounded-xl px-3">
|
|
83
|
+
{!!wallet.meta?.icon && (
|
|
84
|
+
<img
|
|
85
|
+
src={wallet.meta.icon}
|
|
86
|
+
alt={wallet.meta.icon}
|
|
91
87
|
className="bg-b3-react-primary h-6 w-6 rounded-full object-cover opacity-100"
|
|
92
88
|
/>
|
|
93
89
|
)}
|
|
@@ -102,7 +98,7 @@ export function SignIn(props: SignInWithB3Props) {
|
|
|
102
98
|
leaveTo="scale-95 opacity-0"
|
|
103
99
|
>
|
|
104
100
|
<MenuItems
|
|
105
|
-
className="b3-root absolute -right-4 top-full min-w-64 rounded-2xl border
|
|
101
|
+
className="b3-root absolute -right-4 top-full min-w-64 rounded-2xl border lg:right-0"
|
|
106
102
|
modal={false}
|
|
107
103
|
// TODO: Figure out why setting anchor on mobile causes z-index issues where it appears under elements
|
|
108
104
|
anchor={isMobile ? "top end" : undefined}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// TODO woj: Barrel file for all components, this might be reason of bundle size issues
|
|
2
1
|
// Core Components
|
|
3
2
|
export { B3DynamicModal } from "./B3DynamicModal";
|
|
4
3
|
export { B3Provider, InnerProvider } from "./B3Provider/B3Provider";
|
|
@@ -20,14 +19,9 @@ export { getConnectOptionsFromStrategy, isWalletType, type AllowedStrategy } fro
|
|
|
20
19
|
// ManageAccount Components
|
|
21
20
|
export { ManageAccount } from "./ManageAccount/ManageAccount";
|
|
22
21
|
|
|
23
|
-
//
|
|
24
|
-
export {
|
|
25
|
-
|
|
26
|
-
// Send Components
|
|
27
|
-
export { Send } from "./Send/Send";
|
|
28
|
-
|
|
29
|
-
// Media Components
|
|
30
|
-
export { IPFSMediaRenderer } from "./IPFSMediaRenderer/IPFSMediaRenderer";
|
|
22
|
+
// Profile Components
|
|
23
|
+
export { AvatarEditor } from "./AvatarEditor/AvatarEditor";
|
|
24
|
+
export { ProfileEditor } from "./ProfileEditor/ProfileEditor";
|
|
31
25
|
|
|
32
26
|
// RequestPermissions Components
|
|
33
27
|
export { RequestPermissions } from "./RequestPermissions/RequestPermissions";
|
|
@@ -106,12 +100,12 @@ export { ScrollArea, ScrollBar } from "./ui/scroll-area";
|
|
|
106
100
|
export { ShinyButton } from "./ui/ShinyButton";
|
|
107
101
|
export { Skeleton } from "./ui/skeleton";
|
|
108
102
|
export {
|
|
103
|
+
TabTrigger as TabTriggerPrimitive,
|
|
109
104
|
TabsContent as TabsContentPrimitive,
|
|
110
105
|
TabsList as TabsListPrimitive,
|
|
111
106
|
Tabs as TabsPrimitive,
|
|
112
|
-
TabTrigger as TabTriggerPrimitive,
|
|
113
107
|
} from "./ui/Tabs";
|
|
114
|
-
export { Tabs, TabsContent, TabsList, TabsTransitionWrapper
|
|
108
|
+
export { TabTrigger, Tabs, TabsContent, TabsList, TabsTransitionWrapper } from "./ui/TabSystem";
|
|
115
109
|
export { TextLoop } from "./ui/text-loop";
|
|
116
110
|
export { TextShimmer } from "./ui/text-shimmer";
|
|
117
111
|
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip";
|
|
@@ -16,18 +16,26 @@ export const Tabs = ({
|
|
|
16
16
|
);
|
|
17
17
|
|
|
18
18
|
export function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {
|
|
19
|
-
return
|
|
19
|
+
return (
|
|
20
|
+
<TabsPrimitive.List
|
|
21
|
+
className={cn(
|
|
22
|
+
"border-b3-react-border bg-b3-react-background inline-flex h-12 w-full items-center justify-center rounded-lg border",
|
|
23
|
+
className,
|
|
24
|
+
)}
|
|
25
|
+
{...props}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
20
28
|
}
|
|
21
29
|
|
|
22
30
|
export function TabTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
|
|
23
31
|
return (
|
|
24
32
|
<TabsPrimitive.Trigger
|
|
25
33
|
className={cn(
|
|
26
|
-
"
|
|
34
|
+
"inline-flex h-full items-center justify-center whitespace-nowrap px-3 text-sm font-medium transition-all",
|
|
27
35
|
"focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
|
|
28
|
-
"data-[state=active]:text-b3-react-primary data-[state=active]:font-bold",
|
|
29
|
-
"hover:text-b3-react-foreground data-[state=inactive]:text-b3-react-muted-foreground",
|
|
30
|
-
"flex-1",
|
|
36
|
+
"data-[state=active]:bg-b3-react-subtle data-[state=active]:text-b3-react-primary data-[state=active]:font-bold",
|
|
37
|
+
"border-b3-react-border hover:text-b3-react-foreground data-[state=inactive]:border-b3-react-border data-[state=inactive]:text-b3-react-muted-foreground",
|
|
38
|
+
"flex-1 border-r",
|
|
31
39
|
className,
|
|
32
40
|
)}
|
|
33
41
|
{...props}
|
|
@@ -42,7 +42,7 @@ type DialogContentProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.
|
|
|
42
42
|
|
|
43
43
|
const DialogContent: React.ForwardRefExoticComponent<DialogContentProps & React.RefAttributes<DialogContentElement>> =
|
|
44
44
|
React.forwardRef<DialogContentElement, DialogContentProps>(
|
|
45
|
-
({ className, children, hideCloseButton =
|
|
45
|
+
({ className, children, hideCloseButton = false, closeBtnClassName, ...props }, ref) => {
|
|
46
46
|
const container = typeof window !== "undefined" ? document.getElementById("b3-root") : null;
|
|
47
47
|
return (
|
|
48
48
|
<DialogPortal container={container}>
|
|
@@ -50,7 +50,7 @@ const DialogContent: React.ForwardRefExoticComponent<DialogContentProps & React.
|
|
|
50
50
|
<DialogPrimitive.Content
|
|
51
51
|
ref={ref}
|
|
52
52
|
className={cn(
|
|
53
|
-
"fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border shadow-lg !outline-none",
|
|
53
|
+
"bg-b3-react-background fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 shadow-lg !outline-none",
|
|
54
54
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-500",
|
|
55
55
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
56
56
|
"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
@@ -60,36 +60,18 @@ const DialogContent: React.ForwardRefExoticComponent<DialogContentProps & React.
|
|
|
60
60
|
)}
|
|
61
61
|
{...props}
|
|
62
62
|
>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
)}
|
|
76
|
-
</div>
|
|
77
|
-
{/* Global Account Footer */}
|
|
78
|
-
<div className="b3-modal-ga-branding flex items-center justify-center gap-1.5 pt-[10px]">
|
|
79
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
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>
|
|
89
|
-
<span className="font-neue-montreal-semibold text-xs uppercase leading-none tracking-[0.72px] text-[#0B57C2]">
|
|
90
|
-
Global Account
|
|
91
|
-
</span>
|
|
92
|
-
</div>
|
|
63
|
+
{children}
|
|
64
|
+
{!hideCloseButton && (
|
|
65
|
+
<DialogPrimitive.Close
|
|
66
|
+
className={cn(
|
|
67
|
+
"modal-close-button data-[state=open]:bg-b3-react-background data-[state=open]:text-b3-react-muted-foreground absolute right-2 top-2 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none dark:data-[state=open]:bg-gray-800 dark:data-[state=open]:text-gray-400",
|
|
68
|
+
closeBtnClassName,
|
|
69
|
+
)}
|
|
70
|
+
>
|
|
71
|
+
<X className="h-5 w-5" />
|
|
72
|
+
<span className="sr-only">Close</span>
|
|
73
|
+
</DialogPrimitive.Close>
|
|
74
|
+
)}
|
|
93
75
|
</DialogPrimitive.Content>
|
|
94
76
|
</DialogPortal>
|
|
95
77
|
);
|
|
@@ -35,7 +35,7 @@ const DrawerContent = React.forwardRef<
|
|
|
35
35
|
<DrawerPrimitive.Content
|
|
36
36
|
ref={ref}
|
|
37
37
|
className={cn(
|
|
38
|
-
"bg-b3-react-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border py-6
|
|
38
|
+
"bg-b3-react-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border py-6",
|
|
39
39
|
className,
|
|
40
40
|
)}
|
|
41
41
|
{...props}
|
|
@@ -26,12 +26,9 @@ export { useOneBalance } from "./useOneBalance";
|
|
|
26
26
|
export {
|
|
27
27
|
useProfile,
|
|
28
28
|
useProfilePreference,
|
|
29
|
-
useProfileSettings,
|
|
30
|
-
useDisplayName,
|
|
31
29
|
type CombinedProfile,
|
|
32
30
|
type PreferenceRequestBody,
|
|
33
31
|
type Profile,
|
|
34
|
-
type DisplayNameRequestBody,
|
|
35
32
|
} from "./useProfile";
|
|
36
33
|
export { useQueryB3 } from "./useQueryB3";
|
|
37
34
|
export { useQueryBSMNT } from "./useQueryBSMNT";
|
|
@@ -112,29 +112,3 @@ export function useAccountWallet(): {
|
|
|
112
112
|
|
|
113
113
|
return res;
|
|
114
114
|
}
|
|
115
|
-
|
|
116
|
-
export function useAccountWalletImage(): string {
|
|
117
|
-
const { account, user } = useB3();
|
|
118
|
-
|
|
119
|
-
const activeWallet = useActiveWallet();
|
|
120
|
-
const connectedWallets = useConnectedWallets();
|
|
121
|
-
|
|
122
|
-
const connectedSmartWallet = connectedWallets.find(wallet => wallet.id === ecosystemWalletId);
|
|
123
|
-
const connectedEOAWallet = connectedWallets.find(wallet => wallet.id !== ecosystemWalletId);
|
|
124
|
-
const isActiveSmartWallet = activeWallet?.id === connectedSmartWallet?.id;
|
|
125
|
-
|
|
126
|
-
const { data: walletImage } = useWalletImage(connectedEOAWallet?.id);
|
|
127
|
-
|
|
128
|
-
// If not EOA sign in, then we need to show the smart wallet icon
|
|
129
|
-
const lastAuthProvider = useLastAuthProvider();
|
|
130
|
-
|
|
131
|
-
const smartWalletIcon =
|
|
132
|
-
lastAuthProvider && !connectedEOAWallet
|
|
133
|
-
? socialIcons[lastAuthProvider as keyof typeof socialIcons]
|
|
134
|
-
: "https://gradvatar.com/0x0000000000000000000000000000000000000000"; // show smart wallet of eoa wallet is gradvatar
|
|
135
|
-
|
|
136
|
-
const { data: profileData } = useProfile({ address: account?.address });
|
|
137
|
-
const avatarUrl = user?.avatar || profileData?.avatar;
|
|
138
|
-
|
|
139
|
-
return avatarUrl || (isActiveSmartWallet ? smartWalletIcon : walletImage) || "";
|
|
140
|
-
}
|
|
@@ -104,7 +104,6 @@ export function useB3BalanceFromAddresses(
|
|
|
104
104
|
enabled: (options?.enabled ?? true) && normalizedAddresses.length > 0,
|
|
105
105
|
refetchInterval: options?.refetchInterval ?? 30000, // Default 30s refresh
|
|
106
106
|
staleTime: 10000, // Consider data stale after 10s
|
|
107
|
-
structuralSharing: false, // Disable structural sharing because data contains BigInt values
|
|
108
107
|
});
|
|
109
108
|
}
|
|
110
109
|
|
|
@@ -6,7 +6,6 @@ import invariant from "invariant";
|
|
|
6
6
|
import { useCallback, useState } from "react";
|
|
7
7
|
import { toast } from "sonner";
|
|
8
8
|
import { prepareTransaction, sendTransaction as twSendTransaction } from "thirdweb";
|
|
9
|
-
import { useActiveWallet } from "thirdweb/react";
|
|
10
9
|
import { isAddress } from "viem";
|
|
11
10
|
import { useSwitchChain } from "wagmi";
|
|
12
11
|
import { useB3 } from "../components";
|
|
@@ -29,7 +28,6 @@ invariant(partnerId, "Partner ID is required");
|
|
|
29
28
|
export function useUnifiedChainSwitchAndExecute() {
|
|
30
29
|
const { switchChainAsync } = useSwitchChain();
|
|
31
30
|
const [isSwitchingOrExecuting, setIsSwitchingOrExecuting] = useState(false);
|
|
32
|
-
const activeWallet = useActiveWallet();
|
|
33
31
|
|
|
34
32
|
const { isActiveSmartWallet, isActiveEOAWallet, connectedEOAWallet } = useAccountWallet();
|
|
35
33
|
const { account: aaAccount } = useB3();
|
|
@@ -49,12 +47,12 @@ export function useUnifiedChainSwitchAndExecute() {
|
|
|
49
47
|
return;
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
const currentChainId =
|
|
50
|
+
const currentChainId = connectedEOAWallet?.getChain()?.id;
|
|
53
51
|
const onCorrectChain = currentChainId === targetChainId;
|
|
54
52
|
|
|
55
53
|
// Helper function to execute the transaction
|
|
56
54
|
const executeTransaction = async (): Promise<string> => {
|
|
57
|
-
const signer =
|
|
55
|
+
const signer = connectedEOAWallet?.getAccount();
|
|
58
56
|
if (!signer) {
|
|
59
57
|
throw new Error("No account connected");
|
|
60
58
|
}
|
|
@@ -62,7 +60,7 @@ export function useUnifiedChainSwitchAndExecute() {
|
|
|
62
60
|
// Coinbase Smart Wallet specific chain switching (different behavior from other wallets)
|
|
63
61
|
const walletChain = connectedEOAWallet.getChain();
|
|
64
62
|
if (walletChain?.id !== targetChainId) {
|
|
65
|
-
|
|
63
|
+
connectedEOAWallet?.switchChain(getThirdwebChain(targetChainId));
|
|
66
64
|
}
|
|
67
65
|
|
|
68
66
|
invariant(isAddress(params.to), "params.to is not a valid address");
|
|
@@ -121,7 +119,7 @@ export function useUnifiedChainSwitchAndExecute() {
|
|
|
121
119
|
setIsSwitchingOrExecuting(false);
|
|
122
120
|
}
|
|
123
121
|
},
|
|
124
|
-
[connectedEOAWallet,
|
|
122
|
+
[connectedEOAWallet, switchChainAsync],
|
|
125
123
|
);
|
|
126
124
|
|
|
127
125
|
// Handle AA wallet transaction (no chain switch needed for AA)
|
|
@@ -186,14 +184,10 @@ export function useUnifiedChainSwitchAndExecute() {
|
|
|
186
184
|
// Check which wallet type is active
|
|
187
185
|
if (isActiveSmartWallet) {
|
|
188
186
|
return handleAASendTransaction(targetChainId, params);
|
|
189
|
-
} else if (isActiveEOAWallet) {
|
|
190
|
-
return handleEOASwitchChainAndSendTransaction(targetChainId, params);
|
|
191
|
-
} else {
|
|
192
|
-
toast.error("No wallet connected");
|
|
193
|
-
return undefined;
|
|
194
187
|
}
|
|
188
|
+
return handleEOASwitchChainAndSendTransaction(targetChainId, params);
|
|
195
189
|
},
|
|
196
|
-
[isActiveSmartWallet,
|
|
190
|
+
[isActiveSmartWallet, handleAASendTransaction, handleEOASwitchChainAndSendTransaction],
|
|
197
191
|
);
|
|
198
192
|
|
|
199
193
|
return {
|