@0xsequence/checkout 0.0.0-20250314205219

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 (416) hide show
  1. package/LICENSE +219 -0
  2. package/README.md +256 -0
  3. package/dist/cjs/api/data.js +165 -0
  4. package/dist/cjs/api/data.js.map +1 -0
  5. package/dist/cjs/api/index.js +18 -0
  6. package/dist/cjs/api/index.js.map +1 -0
  7. package/dist/cjs/components/CopyButton.js +24 -0
  8. package/dist/cjs/components/CopyButton.js.map +1 -0
  9. package/dist/cjs/components/DefaultIcon.js +13 -0
  10. package/dist/cjs/components/DefaultIcon.js.map +1 -0
  11. package/dist/cjs/components/NavigationHeader.js +23 -0
  12. package/dist/cjs/components/NavigationHeader.js.map +1 -0
  13. package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js +215 -0
  14. package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js.map +1 -0
  15. package/dist/cjs/components/SequenceCheckoutProvider/index.js +18 -0
  16. package/dist/cjs/components/SequenceCheckoutProvider/index.js.map +1 -0
  17. package/dist/cjs/constants/abi.js +188 -0
  18. package/dist/cjs/constants/abi.js.map +1 -0
  19. package/dist/cjs/constants/index.js +8 -0
  20. package/dist/cjs/constants/index.js.map +1 -0
  21. package/dist/cjs/contexts/AddFundsModal.js +7 -0
  22. package/dist/cjs/contexts/AddFundsModal.js.map +1 -0
  23. package/dist/cjs/contexts/CheckoutModal.js +8 -0
  24. package/dist/cjs/contexts/CheckoutModal.js.map +1 -0
  25. package/dist/cjs/contexts/Navigation.js +8 -0
  26. package/dist/cjs/contexts/Navigation.js.map +1 -0
  27. package/dist/cjs/contexts/SelectPaymentModal.js +7 -0
  28. package/dist/cjs/contexts/SelectPaymentModal.js.map +1 -0
  29. package/dist/cjs/contexts/SwapModal.js +8 -0
  30. package/dist/cjs/contexts/SwapModal.js.map +1 -0
  31. package/dist/cjs/contexts/TransactionStatusModal.js +7 -0
  32. package/dist/cjs/contexts/TransactionStatusModal.js.map +1 -0
  33. package/dist/cjs/contexts/TransferFundsModal.js +7 -0
  34. package/dist/cjs/contexts/TransferFundsModal.js.map +1 -0
  35. package/dist/cjs/contexts/genericContext.js +20 -0
  36. package/dist/cjs/contexts/genericContext.js.map +1 -0
  37. package/dist/cjs/contexts/index.js +24 -0
  38. package/dist/cjs/contexts/index.js.map +1 -0
  39. package/dist/cjs/hooks/index.js +30 -0
  40. package/dist/cjs/hooks/index.js.map +1 -0
  41. package/dist/cjs/hooks/useAddFundsModal.js +10 -0
  42. package/dist/cjs/hooks/useAddFundsModal.js.map +1 -0
  43. package/dist/cjs/hooks/useCheckoutModal.js +10 -0
  44. package/dist/cjs/hooks/useCheckoutModal.js.map +1 -0
  45. package/dist/cjs/hooks/useCheckoutOptionsSalesContract.js +20 -0
  46. package/dist/cjs/hooks/useCheckoutOptionsSalesContract.js.map +1 -0
  47. package/dist/cjs/hooks/useCheckoutWhitelistStatus.js +21 -0
  48. package/dist/cjs/hooks/useCheckoutWhitelistStatus.js.map +1 -0
  49. package/dist/cjs/hooks/useERC1155SaleContractCheckout.js +157 -0
  50. package/dist/cjs/hooks/useERC1155SaleContractCheckout.js.map +1 -0
  51. package/dist/cjs/hooks/useMarketplaceClient.js +40 -0
  52. package/dist/cjs/hooks/useMarketplaceClient.js.map +1 -0
  53. package/dist/cjs/hooks/useModalTheme.js +10 -0
  54. package/dist/cjs/hooks/useModalTheme.js.map +1 -0
  55. package/dist/cjs/hooks/useNavigation.js +24 -0
  56. package/dist/cjs/hooks/useNavigation.js.map +1 -0
  57. package/dist/cjs/hooks/useSardineClientToken.js +20 -0
  58. package/dist/cjs/hooks/useSardineClientToken.js.map +1 -0
  59. package/dist/cjs/hooks/useSelectPaymentModal.js +10 -0
  60. package/dist/cjs/hooks/useSelectPaymentModal.js.map +1 -0
  61. package/dist/cjs/hooks/useSkipOnCloseCallback.js +22 -0
  62. package/dist/cjs/hooks/useSkipOnCloseCallback.js.map +1 -0
  63. package/dist/cjs/hooks/useSwapModal.js +10 -0
  64. package/dist/cjs/hooks/useSwapModal.js.map +1 -0
  65. package/dist/cjs/hooks/useTransactionStatusModal.js +10 -0
  66. package/dist/cjs/hooks/useTransactionStatusModal.js.map +1 -0
  67. package/dist/cjs/hooks/useTransferFundsModal.js +10 -0
  68. package/dist/cjs/hooks/useTransferFundsModal.js.map +1 -0
  69. package/dist/cjs/index.js +27 -0
  70. package/dist/cjs/index.js.map +1 -0
  71. package/dist/cjs/utils/index.js +18 -0
  72. package/dist/cjs/utils/index.js.map +1 -0
  73. package/dist/cjs/utils/sardine.js +52 -0
  74. package/dist/cjs/utils/sardine.js.map +1 -0
  75. package/dist/cjs/utils/sizing.js +12 -0
  76. package/dist/cjs/utils/sizing.js.map +1 -0
  77. package/dist/cjs/utils/transak.js +41 -0
  78. package/dist/cjs/utils/transak.js.map +1 -0
  79. package/dist/cjs/views/AddFunds.js +50 -0
  80. package/dist/cjs/views/AddFunds.js.map +1 -0
  81. package/dist/cjs/views/CheckoutSelection/component/OrderSummaryItem.js +35 -0
  82. package/dist/cjs/views/CheckoutSelection/component/OrderSummaryItem.js.map +1 -0
  83. package/dist/cjs/views/CheckoutSelection/index.js +83 -0
  84. package/dist/cjs/views/CheckoutSelection/index.js.map +1 -0
  85. package/dist/cjs/views/PaymentSelection/Footer.js +12 -0
  86. package/dist/cjs/views/PaymentSelection/Footer.js.map +1 -0
  87. package/dist/cjs/views/PaymentSelection/OrderSummary/Price.js +42 -0
  88. package/dist/cjs/views/PaymentSelection/OrderSummary/Price.js.map +1 -0
  89. package/dist/cjs/views/PaymentSelection/OrderSummary/index.js +63 -0
  90. package/dist/cjs/views/PaymentSelection/OrderSummary/index.js.map +1 -0
  91. package/dist/cjs/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.js +10 -0
  92. package/dist/cjs/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.js.map +1 -0
  93. package/dist/cjs/views/PaymentSelection/PayWithCreditCard/index.js +112 -0
  94. package/dist/cjs/views/PaymentSelection/PayWithCreditCard/index.js.map +1 -0
  95. package/dist/cjs/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.js +9 -0
  96. package/dist/cjs/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.js.map +1 -0
  97. package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.js +134 -0
  98. package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.js.map +1 -0
  99. package/dist/cjs/views/PaymentSelection/TransferFunds.js +50 -0
  100. package/dist/cjs/views/PaymentSelection/TransferFunds.js.map +1 -0
  101. package/dist/cjs/views/PaymentSelection/index.js +332 -0
  102. package/dist/cjs/views/PaymentSelection/index.js.map +1 -0
  103. package/dist/cjs/views/PendingCreditCardTransaction.js +295 -0
  104. package/dist/cjs/views/PendingCreditCardTransaction.js.map +1 -0
  105. package/dist/cjs/views/Swap/index.js +173 -0
  106. package/dist/cjs/views/Swap/index.js.map +1 -0
  107. package/dist/cjs/views/TransactionError.js +23 -0
  108. package/dist/cjs/views/TransactionError.js.map +1 -0
  109. package/dist/cjs/views/TransactionStatus/index.js +178 -0
  110. package/dist/cjs/views/TransactionStatus/index.js.map +1 -0
  111. package/dist/cjs/views/TransactionSuccess.js +23 -0
  112. package/dist/cjs/views/TransactionSuccess.js.map +1 -0
  113. package/dist/cjs/views/TransferToWallet/CopyButton.js +24 -0
  114. package/dist/cjs/views/TransferToWallet/CopyButton.js.map +1 -0
  115. package/dist/cjs/views/TransferToWallet/QRCode.js +13 -0
  116. package/dist/cjs/views/TransferToWallet/QRCode.js.map +1 -0
  117. package/dist/cjs/views/TransferToWallet/index.js +17 -0
  118. package/dist/cjs/views/TransferToWallet/index.js.map +1 -0
  119. package/dist/cjs/views/index.js +26 -0
  120. package/dist/cjs/views/index.js.map +1 -0
  121. package/dist/esm/api/data.js +159 -0
  122. package/dist/esm/api/data.js.map +1 -0
  123. package/dist/esm/api/index.js +2 -0
  124. package/dist/esm/api/index.js.map +1 -0
  125. package/dist/esm/components/CopyButton.js +20 -0
  126. package/dist/esm/components/CopyButton.js.map +1 -0
  127. package/dist/esm/components/DefaultIcon.js +9 -0
  128. package/dist/esm/components/DefaultIcon.js.map +1 -0
  129. package/dist/esm/components/NavigationHeader.js +19 -0
  130. package/dist/esm/components/NavigationHeader.js.map +1 -0
  131. package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js +210 -0
  132. package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js.map +1 -0
  133. package/dist/esm/components/SequenceCheckoutProvider/index.js +2 -0
  134. package/dist/esm/components/SequenceCheckoutProvider/index.js.map +1 -0
  135. package/dist/esm/constants/abi.js +185 -0
  136. package/dist/esm/constants/abi.js.map +1 -0
  137. package/dist/esm/constants/index.js +5 -0
  138. package/dist/esm/constants/index.js.map +1 -0
  139. package/dist/esm/contexts/AddFundsModal.js +3 -0
  140. package/dist/esm/contexts/AddFundsModal.js.map +1 -0
  141. package/dist/esm/contexts/CheckoutModal.js +4 -0
  142. package/dist/esm/contexts/CheckoutModal.js.map +1 -0
  143. package/dist/esm/contexts/Navigation.js +4 -0
  144. package/dist/esm/contexts/Navigation.js.map +1 -0
  145. package/dist/esm/contexts/SelectPaymentModal.js +3 -0
  146. package/dist/esm/contexts/SelectPaymentModal.js.map +1 -0
  147. package/dist/esm/contexts/SwapModal.js +4 -0
  148. package/dist/esm/contexts/SwapModal.js.map +1 -0
  149. package/dist/esm/contexts/TransactionStatusModal.js +3 -0
  150. package/dist/esm/contexts/TransactionStatusModal.js.map +1 -0
  151. package/dist/esm/contexts/TransferFundsModal.js +3 -0
  152. package/dist/esm/contexts/TransferFundsModal.js.map +1 -0
  153. package/dist/esm/contexts/genericContext.js +16 -0
  154. package/dist/esm/contexts/genericContext.js.map +1 -0
  155. package/dist/esm/contexts/index.js +8 -0
  156. package/dist/esm/contexts/index.js.map +1 -0
  157. package/dist/esm/hooks/index.js +14 -0
  158. package/dist/esm/hooks/index.js.map +1 -0
  159. package/dist/esm/hooks/useAddFundsModal.js +6 -0
  160. package/dist/esm/hooks/useAddFundsModal.js.map +1 -0
  161. package/dist/esm/hooks/useCheckoutModal.js +6 -0
  162. package/dist/esm/hooks/useCheckoutModal.js.map +1 -0
  163. package/dist/esm/hooks/useCheckoutOptionsSalesContract.js +16 -0
  164. package/dist/esm/hooks/useCheckoutOptionsSalesContract.js.map +1 -0
  165. package/dist/esm/hooks/useCheckoutWhitelistStatus.js +17 -0
  166. package/dist/esm/hooks/useCheckoutWhitelistStatus.js.map +1 -0
  167. package/dist/esm/hooks/useERC1155SaleContractCheckout.js +151 -0
  168. package/dist/esm/hooks/useERC1155SaleContractCheckout.js.map +1 -0
  169. package/dist/esm/hooks/useMarketplaceClient.js +36 -0
  170. package/dist/esm/hooks/useMarketplaceClient.js.map +1 -0
  171. package/dist/esm/hooks/useModalTheme.js +6 -0
  172. package/dist/esm/hooks/useModalTheme.js.map +1 -0
  173. package/dist/esm/hooks/useNavigation.js +20 -0
  174. package/dist/esm/hooks/useNavigation.js.map +1 -0
  175. package/dist/esm/hooks/useSardineClientToken.js +16 -0
  176. package/dist/esm/hooks/useSardineClientToken.js.map +1 -0
  177. package/dist/esm/hooks/useSelectPaymentModal.js +6 -0
  178. package/dist/esm/hooks/useSelectPaymentModal.js.map +1 -0
  179. package/dist/esm/hooks/useSkipOnCloseCallback.js +18 -0
  180. package/dist/esm/hooks/useSkipOnCloseCallback.js.map +1 -0
  181. package/dist/esm/hooks/useSwapModal.js +6 -0
  182. package/dist/esm/hooks/useSwapModal.js.map +1 -0
  183. package/dist/esm/hooks/useTransactionStatusModal.js +6 -0
  184. package/dist/esm/hooks/useTransactionStatusModal.js.map +1 -0
  185. package/dist/esm/hooks/useTransferFundsModal.js +6 -0
  186. package/dist/esm/hooks/useTransferFundsModal.js.map +1 -0
  187. package/dist/esm/index.js +13 -0
  188. package/dist/esm/index.js.map +1 -0
  189. package/dist/esm/utils/index.js +2 -0
  190. package/dist/esm/utils/index.js.map +1 -0
  191. package/dist/esm/utils/sardine.js +48 -0
  192. package/dist/esm/utils/sardine.js.map +1 -0
  193. package/dist/esm/utils/sizing.js +8 -0
  194. package/dist/esm/utils/sizing.js.map +1 -0
  195. package/dist/esm/utils/transak.js +36 -0
  196. package/dist/esm/utils/transak.js.map +1 -0
  197. package/dist/esm/views/AddFunds.js +46 -0
  198. package/dist/esm/views/AddFunds.js.map +1 -0
  199. package/dist/esm/views/CheckoutSelection/component/OrderSummaryItem.js +30 -0
  200. package/dist/esm/views/CheckoutSelection/component/OrderSummaryItem.js.map +1 -0
  201. package/dist/esm/views/CheckoutSelection/index.js +79 -0
  202. package/dist/esm/views/CheckoutSelection/index.js.map +1 -0
  203. package/dist/esm/views/PaymentSelection/Footer.js +8 -0
  204. package/dist/esm/views/PaymentSelection/Footer.js.map +1 -0
  205. package/dist/esm/views/PaymentSelection/OrderSummary/Price.js +38 -0
  206. package/dist/esm/views/PaymentSelection/OrderSummary/Price.js.map +1 -0
  207. package/dist/esm/views/PaymentSelection/OrderSummary/index.js +59 -0
  208. package/dist/esm/views/PaymentSelection/OrderSummary/index.js.map +1 -0
  209. package/dist/esm/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.js +6 -0
  210. package/dist/esm/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.js.map +1 -0
  211. package/dist/esm/views/PaymentSelection/PayWithCreditCard/index.js +108 -0
  212. package/dist/esm/views/PaymentSelection/PayWithCreditCard/index.js.map +1 -0
  213. package/dist/esm/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.js +5 -0
  214. package/dist/esm/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.js.map +1 -0
  215. package/dist/esm/views/PaymentSelection/PayWithCrypto/index.js +130 -0
  216. package/dist/esm/views/PaymentSelection/PayWithCrypto/index.js.map +1 -0
  217. package/dist/esm/views/PaymentSelection/TransferFunds.js +46 -0
  218. package/dist/esm/views/PaymentSelection/TransferFunds.js.map +1 -0
  219. package/dist/esm/views/PaymentSelection/index.js +326 -0
  220. package/dist/esm/views/PaymentSelection/index.js.map +1 -0
  221. package/dist/esm/views/PendingCreditCardTransaction.js +286 -0
  222. package/dist/esm/views/PendingCreditCardTransaction.js.map +1 -0
  223. package/dist/esm/views/Swap/index.js +169 -0
  224. package/dist/esm/views/Swap/index.js.map +1 -0
  225. package/dist/esm/views/TransactionError.js +18 -0
  226. package/dist/esm/views/TransactionError.js.map +1 -0
  227. package/dist/esm/views/TransactionStatus/index.js +170 -0
  228. package/dist/esm/views/TransactionStatus/index.js.map +1 -0
  229. package/dist/esm/views/TransactionSuccess.js +18 -0
  230. package/dist/esm/views/TransactionSuccess.js.map +1 -0
  231. package/dist/esm/views/TransferToWallet/CopyButton.js +20 -0
  232. package/dist/esm/views/TransferToWallet/CopyButton.js.map +1 -0
  233. package/dist/esm/views/TransferToWallet/QRCode.js +9 -0
  234. package/dist/esm/views/TransferToWallet/QRCode.js.map +1 -0
  235. package/dist/esm/views/TransferToWallet/index.js +13 -0
  236. package/dist/esm/views/TransferToWallet/index.js.map +1 -0
  237. package/dist/esm/views/index.js +10 -0
  238. package/dist/esm/views/index.js.map +1 -0
  239. package/dist/types/api/data.d.ts +21 -0
  240. package/dist/types/api/data.d.ts.map +1 -0
  241. package/dist/types/api/index.d.ts +2 -0
  242. package/dist/types/api/index.d.ts.map +1 -0
  243. package/dist/types/components/CopyButton.d.ts +9 -0
  244. package/dist/types/components/CopyButton.d.ts.map +1 -0
  245. package/dist/types/components/DefaultIcon.d.ts +6 -0
  246. package/dist/types/components/DefaultIcon.d.ts.map +1 -0
  247. package/dist/types/components/NavigationHeader.d.ts +8 -0
  248. package/dist/types/components/NavigationHeader.d.ts.map +1 -0
  249. package/dist/types/components/SequenceCheckoutProvider/SequenceCheckoutProvider.d.ts +7 -0
  250. package/dist/types/components/SequenceCheckoutProvider/SequenceCheckoutProvider.d.ts.map +1 -0
  251. package/dist/types/components/SequenceCheckoutProvider/index.d.ts +2 -0
  252. package/dist/types/components/SequenceCheckoutProvider/index.d.ts.map +1 -0
  253. package/dist/types/constants/abi.d.ts +46 -0
  254. package/dist/types/constants/abi.d.ts.map +1 -0
  255. package/dist/types/constants/index.d.ts +5 -0
  256. package/dist/types/constants/index.d.ts.map +1 -0
  257. package/dist/types/contexts/AddFundsModal.d.ts +22 -0
  258. package/dist/types/contexts/AddFundsModal.d.ts.map +1 -0
  259. package/dist/types/contexts/CheckoutModal.d.ts +56 -0
  260. package/dist/types/contexts/CheckoutModal.d.ts.map +1 -0
  261. package/dist/types/contexts/Navigation.d.ts +38 -0
  262. package/dist/types/contexts/Navigation.d.ts.map +1 -0
  263. package/dist/types/contexts/SelectPaymentModal.d.ts +43 -0
  264. package/dist/types/contexts/SelectPaymentModal.d.ts.map +1 -0
  265. package/dist/types/contexts/SwapModal.d.ts +25 -0
  266. package/dist/types/contexts/SwapModal.d.ts.map +1 -0
  267. package/dist/types/contexts/TransactionStatusModal.d.ts +25 -0
  268. package/dist/types/contexts/TransactionStatusModal.d.ts.map +1 -0
  269. package/dist/types/contexts/TransferFundsModal.d.ts +13 -0
  270. package/dist/types/contexts/TransferFundsModal.d.ts.map +1 -0
  271. package/dist/types/contexts/genericContext.d.ts +2 -0
  272. package/dist/types/contexts/genericContext.d.ts.map +1 -0
  273. package/dist/types/contexts/index.d.ts +8 -0
  274. package/dist/types/contexts/index.d.ts.map +1 -0
  275. package/dist/types/hooks/index.d.ts +14 -0
  276. package/dist/types/hooks/index.d.ts.map +1 -0
  277. package/dist/types/hooks/useAddFundsModal.d.ts +6 -0
  278. package/dist/types/hooks/useAddFundsModal.d.ts.map +1 -0
  279. package/dist/types/hooks/useCheckoutModal.d.ts +6 -0
  280. package/dist/types/hooks/useCheckoutModal.d.ts.map +1 -0
  281. package/dist/types/hooks/useCheckoutOptionsSalesContract.d.ts +6 -0
  282. package/dist/types/hooks/useCheckoutOptionsSalesContract.d.ts.map +1 -0
  283. package/dist/types/hooks/useCheckoutWhitelistStatus.d.ts +3 -0
  284. package/dist/types/hooks/useCheckoutWhitelistStatus.d.ts.map +1 -0
  285. package/dist/types/hooks/useERC1155SaleContractCheckout.d.ts +37 -0
  286. package/dist/types/hooks/useERC1155SaleContractCheckout.d.ts.map +1 -0
  287. package/dist/types/hooks/useMarketplaceClient.d.ts +9 -0
  288. package/dist/types/hooks/useMarketplaceClient.d.ts.map +1 -0
  289. package/dist/types/hooks/useModalTheme.d.ts +2 -0
  290. package/dist/types/hooks/useModalTheme.d.ts.map +1 -0
  291. package/dist/types/hooks/useNavigation.d.ts +11 -0
  292. package/dist/types/hooks/useNavigation.d.ts.map +1 -0
  293. package/dist/types/hooks/useSardineClientToken.d.ts +3 -0
  294. package/dist/types/hooks/useSardineClientToken.d.ts.map +1 -0
  295. package/dist/types/hooks/useSelectPaymentModal.d.ts +6 -0
  296. package/dist/types/hooks/useSelectPaymentModal.d.ts.map +1 -0
  297. package/dist/types/hooks/useSkipOnCloseCallback.d.ts +6 -0
  298. package/dist/types/hooks/useSkipOnCloseCallback.d.ts.map +1 -0
  299. package/dist/types/hooks/useSwapModal.d.ts +6 -0
  300. package/dist/types/hooks/useSwapModal.d.ts.map +1 -0
  301. package/dist/types/hooks/useTransactionStatusModal.d.ts +6 -0
  302. package/dist/types/hooks/useTransactionStatusModal.d.ts.map +1 -0
  303. package/dist/types/hooks/useTransferFundsModal.d.ts +6 -0
  304. package/dist/types/hooks/useTransferFundsModal.d.ts.map +1 -0
  305. package/dist/types/index.d.ts +14 -0
  306. package/dist/types/index.d.ts.map +1 -0
  307. package/dist/types/utils/index.d.ts +2 -0
  308. package/dist/types/utils/index.d.ts.map +1 -0
  309. package/dist/types/utils/sardine.d.ts +6 -0
  310. package/dist/types/utils/sardine.d.ts.map +1 -0
  311. package/dist/types/utils/sizing.d.ts +2 -0
  312. package/dist/types/utils/sizing.d.ts.map +1 -0
  313. package/dist/types/utils/transak.d.ts +7 -0
  314. package/dist/types/utils/transak.d.ts.map +1 -0
  315. package/dist/types/views/AddFunds.d.ts +2 -0
  316. package/dist/types/views/AddFunds.d.ts.map +1 -0
  317. package/dist/types/views/CheckoutSelection/component/OrderSummaryItem.d.ts +10 -0
  318. package/dist/types/views/CheckoutSelection/component/OrderSummaryItem.d.ts.map +1 -0
  319. package/dist/types/views/CheckoutSelection/index.d.ts +2 -0
  320. package/dist/types/views/CheckoutSelection/index.d.ts.map +1 -0
  321. package/dist/types/views/PaymentSelection/Footer.d.ts +2 -0
  322. package/dist/types/views/PaymentSelection/Footer.d.ts.map +1 -0
  323. package/dist/types/views/PaymentSelection/OrderSummary/Price.d.ts +2 -0
  324. package/dist/types/views/PaymentSelection/OrderSummary/Price.d.ts.map +1 -0
  325. package/dist/types/views/PaymentSelection/OrderSummary/index.d.ts +2 -0
  326. package/dist/types/views/PaymentSelection/OrderSummary/index.d.ts.map +1 -0
  327. package/dist/types/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.d.ts +11 -0
  328. package/dist/types/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.d.ts.map +1 -0
  329. package/dist/types/views/PaymentSelection/PayWithCreditCard/index.d.ts +9 -0
  330. package/dist/types/views/PaymentSelection/PayWithCreditCard/index.d.ts.map +1 -0
  331. package/dist/types/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.d.ts +2 -0
  332. package/dist/types/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.d.ts.map +1 -0
  333. package/dist/types/views/PaymentSelection/PayWithCrypto/index.d.ts +12 -0
  334. package/dist/types/views/PaymentSelection/PayWithCrypto/index.d.ts.map +1 -0
  335. package/dist/types/views/PaymentSelection/TransferFunds.d.ts +2 -0
  336. package/dist/types/views/PaymentSelection/TransferFunds.d.ts.map +1 -0
  337. package/dist/types/views/PaymentSelection/index.d.ts +4 -0
  338. package/dist/types/views/PaymentSelection/index.d.ts.map +1 -0
  339. package/dist/types/views/PendingCreditCardTransaction.d.ts +8 -0
  340. package/dist/types/views/PendingCreditCardTransaction.d.ts.map +1 -0
  341. package/dist/types/views/Swap/index.d.ts +2 -0
  342. package/dist/types/views/Swap/index.d.ts.map +1 -0
  343. package/dist/types/views/TransactionError.d.ts +3 -0
  344. package/dist/types/views/TransactionError.d.ts.map +1 -0
  345. package/dist/types/views/TransactionStatus/index.d.ts +9 -0
  346. package/dist/types/views/TransactionStatus/index.d.ts.map +1 -0
  347. package/dist/types/views/TransactionSuccess.d.ts +3 -0
  348. package/dist/types/views/TransactionSuccess.d.ts.map +1 -0
  349. package/dist/types/views/TransferToWallet/CopyButton.d.ts +10 -0
  350. package/dist/types/views/TransferToWallet/CopyButton.d.ts.map +1 -0
  351. package/dist/types/views/TransferToWallet/QRCode.d.ts +6 -0
  352. package/dist/types/views/TransferToWallet/QRCode.d.ts.map +1 -0
  353. package/dist/types/views/TransferToWallet/index.d.ts +2 -0
  354. package/dist/types/views/TransferToWallet/index.d.ts.map +1 -0
  355. package/dist/types/views/index.d.ts +10 -0
  356. package/dist/types/views/index.d.ts.map +1 -0
  357. package/package.json +73 -0
  358. package/src/api/data.ts +194 -0
  359. package/src/api/index.ts +1 -0
  360. package/src/components/CopyButton.tsx +32 -0
  361. package/src/components/DefaultIcon.tsx +22 -0
  362. package/src/components/NavigationHeader.tsx +57 -0
  363. package/src/components/SequenceCheckoutProvider/SequenceCheckoutProvider.tsx +363 -0
  364. package/src/components/SequenceCheckoutProvider/index.ts +1 -0
  365. package/src/constants/abi.ts +185 -0
  366. package/src/constants/index.ts +4 -0
  367. package/src/contexts/AddFundsModal.ts +25 -0
  368. package/src/contexts/CheckoutModal.ts +65 -0
  369. package/src/contexts/Navigation.ts +56 -0
  370. package/src/contexts/SelectPaymentModal.ts +50 -0
  371. package/src/contexts/SwapModal.ts +31 -0
  372. package/src/contexts/TransactionStatusModal.ts +29 -0
  373. package/src/contexts/TransferFundsModal.ts +16 -0
  374. package/src/contexts/genericContext.ts +19 -0
  375. package/src/contexts/index.ts +7 -0
  376. package/src/hooks/index.ts +13 -0
  377. package/src/hooks/useAddFundsModal.ts +7 -0
  378. package/src/hooks/useCheckoutModal.ts +7 -0
  379. package/src/hooks/useCheckoutOptionsSalesContract.ts +28 -0
  380. package/src/hooks/useCheckoutWhitelistStatus.ts +20 -0
  381. package/src/hooks/useERC1155SaleContractCheckout.ts +260 -0
  382. package/src/hooks/useMarketplaceClient.ts +49 -0
  383. package/src/hooks/useModalTheme.ts +7 -0
  384. package/src/hooks/useNavigation.ts +33 -0
  385. package/src/hooks/useSardineClientToken.ts +18 -0
  386. package/src/hooks/useSelectPaymentModal.ts +7 -0
  387. package/src/hooks/useSkipOnCloseCallback.ts +25 -0
  388. package/src/hooks/useSwapModal.ts +7 -0
  389. package/src/hooks/useTransactionStatusModal.ts +7 -0
  390. package/src/hooks/useTransferFundsModal.ts +7 -0
  391. package/src/index.ts +19 -0
  392. package/src/utils/index.ts +1 -0
  393. package/src/utils/sardine.ts +62 -0
  394. package/src/utils/sizing.ts +8 -0
  395. package/src/utils/transak.ts +72 -0
  396. package/src/views/AddFunds.tsx +59 -0
  397. package/src/views/CheckoutSelection/component/OrderSummaryItem.tsx +82 -0
  398. package/src/views/CheckoutSelection/index.tsx +207 -0
  399. package/src/views/PaymentSelection/Footer.tsx +39 -0
  400. package/src/views/PaymentSelection/OrderSummary/Price.tsx +66 -0
  401. package/src/views/PaymentSelection/OrderSummary/index.tsx +113 -0
  402. package/src/views/PaymentSelection/PayWithCreditCard/PaymentProviderOption.tsx +38 -0
  403. package/src/views/PaymentSelection/PayWithCreditCard/index.tsx +177 -0
  404. package/src/views/PaymentSelection/PayWithCreditCard/providers/SardineLogo.tsx +11 -0
  405. package/src/views/PaymentSelection/PayWithCrypto/index.tsx +250 -0
  406. package/src/views/PaymentSelection/TransferFunds.tsx +98 -0
  407. package/src/views/PaymentSelection/index.tsx +484 -0
  408. package/src/views/PendingCreditCardTransaction.tsx +429 -0
  409. package/src/views/Swap/index.tsx +289 -0
  410. package/src/views/TransactionError.tsx +39 -0
  411. package/src/views/TransactionStatus/index.tsx +337 -0
  412. package/src/views/TransactionSuccess.tsx +51 -0
  413. package/src/views/TransferToWallet/CopyButton.tsx +37 -0
  414. package/src/views/TransferToWallet/QRCode.tsx +25 -0
  415. package/src/views/TransferToWallet/index.tsx +36 -0
  416. package/src/views/index.ts +9 -0
