@0xsequence/marketplace-sdk 0.8.11 → 0.8.12

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.
Files changed (404) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/dist/CartIcon-Bll1rbxv.js +141 -0
  3. package/dist/CartIcon-Bll1rbxv.js.map +1 -0
  4. package/dist/CollectibleCard-CLQTl0_6.d.ts +8 -0
  5. package/dist/_internal-69NEWNUE.js +34 -0
  6. package/dist/_internal-69NEWNUE.js.map +1 -0
  7. package/dist/abi-BKyRjVcZ.js +0 -0
  8. package/dist/{alien_swap-2B65TDGT.js → alien_swap-B_76IMma.js} +5 -5
  9. package/dist/alien_swap-B_76IMma.js.map +1 -0
  10. package/dist/api-1KFxYh7o.js +232 -0
  11. package/dist/api-1KFxYh7o.js.map +1 -0
  12. package/dist/{aqua-xyz-WMYQLAIS.js → aqua-xyz-CMN_TFY5.js} +5 -5
  13. package/dist/aqua-xyz-CMN_TFY5.js.map +1 -0
  14. package/dist/{aura-V22RV5OG.js → aura-Cye_TuHj.js} +5 -5
  15. package/dist/aura-Cye_TuHj.js.map +1 -0
  16. package/dist/{blur-GE5QOMCM.js → blur-DWDMyMpK.js} +5 -5
  17. package/dist/blur-DWDMyMpK.js.map +1 -0
  18. package/dist/builder-api-BQvzykoU.js +28 -0
  19. package/dist/builder-api-BQvzykoU.js.map +1 -0
  20. package/dist/builder-api-DoK3907S.d.ts +12 -0
  21. package/dist/builder.gen-CxP9NT1p.js +303 -0
  22. package/dist/builder.gen-CxP9NT1p.js.map +1 -0
  23. package/dist/{coinbase-NLHJMGAP.js → coinbase-ByA_XRB0.js} +5 -5
  24. package/dist/coinbase-ByA_XRB0.js.map +1 -0
  25. package/dist/{element-2LGTYYSP.js → element-b77CyXIZ.js} +5 -5
  26. package/dist/element-b77CyXIZ.js.map +1 -0
  27. package/dist/{foundation-BPN66ZTN.js → foundation-DbOrKP9Y.js} +5 -5
  28. package/dist/foundation-DbOrKP9Y.js.map +1 -0
  29. package/dist/index-1bezgsFq.d.ts +1129 -0
  30. package/dist/index-4-kfOFdx.d.ts +22 -0
  31. package/dist/index-BEYefG1G.d.ts +24 -0
  32. package/dist/index-BHiSG-Yi.d.ts +312 -0
  33. package/dist/index-BIMIpDiI.d.ts +188 -0
  34. package/dist/index-BQW0PUkQ.d.ts +3973 -0
  35. package/dist/index-BfH21xmk.d.ts +117 -0
  36. package/dist/index-BjIwVzc4.d.ts +1057 -0
  37. package/dist/index-C39K_8SG.d.ts +1 -0
  38. package/dist/index-CN8puQQJ.d.ts +24 -0
  39. package/dist/index-Cl7PQOGu.d.ts +102 -0
  40. package/dist/index-D5v5iluA.d.ts +809 -0
  41. package/dist/index-DXMfTZ1F.d.ts +7 -0
  42. package/dist/index-DafWjEb4.d.ts +65 -0
  43. package/dist/index-ij9f8GAA.d.ts +1 -0
  44. package/dist/index.css +384 -371
  45. package/dist/index.d.ts +10 -29
  46. package/dist/index.js +13 -104
  47. package/dist/{looks-rare-MZRSOPT4.js → looks-rare-C1VqNcSM.js} +5 -5
  48. package/dist/looks-rare-C1VqNcSM.js.map +1 -0
  49. package/dist/{magic-eden-PUBL6KWW.js → magic-eden-ea_AGCZr.js} +5 -5
  50. package/dist/magic-eden-ea_AGCZr.js.map +1 -0
  51. package/dist/{manifold-GA445YJ6.js → manifold-8y8J2sjT.js} +5 -5
  52. package/dist/manifold-8y8J2sjT.js.map +1 -0
  53. package/dist/marketplace-logos-CSeGcPW4.js +50 -0
  54. package/dist/marketplace-logos-CSeGcPW4.js.map +1 -0
  55. package/dist/marketplace-nwnZv9Cb.js +1913 -0
  56. package/dist/marketplace-nwnZv9Cb.js.map +1 -0
  57. package/dist/marketplace.gen-Dqk8vRmD.js +1068 -0
  58. package/dist/marketplace.gen-Dqk8vRmD.js.map +1 -0
  59. package/dist/marketplaceConfig-D2MYFqll.js +71 -0
  60. package/dist/marketplaceConfig-D2MYFqll.js.map +1 -0
  61. package/dist/{mintify-UMC5PTKC.js → mintify-LA68TzWg.js} +5 -5
  62. package/dist/mintify-LA68TzWg.js.map +1 -0
  63. package/dist/{nftx-AX3CY3IE.js → nftx-D3Tc8nzd.js} +5 -5
  64. package/dist/nftx-D3Tc8nzd.js.map +1 -0
  65. package/dist/{okx-GNVLAE2R.js → okx-hbqg6oIJ.js} +5 -5
  66. package/dist/okx-hbqg6oIJ.js.map +1 -0
  67. package/dist/{open-sea-KI43GVEB.js → open-sea-BccuK8-t.js} +5 -5
  68. package/dist/open-sea-BccuK8-t.js.map +1 -0
  69. package/dist/options-DCi6_23w.js +34 -0
  70. package/dist/options-DCi6_23w.js.map +1 -0
  71. package/dist/primary-sale-Cw95phYC.js +1264 -0
  72. package/dist/primary-sale-Cw95phYC.js.map +1 -0
  73. package/dist/queries-DPvwtnO7.js +486 -0
  74. package/dist/queries-DPvwtnO7.js.map +1 -0
  75. package/dist/{rarible-2J3MMZJ7.js → rarible-BgTwwj9g.js} +5 -5
  76. package/dist/rarible-BgTwwj9g.js.map +1 -0
  77. package/dist/react/_internal/api/index.d.ts +4 -86
  78. package/dist/react/_internal/api/index.js +7 -150
  79. package/dist/react/_internal/databeat/index.d.ts +45 -41
  80. package/dist/react/_internal/databeat/index.js +23 -27
  81. package/dist/react/_internal/index.d.ts +7 -76
  82. package/dist/react/_internal/index.js +9 -176
  83. package/dist/react/_internal/wagmi/index.d.ts +4 -17
  84. package/dist/react/_internal/wagmi/index.js +5 -14
  85. package/dist/react/hooks/index.d.ts +17 -3652
  86. package/dist/react/hooks/index.js +23 -153
  87. package/dist/react/hooks/options/index.d.ts +5 -8
  88. package/dist/react/hooks/options/index.js +11 -21
  89. package/dist/react/index.d.ts +37 -33
  90. package/dist/react/index.js +23 -193
  91. package/dist/react/queries/index.d.ts +8 -26
  92. package/dist/react/queries/index.js +18 -51
  93. package/dist/react/ssr/index.d.ts +19 -13
  94. package/dist/react/ssr/index.js +29 -28
  95. package/dist/react/ssr/index.js.map +1 -1
  96. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +10 -0
  97. package/dist/react/ui/components/marketplace-collectible-card/index.js +23 -0
  98. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +8 -0
  99. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +10 -0
  100. package/dist/react/ui/components/marketplace-logos/index.d.ts +26 -24
  101. package/dist/react/ui/components/marketplace-logos/index.js +3 -45
  102. package/dist/react/ui/icons/index.d.ts +1 -2
  103. package/dist/react/ui/icons/index.js +10 -14
  104. package/dist/react/ui/index.d.ts +10 -116
  105. package/dist/react/ui/index.js +23 -41
  106. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +59 -33
  107. package/dist/react/ui/modals/_internal/components/actionModal/index.js +23 -31
  108. package/dist/react-BG7o4PId.js +8351 -0
  109. package/dist/react-BG7o4PId.js.map +1 -0
  110. package/dist/react-BbHBl6gg.css +80 -0
  111. package/dist/react-BbHBl6gg.css.map +1 -0
  112. package/dist/sdk-config-DJzxVPld.d.ts +1535 -0
  113. package/dist/{sequence-TGLUFEPQ.js → sequence-Do3kzb4J.js} +5 -5
  114. package/dist/sequence-Do3kzb4J.js.map +1 -0
  115. package/dist/src-Dz2CfBL0.js +8 -0
  116. package/dist/src-Dz2CfBL0.js.map +1 -0
  117. package/dist/{sudo-swap-M2O6E3TE.js → sudo-swap-B6vPKxBz.js} +5 -5
  118. package/dist/sudo-swap-B6vPKxBz.js.map +1 -0
  119. package/dist/{super-rare-UU2U4LIN.js → super-rare-eCm1SE6O.js} +5 -5
  120. package/dist/super-rare-eCm1SE6O.js.map +1 -0
  121. package/dist/token-CO5llIla.js +1312 -0
  122. package/dist/token-CO5llIla.js.map +1 -0
  123. package/dist/transaction-CcVViHEL.js +97 -0
  124. package/dist/transaction-CcVViHEL.js.map +1 -0
  125. package/dist/types/index.d.ts +3 -13
  126. package/dist/types/index.js +5 -44
  127. package/dist/types-BIJOaL4j.d.ts +68 -0
  128. package/dist/types-DwWE6xOF.js +13 -0
  129. package/dist/types-DwWE6xOF.js.map +1 -0
  130. package/dist/useCollection-C-mclKU0.d.ts +66 -0
  131. package/dist/utils/abi/index.d.ts +5 -3
  132. package/dist/utils/abi/index.js +6 -26
  133. package/dist/utils/abi/marketplace/index.d.ts +2 -805
  134. package/dist/utils/abi/marketplace/index.js +3 -11
  135. package/dist/utils/abi/primary-sale/index.d.ts +2 -1054
  136. package/dist/utils/abi/primary-sale/index.js +3 -9
  137. package/dist/utils/abi/token/index.d.ts +2 -1125
  138. package/dist/utils/abi/token/index.js +3 -11
  139. package/dist/utils/index.d.ts +8 -91
  140. package/dist/utils/index.js +11 -57
  141. package/dist/utils-BFdxaToy.js +216 -0
  142. package/dist/utils-BFdxaToy.js.map +1 -0
  143. package/dist/utils-Cat9_pef.js +44 -0
  144. package/dist/utils-Cat9_pef.js.map +1 -0
  145. package/dist/wagmi-DRctYEk6.js +159 -0
  146. package/dist/wagmi-DRctYEk6.js.map +1 -0
  147. package/dist/{x2y2-3W5BBMZC.js → x2y2-DD17tT91.js} +5 -5
  148. package/dist/x2y2-DD17tT91.js.map +1 -0
  149. package/dist/{zora-6EY6FUH6.js → zora-BpSG9UzS.js} +5 -5
  150. package/dist/zora-BpSG9UzS.js.map +1 -0
  151. package/package.json +10 -8
  152. package/src/index.ts +0 -1
  153. package/src/react/_internal/api/__mocks__/indexer.msw.ts +1 -0
  154. package/src/react/_internal/api/builder.gen.ts +0 -1
  155. package/src/react/_internal/api/marketplace.gen.ts +467 -26
  156. package/src/react/_internal/api/services.ts +42 -49
  157. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +5 -5
  158. package/src/react/_internal/wagmi/create-config.ts +7 -2
  159. package/src/react/_internal/wagmi/get-connectors.ts +5 -2
  160. package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +161 -2
  161. package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +44 -6
  162. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +7 -4
  163. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +225 -0
  164. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +3 -3
  165. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +2 -3
  166. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +0 -16
  167. package/src/react/hooks/__tests__/useInventory.test.tsx +0 -36
  168. package/src/react/hooks/__tests__/useListCollections.test.tsx +1 -1
  169. package/src/react/hooks/index.ts +7 -0
  170. package/src/react/hooks/useBalanceOfCollectible.tsx +13 -9
  171. package/src/react/hooks/useCancelTransactionSteps.tsx +5 -1
  172. package/src/react/hooks/useCheckoutOptions.tsx +2 -1
  173. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +67 -0
  174. package/src/react/hooks/useCollectionDetails.tsx +22 -7
  175. package/src/react/hooks/useCountListingsForCollectible.tsx +5 -4
  176. package/src/react/hooks/useCountOfCollectables.tsx +10 -7
  177. package/src/react/hooks/useCountOffersForCollectible.tsx +5 -4
  178. package/src/react/hooks/useCurrency.tsx +2 -2
  179. package/src/react/hooks/useERC721SaleMintedTokens.tsx +67 -0
  180. package/src/react/hooks/useFloorOrder.tsx +5 -2
  181. package/src/react/hooks/useGenerateCancelTransaction.tsx +13 -6
  182. package/src/react/hooks/useGenerateListingTransaction.tsx +15 -5
  183. package/src/react/hooks/useGenerateOfferTransaction.tsx +15 -6
  184. package/src/react/hooks/useGenerateSellTransaction.tsx +15 -6
  185. package/src/react/hooks/useGetTokenSuppliesMap.ts +5 -0
  186. package/src/react/hooks/useInventory.tsx +7 -5
  187. package/src/react/hooks/useList1155ShopCardData.tsx +130 -0
  188. package/src/react/hooks/useList721ShopCardData.tsx +130 -0
  189. package/src/react/hooks/useListBalances.tsx +6 -9
  190. package/src/react/hooks/useListCollectibleActivities.tsx +2 -1
  191. package/src/react/hooks/useListCollectibles.tsx +1 -14
  192. package/src/react/hooks/useListCollectiblesPaginated.tsx +8 -5
  193. package/src/react/hooks/useListCollectionActivities.tsx +2 -1
  194. package/src/react/hooks/useListCollections.tsx +1 -1
  195. package/src/react/hooks/useListListingsForCollectible.tsx +2 -1
  196. package/src/react/hooks/useListMarketCardData.tsx +157 -0
  197. package/src/react/hooks/useListOffersForCollectible.tsx +2 -1
  198. package/src/react/hooks/useListPrimarySaleItems.ts +42 -0
  199. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +134 -0
  200. package/src/react/queries/highestOffer.ts +6 -4
  201. package/src/react/queries/inventory.ts +35 -1
  202. package/src/react/queries/listBalances.ts +14 -30
  203. package/src/react/queries/listCollectibles.ts +60 -7
  204. package/src/react/queries/listCollections.ts +8 -2
  205. package/src/react/queries/listTokenMetadata.ts +6 -1
  206. package/src/react/queries/lowestListing.ts +6 -4
  207. package/src/react/queries/marketCurrencies.ts +11 -7
  208. package/src/react/queries/marketplaceConfig.ts +55 -80
  209. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +44 -6
  210. package/src/react/ssr/__tests__/create-ssr-client.test.ts +0 -3
  211. package/src/react/ssr/create-ssr-client.ts +5 -10
  212. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +47 -13
  213. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +1 -1
  214. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +28 -15
  215. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +1 -1
  216. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +1 -1
  217. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +1 -1
  218. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +78 -15
  219. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +1 -1
  220. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +1 -1
  221. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +17 -0
  222. package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +24 -0
  223. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +231 -0
  224. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +76 -0
  225. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +55 -0
  226. package/src/react/ui/components/marketplace-collectible-card/index.ts +3 -0
  227. package/src/react/ui/components/marketplace-collectible-card/types.ts +95 -0
  228. package/src/react/ui/components/marketplace-collectible-card/utils/formatPrice.ts +45 -0
  229. package/src/react/ui/components/marketplace-collectible-card/utils/index.ts +2 -0
  230. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +39 -0
  231. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +124 -0
  232. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +105 -0
  233. package/src/react/ui/components/{collectible-card/media → media}/Media.tsx +42 -25
  234. package/src/react/ui/components/{collectible-card/media → media}/types.ts +3 -1
  235. package/src/react/ui/index.ts +5 -2
  236. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +554 -0
  237. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +385 -0
  238. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +272 -0
  239. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +112 -0
  240. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +117 -13
  241. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -7
  242. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +157 -0
  243. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +136 -0
  244. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +184 -0
  245. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +121 -0
  246. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +85 -0
  247. package/src/react/ui/modals/BuyModal/components/ERC721ShopModal.tsx +86 -0
  248. package/src/react/ui/modals/BuyModal/components/Modal.tsx +14 -0
  249. package/src/react/ui/modals/BuyModal/components/types.ts +8 -0
  250. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +4 -4
  251. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +379 -0
  252. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +253 -0
  253. package/src/react/ui/modals/BuyModal/hooks/__tests__/{useFees.test.tsx → useMarketPlatformFee.test.tsx} +10 -11
  254. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +62 -44
  255. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +73 -0
  256. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +196 -0
  257. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +74 -18
  258. package/src/react/ui/modals/BuyModal/hooks/useMarketPlatformFee.ts +53 -0
  259. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +27 -12
  260. package/src/react/ui/modals/BuyModal/store.ts +147 -13
  261. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -1
  262. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +5 -3
  263. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +2 -1
  264. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +5 -3
  265. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +4 -3
  266. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -3
  267. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +11 -7
  268. package/src/react/ui/modals/SuccessfulPurchaseModal/index.tsx +34 -28
  269. package/src/react/ui/modals/SuccessfulPurchaseModal/store.ts +71 -0
  270. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +0 -1
  271. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +105 -108
  272. package/src/react/ui/modals/_internal/components/actionModal/store.ts +45 -12
  273. package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +12 -8
  274. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +35 -33
  275. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +61 -32
  276. package/src/react/ui/modals/modal-provider.tsx +1 -1
  277. package/src/types/buyModalErrors.ts +438 -0
  278. package/src/types/index.ts +4 -1
  279. package/src/types/new-marketplace-types.ts +6 -21
  280. package/src/types/sdk-config.ts +18 -24
  281. package/src/types/types.ts +16 -0
  282. package/src/utils/_internal/error/transaction.ts +36 -1
  283. package/tsconfig.json +1 -1
  284. package/tsconfig.tsbuildinfo +1 -1
  285. package/tsdown.config.ts +25 -0
  286. package/.ctirc +0 -32
  287. package/dist/alien_swap-2B65TDGT.js.map +0 -1
  288. package/dist/aqua-xyz-WMYQLAIS.js.map +0 -1
  289. package/dist/aura-V22RV5OG.js.map +0 -1
  290. package/dist/blur-GE5QOMCM.js.map +0 -1
  291. package/dist/chunk-2PSNAIAT.js +0 -1
  292. package/dist/chunk-2PSNAIAT.js.map +0 -1
  293. package/dist/chunk-5C6ZZ6WX.js +0 -130
  294. package/dist/chunk-5C6ZZ6WX.js.map +0 -1
  295. package/dist/chunk-5O44EPXZ.js +0 -207
  296. package/dist/chunk-5O44EPXZ.js.map +0 -1
  297. package/dist/chunk-6CTFVBKU.js +0 -1
  298. package/dist/chunk-6CTFVBKU.js.map +0 -1
  299. package/dist/chunk-6OPMUCGX.js +0 -42
  300. package/dist/chunk-6OPMUCGX.js.map +0 -1
  301. package/dist/chunk-FUM4OGOQ.js +0 -1027
  302. package/dist/chunk-FUM4OGOQ.js.map +0 -1
  303. package/dist/chunk-L6KWLCER.js +0 -32
  304. package/dist/chunk-L6KWLCER.js.map +0 -1
  305. package/dist/chunk-LAP2CKLN.js +0 -485
  306. package/dist/chunk-LAP2CKLN.js.map +0 -1
  307. package/dist/chunk-LECCEZAO.js +0 -11
  308. package/dist/chunk-LECCEZAO.js.map +0 -1
  309. package/dist/chunk-N7SQWS2R.js +0 -38
  310. package/dist/chunk-N7SQWS2R.js.map +0 -1
  311. package/dist/chunk-NX52D7NX.js +0 -135
  312. package/dist/chunk-NX52D7NX.js.map +0 -1
  313. package/dist/chunk-OAOONM4S.js +0 -1787
  314. package/dist/chunk-OAOONM4S.js.map +0 -1
  315. package/dist/chunk-Q3ECVC4F.js +0 -811
  316. package/dist/chunk-Q3ECVC4F.js.map +0 -1
  317. package/dist/chunk-QY52UADF.js +0 -107
  318. package/dist/chunk-QY52UADF.js.map +0 -1
  319. package/dist/chunk-TNAR3XEF.js +0 -8729
  320. package/dist/chunk-TNAR3XEF.js.map +0 -1
  321. package/dist/chunk-XABYNWXO.js +0 -549
  322. package/dist/chunk-XABYNWXO.js.map +0 -1
  323. package/dist/chunk-XX4EVWBF.js +0 -1292
  324. package/dist/chunk-XX4EVWBF.js.map +0 -1
  325. package/dist/chunk-YB5UUF2G.js +0 -11
  326. package/dist/chunk-YB5UUF2G.js.map +0 -1
  327. package/dist/chunk-YWGFI4PN.js +0 -217
  328. package/dist/chunk-YWGFI4PN.js.map +0 -1
  329. package/dist/coinbase-NLHJMGAP.js.map +0 -1
  330. package/dist/create-config-DLMvMTkZ.d.ts +0 -8
  331. package/dist/element-2LGTYYSP.js.map +0 -1
  332. package/dist/foundation-BPN66ZTN.js.map +0 -1
  333. package/dist/get-query-client-D46hbjk6.d.ts +0 -5
  334. package/dist/index.css.map +0 -1
  335. package/dist/index.js.map +0 -1
  336. package/dist/looks-rare-MZRSOPT4.js.map +0 -1
  337. package/dist/magic-eden-PUBL6KWW.js.map +0 -1
  338. package/dist/manifold-GA445YJ6.js.map +0 -1
  339. package/dist/marketCurrencies-enNVYwBk.d.ts +0 -277
  340. package/dist/marketplace.gen-D24veUQs.d.ts +0 -1073
  341. package/dist/marketplaceConfig-BwNAbLPw.d.ts +0 -21
  342. package/dist/mintify-UMC5PTKC.js.map +0 -1
  343. package/dist/new-marketplace-types-BCw19X9S.d.ts +0 -102
  344. package/dist/nftx-AX3CY3IE.js.map +0 -1
  345. package/dist/okx-GNVLAE2R.js.map +0 -1
  346. package/dist/open-sea-KI43GVEB.js.map +0 -1
  347. package/dist/rarible-2J3MMZJ7.js.map +0 -1
  348. package/dist/react/_internal/api/index.js.map +0 -1
  349. package/dist/react/_internal/databeat/index.css +0 -2764
  350. package/dist/react/_internal/databeat/index.css.map +0 -1
  351. package/dist/react/_internal/databeat/index.js.map +0 -1
  352. package/dist/react/_internal/index.js.map +0 -1
  353. package/dist/react/_internal/wagmi/index.js.map +0 -1
  354. package/dist/react/hooks/index.css +0 -2764
  355. package/dist/react/hooks/index.css.map +0 -1
  356. package/dist/react/hooks/index.js.map +0 -1
  357. package/dist/react/hooks/options/index.js.map +0 -1
  358. package/dist/react/index.css +0 -2764
  359. package/dist/react/index.css.map +0 -1
  360. package/dist/react/index.js.map +0 -1
  361. package/dist/react/queries/index.js.map +0 -1
  362. package/dist/react/ui/components/collectible-card/index.css +0 -2764
  363. package/dist/react/ui/components/collectible-card/index.css.map +0 -1
  364. package/dist/react/ui/components/collectible-card/index.d.ts +0 -71
  365. package/dist/react/ui/components/collectible-card/index.js +0 -27
  366. package/dist/react/ui/components/collectible-card/index.js.map +0 -1
  367. package/dist/react/ui/components/marketplace-logos/index.js.map +0 -1
  368. package/dist/react/ui/icons/index.js.map +0 -1
  369. package/dist/react/ui/index.css +0 -2764
  370. package/dist/react/ui/index.css.map +0 -1
  371. package/dist/react/ui/index.js.map +0 -1
  372. package/dist/react/ui/modals/_internal/components/actionModal/index.css +0 -2764
  373. package/dist/react/ui/modals/_internal/components/actionModal/index.css.map +0 -1
  374. package/dist/react/ui/modals/_internal/components/actionModal/index.js.map +0 -1
  375. package/dist/sdk-config-qorA0TgF.d.ts +0 -165
  376. package/dist/sequence-TGLUFEPQ.js.map +0 -1
  377. package/dist/services-WrshxCqc.d.ts +0 -23
  378. package/dist/sudo-swap-M2O6E3TE.js.map +0 -1
  379. package/dist/super-rare-UU2U4LIN.js.map +0 -1
  380. package/dist/types/index.js.map +0 -1
  381. package/dist/useCollection-YAdXfVO7.d.ts +0 -61
  382. package/dist/utils/abi/index.js.map +0 -1
  383. package/dist/utils/abi/marketplace/index.js.map +0 -1
  384. package/dist/utils/abi/primary-sale/index.js.map +0 -1
  385. package/dist/utils/abi/token/index.js.map +0 -1
  386. package/dist/utils/index.js.map +0 -1
  387. package/dist/x2y2-3W5BBMZC.js.map +0 -1
  388. package/dist/zora-6EY6FUH6.js.map +0 -1
  389. package/postcss.config.mjs +0 -5
  390. package/src/react/hooks/__tests__/__snapshots__/useRoyaltyPercentage.test.tsx.snap +0 -8
  391. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +0 -170
  392. package/src/react/ui/components/collectible-card/Footer.tsx +0 -157
  393. package/src/react/ui/components/collectible-card/__tests__/CollectibleCard.test.tsx +0 -94
  394. package/src/react/ui/components/collectible-card/__tests__/Footer.test.tsx +0 -136
  395. package/src/react/ui/components/collectible-card/__tests__/Media.test.tsx +0 -264
  396. package/src/react/ui/components/collectible-card/index.ts +0 -2
  397. package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +0 -130
  398. package/src/react/ui/modals/BuyModal/Modal.tsx +0 -124
  399. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +0 -104
  400. package/src/react/ui/modals/BuyModal/hooks/useFees.ts +0 -39
  401. package/src/react/ui/modals/SuccessfulPurchaseModal/_store.ts +0 -72
  402. package/tsup.config.ts +0 -23
  403. /package/src/react/ui/components/{collectible-card/media → media}/MediaSkeleton.tsx +0 -0
  404. /package/src/react/ui/components/{collectible-card/media → media}/utils.ts +0 -0
