@0xsequence/marketplace-sdk 0.10.0 → 1.0.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 (468) hide show
  1. package/.storybook/ConnectionStatus.tsx +289 -0
  2. package/.storybook/main.ts +20 -1
  3. package/.storybook/preview.tsx +106 -0
  4. package/CHANGELOG.md +58 -0
  5. package/compile-tailwind.js +54 -0
  6. package/dist/{CalendarIcon-CqsuAuCm.js → BellIcon-Cb9YEUzJ.js} +76 -29
  7. package/dist/BellIcon-Cb9YEUzJ.js.map +1 -0
  8. package/dist/CollectibleCard-CYyWzk6u.d.ts +8 -0
  9. package/dist/{_internal-C75gOSNo.js → _internal-DslqcNC1.js} +10 -2
  10. package/dist/_internal-DslqcNC1.js.map +1 -0
  11. package/dist/{alien_swap-CYv6YlOF.js → alien_swap-DJ98gZQp.js} +1 -1
  12. package/dist/{alien_swap-CYv6YlOF.js.map → alien_swap-DJ98gZQp.js.map} +1 -1
  13. package/dist/{api-BiMGqWdz.js → api-BmEQfSQa.js} +24 -4
  14. package/dist/api-BmEQfSQa.js.map +1 -0
  15. package/dist/{aqua-xyz-Bzn5baeH.js → aqua-xyz-n1PcCCZ0.js} +1 -1
  16. package/dist/{aqua-xyz-Bzn5baeH.js.map → aqua-xyz-n1PcCCZ0.js.map} +1 -1
  17. package/dist/{aura-DzIWh8WT.js → aura-Bevk_YkS.js} +1 -1
  18. package/dist/{aura-DzIWh8WT.js.map → aura-Bevk_YkS.js.map} +1 -1
  19. package/dist/{blur-DSH-Cbpj.js → blur-B5sHErx5.js} +1 -1
  20. package/dist/{blur-DSH-Cbpj.js.map → blur-B5sHErx5.js.map} +1 -1
  21. package/dist/builder-api-BFuZNOaN.js.map +1 -1
  22. package/dist/builder.gen-B9wR2nvF.js.map +1 -1
  23. package/dist/{coinbase-Df8URNxq.js → coinbase-D30W-lxA.js} +1 -1
  24. package/dist/{coinbase-Df8URNxq.js.map → coinbase-D30W-lxA.js.map} +1 -1
  25. package/dist/contracts-DPHFT2TA.js +97 -0
  26. package/dist/contracts-DPHFT2TA.js.map +1 -0
  27. package/dist/{create-config-fQ-jbJD1.js → create-config-6uynwTeb.js} +2 -2
  28. package/dist/create-config-6uynwTeb.js.map +1 -0
  29. package/dist/{create-config-DKJ-F0jc.d.ts → create-config-lLSrnkbb.d.ts} +253 -226
  30. package/dist/{element-Cx6uJu5N.js → element-C2NJexro.js} +1 -1
  31. package/dist/{element-Cx6uJu5N.js.map → element-C2NJexro.js.map} +1 -1
  32. package/dist/filters-B8XS4tFH.d.ts +31 -0
  33. package/dist/{foundation-D6U4aRLN.js → foundation-QgY1lvUj.js} +1 -1
  34. package/dist/{foundation-D6U4aRLN.js.map → foundation-QgY1lvUj.js.map} +1 -1
  35. package/dist/index-BGJXqdg6.d.ts +131 -0
  36. package/dist/index-BuY_NKSX.d.ts +222 -0
  37. package/dist/{index-BhVFc2rX.d.ts → index-ByW08-Z7.d.ts} +4 -4
  38. package/dist/index-C7xKVIr4.d.ts +447 -0
  39. package/dist/index-CIkpYltz.d.ts +61 -0
  40. package/dist/index-CQnGIGb5.d.ts +346 -0
  41. package/dist/{index-CUwMH7Ht.d.ts → index-CY5UEX4h.d.ts} +2 -2
  42. package/dist/{index-C5aqo8xu.d.ts → index-ChSKFOMx.d.ts} +1 -1
  43. package/dist/{index-BAhaEfqY.d.ts → index-CtF7EE2z.d.ts} +1 -1
  44. package/dist/index-D2HohSwO.d.ts +293 -0
  45. package/dist/index-D71J5Ghd.d.ts +813 -0
  46. package/dist/{index-CKrYP7ot.d.ts → index-DNU9xoGK.d.ts} +14 -22
  47. package/dist/index-DX0Vm8HY.d.ts +2541 -0
  48. package/dist/index-DonXiSg2.d.ts +902 -0
  49. package/dist/index-Dpyp7fQz.d.ts +298 -0
  50. package/dist/index-PSPpUxCE.d.ts +18 -0
  51. package/dist/{index-136YrWDH.d.ts → index-QxxS6f9r.d.ts} +1 -1
  52. package/dist/index-ThUIs-Sy.d.ts +306 -0
  53. package/dist/index.d.ts +8 -8
  54. package/dist/index.js +12 -13
  55. package/dist/listCollectiblesPaginated--AgXjajA.d.ts +166 -0
  56. package/dist/listCollections-Bbzbz7qW.d.ts +624 -0
  57. package/dist/{looks-rare-ChBRBY-p.js → looks-rare-CMVPny4v.js} +1 -1
  58. package/dist/{looks-rare-ChBRBY-p.js.map → looks-rare-CMVPny4v.js.map} +1 -1
  59. package/dist/lowestListing-BQHfQpfg.d.ts +144 -0
  60. package/dist/{magic-eden-D5U7N1xL.js → magic-eden-IrWp2ZXk.js} +1 -1
  61. package/dist/{magic-eden-D5U7N1xL.js.map → magic-eden-IrWp2ZXk.js.map} +1 -1
  62. package/dist/{manifold-CtLF52zU.js → manifold-DeOE-p2G.js} +1 -1
  63. package/dist/{manifold-CtLF52zU.js.map → manifold-DeOE-p2G.js.map} +1 -1
  64. package/dist/marketCurrencies-CmOMCCOr.d.ts +122 -0
  65. package/dist/{marketplace-DmFiyBoS.js → marketplace-B5Z8G03R.js} +1 -1
  66. package/dist/{marketplace-DmFiyBoS.js.map → marketplace-B5Z8G03R.js.map} +1 -1
  67. package/dist/{marketplace-logos-Cd6W-qOq.js → marketplace-logos-D8t86gsW.js} +21 -21
  68. package/dist/{marketplace-logos-Cd6W-qOq.js.map → marketplace-logos-D8t86gsW.js.map} +1 -1
  69. package/dist/{marketplace.gen-HpnpL5xU.js → marketplace.gen-JzNYpM0U.js} +1 -1
  70. package/dist/{marketplace.gen-HpnpL5xU.js.map → marketplace.gen-JzNYpM0U.js.map} +1 -1
  71. package/dist/{marketplaceConfig-GQTTmihy.js → marketplaceConfig-sNh-MA5M.js} +14 -3
  72. package/dist/marketplaceConfig-sNh-MA5M.js.map +1 -0
  73. package/dist/{mintify-Bi3Bce68.js → mintify-DG3GrljJ.js} +1 -1
  74. package/dist/{mintify-Bi3Bce68.js.map → mintify-DG3GrljJ.js.map} +1 -1
  75. package/dist/{network-CGD0oKtS.js → network-DnBEe1Ur.js} +2 -2
  76. package/dist/{network-CGD0oKtS.js.map → network-DnBEe1Ur.js.map} +1 -1
  77. package/dist/{nftx-BDQZjtkX.js → nftx-B3LH-ZYM.js} +1 -1
  78. package/dist/{nftx-BDQZjtkX.js.map → nftx-B3LH-ZYM.js.map} +1 -1
  79. package/dist/{okx-D4meadLe.js → okx-CRFLrT3Z.js} +1 -1
  80. package/dist/{okx-D4meadLe.js.map → okx-CRFLrT3Z.js.map} +1 -1
  81. package/dist/{open-sea-DN0hgfVw.js → open-sea-cOpfl366.js} +1 -1
  82. package/dist/{open-sea-DN0hgfVw.js.map → open-sea-cOpfl366.js.map} +1 -1
  83. package/dist/primary-sale-CLjXRrDj.js +3048 -0
  84. package/dist/primary-sale-CLjXRrDj.js.map +1 -0
  85. package/dist/queries-BYT4GJw3.js +1478 -0
  86. package/dist/queries-BYT4GJw3.js.map +1 -0
  87. package/dist/query-BTe7Wkrs.d.ts +31 -0
  88. package/dist/{rarible-B0xlD88A.js → rarible-guwUx4cn.js} +1 -1
  89. package/dist/{rarible-B0xlD88A.js.map → rarible-guwUx4cn.js.map} +1 -1
  90. package/dist/react/_internal/api/index.d.ts +1 -1
  91. package/dist/react/_internal/api/index.js +4 -6
  92. package/dist/react/_internal/databeat/index.d.ts +1 -1
  93. package/dist/react/_internal/databeat/index.js +24 -4
  94. package/dist/react/_internal/index.d.ts +1 -1
  95. package/dist/react/_internal/index.js +7 -10
  96. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  97. package/dist/react/_internal/wagmi/index.js +3 -4
  98. package/dist/react/hooks/config/index.d.ts +9 -0
  99. package/dist/react/hooks/config/index.js +26 -0
  100. package/dist/react/hooks/contracts/index.d.ts +7 -0
  101. package/dist/react/hooks/contracts/index.js +16 -0
  102. package/dist/react/hooks/data/collectibles/index.d.ts +5 -0
  103. package/dist/react/hooks/data/collectibles/index.js +26 -0
  104. package/dist/react/hooks/data/collections/index.d.ts +11 -0
  105. package/dist/react/hooks/data/collections/index.js +26 -0
  106. package/dist/react/hooks/data/index.d.ts +29 -0
  107. package/dist/react/hooks/data/index.js +26 -0
  108. package/dist/react/hooks/data/inventory/index.d.ts +29 -0
  109. package/dist/react/hooks/data/inventory/index.js +26 -0
  110. package/dist/react/hooks/data/market/index.d.ts +12 -0
  111. package/dist/react/hooks/data/market/index.js +26 -0
  112. package/dist/react/hooks/data/orders/index.d.ts +11 -0
  113. package/dist/react/hooks/data/orders/index.js +26 -0
  114. package/dist/react/hooks/data/primary-sales/index.d.ts +29 -0
  115. package/dist/react/hooks/data/primary-sales/index.js +26 -0
  116. package/dist/react/hooks/data/tokens/index.d.ts +5 -0
  117. package/dist/react/hooks/data/tokens/index.js +26 -0
  118. package/dist/react/hooks/index.d.ts +29 -13
  119. package/dist/react/hooks/index.js +22 -23
  120. package/dist/react/hooks/transactions/index.d.ts +3 -0
  121. package/dist/react/hooks/transactions/index.js +26 -0
  122. package/dist/react/hooks/ui/index.d.ts +5 -0
  123. package/dist/react/hooks/ui/index.js +26 -0
  124. package/dist/react/hooks/utils/index.d.ts +29 -0
  125. package/dist/react/hooks/utils/index.js +26 -0
  126. package/dist/react/index.d.ts +29 -13
  127. package/dist/react/index.js +22 -28
  128. package/dist/react/queries/index.d.ts +16 -9
  129. package/dist/react/queries/index.js +17 -20
  130. package/dist/react/ssr/index.d.ts +7 -7
  131. package/dist/react/ssr/index.js +8 -11
  132. package/dist/react/ssr/index.js.map +1 -1
  133. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +4 -3
  134. package/dist/react/ui/components/marketplace-collectible-card/index.js +21 -27
  135. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  136. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +8 -11
  137. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  138. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  139. package/dist/react/ui/icons/index.js +11 -13
  140. package/dist/react/ui/index.d.ts +4 -3
  141. package/dist/react/ui/index.js +21 -27
  142. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +3 -27
  143. package/dist/react/ui/modals/_internal/components/actionModal/index.js +22 -24
  144. package/dist/react/utils/index.d.ts +19 -0
  145. package/dist/react/utils/index.js +9 -0
  146. package/dist/{react-DeDyTgo7.css → react-CbqXKOpt.css} +1 -1
  147. package/dist/{react-DeDyTgo7.css.map → react-CbqXKOpt.css.map} +1 -1
  148. package/dist/react-Ceq8mamy.js +12494 -0
  149. package/dist/react-Ceq8mamy.js.map +1 -0
  150. package/dist/{sequence-BIrOVRXO.js → sequence-Dt2Xo7Fa.js} +1 -1
  151. package/dist/{sequence-BIrOVRXO.js.map → sequence-Dt2Xo7Fa.js.map} +1 -1
  152. package/dist/{index.css → styles/index.css} +270 -131
  153. package/dist/{sudo-swap-BPMon-M5.js → sudo-swap-CGoARONs.js} +1 -1
  154. package/dist/{sudo-swap-BPMon-M5.js.map → sudo-swap-CGoARONs.js.map} +1 -1
  155. package/dist/{super-rare-kPN6Ua8i.js → super-rare-NeQtZjcn.js} +1 -1
  156. package/dist/{super-rare-kPN6Ua8i.js.map → super-rare-NeQtZjcn.js.map} +1 -1
  157. package/dist/{token-CHSBPYVG.js → token-D9gZVqbX.js} +1 -1
  158. package/dist/{token-CHSBPYVG.js.map → token-D9gZVqbX.js.map} +1 -1
  159. package/dist/tokenSupplies-DXtkRYNO.d.ts +147 -0
  160. package/dist/{transaction-CnctdNzS.js → transaction-CC2KxNF6.js} +21 -18
  161. package/dist/transaction-CC2KxNF6.js.map +1 -0
  162. package/dist/types/index.d.ts +1 -1
  163. package/dist/types/index.js +2 -2
  164. package/dist/{CollectibleCard-Dd-CG6dE.d.ts → types-BlCa0TVE.d.ts} +5 -8
  165. package/dist/{types-Yw2ywj6j.js → types-G2PWxiJR.js} +1 -1
  166. package/dist/{types-Yw2ywj6j.js.map → types-G2PWxiJR.js.map} +1 -1
  167. package/dist/utils/abi/index.d.ts +5 -5
  168. package/dist/utils/abi/index.js +5 -5
  169. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  170. package/dist/utils/abi/marketplace/index.js +1 -1
  171. package/dist/utils/abi/primary-sale/index.d.ts +2 -2
  172. package/dist/utils/abi/primary-sale/index.js +2 -2
  173. package/dist/utils/abi/token/index.d.ts +1 -1
  174. package/dist/utils/abi/token/index.js +1 -1
  175. package/dist/utils/index.d.ts +7 -7
  176. package/dist/utils/index.js +11 -12
  177. package/dist/{utils-9RXDgcBl.js → utils-CKJd-CRf.js} +3 -3
  178. package/dist/{utils-9RXDgcBl.js.map → utils-CKJd-CRf.js.map} +1 -1
  179. package/dist/{utils-DjVJ9tov.js → utils-wquIhK6T.js} +2 -2
  180. package/dist/{utils-DjVJ9tov.js.map → utils-wquIhK6T.js.map} +1 -1
  181. package/dist/waitForTransactionReceipt-DZxAuR9N.js +27 -0
  182. package/dist/waitForTransactionReceipt-DZxAuR9N.js.map +1 -0
  183. package/dist/{x2y2-BLz-_Q2O.js → x2y2-CQdg24VP.js} +1 -1
  184. package/dist/{x2y2-BLz-_Q2O.js.map → x2y2-CQdg24VP.js.map} +1 -1
  185. package/dist/{zora-UGhKs-aL.js → zora-DdEydy4L.js} +1 -1
  186. package/dist/{zora-UGhKs-aL.js.map → zora-DdEydy4L.js.map} +1 -1
  187. package/package.json +44 -41
  188. package/postcss.config.mjs +72 -5
  189. package/public/mockServiceWorker.js +344 -0
  190. package/src/react/_internal/api/__mocks__/builder.msw.ts +6 -0
  191. package/src/react/_internal/api/__mocks__/metadata.msw.ts +12 -1
  192. package/src/react/_internal/api/builder.gen.ts +11 -7
  193. package/src/react/_internal/databeat/index.ts +1 -1
  194. package/src/react/_internal/databeat/types.ts +1 -0
  195. package/src/react/_internal/query-meta.ts +3 -0
  196. package/src/react/_internal/utils.ts +2 -0
  197. package/src/react/_internal/wagmi/create-config.ts +1 -1
  198. package/src/react/_internal/wagmi/get-connectors.ts +1 -1
  199. package/src/react/hooks/{__tests__ → config}/__snapshots__/useMarketplaceConfig.test.tsx.snap +6 -0
  200. package/src/react/hooks/config/index.ts +3 -0
  201. package/src/react/hooks/{useConfig.tsx → config/useConfig.tsx} +2 -2
  202. package/src/react/hooks/config/useConnectorMetadata.tsx +16 -0
  203. package/src/react/hooks/{__tests__ → config}/useMarketplaceConfig.test.tsx +1 -1
  204. package/src/react/hooks/{useMarketplaceConfig.tsx → config/useMarketplaceConfig.tsx} +2 -2
  205. package/src/react/hooks/contracts/index.ts +1 -0
  206. package/src/react/hooks/contracts/useSalesContractABI.ts +174 -0
  207. package/src/react/hooks/data/collectibles/index.ts +6 -0
  208. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.laos.test.tsx +4 -4
  209. package/src/react/hooks/{__tests__ → data/collectibles}/useBalanceOfCollectible.test.tsx +2 -2
  210. package/src/react/hooks/{useBalanceOfCollectible.tsx → data/collectibles/useBalanceOfCollectible.tsx} +4 -4
  211. package/src/react/hooks/{__tests__ → data/collectibles}/useCollectible.test.tsx +3 -3
  212. package/src/react/hooks/{useCollectible.tsx → data/collectibles/useCollectible.tsx} +3 -3
  213. package/src/react/hooks/{__tests__ → data/collectibles}/useCountOfCollectables.test.tsx +4 -4
  214. package/src/react/hooks/{useCountOfCollectables.tsx → data/collectibles/useCountOfCollectables.tsx} +3 -3
  215. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibleActivities.test.tsx +3 -3
  216. package/src/react/hooks/{useListCollectibleActivities.tsx → data/collectibles/useListCollectibleActivities.tsx} +3 -3
  217. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectibles.test.tsx +5 -6
  218. package/src/react/hooks/{useListCollectibles.tsx → data/collectibles/useListCollectibles.tsx} +3 -3
  219. package/src/react/hooks/{__tests__ → data/collectibles}/useListCollectiblesPaginated.test.tsx +4 -4
  220. package/src/react/hooks/{useListCollectiblesPaginated.tsx → data/collectibles/useListCollectiblesPaginated.tsx} +3 -3
  221. package/src/react/hooks/{__tests__ → data/collections}/__snapshots__/useListCollections.test.tsx.snap +10 -0
  222. package/src/react/hooks/data/collections/index.ts +6 -0
  223. package/src/react/hooks/{__tests__ → data/collections}/useCollection.test.tsx +2 -3
  224. package/src/react/hooks/{useCollection.tsx → data/collections/useCollection.tsx} +3 -3
  225. package/src/react/hooks/{__tests__ → data/collections}/useCollectionBalanceDetails.test.tsx +2 -2
  226. package/src/react/hooks/{useCollectionBalanceDetails.tsx → data/collections/useCollectionBalanceDetails.tsx} +3 -3
  227. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetails.test.tsx +2 -2
  228. package/src/react/hooks/{useCollectionDetails.ts → data/collections/useCollectionDetails.ts} +3 -3
  229. package/src/react/hooks/{__tests__ → data/collections}/useCollectionDetailsPolling.test.tsx +3 -3
  230. package/src/react/hooks/{useCollectionDetailsPolling.tsx → data/collections/useCollectionDetailsPolling.tsx} +4 -4
  231. package/src/react/hooks/{__tests__ → data/collections}/useListCollectionActivities.test.tsx +5 -5
  232. package/src/react/hooks/{useListCollectionActivities.tsx → data/collections/useListCollectionActivities.tsx} +3 -3
  233. package/src/react/hooks/{__tests__ → data/collections}/useListCollections.test.tsx +5 -4
  234. package/src/react/hooks/{useListCollections.tsx → data/collections/useListCollections.tsx} +4 -4
  235. package/src/react/hooks/data/index.ts +6 -0
  236. package/src/react/hooks/data/inventory/index.ts +1 -0
  237. package/src/react/hooks/{__tests__ → data/inventory}/useInventory.test.tsx +4 -4
  238. package/src/react/hooks/{useInventory.tsx → data/inventory/useInventory.tsx} +7 -4
  239. package/src/react/hooks/data/market/index.ts +3 -0
  240. package/src/react/hooks/{__tests__ → data/market}/useCurrency.test.tsx +4 -4
  241. package/src/react/hooks/{useCurrency.tsx → data/market/useCurrency.tsx} +3 -3
  242. package/src/react/hooks/{__tests__ → data/market}/useListMarketCardData.test.tsx +10 -14
  243. package/src/react/hooks/{useListMarketCardData.tsx → data/market/useListMarketCardData.tsx} +6 -6
  244. package/src/react/hooks/{__tests__ → data/market}/useMarketCurrencies.test.tsx +5 -5
  245. package/src/react/hooks/{useMarketCurrencies.tsx → data/market/useMarketCurrencies.tsx} +3 -3
  246. package/src/react/hooks/data/orders/index.ts +7 -0
  247. package/src/react/hooks/{__tests__ → data/orders}/useCountListingsForCollectible.test.tsx +2 -2
  248. package/src/react/hooks/{useCountListingsForCollectible.tsx → data/orders/useCountListingsForCollectible.tsx} +3 -3
  249. package/src/react/hooks/{__tests__ → data/orders}/useCountOffersForCollectible.test.tsx +2 -2
  250. package/src/react/hooks/{useCountOffersForCollectible.tsx → data/orders/useCountOffersForCollectible.tsx} +3 -3
  251. package/src/react/hooks/{__tests__ → data/orders}/useFloorOrder.test.tsx +3 -3
  252. package/src/react/hooks/{useFloorOrder.tsx → data/orders/useFloorOrder.tsx} +3 -3
  253. package/src/react/hooks/{__tests__ → data/orders}/useHighestOffer.test.tsx +3 -3
  254. package/src/react/hooks/{useHighestOffer.tsx → data/orders/useHighestOffer.tsx} +3 -3
  255. package/src/react/hooks/{__tests__ → data/orders}/useListListingsForCollectible.test.tsx +6 -6
  256. package/src/react/hooks/{useListListingsForCollectible.tsx → data/orders/useListListingsForCollectible.tsx} +3 -3
  257. package/src/react/hooks/{__tests__ → data/orders}/useListOffersForCollectible.test.tsx +5 -5
  258. package/src/react/hooks/{useListOffersForCollectible.tsx → data/orders/useListOffersForCollectible.tsx} +4 -4
  259. package/src/react/hooks/{__tests__ → data/orders}/useLowestListing.test.tsx +5 -5
  260. package/src/react/hooks/{useLowestListing.tsx → data/orders/useLowestListing.tsx} +3 -3
  261. package/src/react/hooks/data/primary-sales/index.ts +6 -0
  262. package/src/react/hooks/{useCountOfPrimarySaleItems.tsx → data/primary-sales/useCountOfPrimarySaleItems.tsx} +2 -2
  263. package/src/react/hooks/data/primary-sales/useErc721SalesData.tsx +184 -0
  264. package/src/react/hooks/{useGetCountOfPrimarySaleItems.tsx → data/primary-sales/useGetCountOfPrimarySaleItems.tsx} +4 -4
  265. package/src/react/hooks/{useList1155ShopCardData.tsx → data/primary-sales/useList1155ShopCardData.tsx} +15 -8
  266. package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +183 -0
  267. package/src/react/hooks/{useListPrimarySaleItems.tsx → data/primary-sales/useListPrimarySaleItems.tsx} +3 -3
  268. package/src/react/hooks/data/tokens/index.ts +5 -0
  269. package/src/react/hooks/{__tests__ → data/tokens}/useCurrencyBalance.test.tsx +2 -2
  270. package/src/react/hooks/{__tests__ → data/tokens}/useGetTokenRanges.test.tsx +3 -3
  271. package/src/react/hooks/{useGetTokenRanges.tsx → data/tokens/useGetTokenRanges.tsx} +6 -4
  272. package/src/react/hooks/{__tests__ → data/tokens}/useListBalances.test.tsx +2 -2
  273. package/src/react/hooks/{useListBalances.tsx → data/tokens/useListBalances.tsx} +5 -5
  274. package/src/react/hooks/{__tests__ → data/tokens}/useListTokenMetadata.test.tsx +3 -3
  275. package/src/react/hooks/{useListTokenMetadata.tsx → data/tokens/useListTokenMetadata.tsx} +3 -3
  276. package/src/react/hooks/data/tokens/useSearchTokenMetadata.test.tsx +284 -0
  277. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +186 -0
  278. package/src/react/hooks/{useTokenSupplies.ts → data/tokens/useTokenSupplies.ts} +5 -5
  279. package/src/react/hooks/index.ts +18 -52
  280. package/src/react/hooks/transactions/index.ts +9 -0
  281. package/src/react/hooks/{__tests__ → transactions}/useCancelOrder.test.tsx +53 -85
  282. package/src/react/hooks/{useCancelOrder.tsx → transactions/useCancelOrder.tsx} +4 -4
  283. package/src/react/hooks/{__tests__/useCancelTransactionSteps.test.tsx → transactions/useCancelTransactionSteps.test.tsx.bak} +3 -52
  284. package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +193 -0
  285. package/src/react/hooks/{__tests__ → transactions}/useGenerateCancelTransaction.test.tsx +2 -2
  286. package/src/react/hooks/{useGenerateCancelTransaction.tsx → transactions/useGenerateCancelTransaction.tsx} +5 -5
  287. package/src/react/hooks/{__tests__ → transactions}/useGenerateListingTransaction.test.tsx +2 -2
  288. package/src/react/hooks/{useGenerateListingTransaction.tsx → transactions/useGenerateListingTransaction.tsx} +5 -5
  289. package/src/react/hooks/{__tests__ → transactions}/useGenerateOfferTransaction.test.tsx +7 -45
  290. package/src/react/hooks/{useGenerateOfferTransaction.tsx → transactions/useGenerateOfferTransaction.tsx} +7 -7
  291. package/src/react/hooks/{__tests__ → transactions}/useGenerateSellTransaction.test.tsx +3 -7
  292. package/src/react/hooks/{useGenerateSellTransaction.tsx → transactions/useGenerateSellTransaction.tsx} +4 -4
  293. package/src/react/hooks/transactions/useOrderSteps.tsx +189 -0
  294. package/src/react/hooks/transactions/useProcessStep.test.tsx +272 -0
  295. package/src/react/hooks/transactions/useProcessStep.ts +95 -0
  296. package/src/react/hooks/{__tests__ → transactions}/useTransferTokens.test.tsx +2 -2
  297. package/src/react/hooks/{useTransferTokens.tsx → transactions/useTransferTokens.tsx} +3 -3
  298. package/src/react/hooks/ui/index.ts +3 -0
  299. package/src/react/hooks/{useFilterState.tsx → ui/useFilterState.tsx} +1 -1
  300. package/src/react/hooks/{__tests__ → ui}/useFilters.test.tsx +1 -2
  301. package/src/react/hooks/{useFilters.tsx → ui/useFilters.tsx} +3 -3
  302. package/src/react/hooks/{useOpenConnectModal.tsx → ui/useOpenConnectModal.tsx} +1 -1
  303. package/src/react/hooks/util/optimisticCancelUpdates.ts +1 -0
  304. package/src/react/hooks/utils/index.ts +9 -0
  305. package/src/react/hooks/{__tests__ → utils}/useAutoSelectFeeOption.test.tsx +7 -3
  306. package/src/react/hooks/{useAutoSelectFeeOption.tsx → utils/useAutoSelectFeeOption.tsx} +2 -2
  307. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptions.test.tsx +9 -5
  308. package/src/react/hooks/{useCheckoutOptions.tsx → utils/useCheckoutOptions.tsx} +6 -4
  309. package/src/react/hooks/{__tests__ → utils}/useCheckoutOptionsSalesContract.test.tsx +8 -4
  310. package/src/react/hooks/{useCheckoutOptionsSalesContract.tsx → utils/useCheckoutOptionsSalesContract.tsx} +3 -3
  311. package/src/react/hooks/{__tests__ → utils}/useComparePrices.test.tsx +1 -1
  312. package/src/react/hooks/{useComparePrices.tsx → utils/useComparePrices.tsx} +3 -5
  313. package/src/react/hooks/{__tests__ → utils}/useConvertPriceToUSD.test.tsx +2 -2
  314. package/src/react/hooks/{useConvertPriceToUSD.tsx → utils/useConvertPriceToUSD.tsx} +3 -3
  315. package/src/react/hooks/utils/useEnsureCorrectChain.ts +74 -0
  316. package/src/react/hooks/{__tests__ → utils}/useRoyalty.test.tsx +1 -1
  317. package/src/react/hooks/{useRoyalty.tsx → utils/useRoyalty.tsx} +3 -3
  318. package/src/react/hooks/utils/useSwitchChainWithModal.ts +38 -0
  319. package/src/react/index.ts +1 -2
  320. package/src/react/{provider.tsx → providers/index.tsx} +10 -7
  321. package/src/react/providers/modal-provider.tsx +43 -0
  322. package/src/react/{__tests__ → providers}/provider.test.tsx +1 -1
  323. package/src/react/providers/shadow-root.tsx +63 -0
  324. package/src/react/providers/theme-provider.tsx +29 -0
  325. package/src/react/queries/index.ts +19 -0
  326. package/src/react/queries/marketplaceConfig.ts +10 -1
  327. package/src/react/queries/primarySaleItems.ts +2 -7
  328. package/src/react/queries/searchTokenMetadata.ts +87 -0
  329. package/src/react/queries/tokenSupplies.ts +26 -18
  330. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +6 -0
  331. package/src/react/ssr/__tests__/create-ssr-client.test.ts +1 -1
  332. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +296 -0
  333. package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +34 -14
  334. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -11
  335. package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +5 -12
  336. package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +32 -16
  337. package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +2 -3
  338. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +1 -1
  339. package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +2 -3
  340. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +4 -3
  341. package/src/react/ui/components/marketplace-collectible-card/types.ts +3 -2
  342. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +1 -1
  343. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +6 -3
  344. package/src/react/ui/index.ts +1 -1
  345. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +10 -25
  346. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +2 -2
  347. package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +1 -1
  348. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
  349. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +8 -8
  350. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +32 -14
  351. package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +4 -4
  352. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +18 -30
  353. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +14 -1
  354. package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +13 -2
  355. package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +5 -5
  356. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +7 -2
  357. package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +18 -7
  358. package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +5 -9
  359. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +16 -15
  360. package/src/react/ui/modals/BuyModal/store.ts +2 -0
  361. package/src/react/ui/modals/CreateListingModal/Modal.tsx +11 -5
  362. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +3 -24
  363. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +5 -9
  364. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +43 -83
  365. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +4 -4
  366. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +88 -62
  367. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +9 -7
  368. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +2 -2
  369. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +47 -84
  370. package/src/react/ui/modals/SellModal/Modal.tsx +7 -9
  371. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +8 -30
  372. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +7 -7
  373. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +39 -65
  374. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +28 -18
  375. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +33 -15
  376. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +3 -3
  377. package/src/react/ui/modals/TransferModal/index.tsx +9 -23
  378. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +116 -136
  379. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +15 -44
  380. package/src/react/ui/modals/_internal/components/actionModal/index.ts +0 -1
  381. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +9 -3
  382. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +1 -1
  383. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +2 -2
  384. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +1 -1
  385. package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +97 -7
  386. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +30 -11
  387. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +2 -2
  388. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +1 -1
  389. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +1 -1
  390. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +25 -26
  391. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +3 -1
  392. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +19 -4
  393. package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +3 -5
  394. package/src/react/ui/modals/_internal/types.ts +6 -0
  395. package/src/react/utils/index.ts +1 -0
  396. package/src/react/utils/waitForTransactionReceipt.ts +49 -0
  397. package/src/{index.css → styles/index.css} +1 -1
  398. package/src/styles/styles.ts +3275 -0
  399. package/src/types/sdk-config.ts +2 -0
  400. package/src/utils/_internal/error/transaction.ts +0 -10
  401. package/src/utils/abi/primary-sale/index.ts +4 -2
  402. package/src/utils/abi/primary-sale/{sequence-1155-sales-contract.ts → sequence-1155-sales-contract-v0.ts} +67 -58
  403. package/src/utils/abi/primary-sale/sequence-1155-sales-contract-v1.ts +546 -0
  404. package/src/utils/abi/primary-sale/{sequence-721-sales-contract.ts → sequence-721-sales-contract-v0.ts} +1 -1
  405. package/src/utils/abi/primary-sale/sequence-721-sales-contract-v1.ts +394 -0
  406. package/test/const.ts +1 -1
  407. package/test/globalSetup.ts +39 -11
  408. package/test/handlers.ts +465 -0
  409. package/test/index.ts +1 -0
  410. package/test/server-setup.ts +23 -0
  411. package/test/setup.ts +1 -1
  412. package/test/test-utils.tsx +46 -38
  413. package/tsconfig.json +1 -1
  414. package/tsdown.config.ts +12 -7
  415. package/.storybook/preview.ts +0 -24
  416. package/dist/CalendarIcon-CqsuAuCm.js.map +0 -1
  417. package/dist/InfoIcon-v0w_Lu7t.js +0 -53
  418. package/dist/InfoIcon-v0w_Lu7t.js.map +0 -1
  419. package/dist/_internal-C75gOSNo.js.map +0 -1
  420. package/dist/actionModal-CMUeVsFX.js +0 -116
  421. package/dist/actionModal-CMUeVsFX.js.map +0 -1
  422. package/dist/api-BiMGqWdz.js.map +0 -1
  423. package/dist/base-DqaJPvfN.js +0 -22
  424. package/dist/base-DqaJPvfN.js.map +0 -1
  425. package/dist/create-config-fQ-jbJD1.js.map +0 -1
  426. package/dist/get-provider-CYYHfrlg.js +0 -10
  427. package/dist/get-provider-CYYHfrlg.js.map +0 -1
  428. package/dist/get-query-client-D19vvfJo.js +0 -23
  429. package/dist/get-query-client-D19vvfJo.js.map +0 -1
  430. package/dist/hooks-4pxIbLbM.js +0 -4044
  431. package/dist/hooks-4pxIbLbM.js.map +0 -1
  432. package/dist/index-BKBin-rq.d.ts +0 -979
  433. package/dist/index-BUWB_RXp.d.ts +0 -3144
  434. package/dist/index-Cu70Lw-w.d.ts +0 -1057
  435. package/dist/index-DvpBZgor.d.ts +0 -1
  436. package/dist/marketplaceConfig-GQTTmihy.js.map +0 -1
  437. package/dist/primary-sale-CmWxSfFQ.js +0 -1264
  438. package/dist/primary-sale-CmWxSfFQ.js.map +0 -1
  439. package/dist/provider-DPGUA10G.js +0 -125
  440. package/dist/provider-DPGUA10G.js.map +0 -1
  441. package/dist/queries-Ce_2othB.js +0 -757
  442. package/dist/queries-Ce_2othB.js.map +0 -1
  443. package/dist/react/hooks/options/index.d.ts +0 -3
  444. package/dist/react/hooks/options/index.js +0 -16
  445. package/dist/react-DP0M2Wfm.js +0 -5431
  446. package/dist/react-DP0M2Wfm.js.map +0 -1
  447. package/dist/transaction-CnctdNzS.js.map +0 -1
  448. package/dist/wagmi-Do_KW5ke.js +0 -0
  449. package/src/react/_internal/wallet/__tests__/wallet.test.ts +0 -416
  450. package/src/react/_internal/wallet/useWallet.ts +0 -52
  451. package/src/react/_internal/wallet/wallet.ts +0 -313
  452. package/src/react/hooks/options/index.ts +0 -1
  453. package/src/react/hooks/useCancelTransactionSteps.tsx +0 -249
  454. package/src/react/hooks/useERC721SaleMintedTokens.tsx +0 -70
  455. package/src/react/hooks/useList1155SaleSupplies.tsx +0 -62
  456. package/src/react/hooks/useList721ShopCardData.tsx +0 -165
  457. package/src/react/hooks/useListShopCardData.tsx +0 -70
  458. package/src/react/hooks/useListTokenMetadata.ts +0 -71
  459. package/src/react/hooks/useShopCollectibleSaleData.tsx +0 -349
  460. package/src/react/hooks/useTokenSaleDetailsBatch.tsx +0 -130
  461. package/src/react/ui/modals/_internal/components/actionModal/store.ts +0 -57
  462. package/src/react/ui/modals/modal-provider.tsx +0 -25
  463. package/test/mocks/wallet.ts +0 -63
  464. /package/dist/{abi-BMvgNbKQ.js → abi-Wr_aTZFi.js} +0 -0
  465. /package/dist/{index-CD2bj_xW.d.ts → index-q7f-WDBS.d.ts} +0 -0
  466. /package/dist/{options-BBBR8u_4.js → wagmi-BhP3mdhP.js} +0 -0
  467. /package/src/react/hooks/{useCurrencyBalance.tsx → data/tokens/useCurrencyBalance.tsx} +0 -0
  468. /package/src/react/hooks/{useGetReceiptFromHash.tsx → utils/useGetReceiptFromHash.tsx} +0 -0
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+
3
+ import { type Theme, ThemeProvider } from '@0xsequence/design-system';
4
+ import { type ReactNode, useEffect, useRef, useState } from 'react';
5
+ import { createPortal } from 'react-dom';
6
+ import { styles } from '../../styles/styles';
7
+
8
+ let sheet: CSSStyleSheet;
9
+ const getCSSStyleSheet = (customCSS?: string) => {
10
+ if (!sheet) {
11
+ sheet = new CSSStyleSheet();
12
+ sheet.replaceSync(styles + (customCSS ? `\n\n${customCSS}` : ''));
13
+ }
14
+
15
+ return sheet;
16
+ };
17
+
18
+ interface ShadowRootProps {
19
+ theme?: Theme;
20
+ children: ReactNode;
21
+ customCSS?: string;
22
+ enabled: boolean;
23
+ }
24
+
25
+ export const ShadowRoot = (props: ShadowRootProps) => {
26
+ const { theme, children, customCSS, enabled } = props;
27
+ const hostRef = useRef<HTMLDivElement>(null);
28
+ const [container, setContainer] = useState<HTMLDivElement | null>(null);
29
+ const [windowDocument, setWindowDocument] = useState<Document | null>(null);
30
+
31
+ useEffect(() => {
32
+ setWindowDocument(document);
33
+ }, []);
34
+
35
+ useEffect(() => {
36
+ if (hostRef.current && !hostRef.current.shadowRoot) {
37
+ const shadowRoot = hostRef.current.attachShadow({ mode: 'open' });
38
+ shadowRoot.adoptedStyleSheets = [getCSSStyleSheet(customCSS)];
39
+ const container = document.createElement('div');
40
+ container.id = 'marketplace-sdk-shadow-root';
41
+ shadowRoot.appendChild(container);
42
+
43
+ setContainer(container);
44
+ }
45
+ }, [windowDocument]);
46
+
47
+ if (!enabled) {
48
+ return children;
49
+ }
50
+
51
+ return windowDocument
52
+ ? createPortal(
53
+ <div data-shadow-host ref={hostRef}>
54
+ {container && (
55
+ <ThemeProvider theme={theme} root={container}>
56
+ {children}
57
+ </ThemeProvider>
58
+ )}
59
+ </div>,
60
+ document.body,
61
+ )
62
+ : null;
63
+ };
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+
3
+ import {
4
+ ThemeProvider as SequenceThemeProvider,
5
+ type Theme,
6
+ } from '@0xsequence/design-system';
7
+ import { useConfig } from '../hooks';
8
+
9
+ export const ThemeProvider = ({
10
+ children,
11
+ theme,
12
+ root,
13
+ }: {
14
+ children: React.ReactNode;
15
+ theme?: Theme;
16
+ root?: HTMLElement;
17
+ }) => {
18
+ const { shadowDom } = useConfig();
19
+
20
+ if (!shadowDom) {
21
+ return (
22
+ <SequenceThemeProvider theme={theme} root={root}>
23
+ {children}
24
+ </SequenceThemeProvider>
25
+ );
26
+ }
27
+
28
+ return children;
29
+ };
@@ -1,15 +1,34 @@
1
1
  export * from './balanceOfCollectible';