package/src/index.ts ADDED
@@ -0,0 +1,19 @@
1
+ // Provider
2
+ export { SequenceCheckoutProvider } from './components/SequenceCheckoutProvider'
3
+
4
+ // Hooks
5
+ export { useCheckoutModal } from './hooks/useCheckoutModal'
6
+ export { useAddFundsModal } from './hooks/useAddFundsModal'
7
+ export { useSelectPaymentModal } from './hooks/useSelectPaymentModal'
8
+ export { useTransferFundsModal } from './hooks/useTransferFundsModal'
9
+ export { useCheckoutWhitelistStatus } from './hooks/useCheckoutWhitelistStatus'
10
+ export { useSwapModal } from './hooks/useSwapModal'
11
+ export { useERC1155SaleContractCheckout, useERC1155SaleContractPaymentModal } from './hooks/useERC1155SaleContractCheckout'
12
+
13
+ export { type CheckoutSettings } from './contexts/CheckoutModal'
14
+ export { type AddFundsSettings } from './contexts/AddFundsModal'
15
+ export { type SelectPaymentSettings } from './contexts/SelectPaymentModal'
16
+ export { type SwapModalSettings } from './contexts/SwapModal'
17
+
18
+ // utils
19
+ export { fetchTransakSupportedCountries, getTransakLink } from './utils/transak'
@@ -0,0 +1 @@
1
+ export * from './sardine'
@@ -0,0 +1,62 @@
1
+ import { DEBUG } from '@0xsequence/connect'
2
+ import { ChainId, networks } from '@0xsequence/network'
3
+ import { zeroAddress } from 'viem'
4
+
5
+ export interface CheckSardineWhitelistStatusArgs {
6
+ chainId: number
7
+ marketplaceAddress: string
8
+ }
9
+
10
+ export const checkSardineWhitelistStatus = async (
11
+ { chainId, marketplaceAddress }: CheckSardineWhitelistStatusArgs,
12
+ projectAccessKey: string
13
+ ) => {
14
+ const referenceId = `sequence-kit-sardine-whitelist-check`
15
+
16
+ const accessKey = DEBUG ? '17xhjK4yjRf1fr0am8kgKfICAAAAAAAAA' : projectAccessKey
17
+
18
+ const url = DEBUG
19
+ ? 'https://dev-api.sequence.app/rpc/API/SardineGetNFTCheckoutToken'
20
+ : 'https://api.sequence.app/rpc/API/SardineGetNFTCheckoutToken'
21
+
22
+ const res = await fetch(url, {
23
+ method: 'POST',
24
+ headers: {
25
+ 'Content-Type': 'application/json',
26
+ 'X-Access-Key': `${accessKey || ''}`
27
+ },
28
+ body: JSON.stringify({
29
+ params: {
30
+ referenceId,
31
+ expiresIn: 3600,
32
+ paymentMethodTypeConfig: {
33
+ enabled: ['us_debit', 'us_credit', 'international_debit', 'international_credit', 'ach'],
34
+ default: 'us_debit'
35
+ },
36
+ name: 'whitelist-check',
37
+ imageUrl: 'https://www.sequence.market/images/placeholder.png',
38
+ network: networks[chainId as ChainId].name,
39
+ recipientAddress: zeroAddress,
40
+ contractAddress: marketplaceAddress,
41
+ platform: 'calldata_execution',
42
+ executionType: 'smart_contract',
43
+ blockchainNftId: '42',
44
+ quantity: 1,
45
+ decimals: 0,
46
+ tokenAmount: '1000000',
47
+ tokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
48
+ tokenSymbol: 'USDC',
49
+ tokenDecimals: 6,
50
+ callData: '0x1'
51
+ }
52
+ })
53
+ })
54
+
55
+ const resJson = await res.json()
56
+
57
+ if (typeof resJson?.cause === 'string' && resJson.cause.includes('It must be allow listed')) {
58
+ return false
59
+ }
60
+
61
+ return true
62
+ }
@@ -0,0 +1,8 @@
1
+ import { CARD_HEIGHT, CARD_HEIGHT_MOBILE } from '../constants'
2
+
3
+ export const getCardHeight = (isMobile: boolean) => {
4
+ if (isMobile) {
5
+ return CARD_HEIGHT_MOBILE
6
+ }
7
+ return CARD_HEIGHT
8
+ }
@@ -0,0 +1,72 @@
1
+ import { DEBUG } from '@0xsequence/connect'
2
+
3
+ import { AddFundsSettings } from '../contexts'
4
+
5
+ export const TRANSAK_API_KEY = '5911d9ec-46b5-48fa-a755-d59a715ff0cf'
6
+ export const TRANSAK_API_KEY_STAGING = 'c20f2a0e-fe6a-4133-8fa7-77e9f84edf98'
7
+ export const TRANSAK_PROXY_ADDRESS = '0x4a598b7ec77b1562ad0df7dc64a162695ce4c78a'
8
+
9
+ const TransakUrlProd = 'https://global.transak.com'
10
+ const TransakUrlSandbox = 'https://global-stg.transak.com'
11
+
12
+ export const getTransakLink = (addFundsSettings: AddFundsSettings) => {
13
+ const defaultNetworks =
14
+ 'ethereum,mainnet,arbitrum,optimism,polygon,polygonzkevm,zksync,base,bnb,oasys,astar,avaxcchain,immutablezkevm'
15
+
16
+ interface Options {
17
+ [index: string]: string | undefined
18
+ }
19
+
20
+ const url = new URL(DEBUG ? TransakUrlSandbox : TransakUrlProd)
21
+ const apiKey = DEBUG ? TRANSAK_API_KEY_STAGING : TRANSAK_API_KEY
22
+
23
+ const options: Options = {
24
+ apiKey: apiKey,
25
+ referrerDomain: window.location.origin,
26
+ walletAddress: addFundsSettings.walletAddress,
27
+ fiatAmount: addFundsSettings?.fiatAmount,
28
+ fiatCurrency: addFundsSettings?.fiatCurrency,
29
+ disableWalletAddressForm: 'true',
30
+ defaultFiatAmount: addFundsSettings?.defaultFiatAmount || '50',
31
+ defaultCryptoCurrency: addFundsSettings?.defaultCryptoCurrency || 'USDC',
32
+ cryptoCurrencyList: addFundsSettings?.cryptoCurrencyList,
33
+ networks: addFundsSettings?.networks || defaultNetworks
34
+ }
35
+
36
+ Object.keys(options).forEach(k => {
37
+ const option = options[k]
38
+ if (option) {
39
+ url.searchParams.append(k, option)
40
+ }
41
+ })
42
+
43
+ return url.href
44
+ }
45
+
46
+ interface CountriesResult {
47
+ response: Country[]
48
+ }
49
+
50
+ interface Country {
51
+ alpha2: string
52
+ alpha3: string
53
+ isAllowed: boolean
54
+ isLightKycAllowed: boolean
55
+ name: string
56
+ supportedDocuments: string[]
57
+ currencyCode: string
58
+ partners: Partner[]
59
+ }
60
+
61
+ interface Partner {
62
+ name: string
63
+ isCardPayment: boolean
64
+ currencyCode: string
65
+ }
66
+
67
+ export const fetchTransakSupportedCountries = async () => {
68
+ const res = await fetch('https://api.transak.com/api/v2/countries')
69
+ const data = (await res.json()) as CountriesResult
70
+
71
+ return data.response.filter(x => x.isAllowed).map(x => x.alpha2)
72
+ }
@@ -0,0 +1,59 @@
1
+ import React, { useEffect } from 'react'
2
+
3
+ import { HEADER_HEIGHT } from '../constants'
4
+ import { useAddFundsModal } from '../hooks'
5
+ import { getTransakLink } from '../utils/transak'
6
+
7
+ const IframeId = 'sequenceOnRamp'
8
+ const EventTypeOrderCreated = 'TRANSAK_ORDER_CREATED'
9
+ const EventTypeOrderSuccessful = 'TRANSAK_ORDER_SUCCESSFUL'
10
+ const EventTypeOrderFailed = 'TRANSAK_ORDER_FAILED'
11
+
12
+ export const AddFundsContent = () => {
13
+ const { addFundsSettings } = useAddFundsModal()
14
+
15
+ if (!addFundsSettings) {
16
+ return
17
+ }
18
+
19
+ useEffect(() => {
20
+ window.addEventListener('message', messageReceived)
21
+ return () => {
22
+ window.removeEventListener('message', messageReceived)
23
+ }
24
+ }, [])
25
+
26
+ function messageReceived(message: MessageEvent<any>) {
27
+ const element = document.getElementById(IframeId) as HTMLIFrameElement | undefined
28
+ const iframe = element?.contentWindow
29
+ if (message.source === iframe) {
30
+ const data = message.data
31
+ const eventType = data.eventType as string
32
+ switch (eventType) {
33
+ case EventTypeOrderCreated:
34
+ addFundsSettings?.onOrderCreated?.(data)
35
+ break
36
+ case EventTypeOrderSuccessful:
37
+ addFundsSettings?.onOrderSuccessful?.(data)
38
+ break
39
+ case EventTypeOrderFailed:
40
+ addFundsSettings?.onOrderFailed?.(data)
41
+ break
42
+ }
43
+ }
44
+ }
45
+
46
+ const link = getTransakLink(addFundsSettings)
47
+
48
+ return (
49
+ <div
50
+ className="flex items-center w-full px-4 pb-4 h-full"
51
+ style={{
52
+ height: '600px',
53
+ paddingTop: HEADER_HEIGHT
54
+ }}
55
+ >
56
+ <iframe className="w-full h-full border-0" id={IframeId} src={link} />
57
+ </div>
58
+ )
59
+ }
@@ -0,0 +1,82 @@
1
+ import { formatDisplay } from '@0xsequence/connect'
2
+ import { Card, Image, Text, Skeleton, TokenImage, NetworkImage } from '@0xsequence/design-system'
3
+ import { useGetTokenMetadata, useGetContractInfo } from '@0xsequence/react-hooks'
4
+ import { formatUnits } from 'viem'
5
+
6
+ interface OrderSummaryItem {
7
+ contractAddress: string
8
+ tokenId: string
9
+ quantityRaw: string
10
+ chainId: number
11
+ }
12
+
13
+ export const OrderSummaryItem = ({ contractAddress, tokenId, quantityRaw, chainId }: OrderSummaryItem) => {
14
+ const { data: tokenMetadata, isPending: isPendingTokenMetadata } = useGetTokenMetadata({
15
+ chainID: String(chainId),
16
+ contractAddress,
17
+ tokenIDs: [tokenId]
18
+ })
19
+ const { data: contractInfo, isPending: isPendingContractInfo } = useGetContractInfo({
20
+ chainID: String(chainId),
21
+ contractAddress
22
+ })
23
+ const isPending = isPendingTokenMetadata || isPendingContractInfo
24
+
25
+ if (isPending) {
26
+ return <OrderSummarySkeleton />
27
+ }
28
+
29
+ const { name = 'unknown', image, decimals = 0 } = tokenMetadata?.[0] ?? {}
30
+
31
+ const { logoURI: collectionLogoURI, name: collectionName = 'Unknown Collection' } = contractInfo || {}
32
+
33
+ const balanceFormatted = formatUnits(BigInt(quantityRaw), decimals)
34
+
35
+ return (
36
+ <Card className="flex flex-row items-start justify-between">
37
+ <div className="flex flex-row items-center justify-center gap-2">
38
+ <div className="flex aspect-square h-full justify-center items-center" style={{ width: '80px' }}>
39
+ <Image className="rounded-xl" src={image} style={{ maxWidth: '80px', height: '80px', objectFit: 'cover' }} />
40
+ </div>
41
+ <div className="flex flex-col items-start justify-center gap-2">
42
+ <div className="flex gap-1 items-center">
43
+ <TokenImage src={collectionLogoURI} size="xs" />
44
+ <Text className="ml-1" variant="small" color="secondary" fontWeight="bold">
45
+ {collectionName}
46
+ </Text>
47
+ <NetworkImage chainId={chainId} size="xs" />
48
+ </div>
49
+ <div
50
+ className="flex flex-col items-start justify-center"
51
+ style={{
52
+ width: '180px'
53
+ }}
54
+ >
55
+ <Text variant="normal" color="primary">
56
+ {name}
57
+ </Text>
58
+ <Text variant="normal" color="muted">{`#${tokenId}`}</Text>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div className="h-full">
63
+ <Text variant="small" color="muted" fontWeight="bold">{`x${formatDisplay(balanceFormatted)}`}</Text>
64
+ </div>
65
+ </Card>
66
+ )
67
+ }
68
+
69
+ export const OrderSummarySkeleton = () => {
70
+ return (
71
+ <Card className="flex flex-row items-start justify-between">
72
+ <div className="flex flex-row items-center justify-center gap-2">
73
+ <Skeleton style={{ width: '80px', height: '80px' }} />
74
+ <div className="flex flex-col items-start justify-center gap-2">
75
+ <Skeleton style={{ width: '100px', height: '14px' }} />
76
+ <Skeleton style={{ width: '180px', height: '34px' }} />
77
+ </div>
78
+ </div>
79
+ <Skeleton style={{ width: '14px', height: '14px' }} />
80
+ </Card>
81
+ )
82
+ }
@@ -0,0 +1,207 @@
1
+ import { ContractVerificationStatus, getNativeTokenInfoByChainId, compareAddress, formatDisplay } from '@0xsequence/connect'
2
+ import {
3
+ Button,
4
+ ChevronRightIcon,
5
+ Divider,
6
+ HelpIcon,
7
+ Text,
8
+ Tooltip,
9
+ PaymentsIcon,
10
+ Skeleton,
11
+ TokenImage
12
+ } from '@0xsequence/design-system'
13
+ import { useGetTokenBalancesSummary, useGetContractInfo } from '@0xsequence/react-hooks'
14
+ import { zeroAddress, formatUnits } from 'viem'
15
+ import { useAccount, useConfig } from 'wagmi'
16
+
17
+ import { HEADER_HEIGHT } from '../../constants'
18
+ import { useNavigation, useCheckoutModal } from '../../hooks'
19
+
20
+ import { OrderSummaryItem } from './component/OrderSummaryItem'
21
+
22
+ export const CheckoutSelection = () => {
23
+ const { chains } = useConfig()
24
+ const { setNavigation } = useNavigation()
25
+ const { closeCheckout, settings } = useCheckoutModal()
26
+ const { address: accountAddress } = useAccount()
27
+
28
+ const cryptoCheckoutSettings = settings?.cryptoCheckout
29
+ const creditCardCheckoutSettings = settings?.creditCardCheckout
30
+ const displayCreditCardCheckout = !!creditCardCheckoutSettings
31
+ const displayCryptoCheckout = !!cryptoCheckoutSettings
32
+
33
+ const { data: contractInfoData, isLoading: isPendingContractInfo } = useGetContractInfo({
34
+ chainID: String(cryptoCheckoutSettings?.chainId || 1),
35
+ contractAddress: cryptoCheckoutSettings?.coinQuantity?.contractAddress || ''
36
+ })
37
+
38
+ const { data: balancesData, isPending: isPendingBalances } = useGetTokenBalancesSummary({
39
+ chainIds: [cryptoCheckoutSettings?.chainId || 1],
40
+ filter: {
41
+ accountAddresses: accountAddress ? [accountAddress] : [],
42
+ contractStatus: ContractVerificationStatus.ALL,
43
+ omitNativeBalances: false
44
+ }
45
+ })
46
+
47
+ const isPending = (isPendingContractInfo || isPendingBalances) && cryptoCheckoutSettings
48
+
49
+ const isNativeToken = compareAddress(cryptoCheckoutSettings?.coinQuantity?.contractAddress || '', zeroAddress)
50
+ const nativeTokenInfo = getNativeTokenInfoByChainId(cryptoCheckoutSettings?.chainId || 1, chains)
51
+
52
+ const coinDecimals = isNativeToken ? nativeTokenInfo.decimals : contractInfoData?.decimals || 0
53
+ const coinSymbol = isNativeToken ? nativeTokenInfo.symbol : contractInfoData?.symbol || 'COIN'
54
+ const coinImageUrl = isNativeToken ? nativeTokenInfo.logoURI : contractInfoData?.logoURI || ''
55
+ const coinBalance = balancesData?.find(balance =>
56
+ compareAddress(balance.contractAddress, cryptoCheckoutSettings?.coinQuantity?.contractAddress || '')
57
+ )
58
+ const userBalanceRaw = coinBalance ? coinBalance.balance : '0'
59
+ const requestedAmountRaw = cryptoCheckoutSettings?.coinQuantity?.amountRequiredRaw || '0'
60
+ const userBalance = formatUnits(BigInt(userBalanceRaw), coinDecimals)
61
+ const requestAmount = formatUnits(BigInt(requestedAmountRaw), coinDecimals)
62
+ const isInsufficientBalance = BigInt(userBalanceRaw) < BigInt(requestedAmountRaw)
63
+
64
+ const orderSummaryItems = settings?.orderSummaryItems || []
65
+
66
+ const chainId = settings?.cryptoCheckout?.chainId || settings?.creditCardCheckout?.chainId || 1
67
+
68
+ const triggerSardineTransaction = async () => {
69
+ console.log('trigger sardine transaction')
70
+
71
+ if (settings?.creditCardCheckout) {
72
+ setNavigation({
73
+ location: 'transaction-pending',
74
+ params: {
75
+ creditCardCheckout: settings.creditCardCheckout
76
+ }
77
+ })
78
+ }
79
+ }
80
+
81
+ const onClickPayWithCard = () => {
82
+ if (settings?.creditCardCheckout) {
83
+ triggerSardineTransaction()
84
+ } else {
85
+ setNavigation({
86
+ location: 'transaction-form'
87
+ })
88
+ }
89
+ }
90
+
91
+ const onClickPayWithCrypto = () => {
92
+ console.log('trigger transaction')
93
+ settings?.cryptoCheckout?.triggerTransaction?.()
94
+ closeCheckout()
95
+ }
96
+
97
+ return (
98
+ <div
99
+ className="flex px-5 pb-5 flex-col gap-3"
100
+ style={{
101
+ marginTop: HEADER_HEIGHT
102
+ }}
103
+ >
104
+ {orderSummaryItems.length > 0 && (
105
+ <>
106
+ <div className="flex flex-row gap-2 items-center">
107
+ <Text variant="normal" color="muted">
108
+ Order summary
109
+ </Text>
110
+ <Tooltip
111
+ vOffset={-2}
112
+ side="bottom"
113
+ message={
114
+ <>
115
+ Please note that NFTs are digital assets
116
+ <br /> ,and as such, cannot be delivered physically.
117
+ </>
118
+ }
119
+ >
120
+ <div className="w-5 h-5">
121
+ <HelpIcon className="text-secondary" />
122
+ </div>
123
+ </Tooltip>
124
+ </div>
125
+ <div className="flex flex-col gap-2">
126
+ {orderSummaryItems.map((orderSummaryItem, index) => {
127
+ return <OrderSummaryItem key={index} {...orderSummaryItem} chainId={chainId} />
128
+ })}
129
+ </div>
130
+ <div className="mt-2">
131
+ <Divider
132
+ className="text-background-secondary"
133
+ style={{
134
+ margin: '0px'
135
+ }}
136
+ />
137
+ </div>
138
+ </>
139
+ )}
140
+ {displayCryptoCheckout && (
141
+ <div className="flex justify-between items-center">
142
+ <Text variant="normal" color="muted">
143
+ Total
144
+ </Text>
145
+ {isPending ? (
146
+ <Skeleton style={{ width: '100px', height: '17px' }} />
147
+ ) : (
148
+ <div className="flex flex-row gap-1 items-center">
149
+ <TokenImage src={coinImageUrl} size="xs" />
150
+ <Text variant="normal" color="primary">
151
+ {`${formatDisplay(requestAmount)} ${coinSymbol}`}
152
+ </Text>
153
+ </div>
154
+ )}
155
+ </div>
156
+ )}
157
+ <div className="flex flex-col items-center justify-center gap-2">
158
+ {displayCreditCardCheckout && (
159
+ <Button
160
+ className="w-full h-14 rounded-xl"
161
+ leftIcon={PaymentsIcon}
162
+ variant="primary"
163
+ label="Pay with credit card"
164
+ rightIcon={ChevronRightIcon}
165
+ onClick={onClickPayWithCard}
166
+ />
167
+ )}
168
+ {displayCryptoCheckout && !isInsufficientBalance && !isPending && (
169
+ <Button
170
+ className="w-full h-14 rounded-xl"
171
+ leftIcon={() => <TokenImage src={coinImageUrl} size="sm" />}
172
+ variant="primary"
173
+ label={`Pay with ${coinSymbol}`}
174
+ rightIcon={ChevronRightIcon}
175
+ onClick={onClickPayWithCrypto}
176
+ />
177
+ )}
178
+ {displayCryptoCheckout && (isInsufficientBalance || isPending) && (
179
+ <Button
180
+ className="w-full"
181
+ shape="square"
182
+ variant="glass"
183
+ label={
184
+ <div className="flex items-center justify-center gap-2">
185
+ <TokenImage src={coinImageUrl} size="sm" />
186
+ <Text>Insufficient ${coinSymbol}</Text>
187
+ </div>
188
+ }
189
+ onClick={onClickPayWithCrypto}
190
+ disabled
191
+ />
192
+ )}
193
+ </div>
194
+ {displayCryptoCheckout && (
195
+ <div className="flex w-full justify-end">
196
+ {isPending ? (
197
+ <Skeleton style={{ width: '102px', height: '14px' }} />
198
+ ) : (
199
+ <Text variant="small" fontWeight="bold" color="muted">
200
+ Balance: {`${formatDisplay(userBalance)} ${coinSymbol}`}
201
+ </Text>
202
+ )}
203
+ </div>
204
+ )}
205
+ </div>
206
+ )
207
+ }
@@ -0,0 +1,39 @@
1
+ import { Text } from '@0xsequence/design-system'
2
+
3
+ import { useSelectPaymentModal } from '../../hooks'
4
+
5
+ export const Footer = () => {
6
+ const { selectPaymentSettings } = useSelectPaymentModal()
7
+
8
+ return (
9
+ <div className="flex pb-6 pt-5 mt-1 w-full justify-center items-center flex-col">
10
+ {selectPaymentSettings?.copyrightText && (
11
+ <Text color="muted" variant="normal" fontWeight="bold">
12
+ {selectPaymentSettings.copyrightText}
13
+ </Text>
14
+ )}
15
+ <div className="flex gap-4 justify-center items-center">
16
+ <a
17
+ className="no-underline cursor-pointer"
18
+ href="https://support.sequence.xyz/en/"
19
+ rel="noopener noreferrer"
20
+ target="_blank"
21
+ >
22
+ <Text color="muted" variant="normal" fontWeight="bold">
23
+ Help
24
+ </Text>
25
+ </a>
26
+ <a className="no-underline cursor-pointer" href="https://sequence.xyz/privacy" rel="noopener noreferrer" target="_blank">
27
+ <Text color="muted" variant="normal" fontWeight="bold">
28
+ Privacy Policy
29
+ </Text>
30
+ </a>
31
+ <a className="no-underline cursor-pointer" href="https://sequence.xyz/terms" rel="noopener noreferrer" target="_blank">
32
+ <Text color="muted" variant="normal" fontWeight="bold">
33
+ Terms of Service
34
+ </Text>
35
+ </a>
36
+ </div>
37
+ </div>
38
+ )
39
+ }
@@ -0,0 +1,66 @@
1
+ import { Spinner, Text, TokenImage } from '@0xsequence/design-system'
2
+ import { findSupportedNetwork } from '@0xsequence/network'
3
+ import { useGetCoinPrices, useGetContractInfo } from '@0xsequence/react-hooks'
4
+ import { formatUnits } from 'viem'
5
+
6
+ import { useSelectPaymentModal } from '../../../hooks'
7
+
8
+ export const Price = () => {
9
+ const { selectPaymentSettings } = useSelectPaymentModal()
10
+ const price = selectPaymentSettings!.price
11
+ const chain = selectPaymentSettings!.chain
12
+ const network = findSupportedNetwork(chain)
13
+ const chainId = network?.chainId || 137
14
+ const currencyAddress = selectPaymentSettings!.currencyAddress
15
+ const { data: currencyInfo, isLoading: isLoadingCurrencyInfo } = useGetContractInfo({
16
+ chainID: String(chainId),
17
+ contractAddress: currencyAddress
18
+ })
19
+ const fullPrice = BigInt(price)
20
+ const { data: coinPricesData, isLoading: isLoadingCoinPrice } = useGetCoinPrices([
21
+ {
22
+ chainId,
23
+ contractAddress: currencyAddress
24
+ }
25
+ ])
26
+
27
+ const isLoading = isLoadingCurrencyInfo || isLoadingCoinPrice
28
+
29
+ if (isLoading) {
30
+ return (
31
+ <div className="flex my-2 px-6 justify-center items-center w-full h-12">
32
+ <Spinner />
33
+ </div>
34
+ )
35
+ }
36
+
37
+ const tokenLogo = currencyInfo?.logoURI
38
+ const tokenSymbol = currencyInfo?.symbol
39
+ const tokenDecimals = currencyInfo?.decimals
40
+ const formattedPrice = formatUnits(fullPrice, tokenDecimals || 0)
41
+ const fiatConversionRate = coinPricesData?.[0].price?.value || 0
42
+
43
+ const priceFiat = fiatConversionRate * Number(formattedPrice)
44
+ const priceFiatFormatted = `~${Number(priceFiat).toFixed(2)} USD`
45
+
46
+ return (
47
+ <div className="flex px-6 justify-between items-center w-full h-12">
48
+ <div>
49
+ <Text variant="small" color="muted" fontWeight="medium">
50
+ Price
51
+ </Text>
52
+ </div>
53
+ <div className="flex flex-col justify-between items-end">
54
+ <div className="flex gap-2 items-center">
55
+ <TokenImage size="sm" src={tokenLogo} />
56
+ <Text variant="large" fontWeight="bold" color="primary">{`${formattedPrice} ${tokenSymbol}`}</Text>
57
+ </div>
58
+ <div>
59
+ <Text variant="normal" fontWeight="medium" color="muted">
60
+ {priceFiatFormatted}
61
+ </Text>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ )
66
+ }