@@ -0,0 +1,112 @@
1
+ // import { cleanup, render, screen, waitFor } from "@test";
2
+ // import { afterEach, beforeEach, describe, expect, it } from "vitest";
3
+
4
+ // import { server } from "@test";
5
+ // import type { Address } from "viem";
6
+ // import { MarketplaceType } from "../../../../../types";
7
+ // import {
8
+ // mockCollection,
9
+ // mockOrder,
10
+ // } from "../../../../_internal/api/__mocks__/marketplace.msw";
11
+ // import { BuyModal } from "../Modal";
12
+ // import { buyModalStore } from "../store";
13
+
14
+ // describe("BuyModal", () => {
15
+ // beforeEach(() => {
16
+ // buyModalStore.send({ type: "close" });
17
+ // });
18
+
19
+ // afterEach(() => {
20
+ // cleanup();
21
+ // // Reset server handlers
22
+ // server.resetHandlers();
23
+ // });
24
+
25
+ // it("should not render when isOpen is false", () => {
26
+ // render(<BuyModal />);
27
+
28
+ // expect(screen.queryByText("Loading Sequence Pay")).not.toBeInTheDocument();
29
+ // expect(screen.queryByText("Checkout")).not.toBeInTheDocument();
30
+ // expect(screen.queryByText("Select Quantity")).not.toBeInTheDocument();
31
+ // });
32
+
33
+ // it.skip("should render error modal when there is an error", async () => {
34
+ // server.use(
35
+ // http.post(mockMetadataEndpoint("GetContractInfo"), () => {
36
+ // return new HttpResponse(null, {
37
+ // status: 404,
38
+ // });
39
+ // })
40
+ // );
41
+ // buyModalStore.send({
42
+ // type: "open",
43
+ // props: {
44
+ // orderId: mockOrder.orderId,
45
+ // chainId: mockOrder.chainId,
46
+ // collectionAddress: mockOrder.collectionContractAddress as Address,
47
+ // collectibleId: "1",
48
+ // marketplace: mockOrder.marketplace,
49
+ // },
50
+ // });
51
+ // render(<BuyModal />);
52
+ // // Should show error modal
53
+ // await waitFor(
54
+ // () => {
55
+ // expect(screen.getByText("Error")).toBeInTheDocument();
56
+ // },
57
+ // { timeout: 1000 }
58
+ // );
59
+ // });
60
+
61
+ // it.skip("should render ERC1155QuantityModal when contract type is ERC1155", async () => {
62
+ // // Create an ERC1155 mock collection
63
+ // const erc1155Collection = {
64
+ // ...mockCollection,
65
+ // contractType: ContractType.ERC1155,
66
+ // };
67
+ // const erc1155Order = {
68
+ // ...mockOrder,
69
+ // quantityRemaining: "10",
70
+ // quantityRemainingFormatted: "10",
71
+ // };
72
+ // buyModalStore.send({
73
+ // type: "open",
74
+ // props: {
75
+ // orderId: erc1155Order.orderId,
76
+ // chainId: erc1155Order.chainId,
77
+ // collectionAddress: erc1155Order.collectionContractAddress,
78
+ // collectibleId: erc1155Order.tokenId,
79
+ // marketplace: erc1155Order.marketplace,
80
+ // },
81
+ // });
82
+ // render(<BuyModal />);
83
+ // // First should show loading
84
+ // expect(screen.getByText("Loading Sequence Pay")).toBeInTheDocument();
85
+ // // Then should show quantity modal for ERC1155
86
+ // await waitFor(
87
+ // () => {
88
+ // expect(screen.getByText("Select Quantity")).toBeInTheDocument();
89
+ // },
90
+ // { timeout: 5000 }
91
+ // );
92
+ // });
93
+
94
+ // it("should show loading modal", async () => {
95
+ // buyModalStore.send({
96
+ // type: "open",
97
+ // props: {
98
+ // orderId: mockOrder.orderId,
99
+ // chainId: mockOrder.chainId,
100
+ // collectionAddress: mockOrder.collectionContractAddress as Address,
101
+ // collectibleId: "1",
102
+ // marketplace: mockOrder.marketplace,
103
+ // marketplaceType: MarketplaceType.MARKET,
104
+ // },
105
+ // });
106
+
107
+ // render(<BuyModal />);
108
+
109
+ // // Should show loading modal
110
+ // expect(screen.getByText("Loading Sequence Pay")).toBeInTheDocument();
111
+ // });
112
+ // });
@@ -1,8 +1,14 @@
1
- import { act, fireEvent, render, screen } from '@test';
1
+ import {
2
+ act,
3
+ fireEvent,
4
+ render,
5
+ screen,
6
+ waitForElementToBeRemoved,
7
+ } from '@test';
2
8
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
3
9
  import type { Order } from '../../../../_internal';