2
+ export * from './checkoutOptions';
3
+ export * from './checkoutOptionsSalesContract';
2
4
  export * from './collectible';
5
+ export * from './collection';
6
+ export * from './collectionBalanceDetails';
3
7
  export * from './collectionDetails';
8
+ export * from './comparePrices';
9
+ export * from './convertPriceToUSD';
10
+ export * from './countListingsForCollectible';
11
+ export * from './countOfCollectables';
12
+ export * from './countOffersForCollectible';
4
13
  export * from './countOfPrimarySaleItems';
5
14
  export * from './currency';
15
+ export * from './filters';
6
16
  export * from './floorOrder';
17
+ export * from './getTokenRanges';
7
18
  export * from './highestOffer';
8
19
  export * from './inventory';
9
20
  export * from './listBalances';
21
+ export * from './listCollectibleActivities';
10
22
  export * from './listCollectibles';
23
+ export * from './listCollectiblesPaginated';
24
+ export * from './listCollectionActivities';
11
25
  export * from './listCollections';
26
+ export * from './listListingsForCollectible';
12
27
  export * from './listTokenMetadata';
13
28
  export * from './lowestListing';
14
29
  export * from './marketCurrencies';
30
+ export * from './marketplaceConfig';
31
+ export * from './primarySaleItems';
32
+ export * from './primarySaleItemsCount';
33
+ export * from './searchTokenMetadata';
15
34
  export * from './tokenSupplies';
