@b3dotfun/sdk 0.0.65-alpha.0 → 0.0.65-test.3
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 +77 -35
- package/dist/cjs/anyspend/react/components/AnySpendCustom.js +2 -2
- package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +1 -1
- package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +1 -1
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +0 -6
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +5 -3
- 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 +7 -3
- 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/hooks/useSigMint.d.ts +1 -1
- package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +184 -35
- package/dist/cjs/global-account/react/components/B3DynamicModal.js +23 -12
- package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +1 -0
- package/dist/cjs/global-account/react/components/Deposit/Deposit.js +65 -0
- package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +39 -0
- package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +37 -0
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +113 -279
- package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
- package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +331 -0
- package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
- package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +34 -0
- package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +6 -5
- package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +23 -0
- package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +3 -0
- package/dist/cjs/global-account/react/components/ManageAccount/Header.js +120 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +43 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +16 -0
- package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +24 -193
- package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +15 -0
- package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +47 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +50 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +8 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +106 -0
- package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +22 -0
- package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
- package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +12 -0
- package/dist/cjs/global-account/react/components/Send/Send.d.ts +5 -0
- package/dist/cjs/global-account/react/components/Send/Send.js +187 -0
- package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +3 -1
- package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +3 -0
- package/dist/cjs/global-account/react/components/icons/BellIcon.js +5 -0
- package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +7 -0
- package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +2 -0
- package/dist/cjs/global-account/react/components/icons/CopyIcon.js +7 -0
- package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +3 -0
- package/dist/cjs/global-account/react/components/icons/LinkIcon.js +5 -0
- package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +3 -0
- package/dist/cjs/global-account/react/components/icons/LockIcon.js +5 -0
- package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +2 -0
- package/dist/cjs/global-account/react/components/icons/WalletIcon.js +7 -0
- package/dist/cjs/global-account/react/components/index.d.ts +5 -4
- package/dist/cjs/global-account/react/components/index.js +14 -9
- 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/hooks/index.d.ts +1 -1
- package/dist/cjs/global-account/react/hooks/index.js +3 -1
- package/dist/cjs/global-account/react/hooks/useAccountWallet.d.ts +1 -0
- package/dist/cjs/global-account/react/hooks/useAccountWallet.js +18 -0
- package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
- package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +2 -2
- package/dist/cjs/global-account/react/stores/index.d.ts +1 -0
- package/dist/cjs/global-account/react/stores/index.js +3 -1
- package/dist/cjs/global-account/react/stores/useModalStore.d.ts +31 -6
- package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
- package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +36 -0
- package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +2 -0
- 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 +10 -3
- package/dist/esm/anyspend/react/components/AnySpend.js +78 -36
- package/dist/esm/anyspend/react/components/AnySpendCustom.js +2 -2
- package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +1 -1
- package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +1 -1
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +0 -6
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +5 -3
- 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 +6 -5
- 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/hooks/useSigMint.d.ts +1 -1
- package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +186 -37
- package/dist/esm/global-account/react/components/B3DynamicModal.js +23 -12
- package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +1 -0
- package/dist/esm/global-account/react/components/Deposit/Deposit.js +59 -0
- package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +39 -0
- package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +34 -0
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +113 -280
- package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
- package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +325 -0
- package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
- package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +32 -0
- package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +6 -5
- package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +21 -0
- package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +3 -0
- package/dist/esm/global-account/react/components/ManageAccount/Header.js +81 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +41 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +10 -0
- package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +26 -195
- package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +13 -0
- package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +45 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +45 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +6 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +101 -0
- package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +20 -0
- package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
- package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +10 -0
- package/dist/esm/global-account/react/components/Send/Send.d.ts +5 -0
- package/dist/esm/global-account/react/components/Send/Send.js +181 -0
- package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +4 -2
- package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +3 -0
- package/dist/esm/global-account/react/components/icons/BellIcon.js +3 -0
- package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +4 -0
- package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +2 -0
- package/dist/esm/global-account/react/components/icons/CopyIcon.js +4 -0
- package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +3 -0
- package/dist/esm/global-account/react/components/icons/LinkIcon.js +3 -0
- package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +3 -0
- package/dist/esm/global-account/react/components/icons/LockIcon.js +3 -0
- package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +2 -0
- package/dist/esm/global-account/react/components/icons/WalletIcon.js +4 -0
- package/dist/esm/global-account/react/components/index.d.ts +5 -4
- package/dist/esm/global-account/react/components/index.js +9 -5
- 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/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 +1 -0
- package/dist/esm/global-account/react/hooks/useAccountWallet.js +17 -0
- package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
- package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +2 -2
- package/dist/esm/global-account/react/stores/index.d.ts +1 -0
- package/dist/esm/global-account/react/stores/index.js +1 -0
- package/dist/esm/global-account/react/stores/useModalStore.d.ts +31 -6
- package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
- package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +33 -0
- package/dist/esm/global-account/react/utils/profileDisplay.d.ts +2 -0
- 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 +10 -3
- package/dist/styles/index.css +1 -1
- package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +0 -6
- package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
- package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +1 -0
- package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +39 -0
- package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
- package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
- package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
- package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +3 -0
- package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
- package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
- package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
- package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
- package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
- package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
- package/dist/types/global-account/react/components/Send/Send.d.ts +5 -0
- package/dist/types/global-account/react/components/icons/BellIcon.d.ts +3 -0
- package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +2 -0
- package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +3 -0
- package/dist/types/global-account/react/components/icons/LockIcon.d.ts +3 -0
- package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +2 -0
- package/dist/types/global-account/react/components/index.d.ts +5 -4
- package/dist/types/global-account/react/hooks/index.d.ts +1 -1
- package/dist/types/global-account/react/hooks/useAccountWallet.d.ts +1 -0
- 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 +1 -0
- package/dist/types/global-account/react/stores/useModalStore.d.ts +31 -6
- package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
- package/dist/types/global-account/react/utils/profileDisplay.d.ts +2 -0
- package/dist/types/shared/constants/chains/supported.d.ts +3 -3
- package/package.json +1 -1
- package/src/anyspend/react/components/AnySpend.tsx +229 -170
- package/src/anyspend/react/components/AnySpendCustom.tsx +1 -3
- package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +0 -2
- package/src/anyspend/react/components/AnyspendDepositHype.tsx +0 -2
- package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +7 -14
- 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 +8 -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/global-account/react/components/AccountAssets/AccountAssets.tsx +115 -25
- package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +360 -128
- package/src/global-account/react/components/B3DynamicModal.tsx +28 -14
- package/src/global-account/react/components/Deposit/Deposit.tsx +211 -0
- package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +84 -0
- package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +332 -433
- package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +490 -0
- package/src/global-account/react/components/ManageAccount/AppsContent.tsx +79 -0
- package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +6 -10
- package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +83 -0
- package/src/global-account/react/components/ManageAccount/Header.tsx +230 -0
- package/src/global-account/react/components/ManageAccount/HomeActions.tsx +118 -0
- package/src/global-account/react/components/ManageAccount/HomeContent.tsx +42 -0
- package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +73 -589
- package/src/global-account/react/components/ManageAccount/NFTContent.tsx +24 -0
- package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +72 -0
- package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +87 -0
- package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +31 -0
- package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +180 -0
- package/src/global-account/react/components/ManageAccount/TokenContent.tsx +41 -0
- package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +50 -0
- package/src/global-account/react/components/Send/Send.tsx +585 -0
- package/src/global-account/react/components/SignInWithB3/SignIn.tsx +11 -7
- package/src/global-account/react/components/icons/BellIcon.tsx +15 -0
- package/src/global-account/react/components/icons/ChevronDownIcon.tsx +17 -0
- package/src/global-account/react/components/icons/CopyIcon.tsx +22 -0
- package/src/global-account/react/components/icons/LinkIcon.tsx +15 -0
- package/src/global-account/react/components/icons/LockIcon.tsx +15 -0
- package/src/global-account/react/components/icons/WalletIcon.tsx +21 -0
- package/src/global-account/react/components/index.ts +11 -5
- package/src/global-account/react/components/ui/Tabs.tsx +5 -13
- package/src/global-account/react/components/ui/dialog.tsx +32 -14
- package/src/global-account/react/hooks/index.ts +3 -0
- package/src/global-account/react/hooks/useAccountWallet.tsx +26 -0
- package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +1 -0
- package/src/global-account/react/stores/index.ts +1 -0
- package/src/global-account/react/stores/useModalStore.ts +35 -6
- package/src/global-account/react/stores/useRecentAddressesStore.ts +55 -0
- package/src/global-account/react/utils/profileDisplay.ts +4 -2
- package/src/shared/utils/ipfs.ts +10 -3
- package/src/styles/index.css +6 -1
- package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +0 -6
- package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.js +0 -141
- package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +0 -6
- package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.js +0 -135
- package/dist/types/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +0 -6
- package/src/global-account/react/components/ProfileEditor/ProfileEditor.tsx +0 -265
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useActiveWallet } from "thirdweb/react";
|
|
2
|
+
import { AccountAssets } from "..";
|
|
3
|
+
import { useAccountAssets } from "../../hooks";
|
|
4
|
+
|
|
5
|
+
const NFTContent = () => {
|
|
6
|
+
// Get active wallet state
|
|
7
|
+
const activeWallet = useActiveWallet();
|
|
8
|
+
const activeAccount = activeWallet?.getAccount();
|
|
9
|
+
const activeAddress = activeAccount?.address;
|
|
10
|
+
|
|
11
|
+
const { data: nfts, isLoading } = useAccountAssets(activeAddress);
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<div style={{ minHeight: "100px" }}>
|
|
15
|
+
{nfts?.nftResponse ? (
|
|
16
|
+
<AccountAssets nfts={nfts.nftResponse} isLoading={isLoading} />
|
|
17
|
+
) : (
|
|
18
|
+
<div className="py-12 text-center text-gray-500">No NFTs found</div>
|
|
19
|
+
)}
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default NFTContent;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { useAccountWallet, useB3, useModalStore, useProfile, useSimBalance } from "@b3dotfun/sdk/global-account/react";
|
|
2
|
+
import { formatUsername } from "@b3dotfun/sdk/shared/utils";
|
|
3
|
+
import { formatDisplayNumber } from "@b3dotfun/sdk/shared/utils/number";
|
|
4
|
+
import { Pencil } from "lucide-react";
|
|
5
|
+
import { useMemo } from "react";
|
|
6
|
+
import { useActiveAccount } from "thirdweb/react";
|
|
7
|
+
import { useFirstEOA } from "../../hooks/useFirstEOA";
|
|
8
|
+
import { IPFSMediaRenderer } from "../IPFSMediaRenderer/IPFSMediaRenderer";
|
|
9
|
+
|
|
10
|
+
const ProfileSection = () => {
|
|
11
|
+
const account = useActiveAccount();
|
|
12
|
+
const { address: eoaAddress } = useFirstEOA();
|
|
13
|
+
const { address: smartWalletAddress } = useAccountWallet();
|
|
14
|
+
const { data: profile } = useProfile({
|
|
15
|
+
address: eoaAddress || account?.address,
|
|
16
|
+
fresh: true,
|
|
17
|
+
});
|
|
18
|
+
const { user } = useB3();
|
|
19
|
+
const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
|
|
20
|
+
const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
|
|
21
|
+
const navigateBack = useModalStore(state => state.navigateBack);
|
|
22
|
+
|
|
23
|
+
const { data: simBalance } = useSimBalance(smartWalletAddress);
|
|
24
|
+
|
|
25
|
+
// Calculate total balance in USD
|
|
26
|
+
const totalBalanceUsd = useMemo(() => {
|
|
27
|
+
if (!simBalance?.balances) return 0;
|
|
28
|
+
return simBalance.balances.reduce((sum, token) => sum + (token.value_usd || 0), 0);
|
|
29
|
+
}, [simBalance]);
|
|
30
|
+
|
|
31
|
+
const handleEditAvatar = () => {
|
|
32
|
+
setB3ModalOpen(true);
|
|
33
|
+
setB3ModalContentType({
|
|
34
|
+
type: "avatarEditor",
|
|
35
|
+
onSuccess: () => {
|
|
36
|
+
// navigate back on success
|
|
37
|
+
navigateBack();
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// IPFSMediaRenderer will handle IPFS URL conversion and validation
|
|
43
|
+
const avatarSrc = user?.avatar || profile?.avatar;
|
|
44
|
+
|
|
45
|
+
// Get current username - prioritize user.username, fallback to profile data
|
|
46
|
+
const currentUsername = user?.username || profile?.displayName || formatUsername(profile?.name || "");
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<div className="flex items-center justify-between px-5 py-6">
|
|
50
|
+
<div className="global-account-profile flex items-center gap-4">
|
|
51
|
+
<div className="global-account-profile-avatar relative">
|
|
52
|
+
<IPFSMediaRenderer src={avatarSrc} alt="Profile Avatar" className="size-14 rounded-full" />
|
|
53
|
+
<button
|
|
54
|
+
onClick={handleEditAvatar}
|
|
55
|
+
className="border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-6 items-center justify-center rounded-full border-4 bg-[#a0a0ab] transition-colors"
|
|
56
|
+
>
|
|
57
|
+
<Pencil size={10} className="text-b3-background" />
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
<div className="global-account-profile-info flex flex-col gap-1">
|
|
61
|
+
<h2 className="text-b3-grey font-neue-montreal-semibold flex h-[38px] items-center gap-1 text-xl">
|
|
62
|
+
<div className="text-b3-foreground-muted"> $</div>
|
|
63
|
+
<div className="text-[30px]">{formatDisplayNumber(totalBalanceUsd, { fractionDigits: 2 })}</div>
|
|
64
|
+
</h2>
|
|
65
|
+
<div className="font-neue-montreal-semibold text-base leading-none text-[#0B57C2]">{currentUsername}</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export default ProfileSection;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { useModalStore } from "@b3dotfun/sdk/global-account/react";
|
|
2
|
+
import { Chain } from "thirdweb";
|
|
3
|
+
import LinkIcon from "../icons/LinkIcon";
|
|
4
|
+
import ModalHeader from "../ModalHeader/ModalHeader";
|
|
5
|
+
import SettingsMenuItem from "./SettingsMenuItem";
|
|
6
|
+
import SettingsProfileCard from "./SettingsProfileCard";
|
|
7
|
+
|
|
8
|
+
const SettingsContent = ({
|
|
9
|
+
partnerId,
|
|
10
|
+
onLogout,
|
|
11
|
+
chain,
|
|
12
|
+
}: {
|
|
13
|
+
partnerId: string;
|
|
14
|
+
onLogout?: () => void;
|
|
15
|
+
chain: Chain;
|
|
16
|
+
}) => {
|
|
17
|
+
const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
|
|
18
|
+
const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
|
|
19
|
+
|
|
20
|
+
const handleNavigate = (type: "home" | "swap" | "linkAccount" | "avatarEditor") => {
|
|
21
|
+
if (type === "home") {
|
|
22
|
+
setB3ModalContentType({
|
|
23
|
+
type: "manageAccount",
|
|
24
|
+
chain,
|
|
25
|
+
partnerId,
|
|
26
|
+
onLogout,
|
|
27
|
+
activeTab: "home",
|
|
28
|
+
});
|
|
29
|
+
} else if (type === "swap") {
|
|
30
|
+
setB3ModalContentType({
|
|
31
|
+
type: "manageAccount",
|
|
32
|
+
chain,
|
|
33
|
+
partnerId,
|
|
34
|
+
onLogout,
|
|
35
|
+
activeTab: "tokens",
|
|
36
|
+
});
|
|
37
|
+
} else if (type === "linkAccount") {
|
|
38
|
+
setB3ModalContentType({
|
|
39
|
+
type: "linkAccount",
|
|
40
|
+
chain,
|
|
41
|
+
partnerId,
|
|
42
|
+
});
|
|
43
|
+
} else {
|
|
44
|
+
setB3ModalContentType({
|
|
45
|
+
type: "avatarEditor",
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
setB3ModalOpen(true);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<div className="flex h-[470px] flex-col">
|
|
53
|
+
<ModalHeader title="Settings" />
|
|
54
|
+
|
|
55
|
+
{/* Profile Section */}
|
|
56
|
+
<div className="p-5">
|
|
57
|
+
<div className="flex items-center rounded-xl border border-[#e4e4e7] bg-[#f4f4f5] p-4">
|
|
58
|
+
<SettingsProfileCard />
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
{/* Menu Items */}
|
|
63
|
+
<div className="space-y-3 px-5">
|
|
64
|
+
<SettingsMenuItem
|
|
65
|
+
icon={<LinkIcon className="text-b3-grey-500" />}
|
|
66
|
+
title="Linked Accounts"
|
|
67
|
+
subtitle="3 connected accounts"
|
|
68
|
+
onClick={() => handleNavigate("linkAccount")}
|
|
69
|
+
/>
|
|
70
|
+
{/* <SettingsMenuItem
|
|
71
|
+
icon={<BellIcon className="text-b3-grey-500" />}
|
|
72
|
+
title="Notifications"
|
|
73
|
+
subtitle="Manage your notifications"
|
|
74
|
+
onClick={() => handleNavigate("avatarEditor")}
|
|
75
|
+
/>
|
|
76
|
+
<SettingsMenuItem
|
|
77
|
+
icon={<LockIcon className="text-b3-grey-500" />}
|
|
78
|
+
title="Permissions"
|
|
79
|
+
subtitle="Security & apps"
|
|
80
|
+
onClick={() => handleNavigate("avatarEditor")}
|
|
81
|
+
/> */}
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export default SettingsContent;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ChevronRight } from "lucide-react";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
interface SettingsMenuItemProps {
|
|
5
|
+
icon: ReactNode;
|
|
6
|
+
title: string;
|
|
7
|
+
subtitle: string;
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const SettingsMenuItem = ({ icon, title, subtitle, onClick }: SettingsMenuItemProps) => {
|
|
12
|
+
return (
|
|
13
|
+
<button
|
|
14
|
+
onClick={onClick}
|
|
15
|
+
className="flex w-full items-center gap-2 rounded-xl px-3 py-2 transition-colors hover:bg-[#f4f4f5]"
|
|
16
|
+
>
|
|
17
|
+
<div className="flex size-10 items-center justify-center rounded-full bg-[#f4f4f5]">{icon}</div>
|
|
18
|
+
<div className="flex flex-1 flex-col items-start gap-1 text-left">
|
|
19
|
+
<span className="font-neue-montreal-semibold text-[14px] leading-none tracking-[-0.28px] text-[#3f3f46]">
|
|
20
|
+
{title}
|
|
21
|
+
</span>
|
|
22
|
+
<span className="font-neue-montreal-medium text-[14px] leading-none tracking-[-0.28px] text-[#70707b]">
|
|
23
|
+
{subtitle}
|
|
24
|
+
</span>
|
|
25
|
+
</div>
|
|
26
|
+
<ChevronRight size={20} className="text-[#51525c]" />
|
|
27
|
+
</button>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default SettingsMenuItem;
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import app from "@b3dotfun/sdk/global-account/app";
|
|
2
|
+
import { useB3, useModalStore, useProfile } from "@b3dotfun/sdk/global-account/react";
|
|
3
|
+
import { formatUsername } from "@b3dotfun/sdk/shared/utils";
|
|
4
|
+
import { Check, Loader2, Pencil, X } from "lucide-react";
|
|
5
|
+
import { useEffect, useRef, useState } from "react";
|
|
6
|
+
import { toast } from "sonner";
|
|
7
|
+
import { useActiveAccount } from "thirdweb/react";
|
|
8
|
+
import { useFirstEOA } from "../../hooks/useFirstEOA";
|
|
9
|
+
import { IPFSMediaRenderer } from "../IPFSMediaRenderer/IPFSMediaRenderer";
|
|
10
|
+
|
|
11
|
+
const SettingsProfileCard = () => {
|
|
12
|
+
const account = useActiveAccount();
|
|
13
|
+
const { address: eoaAddress } = useFirstEOA();
|
|
14
|
+
const { data: profile, refetch: refreshProfile } = useProfile({
|
|
15
|
+
address: eoaAddress || account?.address,
|
|
16
|
+
fresh: true,
|
|
17
|
+
});
|
|
18
|
+
const { user, setUser } = useB3();
|
|
19
|
+
const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
|
|
20
|
+
const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
|
|
21
|
+
const navigateBack = useModalStore(state => state.navigateBack);
|
|
22
|
+
|
|
23
|
+
// State for inline username editing
|
|
24
|
+
const [isEditingUsername, setIsEditingUsername] = useState(false);
|
|
25
|
+
const [editedUsername, setEditedUsername] = useState("");
|
|
26
|
+
const [isSaving, setIsSaving] = useState(false);
|
|
27
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
|
28
|
+
|
|
29
|
+
// IPFSMediaRenderer will handle IPFS URL conversion and validation
|
|
30
|
+
const avatarSrc = user?.avatar || profile?.avatar;
|
|
31
|
+
|
|
32
|
+
// Get current username - prioritize user.username, fallback to profile data
|
|
33
|
+
const currentUsername = user?.username || profile?.displayName || formatUsername(profile?.name || "");
|
|
34
|
+
|
|
35
|
+
// Focus input when entering edit mode
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (isEditingUsername && inputRef.current) {
|
|
38
|
+
inputRef.current.focus();
|
|
39
|
+
inputRef.current.select();
|
|
40
|
+
}
|
|
41
|
+
}, [isEditingUsername]);
|
|
42
|
+
|
|
43
|
+
const handleEditAvatar = () => {
|
|
44
|
+
setB3ModalOpen(true);
|
|
45
|
+
setB3ModalContentType({
|
|
46
|
+
type: "avatarEditor",
|
|
47
|
+
onSuccess: () => {
|
|
48
|
+
// navigate back on success
|
|
49
|
+
navigateBack();
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const handleEditUsername = () => {
|
|
55
|
+
setEditedUsername(currentUsername || "");
|
|
56
|
+
setIsEditingUsername(true);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const handleCancelEdit = () => {
|
|
60
|
+
setIsEditingUsername(false);
|
|
61
|
+
setEditedUsername("");
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const handleSaveUsername = async () => {
|
|
65
|
+
if (!editedUsername.trim()) {
|
|
66
|
+
toast.error("Username cannot be empty");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (editedUsername === currentUsername) {
|
|
71
|
+
// No change, just exit edit mode
|
|
72
|
+
handleCancelEdit();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setIsSaving(true);
|
|
77
|
+
try {
|
|
78
|
+
const updatedUser = await app.service("users").registerUsername(
|
|
79
|
+
{ username: editedUsername.trim() },
|
|
80
|
+
// @ts-expect-error - our typed client is expecting context even though it's set elsewhere
|
|
81
|
+
{},
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
// Update user state - registerUsername returns an array with single user
|
|
85
|
+
setUser(Array.isArray(updatedUser) ? updatedUser[0] : updatedUser);
|
|
86
|
+
|
|
87
|
+
// Refresh profile to get updated data
|
|
88
|
+
await refreshProfile();
|
|
89
|
+
|
|
90
|
+
toast.success("Username updated successfully!");
|
|
91
|
+
setIsEditingUsername(false);
|
|
92
|
+
setEditedUsername("");
|
|
93
|
+
} catch (error) {
|
|
94
|
+
console.error("Error updating username:", error);
|
|
95
|
+
toast.error("Failed to update username. Please try again.");
|
|
96
|
+
} finally {
|
|
97
|
+
setIsSaving(false);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
|
102
|
+
if (e.key === "Enter") {
|
|
103
|
+
handleSaveUsername();
|
|
104
|
+
} else if (e.key === "Escape") {
|
|
105
|
+
handleCancelEdit();
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<div className="flex w-full items-center gap-3">
|
|
111
|
+
{/* Avatar with edit badge */}
|
|
112
|
+
<div className="relative shrink-0">
|
|
113
|
+
<IPFSMediaRenderer
|
|
114
|
+
src={avatarSrc}
|
|
115
|
+
alt="Profile"
|
|
116
|
+
className="border-black/8 size-14 rounded-full border object-cover"
|
|
117
|
+
/>
|
|
118
|
+
<button
|
|
119
|
+
onClick={handleEditAvatar}
|
|
120
|
+
className="absolute -bottom-0.5 -right-0.5 flex size-[18px] items-center justify-center rounded-full border-[1.5px] border-white bg-[#a0a0ab] transition-colors hover:bg-[#a0a0ab]/80"
|
|
121
|
+
aria-label="Edit avatar"
|
|
122
|
+
>
|
|
123
|
+
<Pencil size={10} className="text-white" strokeWidth={2.5} />
|
|
124
|
+
</button>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
{/* Username and edit link */}
|
|
128
|
+
<div className="flex shrink-0 flex-col gap-1">
|
|
129
|
+
{isEditingUsername ? (
|
|
130
|
+
/* Edit mode - inline input */
|
|
131
|
+
<div className="flex items-center gap-2">
|
|
132
|
+
<input
|
|
133
|
+
ref={inputRef}
|
|
134
|
+
type="text"
|
|
135
|
+
value={editedUsername}
|
|
136
|
+
onChange={e => setEditedUsername(e.target.value)}
|
|
137
|
+
onKeyDown={handleKeyDown}
|
|
138
|
+
disabled={isSaving}
|
|
139
|
+
className="border-b3-line bg-b3-background text-b3-grey placeholder:text-b3-foreground-muted font-neue-montreal-semibold focus:border-b3-primary-blue w-full rounded-md border px-2 py-1 text-lg leading-none transition-colors focus:outline-none disabled:opacity-50"
|
|
140
|
+
placeholder="Enter username"
|
|
141
|
+
/>
|
|
142
|
+
<div className="flex items-center gap-1">
|
|
143
|
+
<button
|
|
144
|
+
onClick={handleSaveUsername}
|
|
145
|
+
disabled={isSaving}
|
|
146
|
+
className="text-b3-primary-blue hover:text-b3-primary-blue/80 flex items-center justify-center rounded-md p-1 transition-colors disabled:opacity-50"
|
|
147
|
+
aria-label="Save username"
|
|
148
|
+
>
|
|
149
|
+
{isSaving ? <Loader2 size={18} className="animate-spin" /> : <Check size={18} strokeWidth={2.5} />}
|
|
150
|
+
</button>
|
|
151
|
+
<button
|
|
152
|
+
onClick={handleCancelEdit}
|
|
153
|
+
disabled={isSaving}
|
|
154
|
+
className="text-b3-foreground-muted hover:text-b3-grey flex items-center justify-center rounded-md p-1 transition-colors disabled:opacity-50"
|
|
155
|
+
aria-label="Cancel editing"
|
|
156
|
+
>
|
|
157
|
+
<X size={18} strokeWidth={2.5} />
|
|
158
|
+
</button>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
) : (
|
|
162
|
+
/* Display mode */
|
|
163
|
+
<>
|
|
164
|
+
<div className="flex items-center gap-1">
|
|
165
|
+
<p className="font-neue-montreal-semibold text-lg leading-none text-[#0B57C2]">{currentUsername}</p>
|
|
166
|
+
</div>
|
|
167
|
+
<button
|
|
168
|
+
onClick={handleEditUsername}
|
|
169
|
+
className="flex items-center justify-center gap-1 text-left transition-opacity hover:opacity-80"
|
|
170
|
+
>
|
|
171
|
+
<p className="font-inter text-sm font-semibold leading-5 text-[#51525C]">Edit Username</p>
|
|
172
|
+
</button>
|
|
173
|
+
</>
|
|
174
|
+
)}
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
177
|
+
);
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export default SettingsProfileCard;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useB3BalanceFromAddresses, useNativeBalance } from "@b3dotfun/sdk/global-account/react";
|
|
2
|
+
import { useActiveWallet } from "thirdweb/react";
|
|
3
|
+
import { B3TokenIcon, EthereumTokenIcon } from "../TokenIcon";
|
|
4
|
+
import { TokenBalanceRow } from "./TokenBalanceRow";
|
|
5
|
+
|
|
6
|
+
const TokenContent = () => {
|
|
7
|
+
// Get active wallet state
|
|
8
|
+
const activeWallet = useActiveWallet();
|
|
9
|
+
//const globalAccountWallet = useGlobalWalletState(state => state.globalAccountWallet);
|
|
10
|
+
const activeAccount = activeWallet?.getAccount();
|
|
11
|
+
const activeAddress = activeAccount?.address;
|
|
12
|
+
|
|
13
|
+
// Balance data fetching - use active wallet address
|
|
14
|
+
const { data: activeNativeBalance } = useNativeBalance(activeAddress);
|
|
15
|
+
const { data: activeB3Balance } = useB3BalanceFromAddresses(activeAddress);
|
|
16
|
+
|
|
17
|
+
if (!activeAddress) {
|
|
18
|
+
return <div className="col-span-3 py-12 text-center text-gray-500">No tokens found</div>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<div className="flex flex-col gap-3">
|
|
23
|
+
<TokenBalanceRow
|
|
24
|
+
icon={<B3TokenIcon className="size-10" />}
|
|
25
|
+
name="B3"
|
|
26
|
+
balance={`${activeB3Balance?.formattedTotal || "0.00"} B3`}
|
|
27
|
+
usdValue={activeB3Balance?.balanceUsdFormatted || "0.00"}
|
|
28
|
+
priceChange={activeB3Balance?.priceChange24h}
|
|
29
|
+
/>
|
|
30
|
+
<TokenBalanceRow
|
|
31
|
+
icon={<EthereumTokenIcon className="size-10" />}
|
|
32
|
+
name="Ethereum"
|
|
33
|
+
balance={`${activeNativeBalance?.formattedTotal || "0.00"} ETH`}
|
|
34
|
+
usdValue={activeNativeBalance?.formattedTotalUsd || "0.00"}
|
|
35
|
+
priceChange={activeNativeBalance?.priceChange24h}
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export default TokenContent;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { cn } from "@b3dotfun/sdk/shared/utils";
|
|
2
|
+
import { ChevronDown, X } from "lucide-react";
|
|
3
|
+
import { useModalStore } from "../../stores";
|
|
4
|
+
|
|
5
|
+
const ModalHeader = ({
|
|
6
|
+
handleBack,
|
|
7
|
+
handleClose,
|
|
8
|
+
title,
|
|
9
|
+
children,
|
|
10
|
+
showCloseButton = true,
|
|
11
|
+
className,
|
|
12
|
+
showBackWord = false,
|
|
13
|
+
}: {
|
|
14
|
+
handleBack?: () => void;
|
|
15
|
+
handleClose?: () => void;
|
|
16
|
+
title: string;
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
showCloseButton?: boolean;
|
|
19
|
+
className?: string;
|
|
20
|
+
showBackWord?: boolean;
|
|
21
|
+
}) => {
|
|
22
|
+
const navigateBack = useModalStore(state => state.navigateBack);
|
|
23
|
+
const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div
|
|
27
|
+
className={cn("flex h-16 items-center justify-between border-b border-[#e4e4e7] bg-white px-5 py-3", className)}
|
|
28
|
+
>
|
|
29
|
+
<button
|
|
30
|
+
onClick={handleBack || navigateBack}
|
|
31
|
+
className="flex h-6 w-6 items-center justify-center transition-opacity hover:opacity-70"
|
|
32
|
+
>
|
|
33
|
+
<ChevronDown className="h-6 w-6 rotate-90 text-[#51525c]" />
|
|
34
|
+
{showBackWord && <span className="text-sm font-medium">Back</span>}
|
|
35
|
+
</button>
|
|
36
|
+
<p className="font-inter text-lg font-semibold leading-7 text-[#18181b]">{title}</p>
|
|
37
|
+
{showCloseButton && (
|
|
38
|
+
<button
|
|
39
|
+
onClick={handleClose || (() => setB3ModalOpen(false))}
|
|
40
|
+
className="flex h-6 w-6 items-center justify-center transition-opacity hover:opacity-70"
|
|
41
|
+
>
|
|
42
|
+
<X className="h-6 w-6 text-[#51525c]" />
|
|
43
|
+
</button>
|
|
44
|
+
)}
|
|
45
|
+
{children}
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export default ModalHeader;
|