@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
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { useAnyspendOrderHistory } from "@b3dotfun/sdk/anyspend/react";
|
|
4
4
|
import { Button, Skeleton, useAccountWallet } from "@b3dotfun/sdk/global-account/react";
|
|
5
|
-
import
|
|
6
|
-
import { RefreshCcw } from "lucide-react";
|
|
5
|
+
import { ArrowLeft, RefreshCcw } from "lucide-react";
|
|
7
6
|
import { OrderHistoryItem } from "./OrderHistoryItem";
|
|
8
7
|
|
|
9
8
|
interface OrderHistoryProps {
|
|
10
9
|
mode: "modal" | "page";
|
|
11
|
-
onBack
|
|
10
|
+
onBack: () => void;
|
|
12
11
|
onSelectOrder?: (orderId: string) => void;
|
|
13
12
|
}
|
|
14
13
|
|
|
@@ -18,7 +17,13 @@ export function OrderHistory({ mode, onBack, onSelectOrder }: OrderHistoryProps)
|
|
|
18
17
|
|
|
19
18
|
return (
|
|
20
19
|
<>
|
|
21
|
-
<
|
|
20
|
+
<div className="mb-8 flex w-full items-center gap-3">
|
|
21
|
+
<Button onClick={onBack} variant="ghost" size="icon" className="hover:bg-as-surface-secondary">
|
|
22
|
+
<ArrowLeft className="h-5 w-5" />
|
|
23
|
+
</Button>
|
|
24
|
+
<div className="flex-1">
|
|
25
|
+
<h3 className="text-as-primary text-2xl font-bold">Order History</h3>
|
|
26
|
+
</div>
|
|
22
27
|
<Button
|
|
23
28
|
variant="ghost"
|
|
24
29
|
size="icon"
|
|
@@ -29,20 +34,20 @@ export function OrderHistory({ mode, onBack, onSelectOrder }: OrderHistoryProps)
|
|
|
29
34
|
>
|
|
30
35
|
<RefreshCcw className="text-as-secondary hover:text-as-primary h-5 w-5 cursor-pointer transition-all hover:rotate-180" />
|
|
31
36
|
</Button>
|
|
32
|
-
</
|
|
37
|
+
</div>
|
|
33
38
|
|
|
34
39
|
{isLoadingOrderHistory ? (
|
|
35
|
-
<div className="w-full space-y-3
|
|
40
|
+
<div className="w-full space-y-3">
|
|
36
41
|
{[1, 2, 3].map(i => (
|
|
37
42
|
<Skeleton key={i} className="h-[180px] w-full rounded-2xl" />
|
|
38
43
|
))}
|
|
39
44
|
</div>
|
|
40
45
|
) : !orderHistory?.length ? (
|
|
41
|
-
<div className="bg-as-surface-secondary w-full rounded-2xl p-12
|
|
46
|
+
<div className="bg-as-surface-secondary w-full rounded-2xl p-12 text-center">
|
|
42
47
|
<p className="text-as-secondary text-sm">No order history found</p>
|
|
43
48
|
</div>
|
|
44
49
|
) : (
|
|
45
|
-
<div className="mb-12 w-full space-y-3
|
|
50
|
+
<div className="mb-12 w-full space-y-3">
|
|
46
51
|
{[...orderHistory]
|
|
47
52
|
.sort((a, b) => b.createdAt - a.createdAt)
|
|
48
53
|
.map(order => (
|
|
@@ -53,8 +53,6 @@ export function OrderTokenAmount({
|
|
|
53
53
|
}) {
|
|
54
54
|
// Track previous token to detect changes
|
|
55
55
|
const prevTokenRef = useRef<string>(token.address);
|
|
56
|
-
// Track if initial balance has been set
|
|
57
|
-
const initialBalanceSetRef = useRef(false);
|
|
58
56
|
|
|
59
57
|
// Only get token balance when context is "from" (for setting max amount)
|
|
60
58
|
const { rawBalance } = useTokenBalance({
|
|
@@ -62,23 +60,15 @@ export function OrderTokenAmount({
|
|
|
62
60
|
address: context === "from" && walletAddress ? walletAddress : undefined,
|
|
63
61
|
});
|
|
64
62
|
|
|
65
|
-
// Reset balance ref when token address or chain changes
|
|
66
|
-
useEffect(() => {
|
|
67
|
-
initialBalanceSetRef.current = false;
|
|
68
|
-
}, [token.address, token.chainId]);
|
|
69
|
-
|
|
70
63
|
useEffect(() => {
|
|
71
64
|
// Only handle "from" context
|
|
72
65
|
if (context !== "from") return;
|
|
73
66
|
|
|
74
67
|
// Check if token changed or if this is the initial load with balance
|
|
75
68
|
const isTokenChanged = prevTokenRef.current !== token.address;
|
|
76
|
-
const isInitialLoad = !initialBalanceSetRef.current && rawBalance;
|
|
77
69
|
|
|
78
|
-
if (
|
|
79
|
-
console.log(
|
|
80
|
-
`Setting max balance - Token: ${token.address}, Changed: ${isTokenChanged}, Initial: ${isInitialLoad}`,
|
|
81
|
-
);
|
|
70
|
+
if (isTokenChanged && rawBalance) {
|
|
71
|
+
console.log(`Setting max balance - Token: ${token.address}, Changed: ${isTokenChanged}`);
|
|
82
72
|
|
|
83
73
|
// Calculate max amount with gas reserve for native tokens
|
|
84
74
|
let maxAmount: bigint;
|
|
@@ -97,7 +87,6 @@ export function OrderTokenAmount({
|
|
|
97
87
|
|
|
98
88
|
// Update refs
|
|
99
89
|
prevTokenRef.current = token.address;
|
|
100
|
-
initialBalanceSetRef.current = true;
|
|
101
90
|
}
|
|
102
91
|
}, [token.address, token.chainId, token.decimals, chainId, context, onChangeInput, rawBalance]);
|
|
103
92
|
|
|
@@ -150,7 +150,7 @@ function PanelOnrampPaymentInner(props: PanelOnrampPaymentProps) {
|
|
|
150
150
|
};
|
|
151
151
|
|
|
152
152
|
return (
|
|
153
|
-
<div className="mx-auto flex w-full max-w-[460px] flex-col gap-6
|
|
153
|
+
<div className="mx-auto flex w-full max-w-[460px] flex-col gap-6">
|
|
154
154
|
{/* Order Summary Section */}
|
|
155
155
|
<>
|
|
156
156
|
<h2 className="-mb-3 text-lg font-semibold">Order summary</h2>
|
|
@@ -9,7 +9,7 @@ interface PointsDetailPanelProps {
|
|
|
9
9
|
|
|
10
10
|
export function PointsDetailPanel({ pointsAmount = 0, onBack }: PointsDetailPanelProps) {
|
|
11
11
|
return (
|
|
12
|
-
<div className="mx-auto flex w-[460px] max-w-full flex-col items-center gap-4
|
|
12
|
+
<div className="mx-auto flex w-[460px] max-w-full flex-col items-center gap-4">
|
|
13
13
|
<div className="flex flex-col items-center gap-4 text-center">
|
|
14
14
|
<h3 className="text-as-primary text-xl font-bold">Earn Points with Every Swap</h3>
|
|
15
15
|
<p className="text-as-primary/70 text-balance text-sm leading-relaxed">
|
|
@@ -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">
|
|
92
92
|
<div className="flex flex-col gap-6">
|
|
93
93
|
{/* Header */}
|
|
94
94
|
<div className="flex justify-around">
|
|
@@ -4,6 +4,7 @@ export { AnySpendBondKit } from "./AnySpendBondKit";
|
|
|
4
4
|
export { AnySpendBuySpin } from "./AnySpendBuySpin";
|
|
5
5
|
export { AnySpendCustom } from "./AnySpendCustom";
|
|
6
6
|
export { AnySpendCustomExactIn } from "./AnySpendCustomExactIn";
|
|
7
|
+
export { AnySpendDepositHype, HYPE_TOKEN_DETAILS } from "./AnyspendDepositHype";
|
|
7
8
|
export * from "./AnySpendFingerprintWrapper";
|
|
8
9
|
export { AnySpendNFT } from "./AnySpendNFT";
|
|
9
10
|
export { AnyspendSignatureMint } from "./AnyspendSignatureMint";
|
|
@@ -19,12 +19,13 @@ import { useEffect, useMemo, useState } from "react";
|
|
|
19
19
|
import { toast } from "sonner";
|
|
20
20
|
import { parseUnits } from "viem";
|
|
21
21
|
import { base, mainnet } from "viem/chains";
|
|
22
|
-
import { useAccount } from "wagmi";
|
|
23
22
|
import { components } from "../../types/api";
|
|
24
23
|
import { CryptoPaymentMethodType } from "../components/common/CryptoPaymentMethod";
|
|
25
24
|
import { FiatPaymentMethod } from "../components/common/FiatPaymentMethod";
|
|
26
25
|
import { useAutoSelectCryptoPaymentMethod } from "./useAutoSelectCryptoPaymentMethod";
|
|
27
26
|
import { useAutoSetActiveWalletFromWagmi } from "./useAutoSetActiveWalletFromWagmi";
|
|
27
|
+
import { useConnectedWalletDisplay } from "./useConnectedWalletDisplay";
|
|
28
|
+
import { useCryptoPaymentMethodState } from "./useCryptoPaymentMethodState";
|
|
28
29
|
|
|
29
30
|
export enum PanelView {
|
|
30
31
|
MAIN,
|
|
@@ -85,22 +86,28 @@ export function useAnyspendFlow({
|
|
|
85
86
|
const defaultDstToken = B3_TOKEN; // Default destination token
|
|
86
87
|
const [selectedSrcToken, setSelectedSrcToken] = useState<components["schemas"]["Token"]>(defaultSrcToken);
|
|
87
88
|
const [selectedDstToken, setSelectedDstToken] = useState<components["schemas"]["Token"]>(defaultDstToken);
|
|
88
|
-
const [srcAmount, setSrcAmount] = useState<string>(paymentType === "fiat" ? "5" : "0
|
|
89
|
+
const [srcAmount, setSrcAmount] = useState<string>(paymentType === "fiat" ? "5" : "0");
|
|
89
90
|
const [dstAmount, setDstAmount] = useState<string>("");
|
|
90
91
|
const [isSrcInputDirty, setIsSrcInputDirty] = useState(true);
|
|
91
92
|
|
|
92
93
|
// Derive destination chain ID from token or prop (cannot change)
|
|
93
94
|
const selectedDstChainId = destinationTokenChainId || selectedDstToken.chainId;
|
|
94
95
|
|
|
95
|
-
// Payment method state
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
// Payment method state with dual-state system (auto + explicit user selection)
|
|
97
|
+
const {
|
|
98
|
+
cryptoPaymentMethod,
|
|
99
|
+
setCryptoPaymentMethod,
|
|
100
|
+
selectedCryptoPaymentMethod,
|
|
101
|
+
setSelectedCryptoPaymentMethod,
|
|
102
|
+
effectiveCryptoPaymentMethod,
|
|
103
|
+
resetPaymentMethods,
|
|
104
|
+
} = useCryptoPaymentMethodState();
|
|
105
|
+
|
|
99
106
|
const [selectedFiatPaymentMethod, setSelectedFiatPaymentMethod] = useState<FiatPaymentMethod>(FiatPaymentMethod.NONE);
|
|
100
107
|
|
|
101
108
|
// Recipient state
|
|
102
109
|
const { address: globalAddress } = useAccountWallet();
|
|
103
|
-
const {
|
|
110
|
+
const { walletAddress } = useConnectedWalletDisplay(effectiveCryptoPaymentMethod);
|
|
104
111
|
const [selectedRecipientAddress, setSelectedRecipientAddress] = useState<string | undefined>(recipientAddress);
|
|
105
112
|
const recipientProfile = useProfile({ address: selectedRecipientAddress, fresh: true });
|
|
106
113
|
const recipientName = recipientProfile.data?.name;
|
|
@@ -118,7 +125,7 @@ export function useAnyspendFlow({
|
|
|
118
125
|
// Check token balance for crypto payments
|
|
119
126
|
const { rawBalance, isLoading: isBalanceLoading } = useTokenBalance({
|
|
120
127
|
token: selectedSrcToken,
|
|
121
|
-
address:
|
|
128
|
+
address: walletAddress,
|
|
122
129
|
});
|
|
123
130
|
|
|
124
131
|
// Check if user has enough balance
|
|
@@ -135,8 +142,9 @@ export function useAnyspendFlow({
|
|
|
135
142
|
// Auto-select crypto payment method based on available wallets and balance
|
|
136
143
|
useAutoSelectCryptoPaymentMethod({
|
|
137
144
|
paymentType,
|
|
145
|
+
cryptoPaymentMethod,
|
|
146
|
+
setCryptoPaymentMethod,
|
|
138
147
|
selectedCryptoPaymentMethod,
|
|
139
|
-
setSelectedCryptoPaymentMethod,
|
|
140
148
|
hasEnoughBalance,
|
|
141
149
|
isBalanceLoading,
|
|
142
150
|
});
|
|
@@ -248,9 +256,9 @@ export function useAnyspendFlow({
|
|
|
248
256
|
if (!disableUrlParamManagement) {
|
|
249
257
|
const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
|
|
250
258
|
params.set("orderId", newOrderId);
|
|
251
|
-
if (
|
|
252
|
-
console.log("Setting cryptoPaymentMethod in URL:",
|
|
253
|
-
params.set("cryptoPaymentMethod",
|
|
259
|
+
if (effectiveCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
|
|
260
|
+
console.log("Setting cryptoPaymentMethod in URL:", effectiveCryptoPaymentMethod);
|
|
261
|
+
params.set("cryptoPaymentMethod", effectiveCryptoPaymentMethod);
|
|
254
262
|
} else {
|
|
255
263
|
console.log("Payment method is NONE, not setting in URL");
|
|
256
264
|
}
|
|
@@ -316,8 +324,12 @@ export function useAnyspendFlow({
|
|
|
316
324
|
isSrcInputDirty,
|
|
317
325
|
setIsSrcInputDirty,
|
|
318
326
|
// Payment methods
|
|
327
|
+
cryptoPaymentMethod,
|
|
328
|
+
setCryptoPaymentMethod,
|
|
319
329
|
selectedCryptoPaymentMethod,
|
|
320
330
|
setSelectedCryptoPaymentMethod,
|
|
331
|
+
effectiveCryptoPaymentMethod,
|
|
332
|
+
resetPaymentMethods,
|
|
321
333
|
selectedFiatPaymentMethod,
|
|
322
334
|
setSelectedFiatPaymentMethod,
|
|
323
335
|
// Recipient
|
|
@@ -5,10 +5,12 @@ import { useConnectedWalletDisplay } from "./useConnectedWalletDisplay";
|
|
|
5
5
|
interface UseAutoSelectCryptoPaymentMethodParams {
|
|
6
6
|
/** Current payment type (crypto or fiat) */
|
|
7
7
|
paymentType?: "crypto" | "fiat";
|
|
8
|
-
/**
|
|
8
|
+
/** Auto-selected payment method based on balance (not used in hook logic, but part of state management) */
|
|
9
|
+
cryptoPaymentMethod: CryptoPaymentMethodType;
|
|
10
|
+
/** Function to update the auto-selected payment method */
|
|
11
|
+
setCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
|
|
12
|
+
/** User explicitly selected payment method (NONE means no explicit selection) */
|
|
9
13
|
selectedCryptoPaymentMethod: CryptoPaymentMethodType;
|
|
10
|
-
/** Function to update the selected payment method */
|
|
11
|
-
setSelectedCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
|
|
12
14
|
/** Whether user has enough balance to pay */
|
|
13
15
|
hasEnoughBalance: boolean;
|
|
14
16
|
/** Whether balance is still loading */
|
|
@@ -20,7 +22,7 @@ interface UseAutoSelectCryptoPaymentMethodParams {
|
|
|
20
22
|
* based on available wallets and balance.
|
|
21
23
|
*
|
|
22
24
|
* Auto-selection logic:
|
|
23
|
-
* - Only auto-selects when
|
|
25
|
+
* - Only auto-selects when selectedCryptoPaymentMethod is NONE (user hasn't explicitly chosen)
|
|
24
26
|
* - If EOA/Wagmi wallet connected + has balance → CONNECT_WALLET
|
|
25
27
|
* - If EOA/Wagmi wallet connected + insufficient balance → TRANSFER_CRYPTO
|
|
26
28
|
* - If only Global wallet available → GLOBAL_WALLET
|
|
@@ -28,8 +30,9 @@ interface UseAutoSelectCryptoPaymentMethodParams {
|
|
|
28
30
|
*/
|
|
29
31
|
export function useAutoSelectCryptoPaymentMethod({
|
|
30
32
|
paymentType = "crypto",
|
|
33
|
+
cryptoPaymentMethod: _cryptoPaymentMethod,
|
|
34
|
+
setCryptoPaymentMethod,
|
|
31
35
|
selectedCryptoPaymentMethod,
|
|
32
|
-
setSelectedCryptoPaymentMethod,
|
|
33
36
|
hasEnoughBalance,
|
|
34
37
|
isBalanceLoading,
|
|
35
38
|
}: UseAutoSelectCryptoPaymentMethodParams) {
|
|
@@ -37,8 +40,13 @@ export function useAutoSelectCryptoPaymentMethod({
|
|
|
37
40
|
const { suggestedPaymentMethod } = useConnectedWalletDisplay(selectedCryptoPaymentMethod);
|
|
38
41
|
|
|
39
42
|
useEffect(() => {
|
|
40
|
-
// Only auto-select when on crypto payment type
|
|
41
|
-
if (paymentType !== "crypto"
|
|
43
|
+
// Only auto-select when on crypto payment type
|
|
44
|
+
if (paymentType !== "crypto") {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Only auto-switch if user hasn't explicitly selected a payment method
|
|
49
|
+
if (selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
|
|
42
50
|
return;
|
|
43
51
|
}
|
|
44
52
|
|
|
@@ -48,25 +56,25 @@ export function useAutoSelectCryptoPaymentMethod({
|
|
|
48
56
|
// Otherwise, default to TRANSFER_CRYPTO if balance is insufficient
|
|
49
57
|
if (!isBalanceLoading) {
|
|
50
58
|
if (hasEnoughBalance && suggestedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
|
|
51
|
-
|
|
59
|
+
setCryptoPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
52
60
|
} else if (!hasEnoughBalance && suggestedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
|
|
53
61
|
// Wallet connected but insufficient balance - suggest transfer
|
|
54
|
-
|
|
62
|
+
setCryptoPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
|
|
55
63
|
} else {
|
|
56
64
|
// Use suggested method (e.g., GLOBAL_WALLET)
|
|
57
|
-
|
|
65
|
+
setCryptoPaymentMethod(suggestedPaymentMethod);
|
|
58
66
|
}
|
|
59
67
|
} else {
|
|
60
68
|
// Balance still loading, use suggested method
|
|
61
|
-
|
|
69
|
+
setCryptoPaymentMethod(suggestedPaymentMethod);
|
|
62
70
|
}
|
|
63
71
|
}
|
|
64
72
|
}, [
|
|
65
73
|
paymentType,
|
|
74
|
+
setCryptoPaymentMethod,
|
|
66
75
|
selectedCryptoPaymentMethod,
|
|
67
76
|
suggestedPaymentMethod,
|
|
68
77
|
hasEnoughBalance,
|
|
69
78
|
isBalanceLoading,
|
|
70
|
-
setSelectedCryptoPaymentMethod,
|
|
71
79
|
]);
|
|
72
80
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { CryptoPaymentMethodType } from "../components/common/CryptoPaymentMethod";
|
|
3
|
+
|
|
4
|
+
interface UseCryptoPaymentMethodStateResult {
|
|
5
|
+
/** Auto-selected payment method based on balance */
|
|
6
|
+
cryptoPaymentMethod: CryptoPaymentMethodType;
|
|
7
|
+
/** Function to update the auto-selected payment method */
|
|
8
|
+
setCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
|
|
9
|
+
/** User explicitly selected payment method (NONE means no explicit selection) */
|
|
10
|
+
selectedCryptoPaymentMethod: CryptoPaymentMethodType;
|
|
11
|
+
/** Function to update the user-selected payment method */
|
|
12
|
+
setSelectedCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
|
|
13
|
+
/** Effective payment method (user selection takes priority over auto-selection) */
|
|
14
|
+
effectiveCryptoPaymentMethod: CryptoPaymentMethodType;
|
|
15
|
+
/** Reset both payment method states to NONE */
|
|
16
|
+
resetPaymentMethods: () => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Custom hook to manage crypto payment method state with dual-state system:
|
|
21
|
+
*
|
|
22
|
+
* - `cryptoPaymentMethod`: Auto-selected based on wallet availability and balance
|
|
23
|
+
* - `selectedCryptoPaymentMethod`: Explicitly selected by user
|
|
24
|
+
* - `effectiveCryptoPaymentMethod`: User selection takes priority over auto-selection
|
|
25
|
+
*
|
|
26
|
+
* This allows automatic payment method suggestions while respecting explicit user choices.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* const {
|
|
31
|
+
* cryptoPaymentMethod,
|
|
32
|
+
* setCryptoPaymentMethod,
|
|
33
|
+
* selectedCryptoPaymentMethod,
|
|
34
|
+
* setSelectedCryptoPaymentMethod,
|
|
35
|
+
* effectiveCryptoPaymentMethod,
|
|
36
|
+
* resetPaymentMethods
|
|
37
|
+
* } = useCryptoPaymentMethodState();
|
|
38
|
+
*
|
|
39
|
+
* // Use effectiveCryptoPaymentMethod for display
|
|
40
|
+
* // Use setSelectedCryptoPaymentMethod when user explicitly selects
|
|
41
|
+
* // Call resetPaymentMethods when switching tabs or going back
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function useCryptoPaymentMethodState(): UseCryptoPaymentMethodStateResult {
|
|
45
|
+
// cryptoPaymentMethod: auto-selected based on balance
|
|
46
|
+
const [cryptoPaymentMethod, setCryptoPaymentMethod] = useState<CryptoPaymentMethodType>(CryptoPaymentMethodType.NONE);
|
|
47
|
+
|
|
48
|
+
// selectedCryptoPaymentMethod: explicitly selected by user (NONE means no explicit selection)
|
|
49
|
+
const [selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod] = useState<CryptoPaymentMethodType>(
|
|
50
|
+
CryptoPaymentMethodType.NONE,
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
// The effective payment method (user selection takes priority over auto-selection)
|
|
54
|
+
const effectiveCryptoPaymentMethod =
|
|
55
|
+
selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE ? selectedCryptoPaymentMethod : cryptoPaymentMethod;
|
|
56
|
+
|
|
57
|
+
// Helper function to reset both states
|
|
58
|
+
const resetPaymentMethods = () => {
|
|
59
|
+
setCryptoPaymentMethod(CryptoPaymentMethodType.NONE);
|
|
60
|
+
setSelectedCryptoPaymentMethod(CryptoPaymentMethodType.NONE);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
cryptoPaymentMethod,
|
|
65
|
+
setCryptoPaymentMethod,
|
|
66
|
+
selectedCryptoPaymentMethod,
|
|
67
|
+
setSelectedCryptoPaymentMethod,
|
|
68
|
+
effectiveCryptoPaymentMethod,
|
|
69
|
+
resetPaymentMethods,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -1,35 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useState } from "react";
|
|
1
|
+
import { SimpleHashNFTResponse } from "@b3dotfun/sdk/global-account/types/simplehash.types";
|
|
3
2
|
|
|
4
3
|
interface AccountAssetsProps {
|
|
5
4
|
nfts: SimpleHashNFTResponse;
|
|
6
5
|
isLoading?: boolean;
|
|
7
6
|
}
|
|
8
7
|
|
|
9
|
-
interface GroupedNFTs {
|
|
10
|
-
collection_id: string;
|
|
11
|
-
collection_name: string;
|
|
12
|
-
collection_image: string;
|
|
13
|
-
nfts: NFT[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
8
|
export function AccountAssets({ nfts, isLoading }: AccountAssetsProps) {
|
|
17
|
-
// Initialize with all collections expanded
|
|
18
|
-
const [expandedCollections, setExpandedCollections] = useState<Set<string>>(
|
|
19
|
-
() => new Set(collections.map(c => c.collection_id)),
|
|
20
|
-
);
|
|
21
|
-
|
|
22
9
|
if (isLoading) {
|
|
23
10
|
return (
|
|
24
|
-
<div className="
|
|
25
|
-
{[...Array(
|
|
26
|
-
<div key={i} className="
|
|
27
|
-
<div className="bg-b3-react-muted mb-3 h-6 w-48 rounded" />
|
|
28
|
-
<div className="flex gap-3">
|
|
29
|
-
<div className="bg-b3-react-muted h-[98px] w-[98px] shrink-0 rounded-lg" />
|
|
30
|
-
<div className="bg-b3-react-muted h-[98px] w-[98px] shrink-0 rounded-lg" />
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
11
|
+
<div className="grid animate-pulse grid-cols-2 gap-4">
|
|
12
|
+
{[...Array(4)].map((_, i) => (
|
|
13
|
+
<div key={i} className="bg-b3-react-muted aspect-square rounded-lg" />
|
|
33
14
|
))}
|
|
34
15
|
</div>
|
|
35
16
|
);
|
|
@@ -39,100 +20,29 @@ export function AccountAssets({ nfts, isLoading }: AccountAssetsProps) {
|
|
|
39
20
|
return <div className="text-b3-react-muted-foreground py-8 text-center">No NFTs found</div>;
|
|
40
21
|
}
|
|
41
22
|
|
|
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
|
-
const toggleCollection = (collectionId: string) => {
|
|
63
|
-
setExpandedCollections(prev => {
|
|
64
|
-
const next = new Set(prev);
|
|
65
|
-
if (next.has(collectionId)) {
|
|
66
|
-
next.delete(collectionId);
|
|
67
|
-
} else {
|
|
68
|
-
next.add(collectionId);
|
|
69
|
-
}
|
|
70
|
-
return next;
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
|
|
74
23
|
return (
|
|
75
|
-
<div className="
|
|
76
|
-
{
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
className="
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
<p className="font-neue-montreal-medium text-[14px] text-[#3f3f46]">
|
|
95
|
-
{collection.collection_name} ({collection.nfts.length})
|
|
96
|
-
</p>
|
|
97
|
-
</div>
|
|
98
|
-
<svg
|
|
99
|
-
className={`h-[18px] w-[18px] shrink-0 transition-transform ${isExpanded ? "rotate-180" : ""}`}
|
|
100
|
-
viewBox="0 0 18 18"
|
|
101
|
-
fill="none"
|
|
102
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
103
|
-
>
|
|
104
|
-
<path
|
|
105
|
-
d="M4.5 6.75L9 11.25L13.5 6.75"
|
|
106
|
-
stroke="#51525C"
|
|
107
|
-
strokeWidth="1.5"
|
|
108
|
-
strokeLinecap="round"
|
|
109
|
-
strokeLinejoin="round"
|
|
110
|
-
/>
|
|
111
|
-
</svg>
|
|
112
|
-
</button>
|
|
113
|
-
|
|
114
|
-
{/* NFT Grid */}
|
|
115
|
-
{isExpanded && (
|
|
116
|
-
<div className="flex gap-3 overflow-x-auto">
|
|
117
|
-
{collection.nfts.map(nft => (
|
|
118
|
-
<div key={nft.nft_id} className="relative h-[98px] w-[98px] shrink-0 overflow-hidden rounded-lg">
|
|
119
|
-
<img
|
|
120
|
-
src={
|
|
121
|
-
nft.previews?.image_medium_url ||
|
|
122
|
-
nft.extra_metadata?.image_original_url ||
|
|
123
|
-
nft.collection?.image_url ||
|
|
124
|
-
""
|
|
125
|
-
}
|
|
126
|
-
alt={nft.name || "NFT"}
|
|
127
|
-
className="h-full w-full object-cover"
|
|
128
|
-
/>
|
|
129
|
-
</div>
|
|
130
|
-
))}
|
|
131
|
-
</div>
|
|
132
|
-
)}
|
|
24
|
+
<div className="grid grid-cols-2 gap-4">
|
|
25
|
+
{nfts.nfts.map(nft => (
|
|
26
|
+
<div key={nft.nft_id} className="group relative aspect-square overflow-hidden">
|
|
27
|
+
<div className="relative h-full w-full overflow-hidden rounded-xl">
|
|
28
|
+
<img
|
|
29
|
+
src={
|
|
30
|
+
nft.previews?.image_medium_url || nft.extra_metadata?.image_original_url || nft.collection?.image_url
|
|
31
|
+
}
|
|
32
|
+
alt={nft.name || "NFT"}
|
|
33
|
+
className="h-full w-full rounded-xl object-cover"
|
|
34
|
+
/>
|
|
35
|
+
<div className="absolute inset-0 flex flex-col justify-end bg-gradient-to-t from-black from-35% via-black/70 to-transparent p-3 opacity-0 transition-all duration-200 ease-in-out group-hover:opacity-100">
|
|
36
|
+
<p className="font-neue-montreal-bold text-[16px] text-white drop-shadow-[0_1px_2px_rgba(0,0,0,1)]">
|
|
37
|
+
{nft.name || `#${nft.token_id}`}
|
|
38
|
+
</p>
|
|
39
|
+
<p className="font-neue-montreal-bold text-sm text-white/95 drop-shadow-[0_1px_2px_rgba(0,0,0,1)]">
|
|
40
|
+
{nft.collection?.name}
|
|
41
|
+
</p>
|
|
42
|
+
</div>
|
|
133
43
|
</div>
|
|
134
|
-
|
|
135
|
-
|
|
44
|
+
</div>
|
|
45
|
+
))}
|
|
136
46
|
</div>
|
|
137
47
|
);
|
|
138
48
|
}
|