@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
@@ -1,170 +0,0 @@
1
- 'use client';
2
-
3
- import { Skeleton } from '@0xsequence/design-system';
4
- import type { Hex } from 'viem';
5
- import type {
6
- CollectibleOrder,
7
- ContractType,
8
- Order,
9
- OrderbookKind,
10
- } from '../../../_internal';
11
- import { useCurrency } from '../../../hooks';
12
- import { ActionButton } from '../_internals/action-button/ActionButton';
13
- import { CollectibleCardAction } from '../_internals/action-button/types';
14
- import { Footer } from './Footer';
15
- import { Media } from './media/Media';
16
-
17
- function CollectibleSkeleton() {
18
- return (
19
- <div
20
- data-testid="collectible-card-skeleton"
21
- className="w-card-width overflow-hidden rounded-xl border border-border-base focus-visible:border-border-focus focus-visible:shadow-none focus-visible:outline-focus active:border-border-focus active:shadow-none"
22
- >
23
- <div className="relative aspect-square overflow-hidden bg-background-secondary">
24
- <Skeleton
25
- size="lg"
26
- className="absolute inset-0 h-full w-full animate-shimmer"
27
- style={{
28
- borderRadius: 0,
29
- }}
30
- />
31
- </div>
32
- <div className="mt-2 flex flex-col gap-2 px-4 pb-4">
33
- <Skeleton size="lg" className="animate-shimmer" />
34
- <Skeleton size="sm" className="animate-shimmer" />
35
- </div>
36
- </div>
37
- );
38
- }
39
-
40
- type CollectibleCardProps = {
41
- collectibleId: string;
42
- chainId: number;
43
- collectionAddress: Hex;
44
- orderbookKind?: OrderbookKind;
45
- collectionType?: ContractType;
46
- collectible: CollectibleOrder | undefined;
47
- onCollectibleClick?: (tokenId: string) => void;
48
- onOfferClick?: ({
49
- order,
50
- e,
51
- }: {
52
- order?: Order;
53
- e: React.MouseEvent<HTMLButtonElement>;
54
- }) => void;
55
- assetSrcPrefixUrl?: string;
56
- balance?: string;
57
- balanceIsLoading: boolean;
58
- cardLoading?: boolean;
59
- /**
60
- * Callback function that is called when the user attempts to perform an action
61
- * (such as buying or making an offer) that they are not permitted to do.
62
- *
63
- * This function is invoked in the following scenario:
64
- *
65
- * - When a disconnected user clicks on "Buy Now" and is prompted to connect
66
- * their wallet. After connecting, if it is determined that the user is
67
- * already the owner of the collectible, this callback is triggered to inform
68
- * them that they cannot perform the action (e.g., buying their own collectible).
69
- *
70
- * @param action - The action that the user cannot perform, which can be either
71
- * CollectibleCardAction.BUY or CollectibleCardAction.OFFER.
72
- */
73
- onCannotPerformAction?: (
74
- action: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,
75
- ) => void;
76
- };
77
-
78
- export function CollectibleCard({
79
- collectibleId,
80
- chainId,
81
- collectionAddress,
82
- orderbookKind,
83
- collectionType,
84
- collectible,
85
- onCollectibleClick,
86
- onOfferClick,
87
- balance,
88
- balanceIsLoading,
89
- cardLoading,
90
- onCannotPerformAction,
91
- assetSrcPrefixUrl,
92
- }: CollectibleCardProps) {
93
- const collectibleMetadata = collectible?.metadata;
94
- const highestOffer = collectible?.offer;
95
-
96
- const { data: lowestListingCurrency } = useCurrency({
97
- chainId,
98
- currencyAddress: collectible?.listing?.priceCurrencyAddress,
99
- query: {
100
- enabled: !!collectible?.listing?.priceCurrencyAddress,
101
- },
102
- });
103
-
104
- if (cardLoading) {
105
- return <CollectibleSkeleton />;
106
- }
107
-
108
- const action = (
109
- balance
110
- ? (highestOffer && CollectibleCardAction.SELL) ||
111
- (!collectible?.listing && CollectibleCardAction.LIST) ||
112
- CollectibleCardAction.TRANSFER
113
- : (collectible?.listing && CollectibleCardAction.BUY) ||
114
- CollectibleCardAction.OFFER
115
- ) as CollectibleCardAction;
116
-
117
- return (
118
- <div
119
- data-testid="collectible-card"
120
- className="w-card-width overflow-hidden rounded-xl border border-border-base bg-background-primary focus-visible:border-border-focus focus-visible:shadow-focus-ring focus-visible:outline-focus active:border-border-focus active:shadow-active-ring"
121
- onClick={() => onCollectibleClick?.(collectibleId)}
122
- onKeyDown={(e) => {
123
- if (e.key === 'Enter' || e.key === ' ') {
124
- onCollectibleClick?.(collectibleId);
125
- }
126
- }}
127
- >
128
- <div className="group relative z-10 flex h-full w-full cursor-pointer flex-col items-start overflow-hidden rounded-xl border-none bg-none p-0 focus:outline-none [&:focus]:rounded-[10px] [&:focus]:outline-[3px] [&:focus]:outline-black [&:focus]:outline-offset-[-3px]">
129
- <article className="w-full rounded-xl">
130
- <Media
131
- name={collectibleMetadata?.name || ''}
132
- assets={[
133
- collectibleMetadata?.image,
134
- collectibleMetadata?.video,
135
- collectibleMetadata?.animation_url,
136
- ]}
137
- assetSrcPrefixUrl={assetSrcPrefixUrl}
138
- />
139
-
140
- <Footer
141
- name={collectibleMetadata?.name || ''}
142
- type={collectionType}
143
- onOfferClick={(e) => onOfferClick?.({ order: highestOffer, e })}
144
- highestOffer={highestOffer}
145
- lowestListingPriceAmount={collectible?.listing?.priceAmount}
146
- lowestListingCurrency={lowestListingCurrency}
147
- balance={balance}
148
- decimals={collectibleMetadata?.decimals}
149
- />
150
-
151
- {(highestOffer || collectible) && !balanceIsLoading && (
152
- <div className="-bottom-16 absolute flex w-full origin-bottom items-center justify-center bg-overlay-light p-2 backdrop-blur transition-transform duration-200 ease-in-out group-hover:translate-y-[-64px]">
153
- <ActionButton
154
- chainId={chainId}
155
- collectionAddress={collectionAddress}
156
- tokenId={collectibleId}
157
- orderbookKind={orderbookKind}
158
- action={action}
159
- highestOffer={highestOffer}
160
- lowestListing={collectible?.listing}
161
- owned={!!balance}
162
- onCannotPerformAction={onCannotPerformAction}
163
- />
164
- </div>
165
- )}
166
- </article>
167
- </div>
168
- </div>
169
- );
170
- }
@@ -1,157 +0,0 @@
1
- 'use client';
2
-
3
- import {
4
- ChevronLeftIcon,
5
- ChevronRightIcon,
6
- IconButton,
7
- Image,
8
- Text,
9
- } from '@0xsequence/design-system';
10
- import { formatUnits } from 'viem';
11
- import { ContractType, type Currency, type Order } from '../../../_internal';
12
- import SvgBellIcon from '../../icons/BellIcon';
13
-
14
- const OVERFLOW_PRICE = 100000000;
15
- const UNDERFLOW_PRICE = 0.0001;
16
-
17
- const formatPrice = (amount: string, currency: Currency): React.ReactNode => {
18
- const formattedPrice = formatUnits(BigInt(amount), currency.decimals);
19
- const numericPrice = Number.parseFloat(formattedPrice);
20
-
21
- if (numericPrice < UNDERFLOW_PRICE) {
22
- return (
23
- <div className="flex items-center">
24
- <ChevronLeftIcon className="h-3 w-3 text-text-100" />
25
- <Text>{`${UNDERFLOW_PRICE} ${currency.symbol}`}</Text>
26
- </div>
27
- );
28
- }
29
-
30
- if (numericPrice > OVERFLOW_PRICE) {
31
- return (
32
- <div className="flex items-center">
33
- <ChevronRightIcon className="h-3 w-3 text-text-100" />
34
- <Text>{`${OVERFLOW_PRICE.toLocaleString('en-US', {
35
- maximumFractionDigits: 2,
36
- })} ${currency.symbol}`}</Text>
37
- </div>
38
- );
39
- }
40
-
41
- const maxDecimals = numericPrice < 0.01 ? 6 : 4;
42
-
43
- const formattedNumber = numericPrice.toLocaleString('en-US', {
44
- minimumFractionDigits: 0,
45
- maximumFractionDigits: maxDecimals,
46
- });
47
-
48
- return (
49
- <div className="flex items-center gap-1">
50
- <Text>
51
- {formattedNumber} {currency.symbol}
52
- </Text>
53
- </div>
54
- );
55
- };
56
-
57
- type FooterProps = {
58
- name: string;
59
- type?: ContractType;
60
- decimals?: number;
61
- onOfferClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
62
- highestOffer?: Order;
63
- lowestListingPriceAmount?: string;
64
- lowestListingCurrency?: Currency;
65
- balance?: string;
66
- };
67
-
68
- export const Footer = ({
69
- name,
70
- type,
71
- decimals,
72
- onOfferClick,
73
- highestOffer,
74
- lowestListingPriceAmount,
75
- lowestListingCurrency,
76
- balance,
77
- }: FooterProps) => {
78
- const listed = !!lowestListingPriceAmount && !!lowestListingCurrency;
79
-
80
- if (name.length > 15 && highestOffer) {
81
- name = `${name.substring(0, 13)}...`;
82
- }
83
- if (name.length > 17 && !highestOffer) {
84
- name = `${name.substring(0, 17)}...`;
85
- }
86
-
87
- return (
88
- <div className="relative flex flex-col items-start gap-2 whitespace-nowrap bg-background-primary p-4">
89
- <div className="relative flex w-full items-center justify-between">
90
- <Text className="text-left font-body font-bold text-sm text-text-100">
91
- {name || 'Untitled'}
92
- </Text>
93
-
94
- {highestOffer && onOfferClick && (
95
- <IconButton
96
- className="absolute top-0 right-0 h-[22px] w-[22px] hover:animate-bell-ring"
97
- size="xs"
98
- variant="primary"
99
- onClick={(e) => {
100
- onOfferClick?.(e);
101
- }}
102
- icon={(props) => <SvgBellIcon {...props} size="xs" />}
103
- />
104
- )}
105
- </div>
106
- <div className="flex items-center gap-1">
107
- {listed && lowestListingCurrency.imageUrl && (
108
- <Image
109
- className="h-3 w-3"
110
- src={lowestListingCurrency.imageUrl}
111
- onError={(e) => {
112
- e.currentTarget.style.display = 'none';
113
- }}
114
- />
115
- )}
116
-
117
- <Text
118
- className={`text-left font-body font-bold text-sm ${
119
- listed ? 'text-text-100' : 'text-text-50'
120
- }`}
121
- >
122
- {listed &&
123
- formatPrice(lowestListingPriceAmount, lowestListingCurrency)}
124
- {!listed && 'Not listed yet'}
125
- </Text>
126
- </div>
127
- <TokenTypeBalancePill
128
- balance={balance}
129
- type={type as ContractType}
130
- decimals={decimals}
131
- />
132
- </div>
133
- );
134
- };
135
-
136
- const TokenTypeBalancePill = ({
137
- balance,
138
- type,
139
- decimals,
140
- }: {
141
- balance?: string;
142
- type: ContractType;
143
- decimals?: number;
144
- }) => {
145
- const displayText =
146
- type === ContractType.ERC1155
147
- ? balance
148
- ? `Owned: ${formatUnits(BigInt(balance), decimals ?? 0)}`
149
- : 'ERC-1155'
150
- : 'ERC-721';
151
-
152
- return (
153
- <Text className="rounded-lg bg-background-secondary px-2 py-1 text-left font-medium text-text-80 text-xs">
154
- {displayText}
155
- </Text>
156
- );
157
- };
@@ -1,94 +0,0 @@
1
- import { TEST_COLLECTIBLE, TEST_CURRENCY } from '@test/const';
2
- import { fireEvent, render, screen } from '@test/test-utils';
3
- import { beforeEach, describe, expect, it, vi } from 'vitest';
4
- import {
5
- type CollectibleOrder,
6
- ContractType,
7
- OrderSide,
8
- OrderbookKind,
9
- } from '../../../../_internal';
10
- import { mockTokenMetadata } from '../../../../_internal/api/__mocks__/indexer.msw';
11
- import { mockOrder } from '../../../../_internal/api/__mocks__/marketplace.msw';
12
- import * as hooks from '../../../../hooks';
13
- import { CollectibleCard } from '../CollectibleCard';
14
-
15
- const defaultProps = {
16
- collectibleId: '1',
17
- chainId: 1,
18
- collectionAddress: TEST_COLLECTIBLE.collectionAddress,
19
- collectible: {
20
- order: mockOrder,
21
- listing: { ...mockOrder, side: OrderSide.listing },
22
- offer: { ...mockOrder, side: OrderSide.offer },
23
- metadata: {
24
- ...mockTokenMetadata,
25
- tokenId: mockTokenMetadata.tokenId as string,
26
- assets: mockTokenMetadata.assets
27
- ? mockTokenMetadata.assets.map((asset) => ({
28
- ...asset,
29
- tokenId: asset.tokenId || '',
30
- }))
31
- : undefined,
32
- },
33
- } as CollectibleOrder,
34
- balance: '100',
35
- balanceIsLoading: false,
36
- cardLoading: false,
37
- onCannotPerformAction: vi.fn(),
38
- assetSrcPrefixUrl: 'https://example.com/',
39
- orderbookKind: OrderbookKind.sequence_marketplace_v2,
40
- collectionType: ContractType.ERC721,
41
- };
42
-
43
- describe('CollectibleCard', () => {
44
- beforeEach(() => {
45
- vi.clearAllMocks();
46
- vi.restoreAllMocks();
47
-
48
- const useCurrencySpy = vi.spyOn(hooks, 'useCurrency');
49
- useCurrencySpy.mockReturnValue({
50
- data: TEST_CURRENCY,
51
- } as ReturnType<typeof hooks.useCurrency>);
52
- });
53
-
54
- it('Renders correctly with valid props and shows proper collectible details', () => {
55
- render(<CollectibleCard {...defaultProps} />);
56
-
57
- expect(screen.getByText('Mock NFT')).toBeInTheDocument();
58
- expect(screen.getByText('1 TEST')).toBeInTheDocument();
59
- // there is an offer
60
- expect(screen.getByTitle('Notification Bell')).toBeInTheDocument();
61
- expect(screen.getByRole('img', { name: 'Mock NFT' })).toHaveAttribute(
62
- 'src',
63
- defaultProps.assetSrcPrefixUrl + defaultProps.collectible.metadata.image,
64
- );
65
- });
66
-
67
- it('Handles loading state by showing skeleton component', () => {
68
- render(<CollectibleCard {...defaultProps} cardLoading={true} />);
69
- expect(screen.getByTestId('collectible-card-skeleton')).toBeInTheDocument();
70
- });
71
-
72
- it('Triggers appropriate callbacks when collectible or action buttons are clicked', () => {
73
- const onCollectibleClick = vi.fn();
74
- const onOfferClick = vi.fn();
75
-
76
- render(
77
- <CollectibleCard
78
- {...defaultProps}
79
- onCollectibleClick={onCollectibleClick}
80
- onOfferClick={onOfferClick}
81
- />,
82
- );
83
-
84
- const notificationBell = screen.getByRole('button', {
85
- name: 'Notification Bell',
86
- });
87
- fireEvent.click(notificationBell);
88
- expect(onOfferClick).toHaveBeenCalled();
89
-
90
- const collectibleCard = screen.getByTestId('collectible-card');
91
- fireEvent.click(collectibleCard);
92
- expect(onCollectibleClick).toHaveBeenCalled();
93
- });
94
- });
@@ -1,136 +0,0 @@
1
- import { TEST_CURRENCY } from '@test/const';
2
- import { render, screen } from '@test/test-utils';
3
- import { describe, expect, it, vi } from 'vitest';
4
- import { ContractType } from '../../../../_internal';
5
- import { mockOrder } from '../../../../_internal/api/__mocks__/marketplace.msw';
6
- import { Footer } from '../Footer';
7
-
8
- const defaultProps = {
9
- name: 'Test',
10
- type: ContractType.ERC721,
11
- decimals: 18,
12
- onOfferClick: vi.fn(),
13
- highestOffer: mockOrder,
14
- lowestOffer: mockOrder,
15
- lowestListingPriceAmount: '100',
16
- lowestListingCurrency: TEST_CURRENCY,
17
- balance: '100',
18
- };
19
-
20
- describe('Footer', () => {
21
- it('Renders with basic props (name, type) correctly', () => {
22
- render(<Footer {...defaultProps} />);
23
-
24
- expect(screen.getByText('Test')).toBeInTheDocument();
25
- expect(screen.getByText('0.0001 TEST')).toBeInTheDocument();
26
-
27
- const notificationBell = screen.getByRole('button', {
28
- name: 'Notification Bell',
29
- });
30
- expect(notificationBell).toBeInTheDocument();
31
- });
32
-
33
- it('Truncates long names appropriately based on presence of offers', () => {
34
- const longName =
35
- 'This is a very long collectible name that needs truncation';
36
-
37
- // Test truncation with offer present (truncates to 13 chars + "...")
38
- render(
39
- <Footer {...defaultProps} name={longName} highestOffer={mockOrder} />,
40
- );
41
- expect(screen.getByText('This is a ver...')).toBeInTheDocument();
42
-
43
- // Test truncation without offer present (truncates to 17 chars + "...")
44
- render(
45
- <Footer {...defaultProps} name={longName} highestOffer={undefined} />,
46
- );
47
- expect(screen.getByText('This is a very lo...')).toBeInTheDocument();
48
-
49
- // Test short name with offer (no truncation needed)
50
- render(
51
- <Footer {...defaultProps} name="Short Name" highestOffer={mockOrder} />,
52
- );
53
- expect(screen.getByText('Short Name')).toBeInTheDocument();
54
- });
55
-
56
- it('Formats prices correctly for different scenarios (normal, overflow, underflow)', () => {
57
- // Test normal price formatting
58
- render(
59
- <Footer
60
- {...defaultProps}
61
- lowestListingPriceAmount="1000000000000000000" // 1 TOKEN in wei
62
- />,
63
- );
64
- expect(screen.getByText('1 TEST')).toBeInTheDocument();
65
-
66
- // Test small number formatting (shows more decimals)
67
- render(
68
- <Footer
69
- {...defaultProps}
70
- lowestListingPriceAmount="5000000000000000" // 0.005 TOKEN in wei
71
- />,
72
- );
73
- expect(screen.getByText('0.005 TEST')).toBeInTheDocument();
74
-
75
- // Test underflow price (< 0.0001)
76
- render(
77
- <Footer
78
- {...defaultProps}
79
- lowestListingPriceAmount="10000000000000" // 0.00001 TOKEN in wei
80
- />,
81
- );
82
- // Should display minimum price with chevron icon
83
- expect(screen.getByText('0.0001 TEST')).toBeInTheDocument();
84
-
85
- // Test overflow price (> 100,000,000)
86
- render(
87
- <Footer
88
- {...defaultProps}
89
- lowestListingPriceAmount="100000000000000000000000000" // 100M+ TOKEN in wei
90
- />,
91
- );
92
- // Should display maximum price with chevron icon
93
- expect(screen.getByText('100,000,000 TEST')).toBeInTheDocument();
94
- });
95
-
96
- it("Displays 'Not listed yet' when no listing price is provided", () => {
97
- // Create props without listing price information
98
- const propsWithoutListing = {
99
- ...defaultProps,
100
- lowestListingPriceAmount: undefined,
101
- lowestListingCurrency: undefined,
102
- };
103
-
104
- render(<Footer {...propsWithoutListing} />);
105
-
106
- // Verify "Not listed yet" text is displayed
107
- expect(screen.getByText('Not listed yet')).toBeInTheDocument();
108
- });
109
-
110
- it('Shows proper token balance information for ERC721 vs ERC1155 tokens', () => {
111
- // Test ERC721 token display
112
- render(<Footer {...defaultProps} type={ContractType.ERC721} />);
113
- expect(screen.getByText('ERC-721')).toBeInTheDocument();
114
-
115
- // Test ERC1155 token display without balance
116
- render(
117
- <Footer
118
- {...defaultProps}
119
- type={ContractType.ERC1155}
120
- balance={undefined}
121
- />,
122
- );
123
- expect(screen.getByText('ERC-1155')).toBeInTheDocument();
124
-
125
- // Test ERC1155 token display with balance
126
- render(
127
- <Footer
128
- {...defaultProps}
129
- type={ContractType.ERC1155}
130
- balance="1000000000000000000"
131
- decimals={18}
132
- />,
133
- );
134
- expect(screen.getByText('Owned: 1')).toBeInTheDocument();
135
- });
136
- });