@@ -1,5 +1,5 @@
1
1
  import { queryOptions } from '@tanstack/react-query';
2
- import type { ContractType, SdkConfig } from '../../types';
2
+ import type { ContractType, OrderbookKind, SdkConfig } from '../../types';
3
3
  import type {
4
4
  MarketCollection,
5
5
  MarketPage,
@@ -9,6 +9,7 @@ import type {
9
9
  } from '../../types/new-marketplace-types';
10
10
  import { configKeys, getBuilderClient } from '../_internal';
11
11
  import type { LookupMarketplaceReturn } from '../_internal/api/builder.gen';
12
+ import { persistentQueryMeta } from '../_internal/query-meta';
12
13
 
13
14
  export const fetchMarketplaceConfig = async ({
14
15
  config,
@@ -34,6 +35,8 @@ export const fetchMarketplaceConfig = async ({
34
35
  return {
35
36
  ...collection,
36
37
  contractType: collection.contractType as ContractType,
38
+ destinationMarketplace:
39
+ collection.destinationMarketplace as OrderbookKind,
37
40
  marketplaceType: 'market',
38
41
  } satisfies MarketCollection;
39
42
  });
@@ -100,5 +103,11 @@ export const marketplaceConfigOptions = (config: SdkConfig) => {
100
103
  config,
101
104
  prefetchedMarketplaceSettings,
102
105
  }),
106
+ gcTime: Number.POSITIVE_INFINITY,
107
+ staleTime: Number.POSITIVE_INFINITY,
108
+ refetchOnMount: false,
109
+ refetchOnReconnect: false,
110
+ refetchOnWindowFocus: false,
111
+ meta: persistentQueryMeta,
103
112
  });
