@0xsequence/marketplace-sdk 0.7.0 → 0.8.1
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/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.changeset/seven-doors-taste.md +5 -0
- package/CHANGELOG.md +13 -0
- package/dist/{chunk-MPBN3E54.js → chunk-2VHHJNXY.js} +3 -3
- package/dist/{chunk-FBUMNJQ4.js → chunk-3II5GLHE.js} +2 -2
- package/dist/chunk-3JU7SQVE.js +182 -0
- package/dist/chunk-3JU7SQVE.js.map +1 -0
- package/dist/{chunk-XTGMMNV5.js → chunk-A5ACY5YV.js} +2 -2
- package/dist/chunk-ABSYNRT5.js +128 -0
- package/dist/chunk-ABSYNRT5.js.map +1 -0
- package/dist/{chunk-XNA64MZQ.js → chunk-BCO4CYE4.js} +2 -2
- package/dist/{chunk-HTFORA4Q.js → chunk-BN36GABQ.js} +1883 -1010
- package/dist/chunk-BN36GABQ.js.map +1 -0
- package/dist/{chunk-4XK7XNJ7.js → chunk-BNAUZXPV.js} +73 -2
- package/dist/chunk-BNAUZXPV.js.map +1 -0
- package/dist/{chunk-Q5URKSC4.js → chunk-FMEEJFAF.js} +1 -1
- package/dist/{chunk-BBASZVT3.js → chunk-GBQVYNCD.js} +5 -6
- package/dist/chunk-GBQVYNCD.js.map +1 -0
- package/dist/{chunk-3AKOPSON.js → chunk-IZ44XPBH.js} +2 -9
- package/dist/chunk-IZ44XPBH.js.map +1 -0
- package/dist/{chunk-EAJ5K7QV.js → chunk-Q5RKAMYF.js} +3 -4
- package/dist/chunk-Q5RKAMYF.js.map +1 -0
- package/dist/{chunk-RBEPPVLT.js → chunk-X3QNSQER.js} +145 -355
- package/dist/chunk-X3QNSQER.js.map +1 -0
- package/dist/{index-CzTANLaA.d.ts → index-CnaFSNE9.d.ts} +6 -7
- package/dist/index.css +113 -31
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +4 -4
- package/dist/listCollectibles-B0tbqnRd.d.ts +155 -0
- package/dist/react/_internal/api/index.d.ts +28 -2
- package/dist/react/_internal/api/index.js +3 -1
- package/dist/react/_internal/databeat/index.js +10 -9
- package/dist/react/_internal/index.d.ts +2 -3
- package/dist/react/_internal/index.js +4 -4
- package/dist/react/_internal/wagmi/index.js +2 -2
- package/dist/react/hooks/index.d.ts +259 -674
- package/dist/react/hooks/index.js +11 -20
- package/dist/react/hooks/options/index.d.ts +1 -2
- package/dist/react/hooks/options/index.js +4 -4
- package/dist/react/index.d.ts +7 -7
- package/dist/react/index.js +15 -24
- package/dist/react/queries/index.d.ts +25 -0
- package/dist/react/queries/index.js +48 -0
- package/dist/react/queries/index.js.map +1 -0
- package/dist/react/ssr/index.js +3 -3
- package/dist/react/ui/components/collectible-card/index.d.ts +1 -6
- package/dist/react/ui/components/collectible-card/index.js +13 -12
- package/dist/react/ui/components/marketplace-logos/index.js +1 -1
- package/dist/react/ui/icons/index.js +6 -6
- package/dist/react/ui/index.d.ts +18 -22
- package/dist/react/ui/index.js +13 -12
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +6 -11
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +10 -9
- package/dist/types/index.js +2 -2
- package/dist/{types-Ct1uCT3M.d.ts → types-o_pKUpQG.d.ts} +2 -5
- package/dist/utils/index.d.ts +1 -5
- package/dist/utils/index.js +4 -4
- package/package.json +22 -16
- package/src/react/_internal/api/__mocks__/indexer.msw.ts +3 -1
- package/src/react/_internal/api/__mocks__/marketplace.msw.ts +1 -1
- package/src/react/_internal/api/__mocks__/metadata.msw.ts +14 -12
- package/src/react/_internal/api/index.ts +1 -0
- package/src/react/_internal/api/laos-api.ts +103 -0
- package/src/react/_internal/api/zod-schema.ts +3 -3
- package/src/react/_internal/types.ts +1 -10
- package/src/react/_internal/wallet/__tests__/wallet.test.ts +43 -0
- package/src/react/_internal/wallet/useWallet.ts +6 -3
- package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCancelOrder.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCollectible.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCollection.test.tsx +2 -2
- package/src/react/hooks/__tests__/useComparePrices.test.tsx +1 -1
- package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCurrencies.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCurrency.test.tsx +2 -2
- package/src/react/hooks/__tests__/useFilters.test.tsx +2 -2
- package/src/react/hooks/__tests__/useFloorOrder.test.tsx +2 -2
- package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +2 -2
- package/src/react/hooks/__tests__/useListCollectibles.test.tsx +3 -2
- package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
- package/src/react/hooks/__tests__/useRoyalty.test.tsx +1 -2
- package/src/react/hooks/index.ts +0 -1
- package/src/react/hooks/options/collectionOptions.ts +2 -3
- package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
- package/src/react/hooks/useCancelOrder.tsx +3 -3
- package/src/react/hooks/useCancelTransactionSteps.tsx +1 -1
- package/src/react/hooks/useCheckoutOptions.tsx +1 -2
- package/src/react/hooks/useCollectible.tsx +2 -3
- package/src/react/hooks/useCollectionBalanceDetails.tsx +1 -2
- package/src/react/hooks/useComparePrices.tsx +2 -9
- package/src/react/hooks/useConvertPriceToUSD.tsx +1 -4
- package/src/react/hooks/useCountListingsForCollectible.tsx +1 -2
- package/src/react/hooks/useCountOfCollectables.tsx +1 -2
- package/src/react/hooks/useCountOffersForCollectible.tsx +1 -2
- package/src/react/hooks/useCurrencies.tsx +1 -4
- package/src/react/hooks/useCurrency.tsx +3 -8
- package/src/react/hooks/useFilters.tsx +5 -4
- package/src/react/hooks/useFloorOrder.tsx +1 -2
- package/src/react/hooks/useGenerateCancelTransaction.tsx +3 -6
- package/src/react/hooks/useGenerateListingTransaction.tsx +2 -3
- package/src/react/hooks/useGenerateOfferTransaction.tsx +2 -3
- package/src/react/hooks/useGenerateSellTransaction.tsx +3 -6
- package/src/react/hooks/useHighestOffer.tsx +1 -1
- package/src/react/hooks/useListCollectibles.tsx +33 -61
- package/src/react/hooks/useListCollectiblesPaginated.tsx +2 -6
- package/src/react/hooks/useListListingsForCollectible.tsx +1 -2
- package/src/react/hooks/useListOffersForCollectible.tsx +1 -2
- package/src/react/hooks/useLowestListing.tsx +1 -2
- package/src/react/hooks/useRoyalty.tsx +3 -8
- package/src/react/hooks/useTransferTokens.tsx +2 -2
- package/src/react/queries/balanceOfCollectible.ts +9 -32
- package/src/react/queries/getTokenSupplies.ts +38 -0
- package/src/react/queries/index.ts +5 -0
- package/src/react/queries/listCollectibles.ts +96 -0
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/__tests__/ActionButton.test.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +4 -3
- package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +1 -1
- package/src/react/ui/components/collectible-card/CollectibleCard.tsx +2 -3
- package/src/react/ui/components/collectible-card/__tests__/CollectibleCard.test.tsx +1 -1
- package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +127 -0
- package/src/react/ui/modals/BuyModal/Modal.tsx +70 -85
- package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +85 -226
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +140 -0
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +67 -76
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -60
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useFees.test.tsx +1 -1
- package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +29 -13
- package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +26 -21
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +200 -0
- package/src/react/ui/modals/BuyModal/index.tsx +4 -14
- package/src/react/ui/modals/BuyModal/store.ts +71 -76
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +71 -7
- package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +1 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +1 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +9 -5
- package/src/react/ui/modals/CreateListingModal/store.ts +7 -2
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +103 -6
- package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +8 -4
- package/src/react/ui/modals/MakeOfferModal/store.ts +5 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +76 -4
- package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +1 -1
- package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
- package/src/react/ui/modals/SellModal/hooks/useSell.tsx +1 -1
- package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +16 -8
- package/src/react/ui/modals/SellModal/store.ts +5 -3
- package/src/react/ui/modals/TransferModal/_store.ts +15 -3
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +58 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +56 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +50 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +94 -66
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +22 -14
- package/src/react/ui/modals/TransferModal/index.tsx +72 -38
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +43 -42
- package/src/react/ui/modals/_internal/components/actionModal/store.ts +1 -2
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +9 -1
- package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +27 -12
- package/src/react/ui/modals/_internal/components/priceInput/__tests__/index.test.tsx +1 -1
- package/src/react/ui/modals/_internal/components/priceInput/index.tsx +19 -3
- package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +3 -0
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/ActionButtons.tsx +60 -0
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +30 -0
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +126 -0
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +25 -0
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +74 -0
- package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +1 -2
- package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +1 -2
- package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +1 -1
- package/src/react/ui/modals/_internal/components/transaction-footer/index.tsx +4 -7
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +1 -1
- package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +1 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +1 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +1 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +6 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +2 -2
- package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +10 -31
- package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +53 -0
- package/src/react/ui/modals/_internal/types.ts +2 -1
- package/src/types/waas-types.ts +38 -0
- package/src/utils/network.ts +2 -4
- package/test/const.ts +1 -1
- package/test/setup.ts +10 -0
- package/test/test-utils.tsx +31 -5
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/chunk-3AKOPSON.js.map +0 -1
- package/dist/chunk-4XK7XNJ7.js.map +0 -1
- package/dist/chunk-BBASZVT3.js.map +0 -1
- package/dist/chunk-EAJ5K7QV.js.map +0 -1
- package/dist/chunk-HTFORA4Q.js.map +0 -1
- package/dist/chunk-OFY7OFTL.js +0 -458
- package/dist/chunk-OFY7OFTL.js.map +0 -1
- package/dist/chunk-RBEPPVLT.js.map +0 -1
- package/src/react/hooks/__tests__/useGenerateBuyTransaction.test.tsx +0 -172
- package/src/react/hooks/useGenerateBuyTransaction.tsx +0 -80
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useBuyCollectable.test.tsx +0 -349
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useLoadData.test.tsx +0 -185
- package/src/react/ui/modals/BuyModal/hooks/useBuyCollectable.ts +0 -170
- package/src/react/ui/modals/BuyModal/modals/CheckoutModal.tsx +0 -47
- package/src/react/ui/modals/BuyModal/modals/Modal1155.tsx +0 -140
- package/src/react/ui/modals/BuyModal/modals/__tests__/CheckoutModal.test.tsx +0 -162
- package/src/react/ui/modals/BuyModal/modals/__tests__/Modal1155.test.tsx +0 -327
- package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/index.tsx +0 -124
- package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/store.ts +0 -12
- /package/dist/{chunk-MPBN3E54.js.map → chunk-2VHHJNXY.js.map} +0 -0
- /package/dist/{chunk-FBUMNJQ4.js.map → chunk-3II5GLHE.js.map} +0 -0
- /package/dist/{chunk-XTGMMNV5.js.map → chunk-A5ACY5YV.js.map} +0 -0
- /package/dist/{chunk-XNA64MZQ.js.map → chunk-BCO4CYE4.js.map} +0 -0
- /package/dist/{chunk-Q5URKSC4.js.map → chunk-FMEEJFAF.js.map} +0 -0
package/dist/chunk-OFY7OFTL.js
DELETED
|
@@ -1,458 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
MODAL_CONTENT_PROPS,
|
|
5
|
-
MODAL_OVERLAY_PROPS,
|
|
6
|
-
useSwitchChainModal,
|
|
7
|
-
useWallet
|
|
8
|
-
} from "./chunk-RBEPPVLT.js";
|
|
9
|
-
|
|
10
|
-
// src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx
|
|
11
|
-
import { useState as useState2 } from "react";
|
|
12
|
-
import { Button as Button3, Modal, Spinner, Text as Text4 } from "@0xsequence/design-system";
|
|
13
|
-
import { observer as observer3 } from "@legendapp/state/react";
|
|
14
|
-
|
|
15
|
-
// src/react/ui/modals/_internal/components/waasFeeOptionsBox/index.tsx
|
|
16
|
-
import { useWaasFeeOptions } from "@0xsequence/connect";
|
|
17
|
-
import { Button as Button2, Skeleton, Text as Text3, WarningIcon } from "@0xsequence/design-system";
|
|
18
|
-
import { observer as observer2 } from "@legendapp/state/react";
|
|
19
|
-
import { useEffect as useEffect2 } from "react";
|
|
20
|
-
import { zeroAddress as zeroAddress3 } from "viem";
|
|
21
|
-
import { useAccount } from "wagmi";
|
|
22
|
-
|
|
23
|
-
// src/react/hooks/useCurrencyBalance.tsx
|
|
24
|
-
import { skipToken, useQuery } from "@tanstack/react-query";
|
|
25
|
-
import { erc20Abi, formatUnits, zeroAddress } from "viem";
|
|
26
|
-
import { usePublicClient } from "wagmi";
|
|
27
|
-
function useCurrencyBalance({
|
|
28
|
-
currencyAddress,
|
|
29
|
-
chainId,
|
|
30
|
-
userAddress
|
|
31
|
-
}) {
|
|
32
|
-
const publicClient = usePublicClient({ chainId });
|
|
33
|
-
return useQuery({
|
|
34
|
-
queryKey: ["balance", currencyAddress, chainId, userAddress],
|
|
35
|
-
queryFn: !!userAddress && !!chainId && !!currencyAddress && !!publicClient ? async () => {
|
|
36
|
-
if (currencyAddress === zeroAddress) {
|
|
37
|
-
const balance2 = await publicClient.getBalance({
|
|
38
|
-
address: userAddress
|
|
39
|
-
});
|
|
40
|
-
return {
|
|
41
|
-
value: balance2,
|
|
42
|
-
formatted: formatUnits(balance2, 18)
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
const [balance, decimals] = await Promise.all([
|
|
46
|
-
publicClient.readContract({
|
|
47
|
-
address: currencyAddress,
|
|
48
|
-
abi: erc20Abi,
|
|
49
|
-
functionName: "balanceOf",
|
|
50
|
-
args: [userAddress]
|
|
51
|
-
}),
|
|
52
|
-
publicClient.readContract({
|
|
53
|
-
address: currencyAddress,
|
|
54
|
-
abi: erc20Abi,
|
|
55
|
-
functionName: "decimals"
|
|
56
|
-
})
|
|
57
|
-
]);
|
|
58
|
-
return {
|
|
59
|
-
value: balance,
|
|
60
|
-
formatted: formatUnits(balance, decimals)
|
|
61
|
-
};
|
|
62
|
-
} : skipToken
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx
|
|
67
|
-
import { Image, Text as Text2 } from "@0xsequence/design-system";
|
|
68
|
-
import { observer } from "@legendapp/state/react";
|
|
69
|
-
import { useEffect } from "react";
|
|
70
|
-
import { formatUnits as formatUnits2, zeroAddress as zeroAddress2 } from "viem";
|
|
71
|
-
|
|
72
|
-
// src/react/ui/components/_internals/custom-select/CustomSelect.tsx
|
|
73
|
-
import {
|
|
74
|
-
Button,
|
|
75
|
-
ChevronDownIcon,
|
|
76
|
-
DropdownMenuCheckboxItem,
|
|
77
|
-
DropdownMenuContent,
|
|
78
|
-
DropdownMenuPortal,
|
|
79
|
-
DropdownMenuRoot,
|
|
80
|
-
DropdownMenuTrigger,
|
|
81
|
-
Text
|
|
82
|
-
} from "@0xsequence/design-system";
|
|
83
|
-
import { useState } from "react";
|
|
84
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
85
|
-
var CustomSelect = ({
|
|
86
|
-
items,
|
|
87
|
-
onValueChange,
|
|
88
|
-
defaultValue,
|
|
89
|
-
placeholder = "Select an option",
|
|
90
|
-
disabled = false,
|
|
91
|
-
className,
|
|
92
|
-
testId = "custom-select"
|
|
93
|
-
}) => {
|
|
94
|
-
const [selectedItem, setSelectedItem] = useState(
|
|
95
|
-
defaultValue
|
|
96
|
-
);
|
|
97
|
-
const handleValueChange = (item) => {
|
|
98
|
-
setSelectedItem(item);
|
|
99
|
-
onValueChange?.(item.value);
|
|
100
|
-
};
|
|
101
|
-
return /* @__PURE__ */ jsxs(DropdownMenuRoot, { children: [
|
|
102
|
-
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx(
|
|
103
|
-
Button,
|
|
104
|
-
{
|
|
105
|
-
size: "xs",
|
|
106
|
-
label: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-1 truncate pr-3", children: [
|
|
107
|
-
/* @__PURE__ */ jsx(Text, { variant: "xsmall", color: "text100", fontWeight: "bold", children: selectedItem ? selectedItem.content : placeholder }),
|
|
108
|
-
/* @__PURE__ */ jsx(ChevronDownIcon, { size: "xs" })
|
|
109
|
-
] }),
|
|
110
|
-
shape: "circle",
|
|
111
|
-
opacity: "100",
|
|
112
|
-
className: `bg-overlay-light py-1.5 pl-3 ${className || ""}`,
|
|
113
|
-
"data-testid": `${testId}-trigger`
|
|
114
|
-
}
|
|
115
|
-
) }),
|
|
116
|
-
/* @__PURE__ */ jsx(DropdownMenuPortal, { children: /* @__PURE__ */ jsx(
|
|
117
|
-
DropdownMenuContent,
|
|
118
|
-
{
|
|
119
|
-
align: "end",
|
|
120
|
-
side: "bottom",
|
|
121
|
-
sideOffset: 8,
|
|
122
|
-
className: "z-[1000] overflow-hidden rounded-xl border border-border-base bg-color-overlay-glass shadow-lg backdrop-blur-md",
|
|
123
|
-
"data-testid": `${testId}-content`,
|
|
124
|
-
children: /* @__PURE__ */ jsx("div", { className: "max-h-[240px] overflow-auto", children: items.map((item) => /* @__PURE__ */ jsx(
|
|
125
|
-
DropdownMenuCheckboxItem,
|
|
126
|
-
{
|
|
127
|
-
checked: selectedItem?.value === item.value,
|
|
128
|
-
onCheckedChange: () => handleValueChange(item),
|
|
129
|
-
disabled: item.disabled,
|
|
130
|
-
className: "group relative flex cursor-pointer select-none items-center rounded-lg px-2 py-1.5 outline-none transition-colors hover:bg-background-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>span[data-state='checked']]:hidden",
|
|
131
|
-
"data-testid": `${testId}-option-${item.value}`,
|
|
132
|
-
children: /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-between", children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 truncate", children: typeof item.content === "string" ? /* @__PURE__ */ jsx(
|
|
133
|
-
Text,
|
|
134
|
-
{
|
|
135
|
-
variant: "small",
|
|
136
|
-
color: selectedItem?.value === item.value ? "text100" : "text80",
|
|
137
|
-
className: `truncate ${selectedItem?.value === item.value ? "font-bold" : ""}`,
|
|
138
|
-
"data-testid": `${testId}-option-text-${item.value}`,
|
|
139
|
-
children: item.content
|
|
140
|
-
}
|
|
141
|
-
) : /* @__PURE__ */ jsx(
|
|
142
|
-
"div",
|
|
143
|
-
{
|
|
144
|
-
className: "truncate",
|
|
145
|
-
"data-testid": `${testId}-option-content-${item.value}`,
|
|
146
|
-
children: item.content
|
|
147
|
-
}
|
|
148
|
-
) }) })
|
|
149
|
-
},
|
|
150
|
-
item.value
|
|
151
|
-
)) })
|
|
152
|
-
}
|
|
153
|
-
) })
|
|
154
|
-
] });
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx
|
|
158
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
159
|
-
var WaasFeeOptionsSelect = observer(
|
|
160
|
-
({
|
|
161
|
-
options,
|
|
162
|
-
selectedFeeOption$
|
|
163
|
-
}) => {
|
|
164
|
-
options = options.map((option) => ({
|
|
165
|
-
...option,
|
|
166
|
-
token: {
|
|
167
|
-
...option.token,
|
|
168
|
-
contractAddress: option.token.contractAddress || zeroAddress2
|
|
169
|
-
}
|
|
170
|
-
}));
|
|
171
|
-
const feeOptions = options.map((option) => {
|
|
172
|
-
const value = option.token.contractAddress ?? "";
|
|
173
|
-
return FeeOptionSelectItem({ value, option });
|
|
174
|
-
});
|
|
175
|
-
useEffect(() => {
|
|
176
|
-
if (options.length > 0 && !selectedFeeOption$.get())
|
|
177
|
-
selectedFeeOption$.set(options[0]);
|
|
178
|
-
}, [options]);
|
|
179
|
-
if (options.length === 0 || !selectedFeeOption$.get()?.token) return null;
|
|
180
|
-
return /* @__PURE__ */ jsx2(
|
|
181
|
-
CustomSelect,
|
|
182
|
-
{
|
|
183
|
-
items: feeOptions,
|
|
184
|
-
onValueChange: (value) => {
|
|
185
|
-
const selectedOption = options.find(
|
|
186
|
-
(option) => option.token.contractAddress === value
|
|
187
|
-
);
|
|
188
|
-
selectedFeeOption$.set(selectedOption);
|
|
189
|
-
},
|
|
190
|
-
defaultValue: selectedFeeOption$.get()?.token.contractAddress ? FeeOptionSelectItem({
|
|
191
|
-
value: selectedFeeOption$.get()?.token.contractAddress ?? "",
|
|
192
|
-
option: selectedFeeOption$.get() ?? options[0]
|
|
193
|
-
}) : void 0
|
|
194
|
-
}
|
|
195
|
-
);
|
|
196
|
-
}
|
|
197
|
-
);
|
|
198
|
-
function FeeOptionSelectItem({
|
|
199
|
-
value,
|
|
200
|
-
option
|
|
201
|
-
}) {
|
|
202
|
-
return {
|
|
203
|
-
value,
|
|
204
|
-
content: /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
|
|
205
|
-
/* @__PURE__ */ jsx2(
|
|
206
|
-
Image,
|
|
207
|
-
{
|
|
208
|
-
className: "h-3 w-3",
|
|
209
|
-
src: option.token.logoURL,
|
|
210
|
-
alt: option.token.symbol
|
|
211
|
-
}
|
|
212
|
-
),
|
|
213
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex gap-1", children: [
|
|
214
|
-
/* @__PURE__ */ jsx2(Text2, { className: "font-body text-sm", color: "text100", children: "Fee" }),
|
|
215
|
-
/* @__PURE__ */ jsxs2(
|
|
216
|
-
Text2,
|
|
217
|
-
{
|
|
218
|
-
className: "font-body text-sm",
|
|
219
|
-
color: "text50",
|
|
220
|
-
fontWeight: "semibold",
|
|
221
|
-
children: [
|
|
222
|
-
"(in ",
|
|
223
|
-
option.token.symbol,
|
|
224
|
-
")"
|
|
225
|
-
]
|
|
226
|
-
}
|
|
227
|
-
),
|
|
228
|
-
/* @__PURE__ */ jsx2(Text2, { className: "font-body text-sm", color: "text100", children: ":" })
|
|
229
|
-
] }),
|
|
230
|
-
/* @__PURE__ */ jsx2(Text2, { className: "font-body text-sm", children: formatUnits2(BigInt(option.value), option.token.decimals || 0) })
|
|
231
|
-
] })
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
var WaasFeeOptionsSelect_default = WaasFeeOptionsSelect;
|
|
235
|
-
|
|
236
|
-
// src/react/ui/modals/_internal/components/waasFeeOptionsBox/store.ts
|
|
237
|
-
import { observable } from "@legendapp/state";
|
|
238
|
-
var initialState = {
|
|
239
|
-
selectedFeeOption: void 0
|
|
240
|
-
};
|
|
241
|
-
var waasFeeOptionsModal$ = observable(initialState);
|
|
242
|
-
|
|
243
|
-
// src/react/ui/modals/_internal/components/waasFeeOptionsBox/index.tsx
|
|
244
|
-
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
245
|
-
var WaasFeeOptionsBox = observer2(
|
|
246
|
-
({
|
|
247
|
-
onFeeOptionsLoaded,
|
|
248
|
-
onFeeOptionConfirmed,
|
|
249
|
-
chainId
|
|
250
|
-
}) => {
|
|
251
|
-
const { address: userAddress } = useAccount();
|
|
252
|
-
const selectedFeeOption$ = waasFeeOptionsModal$.selectedFeeOption;
|
|
253
|
-
const [pendingFeeOptionConfirmation, confirmPendingFeeOption] = useWaasFeeOptions();
|
|
254
|
-
const { data: currencyBalance, isLoading: currencyBalanceLoading } = useCurrencyBalance({
|
|
255
|
-
chainId,
|
|
256
|
-
currencyAddress: selectedFeeOption$.token.contractAddress.get() || zeroAddress3,
|
|
257
|
-
userAddress
|
|
258
|
-
});
|
|
259
|
-
useEffect2(() => {
|
|
260
|
-
if (pendingFeeOptionConfirmation) {
|
|
261
|
-
onFeeOptionsLoaded();
|
|
262
|
-
}
|
|
263
|
-
}, [pendingFeeOptionConfirmation]);
|
|
264
|
-
const selectedFeeOption = selectedFeeOption$.get();
|
|
265
|
-
const insufficientBalance = (() => {
|
|
266
|
-
if (!selectedFeeOption?.value || !selectedFeeOption.token.decimals) {
|
|
267
|
-
return false;
|
|
268
|
-
}
|
|
269
|
-
if (!currencyBalance?.value && currencyBalance?.value !== 0n) {
|
|
270
|
-
return true;
|
|
271
|
-
}
|
|
272
|
-
try {
|
|
273
|
-
const feeValue = BigInt(selectedFeeOption.value);
|
|
274
|
-
return currencyBalance.value === 0n || currencyBalance.value < feeValue;
|
|
275
|
-
} catch {
|
|
276
|
-
return true;
|
|
277
|
-
}
|
|
278
|
-
})();
|
|
279
|
-
const handleConfirmFeeOption = () => {
|
|
280
|
-
if (!selectedFeeOption?.token || !pendingFeeOptionConfirmation?.id)
|
|
281
|
-
return;
|
|
282
|
-
confirmPendingFeeOption(
|
|
283
|
-
pendingFeeOptionConfirmation?.id,
|
|
284
|
-
selectedFeeOption.token.contractAddress || zeroAddress3
|
|
285
|
-
);
|
|
286
|
-
onFeeOptionConfirmed();
|
|
287
|
-
};
|
|
288
|
-
if (!pendingFeeOptionConfirmation) return null;
|
|
289
|
-
return /* @__PURE__ */ jsxs3("div", { className: "absolute bottom-[-140px] left-0 flex w-full flex-col gap-2 rounded-2xl bg-button-emphasis p-4 backdrop-blur-md", children: [
|
|
290
|
-
/* @__PURE__ */ jsx3(Text3, { className: "mb-2 font-body text-large", fontWeight: "bold", children: "Select a fee option" }),
|
|
291
|
-
/* @__PURE__ */ jsx3(
|
|
292
|
-
WaasFeeOptionsSelect_default,
|
|
293
|
-
{
|
|
294
|
-
options: pendingFeeOptionConfirmation?.options || [],
|
|
295
|
-
selectedFeeOption$
|
|
296
|
-
}
|
|
297
|
-
),
|
|
298
|
-
/* @__PURE__ */ jsxs3("div", { className: "flex w-full items-center justify-between", children: [
|
|
299
|
-
currencyBalanceLoading ? /* @__PURE__ */ jsx3(Skeleton, { className: "w-1/3 rounded-xl", style: { height: 15 } }) : /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
|
|
300
|
-
insufficientBalance && /* @__PURE__ */ jsx3(WarningIcon, { className: "text-negative", size: "xs" }),
|
|
301
|
-
/* @__PURE__ */ jsxs3(
|
|
302
|
-
Text3,
|
|
303
|
-
{
|
|
304
|
-
className: "font-body text-sm",
|
|
305
|
-
fontWeight: "semibold",
|
|
306
|
-
color: insufficientBalance ? "negative" : "text100",
|
|
307
|
-
children: [
|
|
308
|
-
"You have ",
|
|
309
|
-
currencyBalance?.formatted || "0",
|
|
310
|
-
" ",
|
|
311
|
-
selectedFeeOption?.token.symbol
|
|
312
|
-
]
|
|
313
|
-
}
|
|
314
|
-
)
|
|
315
|
-
] }),
|
|
316
|
-
/* @__PURE__ */ jsx3(
|
|
317
|
-
Button2,
|
|
318
|
-
{
|
|
319
|
-
disabled: !selectedFeeOption?.token || insufficientBalance || currencyBalanceLoading,
|
|
320
|
-
pending: currencyBalanceLoading,
|
|
321
|
-
onClick: handleConfirmFeeOption,
|
|
322
|
-
label: /* @__PURE__ */ jsx3("div", { className: "flex items-center gap-2", children: "Confirm" }),
|
|
323
|
-
variant: insufficientBalance ? "danger" : "primary",
|
|
324
|
-
size: "xs"
|
|
325
|
-
}
|
|
326
|
-
)
|
|
327
|
-
] })
|
|
328
|
-
] });
|
|
329
|
-
}
|
|
330
|
-
);
|
|
331
|
-
var waasFeeOptionsBox_default = WaasFeeOptionsBox;
|
|
332
|
-
|
|
333
|
-
// src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx
|
|
334
|
-
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
335
|
-
var ActionModal = observer3(
|
|
336
|
-
({
|
|
337
|
-
isOpen,
|
|
338
|
-
onClose,
|
|
339
|
-
title,
|
|
340
|
-
children,
|
|
341
|
-
ctas,
|
|
342
|
-
chainId,
|
|
343
|
-
disableAnimation,
|
|
344
|
-
modalLoading,
|
|
345
|
-
spinnerContainerClassname
|
|
346
|
-
}) => {
|
|
347
|
-
const [isSelectingFees, setIsSelectingFees] = useState2(false);
|
|
348
|
-
const { show: showSwitchChainModal } = useSwitchChainModal();
|
|
349
|
-
const { wallet } = useWallet();
|
|
350
|
-
const checkChain = async ({ onSuccess }) => {
|
|
351
|
-
const walletChainId = await wallet?.getChainId();
|
|
352
|
-
const chainMismatch = walletChainId !== Number(chainId);
|
|
353
|
-
if (chainMismatch) {
|
|
354
|
-
showSwitchChainModal({
|
|
355
|
-
chainIdToSwitchTo: Number(chainId),
|
|
356
|
-
onSuccess
|
|
357
|
-
});
|
|
358
|
-
} else {
|
|
359
|
-
onSuccess();
|
|
360
|
-
}
|
|
361
|
-
};
|
|
362
|
-
if (wallet?.isWaaS) {
|
|
363
|
-
wallet.switchChain(Number(chainId));
|
|
364
|
-
}
|
|
365
|
-
if (!isOpen || !chainId) {
|
|
366
|
-
return null;
|
|
367
|
-
}
|
|
368
|
-
return /* @__PURE__ */ jsxs4(
|
|
369
|
-
Modal,
|
|
370
|
-
{
|
|
371
|
-
isDismissible: true,
|
|
372
|
-
onClose,
|
|
373
|
-
overlayProps: MODAL_OVERLAY_PROPS,
|
|
374
|
-
contentProps: MODAL_CONTENT_PROPS,
|
|
375
|
-
disableAnimation,
|
|
376
|
-
children: [
|
|
377
|
-
/* @__PURE__ */ jsxs4("div", { className: "relative flex grow flex-col items-center gap-4 p-6", children: [
|
|
378
|
-
/* @__PURE__ */ jsx4(
|
|
379
|
-
Text4,
|
|
380
|
-
{
|
|
381
|
-
className: "w-full text-center font-body text-large",
|
|
382
|
-
fontWeight: "bold",
|
|
383
|
-
color: "text100",
|
|
384
|
-
children: title
|
|
385
|
-
}
|
|
386
|
-
),
|
|
387
|
-
modalLoading ? /* @__PURE__ */ jsx4(
|
|
388
|
-
"div",
|
|
389
|
-
{
|
|
390
|
-
className: `flex ${spinnerContainerClassname} w-full items-center justify-center`,
|
|
391
|
-
children: /* @__PURE__ */ jsx4(Spinner, { size: "lg" })
|
|
392
|
-
}
|
|
393
|
-
) : children,
|
|
394
|
-
/* @__PURE__ */ jsx4("div", { className: "flex w-full flex-col gap-2", children: ctas.map(
|
|
395
|
-
(cta) => !cta.hidden && /* @__PURE__ */ jsx4(
|
|
396
|
-
Button3,
|
|
397
|
-
{
|
|
398
|
-
className: "w-full rounded-[12px] [&>div]:justify-center",
|
|
399
|
-
onClick: async () => {
|
|
400
|
-
await checkChain({
|
|
401
|
-
onSuccess: () => {
|
|
402
|
-
cta.onClick();
|
|
403
|
-
}
|
|
404
|
-
});
|
|
405
|
-
},
|
|
406
|
-
variant: cta.variant || "primary",
|
|
407
|
-
pending: cta.pending,
|
|
408
|
-
disabled: cta.disabled || isSelectingFees,
|
|
409
|
-
size: "lg",
|
|
410
|
-
"data-testid": cta.testid,
|
|
411
|
-
label: /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-center gap-2", children: [
|
|
412
|
-
cta.pending && /* @__PURE__ */ jsx4(Spinner, { size: "sm" }),
|
|
413
|
-
cta.label
|
|
414
|
-
] })
|
|
415
|
-
},
|
|
416
|
-
cta.label
|
|
417
|
-
)
|
|
418
|
-
) })
|
|
419
|
-
] }),
|
|
420
|
-
/* @__PURE__ */ jsx4(
|
|
421
|
-
waasFeeOptionsBox_default,
|
|
422
|
-
{
|
|
423
|
-
chainId,
|
|
424
|
-
onFeeOptionsLoaded: () => setIsSelectingFees(true),
|
|
425
|
-
onFeeOptionConfirmed: () => setIsSelectingFees(false)
|
|
426
|
-
}
|
|
427
|
-
)
|
|
428
|
-
]
|
|
429
|
-
}
|
|
430
|
-
);
|
|
431
|
-
}
|
|
432
|
-
);
|
|
433
|
-
|
|
434
|
-
// src/react/ui/modals/_internal/components/actionModal/store.ts
|
|
435
|
-
import { observable as observable2 } from "@legendapp/state";
|
|
436
|
-
function createActionModalStore() {
|
|
437
|
-
return observable2({
|
|
438
|
-
isOpen: false,
|
|
439
|
-
chainId: null,
|
|
440
|
-
collectionAddress: null
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
function openModal(store) {
|
|
444
|
-
store.isOpen.set(true);
|
|
445
|
-
}
|
|
446
|
-
function closeModal(store) {
|
|
447
|
-
store.isOpen.set(false);
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
export {
|
|
451
|
-
useCurrencyBalance,
|
|
452
|
-
CustomSelect,
|
|
453
|
-
ActionModal,
|
|
454
|
-
createActionModalStore,
|
|
455
|
-
openModal,
|
|
456
|
-
closeModal
|
|
457
|
-
};
|
|
458
|
-
//# sourceMappingURL=chunk-OFY7OFTL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx","../src/react/ui/modals/_internal/components/waasFeeOptionsBox/index.tsx","../src/react/hooks/useCurrencyBalance.tsx","../src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx","../src/react/ui/components/_internals/custom-select/CustomSelect.tsx","../src/react/ui/modals/_internal/components/waasFeeOptionsBox/store.ts","../src/react/ui/modals/_internal/components/actionModal/store.ts"],"sourcesContent":["'use client';\n\nimport type React from 'react';\nimport { type ComponentProps, useState } from 'react';\n\nimport { Button, Modal, Spinner, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { useWallet } from '../../../../../_internal/wallet/useWallet';\nimport { MODAL_OVERLAY_PROPS } from '../consts';\nimport { MODAL_CONTENT_PROPS } from '../consts';\nimport { useSwitchChainModal } from '../switchChainModal';\nimport WaasFeeOptionsBox from '../waasFeeOptionsBox';\n\nexport interface ActionModalProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\ttitle: string;\n\tchildren: React.ReactNode;\n\tctas: {\n\t\tlabel: string;\n\t\tonClick: (() => Promise<void>) | (() => void);\n\t\tpending?: boolean;\n\t\tdisabled?: boolean;\n\t\thidden?: boolean;\n\t\tvariant?: ComponentProps<typeof Button>['variant'];\n\t\ttestid?: string;\n\t}[];\n\tchainId: number;\n\tmodalLoading?: boolean;\n\tspinnerContainerClassname?: string;\n\tdisableAnimation?: boolean;\n}\n\nexport const ActionModal = observer(\n\t({\n\t\tisOpen,\n\t\tonClose,\n\t\ttitle,\n\t\tchildren,\n\t\tctas,\n\t\tchainId,\n\t\tdisableAnimation,\n\t\tmodalLoading,\n\t\tspinnerContainerClassname,\n\t}: ActionModalProps) => {\n\t\tconst [isSelectingFees, setIsSelectingFees] = useState(false);\n\t\tconst { show: showSwitchChainModal } = useSwitchChainModal();\n\t\tconst { wallet } = useWallet();\n\n\t\tconst checkChain = async ({ onSuccess }: { onSuccess: () => void }) => {\n\t\t\tconst walletChainId = await wallet?.getChainId();\n\t\t\tconst chainMismatch = walletChainId !== Number(chainId);\n\t\t\tif (chainMismatch) {\n\t\t\t\tshowSwitchChainModal({\n\t\t\t\t\tchainIdToSwitchTo: Number(chainId),\n\t\t\t\t\tonSuccess,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tonSuccess();\n\t\t\t}\n\t\t};\n\n\t\tif (wallet?.isWaaS) {\n\t\t\twallet.switchChain(Number(chainId));\n\t\t}\n\n\t\tif (!isOpen || !chainId) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tisDismissible={true}\n\t\t\t\tonClose={onClose}\n\t\t\t\toverlayProps={MODAL_OVERLAY_PROPS}\n\t\t\t\tcontentProps={MODAL_CONTENT_PROPS}\n\t\t\t\tdisableAnimation={disableAnimation}\n\t\t\t>\n\t\t\t\t<div className=\"relative flex grow flex-col items-center gap-4 p-6\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\tclassName=\"w-full text-center font-body text-large\"\n\t\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t{modalLoading ? (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`flex ${spinnerContainerClassname} w-full items-center justify-center`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Spinner size=\"lg\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tchildren\n\t\t\t\t\t)}\n\n\t\t\t\t\t<div className=\"flex w-full flex-col gap-2\">\n\t\t\t\t\t\t{ctas.map(\n\t\t\t\t\t\t\t(cta) =>\n\t\t\t\t\t\t\t\t!cta.hidden && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded-[12px] [&>div]:justify-center\"\n\t\t\t\t\t\t\t\t\t\tkey={cta.label}\n\t\t\t\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\t\t\t\tawait checkChain({\n\t\t\t\t\t\t\t\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcta.onClick();\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tvariant={cta.variant || 'primary'}\n\t\t\t\t\t\t\t\t\t\tpending={cta.pending}\n\t\t\t\t\t\t\t\t\t\tdisabled={cta.disabled || isSelectingFees}\n\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\t\t\tdata-testid={cta.testid}\n\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{cta.pending && <Spinner size=\"sm\" />}\n\n\t\t\t\t\t\t\t\t\t\t\t\t{cta.label}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<WaasFeeOptionsBox\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\tonFeeOptionsLoaded={() => setIsSelectingFees(true)}\n\t\t\t\t\tonFeeOptionConfirmed={() => setIsSelectingFees(false)}\n\t\t\t\t/>\n\t\t\t</Modal>\n\t\t);\n\t},\n);\n","'use client';\n\nimport { useWaasFeeOptions } from '@0xsequence/connect';\nimport { Button, Skeleton, Text, WarningIcon } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { useEffect } from 'react';\nimport { type Hex, zeroAddress } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { useCurrencyBalance } from '../../../../../hooks/useCurrencyBalance';\nimport WaasFeeOptionsSelect, {\n\ttype FeeOption,\n} from '../waasFeeOptionsSelect/WaasFeeOptionsSelect';\nimport { waasFeeOptionsModal$ } from './store';\n\ntype WaasFeeOptionsBoxProps = {\n\tonFeeOptionsLoaded: () => void;\n\tonFeeOptionConfirmed: () => void;\n\tchainId: number;\n};\n\nconst WaasFeeOptionsBox = observer(\n\t({\n\t\tonFeeOptionsLoaded,\n\t\tonFeeOptionConfirmed,\n\t\tchainId,\n\t}: WaasFeeOptionsBoxProps) => {\n\t\tconst { address: userAddress } = useAccount();\n\t\tconst selectedFeeOption$ = waasFeeOptionsModal$.selectedFeeOption;\n\t\tconst [pendingFeeOptionConfirmation, confirmPendingFeeOption] =\n\t\t\tuseWaasFeeOptions();\n\t\tconst { data: currencyBalance, isLoading: currencyBalanceLoading } =\n\t\t\tuseCurrencyBalance({\n\t\t\t\tchainId,\n\t\t\t\tcurrencyAddress: (selectedFeeOption$.token.contractAddress.get() ||\n\t\t\t\t\tzeroAddress) as Hex,\n\t\t\t\tuserAddress: userAddress as Hex,\n\t\t\t});\n\n\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\t\tuseEffect(() => {\n\t\t\tif (pendingFeeOptionConfirmation) {\n\t\t\t\tonFeeOptionsLoaded();\n\t\t\t}\n\t\t}, [pendingFeeOptionConfirmation]);\n\n\t\tconst selectedFeeOption = selectedFeeOption$.get();\n\t\tconst insufficientBalance = (() => {\n\t\t\tif (!selectedFeeOption?.value || !selectedFeeOption.token.decimals) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!currencyBalance?.value && currencyBalance?.value !== 0n) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst feeValue = BigInt(selectedFeeOption.value);\n\t\t\t\treturn currencyBalance.value === 0n || currencyBalance.value < feeValue;\n\t\t\t} catch {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t})();\n\n\t\tconst handleConfirmFeeOption = () => {\n\t\t\tif (!selectedFeeOption?.token || !pendingFeeOptionConfirmation?.id)\n\t\t\t\treturn;\n\n\t\t\tconfirmPendingFeeOption(\n\t\t\t\tpendingFeeOptionConfirmation?.id,\n\t\t\t\tselectedFeeOption.token.contractAddress || zeroAddress,\n\t\t\t);\n\n\t\t\tonFeeOptionConfirmed();\n\t\t};\n\n\t\tif (!pendingFeeOptionConfirmation) return null;\n\n\t\treturn (\n\t\t\t<div className=\"absolute bottom-[-140px] left-0 flex w-full flex-col gap-2 rounded-2xl bg-button-emphasis p-4 backdrop-blur-md\">\n\t\t\t\t<Text className=\"mb-2 font-body text-large\" fontWeight=\"bold\">\n\t\t\t\t\tSelect a fee option\n\t\t\t\t</Text>\n\t\t\t\t<WaasFeeOptionsSelect\n\t\t\t\t\toptions={(pendingFeeOptionConfirmation?.options as FeeOption[]) || []}\n\t\t\t\t\tselectedFeeOption$={selectedFeeOption$}\n\t\t\t\t/>\n\t\t\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t\t\t{currencyBalanceLoading ? (\n\t\t\t\t\t\t<Skeleton className=\"w-1/3 rounded-xl\" style={{ height: 15 }} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t{insufficientBalance && (\n\t\t\t\t\t\t\t\t<WarningIcon className=\"text-negative\" size=\"xs\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tclassName=\"font-body text-sm\"\n\t\t\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\t\t\tcolor={insufficientBalance ? 'negative' : 'text100'}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tYou have {currencyBalance?.formatted || '0'}{' '}\n\t\t\t\t\t\t\t\t{selectedFeeOption?.token.symbol}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t!selectedFeeOption?.token ||\n\t\t\t\t\t\t\tinsufficientBalance ||\n\t\t\t\t\t\t\tcurrencyBalanceLoading\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpending={currencyBalanceLoading}\n\t\t\t\t\t\tonClick={handleConfirmFeeOption}\n\t\t\t\t\t\tlabel={<div className=\"flex items-center gap-2\">Confirm</div>}\n\t\t\t\t\t\tvariant={insufficientBalance ? 'danger' : 'primary'}\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nexport default WaasFeeOptionsBox;\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { type Address, erc20Abi, formatUnits, zeroAddress } from 'viem';\nimport { usePublicClient } from 'wagmi';\nexport function useCurrencyBalance({\n\tcurrencyAddress,\n\tchainId,\n\tuserAddress,\n}: {\n\tcurrencyAddress: Address | undefined;\n\tchainId: number | undefined;\n\tuserAddress: Address | undefined;\n}) {\n\tconst publicClient = usePublicClient({ chainId });\n\n\treturn useQuery({\n\t\tqueryKey: ['balance', currencyAddress, chainId, userAddress],\n\t\tqueryFn:\n\t\t\t!!userAddress && !!chainId && !!currencyAddress && !!publicClient\n\t\t\t\t? async () => {\n\t\t\t\t\t\tif (currencyAddress === zeroAddress) {\n\t\t\t\t\t\t\tconst balance = await publicClient.getBalance({\n\t\t\t\t\t\t\t\taddress: userAddress,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tvalue: balance,\n\t\t\t\t\t\t\t\tformatted: formatUnits(balance, 18),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst [balance, decimals] = await Promise.all([\n\t\t\t\t\t\t\tpublicClient.readContract({\n\t\t\t\t\t\t\t\taddress: currencyAddress,\n\t\t\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\t\t\tfunctionName: 'balanceOf',\n\t\t\t\t\t\t\t\targs: [userAddress],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tpublicClient.readContract({\n\t\t\t\t\t\t\t\taddress: currencyAddress,\n\t\t\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\t\t\tfunctionName: 'decimals',\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: balance,\n\t\t\t\t\t\t\tformatted: formatUnits(balance, decimals),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t: skipToken,\n\t});\n}\n","'use client';\n\nimport { Image, Text } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { useEffect } from 'react';\nimport { formatUnits, zeroAddress } from 'viem';\nimport {\n\tCustomSelect,\n\ttype SelectItem,\n} from '../../../../components/_internals/custom-select/CustomSelect';\n\nexport type FeeOption = {\n\tgasLimit: number;\n\tto: string;\n\ttoken: {\n\t\tchainId: number;\n\t\tcontractAddress: string | null;\n\t\tdecimals: number;\n\t\tlogoURL: string;\n\t\tname: string;\n\t\tsymbol: string;\n\t\ttokenID: string | null;\n\t\ttype: string;\n\t};\n\tvalue: string;\n};\n\nconst WaasFeeOptionsSelect = observer(\n\t({\n\t\toptions,\n\t\tselectedFeeOption$,\n\t}: {\n\t\toptions: FeeOption[];\n\t\tselectedFeeOption$: Observable<FeeOption | undefined>;\n\t}) => {\n\t\toptions = options.map((option) => ({\n\t\t\t...option,\n\t\t\ttoken: {\n\t\t\t\t...option.token,\n\t\t\t\tcontractAddress: option.token.contractAddress || zeroAddress,\n\t\t\t},\n\t\t}));\n\n\t\tconst feeOptions = options.map((option) => {\n\t\t\tconst value = option.token.contractAddress ?? '';\n\n\t\t\treturn FeeOptionSelectItem({ value, option });\n\t\t});\n\n\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\t\tuseEffect(() => {\n\t\t\tif (options.length > 0 && !selectedFeeOption$.get())\n\t\t\t\tselectedFeeOption$.set(options[0]);\n\t\t}, [options]);\n\n\t\tif (options.length === 0 || !selectedFeeOption$.get()?.token) return null;\n\n\t\treturn (\n\t\t\t<CustomSelect\n\t\t\t\titems={feeOptions}\n\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\tconst selectedOption = options.find(\n\t\t\t\t\t\t(option) => option.token.contractAddress === value,\n\t\t\t\t\t);\n\n\t\t\t\t\tselectedFeeOption$.set(selectedOption);\n\t\t\t\t}}\n\t\t\t\tdefaultValue={\n\t\t\t\t\tselectedFeeOption$.get()?.token.contractAddress\n\t\t\t\t\t\t? FeeOptionSelectItem({\n\t\t\t\t\t\t\t\tvalue: selectedFeeOption$.get()?.token.contractAddress ?? '',\n\t\t\t\t\t\t\t\toption: selectedFeeOption$.get() ?? options[0],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nfunction FeeOptionSelectItem({\n\tvalue,\n\toption,\n}: {\n\tvalue: string;\n\toption: FeeOption;\n}) {\n\treturn {\n\t\tvalue,\n\t\tcontent: (\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Image\n\t\t\t\t\tclassName=\"h-3 w-3\"\n\t\t\t\t\tsrc={option.token.logoURL}\n\t\t\t\t\talt={option.token.symbol}\n\t\t\t\t/>\n\n\t\t\t\t<div className=\"flex gap-1\">\n\t\t\t\t\t<Text className=\"font-body text-sm\" color=\"text100\">\n\t\t\t\t\t\tFee\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tclassName=\"font-body text-sm\"\n\t\t\t\t\t\tcolor=\"text50\"\n\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t>\n\t\t\t\t\t\t(in {option.token.symbol})\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<Text className=\"font-body text-sm\" color=\"text100\">\n\t\t\t\t\t\t:\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<Text className=\"font-body text-sm\">\n\t\t\t\t\t{formatUnits(BigInt(option.value), option.token.decimals || 0)}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t),\n\t} as SelectItem;\n}\n\nexport default WaasFeeOptionsSelect;\n","'use client';\n\nimport {\n\tButton,\n\tChevronDownIcon,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuPortal,\n\tDropdownMenuRoot,\n\tDropdownMenuTrigger,\n\tText,\n} from '@0xsequence/design-system';\nimport { type ReactNode, useState } from 'react';\n\nexport interface SelectItem {\n\tvalue: string;\n\tcontent: ReactNode;\n\tdisabled?: boolean;\n}\n\ninterface CustomSelectProps {\n\titems: SelectItem[];\n\tonValueChange?: (value: string) => void;\n\tdefaultValue?: SelectItem;\n\tplaceholder?: string;\n\tdisabled?: boolean;\n\tbackgroundColor?: string;\n\tclassName?: string;\n\ttestId?: string;\n}\n\nexport const CustomSelect = ({\n\titems,\n\tonValueChange,\n\tdefaultValue,\n\tplaceholder = 'Select an option',\n\tdisabled = false,\n\tclassName,\n\ttestId = 'custom-select',\n}: CustomSelectProps) => {\n\tconst [selectedItem, setSelectedItem] = useState<SelectItem | undefined>(\n\t\tdefaultValue,\n\t);\n\n\tconst handleValueChange = (item: SelectItem) => {\n\t\tsetSelectedItem(item);\n\t\tonValueChange?.(item.value);\n\t};\n\n\treturn (\n\t\t<DropdownMenuRoot>\n\t\t\t<DropdownMenuTrigger asChild disabled={disabled}>\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\tlabel={\n\t\t\t\t\t\t<div className=\"flex items-center justify-center gap-1 truncate pr-3\">\n\t\t\t\t\t\t\t<Text variant=\"xsmall\" color=\"text100\" fontWeight=\"bold\">\n\t\t\t\t\t\t\t\t{selectedItem ? selectedItem.content : placeholder}\n\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t<ChevronDownIcon size=\"xs\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\tshape=\"circle\"\n\t\t\t\t\topacity=\"100\"\n\t\t\t\t\tclassName={`bg-overlay-light py-1.5 pl-3 ${className || ''}`}\n\t\t\t\t\tdata-testid={`${testId}-trigger`}\n\t\t\t\t/>\n\t\t\t</DropdownMenuTrigger>\n\n\t\t\t<DropdownMenuPortal>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tside=\"bottom\"\n\t\t\t\t\tsideOffset={8}\n\t\t\t\t\tclassName=\"z-[1000] overflow-hidden rounded-xl border border-border-base bg-color-overlay-glass shadow-lg backdrop-blur-md\"\n\t\t\t\t\tdata-testid={`${testId}-content`}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"max-h-[240px] overflow-auto\">\n\t\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\tchecked={selectedItem?.value === item.value}\n\t\t\t\t\t\t\t\tonCheckedChange={() => handleValueChange(item)}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\tclassName=\"group relative flex cursor-pointer select-none items-center rounded-lg px-2 py-1.5 outline-none transition-colors hover:bg-background-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>span[data-state='checked']]:hidden\"\n\t\t\t\t\t\t\t\tdata-testid={`${testId}-option-${item.value}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2 truncate\">\n\t\t\t\t\t\t\t\t\t\t{typeof item.content === 'string' ? (\n\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem?.value === item.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'text100'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text80'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`truncate ${\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem?.value === item.value ? 'font-bold' : ''\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-testid={`${testId}-option-text-${item.value}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.content}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\tdata-testid={`${testId}-option-content-${item.value}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.content}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenuPortal>\n\t\t</DropdownMenuRoot>\n\t);\n};\n","import { observable } from '@legendapp/state';\nimport type { FeeOption } from '../waasFeeOptionsSelect/WaasFeeOptionsSelect';\n\ntype WaasFeeOptionsModalState = {\n\tselectedFeeOption: FeeOption | undefined;\n};\n\nconst initialState = {\n\tselectedFeeOption: undefined,\n} as WaasFeeOptionsModalState;\n\nexport const waasFeeOptionsModal$ = observable(initialState);\n","import { type Observable, observable } from '@legendapp/state';\nimport type { Address } from 'viem';\nimport type { ChainId } from '../../../../../_internal';\n\nexport interface ActionModalState {\n\tisOpen: boolean;\n\tchainId: ChainId | null;\n\tcollectionAddress: Address | null;\n}\n\nexport function createActionModalStore() {\n\treturn observable<ActionModalState>({\n\t\tisOpen: false,\n\t\tchainId: null,\n\t\tcollectionAddress: null,\n\t});\n}\n\nexport function openModal(store: Observable<ActionModalState>) {\n\tstore.isOpen.set(true);\n}\n\nexport function closeModal(store: Observable<ActionModalState>) {\n\tstore.isOpen.set(false);\n}\n"],"mappings":"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","names":["useState","Button","Text","observer","Button","Text","observer","useEffect","zeroAddress","balance","Text","formatUnits","zeroAddress","jsx","jsxs","zeroAddress","Text","formatUnits","jsx","jsxs","observer","zeroAddress","useEffect","Text","Button","jsx","jsxs","observer","useState","Text","Button","observable"]}
|