@0xsequence/marketplace-sdk 1.0.0 → 1.1.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 (304) hide show
  1. package/.storybook/main.ts +1 -1
  2. package/.storybook/preview.tsx +0 -1
  3. package/CHANGELOG.md +62 -13
  4. package/dist/BellIcon-IpHHEy8h.js +45 -0
  5. package/dist/BellIcon-IpHHEy8h.js.map +1 -0
  6. package/dist/{BellIcon-Cb9YEUzJ.js → CartIcon-C8zbor8H.js} +10 -49
  7. package/dist/CartIcon-C8zbor8H.js.map +1 -0
  8. package/dist/CollectibleCard-C2EWF0zo.d.ts +8 -0
  9. package/dist/{_internal-DslqcNC1.js → _internal-DkS2VUn5.js} +1 -1
  10. package/dist/{_internal-DslqcNC1.js.map → _internal-DkS2VUn5.js.map} +1 -1
  11. package/dist/{alien_swap-DJ98gZQp.js → alien_swap-BTJ7mSR-.js} +1 -1
  12. package/dist/{alien_swap-DJ98gZQp.js.map → alien_swap-BTJ7mSR-.js.map} +1 -1
  13. package/dist/{api-BmEQfSQa.js → api-DuLKn__v.js} +5 -3
  14. package/dist/api-DuLKn__v.js.map +1 -0
  15. package/dist/{aqua-xyz-n1PcCCZ0.js → aqua-xyz-BYJ9WSP_.js} +1 -1
  16. package/dist/{aqua-xyz-n1PcCCZ0.js.map → aqua-xyz-BYJ9WSP_.js.map} +1 -1
  17. package/dist/{aura-Bevk_YkS.js → aura-D7SUjgro.js} +1 -1
  18. package/dist/{aura-Bevk_YkS.js.map → aura-D7SUjgro.js.map} +1 -1
  19. package/dist/{blur-B5sHErx5.js → blur-BcnRFCaV.js} +1 -1
  20. package/dist/{blur-B5sHErx5.js.map → blur-BcnRFCaV.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-D30W-lxA.js → coinbase-ChoX9Hw2.js} +1 -1
  24. package/dist/{coinbase-D30W-lxA.js.map → coinbase-ChoX9Hw2.js.map} +1 -1
  25. package/dist/components-CUv-wQr8.js +119 -0
  26. package/dist/components-CUv-wQr8.js.map +1 -0
  27. package/dist/{contracts-DPHFT2TA.js → contracts-D72LBOX3.js} +4 -5
  28. package/dist/{contracts-DPHFT2TA.js.map → contracts-D72LBOX3.js.map} +1 -1
  29. package/dist/{create-config-6uynwTeb.js → create-config-CIfejoCk.js} +6 -11
  30. package/dist/create-config-CIfejoCk.js.map +1 -0
  31. package/dist/{create-config-lLSrnkbb.d.ts → create-config-DV_dtaLt.d.ts} +24 -31
  32. package/dist/{element-C2NJexro.js → element-Dbcv5qya.js} +1 -1
  33. package/dist/{element-C2NJexro.js.map → element-Dbcv5qya.js.map} +1 -1
  34. package/dist/{filters-B8XS4tFH.d.ts → filters-zkMJaPey.d.ts} +6 -6
  35. package/dist/{foundation-QgY1lvUj.js → foundation-QPhUEUy8.js} +1 -1
  36. package/dist/{foundation-QgY1lvUj.js.map → foundation-QPhUEUy8.js.map} +1 -1
  37. package/dist/{index-ChSKFOMx.d.ts → index-B6aSbaw2.d.ts} +1 -1
  38. package/dist/{index-PSPpUxCE.d.ts → index-B8vaT3_s.d.ts} +4 -4
  39. package/dist/{index-DonXiSg2.d.ts → index-BaytncQc.d.ts} +100 -56
  40. package/dist/{index-CY5UEX4h.d.ts → index-BoNNplSx.d.ts} +2 -2
  41. package/dist/{index-QxxS6f9r.d.ts → index-Bv5XVLjH.d.ts} +1 -1
  42. package/dist/{index-CIkpYltz.d.ts → index-C768pAfu.d.ts} +3 -3
  43. package/dist/{index-DX0Vm8HY.d.ts → index-CM0ZTePs.d.ts} +1 -1
  44. package/dist/index-CMPUveNz.d.ts +64 -0
  45. package/dist/{index-ThUIs-Sy.d.ts → index-CQecU53t.d.ts} +28 -23
  46. package/dist/{index-CtF7EE2z.d.ts → index-CT8ZorFd.d.ts} +1 -1
  47. package/dist/{index-Dpyp7fQz.d.ts → index-CXscCUg7.d.ts} +12 -12
  48. package/dist/{index-ByW08-Z7.d.ts → index-D-UXGo5d.d.ts} +2 -2
  49. package/dist/{index-D71J5Ghd.d.ts → index-D6YMj82n.d.ts} +79 -79
  50. package/dist/{index-CQnGIGb5.d.ts → index-DJG0kiII.d.ts} +33 -33
  51. package/dist/{index-D2HohSwO.d.ts → index-DLUjc7Bx.d.ts} +52 -29
  52. package/dist/{index-C7xKVIr4.d.ts → index-DMBMM16q.d.ts} +37 -37
  53. package/dist/{index-DNU9xoGK.d.ts → index-DpeWm_vF.d.ts} +5 -5
  54. package/dist/{index-BuY_NKSX.d.ts → index-Yobo6icm.d.ts} +40 -28
  55. package/dist/{index-BGJXqdg6.d.ts → index-jGgfEHfQ.d.ts} +8 -8
  56. package/dist/index.d.ts +8 -8
  57. package/dist/index.js +12 -11
  58. package/dist/{listCollectiblesPaginated--AgXjajA.d.ts → listCollectiblesPaginated-Bq0QSOjJ.d.ts} +28 -26
  59. package/dist/{listCollections-Bbzbz7qW.d.ts → listCollections-dTCq00l5.d.ts} +168 -123
  60. package/dist/{looks-rare-CMVPny4v.js → looks-rare-C7cQztTR.js} +1 -1
  61. package/dist/{looks-rare-CMVPny4v.js.map → looks-rare-C7cQztTR.js.map} +1 -1
  62. package/dist/{lowestListing-BQHfQpfg.d.ts → lowestListing-CB5Te-Q9.d.ts} +41 -17
  63. package/dist/{magic-eden-IrWp2ZXk.js → magic-eden-D3r7jiBG.js} +1 -1
  64. package/dist/{magic-eden-IrWp2ZXk.js.map → magic-eden-D3r7jiBG.js.map} +1 -1
  65. package/dist/{manifold-DeOE-p2G.js → manifold-DsX0CBP-.js} +1 -1
  66. package/dist/{manifold-DeOE-p2G.js.map → manifold-DsX0CBP-.js.map} +1 -1
  67. package/dist/{marketCurrencies-CmOMCCOr.d.ts → marketCurrencies-Bzj8X4TL.d.ts} +8 -8
  68. package/dist/{marketplace-B5Z8G03R.js → marketplace-BYY8OloA.js} +1 -1
  69. package/dist/{marketplace-B5Z8G03R.js.map → marketplace-BYY8OloA.js.map} +1 -1
  70. package/dist/{marketplace-logos-D8t86gsW.js → marketplace-logos-Csv2MBwf.js} +21 -21
  71. package/dist/marketplace-logos-Csv2MBwf.js.map +1 -0
  72. package/dist/{marketplace.gen-JzNYpM0U.js → marketplace.gen-w2YvbEEo.js} +2 -2
  73. package/dist/marketplace.gen-w2YvbEEo.js.map +1 -0
  74. package/dist/{marketplaceConfig-sNh-MA5M.js → marketplaceConfig-BTy75Mbf.js} +8 -9
  75. package/dist/marketplaceConfig-BTy75Mbf.js.map +1 -0
  76. package/dist/{mintify-DG3GrljJ.js → mintify-DiOoDmO1.js} +1 -1
  77. package/dist/{mintify-DG3GrljJ.js.map → mintify-DiOoDmO1.js.map} +1 -1
  78. package/dist/{network-DnBEe1Ur.js → network-DtmiMhcg.js} +2 -2
  79. package/dist/network-DtmiMhcg.js.map +1 -0
  80. package/dist/networkconfigToWagmiChain-DbUf6HiO.js +15 -0
  81. package/dist/networkconfigToWagmiChain-DbUf6HiO.js.map +1 -0
  82. package/dist/{nftx-B3LH-ZYM.js → nftx-CP82jNra.js} +1 -1
  83. package/dist/{nftx-B3LH-ZYM.js.map → nftx-CP82jNra.js.map} +1 -1
  84. package/dist/{okx-CRFLrT3Z.js → okx-p9-4xRjs.js} +1 -1
  85. package/dist/{okx-CRFLrT3Z.js.map → okx-p9-4xRjs.js.map} +1 -1
  86. package/dist/{open-sea-cOpfl366.js → open-sea-D2GwAmKS.js} +1 -1
  87. package/dist/{open-sea-cOpfl366.js.map → open-sea-D2GwAmKS.js.map} +1 -1
  88. package/dist/{primary-sale-CLjXRrDj.js → primary-sale-DOmNDq2P.js} +1 -1
  89. package/dist/{primary-sale-CLjXRrDj.js.map → primary-sale-DOmNDq2P.js.map} +1 -1
  90. package/dist/{queries-BYT4GJw3.js → queries-EMA5CcwY.js} +208 -287
  91. package/dist/queries-EMA5CcwY.js.map +1 -0
  92. package/dist/{query-BTe7Wkrs.d.ts → query-BG-MA1MB.d.ts} +1 -1
  93. package/dist/{rarible-guwUx4cn.js → rarible-DqiiW9ki.js} +1 -1
  94. package/dist/{rarible-guwUx4cn.js.map → rarible-DqiiW9ki.js.map} +1 -1
  95. package/dist/react/_internal/api/index.d.ts +1 -1
  96. package/dist/react/_internal/api/index.js +4 -4
  97. package/dist/react/_internal/databeat/index.d.ts +1 -1
  98. package/dist/react/_internal/databeat/index.js +24 -21
  99. package/dist/react/_internal/index.d.ts +1 -1
  100. package/dist/react/_internal/index.js +8 -7
  101. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  102. package/dist/react/_internal/wagmi/index.js +4 -3
  103. package/dist/react/hooks/config/index.d.ts +8 -8
  104. package/dist/react/hooks/config/index.js +24 -21
  105. package/dist/react/hooks/contracts/index.d.ts +6 -6
  106. package/dist/react/hooks/contracts/index.js +13 -12
  107. package/dist/react/hooks/data/collectibles/index.d.ts +4 -4
  108. package/dist/react/hooks/data/collectibles/index.js +24 -21
  109. package/dist/react/hooks/data/collections/index.d.ts +10 -10
  110. package/dist/react/hooks/data/collections/index.js +24 -21
  111. package/dist/react/hooks/data/index.d.ts +29 -29
  112. package/dist/react/hooks/data/index.js +25 -22
  113. package/dist/react/hooks/data/inventory/index.d.ts +28 -28
  114. package/dist/react/hooks/data/inventory/index.js +24 -21
  115. package/dist/react/hooks/data/market/index.d.ts +5 -11
  116. package/dist/react/hooks/data/market/index.js +24 -21
  117. package/dist/react/hooks/data/orders/index.d.ts +5 -11
  118. package/dist/react/hooks/data/orders/index.js +25 -22
  119. package/dist/react/hooks/data/primary-sales/index.d.ts +28 -28
  120. package/dist/react/hooks/data/primary-sales/index.js +24 -21
  121. package/dist/react/hooks/data/tokens/index.d.ts +4 -4
  122. package/dist/react/hooks/data/tokens/index.js +24 -21
  123. package/dist/react/hooks/index.d.ts +29 -29
  124. package/dist/react/hooks/index.js +25 -22
  125. package/dist/react/hooks/transactions/index.d.ts +2 -2
  126. package/dist/react/hooks/transactions/index.js +24 -21
  127. package/dist/react/hooks/ui/index.d.ts +4 -4
  128. package/dist/react/hooks/ui/index.js +24 -21
  129. package/dist/react/hooks/utils/index.d.ts +29 -29
  130. package/dist/react/hooks/utils/index.js +25 -22
  131. package/dist/react/index.d.ts +29 -29
  132. package/dist/react/index.js +25 -22
  133. package/dist/react/queries/index.d.ts +16 -16
  134. package/dist/react/queries/index.js +18 -17
  135. package/dist/react/ssr/index.d.ts +7 -7
  136. package/dist/react/ssr/index.js +9 -8
  137. package/dist/react/ssr/index.js.map +1 -1
  138. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +3 -0
  139. package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +22 -0
  140. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +54 -0
  141. package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +29 -0
  142. package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +5 -5
  143. package/dist/react/ui/components/marketplace-collectible-card/index.js +24 -21
  144. package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
  145. package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +9 -8
  146. package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
  147. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  148. package/dist/react/ui/icons/index.js +13 -11
  149. package/dist/react/ui/index.d.ts +5 -5
  150. package/dist/react/ui/index.js +24 -21
  151. package/dist/react/ui/modals/_internal/components/actionModal/index.js +24 -21
  152. package/dist/react/utils/index.d.ts +1 -1
  153. package/dist/react/utils/index.js +5 -5
  154. package/dist/{react-Ceq8mamy.js → react-BLJ4DkPx.js} +723 -807
  155. package/dist/react-BLJ4DkPx.js.map +1 -0
  156. package/dist/{react-CbqXKOpt.css → react-F03jPjPk.css} +1 -1
  157. package/dist/{react-CbqXKOpt.css.map → react-F03jPjPk.css.map} +1 -1
  158. package/dist/{sequence-Dt2Xo7Fa.js → sequence-Bbb-TFKg.js} +1 -1
  159. package/dist/{sequence-Dt2Xo7Fa.js.map → sequence-Bbb-TFKg.js.map} +1 -1
  160. package/dist/styles/index.css +46 -24
  161. package/dist/{sudo-swap-CGoARONs.js → sudo-swap-CEPIM3Js.js} +1 -1
  162. package/dist/{sudo-swap-CGoARONs.js.map → sudo-swap-CEPIM3Js.js.map} +1 -1
  163. package/dist/{super-rare-NeQtZjcn.js → super-rare-CMEn9PoO.js} +1 -1
  164. package/dist/{super-rare-NeQtZjcn.js.map → super-rare-CMEn9PoO.js.map} +1 -1
  165. package/dist/{token-D9gZVqbX.js → token-CcyLz8Z8.js} +1 -1
  166. package/dist/{token-D9gZVqbX.js.map → token-CcyLz8Z8.js.map} +1 -1
  167. package/dist/{tokenSupplies-DXtkRYNO.d.ts → tokenSupplies-C470zTT0.d.ts} +23 -23
  168. package/dist/{transaction-CC2KxNF6.js → transaction-DZUW5RHu.js} +2 -8
  169. package/dist/transaction-DZUW5RHu.js.map +1 -0
  170. package/dist/types/index.d.ts +2 -2
  171. package/dist/types/index.js +2 -2
  172. package/dist/{types-G2PWxiJR.js → types-B_-cnkcP.js} +1 -1
  173. package/dist/types-B_-cnkcP.js.map +1 -0
  174. package/dist/{types-BlCa0TVE.d.ts → types-D6LkVrF0.d.ts} +18 -10
  175. package/dist/utils/abi/index.d.ts +4 -4
  176. package/dist/utils/abi/index.js +4 -4
  177. package/dist/utils/abi/marketplace/index.d.ts +1 -1
  178. package/dist/utils/abi/marketplace/index.js +1 -1
  179. package/dist/utils/abi/primary-sale/index.d.ts +1 -1
  180. package/dist/utils/abi/primary-sale/index.js +1 -1
  181. package/dist/utils/abi/token/index.d.ts +1 -1
  182. package/dist/utils/abi/token/index.js +1 -1
  183. package/dist/utils/index.d.ts +6 -6
  184. package/dist/utils/index.js +11 -10
  185. package/dist/{utils-CKJd-CRf.js → utils-BZEkdqWK.js} +7 -24
  186. package/dist/utils-BZEkdqWK.js.map +1 -0
  187. package/dist/{utils-wquIhK6T.js → utils-oVZxdK0o.js} +2 -2
  188. package/dist/utils-oVZxdK0o.js.map +1 -0
  189. package/dist/{waitForTransactionReceipt-DZxAuR9N.js → waitForTransactionReceipt-B08YZiDY.js} +3 -4
  190. package/dist/{waitForTransactionReceipt-DZxAuR9N.js.map → waitForTransactionReceipt-B08YZiDY.js.map} +1 -1
  191. package/dist/{x2y2-CQdg24VP.js → x2y2-DNe6JgtG.js} +1 -1
  192. package/dist/{x2y2-CQdg24VP.js.map → x2y2-DNe6JgtG.js.map} +1 -1
  193. package/dist/{zora-DdEydy4L.js → zora-w0Zqxxs4.js} +1 -1
  194. package/dist/{zora-DdEydy4L.js.map → zora-w0Zqxxs4.js.map} +1 -1
  195. package/package.json +35 -35
  196. package/src/react/_internal/api/marketplace.gen.ts +1 -1
  197. package/src/react/_internal/api/query-keys.ts +2 -0
  198. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +19 -8
  199. package/src/react/_internal/wagmi/create-config.ts +6 -17
  200. package/src/react/hooks/config/__snapshots__/useMarketplaceConfig.test.tsx.snap +4 -4
  201. package/src/react/hooks/data/collectibles/useBalanceOfCollectible.laos.test.tsx +2 -2
  202. package/src/react/hooks/data/collectibles/useTokenBalances.test.tsx +151 -0
  203. package/src/react/hooks/data/collectibles/useTokenBalances.tsx +47 -0
  204. package/src/react/hooks/data/collections/__snapshots__/useListCollections.test.tsx.snap +6 -6
  205. package/src/react/hooks/data/inventory/useInventory.test.tsx +3 -98
  206. package/src/react/hooks/data/inventory/useInventory.tsx +2 -2
  207. package/src/react/hooks/data/market/useListMarketCardData.tsx +1 -1
  208. package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +70 -45
  209. package/src/react/hooks/data/primary-sales/useList1155ShopCardData.tsx +21 -37
  210. package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +14 -3
  211. package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +4 -1
  212. package/src/react/hooks/transactions/useCancelOrder.test.tsx +7 -4
  213. package/src/react/hooks/transactions/useCancelOrder.tsx +2 -1
  214. package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +2 -2
  215. package/src/react/hooks/transactions/useProcessStep.test.tsx +2 -2
  216. package/src/react/hooks/utils/__tests__/useEnsureCorrectChain.test.tsx +75 -0
  217. package/src/react/hooks/utils/index.ts +0 -1
  218. package/src/react/hooks/utils/useEnsureCorrectChain.ts +31 -34
  219. package/src/react/providers/index.tsx +12 -14
  220. package/src/react/providers/modal-provider.tsx +2 -2
  221. package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +3 -3
  222. package/src/react/queries/__tests__/inventory.laos.test.ts +6 -3
  223. package/src/react/queries/__tests__/tokenBalances.laos.test.ts +123 -0
  224. package/src/react/queries/balanceOfCollectible.ts +2 -1
  225. package/src/react/queries/filters.ts +23 -28
  226. package/src/react/queries/index.ts +1 -0
  227. package/src/react/queries/inventory.ts +63 -243
  228. package/src/react/queries/listCollectibles.ts +22 -48
  229. package/src/react/queries/listCollections.ts +10 -13
  230. package/src/react/queries/listOffersForCollectible.ts +101 -0
  231. package/src/react/queries/marketplaceConfig.ts +6 -2
  232. package/src/react/queries/tokenBalances.ts +85 -0
  233. package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +4 -4
  234. package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +8 -8
  235. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +6 -9
  236. package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -4
  237. package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +6 -6
  238. package/src/react/ui/components/_internals/custom-select/__tests__/CustomSelect.test.tsx +1 -1
  239. package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +4 -3
  240. package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +13 -2
  241. package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +4 -7
  242. package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +14 -5
  243. package/src/react/ui/components/marketplace-collectible-card/components/footer/Footer.tsx +179 -0
  244. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/FooterName.tsx +103 -0
  245. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/PriceDisplay.tsx +80 -0
  246. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/SaleDetailsPill.tsx +29 -0
  247. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/TokenTypeBalancePill.tsx +30 -0
  248. package/src/react/ui/components/marketplace-collectible-card/components/footer/components/index.ts +4 -0
  249. package/src/react/ui/components/marketplace-collectible-card/components/footer/index.ts +2 -0
  250. package/src/react/ui/components/marketplace-collectible-card/types.ts +18 -6
  251. package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +11 -23
  252. package/src/react/ui/components/marketplace-collectible-card/variants/NonTradableInventoryCard.tsx +42 -0
  253. package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +15 -12
  254. package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +10 -10
  255. package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +3 -3
  256. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +3 -3
  257. package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +6 -6
  258. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +3 -3
  259. package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
  260. package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +2 -2
  261. package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +8 -8
  262. package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +2 -2
  263. package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +13 -2
  264. package/src/react/ui/modals/BuyModal/store.ts +6 -6
  265. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +2 -1
  266. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +1 -1
  267. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +87 -89
  268. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +2 -1
  269. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +1 -1
  270. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +2 -1
  271. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +2 -1
  272. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +20 -9
  273. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +2 -2
  274. package/src/react/ui/modals/_internal/components/switchChainErrorModal/__tests__/SwitchChainErrorModal.test.tsx +80 -0
  275. package/src/react/ui/modals/_internal/components/switchChainErrorModal/index.tsx +64 -0
  276. package/src/react/ui/modals/_internal/components/switchChainErrorModal/store.ts +42 -0
  277. package/src/react/ui/modals/_internal/types.ts +0 -1
  278. package/src/styles/styles.ts +46 -24
  279. package/src/types/new-marketplace-types.ts +9 -18
  280. package/src/types/types.ts +1 -1
  281. package/test/globalSetup.ts +1 -1
  282. package/test/test-utils.tsx +1 -0
  283. package/dist/BellIcon-Cb9YEUzJ.js.map +0 -1
  284. package/dist/CollectibleCard-CYyWzk6u.d.ts +0 -8
  285. package/dist/api-BmEQfSQa.js.map +0 -1
  286. package/dist/create-config-6uynwTeb.js.map +0 -1
  287. package/dist/marketplace-logos-D8t86gsW.js.map +0 -1
  288. package/dist/marketplace.gen-JzNYpM0U.js.map +0 -1
  289. package/dist/marketplaceConfig-sNh-MA5M.js.map +0 -1
  290. package/dist/network-DnBEe1Ur.js.map +0 -1
  291. package/dist/queries-BYT4GJw3.js.map +0 -1
  292. package/dist/react-Ceq8mamy.js.map +0 -1
  293. package/dist/transaction-CC2KxNF6.js.map +0 -1
  294. package/dist/types-G2PWxiJR.js.map +0 -1
  295. package/dist/utils-CKJd-CRf.js.map +0 -1
  296. package/dist/utils-wquIhK6T.js.map +0 -1
  297. package/src/react/hooks/utils/useSwitchChainWithModal.ts +0 -38
  298. package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +0 -238
  299. package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +0 -117
  300. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +0 -124
  301. package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +0 -71
  302. /package/dist/{abi-Wr_aTZFi.js → abi-DYsUABe6.js} +0 -0
  303. /package/dist/{index-q7f-WDBS.d.ts → index-Cg5cFzs-.d.ts} +0 -0
  304. /package/dist/{wagmi-BhP3mdhP.js → wagmi-Bseovd6Q.js} +0 -0