104
113
  };
@@ -53,7 +53,7 @@ export const listPrimarySaleItemsQueryOptions = (
53
53
  );
54
54
 
55
55
  type PageParam = { page: number; pageSize: number };
56
- const initialPage: PageParam = { page: 1, pageSize: 30 };
56
+ const initialPage: PageParam = params.page || { page: 1, pageSize: 30 };
57
57
 
58
58
  return infiniteQueryOptions({
59
59
  queryKey: ['listPrimarySaleItems', params],
@@ -71,12 +71,7 @@ export const listPrimarySaleItemsQueryOptions = (
71
71
  },
72
72
  initialPageParam: initialPage,
73
73
  getNextPageParam: (lastPage) =>
74
- lastPage.page?.more
75
- ? {
76
- page: (lastPage.page?.page || 1) + 1,
77
- pageSize: lastPage.page?.pageSize || 30,
78
- }
79
- : undefined,
74
+ lastPage.page?.more ? lastPage.page : undefined,
80
75
  ...params.query,
81
76
  enabled,
82
77
  });
@@ -0,0 +1,87 @@
1
+ import type {
2
+ Filter,
3
+ Page,
4
+ SearchTokenMetadataReturn,
5
+ } from '@0xsequence/metadata';
6
+ import { infiniteQueryOptions } from '@tanstack/react-query';
7
+ import type { SdkConfig } from '../../types';
8
+ import {
9
+ getMetadataClient,
10
+ tokenKeys,
11
+ type ValuesOptional,
12
+ } from '../_internal';
13
+ import type { StandardQueryOptions } from '../types/query';
14
+
15
+ export interface FetchSearchTokenMetadataParams {
16
+ chainId: number;
17
+ collectionAddress: string;
18
+ filter?: Filter;
19
+ page?: Page;
20
+ config: SdkConfig;
21
+ }
22
+
23
+ /**
24
+ * Fetches token metadata from the metadata API using search filters
25
+ */
26
+ export async function fetchSearchTokenMetadata(
27
+ params: FetchSearchTokenMetadataParams,
28
+ ): Promise<SearchTokenMetadataReturn> {
29
+ const { chainId, collectionAddress, filter, page, config } = params;
30
+ const metadataClient = getMetadataClient(config);
31
+
32
+ const response = await metadataClient.searchTokenMetadata({
33
+ chainID: chainId.toString(),
34
+ contractAddress: collectionAddress,
35
+ filter: filter ?? {},
36
+ page,
37
+ });
38
+
39
+ return {
40
+ tokenMetadata: response.tokenMetadata,
41
+ page: response.page,
42
+ };
43
+ }
44
+
45
+ export type SearchTokenMetadataQueryOptions =
46
+ ValuesOptional<FetchSearchTokenMetadataParams> & {
47
+ query?: StandardQueryOptions;
48
+ };
49
+
50
+ export function searchTokenMetadataQueryOptions(
51
+ params: SearchTokenMetadataQueryOptions,
52
+ ) {
53
+ const enabled = Boolean(
54
+ params.chainId &&
55
+ params.collectionAddress &&
56
+ params.config &&
57
+ (params.query?.enabled ?? true),
58
+ );
59
+
60
+ const initialPageParam = { page: 1, pageSize: 30 };
61
+
62
+ return infiniteQueryOptions({
63
+ queryKey: [...tokenKeys.metadata, 'search', params],
64
+ queryFn: ({ pageParam = initialPageParam }) =>
65
+ fetchSearchTokenMetadata({
66
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
67
+ chainId: params.chainId!,
68
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
69
+ collectionAddress: params.collectionAddress!,
70
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
71
+ filter: params.filter!,
72
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
73
+ config: params.config!,
74
+ page: pageParam,
75
+ }),
76
+ initialPageParam,
77
+ getNextPageParam: (lastPage) => {
78
+ if (!lastPage.page?.more) return undefined;
79
+ return {
80
+ page: (lastPage.page.page || 1) + 1,
81
+ pageSize: lastPage.page.pageSize || 20,
82
+ };
83
+ },
84
+ ...params.query,
85
+ enabled,
86
+ });
87
+ }
@@ -1,5 +1,5 @@
1
- import type { GetTokenSuppliesArgs } from '@0xsequence/indexer';
2
- import { queryOptions } from '@tanstack/react-query';
1
+ import type { GetTokenSuppliesArgs, Page } from '@0xsequence/indexer';
2
+ import { infiniteQueryOptions } from '@tanstack/react-query';
3
3
  import type { SdkConfig } from '../../types';
