@bosonprotocol/react-kit 0.30.0-alpha.1 → 0.30.0-alpha.11

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 (251) hide show
  1. package/dist/cjs/components/Loading.js +1 -1
  2. package/dist/cjs/components/Loading.js.map +1 -1
  3. package/dist/cjs/components/modal/components/Commit/OfferVariantView.d.ts.map +1 -1
  4. package/dist/cjs/components/modal/components/Commit/OfferVariantView.js +4 -1
  5. package/dist/cjs/components/modal/components/Commit/OfferVariantView.js.map +1 -1
  6. package/dist/cjs/components/modal/components/Redeem/Confirmation/Confirmation.d.ts.map +1 -1
  7. package/dist/cjs/components/modal/components/Redeem/Confirmation/Confirmation.js +4 -1
  8. package/dist/cjs/components/modal/components/Redeem/Confirmation/Confirmation.js.map +1 -1
  9. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemForm.d.ts +4 -1
  10. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemForm.d.ts.map +1 -1
  11. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemForm.js +13 -2
  12. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemForm.js.map +1 -1
  13. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemFormView.d.ts +2 -1
  14. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemFormView.d.ts.map +1 -1
  15. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemFormView.js +2 -2
  16. package/dist/cjs/components/modal/components/Redeem/RedeemForm/RedeemFormView.js.map +1 -1
  17. package/dist/cjs/components/modal/components/Redeem/RedeemFormModel.d.ts +7 -1
  18. package/dist/cjs/components/modal/components/Redeem/RedeemFormModel.d.ts.map +1 -1
  19. package/dist/cjs/components/modal/components/Redeem/RedeemFormModel.js +6 -0
  20. package/dist/cjs/components/modal/components/Redeem/RedeemFormModel.js.map +1 -1
  21. package/dist/cjs/components/modal/components/Redeem/RedeemNonModal.d.ts.map +1 -1
  22. package/dist/cjs/components/modal/components/Redeem/RedeemNonModal.js +22 -3
  23. package/dist/cjs/components/modal/components/Redeem/RedeemNonModal.js.map +1 -1
  24. package/dist/cjs/components/modal/components/common/OfferFullDescription/DigitalProductData.d.ts.map +1 -1
  25. package/dist/cjs/components/modal/components/common/OfferFullDescription/DigitalProductData.js +41 -13
  26. package/dist/cjs/components/modal/components/common/OfferFullDescription/DigitalProductData.js.map +1 -1
  27. package/dist/cjs/components/modal/components/common/detail/Detail.style.d.ts +36 -1
  28. package/dist/cjs/components/modal/components/common/detail/Detail.style.d.ts.map +1 -1
  29. package/dist/cjs/components/modal/components/common/detail/PhygitalProduct.d.ts.map +1 -1
  30. package/dist/cjs/components/modal/components/common/detail/PhygitalProduct.js +48 -33
  31. package/dist/cjs/components/modal/components/common/detail/PhygitalProduct.js.map +1 -1
  32. package/dist/cjs/components/modal/components/common/detail/TokenGatedItem.d.ts.map +1 -1
  33. package/dist/cjs/components/modal/components/common/detail/TokenGatedItem.js +28 -16
  34. package/dist/cjs/components/modal/components/common/detail/TokenGatedItem.js.map +1 -1
  35. package/dist/cjs/components/productCard/ProductCard.d.ts +3 -1
  36. package/dist/cjs/components/productCard/ProductCard.d.ts.map +1 -1
  37. package/dist/cjs/components/productCard/ProductCard.js +14 -2
  38. package/dist/cjs/components/productCard/ProductCard.js.map +1 -1
  39. package/dist/cjs/components/productCard/ProductCard.styles.d.ts +1 -0
  40. package/dist/cjs/components/productCard/ProductCard.styles.d.ts.map +1 -1
  41. package/dist/cjs/components/productCard/ProductCard.styles.js +43 -3
  42. package/dist/cjs/components/productCard/ProductCard.styles.js.map +1 -1
  43. package/dist/cjs/components/tooltip/Tooltip.d.ts +3 -2
  44. package/dist/cjs/components/tooltip/Tooltip.d.ts.map +1 -1
  45. package/dist/cjs/components/tooltip/Tooltip.js.map +1 -1
  46. package/dist/cjs/components/ui/DetailsSummary.js +1 -1
  47. package/dist/cjs/components/ui/DetailsSummary.js.map +1 -1
  48. package/dist/cjs/components/ui/IpfsImage.d.ts +3 -0
  49. package/dist/cjs/components/ui/IpfsImage.d.ts.map +1 -1
  50. package/dist/cjs/components/ui/IpfsImage.js +13 -3
  51. package/dist/cjs/components/ui/IpfsImage.js.map +1 -1
  52. package/dist/cjs/components/ui/Typography.d.ts +7 -1
  53. package/dist/cjs/components/ui/Typography.d.ts.map +1 -1
  54. package/dist/cjs/components/ui/Typography.js.map +1 -1
  55. package/dist/cjs/hooks/bundles/useBundleItemsImages.d.ts +10 -0
  56. package/dist/cjs/hooks/bundles/useBundleItemsImages.d.ts.map +1 -0
  57. package/dist/cjs/hooks/bundles/useBundleItemsImages.js +56 -0
  58. package/dist/cjs/hooks/bundles/useBundleItemsImages.js.map +1 -0
  59. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uris.d.ts +11 -0
  60. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uris.d.ts.map +1 -0
  61. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uris.js +37 -0
  62. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uris.js.map +1 -0
  63. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUris.d.ts +11 -0
  64. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUris.d.ts.map +1 -0
  65. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUris.js +37 -0
  66. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUris.js.map +1 -0
  67. package/dist/cjs/hooks/contracts/useGetTokenUriImages.d.ts +10 -0
  68. package/dist/cjs/hooks/contracts/useGetTokenUriImages.d.ts.map +1 -0
  69. package/dist/cjs/hooks/contracts/useGetTokenUriImages.js +103 -0
  70. package/dist/cjs/hooks/contracts/useGetTokenUriImages.js.map +1 -0
  71. package/dist/cjs/hooks/index.d.ts +3 -3
  72. package/dist/cjs/hooks/index.d.ts.map +1 -1
  73. package/dist/cjs/hooks/index.js +3 -3
  74. package/dist/cjs/hooks/index.js.map +1 -1
  75. package/dist/cjs/hooks/transactions/usePendingTransactionsWithContext.d.ts +1 -1
  76. package/dist/cjs/lib/address/address.d.ts +1 -0
  77. package/dist/cjs/lib/address/address.d.ts.map +1 -1
  78. package/dist/cjs/lib/address/address.js +8 -1
  79. package/dist/cjs/lib/address/address.js.map +1 -1
  80. package/dist/cjs/lib/bundle/const.d.ts +19 -5
  81. package/dist/cjs/lib/bundle/const.d.ts.map +1 -1
  82. package/dist/cjs/lib/bundle/const.js +18 -3
  83. package/dist/cjs/lib/bundle/const.js.map +1 -1
  84. package/dist/cjs/lib/ipfs/ipfs.d.ts.map +1 -1
  85. package/dist/cjs/lib/ipfs/ipfs.js +9 -4
  86. package/dist/cjs/lib/ipfs/ipfs.js.map +1 -1
  87. package/dist/cjs/lib/offer/filter.d.ts +3 -0
  88. package/dist/cjs/lib/offer/filter.d.ts.map +1 -1
  89. package/dist/cjs/lib/offer/filter.js +21 -1
  90. package/dist/cjs/lib/offer/filter.js.map +1 -1
  91. package/dist/cjs/lib/offer/getOfferDetails.d.ts.map +1 -1
  92. package/dist/cjs/lib/offer/getOfferDetails.js +21 -9
  93. package/dist/cjs/lib/offer/getOfferDetails.js.map +1 -1
  94. package/dist/esm/components/Loading.js +1 -1
  95. package/dist/esm/components/Loading.js.map +1 -1
  96. package/dist/esm/components/modal/components/Commit/OfferVariantView.d.ts.map +1 -1
  97. package/dist/esm/components/modal/components/Commit/OfferVariantView.js +4 -1
  98. package/dist/esm/components/modal/components/Commit/OfferVariantView.js.map +1 -1
  99. package/dist/esm/components/modal/components/Redeem/Confirmation/Confirmation.d.ts.map +1 -1
  100. package/dist/esm/components/modal/components/Redeem/Confirmation/Confirmation.js +4 -1
  101. package/dist/esm/components/modal/components/Redeem/Confirmation/Confirmation.js.map +1 -1
  102. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemForm.d.ts +4 -1
  103. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemForm.d.ts.map +1 -1
  104. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemForm.js +13 -2
  105. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemForm.js.map +1 -1
  106. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemFormView.d.ts +2 -1
  107. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemFormView.d.ts.map +1 -1
  108. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemFormView.js +2 -2
  109. package/dist/esm/components/modal/components/Redeem/RedeemForm/RedeemFormView.js.map +1 -1
  110. package/dist/esm/components/modal/components/Redeem/RedeemFormModel.d.ts +7 -1
  111. package/dist/esm/components/modal/components/Redeem/RedeemFormModel.d.ts.map +1 -1
  112. package/dist/esm/components/modal/components/Redeem/RedeemFormModel.js +6 -0
  113. package/dist/esm/components/modal/components/Redeem/RedeemFormModel.js.map +1 -1
  114. package/dist/esm/components/modal/components/Redeem/RedeemNonModal.d.ts.map +1 -1
  115. package/dist/esm/components/modal/components/Redeem/RedeemNonModal.js +22 -3
  116. package/dist/esm/components/modal/components/Redeem/RedeemNonModal.js.map +1 -1
  117. package/dist/esm/components/modal/components/common/OfferFullDescription/DigitalProductData.d.ts.map +1 -1
  118. package/dist/esm/components/modal/components/common/OfferFullDescription/DigitalProductData.js +44 -11
  119. package/dist/esm/components/modal/components/common/OfferFullDescription/DigitalProductData.js.map +1 -1
  120. package/dist/esm/components/modal/components/common/detail/Detail.style.d.ts +36 -1
  121. package/dist/esm/components/modal/components/common/detail/Detail.style.d.ts.map +1 -1
  122. package/dist/esm/components/modal/components/common/detail/PhygitalProduct.d.ts.map +1 -1
  123. package/dist/esm/components/modal/components/common/detail/PhygitalProduct.js +40 -26
  124. package/dist/esm/components/modal/components/common/detail/PhygitalProduct.js.map +1 -1
  125. package/dist/esm/components/modal/components/common/detail/TokenGatedItem.d.ts.map +1 -1
  126. package/dist/esm/components/modal/components/common/detail/TokenGatedItem.js +28 -16
  127. package/dist/esm/components/modal/components/common/detail/TokenGatedItem.js.map +1 -1
  128. package/dist/esm/components/productCard/ProductCard.d.ts +3 -1
  129. package/dist/esm/components/productCard/ProductCard.d.ts.map +1 -1
  130. package/dist/esm/components/productCard/ProductCard.js +3 -3
  131. package/dist/esm/components/productCard/ProductCard.js.map +1 -1
  132. package/dist/esm/components/productCard/ProductCard.styles.d.ts +1 -0
  133. package/dist/esm/components/productCard/ProductCard.styles.d.ts.map +1 -1
  134. package/dist/esm/components/productCard/ProductCard.styles.js +42 -2
  135. package/dist/esm/components/productCard/ProductCard.styles.js.map +1 -1
  136. package/dist/esm/components/tooltip/Tooltip.d.ts +3 -2
  137. package/dist/esm/components/tooltip/Tooltip.d.ts.map +1 -1
  138. package/dist/esm/components/tooltip/Tooltip.js.map +1 -1
  139. package/dist/esm/components/ui/DetailsSummary.js +1 -1
  140. package/dist/esm/components/ui/DetailsSummary.js.map +1 -1
  141. package/dist/esm/components/ui/IpfsImage.d.ts +3 -0
  142. package/dist/esm/components/ui/IpfsImage.d.ts.map +1 -1
  143. package/dist/esm/components/ui/IpfsImage.js +14 -4
  144. package/dist/esm/components/ui/IpfsImage.js.map +1 -1
  145. package/dist/esm/components/ui/Typography.d.ts +7 -1
  146. package/dist/esm/components/ui/Typography.d.ts.map +1 -1
  147. package/dist/esm/components/ui/Typography.js.map +1 -1
  148. package/dist/esm/hooks/bundles/useBundleItemsImages.d.ts +10 -0
  149. package/dist/esm/hooks/bundles/useBundleItemsImages.d.ts.map +1 -0
  150. package/dist/esm/hooks/bundles/useBundleItemsImages.js +48 -0
  151. package/dist/esm/hooks/bundles/useBundleItemsImages.js.map +1 -0
  152. package/dist/esm/hooks/contracts/erc1155/useErc1155Uris.d.ts +11 -0
  153. package/dist/esm/hooks/contracts/erc1155/useErc1155Uris.d.ts.map +1 -0
  154. package/dist/esm/hooks/contracts/erc1155/useErc1155Uris.js +22 -0
  155. package/dist/esm/hooks/contracts/erc1155/useErc1155Uris.js.map +1 -0
  156. package/dist/esm/hooks/contracts/erc721/useErc721TokenUris.d.ts +11 -0
  157. package/dist/esm/hooks/contracts/erc721/useErc721TokenUris.d.ts.map +1 -0
  158. package/dist/esm/hooks/contracts/erc721/useErc721TokenUris.js +22 -0
  159. package/dist/esm/hooks/contracts/erc721/useErc721TokenUris.js.map +1 -0
  160. package/dist/esm/hooks/contracts/useGetTokenUriImages.d.ts +10 -0
  161. package/dist/esm/hooks/contracts/useGetTokenUriImages.d.ts.map +1 -0
  162. package/dist/esm/hooks/contracts/useGetTokenUriImages.js +90 -0
  163. package/dist/esm/hooks/contracts/useGetTokenUriImages.js.map +1 -0
  164. package/dist/esm/hooks/index.d.ts +3 -3
  165. package/dist/esm/hooks/index.d.ts.map +1 -1
  166. package/dist/esm/hooks/index.js +3 -3
  167. package/dist/esm/hooks/index.js.map +1 -1
  168. package/dist/esm/hooks/transactions/usePendingTransactionsWithContext.d.ts +1 -1
  169. package/dist/esm/lib/address/address.d.ts +1 -0
  170. package/dist/esm/lib/address/address.d.ts.map +1 -1
  171. package/dist/esm/lib/address/address.js +6 -0
  172. package/dist/esm/lib/address/address.js.map +1 -1
  173. package/dist/esm/lib/bundle/const.d.ts +19 -5
  174. package/dist/esm/lib/bundle/const.d.ts.map +1 -1
  175. package/dist/esm/lib/bundle/const.js +17 -2
  176. package/dist/esm/lib/bundle/const.js.map +1 -1
  177. package/dist/esm/lib/ipfs/ipfs.d.ts.map +1 -1
  178. package/dist/esm/lib/ipfs/ipfs.js +9 -4
  179. package/dist/esm/lib/ipfs/ipfs.js.map +1 -1
  180. package/dist/esm/lib/offer/filter.d.ts +3 -0
  181. package/dist/esm/lib/offer/filter.d.ts.map +1 -1
  182. package/dist/esm/lib/offer/filter.js +18 -0
  183. package/dist/esm/lib/offer/filter.js.map +1 -1
  184. package/dist/esm/lib/offer/getOfferDetails.d.ts.map +1 -1
  185. package/dist/esm/lib/offer/getOfferDetails.js +17 -5
  186. package/dist/esm/lib/offer/getOfferDetails.js.map +1 -1
  187. package/package.json +4 -4
  188. package/src/components/Loading.tsx +1 -1
  189. package/src/components/modal/components/Commit/OfferVariantView.tsx +4 -1
  190. package/src/components/modal/components/Redeem/Confirmation/Confirmation.tsx +6 -1
  191. package/src/components/modal/components/Redeem/RedeemForm/RedeemForm.tsx +32 -3
  192. package/src/components/modal/components/Redeem/RedeemForm/RedeemFormView.tsx +5 -1
  193. package/src/components/modal/components/Redeem/RedeemFormModel.ts +7 -1
  194. package/src/components/modal/components/Redeem/RedeemNonModal.tsx +29 -2
  195. package/src/components/modal/components/common/OfferFullDescription/DigitalProductData.tsx +166 -99
  196. package/src/components/modal/components/common/detail/PhygitalProduct.tsx +75 -34
  197. package/src/components/modal/components/common/detail/TokenGatedItem.tsx +27 -15
  198. package/src/components/productCard/ProductCard.styles.ts +43 -2
  199. package/src/components/productCard/ProductCard.tsx +3 -2
  200. package/src/components/tooltip/Tooltip.tsx +3 -2
  201. package/src/components/ui/DetailsSummary.tsx +1 -1
  202. package/src/components/ui/IpfsImage.tsx +19 -4
  203. package/src/components/ui/Typography.tsx +1 -4
  204. package/src/components/widgets/commit/CommitWidget.tsx +1 -1
  205. package/src/hooks/bundles/useBundleItemsImages.ts +71 -0
  206. package/src/hooks/contracts/erc1155/useErc1155Uris.ts +52 -0
  207. package/src/hooks/contracts/erc721/useErc721TokenUris.ts +52 -0
  208. package/src/hooks/contracts/useGetTokenUriImages.ts +126 -0
  209. package/src/hooks/index.ts +3 -3
  210. package/src/lib/address/address.ts +8 -1
  211. package/src/lib/bundle/const.ts +20 -3
  212. package/src/lib/ipfs/ipfs.ts +15 -5
  213. package/src/lib/offer/filter.ts +28 -0
  214. package/src/lib/offer/getOfferDetails.ts +30 -16
  215. package/src/stories/widgets/Commit.stories.tsx +3 -3
  216. package/dist/cjs/components/nftItem/NftItemIcon.d.ts +0 -8
  217. package/dist/cjs/components/nftItem/NftItemIcon.d.ts.map +0 -1
  218. package/dist/cjs/components/nftItem/NftItemIcon.js +0 -14
  219. package/dist/cjs/components/nftItem/NftItemIcon.js.map +0 -1
  220. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uri.d.ts +0 -9
  221. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uri.d.ts.map +0 -1
  222. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uri.js +0 -29
  223. package/dist/cjs/hooks/contracts/erc1155/useErc1155Uri.js.map +0 -1
  224. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUri.d.ts +0 -9
  225. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUri.d.ts.map +0 -1
  226. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUri.js +0 -29
  227. package/dist/cjs/hooks/contracts/erc721/useErc721TokenUri.js.map +0 -1
  228. package/dist/cjs/hooks/contracts/useGetTokenUriImage.d.ts +0 -8
  229. package/dist/cjs/hooks/contracts/useGetTokenUriImage.d.ts.map +0 -1
  230. package/dist/cjs/hooks/contracts/useGetTokenUriImage.js +0 -93
  231. package/dist/cjs/hooks/contracts/useGetTokenUriImage.js.map +0 -1
  232. package/dist/esm/components/nftItem/NftItemIcon.d.ts +0 -8
  233. package/dist/esm/components/nftItem/NftItemIcon.d.ts.map +0 -1
  234. package/dist/esm/components/nftItem/NftItemIcon.js +0 -7
  235. package/dist/esm/components/nftItem/NftItemIcon.js.map +0 -1
  236. package/dist/esm/hooks/contracts/erc1155/useErc1155Uri.d.ts +0 -9
  237. package/dist/esm/hooks/contracts/erc1155/useErc1155Uri.d.ts.map +0 -1
  238. package/dist/esm/hooks/contracts/erc1155/useErc1155Uri.js +0 -16
  239. package/dist/esm/hooks/contracts/erc1155/useErc1155Uri.js.map +0 -1
  240. package/dist/esm/hooks/contracts/erc721/useErc721TokenUri.d.ts +0 -9
  241. package/dist/esm/hooks/contracts/erc721/useErc721TokenUri.d.ts.map +0 -1
  242. package/dist/esm/hooks/contracts/erc721/useErc721TokenUri.js +0 -16
  243. package/dist/esm/hooks/contracts/erc721/useErc721TokenUri.js.map +0 -1
  244. package/dist/esm/hooks/contracts/useGetTokenUriImage.d.ts +0 -8
  245. package/dist/esm/hooks/contracts/useGetTokenUriImage.d.ts.map +0 -1
  246. package/dist/esm/hooks/contracts/useGetTokenUriImage.js +0 -80
  247. package/dist/esm/hooks/contracts/useGetTokenUriImage.js.map +0 -1
  248. package/src/components/nftItem/NftItemIcon.tsx +0 -16
  249. package/src/hooks/contracts/erc1155/useErc1155Uri.ts +0 -31
  250. package/src/hooks/contracts/erc721/useErc721TokenUri.ts +0 -31
  251. package/src/hooks/contracts/useGetTokenUriImage.ts +0 -102
