@0xsequence/marketplace-sdk 0.9.0 → 0.10.0

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 (326) hide show
  1. package/.storybook/main.ts +63 -0
  2. package/.storybook/preview.ts +24 -0
  3. package/.storybook/vitest.setup.ts +6 -0
  4. package/CHANGELOG.md +77 -8
  5. package/dist/{CalendarIcon-DbQ7Vxcw.js → CalendarIcon-CqsuAuCm.js} +4 -51
  6. package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
  7. package/dist/{CollectibleCard-C8Ae64Ab.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +8 -7
  8. package/dist/InfoIcon-v0w_Lu7t.js +53 -0
  9. package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
  10. package/dist/{_internal-BgWcRIak.js → _internal-C75gOSNo.js} +2 -10
  11. package/dist/_internal-C75gOSNo.js.map +1 -0
  12. package/dist/actionModal-CMUeVsFX.js +116 -0
  13. package/dist/actionModal-CMUeVsFX.js.map +1 -0
  14. package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
  15. package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
  16. package/dist/{api-DTIan01C.js → api-BiMGqWdz.js} +17 -34
  17. package/dist/api-BiMGqWdz.js.map +1 -0
  18. package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
  19. package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
  20. package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
  21. package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
  22. package/dist/base-DqaJPvfN.js +22 -0
  23. package/dist/base-DqaJPvfN.js.map +1 -0
  24. package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
  25. package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
  26. package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
  27. package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
  28. package/dist/{new-marketplace-types-Bfis0U4J.d.ts → create-config-DKJ-F0jc.d.ts} +402 -41
  29. package/dist/{wagmi-CDzEQbfk.js → create-config-fQ-jbJD1.js} +20 -10
  30. package/dist/create-config-fQ-jbJD1.js.map +1 -0
  31. package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
  32. package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
  33. package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
  34. package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
  35. package/dist/get-provider-CYYHfrlg.js +10 -0
  36. package/dist/get-provider-CYYHfrlg.js.map +1 -0
  37. package/dist/get-query-client-D19vvfJo.js +23 -0
  38. package/dist/get-query-client-D19vvfJo.js.map +1 -0
  39. package/dist/hooks-4pxIbLbM.js +4044 -0
  40. package/dist/hooks-4pxIbLbM.js.map +1 -0
  41. package/dist/{index-BL9RUSEK.d.ts → index-136YrWDH.d.ts} +1 -1
  42. package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
  43. package/dist/index-BKBin-rq.d.ts +979 -0
  44. package/dist/{index-BQsgAvtX.d.ts → index-BUWB_RXp.d.ts} +776 -570
  45. package/dist/{index-21LE7OhL.d.ts → index-BhVFc2rX.d.ts} +6 -3
  46. package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
  47. package/dist/{index-ByznONYE.d.ts → index-CKrYP7ot.d.ts} +20 -48
  48. package/dist/{index-DaE5ZNHb.d.ts → index-CUwMH7Ht.d.ts} +5 -5
  49. package/dist/{index-CLy8y5hm.d.ts → index-Cu70Lw-w.d.ts} +1 -1
  50. package/dist/index.css +414 -1
  51. package/dist/index.d.ts +8 -10
  52. package/dist/index.js +13 -9
  53. package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
  54. package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
  55. package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
  56. package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
  57. package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
  58. package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
  59. package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
  60. package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
  61. package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
  62. package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
  63. package/dist/{marketplace.gen-BSDIX7NZ.js → marketplace.gen-HpnpL5xU.js} +3 -3
  64. package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
  65. package/dist/{marketplaceConfig-C6X1SUik.js → marketplaceConfig-GQTTmihy.js} +3 -3
  66. package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
  67. package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
  68. package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
  69. package/dist/network-CGD0oKtS.js +15 -0
  70. package/dist/network-CGD0oKtS.js.map +1 -0
  71. package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
  72. package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
  73. package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
  74. package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
  75. package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
  76. package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
  77. package/dist/{primary-sale-C55ALnfQ.js → primary-sale-CmWxSfFQ.js} +1 -1
  78. package/dist/{primary-sale-C55ALnfQ.js.map → primary-sale-CmWxSfFQ.js.map} +1 -1
  79. package/dist/provider-DPGUA10G.js +125 -0
  80. package/dist/provider-DPGUA10G.js.map +1 -0
  81. package/dist/{queries-CUU65uYZ.js → queries-Ce_2othB.js} +165 -7
  82. package/dist/queries-Ce_2othB.js.map +1 -0
  83. package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
  84. package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
  85. package/dist/react/_internal/api/index.d.ts +2 -4
  86. package/dist/react/_internal/api/index.js +7 -4
  87. package/dist/react/_internal/databeat/index.d.ts +2 -73
  88. package/dist/react/_internal/databeat/index.js +4 -21
  89. package/dist/react/_internal/index.d.ts +2 -7
  90. package/dist/react/_internal/index.js +11 -6
  91. package/dist/react/_internal/wagmi/index.d.ts +2 -4
  92. package/dist/react/_internal/wagmi/index.js +5 -3
  93. package/dist/react/hooks/index.d.ts +12 -17
  94. package/dist/react/hooks/index.js +23 -19
  95. package/dist/react/hooks/options/index.d.ts +2 -3
  96. package/dist/react/hooks/options/index.js +12 -7
  97. package/dist/react/index.d.ts +12 -17
  98. package/dist/react/index.js +28 -19
  99. package/dist/react/queries/index.d.ts +9 -8
  100. package/dist/react/queries/index.js +20 -15
  101. package/dist/react/ssr/index.d.ts +7 -9
  102. package/dist/react/ssr/index.js +11 -6
  103. package/dist/react/ssr/index.js.map +1 -1
  104. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -8
  105. package/dist/react/ui/components/marketplace-collectible-card/index.js +27 -18
  106. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
  107. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +11 -6
  108. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  109. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  110. package/dist/react/ui/icons/index.js +13 -9
  111. package/dist/react/ui/index.d.ts +3 -8
  112. package/dist/react/ui/index.js +27 -18
  113. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
  114. package/dist/react/ui/modals/_internal/components/actionModal/index.js +23 -18
  115. package/dist/{react-DAIicQPT.js → react-DP0M2Wfm.js} +799 -4306
  116. package/dist/react-DP0M2Wfm.js.map +1 -0
  117. package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
  118. package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
  119. package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
  120. package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
  121. package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
  122. package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
  123. package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
  124. package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
  125. package/dist/{token-Da4TdyUk.js → token-CHSBPYVG.js} +1 -1
  126. package/dist/{token-Da4TdyUk.js.map → token-CHSBPYVG.js.map} +1 -1
  127. package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
  128. package/dist/transaction-CnctdNzS.js.map +1 -0
  129. package/dist/types/index.d.ts +2 -3
  130. package/dist/types/index.js +2 -2
  131. package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
  132. package/dist/{types-DwWE6xOF.js.map → types-Yw2ywj6j.js.map} +1 -1
  133. package/dist/utils/abi/index.d.ts +4 -4
  134. package/dist/utils/abi/index.js +4 -4
  135. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  136. package/dist/utils/abi/marketplace/index.js +1 -1
  137. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  138. package/dist/utils/abi/primary-sale/index.js +1 -1
  139. package/dist/utils/abi/token/index.d.ts +1 -1
  140. package/dist/utils/abi/token/index.js +1 -1
  141. package/dist/utils/index.d.ts +7 -8
  142. package/dist/utils/index.js +12 -9
  143. package/dist/{utils-CW2NA5KG.js → utils-9RXDgcBl.js} +4 -11
  144. package/dist/utils-9RXDgcBl.js.map +1 -0
  145. package/dist/{utils-BPYfgDSL.js → utils-DjVJ9tov.js} +5 -6
  146. package/dist/utils-DjVJ9tov.js.map +1 -0
  147. package/dist/wagmi-Do_KW5ke.js +0 -0
  148. package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
  149. package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
  150. package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
  151. package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
  152. package/eslint.config.mjs +4 -0
  153. package/package.json +27 -14
  154. package/postcss.config.mjs +6 -0
  155. package/src/index.css +5 -4
  156. package/src/index.ts +1 -0
  157. package/src/react/__tests__/provider.test.tsx +4 -3
  158. package/src/react/_internal/api/__mocks__/indexer.msw.ts +16 -0
  159. package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
  160. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
  161. package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
  162. package/src/react/_internal/api/laos-api.ts +3 -0
  163. package/src/react/_internal/api/marketplace.gen.ts +5 -3
  164. package/src/react/_internal/api/query-keys.ts +12 -4
  165. package/src/react/_internal/api/services.ts +2 -14
  166. package/src/react/_internal/databeat/index.ts +15 -14
  167. package/src/react/_internal/databeat/types.ts +22 -0
  168. package/src/react/_internal/databeat/utils.ts +26 -0
  169. package/src/react/_internal/utils.ts +4 -4
  170. package/src/react/_internal/wagmi/create-config.ts +28 -13
  171. package/src/react/_internal/wallet/wallet.ts +4 -4
  172. package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
  173. package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
  174. package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
  175. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +17 -0
  176. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +11 -3
  177. package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +3 -3
  178. package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
  179. package/src/react/hooks/__tests__/useFilters.test.tsx +2 -2
  180. package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
  181. package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +83 -57
  182. package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
  183. package/src/react/hooks/index.ts +3 -1
  184. package/src/react/hooks/useCheckoutOptions.tsx +96 -0
  185. package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
  186. package/src/react/hooks/useCollectionBalanceDetails.tsx +95 -68
  187. package/src/react/hooks/useCollectionDetailsPolling.tsx +3 -7
  188. package/src/react/hooks/useComparePrices.tsx +90 -82
  189. package/src/react/hooks/useConvertPriceToUSD.tsx +85 -71
  190. package/src/react/hooks/useCurrencyBalance.tsx +132 -46
  191. package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
  192. package/src/react/hooks/useFilters.tsx +154 -111
  193. package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
  194. package/src/react/hooks/useGetTokenRanges.tsx +83 -22
  195. package/src/react/hooks/useList1155ShopCardData.tsx +2 -0
  196. package/src/react/hooks/useList721ShopCardData.tsx +12 -7
  197. package/src/react/hooks/useListCollections.tsx +25 -25
  198. package/src/react/hooks/useListMarketCardData.tsx +2 -1
  199. package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
  200. package/src/react/hooks/useListTokenMetadata.ts +71 -0
  201. package/src/react/hooks/useOpenConnectModal.tsx +9 -0
  202. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
  203. package/src/react/hooks/useTokenSupplies.ts +81 -0
  204. package/src/react/hooks/useTransferTokens.tsx +2 -2
  205. package/src/react/provider.tsx +73 -9
  206. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
  207. package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
  208. package/src/react/queries/balanceOfCollectible.ts +7 -4
  209. package/src/react/queries/checkoutOptions.ts +85 -0
  210. package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
  211. package/src/react/queries/collectionBalanceDetails.ts +92 -0
  212. package/src/react/queries/comparePrices.ts +108 -0
  213. package/src/react/queries/convertPriceToUSD.ts +92 -0
  214. package/src/react/queries/filters.ts +138 -0
  215. package/src/react/queries/getTokenRanges.ts +62 -0
  216. package/src/react/queries/index.ts +3 -0
  217. package/src/react/queries/inventory.ts +6 -0
  218. package/src/react/queries/listBalances.ts +4 -3
  219. package/src/react/queries/listCollections.ts +7 -3
  220. package/src/react/queries/listTokenMetadata.ts +2 -2
  221. package/src/react/queries/marketplaceConfig.ts +1 -1
  222. package/src/react/queries/primarySaleItems.ts +85 -0
  223. package/src/react/queries/primarySaleItemsCount.ts +64 -0
  224. package/src/react/queries/tokenSupplies.ts +93 -0
  225. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
  226. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
  227. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
  228. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
  229. package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
  230. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +13 -8
  231. package/src/react/ui/components/_internals/action-button/store.ts +44 -34
  232. package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
  233. package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
  234. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +11 -4
  235. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
  236. package/src/react/ui/components/marketplace-collectible-card/types.ts +4 -3
  237. package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
  238. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +5 -1
  239. package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
  240. package/src/react/ui/components/media/Media.stories.tsx +642 -0
  241. package/src/react/ui/components/media/Media.tsx +24 -19
  242. package/src/react/ui/components/media/types.ts +6 -0
  243. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
  244. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +6 -0
  245. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +7 -1
  246. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +9 -1
  247. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +15 -8
  248. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +3 -0
  249. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
  250. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +2 -2
  251. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
  252. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +1 -1
  253. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +7 -0
  254. package/src/react/ui/modals/BuyModal/index.tsx +9 -1
  255. package/src/react/ui/modals/BuyModal/store.ts +26 -0
  256. package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
  257. package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
  258. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +30 -13
  259. package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
  260. package/src/react/ui/modals/SellModal/Modal.tsx +11 -8
  261. package/src/react/ui/modals/SellModal/store.ts +3 -3
  262. package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
  263. package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
  264. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
  265. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +51 -48
  266. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
  267. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
  268. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +31 -35
  269. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
  270. package/src/react/ui/modals/TransferModal/index.tsx +28 -31
  271. package/src/react/ui/modals/TransferModal/messages.ts +1 -1
  272. package/src/react/ui/modals/TransferModal/store.ts +122 -0
  273. package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
  274. package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
  275. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +5 -2
  276. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -17
  277. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
  278. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
  279. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
  280. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
  281. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
  282. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +155 -20
  283. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +339 -40
  284. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
  285. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
  286. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -13
  287. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
  288. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
  289. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
  290. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +36 -10
  291. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
  292. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +91 -62
  293. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +43 -44
  294. package/src/react/ui/modals/_internal/types.ts +2 -2
  295. package/src/types/sdk-config.ts +6 -1
  296. package/src/utils/network.ts +15 -0
  297. package/test/test-utils.tsx +2 -0
  298. package/vitest.shims.d.ts +2 -0
  299. package/vitest.storybook.config.js +33 -0
  300. package/dist/CalendarIcon-DbQ7Vxcw.js.map +0 -1
  301. package/dist/_internal-BgWcRIak.js.map +0 -1
  302. package/dist/api-DTIan01C.js.map +0 -1
  303. package/dist/builder-api-C_zj5mr3.d.ts +0 -12
  304. package/dist/index-BUVWziLP.d.ts +0 -60
  305. package/dist/index-COt10OgI.d.ts +0 -24
  306. package/dist/index-DPNWNa7t.d.ts +0 -414
  307. package/dist/index-DsfCs3-x.d.ts +0 -122
  308. package/dist/index-dUb6wb4Y.d.ts +0 -22
  309. package/dist/marketplace.gen-BSDIX7NZ.js.map +0 -1
  310. package/dist/marketplaceConfig-C6X1SUik.js.map +0 -1
  311. package/dist/queries-CUU65uYZ.js.map +0 -1
  312. package/dist/react-DAIicQPT.js.map +0 -1
  313. package/dist/transaction-CcVViHEL.js.map +0 -1
  314. package/dist/utils-BPYfgDSL.js.map +0 -1
  315. package/dist/utils-CW2NA5KG.js.map +0 -1
  316. package/dist/wagmi-CDzEQbfk.js.map +0 -1
  317. package/src/react/hooks/__tests__/useGetTokenSuppliesMap.test.tsx +0 -104
  318. package/src/react/hooks/useGetTokenSuppliesMap.tsx +0 -73
  319. package/src/react/hooks/useListPrimarySaleItems.ts +0 -102
  320. package/src/react/queries/getTokenSuppliesMap.ts +0 -77
  321. package/src/react/ui/modals/TransferModal/_store.ts +0 -66
  322. package/src/react/ui/modals/_internal/components/quantityInput/QuantityInputBase.tsx +0 -166
  323. package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
  324. /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
  325. /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
  326. /package/dist/{options-B4QN7Xou.js → options-BBBR8u_4.js} +0 -0
@@ -0,0 +1,83 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import Pill from './Pill';
3
+
4
+ const meta: Meta<typeof Pill> = {
5
+ title: 'Internals/Pill',
6
+ component: Pill,
7
+ parameters: {
8
+ layout: 'centered',
9
+ docs: {
10
+ description: {
11
+ component: `
12
+ The Pill component displays text in a rounded, styled container. Commonly used for tags, labels, and status indicators.
13
+ `,
14
+ },
15
+ },
16
+ },
17
+ argTypes: {
18
+ text: {
19
+ control: 'text',
20
+ description: 'The text content to display inside the pill',
21
+ },
22
+ },
23
+ decorators: [
24
+ (Story) => (
25
+ <div style={{ padding: '1rem' }}>
26
+ <Story />
27
+ </div>
28
+ ),
29
+ ],
30
+ };
31
+
32
+ export default meta;
33
+ type Story = StoryObj<typeof Pill>;
34
+
35
+ export const Default: Story = {
36
+ args: {
37
+ text: 'Default Pill',
38
+ },
39
+ };
40
+
41
+ export const Short: Story = {
42
+ args: {
43
+ text: 'Tag',
44
+ },
45
+ };
46
+
47
+ export const Long: Story = {
48
+ args: {
49
+ text: 'This is a longer pill text',
50
+ },
51
+ };
52
+
53
+ export const WithNumbers: Story = {
54
+ args: {
55
+ text: '123',
56
+ },
57
+ };
58
+
59
+ export const Status: Story = {
60
+ args: {
61
+ text: 'Active',
62
+ },
63
+ };
64
+
65
+ export const WithEmoji: Story = {
66
+ args: {
67
+ text: '🎮 Gaming',
68
+ },
69
+ };
70
+
71
+ // Showcase multiple pills
72
+ export const PillShowcase: Story = {
73
+ render: () => (
74
+ <div className="flex flex-wrap gap-2">
75
+ <Pill text="Short" />
76
+ <Pill text="Medium Length" />
77
+ <Pill text="Active" />
78
+ <Pill text="123" />
79
+ <Pill text="🎮 Gaming" />
80
+ <Pill text="Web3" />
81
+ </div>
82
+ ),
83
+ };
@@ -19,6 +19,11 @@ const formatPrice = (amount: string, currency: Currency): React.ReactNode => {
19
19
  amount,
20
20
  currency.decimals,
21
21
  );
22
+ const isFree = amount === '0';
23
+
24
+ if (isFree) {
25
+ return <Text>Free</Text>;
26
+ }
22
27
 
23
28
  if (isUnderflow) {
24
29
  return (
@@ -58,6 +63,7 @@ type FooterProps = {
58
63
  balance?: string;
59
64
  quantityInitial: string | undefined;
60
65
  quantityRemaining: string | undefined;
66
+ unlimitedSupply?: boolean;
61
67
  marketplaceType: MarketplaceType;
62
68
  salePriceAmount?: string;
63
69
  salePriceCurrency?: Currency;
@@ -74,6 +80,7 @@ export const Footer = ({
74
80
  balance,
75
81
  quantityInitial,
76
82
  quantityRemaining,
83
+ unlimitedSupply,
77
84
  marketplaceType,
78
85
  salePriceAmount,
79
86
  salePriceCurrency,
@@ -166,9 +173,9 @@ export const Footer = ({
166
173
 
167
174
  {isShop && (
168
175
  <SaleDetailsPill
169
- quantityInitial={quantityInitial}
170
176
  quantityRemaining={quantityRemaining}
171
177
  collectionType={type as ContractType}
178
+ unlimitedSupply={unlimitedSupply}
172
179
  />
173
180
  )}
174
181
 
@@ -209,18 +216,18 @@ const TokenTypeBalancePill = ({
209
216
  };
210
217
 
211
218
  const SaleDetailsPill = ({
212
- quantityInitial,
213
219
  quantityRemaining,
214
220
  collectionType,
221
+ unlimitedSupply,
215
222
  }: {
216
- quantityInitial: string | undefined;
217
223
  quantityRemaining: string | undefined;
218
224
  collectionType: ContractType;
225
+ unlimitedSupply?: boolean;
219
226
  }) => {
220
227
  const supplyText = getSupplyStatusText({
221
- quantityInitial,
222
228
  quantityRemaining,
223
229
  collectionType,
230
+ unlimitedSupply,
224
231
  });
225
232
 
226
233
  return (
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import type { Hex } from 'viem';
3
+ import type { Address } from 'viem';
4
4
  import type {
5
5
  CollectibleCardAction,
6
6
  MarketplaceType,
@@ -11,7 +11,7 @@ import { ActionButton } from '../../_internals/action-button/ActionButton';
11
11
  interface ActionButtonWrapperProps {
12
12
  show: boolean;
13
13
  chainId: number;
14
- collectionAddress: Hex;
14
+ collectionAddress: Address;
15
15
  tokenId: string;
16
16
  orderbookKind?: OrderbookKind;
17
17
  action: CollectibleCardAction;
@@ -22,14 +22,15 @@ interface ActionButtonWrapperProps {
22
22
  action: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,
23
23
  ) => void;
24
24
  marketplaceType: MarketplaceType;
25
- salesContractAddress?: Hex;
25
+ salesContractAddress?: Address;
26
26
  prioritizeOwnerActions?: boolean;
27
27
  salePrice?: {
28
28
  amount: string;
29
- currencyAddress: Hex;
29
+ currencyAddress: Address;
30
30
  };
31
31
  quantityDecimals?: number;
32
32
  quantityRemaining?: number;
33
+ unlimitedSupply?: boolean;
33
34
  }
34
35
 
35
36
  export function ActionButtonWrapper({
@@ -49,6 +50,7 @@ export function ActionButtonWrapper({
49
50
  salePrice,
50
51
  quantityDecimals,
51
52
  quantityRemaining,
53
+ unlimitedSupply,
52
54
  }: ActionButtonWrapperProps) {
53
55
  if (!show) return null;
54
56
 
@@ -70,6 +72,7 @@ export function ActionButtonWrapper({
70
72
  salePrice={salePrice}
71
73
  quantityDecimals={quantityDecimals}
72
74
  quantityRemaining={quantityRemaining}
75
+ unlimitedSupply={unlimitedSupply}
73
76
  />
74
77
  </div>
75
78
  );
@@ -1,4 +1,4 @@
1
- import type { Address, Hex } from 'viem';
1
+ import type { Address } from 'viem';
2
2
  import type { CollectibleCardAction, MarketplaceType } from '../../../../types';
3
3
  import type {
4
4
  CollectibleOrder,
@@ -12,7 +12,7 @@ import type {
12
12
  type MarketplaceCardBaseProps = {
13
13
  collectibleId: string;
14
14
  chainId: number;
15
- collectionAddress: Hex;
15
+ collectionAddress: Address;
16
16
  collectionType?: ContractType;
17
17
  assetSrcPrefixUrl?: string;
18
18
  cardLoading?: boolean;
@@ -21,7 +21,7 @@ type MarketplaceCardBaseProps = {
21
21
 
22
22
  // Properties specific to Shop card
23
23
  type ShopCardSpecificProps = {
24
- salesContractAddress: Hex;
24
+ salesContractAddress: Address;
25
25
  tokenMetadata: TokenMetadata;
26
26
  salePrice:
27
27
  | {
@@ -34,6 +34,7 @@ type ShopCardSpecificProps = {
34
34
  quantityDecimals: number | undefined;
35
35
  quantityInitial: string | undefined;
36
36
  quantityRemaining: string | undefined;
37
+ unlimitedSupply?: boolean; // it's useful for 1155 tokens
37
38
  };
38
39
 
39
40
  // Properties specific to marketplace and inventory cards
@@ -1,18 +1,15 @@
1
1
  import { ContractType } from '../../../../_internal';
2
2
 
3
3
  export const getSupplyStatusText = ({
4
- quantityInitial,
5
4
  quantityRemaining,
6
5
  collectionType,
6
+ unlimitedSupply,
7
7
  }: {
8
- quantityInitial: string | undefined;
9
8
  quantityRemaining: string | undefined;
10
9
  collectionType: ContractType;
10
+ unlimitedSupply?: boolean;
11
11
  }): string => {
12
- const hasUnlimitedSupplyCap =
13
- quantityInitial === Number.POSITIVE_INFINITY.toString();
14
-
15
- if (hasUnlimitedSupplyCap) {
12
+ if (unlimitedSupply) {
16
13
  return 'Unlimited Supply';
17
14
  }
18
15
 
@@ -25,7 +22,7 @@ export const getSupplyStatusText = ({
25
22
 
26
23
  if (
27
24
  collectionType === ContractType.ERC1155 &&
28
- !hasUnlimitedSupplyCap &&
25
+ !unlimitedSupply &&
29
26
  quantityRemaining === '0'
30
27
  ) {
31
28
  return 'Out of stock';
@@ -22,6 +22,7 @@ export function ShopCard({
22
22
  quantityDecimals,
23
23
  quantityInitial,
24
24
  quantityRemaining,
25
+ unlimitedSupply,
25
26
  }: ShopCollectibleCardProps) {
26
27
  const { data: saleCurrency, isLoading: saleCurrencyLoading } = useCurrency({
27
28
  chainId,
@@ -47,7 +48,8 @@ export function ShopCard({
47
48
  const showActionButton =
48
49
  salesContractAddress &&
49
50
  collectionType === ContractType.ERC1155 &&
50
- quantityRemaining !== undefined;
51
+ (unlimitedSupply ||
52
+ (quantityRemaining !== undefined && Number(quantityRemaining) > 0));
51
53
 
52
54
  const action = CollectibleCardAction.BUY;
53
55
 
@@ -75,6 +77,7 @@ export function ShopCard({
75
77
  decimals={tokenMetadata.decimals}
76
78
  quantityInitial={quantityInitial}
77
79
  quantityRemaining={quantityRemaining}
80
+ unlimitedSupply={unlimitedSupply}
78
81
  marketplaceType={marketplaceType}
79
82
  salePriceAmount={salePrice?.amount}
80
83
  salePriceCurrency={saleCurrency}
@@ -96,6 +99,7 @@ export function ShopCard({
96
99
  ? Number(quantityRemaining)
97
100
  : undefined
98
101
  }
102
+ unlimitedSupply={unlimitedSupply}
99
103
  />
100
104
  </BaseCard>
101
105
  );
@@ -0,0 +1,199 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import {
3
+ AlienSwapLogo,
4
+ AquaXyzLogo,
5
+ AuraLogo,
6
+ BlurLogo,
7
+ CoinbaseLogo,
8
+ ElementLogo,
9
+ FoundationLogo,
10
+ LooksRareLogo,
11
+ MagicEdenLogo,
12
+ ManifoldLogo,
13
+ MintifyLogo,
14
+ NftxLogo,
15
+ OkxLogo,
16
+ OpenSeaLogo,
17
+ RaribleLogo,
18
+ SequenceLogo,
19
+ SudoSwapLogo,
20
+ SuperRareLogo,
21
+ X2y2Logo,
22
+ ZoraLogo,
23
+ } from './marketplace-logos';
24
+
25
+ const meta: Meta<typeof OpenSeaLogo> = {
26
+ title: 'Components/Marketplace Logos',
27
+ component: OpenSeaLogo,
28
+ parameters: {
29
+ layout: 'centered',
30
+ docs: {
31
+ description: {
32
+ component: `
33
+ Marketplace logo components that lazy-load marketplace brand images. Each logo is optimized for performance with lazy loading and proper fallbacks.
34
+ `,
35
+ },
36
+ },
37
+ },
38
+ argTypes: {
39
+ width: {
40
+ control: 'number',
41
+ description: 'Logo width',
42
+ },
43
+ height: {
44
+ control: 'number',
45
+ description: 'Logo height',
46
+ },
47
+ },
48
+ decorators: [
49
+ (Story) => (
50
+ <div style={{ padding: '1rem' }}>
51
+ <Story />
52
+ </div>
53
+ ),
54
+ ],
55
+ };
56
+
57
+ export default meta;
58
+ type Story = StoryObj<typeof OpenSeaLogo>;
59
+
60
+ export const OpenSea: Story = {
61
+ args: {
62
+ width: 64,
63
+ height: 64,
64
+ },
65
+ };
66
+
67
+ export const Sequence: Story = {
68
+ render: (args) => <SequenceLogo {...args} />,
69
+ args: {
70
+ width: 64,
71
+ height: 64,
72
+ },
73
+ };
74
+
75
+ export const Blur: Story = {
76
+ render: (args) => <BlurLogo {...args} />,
77
+ args: {
78
+ width: 64,
79
+ height: 64,
80
+ },
81
+ };
82
+
83
+ export const MagicEden: Story = {
84
+ render: (args) => <MagicEdenLogo {...args} />,
85
+ args: {
86
+ width: 64,
87
+ height: 64,
88
+ },
89
+ };
90
+
91
+ export const LooksRare: Story = {
92
+ render: (args) => <LooksRareLogo {...args} />,
93
+ args: {
94
+ width: 64,
95
+ height: 64,
96
+ },
97
+ };
98
+
99
+ export const SmallSize: Story = {
100
+ args: {
101
+ width: 32,
102
+ height: 32,
103
+ },
104
+ };
105
+
106
+ export const LargeSize: Story = {
107
+ args: {
108
+ width: 128,
109
+ height: 128,
110
+ },
111
+ };
112
+
113
+ // Showcase all marketplace logos
114
+ export const AllMarketplaceLogos: Story = {
115
+ render: () => (
116
+ <div className="grid grid-cols-5 gap-4 p-4">
117
+ <div className="flex flex-col items-center gap-2">
118
+ <AlienSwapLogo width={48} height={48} />
119
+ <span className="text-xs">AlienSwap</span>
120
+ </div>
121
+ <div className="flex flex-col items-center gap-2">
122
+ <AquaXyzLogo width={48} height={48} />
123
+ <span className="text-xs">AquaXyz</span>
124
+ </div>
125
+ <div className="flex flex-col items-center gap-2">
126
+ <AuraLogo width={48} height={48} />
127
+ <span className="text-xs">Aura</span>
128
+ </div>
129
+ <div className="flex flex-col items-center gap-2">
130
+ <BlurLogo width={48} height={48} />
131
+ <span className="text-xs">Blur</span>
132
+ </div>
133
+ <div className="flex flex-col items-center gap-2">
134
+ <CoinbaseLogo width={48} height={48} />
135
+ <span className="text-xs">Coinbase</span>
136
+ </div>
137
+ <div className="flex flex-col items-center gap-2">
138
+ <ElementLogo width={48} height={48} />
139
+ <span className="text-xs">Element</span>
140
+ </div>
141
+ <div className="flex flex-col items-center gap-2">
142
+ <FoundationLogo width={48} height={48} />
143
+ <span className="text-xs">Foundation</span>
144
+ </div>
145
+ <div className="flex flex-col items-center gap-2">
146
+ <LooksRareLogo width={48} height={48} />
147
+ <span className="text-xs">LooksRare</span>
148
+ </div>
149
+ <div className="flex flex-col items-center gap-2">
150
+ <MagicEdenLogo width={48} height={48} />
151
+ <span className="text-xs">MagicEden</span>
152
+ </div>
153
+ <div className="flex flex-col items-center gap-2">
154
+ <ManifoldLogo width={48} height={48} />
155
+ <span className="text-xs">Manifold</span>
156
+ </div>
157
+ <div className="flex flex-col items-center gap-2">
158
+ <MintifyLogo width={48} height={48} />
159
+ <span className="text-xs">Mintify</span>
160
+ </div>
161
+ <div className="flex flex-col items-center gap-2">
162
+ <NftxLogo width={48} height={48} />
163
+ <span className="text-xs">NFTX</span>
164
+ </div>
165
+ <div className="flex flex-col items-center gap-2">
166
+ <OkxLogo width={48} height={48} />
167
+ <span className="text-xs">OKX</span>
168
+ </div>
169
+ <div className="flex flex-col items-center gap-2">
170
+ <OpenSeaLogo width={48} height={48} />
171
+ <span className="text-xs">OpenSea</span>
172
+ </div>
173
+ <div className="flex flex-col items-center gap-2">
174
+ <RaribleLogo width={48} height={48} />
175
+ <span className="text-xs">Rarible</span>
176
+ </div>
177
+ <div className="flex flex-col items-center gap-2">
178
+ <SequenceLogo width={48} height={48} />
179
+ <span className="text-xs">Sequence</span>
180
+ </div>
181
+ <div className="flex flex-col items-center gap-2">
182
+ <SudoSwapLogo width={48} height={48} />
183
+ <span className="text-xs">SudoSwap</span>
184
+ </div>
185
+ <div className="flex flex-col items-center gap-2">
186
+ <SuperRareLogo width={48} height={48} />
187
+ <span className="text-xs">SuperRare</span>
188
+ </div>
189
+ <div className="flex flex-col items-center gap-2">
190
+ <X2y2Logo width={48} height={48} />
191
+ <span className="text-xs">X2Y2</span>
192
+ </div>
193
+ <div className="flex flex-col items-center gap-2">
194
+ <ZoraLogo width={48} height={48} />
195
+ <span className="text-xs">Zora</span>
196
+ </div>
197
+ </div>
198
+ ),
199
+ };