4
4
  import {
5
5
  getIndexerClient,
@@ -7,7 +7,7 @@ import {
7
7
  tokenKeys,
8
8
  type ValuesOptional,
9
9
  } from '../_internal';
10
- import type { StandardQueryOptions } from '../types/query';
10
+ import type { StandardInfiniteQueryOptions } from '../types/query';
11
11
 
12
12
  export interface FetchTokenSuppliesParams
13
13
  extends Omit<GetTokenSuppliesArgs, 'contractAddress'> {
@@ -15,6 +15,7 @@ export interface FetchTokenSuppliesParams
15
15
  collectionAddress: string;
16
16
  config: SdkConfig;
17
17
  isLaos721?: boolean;
18
+ page?: Page;
18
19
  }
19
20
 
20
21
  /**
@@ -61,7 +62,7 @@ export async function fetchTokenSupplies(params: FetchTokenSuppliesParams) {
61
62
 
62
63
  export type TokenSuppliesQueryOptions =
63
64
  ValuesOptional<FetchTokenSuppliesParams> & {
64
- query?: StandardQueryOptions;
65
+ query?: StandardInfiniteQueryOptions;
65
66
  };
66
67
 
67
68
  export function tokenSuppliesQueryOptions(params: TokenSuppliesQueryOptions) {
@@ -72,21 +73,28 @@ export function tokenSuppliesQueryOptions(params: TokenSuppliesQueryOptions) {
72
73
  (params.query?.enabled ?? true),
73
74
  );
74
75
 
75
- return queryOptions({
76
+ const initialPageParam = { page: 1, pageSize: 30 } as Page;
77
+
78
+ const queryFn = async ({ pageParam = initialPageParam }) =>
79
+ fetchTokenSupplies({
80
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
81
+ chainId: params.chainId!,
82
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
83
+ collectionAddress: params.collectionAddress!,
84
+ // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
85
+ config: params.config!,
86
+ isLaos721: params.isLaos721,
87
+ includeMetadata: params.includeMetadata,
88
+ metadataOptions: params.metadataOptions,
89
+ page: pageParam,
90
+ });
91
+
92
+ return infiniteQueryOptions({
76
93
  queryKey: [...tokenKeys.supplies, params],
77
- queryFn: () =>
78
- fetchTokenSupplies({
79
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
80
- chainId: params.chainId!,
81
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
82
- collectionAddress: params.collectionAddress!,
83
- // biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
84
- config: params.config!,
85
- isLaos721: params.isLaos721,
86
- includeMetadata: params.includeMetadata,
87
- metadataOptions: params.metadataOptions,
88
- page: params.page,
89
- }),
94
+ queryFn,
95
+ initialPageParam,
96
+ getNextPageParam: (lastPage) =>
97
+ lastPage.page?.more ? lastPage.page : undefined,
90
98
  ...params.query,
91
99
  enabled,
92
100
  });
@@ -32,6 +32,7 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
32
32
  "id": 1,
33
33
  "itemsAddress": "0x0000000000000000000000000000000000000000",
34
34
  "marketplaceType": "market",
35
+ "private": false,
35
36
  "projectId": 1,
36
37
  "updatedAt": "2025-03-16T13:04:16.098Z",
37
38
  },
@@ -66,6 +67,7 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
66
67
  "id": 2,
67
68
  "itemsAddress": "0x1234567890123456789012345678901234567890",
68
69
  "marketplaceType": "market",
70
+ "private": false,
69
71
  "projectId": 1,
70
72
  "updatedAt": "2025-03-16T13:04:16.098Z",
71
73
  },
@@ -105,10 +107,12 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
105
107
  "bannerUrl": "https://example.com/shop-banner.png",
106
108
  "chainId": 1,
107
109
  "createdAt": "2025-03-16T13:04:16.098Z",
110
+ "customTokenIds": [],
108
111
  "id": 1,
109
112
  "itemsAddress": "0x0000000000000000000000000000000000000000",
110
113
  "marketplaceType": "shop",
111
114
  "name": "Mock Shop Collection",
115
+ "private": false,
112
116
  "projectId": 1,
113
117
  "saleAddress": "0x0000000000000000000000000000000000000000",
114
118
  "saleBannerUrl": "https://example.com/shop-sale-banner.png",
@@ -123,10 +127,12 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
123
127
  "bannerUrl": "https://example.com/polygon-shop-banner.png",
124
128
  "chainId": 137,
125
129
  "createdAt": "2025-03-16T13:04:16.098Z",
130
+ "customTokenIds": [],
126
131
  "id": 2,
127
132
  "itemsAddress": "0x1234567890123456789012345678901234567890",
128
133
  "marketplaceType": "shop",
129
134
  "name": "Polygon Shop Collection",
135
+ "private": false,
130
136
  "projectId": 1,
131
137
  "saleAddress": "0x1234567890123456789012345678901234567890",
132
138
  "saleBannerUrl": "https://example.com/polygon-shop-sale-banner.png",
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import type { SdkConfig } from '../../../types';
2
+ import type { SdkConfig } from '../../../types/index';
3
3
  import { createSSRClient } from '../create-ssr-client';
4
4
 
5
5
  const wagmiCookie =
@@ -0,0 +1,296 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { expect, fn, userEvent, within } from 'storybook/test';
3
+ import { defaultHandlers } from '../../../../../../test/handlers';
4
+ import {
5
+ CollectibleCardAction,
6
+ MarketplaceKind,
7
+ OrderbookKind,
8
+ OrderSide,
9
+ OrderStatus,
10
+ } from '../../../../../types';
11
+ import { ActionButton } from './ActionButton';
12
+
13
+ const meta: Meta<typeof ActionButton> = {
14
+ title: 'Internals/Action Button',
15
+ component: ActionButton,
16
+ parameters: {
17
+ layout: 'centered',
18
+ docs: {
19
+ description: {
20
+ component: `
21
+ The ActionButton component handles different actions for collectibles in both marketplace and shop contexts. It automatically determines whether to show owner or non-owner actions based on ownership and other conditions.
22
+
23
+ ## Manual Testing
24
+
25
+ **Test the modals by clicking the action buttons:**
26
+
27
+ 1. **Buy Action** - Opens buy modal for marketplace listings
28
+ 2. **Make Offer** - Opens offer modal for making offers on collectibles
29
+ 3. **Sell (Accept Offer)** - Opens sell modal to accept existing offers
30
+ 4. **Create Listing** - Opens listing modal to create new listings
31
+ 5. **Transfer** - Opens transfer modal to transfer collectibles
32
+ 6. **Shop Buy** - Opens buy modal for shop-based purchases
33
+
34
+ Each button click should open the corresponding modal. The modals are fully functional with all providers configured.
35
+
36
+ ## MSW Integration
37
+
38
+ All stories now use Mock Service Worker (MSW) to mock API requests, ensuring the components work with realistic data without requiring a backend server.
39
+ `,
40
+ },
41
+ },
42
+ // Use the pre-composed success handlers for all stories by default
43
+ msw: {
44
+ handlers: defaultHandlers.success,
45
+ },
46
+ },
47
+ argTypes: {
48
+ chainId: {
49
+ control: 'number',
50
+ description: 'Blockchain chain ID',
51
+ },
52
+ collectionAddress: {
53
+ control: 'text',
54
+ description: 'Collection contract address',
55
+ },
56
+ tokenId: {
57
+ control: 'text',
58
+ description: 'Token ID of the collectible',
59
+ },
60
+ action: {
61
+ control: 'select',
62
+ options: Object.values(CollectibleCardAction),
63
+ description: 'The action to display',
64
+ },
65
+ owned: {
66
+ control: 'boolean',
67
+ description: 'Whether the user owns this collectible',
68
+ },
69
+ marketplaceType: {
70
+ control: 'select',
71
+ options: ['market', 'shop'],
72
+ description: 'Type of marketplace (market or shop)',
73
+ },
74
+ onCannotPerformAction: {
75
+ action: 'cannot perform action',
76
+ description: 'Callback when user cannot perform the action',
77
+ },
78
+ },
79
+ decorators: [
80
+ (Story) => (
81
+ <div style={{ padding: '1rem', width: '300px' }}>
82
+ <Story />
83
+ </div>
84
+ ),
85
+ ],
86
+ };
87
+
88
+ export default meta;
89
+ type Story = StoryObj<typeof ActionButton>;
90
+
91
+ // Mock data
92
+ const MOCK_ADDRESS = '0x1234567890123456789012345678901234567890' as const;
93
+ const MOCK_ORDER = {
94
+ orderId: 'order-123',
95
+ marketplace: MarketplaceKind.sequence_marketplace_v1,
96
+ side: OrderSide.listing,
97
+ status: OrderStatus.active,
98
+ chainId: 1,
99
+ originName: 'Mock Origin',
100
+ collectionContractAddress: MOCK_ADDRESS,
101
+ tokenId: '123',
102
+ createdBy: MOCK_ADDRESS,
103
+ priceAmount: '1000000000000000000',
104
+ priceAmountFormatted: '1.0',
105
+ priceAmountNet: '950000000000000000',
106
+ priceAmountNetFormatted: '0.95',
107
+ priceCurrencyAddress: '0x0000000000000000000000000000000000000000',
108
+ priceDecimals: 18,
109
+ priceUSD: 1000,
110
+ priceUSDFormatted: '$1,000.00',
111
+ quantityInitial: '1',
112
+ quantityInitialFormatted: '1',
113
+ quantityRemaining: '1',
114
+ quantityRemainingFormatted: '1',
115
+ quantityAvailable: '1',
116
+ quantityAvailableFormatted: '1',
117
+ quantityDecimals: 0,
118
+ feeBps: 500,
119
+ feeBreakdown: [],
120
+ validFrom: '2024-01-01T00:00:00Z',
121
+ validUntil: '2024-12-31T23:59:59Z',
122
+ blockNumber: 12345678,
123
+ orderCreatedAt: '2024-01-01T00:00:00Z',
124
+ orderUpdatedAt: '2024-01-01T00:00:00Z',
125
+ createdAt: '2024-01-01T00:00:00Z',
126
+ updatedAt: '2024-01-01T00:00:00Z',
127
+ };
128
+
129
+ export const OfferAction: Story = {
130
+ args: {
131
+ chainId: 1,
132
+ collectionAddress: MOCK_ADDRESS,
133
+ tokenId: '123',
134
+ action: CollectibleCardAction.OFFER,
135
+ owned: false,
136
+ marketplaceType: 'market',
137
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
138
+ onCannotPerformAction: fn(),
139
+ },
140
+ play: async ({ canvasElement }) => {
141
+ const canvas = within(canvasElement);
142
+ const body = within(document.body);
143
+
144
+ await new Promise((resolve) => setTimeout(resolve, 500));
145
+
146
+ const button = canvas.getByText('Make an offer');
147
+ await userEvent.click(button);
148
+ await new Promise((resolve) => setTimeout(resolve, 500));
149
+
150
+ const modal = body.getByText('Enter price');
151
+ await expect(modal).toBeInTheDocument();
152
+ },
153
+ };
154
+
155
+ export const SellAction: Story = {
156
+ args: {
157
+ chainId: 1,
158
+ collectionAddress: MOCK_ADDRESS,
159
+ tokenId: '123',
160
+ action: CollectibleCardAction.SELL,
161
+ owned: true,
162
+ marketplaceType: 'market',
163
+ highestOffer: {
164
+ ...MOCK_ORDER,
165
+ side: OrderSide.offer,
166
+ status: OrderStatus.active,
167
+ },
168
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
169
+ },
170
+ play: async ({ canvasElement }) => {
171
+ const canvas = within(canvasElement);
172
+ const body = within(document.body);
173
+
174
+ await new Promise((resolve) => setTimeout(resolve, 500));
175
+
176
+ const button = canvas.getByText('Sell');
177
+ await userEvent.click(button);
178
+ await new Promise((resolve) => setTimeout(resolve, 500));
179
+
180
+ const modal = body.getByText('Offer received');
181
+ await expect(modal).toBeInTheDocument();
182
+ },
183
+ };
184
+
185
+ export const ListAction: Story = {
186
+ args: {
187
+ chainId: 1,
188
+ collectionAddress: MOCK_ADDRESS,
189
+ tokenId: '123',
190
+ action: CollectibleCardAction.LIST,
191
+ owned: true,
192
+ marketplaceType: 'market',
193
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
194
+ },
195
+ play: async ({ canvasElement }) => {
196
+ const canvas = within(canvasElement);
197
+ const body = within(document.body);
198
+
199
+ await new Promise((resolve) => setTimeout(resolve, 500));
200
+
201
+ const button = canvas.getByText('Create listing');
202
+ await userEvent.click(button);
203
+ await new Promise((resolve) => setTimeout(resolve, 500));
204
+
205
+ const modal = body.getByText('Enter price');
206
+ await expect(modal).toBeInTheDocument();
207
+ },
208
+ };
209
+
210
+ export const TransferAction: Story = {
211
+ args: {
212
+ chainId: 1,
213
+ collectionAddress: MOCK_ADDRESS,
214
+ tokenId: '123',
215
+ action: CollectibleCardAction.TRANSFER,
216
+ owned: true,
217
+ marketplaceType: 'market',
218
+ },
219
+ play: async ({ canvasElement }) => {
220
+ const canvas = within(canvasElement);
221
+ const body = within(document.body);
222
+
223
+ await new Promise((resolve) => setTimeout(resolve, 500));
224
+
225
+ const button = canvas.getByText('Transfer');
226
+ await userEvent.click(button);
227
+ await new Promise((resolve) => setTimeout(resolve, 500));
228
+
229
+ const modal = body.getByText('Wallet address');
230
+ await expect(modal).toBeInTheDocument();
231
+ },
232
+ };
233
+
234
+ export const ShopBuyAction: Story = {
235
+ args: {
236
+ chainId: 1,
237
+ collectionAddress: MOCK_ADDRESS,
238
+ tokenId: '123',
239
+ action: CollectibleCardAction.BUY,
240
+ owned: false,
241
+ marketplaceType: 'shop',
242
+ salesContractAddress: MOCK_ADDRESS,
243
+ salePrice: {
244
+ amount: '1000000000000000000',
245
+ currencyAddress: '0x0000000000000000000000000000000000000000',
246
+ },
247
+ quantityDecimals: 0,
248
+ quantityRemaining: 100,
249
+ unlimitedSupply: false,
250
+ onCannotPerformAction: fn(),
251
+ },
252
+ play: async ({ canvasElement }) => {
253
+ const canvas = within(canvasElement);
254
+ const body = within(document.body);
255
+
256
+ await new Promise((resolve) => setTimeout(resolve, 500));
257
+
258
+ const button = canvas.getByText('Buy now');
259
+ await userEvent.click(button);
260
+ await new Promise((resolve) => setTimeout(resolve, 500));
261
+
262
+ const modal = body.getByText('Select Quantity');
263
+ await expect(modal).toBeInTheDocument();
264
+ },
265
+ };
266
+
267
+ export const MarketBuyAction: Story = {
268
+ args: {
269
+ chainId: 1,
270
+ collectionAddress: MOCK_ADDRESS,
271
+ tokenId: '123',
272
+ action: CollectibleCardAction.BUY,
273
+ owned: false,
274
+ marketplaceType: 'market',
275
+ lowestListing: {
276
+ ...MOCK_ORDER,
277
+ side: OrderSide.listing,
278
+ status: OrderStatus.active,
279
+ },
280
+ orderbookKind: OrderbookKind.sequence_marketplace_v1,
281
+ onCannotPerformAction: fn(),
282
+ },
283
+ play: async ({ canvasElement }) => {
284
+ const canvas = within(canvasElement);
285
+ const body = within(document.body);
286
+
287
+ await new Promise((resolve) => setTimeout(resolve, 500));
288
+
289
+ const button = canvas.getByText('Buy now');
290
+ await userEvent.click(button);
291
+ await new Promise((resolve) => setTimeout(resolve, 500));
292
+
293
+ const modal = body.getByText('Select Quantity');
294
+ await expect(modal).toBeInTheDocument();
295
+ },
296
+ };