@@ -0,0 +1,179 @@
1
+ 'use client';
2
+
3
+ import { Skeleton, Text } from '@0xsequence/design-system';
4
+ import type { Address } from 'viem';
5
+ import type { CardType } from '../../../../../../types';
6
+ import { cn } from '../../../../../../utils';
7
+ import {
8
+ ContractType,
9
+ type Currency,
10
+ type Order,
11
+ } from '../../../../../_internal';
12
+ import { useCurrency, useLowestListing } from '../../../../../hooks';
13
+ import {
14
+ FooterName,
15
+ PriceDisplay,
16
+ SaleDetailsPill,
17
+ TokenTypeBalancePill,
18
+ } from './components';
19
+
20
+ type FooterProps = {
21
+ chainId: number;
22
+ collectionAddress: Address;
23
+ collectibleId: string;
24
+ name: string;
25
+ type?: ContractType;
26
+ decimals?: number;
27
+ onOfferClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
28
+ highestOffer?: Order;
29
+ balance?: string;
30
+ quantityInitial?: string | undefined;
31
+ quantityRemaining?: string | undefined;
32
+ unlimitedSupply?: boolean;
33
+ cardType: CardType;
34
+ salePriceAmount?: string;
35
+ salePriceCurrency?: Currency;
36
+ };
37
+
38
+ export const Footer = ({
39
+ chainId,
40
+ collectionAddress,
41
+ collectibleId,
42
+ name,
43
+ type,
44
+ decimals,
45
+ onOfferClick,
46
+ highestOffer,
47
+ balance,
48
+ quantityInitial,
49
+ quantityRemaining,
50
+ unlimitedSupply,
51
+ cardType,
52
+ salePriceAmount,
53
+ salePriceCurrency,
54
+ }: FooterProps) => {
55
+ const isShop = cardType === 'shop';
56
+ const isMarket = cardType === 'market';
57
+ const isInventoryNonTradable = cardType === 'inventory-non-tradable';
58
+
59
+ const { data: lowestListing, isLoading: isLowestListingLoading } =
60
+ useLowestListing({
61
+ chainId,
62
+ collectionAddress,
63
+ tokenId: collectibleId,
64
+ query: {
65
+ enabled: isMarket, // Only fetch for market cards
66
+ },
67
+ });
68
+
69
+ const { data: currency, isLoading: isCurrencyLoading } = useCurrency({
70
+ chainId,
71
+ currencyAddress: lowestListing?.priceCurrencyAddress as Address,
72
+ query: {
73
+ enabled: isMarket && !!lowestListing?.priceCurrencyAddress, // Only fetch when we have lowest listing data
74
+ },
75
+ });
76
+
77
+ const listed =
78
+ !!lowestListing?.priceAmount && !!lowestListing?.priceCurrencyAddress;
79
+
80
+ // Show loading state when listing is loading, or when listing exists but currency is still loading
81
+ const isPriceLoading =
82
+ isMarket &&
83
+ (isLowestListingLoading ||
84
+ (!!lowestListing?.priceCurrencyAddress && isCurrencyLoading));
85
+
86
+ return (
87
+ <div className="relative flex flex-col items-start gap-2 whitespace-nowrap bg-background-primary p-4">
88
+ <FooterName
89
+ name={name}
90
+ isShop={isShop}
91
+ highestOffer={highestOffer}
92
+ onOfferClick={onOfferClick}
93
+ quantityInitial={quantityInitial}
94
+ quantityRemaining={quantityRemaining}
95
+ balance={balance}
96
+ />
97
+
98
+ <div
99
+ className={cn(
100
+ 'flex items-center gap-1',
101
+ isShop && type === ContractType.ERC721 && 'hidden',
102
+ )}
103
+ >
104
+ {isPriceLoading && (
105
+ <Skeleton size="sm" className="h-5 w-20 animate-shimmer" />
106
+ )}
107
+
108
+ {!isPriceLoading && listed && isMarket && lowestListing && currency && (
109
+ <PriceDisplay
110
+ amount={lowestListing.priceAmount}
111
+ currency={currency}
112
+ className="text-text-100"
113
+ />
114
+ )}
115
+
116
+ {!isPriceLoading && !listed && isMarket && (
117
+ <Text className="text-left font-body font-bold text-sm text-text-50">
118
+ Not listed yet
119
+ </Text>
120
+ )}
121
+
122
+ {isShop &&
123
+ salePriceAmount &&
124
+ salePriceCurrency &&
125
+ type === ContractType.ERC1155 && (
126
+ <PriceDisplay
127
+ amount={salePriceAmount}
128
+ currency={salePriceCurrency}
129
+ className="text-text-100"
130
+ />
131
+ )}
132
+ </div>
133
+
134
+ {isShop && (
135
+ <SaleDetailsPill
136
+ quantityRemaining={quantityRemaining}
137
+ collectionType={type as ContractType}
138
+ unlimitedSupply={unlimitedSupply}
139
+ />
140
+ )}
141
+
142
+ {isShop && !salePriceAmount && <div className="h-5 w-full" />}
143
+
144
+ {(isMarket || isInventoryNonTradable) && (
145
+ <TokenTypeBalancePill
146
+ balance={balance}
147
+ type={type as ContractType}
148
+ decimals={decimals}
149
+ />
150
+ )}
151
+ </div>
152
+ );
153
+ };
154
+
155
+ export const NonTradableInventoryFooter = ({
156
+ name,
157
+ balance,
158
+ decimals,
159
+ type,
160
+ }: {
161
+ name: string;
162
+ balance?: string;
163
+ decimals?: number;
164
+ type: ContractType;
165
+ }) => {
166
+ return (
167
+ <div className="relative flex flex-col items-start gap-2 whitespace-nowrap bg-background-primary p-4">
168
+ <FooterName name={name} />
169
+
170
+ <div className="flex items-center gap-1">
171
+ <Text className="text-left font-body font-bold text-sm text-text-50">
172
+ Not listed yet
173
+ </Text>
174
+ </div>
175
+
176
+ <TokenTypeBalancePill balance={balance} type={type} decimals={decimals} />
177
+ </div>
178
+ );
179
+ };
@@ -0,0 +1,103 @@
1
+ 'use client';
2
+
3
+ import { cn, IconButton, Text } from '@0xsequence/design-system';
4
+ import { useAccount } from 'wagmi';
5
+ import { compareAddress } from '../../../../../../../utils/address';
6
+ import type { Order } from '../../../../../../_internal';
7
+ import SvgBellIcon from '../../../../../icons/BellIcon';
8
+
9
+ interface FooterNameProps {
10
+ name: string;
11
+ isShop?: boolean;
12
+ highestOffer?: Order;
13
+ onOfferClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
14
+ quantityInitial?: string;
15
+ quantityRemaining?: string;
16
+ balance?: string;
17
+ }
18
+
19
+ export const FooterName = ({
20
+ name,
21
+ isShop,
22
+ highestOffer,
23
+ onOfferClick,
24
+ quantityInitial,
25
+ quantityRemaining,
26
+ balance,
27
+ }: FooterNameProps) => {
28
+ const { address: currentUserAddress } = useAccount();
29
+ const displayName = (() => {
30
+ if (name.length > 15 && highestOffer && !isShop) {
31
+ return `${name.substring(0, 13)}...`;
32
+ }
33
+ if (name.length > 17 && !highestOffer && !isShop) {
34
+ return `${name.substring(0, 17)}...`;
35
+ }
36
+ if (name.length > 17) {
37
+ return `${name.substring(0, 17)}...`;
38
+ }
39
+ return name;
40
+ })();
41
+
42
+ return (
43
+ <div className="relative flex w-full items-center justify-between">
44
+ <Text
45
+ className={cn(
46
+ 'overflow-hidden text-ellipsis text-left font-body font-bold text-sm text-text-100',
47
+ isShop &&
48
+ (quantityInitial === undefined ||
49
+ quantityRemaining === undefined) &&
50
+ 'text-text-50',
51
+ )}
52
+ >
53
+ {displayName || 'Untitled'}
54
+ </Text>
55
+
56
+ {highestOffer &&
57
+ onOfferClick &&
58
+ !isShop &&
59
+ (() => {
60
+ // Check if the current user made the offer
61
+ const isOfferMadeBySelf =
62
+ currentUserAddress &&
63
+ highestOffer.createdBy &&
64
+ compareAddress(highestOffer.createdBy, currentUserAddress);
65
+
66
+ // Check if user owns the token (has balance > 0)
67
+ const userOwnsToken = balance && Number(balance) > 0;
68
+
69
+ // Can accept offer: didn't make the offer AND owns the token
70
+ const canAcceptOffer = !isOfferMadeBySelf && userOwnsToken;
71
+
72
+ // Should show disabled styling: can't accept offer
73
+ const shouldDisable = !canAcceptOffer;
74
+
75
+ return (
76
+ <IconButton
77
+ className={`absolute top-0 right-0 z-10 h-[22px] w-[22px] ${shouldDisable ? 'opacity-50 hover:animate-none hover:opacity-50' : 'hover:animate-bell-ring'}`}
78
+ size="xs"
79
+ variant="primary"
80
+ onClick={(e) => {
81
+ if (!canAcceptOffer) {
82
+ // For cases where user can't accept offer (offer maker or non-owner), allow normal wrapper behavior
83
+ return;
84
+ }
85
+
86
+ // Only stop propagation and open offer modal if user can accept the offer
87
+ e.stopPropagation();
88
+ e.preventDefault();
89
+ onOfferClick?.(e);
90
+ }}
91
+ onMouseEnter={(e) => {
92
+ if (canAcceptOffer) {
93
+ // Only prevent parent hover effects when user can accept offer
94
+ e.stopPropagation();
95
+ }
96
+ }}
97
+ icon={(props) => <SvgBellIcon {...props} size="xs" />}
98
+ />
99
+ );
100
+ })()}
101
+ </div>
102
+ );
103
+ };
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+
3
+ import {
4
+ ChevronLeftIcon,
5
+ ChevronRightIcon,
6
+ cn,
7
+ Image,
8
+ Text,
9
+ } from '@0xsequence/design-system';
10
+ import type { Currency } from '../../../../../../_internal';
11
+ import { formatPriceNumber } from '../../../utils';
12
+
13
+ interface PriceDisplayProps {
14
+ amount: string;
15
+ currency: Currency;
16
+ showCurrencyIcon?: boolean;
17
+ className?: string;
18
+ }
19
+
20
+ export const formatPrice = (
21
+ amount: string,
22
+ currency: Currency,
23
+ ): React.ReactNode => {
24
+ const { formattedNumber, isUnderflow, isOverflow } = formatPriceNumber(
25
+ amount,
26
+ currency.decimals,
27
+ );
28
+ const isFree = amount === '0';
29
+
30
+ if (isFree) {
31
+ return <Text className="font-bold text-sm text-text-100">Free</Text>;
32
+ }
33
+
34
+ if (isUnderflow) {
35
+ return (
36
+ <div className="flex items-center">
37
+ <ChevronLeftIcon className="h-3 w-3 text-text-100" />
38
+ <Text className="font-bold text-sm text-text-100">{`${formattedNumber} ${currency.symbol}`}</Text>
39
+ </div>
40
+ );
41
+ }
42
+
43
+ if (isOverflow) {
44
+ return (
45
+ <div className="flex items-center">
46
+ <ChevronRightIcon className="h-3 w-3 text-text-100" />
47
+ <Text className="font-bold text-sm text-text-100">{`${formattedNumber} ${currency.symbol}`}</Text>
48
+ </div>
49
+ );
50
+ }
51
+
52
+ return (
53
+ <Text className="font-bold text-sm text-text-100">
54
+ {formattedNumber} {currency.symbol}
55
+ </Text>
56
+ );
57
+ };
58
+
59
+ export const PriceDisplay = ({
60
+ amount,
61
+ currency,
62
+ showCurrencyIcon = true,
63
+ className,
64
+ }: PriceDisplayProps) => {
65
+ return (
66
+ <div className={cn('flex items-center gap-1', className)}>
67
+ {showCurrencyIcon && currency.imageUrl && (
68
+ <Image
69
+ alt={currency.symbol}
70
+ className="h-3 w-3"
71
+ src={currency.imageUrl}
72
+ onError={(e) => {
73
+ e.currentTarget.style.display = 'none';
74
+ }}
75
+ />
76
+ )}
77
+ {formatPrice(amount, currency)}
78
+ </div>
79
+ );
80
+ };
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+
3
+ import { Text } from '@0xsequence/design-system';
4
+ import type { ContractType } from '../../../../../../_internal';
5
+ import { getSupplyStatusText } from '../../../utils';
6
+
7
+ interface SaleDetailsPillProps {
8
+ quantityRemaining: string | undefined;
9
+ collectionType: ContractType;
10
+ unlimitedSupply?: boolean;
11
+ }
12
+
13
+ export const SaleDetailsPill = ({
14
+ quantityRemaining,
15
+ collectionType,
16
+ unlimitedSupply,
17
+ }: SaleDetailsPillProps) => {
18
+ const supplyText = getSupplyStatusText({
19
+ quantityRemaining,
20
+ collectionType,
21
+ unlimitedSupply,
22
+ });
23
+
24
+ return (
25
+ <Text className="rounded-lg bg-background-secondary px-2 py-1 text-left font-medium text-text-80 text-xs">
26
+ {supplyText}
27
+ </Text>
28
+ );
29
+ };
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+
3
+ import { Text } from '@0xsequence/design-system';
4
+ import { formatUnits } from 'viem';
5
+ import { ContractType } from '../../../../../../_internal';
6
+
7
+ interface TokenTypeBalancePillProps {
8
+ balance?: string;
9
+ type: ContractType;
10
+ decimals?: number;
11
+ }
12
+
13
+ export const TokenTypeBalancePill = ({
14
+ balance,
15
+ type,
16
+ decimals,
17
+ }: TokenTypeBalancePillProps) => {
18
+ const displayText =
19
+ type === ContractType.ERC1155
20
+ ? balance
21
+ ? `Owned: ${formatUnits(BigInt(balance), decimals ?? 0)}`
22
+ : 'ERC-1155'
23
+ : 'ERC-721';
24
+
25
+ return (
26
+ <Text className="rounded-lg bg-background-secondary px-2 py-1 text-left font-medium text-text-80 text-xs">
27
+ {displayText}
28
+ </Text>
29
+ );
30
+ };
@@ -0,0 +1,4 @@
1
+ export * from './FooterName';
2
+ export * from './PriceDisplay';
3
+ export * from './SaleDetailsPill';
4
+ export * from './TokenTypeBalancePill';
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ export * from './Footer.tsx';
@@ -1,6 +1,6 @@
1
1
  import type { TokenMetadata as MetadataTokenMetadataType } from '@0xsequence/metadata';