@@ -1,19 +1,22 @@
1
1
  import { ArrowSquareUpRight } from "phosphor-react";
2
2
  import React, { ReactNode } from "react";
3
3
  import styled from "styled-components";
4
- import { useGetTokenUriImage } from "../../../../../hooks";
4
+ import { useBundleItemsImages } from "../../../../../hooks/bundles/useBundleItemsImages";
5
5
  import { useErc1155Name } from "../../../../../hooks/contracts/erc1155/useErc1155Name";
6
6
  import { useErc721Name } from "../../../../../hooks/contracts/erc721/useErc721Name";
7
7
  import { useCoreSDKWithContext } from "../../../../../hooks/core-sdk/useCoreSdkWithContext";
8
+ import { formatAddress } from "../../../../../lib/address/address";
8
9
  import { isNftItem, isProductV1Item } from "../../../../../lib/bundle/filter";
9
10
  import { getOfferDetails } from "../../../../../lib/offer/getOfferDetails";
11
+ import { theme } from "../../../../../theme";
10
12
  import { Offer } from "../../../../../types/offer";
13
+ import { Tooltip } from "../../../../tooltip/Tooltip";
11
14
  import { Grid } from "../../../../ui/Grid";
12
15
  import IpfsImage from "../../../../ui/IpfsImage";