4
10
  import { MarketplaceKind, OrderSide, OrderStatus } from '../../../../_internal';
5
- import { ERC1155QuantityModal } from '../ERC1155QuantityModal';
11
+ import { ERC1155QuantityModal } from '../components/ERC1155QuantityModal';
6
12
  import { buyModalStore } from '../store';
7
13
 
8
14
  const testOrder: Order = {
@@ -49,6 +55,7 @@ describe('ERC1155QuantityModal', () => {
49
55
  collectionAddress: '0x123' as `0x${string}`,
50
56
  collectibleId: '1',
51
57
  marketplace: MarketplaceKind.sequence_marketplace_v2,
58
+ marketplaceType: 'market',
52
59
  },
53
60
  });
54
61
  });
@@ -59,17 +66,38 @@ describe('ERC1155QuantityModal', () => {
59
66
  });
60
67
 
61
68
  it('should render quantity modal with order details', async () => {
62
- render(<ERC1155QuantityModal order={testOrder} />);
69
+ render(
70
+ <ERC1155QuantityModal
71
+ order={testOrder}
72
+ marketplaceType={'market'}
73
+ chainId={1}
74
+ quantityDecimals={0}
75
+ quantityRemaining="10"
76
+ />,
77
+ );
63
78
 
64
79
  // Check if the modal renders with the correct title
65
80
  expect(screen.getByText('Select Quantity')).toBeInTheDocument();
66
81
 
82
+ // Wait for spinner to disappear if it exists
83
+ try {
84
+ await waitForElementToBeRemoved(() => screen.queryByTestId('spinner'));
85
+ } catch (error) {
86
+ // If no spinner or already gone, continue
87
+ }
88
+
67
89
  // Check if the Buy now button exists
68
90
  const buyButton = await screen.findByRole('button', { name: /buy now/i });
69
91
  expect(buyButton).toBeInTheDocument();
92
+
70
93
  // Capture the initial store state
71
94
  const initialState = buyModalStore.getSnapshot();
72
- expect(initialState.context.quantity).toBeUndefined();
95
+ expect(initialState.context.quantity).toBeNull();
96
+
97
+ // Check for Total Price section
98
+ await act(async () => {
99
+ expect(await screen.findByText('Total Price')).toBeInTheDocument();
100
+ });
73
101
 
74
102
  // Click the Buy now button with default quantity "1"
75
103
  await act(async () => {
@@ -82,14 +110,31 @@ describe('ERC1155QuantityModal', () => {
82
110
  });
83
111
 
84
112
  it('should update quantity when user changes the input value', async () => {
85
- render(<ERC1155QuantityModal order={testOrder} />);
86
-
87
- // Find the quantity input using label text
88
- const quantityInput = await screen.findByLabelText('Enter quantity');
113
+ render(
114
+ <ERC1155QuantityModal
115
+ order={testOrder}
116
+ marketplaceType={'market'}
117
+ chainId={1}
118
+ quantityDecimals={0}
119
+ quantityRemaining="10"
120
+ />,
121
+ );
122
+
123
+ // Wait for spinner to disappear if it exists
124
+ try {
125
+ await waitForElementToBeRemoved(() => screen.queryByTestId('spinner'));
126
+ } catch (error) {
127
+ // If no spinner or already gone, continue
128
+ }
129
+
130
+ // Find the quantity input using role and name
131
+ const quantityInput = await screen.findByRole('textbox', {
132
+ name: /enter quantity/i,
133
+ });
89
134
 
90
135
  // Capture initial store state
91
136
  const initialState = buyModalStore.getSnapshot();
92
- expect(initialState.context.quantity).toBeUndefined();
137
+ expect(initialState.context.quantity).toBeNull();
93
138
 
94
139
  // Change quantity to 5
95
140
  await act(async () => {
@@ -97,7 +142,7 @@ describe('ERC1155QuantityModal', () => {
97
142
  });
98
143
 
99
144
  // Click Buy now button
100
- const buyButton = screen.getByRole('button', { name: /buy now/i });
145
+ const buyButton = await screen.findByRole('button', { name: /buy now/i });
101
146
  await act(async () => {
102
147
  fireEvent.click(buyButton);
103
148
  });
@@ -108,9 +153,27 @@ describe('ERC1155QuantityModal', () => {
108
153
  });
109
154
 
110
155
  it('should validate input quantity against available quantity', async () => {
111
- render(<ERC1155QuantityModal order={testOrder} />);
112
-
113
- const quantityInput = await screen.findByLabelText('Enter quantity');
156
+ render(
157
+ <ERC1155QuantityModal
158
+ order={testOrder}
159
+ marketplaceType={'market'}
160
+ chainId={1}
161
+ quantityDecimals={0}
162
+ quantityRemaining="10"
163
+ />,
164
+ );
165
+
166
+ // Wait for spinner to disappear if it exists
167
+ try {
168
+ await waitForElementToBeRemoved(() => screen.queryByTestId('spinner'));
169
+ } catch (error) {
170
+ // If no spinner or already gone, continue
171
+ }
172
+
173
+ // Find the quantity input using role and name
174
+ const quantityInput = await screen.findByRole('textbox', {
175
+ name: /enter quantity/i,
176
+ });
114
177
 
115
178
  const invalidQuantity = '';
116
179
  await act(async () => {
@@ -137,4 +200,45 @@ describe('ERC1155QuantityModal', () => {
137
200
  const updatedState = buyModalStore.getSnapshot();
138
201
  expect(updatedState.context.quantity).toBe(10);
139
202
  });
203
+ it('should display total price based on selected quantity', async () => {
204
+ render(
205
+ <ERC1155QuantityModal
206
+ order={testOrder}
207
+ marketplaceType={'market'}
208
+ chainId={1}
209
+ quantityDecimals={0}
210
+ quantityRemaining="10"
211
+ />,
212
+ );
213
+
214
+ // Wait for spinner to disappear if it exists
215
+ try {
216
+ await waitForElementToBeRemoved(() => screen.queryByTestId('spinner'));
217
+ } catch (error) {
218
+ // If no spinner or already gone, continue
219
+ }
220
+
221
+ // Check that Total Price section is displayed (using findByText for async)
222
+ await act(async () => {
223
+ expect(await screen.findByText('Total Price')).toBeInTheDocument();
224
+ });
225
+
226
+ // Initially, when no currency data is loaded, it should show loading
227
+ await act(async () => {
228
+ expect(await screen.findByText('Loading...')).toBeInTheDocument();
229
+ });
230
+ });
231
+
232
+ // it("should show error modal when required props are missing", async () => {
233
+ // render(
234
+ // <ERC1155QuantityModal
235
+ // order={testOrder}
236
+ // marketplaceType={'market'}
237
+ // chainId={1}
238
+ // />
239
+ // );
240
+
241
+ // // Should show error modal
242
+ // expect(screen.getByText("Error")).toBeInTheDocument();
243
+ // });
140
244
  });
@@ -1,6 +1,6 @@
1
1
  import { beforeEach, describe, expect, it } from 'vitest';
2
2
  import { MarketplaceKind } from '../../../../_internal';
3
- import { buyModalStore } from '../store';
3
+ import { type MarketplaceBuyModalProps, buyModalStore } from '../store';
4
4
 
5
5
  describe('BuyModal Store', () => {
6
6
  beforeEach(() => {
@@ -11,16 +11,17 @@ describe('BuyModal Store', () => {
11
11
  const state = buyModalStore.getSnapshot();
12
12
  expect(state.context.isOpen).toBe(false);
13
13
  expect(state.context.props).toBeDefined();
14
- expect(state.context.quantity).toBeUndefined();
14
+ expect(state.context.quantity).toBeNull();
15
15
  });
16
16
 
17
17
  it('should handle open action correctly', () => {
18
- const mockProps = {
18
+ const mockProps: MarketplaceBuyModalProps = {
19
19
  orderId: '1',
20
20
  chainId: 1,
21
21
  collectionAddress: '0x123' as `0x${string}`,
22
22
  collectibleId: '1',
23
23
  marketplace: MarketplaceKind.sequence_marketplace_v2,
24
+ marketplaceType: 'market',
24
25
  };
25
26
 
26
27
  buyModalStore.send({
@@ -36,12 +37,13 @@ describe('BuyModal Store', () => {
36
37
  });
37
38
 
38
39
  it('should handle close action correctly', () => {
39
- const mockProps = {
40
+ const mockProps: MarketplaceBuyModalProps = {
40
41
  orderId: '1',
41
42
  chainId: 1,
42
43
  collectionAddress: '0x123' as `0x${string}`,
43
44
  collectibleId: '1',
44
45
  marketplace: MarketplaceKind.sequence_marketplace_v2,
46
+ marketplaceType: 'market',
45
47
  };
46
48
 
47
49
  buyModalStore.send({
@@ -61,12 +63,13 @@ describe('BuyModal Store', () => {
61
63
  });
62
64
 
63
65
  it('should update loading states correctly', () => {
64
- const mockProps = {
66
+ const mockProps: MarketplaceBuyModalProps = {
65
67
  orderId: '1',
66
68
  chainId: 1,
67
69
  collectionAddress: '0x123' as `0x${string}`,
68
70
  collectibleId: '1',
69
71
  marketplace: MarketplaceKind.sequence_marketplace_v2,
72
+ marketplaceType: 'market',
70
73
  };
71
74
 
72
75
  buyModalStore.send({
@@ -75,7 +78,7 @@ describe('BuyModal Store', () => {
75
78
  });
76
79
 
77
80
  const state1 = buyModalStore.getSnapshot();
78
- expect(state1.context.quantity).toBeUndefined();
81
+ expect(state1.context.quantity).toBeNull();
79
82
 
80
83
  buyModalStore.send({
81
84
  type: 'setQuantity',
@@ -89,6 +92,6 @@ describe('BuyModal Store', () => {
89
92
  buyModalStore.send({ type: 'close' });
90
93
 
91
94
  const state3 = buyModalStore.getSnapshot();
92
- expect(state3.context.quantity).toBeUndefined();
95
+ expect(state3.context.quantity).toBeNull();
93
96
  });
94
97
  });
@@ -0,0 +1,157 @@
1
+ 'use client';
2
+
3
+ import { ErrorModal } from '../../_internal/components/actionModal/ErrorModal';
4
+ import { LoadingModal } from '../../_internal/components/actionModal/LoadingModal';
5
+ import { useLoadData } from '../hooks/useLoadData';
6
+ import {
7
+ buyModalStore,
8
+ isShopProps,
9
+ useBuyModalProps,
10
+ useOnError,
11
+ } from '../store';
12
+ import { ERC721BuyModal } from './ERC721BuyModal';
13
+ import { ERC721ShopModal } from './ERC721ShopModal';
14
+ import { ERC1155BuyModal } from './ERC1155BuyModal';
15
+ import { ERC1155ShopModal } from './ERC1155ShopModal';
16
+
17
+ export const BuyModalRouter = () => {
18
+ const modalProps = useBuyModalProps();
19
+ const chainId = modalProps.chainId;
20
+ const isShop = isShopProps(modalProps);
21
+ const onError = useOnError();
22
+ const {
23
+ collection,
24
+ collectable,
25
+ wallet,
26
+ isLoading,
27
+ order,
28
+ checkoutOptions,
29
+ currency,
30
+ shopData,
31
+ isError,
32
+ } = useLoadData();
33
+
34
+ if (isError) {
35
+ return (
36
+ <ErrorModal
37
+ isOpen={true}
38
+ chainId={chainId}
39
+ onClose={() => buyModalStore.send({ type: 'close' })}
40
+ title="Loading Error"
41
+ />
42
+ );
43
+ }
44
+
45
+ if (isLoading || !collection) {
46
+ return (
47
+ <LoadingModal
48
+ isOpen={true}
49
+ chainId={chainId}
50
+ onClose={() => buyModalStore.send({ type: 'close' })}
51
+ title="Loading Sequence Pay"
52
+ />
53
+ );
54
+ }
55
+
56
+ if (isShop) {
57
+ if (collection.type === 'ERC721') {
58
+ if (!shopData || !currency) {
59
+ return (
60
+ <LoadingModal
61
+ isOpen={true}
62
+ chainId={chainId}
63
+ onClose={() => buyModalStore.send({ type: 'close' })}
64
+ title="Loading Sequence Pay"
65
+ />
66
+ );
67
+ }
68
+ return (
69
+ <ERC721ShopModal
70
+ collection={collection}
71
+ shopData={shopData}
72
+ chainId={chainId}
73
+ />
74
+ );
75
+ }
76
+ if (collection.type === 'ERC1155') {
77
+ if (!shopData || !currency) {
78
+ return (
79
+ <LoadingModal
80
+ isOpen={true}
81
+ chainId={chainId}
82
+ onClose={() => buyModalStore.send({ type: 'close' })}
83
+ title="Loading Sequence Pay"
84
+ />
85
+ );
86
+ }
87
+ return (
88
+ <ERC1155ShopModal
89
+ collection={collection}
90
+ shopData={shopData}
91
+ chainId={chainId}
92
+ />
93
+ );
94
+ }
95
+ } else {
96
+ if (collection.type === 'ERC721') {
97
+ if (!collectable || !order || !wallet || !checkoutOptions) {
98
+ return (
99
+ <LoadingModal
100
+ isOpen={true}
101
+ chainId={chainId}
102
+ onClose={() => buyModalStore.send({ type: 'close' })}
103
+ title="Loading Sequence Pay"
104
+ />
105
+ );
106
+ }
107
+ return (
108
+ <ERC721BuyModal
109
+ collection={collection}
110
+ collectable={collectable}
111
+ order={order}
112
+ wallet={wallet}
113
+ checkoutOptions={checkoutOptions}
114
+ chainId={chainId}
115
+ />
116
+ );
117
+ }
118
+ if (collection.type === 'ERC1155') {
119
+ if (!collectable || !order || !wallet || !checkoutOptions) {
120
+ return (
121
+ <LoadingModal
122
+ isOpen={true}
123
+ chainId={chainId}
124
+ onClose={() => buyModalStore.send({ type: 'close' })}
125
+ title="Loading Sequence Pay"
126
+ />
127
+ );
128
+ }
129
+ return (
130
+ <ERC1155BuyModal
131
+ collection={collection}
132
+ collectable={collectable}
133
+ order={order}
134
+ wallet={wallet}
135
+ checkoutOptions={checkoutOptions}
136
+ chainId={chainId}
137
+ />
138
+ );
139
+ }
140
+ }
141
+
142
+ onError(
143
+ new Error(
144
+ `Unsupported configuration: ${collection.type} in ${
145
+ isShop ? 'shop' : 'market'
146
+ } mode`,
147
+ ),
148
+ );
149
+ return (
150
+ <ErrorModal
151
+ isOpen={true}
152
+ chainId={chainId}
153
+ onClose={() => buyModalStore.send({ type: 'close' })}
154
+ title="Unsupported Configuration"
155
+ />
156
+ );
157
+ };
@@ -0,0 +1,136 @@
1
+ 'use client';
2
+
3
+ import {
4
+ type SelectPaymentSettings,
5
+ useSelectPaymentModal,
6
+ } from '@0xsequence/checkout';
7
+ import type { ContractInfo, TokenMetadata } from '@0xsequence/metadata';
8
+ import { useEffect } from 'react';
9
+ import type { CheckoutOptions, Order } from '../../../../_internal';
10
+ import type { WalletInstance } from '../../../../_internal/wallet/wallet';
11
+ import { usePaymentModalParams } from '../hooks/usePaymentModalParams';
12
+ import {
13
+ buyModalStore,
14
+ isShopProps,
15
+ useBuyModalProps,
16
+ usePaymentModalState,
17
+ useQuantity,
18
+ } from '../store';
19
+ import { ERC1155QuantityModal } from './ERC1155QuantityModal';
20
+
21
+ interface ERC1155BuyModalProps {
22
+ collection: ContractInfo;
23
+ collectable: TokenMetadata;
24
+ order: Order;
25
+ wallet: WalletInstance | null | undefined;
26
+ checkoutOptions: CheckoutOptions | undefined;
27
+ chainId: number;
28
+ }
29
+
30
+ export const ERC1155BuyModal = ({
31
+ collectable,
32
+ order,
33
+ wallet,
34
+ checkoutOptions,
35
+ chainId,
36
+ }: ERC1155BuyModalProps) => {
37
+ const quantity = useQuantity();
38
+ const modalProps = useBuyModalProps();
39
+ const marketplaceType = modalProps.marketplaceType || 'market';
40
+ const isShop = isShopProps(modalProps);
41
+ const quantityDecimals = isShop
42
+ ? modalProps.quantityDecimals
43
+ : order?.quantityDecimals;
44
+ const quantityRemaining = isShop
45
+ ? modalProps.quantityRemaining?.toString()
46
+ : order?.quantityRemaining;
47
+
48
+ if (!quantity) {
49
+ return (
50
+ <ERC1155QuantityModal
51
+ order={order}
52
+ marketplaceType={marketplaceType}
53
+ quantityDecimals={quantityDecimals}
54
+ quantityRemaining={quantityRemaining}
55
+ chainId={chainId}
56
+ />
57
+ );
58
+ }
59
+
60
+ if (!checkoutOptions) {
61
+ return null;
62
+ }
63
+
64
+ return (
65
+ <Modal
66
+ wallet={wallet}
67
+ quantity={quantity}
68
+ order={order}
69
+ collectable={collectable}
70
+ checkoutOptions={checkoutOptions}
71
+ />
72
+ );
73
+ };
74
+
75
+ interface ModalProps {
76
+ wallet: WalletInstance | null | undefined;
77
+ quantity: number;
78
+ order: Order;
79
+ collectable: TokenMetadata;
80
+ checkoutOptions: CheckoutOptions;
81
+ }
82
+
83
+ const Modal = ({
84
+ wallet,
85
+ quantity,
86
+ order,
87
+ collectable,
88
+ checkoutOptions,
89
+ }: ModalProps) => {
90
+ const {
91
+ data: paymentModalParams,
92
+ isLoading: isPaymentModalParamsLoading,
93
+ isError: isPaymentModalParamsError,
94
+ } = usePaymentModalParams({
95
+ wallet,
96
+ quantity,
97
+ marketplace: order?.marketplace,
98
+ collectable,
99
+ checkoutOptions,
100
+ priceCurrencyAddress: order?.priceCurrencyAddress,
101
+ enabled: true,
102
+ });
103
+
104
+ if (isPaymentModalParamsLoading || !paymentModalParams) {
105
+ return null;
106
+ }
107
+
108
+ if (isPaymentModalParamsError) {
109
+ throw new Error(
110
+ 'Failed to load payment parameters for ERC1155 marketplace purchase',
111
+ );
112
+ }
113
+
114
+ return <PaymentModalOpener paymentModalParams={paymentModalParams} />;
115
+ };
116
+
117
+ interface PaymentModalOpenerProps {
118
+ paymentModalParams: SelectPaymentSettings;
119
+ }
120
+
121
+ const PaymentModalOpener = ({
122
+ paymentModalParams,
123
+ }: PaymentModalOpenerProps) => {
124
+ const { openSelectPaymentModal } = useSelectPaymentModal();
125
+ const paymentModalState = usePaymentModalState();
126
+
127
+ useEffect(() => {
128
+ if (paymentModalState === 'idle') {
129
+ buyModalStore.send({ type: 'openPaymentModal' });
130
+ openSelectPaymentModal(paymentModalParams);
131
+ buyModalStore.send({ type: 'paymentModalOpened' });
132
+ }
133
+ }, [paymentModalState, paymentModalParams, openSelectPaymentModal]);
134
+
135
+ return null;
136
+ };