2
2
  import type { Address } from 'viem';
3
- import type { CollectibleCardAction, MarketplaceType } from '../../../../types';
3
+ import type { CardType, CollectibleCardAction } from '../../../../types';
4
4
  import type {
5
5
  CollectibleOrder,
6
6
  ContractType,
@@ -16,8 +16,8 @@ type MarketplaceCardBaseProps = {
16
16
  collectionAddress: Address;
17
17
  collectionType?: ContractType;
18
18
  assetSrcPrefixUrl?: string;
19
- cardLoading?: boolean;
20
- marketplaceType?: MarketplaceType;
19
+ cardLoading: boolean;
20
+ cardType?: CardType;
21
21
  };
22
22
 
23
23
  // Properties specific to Shop card
@@ -72,22 +72,33 @@ type MarketCardSpecificProps = {
72
72
  prioritizeOwnerActions?: boolean;
73
73
  };
74
74
 
75
+ type NonTradableInventoryCardSpecificProps = {
76
+ balance: string;
77
+ balanceIsLoading: boolean;
78
+ collectibleMetadata: MarketplaceTokenMetadataType | MetadataTokenMetadataType;
79
+ };
80
+
75
81
  // Complete CollectibleCardProps with all possible properties and card type
76
82
  type MarketplaceCollectibleCardProps = MarketplaceCardBaseProps &
77
83
  Partial<MarketCardSpecificProps & ShopCardSpecificProps>;
78
84
 
79
85
  type ShopCollectibleCardProps = MarketplaceCardBaseProps &
80
86
  ShopCardSpecificProps & {
81
- marketplaceType: 'shop';
87
+ cardType?: 'shop';
82
88
  };
83
89
  type MarketCollectibleCardProps = MarketplaceCardBaseProps &
84
90
  MarketCardSpecificProps & {
85
- marketplaceType?: 'market';
91
+ cardType?: 'market';
92
+ };
93
+ type NonTradableInventoryCardProps = MarketplaceCardBaseProps &
94
+ NonTradableInventoryCardSpecificProps & {
95
+ cardType?: 'inventory-non-tradable';
86
96
  };
87
97
 
88
98
  type CollectibleCardProps =
89
99
  | ShopCollectibleCardProps
90
- | MarketCollectibleCardProps;
100
+ | MarketCollectibleCardProps
101
+ | NonTradableInventoryCardProps;
91
102
 
92
103
  export type {
93
104
  MarketplaceCardBaseProps,
@@ -96,5 +107,6 @@ export type {
96
107
  MarketplaceCollectibleCardProps,
97
108
  ShopCollectibleCardProps,
98
109
  MarketCollectibleCardProps,
110
+ NonTradableInventoryCardProps,
99
111
  CollectibleCardProps,
100
112
  };
@@ -1,11 +1,10 @@
1
1
  'use client';
2
2
 
3
- import type { Address } from 'viem';
4
3
  import { CollectibleCardAction } from '../../../../../types';
5
- import { useCurrency } from '../../../../hooks/data/market/useCurrency';
4
+ import type { ContractType } from '../../../../_internal';
6
5
  import { ActionButtonWrapper } from '../components/ActionButtonWrapper';
7
6
  import { BaseCard } from '../components/BaseCard';
8
- import { Footer } from '../Footer';
7
+ import { Footer } from '../components/footer';
9
8
  import type { MarketCollectibleCardProps } from '../types';
10
9
 
11
10
  export function MarketCard({
@@ -27,19 +26,6 @@ export function MarketCard({
27
26
  const collectibleMetadata = collectible?.metadata;
28
27
  const highestOffer = collectible?.offer;
29
28
 
30
- const {
31
- data: lowestListingCurrency,
32
- isLoading: lowestListingCurrencyLoading,
33
- } = useCurrency({
34
- chainId,
35
- currencyAddress: collectible?.listing?.priceCurrencyAddress as Address,
36
- query: {
37
- enabled: !!collectible?.listing?.priceCurrencyAddress,
38
- },
39
- });
40
-
41
- const isLoading = cardLoading || lowestListingCurrencyLoading;
42
-
43
29
  if (!collectibleMetadata) {
44
30
  console.error('Collectible metadata is undefined');
45
31
  return null;
@@ -71,22 +57,24 @@ export function MarketCard({
71
57
  collectionType={collectionType}
72
58
  assetSrcPrefixUrl={assetSrcPrefixUrl}
73
59
  cardLoading={cardLoading}
74
- marketplaceType="market"
75
- isLoading={isLoading}
60
+ cardType="market"
76
61
  name={collectibleMetadata.name || ''}
77
62
  image={collectibleMetadata.image}
78
63
  video={collectibleMetadata.video}
79
64
  animationUrl={collectibleMetadata.animation_url}
65
+ contractType={collectionType as ContractType}
66
+ isShop={false}
80
67
  onClick={() => onCollectibleClick?.(collectibleId)}
81
68
  onKeyDown={handleKeyDown}
82
69
  >
83
70
  <Footer
71
+ chainId={chainId}
72
+ collectionAddress={collectionAddress}
73
+ collectibleId={collectibleId}
84
74
  name={collectibleMetadata.name || ''}
85
75
  type={collectionType}
86
76
  onOfferClick={(e) => onOfferClick?.({ order: highestOffer, e })}
87
77
  highestOffer={highestOffer}
88
- lowestListingPriceAmount={collectible?.listing?.priceAmount}
89
- lowestListingCurrency={lowestListingCurrency}
90
78
  balance={balance}
91
79
  decimals={collectibleMetadata.decimals}
92
80
  quantityInitial={
@@ -103,11 +91,11 @@ export function MarketCard({
103
91
  ? collectible.listing.quantityRemaining
104
92
  : undefined
105
93
  }
106
- marketplaceType="market"
94
+ cardType="market"
107
95
  />
108
96
 
109
97
  <ActionButtonWrapper
110
- show={showActionButton}
98
+ show={showActionButton ?? false}
111
99
  chainId={chainId}
112
100
  collectionAddress={collectionAddress}
113
101
  tokenId={collectibleId}
@@ -117,7 +105,7 @@ export function MarketCard({
117
105
  lowestListing={collectible?.listing}
118
106
  owned={!!balance}
119
107
  onCannotPerformAction={onCannotPerformAction}
120
- marketplaceType="market"
108
+ cardType="market"
121
109
  prioritizeOwnerActions={prioritizeOwnerActions}
122
110
  />
123
111
  </BaseCard>
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ import type { ContractType } from '../../../../_internal';
4
+ import { BaseCard } from '../components/BaseCard';
5
+ import { NonTradableInventoryFooter } from '../components/footer';
6
+ import type { NonTradableInventoryCardProps } from '../types';
7
+
8
+ export function NonTradableInventoryCard({
9
+ collectibleId,
10
+ chainId,
11
+ collectionAddress,
12
+ collectionType,
13
+ assetSrcPrefixUrl,
14
+ cardLoading,
15
+ balance,
16
+ balanceIsLoading,
17
+ collectibleMetadata,
18
+ }: NonTradableInventoryCardProps) {
19
+ return (
20
+ <BaseCard
21
+ collectibleId={collectibleId}
22
+ image={collectibleMetadata.image}
23
+ video={collectibleMetadata.video}
24
+ animationUrl={collectibleMetadata.animation_url}
25
+ chainId={chainId}
26
+ collectionAddress={collectionAddress}
27
+ collectionType={collectionType}
28
+ assetSrcPrefixUrl={assetSrcPrefixUrl}
29
+ cardLoading={cardLoading || balanceIsLoading}
30
+ contractType={collectionType as ContractType}
31
+ isShop={false}
32
+ name={collectibleMetadata.name}
33
+ >
34
+ <NonTradableInventoryFooter
35
+ name={collectibleMetadata.name || ''}
36
+ type={collectionType as ContractType}
37
+ balance={balance}
38
+ decimals={collectibleMetadata.decimals}
39
+ />
40
+ </BaseCard>
41
+ );
42
+ }