13
16
  import ThemedButton from "../../../../ui/ThemedButton";
14
17
  import { Typography } from "../../../../ui/Typography";
15
18
  import Video from "../../../../ui/Video";
16
- import { theme } from "../../../../../theme";
19
+ import { digitalTypeMappingDisplay } from "../../../../../lib/bundle/const";
17
20
  const colors = theme.colors.light;
18
21
  const imageSize = "2.5rem";
19
22
 
@@ -23,6 +26,17 @@ const MediaWrapper = styled.div`
23
26
  height: ${imageSize};
24
27
  min-width: ${imageSize};
25
28
  overflow: hidden;
29
+ .loading-container {
30
+ padding-top: 100%;
31
+ }
32
+ `;
33
+ const Pill = styled.div`
34
+ border: 3px solid ${({ theme }) => theme?.colors?.light.accent};
35
+ background: white;
36
+ white-space: nowrap;
37
+ min-width: 9ch;
38
+ box-sizing: content-box;
39
+ text-align: center;
26
40
  `;
27
41
  const ActionText = ({ children }: { children: ReactNode }) => {
28
42
  return <span style={{ fontSize: "0.75rem" }}>{children}</span>;
@@ -50,27 +64,7 @@ export const PhygitalProduct: React.FC<PhygitalProductProps> = ({ offer }) => {
50
64
  },
51
65
  { enabled: !!contracts?.length, coreSDK }
52
66
  );
53
- const { data: ercImages } = useGetTokenUriImage(
54
- {
55
- tokenIds: bundleItems?.map((bundleItem) => {
56
- if (isNftItem(bundleItem)) {
57
- return (
58
- bundleItem.tokenIdRange?.min ??
59
- bundleItem.tokenIdRange?.max ??
60
- bundleItem.tokenId
61
- );
62
- }
63
- return null;
64
- }),
65
- tokenUris: bundleItems?.map((bundleItem) => {
66
- if (isNftItem(bundleItem)) {
67
- return bundleItem.metadataUri;
68
- }
69
- return null;
70
- })
71
- },
72
- { enabled: !!bundleItems?.length }
73
- );
67
+ const { images } = useBundleItemsImages({ bundleItems, coreSDK });
74
68
  return (
75
69
  <Grid flexDirection="column" alignItems="flex-start" gap="1rem">
76
70
  <Typography>
@@ -83,16 +77,22 @@ export const PhygitalProduct: React.FC<PhygitalProductProps> = ({ offer }) => {
83
77
  <Grid as="ul" flexDirection="column" gap="1rem" padding="0">
84
78
  {bundleItems?.map((bundleItem, index) => {
85
79
  let quantity = 1;
86
- let name: string;
80
+ let name: string | ReactNode;
87
81
  let contract: string | undefined | null;
88
82
  let imageSrc: string | undefined | null;
89
83
  let videoSrc: string | undefined | null;
90
84
  let rangeText: JSX.Element | undefined | null;
85
+ let pill: ReactNode | undefined | null;
91
86
  if (isProductV1Item(bundleItem)) {
92
87
  quantity = 1;
93
88
  name = bundleItem.product.title;
94
- imageSrc = bundleItem.product.visuals_images?.[0]?.url;
95
- videoSrc = bundleItem.product.visuals_videos?.[0]?.url;
89
+ imageSrc =
90
+ bundleItem.productOverrides?.visuals_images?.[0]?.url ||
91
+ bundleItem.product.visuals_images?.[0]?.url;
92
+ videoSrc =
93
+ bundleItem.productOverrides?.visuals_videos?.[0]?.url ||
94
+ bundleItem.product.visuals_videos?.[0]?.url;
95
+ pill = <Pill>Physical</Pill>;
96
96
  } else if (isNftItem(bundleItem)) {
97
97
  quantity = bundleItem.quantity || 1;
98
98
  name =
@@ -101,7 +101,22 @@ export const PhygitalProduct: React.FC<PhygitalProductProps> = ({ offer }) => {
101
101
  erc1155Names?.[index] ||
102
102
  "Untitled";
103
103
  contract = bundleItem.contract;
104
- imageSrc = ercImages?.[index] || bundleItem.image;
104
+ if (name === contract && typeof name === "string" && contract) {
105
+ name = (
106
+ <Tooltip
107
+ content={contract}
108
+ maxWidth="none"
109
+ interactive
110
+ hideOnClick={false}
111
+ wrap={false}
112
+ >
113
+ <span style={{ wordBreak: "keep-all" }}>
114
+ {formatAddress(contract)}
115
+ </span>
116
+ </Tooltip>
117
+ );
118
+ }
119
+ imageSrc = images?.[index];
105
120
  videoSrc = bundleItem.animationUrl;
106
121
  rangeText =
107
122
  bundleItem.tokenIdRange?.min ||
@@ -124,6 +139,22 @@ export const PhygitalProduct: React.FC<PhygitalProductProps> = ({ offer }) => {
124
139
  : `IDs: ${bundleItem.tokenIdRange?.min}-${bundleItem.tokenIdRange?.max}`}
125
140
  </span>
126
141
  ) : null;
142
+ const type = bundleItem.attributes?.find(
143
+ (attribute) => attribute.traitType === "type"
144
+ );
145
+ pill =
146
+ type &&
147
+ digitalTypeMappingDisplay[
148
+ type.value as keyof typeof digitalTypeMappingDisplay
149
+ ] ? (
150
+ <Pill>
151
+ {
152
+ digitalTypeMappingDisplay[
153
+ type.value as keyof typeof digitalTypeMappingDisplay
154
+ ]
155
+ }
156
+ </Pill>
157
+ ) : null;
127
158
  } else {
128
159
  name = "Unknown";
129
160
  }
@@ -141,17 +172,27 @@ export const PhygitalProduct: React.FC<PhygitalProductProps> = ({ offer }) => {
141
172
  color: colors.darkGrey
142
173
  }}
143
174
  >
144
- {imageSrc ? (
175
+ {videoSrc ? (
145
176
  <MediaWrapper>
146
- <IpfsImage src={imageSrc} />
177
+ <Video src={videoSrc} />
147
178
  </MediaWrapper>
148
- ) : videoSrc ? (
179
+ ) : imageSrc ? (
149
180
  <MediaWrapper>
150
- <Video src={videoSrc} />
181
+ <IpfsImage
182
+ src={imageSrc}
183
+ overrides={{ ipfsGateway: "https://ipfs.io/ipfs" }}
184
+ />
151
185
  </MediaWrapper>
152
- ) : null}
186
+ ) : (
187
+ <MediaWrapper></MediaWrapper>
188
+ )}
189
+ {pill}
153
190
  <div>{quantity}x</div>
154
- <Grid flexDirection="column" alignItems="flex-start">
191
+ <Grid
192
+ flexDirection="column"
193
+ alignItems="flex-start"
194
+ style={{ wordBreak: "break-all" }}
195
+ >
155
196
  {name} {rangeText}
156
197
  </Grid>
157
198
  {contract && (
@@ -162,7 +203,7 @@ export const PhygitalProduct: React.FC<PhygitalProductProps> = ({ offer }) => {
162
203
  style={{ flex: 0 }}
163
204
  >
164
205
  <ThemedButton size="regular" themeVal="blankSecondary">
165
- <ActionText>Buy</ActionText>{" "}
206
+ <ActionText>Contract</ActionText>{" "}
166
207
  <ArrowSquareUpRight size="16" />
167
208
  </ThemedButton>
168
209
  </a>
@@ -10,12 +10,12 @@ import React, {
10
10
  useState
11
11
  } from "react";
12
12
  import styled from "styled-components";
13
- import { useErc1155Uri } from "../../../../../hooks/contracts/erc1155/useErc1155Uri";
13
+ import { useErc1155Uris } from "../../../../../hooks/contracts/erc1155/useErc1155Uris";
14
14
  import { useErc20ExchangeTokenInfo } from "../../../../../hooks/contracts/erc20/useErc20ExchangeTokenInfo";
15
- import { useErc721TokenUri } from "../../../../../hooks/contracts/erc721/useErc721TokenUri";
15
+ import { useErc721TokenUris } from "../../../../../hooks/contracts/erc721/useErc721TokenUris";
16
16
  import { useCoreSDKWithContext } from "../../../../../hooks/core-sdk/useCoreSdkWithContext";
17
17
  import { nativeOnChain } from "../../../../../lib/const/tokens";
18
- import { useGetTokenUriImage } from "../../../../../hooks/contracts/useGetTokenUriImage";
18
+ import { useGetTokenUriImages } from "../../../../../hooks/contracts/useGetTokenUriImages";
19
19
  import { theme } from "../../../../../theme";
20
20
  import { Offer } from "../../../../../types/offer";
21
21
  import { useConfigContext } from "../../../../config/ConfigContext";
@@ -185,10 +185,15 @@ export const TokenGatedItem = ({
185
185
  coreSDK
186
186
  }
187
187
  );
188
- const { data: erc721TokenUri } = useErc721TokenUri(
188
+ const pairsContractTokens = [
189
189
  {
190
190
  contractAddress: condition?.tokenAddress,
191
191
  tokenIds: [condition?.minTokenId]
192
+ }
193
+ ];
194
+ const { data: erc721TokenUri } = useErc721TokenUris(
195
+ {
196
+ pairsContractTokens
192
197
  },
193
198
  {
194
199
  enabled:
@@ -198,10 +203,9 @@ export const TokenGatedItem = ({
198
203
  coreSDK
199
204
  }
200
205
  );
201
- const { data: erc1155Uri } = useErc1155Uri(
206
+ const { data: erc1155Uri } = useErc1155Uris(
202
207
  {
203
- contractAddress: condition?.tokenAddress,
204
- tokenIds: [condition?.minTokenId]
208
+ pairsContractTokens
205
209
  },
206
210
  {
207
211
  enabled:
@@ -230,17 +234,25 @@ export const TokenGatedItem = ({
230
234
  );
231
235
 
232
236
  const tokenIdForImage = condition?.minTokenId;
233
- const { data: erc721Image } = useGetTokenUriImage(
237
+ const { data: erc721Image } = useGetTokenUriImages(
234
238
  {
235
- tokenUris: erc721TokenUri,
236
- tokenIds: [tokenIdForImage]
239
+ pairsTokenUrisIds: [
240
+ {
241
+ tokenUris: erc721TokenUri?.[0],
242
+ tokenIds: [tokenIdForImage]
243
+ }
244
+ ]
237
245
  },
238
246
  { enabled: !!(erc721TokenUri && erc721TokenUri[0] && tokenIdForImage) }
239
247
  );
240
- const { data: erc1155Image } = useGetTokenUriImage(
248
+ const { data: erc1155Image } = useGetTokenUriImages(
241
249
  {
242
- tokenUris: erc1155Uri,
243
- tokenIds: [tokenIdForImage]
250
+ pairsTokenUrisIds: [
251
+ {
252
+ tokenUris: erc1155Uri?.[0],
253
+ tokenIds: [tokenIdForImage]
254
+ }
255
+ ]
244
256
  },
245
257
  { enabled: !!(erc1155Uri && erc1155Uri[0] && tokenIdForImage) }
246
258
  );
@@ -255,9 +267,9 @@ export const TokenGatedItem = ({
255
267
  currencies={[currency]}
256
268
  />
257
269
  ) : erc721Image ? (
258
- <ErcImage src={erc721Image[0]} alt="erc721" />
270
+ <ErcImage src={erc721Image[0][0]} alt="erc721" />
259
271
  ) : erc1155Image ? (
260
- <ErcImage src={erc1155Image[0]} alt="erc1155" />
272
+ <ErcImage src={erc1155Image[0][0]} alt="erc1155" />
261
273
  ) : null}
262
274
  </>
263
275
  );
@@ -13,6 +13,45 @@ export const ProductCardLabelWrapper = styled.div`
13
13
  z-index: 1;
14
14
  `;
15
15
 
16
+ export const TopLeftRibbon = styled.div`
17
+ --d: 6px; /* folded part */
18
+ position: relative;
19
+ z-index: 1;
20
+ &:before {
21
+ content: attr(data-text);
22
+ font-size: var(--f);
23
+ font-weight: 600;
24
+ /* I : position & coloration */
25
+ position: absolute;
26
+ top: 0;
27
+ left: 0;
28
+ transform: translate(0%, 125%) rotate(-45deg);
29
+ transform-origin: bottom left;
30
+ padding: 5px 35px calc(var(--d) + 5px);
31
+ color: ${({ theme }) => theme?.colors?.light.white};
32
+ background: linear-gradient(rgba(0, 0, 0, 0.5) 0 0) bottom/100% var(--d)
33
+ no-repeat ${({ theme }) => theme?.colors?.light.secondary};
34
+ /* II : clipping */
35
+ clip-path: polygon(
36
+ 0 0,
37
+ 100% 0,
38
+ 100% 100%,
39
+ calc(100% - var(--d)) calc(100% - var(--d)),
40
+ var(--d) calc(100% - var(--d)),
41
+ 0 100%
42
+ );
43
+ /* III : masking */
44
+ -webkit-mask:
45
+ linear-gradient(135deg, transparent calc(50% - var(--d) * 0.707), #fff 0)
46
+ bottom left,
47
+ linear-gradient(-135deg, transparent calc(50% - var(--d) * 0.707), #fff 0)
48
+ bottom right;
49
+ -webkit-mask-size: 300vmax 300vmax;
50
+ -webkit-mask-composite: destination-in;
51
+ mask-composite: intersect;
52
+ }
53
+ `;
54
+
16
55
  export const ProductCardCreator = styled.div`
17
56
  display: flex;
18
57
  flex-direction: column;
@@ -130,8 +169,10 @@ export const ProductCardWrapper = styled.div<{ $isHoverDisabled: boolean }>`
130
169
  ? css`
131
170
  transition: all 300ms ease-in-out;
132
171
  &:hover {
133
- box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.05),
134
- 4px 4px 4px rgba(0, 0, 0, 0.05), 8px 8px 8px rgba(0, 0, 0, 0.05),
172
+ box-shadow:
173
+ 0px 0px 0px rgba(0, 0, 0, 0.05),
174
+ 4px 4px 4px rgba(0, 0, 0, 0.05),
175
+ 8px 8px 8px rgba(0, 0, 0, 0.05),
135
176
  16px 16px 16px rgba(0, 0, 0, 0.05);
136
177
 
137
178
  [data-image-wrapper] {
@@ -11,6 +11,7 @@ import {
11
11
  ProductCardBottomContent,
12
12
  ProductCardCreator,
13
13
  ProductCardCreatorAvatar,
14
+ TopLeftRibbon,
14
15
  ProductCardCreatorName,
15
16
  ProductCardData,
16
17
  ProductCardImageWrapper,
@@ -62,8 +63,8 @@ const Wrapper = ({
62
63
  }
63
64
  return <>{children}</>;
64
65
  };
65
- export const PhygitalLabel = () => {
66
- return <ProductCardLabelWrapper>Phygital</ProductCardLabelWrapper>;
66
+ export const PhygitalLabel = ({ ...rest }) => {
67
+ return <TopLeftRibbon {...rest} data-text="Phygital" />;
67
68
  };
68
69
  export const ProductCard = (props: IProductCard) => {
69
70
  const {
@@ -4,12 +4,12 @@ import "tippy.js/themes/light-border.css";
4
4
 
5
5
  import Tippy, { TippyProps } from "@tippyjs/react";
6
6
  import { IconWeight, Question } from "phosphor-react";
7
- import React from "react";
7
+ import React, { ReactNode } from "react";
8
8
  import styled from "styled-components";
9
9
 
10
10
  import { theme } from "../../theme";
11
11
 
12
- export interface TooltipProps extends TippyProps {
12
+ export interface TooltipProps extends Omit<TippyProps, "children"> {
13
13
  content: React.ReactNode;
14
14
  interactive?: boolean;
15
15
  size?: number;
@@ -37,6 +37,7 @@ export interface TooltipProps extends TippyProps {
37
37
  | "click"
38
38
  | "focusin"
39
39
  | "manual";
40
+ children?: ReactNode;
40
41
  }
41
42
 
42
43
  const Button = styled.button`
@@ -78,7 +78,7 @@ export const DetailsSummary: React.FC<DetailsSummaryProps> = ({
78
78
  children,
79
79
  className,
80
80
  initiallyOpen,
81
- isOpen,
81
+ isOpen = initiallyOpen,
82
82
  onSetOpen,
83
83
  icon,
84
84
  $paddingSides = "2rem"
@@ -1,5 +1,5 @@
1
1
  import { CameraSlash, Image as ImageIcon } from "phosphor-react";
2
- import React, { useState } from "react";
2
+ import React, { useEffect, useState } from "react";
3
3
  import styled from "styled-components";
4
4
 
5
5
  import { buttonText } from "./styles";
@@ -82,6 +82,9 @@ interface IImage {
82
82
  withLoading?: boolean;
83
83
  optimizationOpts?: Partial<ImageOptimizationOpts>;
84
84
  onSetStatus?: (status: LoadingStatus) => void;
85
+ overrides?: {
86
+ ipfsGateway?: string;
87
+ };
85
88
  }
86
89
  const IpfsImage: React.FC<IImage & React.HTMLAttributes<HTMLDivElement>> = ({
87
90
  src,
@@ -92,6 +95,7 @@ const IpfsImage: React.FC<IImage & React.HTMLAttributes<HTMLDivElement>> = ({
92
95
  withLoading = true,
93
96
  optimizationOpts,
94
97
  onSetStatus,
98
+ overrides,
95
99
  ...rest
96
100
  }) => {
97
101
  const { ipfsGateway } = useIpfsContext();
@@ -103,17 +107,28 @@ const IpfsImage: React.FC<IImage & React.HTMLAttributes<HTMLDivElement>> = ({
103
107
  onSetStatus?.(innerStatus);
104
108
  };
105
109
  const [currentSrc, setCurrentSrc] = useState<string>(
106
- getImageUrl(src, ipfsGateway, optimizationOpts)
110
+ getImageUrl(src, overrides?.ipfsGateway || ipfsGateway, optimizationOpts)
107
111
  );
108
112
  const [didOriginalSrcFail, setDidOriginalSrcFail] = useState<boolean>(false);
109
-
113
+ useEffect(() => {
114
+ if (src === currentSrc) {
115
+ return;
116
+ }
117
+ // reset all if src changes
118
+ setStatus(withLoading ? "loading" : "success");
119
+ setCurrentSrc(
120
+ getImageUrl(src, overrides?.ipfsGateway || ipfsGateway, optimizationOpts)
121
+ );
122
+ setDidOriginalSrcFail(false);
123
+ // eslint-disable-next-line react-hooks/exhaustive-deps
124
+ }, [src]);
110
125
  const isError = status === "error";
111
126
  const isLoading = status === "loading";
112
127
  const isSuccess = status === "success";
113
128
 
114
129
  return (
115
130
  <>
116
- <ImageWrapper {...rest} $hide={!isLoading}>
131
+ <ImageWrapper {...rest} $hide={!isLoading} className="loading-container">
117
132
  <ImagePlaceholder>
118
133
  <Typography tag="div">
119
134
  <Loading />
@@ -86,10 +86,7 @@ export type TypographyProps = WrapperProps &
86
86
  className?: string;
87
87
  };
88
88
 
89
- export const Typography: React.FC<TypographyProps> = forwardRef<
90
- HTMLDivElement,
91
- TypographyProps
92
- >(
89
+ export const Typography = forwardRef<HTMLDivElement, TypographyProps>(
93
90
  (
94
91
  { tag = "div", children, style = {}, className, onClick, ...props },
95
92
  ref
@@ -8,7 +8,7 @@ import {
8
8
  } from "./CommitWidgetProviders";
9
9
  import GlobalStyle from "../../styles/GlobalStyle";
10
10
  import { CSSProperties } from "styled-components";
11
- import { useProvider } from "../../../hooks/connection/connection";
11
+
12
12
  type CommitProps = {
13
13
  buttonProps?: Omit<ButtonProps, "onClick">;
14
14
  trigger?: ComponentType<{ onClick: () => unknown }> | undefined;
@@ -0,0 +1,71 @@
1
+ import { CoreSDK, subgraph } from "@bosonprotocol/core-sdk";
2
+ import { isNftItem } from "../../lib/bundle/filter";
3
+ import { useErc721TokenUris } from "../contracts/erc721/useErc721TokenUris";
4
+ import { useErc1155Uris } from "../contracts/erc1155/useErc1155Uris";
5
+ import { useGetTokenUriImages } from "../contracts/useGetTokenUriImages";
6
+ import { isTruthy } from "../../types/helpers";
7
+
8
+ export const useBundleItemsImages = ({
9
+ bundleItems,
10
+ coreSDK
11
+ }: {
12
+ bundleItems:
13
+ | Extract<
14
+ subgraph.OfferFieldsFragment["metadata"],
15
+ { __typename: "BundleMetadataEntity" }
16
+ >["items"]
17
+ | undefined;
18
+ coreSDK: CoreSDK;
19
+ }) => {
20
+ const pairsContractTokens = bundleItems?.map((bundleItem) =>
21
+ isNftItem(bundleItem)
22
+ ? {
23
+ contractAddress: bundleItem.contract,
24
+ tokenIds: [
25
+ bundleItem.tokenId ||
26
+ bundleItem.tokenIdRange?.min ||
27
+ bundleItem.tokenIdRange?.max
28
+ ]
29
+ }
30
+ : null
31
+ );
32
+ const { data: erc721TokenUris } = useErc721TokenUris(
33
+ {
34
+ pairsContractTokens
35
+ },
36
+ {
37
+ enabled: !!pairsContractTokens?.length,
38
+ coreSDK
39
+ }
40
+ );
41
+ const { data: erc1155Uris } = useErc1155Uris(
42
+ {
43
+ pairsContractTokens
44
+ },
45
+ {
46
+ enabled: !!pairsContractTokens?.length,
47
+ coreSDK
48
+ }
49
+ );
50
+ const { data: ercImages } = useGetTokenUriImages(
51
+ {
52
+ pairsTokenUrisIds: pairsContractTokens?.map((pair, index) => {
53
+ return {
54
+ tokenIds: pair?.tokenIds,
55
+ tokenUris: erc721TokenUris?.[index]?.filter(isTruthy).length
56
+ ? erc721TokenUris?.[index]
57
+ : erc1155Uris?.[index]
58
+ };
59
+ })
60
+ },
61
+ { enabled: !!pairsContractTokens?.length }
62
+ );
63
+ const images = bundleItems?.map((bundleItem, index) => {
64
+ const img = ercImages?.[index][0] || ""; // image of first tokenId
65
+ if (isNftItem(bundleItem)) {
66
+ return img || bundleItem.image;
67
+ }
68
+ return img;
69
+ });
70
+ return { images };
71
+ };
@@ -0,0 +1,52 @@
1
+ import { CoreSDK } from "@bosonprotocol/core-sdk";
2
+ import { useQuery } from "react-query";
3
+
4
+ export const useErc1155Uris = (
5
+ props: {
6
+ pairsContractTokens:
7
+ | ({
8
+ contractAddress: string | undefined | null;
9
+ tokenIds: (string | null | undefined)[] | undefined;
10
+ } | null)[]
11
+ | undefined;
12
+ },
13
+ { enabled, coreSDK }: { enabled: boolean | undefined; coreSDK: CoreSDK }
14
+ ) => {
15
+ return useQuery(
16
+ ["useErc1155Uris", coreSDK.uuid, props],
17
+ async () => {
18
+ const { pairsContractTokens } = props;
19
+ if (!pairsContractTokens) {
20
+ return;
21
+ }
22
+
23
+ return (
24
+ await Promise.all(
25
+ pairsContractTokens.map(async (pair) =>
26
+ pair && pair.contractAddress && pair.tokenIds
27
+ ? await Promise.allSettled(
28
+ pair.tokenIds.map((tokenId) =>
29
+ tokenId && pair.contractAddress
30
+ ? coreSDK.erc1155Uri({
31
+ contractAddress: pair.contractAddress,
32
+ tokenId
33
+ })
34
+ : null
35
+ )
36
+ )
37
+ : null
38
+ )
39
+ )
40
+ ).map((promiseSettled) =>
41
+ promiseSettled
42
+ ? promiseSettled.map((promiseSettled) =>
43
+ promiseSettled.status === "fulfilled"
44
+ ? promiseSettled.value
45
+ : null
46
+ )
47
+ : null
48
+ );
49
+ },
50
+ { enabled }
51
+ );
52
+ };
@@ -0,0 +1,52 @@
1
+ import { CoreSDK } from "@bosonprotocol/core-sdk";
2
+ import { useQuery } from "react-query";
3
+
4
+ export const useErc721TokenUris = (
5
+ props: {
6
+ pairsContractTokens:
7
+ | ({
8
+ contractAddress: string | undefined | null;
9
+ tokenIds: (string | null | undefined)[] | undefined;
10
+ } | null)[]
11
+ | undefined;
12
+ },
13
+ { enabled, coreSDK }: { enabled: boolean | undefined; coreSDK: CoreSDK }
14
+ ) => {
15
+ return useQuery(
16
+ ["useErc721TokenUris", coreSDK.uuid, props],
17
+ async () => {
18
+ const { pairsContractTokens } = props;
19
+ if (!pairsContractTokens) {
20
+ return;
21
+ }
22
+
23
+ return (
24
+ await Promise.all(
25
+ pairsContractTokens.map(async (pair) =>
26
+ pair && pair.contractAddress && pair.tokenIds
27
+ ? await Promise.allSettled(
28
+ pair.tokenIds.map((tokenId) =>
29
+ tokenId && pair.contractAddress
30
+ ? coreSDK.erc721TokenUri({
31
+ contractAddress: pair.contractAddress,
32
+ tokenId
33
+ })
34
+ : null
35
+ )
36
+ )
37
+ : null
38
+ )
39
+ )
40
+ ).map((promiseSettled) =>
41
+ promiseSettled
42
+ ? promiseSettled.map((promiseSettled) =>
43
+ promiseSettled.status === "fulfilled"
44
+ ? promiseSettled.value
45
+ : null
46
+ )
47
+ : null
48
+ );
49
+ },
50
+ { enabled }
51
+ );
52
+ };