@b3dotfun/sdk 0.1.66 → 0.1.68

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 (365) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +9 -0
  2. package/dist/cjs/anyspend/react/components/AnySpend.js +40 -11
  3. package/dist/cjs/anyspend/react/components/AnySpendBondKit.d.ts +6 -1
  4. package/dist/cjs/anyspend/react/components/AnySpendBondKit.js +2 -2
  5. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.d.ts +7 -1
  6. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.js +2 -2
  7. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  8. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  9. package/dist/cjs/anyspend/react/components/AnySpendCustom.d.ts +9 -0
  10. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +16 -14
  11. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +9 -0
  12. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +40 -10
  13. package/dist/cjs/anyspend/react/components/AnySpendDeposit.d.ts +10 -1
  14. package/dist/cjs/anyspend/react/components/AnySpendDeposit.js +5 -4
  15. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.d.ts +7 -1
  16. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.js +2 -2
  17. package/dist/cjs/anyspend/react/components/AnySpendNFT.d.ts +7 -1
  18. package/dist/cjs/anyspend/react/components/AnySpendNFT.js +2 -2
  19. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.d.ts +7 -1
  20. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +2 -2
  21. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +7 -1
  22. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.js +2 -2
  23. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.d.ts +7 -1
  24. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  25. package/dist/cjs/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +7 -1
  26. package/dist/cjs/anyspend/react/components/AnySpendStakeUpsideExactIn.js +2 -2
  27. package/dist/cjs/anyspend/react/components/AnySpendTournament.d.ts +11 -0
  28. package/dist/cjs/anyspend/react/components/AnySpendTournament.js +2 -2
  29. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +7 -1
  30. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +2 -2
  31. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.d.ts +5 -1
  32. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.js +2 -2
  33. package/dist/cjs/anyspend/react/components/checkout/AddressForm.d.ts +9 -0
  34. package/dist/cjs/anyspend/react/components/checkout/AddressForm.js +14 -0
  35. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.d.ts +117 -0
  36. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.js +158 -0
  37. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +81 -0
  38. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckoutTrigger.js +61 -0
  39. package/dist/cjs/anyspend/react/components/checkout/CartItemRow.d.ts +8 -0
  40. package/dist/cjs/anyspend/react/components/checkout/CartItemRow.js +9 -0
  41. package/dist/cjs/anyspend/react/components/checkout/CartSummary.d.ts +30 -0
  42. package/dist/cjs/anyspend/react/components/checkout/CartSummary.js +20 -0
  43. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +32 -0
  44. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.js +27 -0
  45. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormField.d.ts +10 -0
  46. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormField.js +31 -0
  47. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +39 -0
  48. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.js +75 -0
  49. package/dist/cjs/anyspend/react/components/checkout/CheckoutLayout.d.ts +10 -0
  50. package/dist/cjs/anyspend/react/components/checkout/CheckoutLayout.js +13 -0
  51. package/dist/cjs/anyspend/react/components/checkout/CheckoutOrderStatus.d.ts +28 -0
  52. package/dist/cjs/anyspend/react/components/checkout/CheckoutOrderStatus.js +65 -0
  53. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +31 -0
  54. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.js +64 -0
  55. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.d.ts +10 -0
  56. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.js +31 -0
  57. package/dist/cjs/anyspend/react/components/checkout/CoinbaseCheckoutPanel.d.ts +20 -0
  58. package/dist/cjs/anyspend/react/components/checkout/CoinbaseCheckoutPanel.js +170 -0
  59. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.d.ts +23 -0
  60. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.js +324 -0
  61. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.d.ts +12 -0
  62. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.js +62 -0
  63. package/dist/cjs/anyspend/react/components/checkout/FiatCheckoutPanel.d.ts +20 -0
  64. package/dist/cjs/anyspend/react/components/checkout/FiatCheckoutPanel.js +269 -0
  65. package/dist/cjs/anyspend/react/components/checkout/PoweredByBranding.d.ts +8 -0
  66. package/dist/cjs/anyspend/react/components/checkout/PoweredByBranding.js +9 -0
  67. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.d.ts +11 -0
  68. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.js +20 -0
  69. package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.js +19 -5
  70. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +1 -1
  71. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethodDisplay.js +1 -1
  72. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.js +1 -1
  73. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +4 -4
  74. package/dist/cjs/anyspend/react/components/common/OrderStatus.d.ts +2 -1
  75. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +93 -19
  76. package/dist/cjs/anyspend/react/components/common/PanelOnramp.js +4 -4
  77. package/dist/cjs/anyspend/react/components/common/PaySection.js +1 -1
  78. package/dist/cjs/anyspend/react/components/common/StepProgress.d.ts +5 -1
  79. package/dist/cjs/anyspend/react/components/common/StepProgress.js +6 -11
  80. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +1 -1
  81. package/dist/cjs/anyspend/react/components/common/TransferResultScreen.js +5 -1
  82. package/dist/cjs/anyspend/react/components/context/AnySpendCustomizationContext.d.ts +16 -0
  83. package/dist/cjs/anyspend/react/components/context/AnySpendCustomizationContext.js +92 -0
  84. package/dist/cjs/anyspend/react/components/icons/AnimatedCheckmark.d.ts +23 -0
  85. package/dist/cjs/anyspend/react/components/icons/AnimatedCheckmark.js +71 -0
  86. package/dist/cjs/anyspend/react/components/index.d.ts +8 -1
  87. package/dist/cjs/anyspend/react/components/index.js +10 -1
  88. package/dist/cjs/anyspend/react/components/types/classes.d.ts +50 -0
  89. package/dist/cjs/anyspend/react/components/types/customization.d.ts +75 -0
  90. package/dist/cjs/anyspend/react/components/types/customization.js +2 -0
  91. package/dist/cjs/anyspend/react/hooks/useAnyspendCreateOnrampOrder.d.ts +8 -2
  92. package/dist/cjs/anyspend/react/hooks/useAnyspendCreateOrder.d.ts +8 -2
  93. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +15 -3
  94. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +3 -2
  95. package/dist/cjs/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +9 -2
  96. package/dist/cjs/anyspend/react/hooks/useCreateDepositFirstOrder.js +1 -0
  97. package/dist/cjs/anyspend/services/anyspend.d.ts +1 -0
  98. package/dist/cjs/anyspend/services/anyspend.js +17 -2
  99. package/dist/cjs/anyspend/types/forms.d.ts +92 -0
  100. package/dist/cjs/anyspend/types/forms.js +8 -0
  101. package/dist/cjs/anyspend/utils/format.js +12 -3
  102. package/dist/cjs/app.shared.js +8 -0
  103. package/dist/cjs/global-account/react/components/B3DynamicModal.js +9 -3
  104. package/dist/cjs/global-account/react/components/WalletImage/WalletImage.d.ts +1 -1
  105. package/dist/cjs/global-account/react/components/ui/command.d.ts +7 -7
  106. package/dist/cjs/global-account/react/components/ui/dialog.d.ts +2 -0
  107. package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
  108. package/dist/cjs/global-account/react/components/ui/drawer.d.ts +3 -1
  109. package/dist/cjs/global-account/react/components/ui/drawer.js +1 -1
  110. package/dist/cjs/global-account/react/hooks/useAuth.d.ts +1 -1
  111. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +1 -1
  112. package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +4 -4
  113. package/dist/cjs/global-account/react/hooks/useUser.d.ts +1 -1
  114. package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +1 -1
  115. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +53 -1
  116. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +2 -2
  117. package/dist/cjs/shared/constants/chains/supported.d.ts +3 -3
  118. package/dist/cjs/shared/utils/number.d.ts +5 -0
  119. package/dist/cjs/shared/utils/number.js +13 -0
  120. package/dist/esm/anyspend/react/components/AnySpend.d.ts +9 -0
  121. package/dist/esm/anyspend/react/components/AnySpend.js +41 -12
  122. package/dist/esm/anyspend/react/components/AnySpendBondKit.d.ts +6 -1
  123. package/dist/esm/anyspend/react/components/AnySpendBondKit.js +2 -2
  124. package/dist/esm/anyspend/react/components/AnySpendBuySpin.d.ts +7 -1
  125. package/dist/esm/anyspend/react/components/AnySpendBuySpin.js +2 -2
  126. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  127. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  128. package/dist/esm/anyspend/react/components/AnySpendCustom.d.ts +9 -0
  129. package/dist/esm/anyspend/react/components/AnySpendCustom.js +16 -14
  130. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +9 -0
  131. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +42 -12
  132. package/dist/esm/anyspend/react/components/AnySpendDeposit.d.ts +10 -1
  133. package/dist/esm/anyspend/react/components/AnySpendDeposit.js +5 -4
  134. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.d.ts +7 -1
  135. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.js +2 -2
  136. package/dist/esm/anyspend/react/components/AnySpendNFT.d.ts +7 -1
  137. package/dist/esm/anyspend/react/components/AnySpendNFT.js +2 -2
  138. package/dist/esm/anyspend/react/components/AnySpendStakeB3.d.ts +7 -1
  139. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +2 -2
  140. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +7 -1
  141. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.js +2 -2
  142. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.d.ts +7 -1
  143. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  144. package/dist/esm/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +7 -1
  145. package/dist/esm/anyspend/react/components/AnySpendStakeUpsideExactIn.js +2 -2
  146. package/dist/esm/anyspend/react/components/AnySpendTournament.d.ts +11 -0
  147. package/dist/esm/anyspend/react/components/AnySpendTournament.js +2 -2
  148. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +7 -1
  149. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -2
  150. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.d.ts +5 -1
  151. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.js +2 -2
  152. package/dist/esm/anyspend/react/components/checkout/AddressForm.d.ts +9 -0
  153. package/dist/esm/anyspend/react/components/checkout/AddressForm.js +11 -0
  154. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.d.ts +117 -0
  155. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.js +155 -0
  156. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +81 -0
  157. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckoutTrigger.js +58 -0
  158. package/dist/esm/anyspend/react/components/checkout/CartItemRow.d.ts +8 -0
  159. package/dist/esm/anyspend/react/components/checkout/CartItemRow.js +6 -0
  160. package/dist/esm/anyspend/react/components/checkout/CartSummary.d.ts +30 -0
  161. package/dist/esm/anyspend/react/components/checkout/CartSummary.js +17 -0
  162. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +32 -0
  163. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.js +24 -0
  164. package/dist/esm/anyspend/react/components/checkout/CheckoutFormField.d.ts +10 -0
  165. package/dist/esm/anyspend/react/components/checkout/CheckoutFormField.js +28 -0
  166. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +39 -0
  167. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.js +72 -0
  168. package/dist/esm/anyspend/react/components/checkout/CheckoutLayout.d.ts +10 -0
  169. package/dist/esm/anyspend/react/components/checkout/CheckoutLayout.js +10 -0
  170. package/dist/esm/anyspend/react/components/checkout/CheckoutOrderStatus.d.ts +28 -0
  171. package/dist/esm/anyspend/react/components/checkout/CheckoutOrderStatus.js +62 -0
  172. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +31 -0
  173. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.js +61 -0
  174. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.d.ts +10 -0
  175. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.js +28 -0
  176. package/dist/esm/anyspend/react/components/checkout/CoinbaseCheckoutPanel.d.ts +20 -0
  177. package/dist/esm/anyspend/react/components/checkout/CoinbaseCheckoutPanel.js +167 -0
  178. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.d.ts +23 -0
  179. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.js +321 -0
  180. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.d.ts +12 -0
  181. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.js +59 -0
  182. package/dist/esm/anyspend/react/components/checkout/FiatCheckoutPanel.d.ts +20 -0
  183. package/dist/esm/anyspend/react/components/checkout/FiatCheckoutPanel.js +266 -0
  184. package/dist/esm/anyspend/react/components/checkout/PoweredByBranding.d.ts +8 -0
  185. package/dist/esm/anyspend/react/components/checkout/PoweredByBranding.js +6 -0
  186. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.d.ts +11 -0
  187. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.js +17 -0
  188. package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.js +19 -5
  189. package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +1 -1
  190. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethodDisplay.js +1 -1
  191. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.js +1 -1
  192. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +4 -4
  193. package/dist/esm/anyspend/react/components/common/OrderStatus.d.ts +2 -1
  194. package/dist/esm/anyspend/react/components/common/OrderStatus.js +96 -22
  195. package/dist/esm/anyspend/react/components/common/PanelOnramp.js +4 -4
  196. package/dist/esm/anyspend/react/components/common/PaySection.js +1 -1
  197. package/dist/esm/anyspend/react/components/common/StepProgress.d.ts +5 -1
  198. package/dist/esm/anyspend/react/components/common/StepProgress.js +6 -11
  199. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +1 -1
  200. package/dist/esm/anyspend/react/components/common/TransferResultScreen.js +7 -3
  201. package/dist/esm/anyspend/react/components/context/AnySpendCustomizationContext.d.ts +16 -0
  202. package/dist/esm/anyspend/react/components/context/AnySpendCustomizationContext.js +88 -0
  203. package/dist/esm/anyspend/react/components/icons/AnimatedCheckmark.d.ts +23 -0
  204. package/dist/esm/anyspend/react/components/icons/AnimatedCheckmark.js +68 -0
  205. package/dist/esm/anyspend/react/components/index.d.ts +8 -1
  206. package/dist/esm/anyspend/react/components/index.js +5 -0
  207. package/dist/esm/anyspend/react/components/types/classes.d.ts +50 -0
  208. package/dist/esm/anyspend/react/components/types/customization.d.ts +75 -0
  209. package/dist/esm/anyspend/react/components/types/customization.js +1 -0
  210. package/dist/esm/anyspend/react/hooks/useAnyspendCreateOnrampOrder.d.ts +8 -2
  211. package/dist/esm/anyspend/react/hooks/useAnyspendCreateOrder.d.ts +8 -2
  212. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +15 -3
  213. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +3 -2
  214. package/dist/esm/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +9 -2
  215. package/dist/esm/anyspend/react/hooks/useCreateDepositFirstOrder.js +1 -0
  216. package/dist/esm/anyspend/services/anyspend.d.ts +1 -0
  217. package/dist/esm/anyspend/services/anyspend.js +17 -2
  218. package/dist/esm/anyspend/types/forms.d.ts +92 -0
  219. package/dist/esm/anyspend/types/forms.js +7 -0
  220. package/dist/esm/anyspend/utils/format.js +12 -3
  221. package/dist/esm/app.shared.js +8 -0
  222. package/dist/esm/global-account/react/components/B3DynamicModal.js +9 -3
  223. package/dist/esm/global-account/react/components/WalletImage/WalletImage.d.ts +1 -1
  224. package/dist/esm/global-account/react/components/ui/command.d.ts +7 -7
  225. package/dist/esm/global-account/react/components/ui/dialog.d.ts +2 -0
  226. package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
  227. package/dist/esm/global-account/react/components/ui/drawer.d.ts +3 -1
  228. package/dist/esm/global-account/react/components/ui/drawer.js +1 -1
  229. package/dist/esm/global-account/react/hooks/useAuth.d.ts +1 -1
  230. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +1 -1
  231. package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +4 -4
  232. package/dist/esm/global-account/react/hooks/useUser.d.ts +1 -1
  233. package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +1 -1
  234. package/dist/esm/global-account/react/stores/useModalStore.d.ts +53 -1
  235. package/dist/esm/shared/constants/chains/b3Chain.d.ts +2 -2
  236. package/dist/esm/shared/constants/chains/supported.d.ts +3 -3
  237. package/dist/esm/shared/utils/number.d.ts +5 -0
  238. package/dist/esm/shared/utils/number.js +12 -0
  239. package/dist/styles/index.css +1 -1
  240. package/dist/types/anyspend/react/components/AnySpend.d.ts +9 -0
  241. package/dist/types/anyspend/react/components/AnySpendBondKit.d.ts +6 -1
  242. package/dist/types/anyspend/react/components/AnySpendBuySpin.d.ts +7 -1
  243. package/dist/types/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  244. package/dist/types/anyspend/react/components/AnySpendCustom.d.ts +9 -0
  245. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +9 -0
  246. package/dist/types/anyspend/react/components/AnySpendDeposit.d.ts +10 -1
  247. package/dist/types/anyspend/react/components/AnySpendDepositUpside.d.ts +7 -1
  248. package/dist/types/anyspend/react/components/AnySpendNFT.d.ts +7 -1
  249. package/dist/types/anyspend/react/components/AnySpendStakeB3.d.ts +7 -1
  250. package/dist/types/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +7 -1
  251. package/dist/types/anyspend/react/components/AnySpendStakeUpside.d.ts +7 -1
  252. package/dist/types/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +7 -1
  253. package/dist/types/anyspend/react/components/AnySpendTournament.d.ts +11 -0
  254. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +7 -1
  255. package/dist/types/anyspend/react/components/AnyspendSignatureMint.d.ts +5 -1
  256. package/dist/types/anyspend/react/components/checkout/AddressForm.d.ts +9 -0
  257. package/dist/types/anyspend/react/components/checkout/AnySpendCheckout.d.ts +117 -0
  258. package/dist/types/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +81 -0
  259. package/dist/types/anyspend/react/components/checkout/CartItemRow.d.ts +8 -0
  260. package/dist/types/anyspend/react/components/checkout/CartSummary.d.ts +30 -0
  261. package/dist/types/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +32 -0
  262. package/dist/types/anyspend/react/components/checkout/CheckoutFormField.d.ts +10 -0
  263. package/dist/types/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +39 -0
  264. package/dist/types/anyspend/react/components/checkout/CheckoutLayout.d.ts +10 -0
  265. package/dist/types/anyspend/react/components/checkout/CheckoutOrderStatus.d.ts +28 -0
  266. package/dist/types/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +31 -0
  267. package/dist/types/anyspend/react/components/checkout/CheckoutSuccess.d.ts +10 -0
  268. package/dist/types/anyspend/react/components/checkout/CoinbaseCheckoutPanel.d.ts +20 -0
  269. package/dist/types/anyspend/react/components/checkout/CryptoPayPanel.d.ts +23 -0
  270. package/dist/types/anyspend/react/components/checkout/DiscountCodeInput.d.ts +12 -0
  271. package/dist/types/anyspend/react/components/checkout/FiatCheckoutPanel.d.ts +20 -0
  272. package/dist/types/anyspend/react/components/checkout/PoweredByBranding.d.ts +8 -0
  273. package/dist/types/anyspend/react/components/checkout/ShippingSelector.d.ts +11 -0
  274. package/dist/types/anyspend/react/components/common/OrderStatus.d.ts +2 -1
  275. package/dist/types/anyspend/react/components/common/StepProgress.d.ts +5 -1
  276. package/dist/types/anyspend/react/components/context/AnySpendCustomizationContext.d.ts +16 -0
  277. package/dist/types/anyspend/react/components/icons/AnimatedCheckmark.d.ts +23 -0
  278. package/dist/types/anyspend/react/components/index.d.ts +8 -1
  279. package/dist/types/anyspend/react/components/types/classes.d.ts +50 -0
  280. package/dist/types/anyspend/react/components/types/customization.d.ts +75 -0
  281. package/dist/types/anyspend/react/hooks/useAnyspendCreateOnrampOrder.d.ts +8 -2
  282. package/dist/types/anyspend/react/hooks/useAnyspendCreateOrder.d.ts +8 -2
  283. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +15 -3
  284. package/dist/types/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +9 -2
  285. package/dist/types/anyspend/services/anyspend.d.ts +1 -0
  286. package/dist/types/anyspend/types/forms.d.ts +92 -0
  287. package/dist/types/global-account/react/components/WalletImage/WalletImage.d.ts +1 -1
  288. package/dist/types/global-account/react/components/ui/command.d.ts +7 -7
  289. package/dist/types/global-account/react/components/ui/dialog.d.ts +2 -0
  290. package/dist/types/global-account/react/components/ui/drawer.d.ts +3 -1
  291. package/dist/types/global-account/react/hooks/useAuth.d.ts +1 -1
  292. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +1 -1
  293. package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +4 -4
  294. package/dist/types/global-account/react/hooks/useUser.d.ts +1 -1
  295. package/dist/types/global-account/react/hooks/useUserQuery.d.ts +1 -1
  296. package/dist/types/global-account/react/stores/useModalStore.d.ts +53 -1
  297. package/dist/types/shared/constants/chains/b3Chain.d.ts +2 -2
  298. package/dist/types/shared/constants/chains/supported.d.ts +3 -3
  299. package/dist/types/shared/utils/number.d.ts +5 -0
  300. package/package.json +1 -1
  301. package/src/anyspend/react/components/AnySpend.tsx +84 -37
  302. package/src/anyspend/react/components/AnySpendBondKit.tsx +12 -1
  303. package/src/anyspend/react/components/AnySpendBuySpin.tsx +14 -0
  304. package/src/anyspend/react/components/AnySpendCollectorClubPurchase.tsx +10 -0
  305. package/src/anyspend/react/components/AnySpendCustom.tsx +38 -20
  306. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +82 -35
  307. package/src/anyspend/react/components/AnySpendDeposit.tsx +24 -2
  308. package/src/anyspend/react/components/AnySpendDepositUpside.tsx +14 -0
  309. package/src/anyspend/react/components/AnySpendNFT.tsx +14 -0
  310. package/src/anyspend/react/components/AnySpendStakeB3.tsx +14 -0
  311. package/src/anyspend/react/components/AnySpendStakeB3ExactIn.tsx +14 -0
  312. package/src/anyspend/react/components/AnySpendStakeUpside.tsx +14 -0
  313. package/src/anyspend/react/components/AnySpendStakeUpsideExactIn.tsx +14 -0
  314. package/src/anyspend/react/components/AnySpendTournament.tsx +19 -0
  315. package/src/anyspend/react/components/AnyspendDepositHype.tsx +14 -0
  316. package/src/anyspend/react/components/AnyspendSignatureMint.tsx +10 -0
  317. package/src/anyspend/react/components/checkout/AddressForm.tsx +98 -0
  318. package/src/anyspend/react/components/checkout/AnySpendCheckout.tsx +398 -0
  319. package/src/anyspend/react/components/checkout/AnySpendCheckoutTrigger.tsx +221 -0
  320. package/src/anyspend/react/components/checkout/CartItemRow.tsx +58 -0
  321. package/src/anyspend/react/components/checkout/CartSummary.tsx +158 -0
  322. package/src/anyspend/react/components/checkout/CheckoutCartPanel.tsx +98 -0
  323. package/src/anyspend/react/components/checkout/CheckoutFormField.tsx +129 -0
  324. package/src/anyspend/react/components/checkout/CheckoutFormPanel.tsx +241 -0
  325. package/src/anyspend/react/components/checkout/CheckoutLayout.tsx +52 -0
  326. package/src/anyspend/react/components/checkout/CheckoutOrderStatus.tsx +224 -0
  327. package/src/anyspend/react/components/checkout/CheckoutPaymentPanel.tsx +341 -0
  328. package/src/anyspend/react/components/checkout/CheckoutSuccess.tsx +110 -0
  329. package/src/anyspend/react/components/checkout/CoinbaseCheckoutPanel.tsx +279 -0
  330. package/src/anyspend/react/components/checkout/CryptoPayPanel.tsx +630 -0
  331. package/src/anyspend/react/components/checkout/DiscountCodeInput.tsx +127 -0
  332. package/src/anyspend/react/components/checkout/FiatCheckoutPanel.tsx +612 -0
  333. package/src/anyspend/react/components/checkout/PoweredByBranding.tsx +42 -0
  334. package/src/anyspend/react/components/checkout/ShippingSelector.tsx +73 -0
  335. package/src/anyspend/react/components/common/ConnectWalletPayment.tsx +29 -7
  336. package/src/anyspend/react/components/common/CryptoPaySection.tsx +1 -1
  337. package/src/anyspend/react/components/common/CryptoPaymentMethodDisplay.tsx +1 -1
  338. package/src/anyspend/react/components/common/CryptoReceiveSection.tsx +2 -2
  339. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +5 -5
  340. package/src/anyspend/react/components/common/OrderStatus.tsx +140 -34
  341. package/src/anyspend/react/components/common/PanelOnramp.tsx +9 -9
  342. package/src/anyspend/react/components/common/PaySection.tsx +1 -1
  343. package/src/anyspend/react/components/common/StepProgress.tsx +40 -52
  344. package/src/anyspend/react/components/common/TokenBalance.tsx +0 -12
  345. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +1 -9
  346. package/src/anyspend/react/components/common/TransferResultScreen.tsx +19 -11
  347. package/src/anyspend/react/components/context/AnySpendCustomizationContext.tsx +124 -0
  348. package/src/anyspend/react/components/icons/AnimatedCheckmark.tsx +119 -0
  349. package/src/anyspend/react/components/index.ts +33 -0
  350. package/src/anyspend/react/components/types/classes.ts +70 -0
  351. package/src/anyspend/react/components/types/customization.ts +99 -0
  352. package/src/anyspend/react/hooks/useAnyspendCreateOnrampOrder.ts +3 -2
  353. package/src/anyspend/react/hooks/useAnyspendCreateOrder.ts +3 -2
  354. package/src/anyspend/react/hooks/useAnyspendFlow.ts +5 -1
  355. package/src/anyspend/react/hooks/useCreateDepositFirstOrder.ts +5 -2
  356. package/src/anyspend/services/anyspend.ts +19 -2
  357. package/src/anyspend/types/forms.ts +97 -0
  358. package/src/anyspend/utils/format.ts +12 -3
  359. package/src/app.shared.ts +11 -0
  360. package/src/global-account/react/components/B3DynamicModal.tsx +13 -4
  361. package/src/global-account/react/components/ui/dialog.tsx +17 -8
  362. package/src/global-account/react/components/ui/drawer.tsx +2 -2
  363. package/src/global-account/react/stores/useModalStore.ts +52 -1
  364. package/src/shared/utils/number.ts +12 -0
  365. package/src/styles/index.css +48 -2
@@ -1,4 +1,5 @@
1
1
  import { components } from "../../../anyspend/types/api";
2
+ import type { AnySpendContent, AnySpendSlots, AnySpendTheme } from "./types/customization";
2
3
  type AnySpendTournamentProps = {
3
4
  mode?: "modal" | "page";
4
5
  action: "join";
@@ -10,6 +11,11 @@ type AnySpendTournamentProps = {
10
11
  tournamentEntryToken: components["schemas"]["Token"];
11
12
  tournamentEntryFee: string;
12
13
  onSuccess?: () => void;
14
+ /** Optional sender (payer) address — pre-fills token balances when the user address is known ahead of time */
15
+ senderAddress?: string;
16
+ slots?: AnySpendSlots;
17
+ content?: AnySpendContent;
18
+ theme?: AnySpendTheme;
13
19
  } | {
14
20
  mode?: "modal" | "page";
15
21
  action: "fund";
@@ -20,6 +26,11 @@ type AnySpendTournamentProps = {
20
26
  tournamentFundToken: components["schemas"]["Token"];
21
27
  tournamentFundAmount: string;
22
28
  onSuccess?: () => void;
29
+ /** Optional sender (payer) address — pre-fills token balances when the user address is known ahead of time */
30
+ senderAddress?: string;
31
+ slots?: AnySpendSlots;
32
+ content?: AnySpendContent;
33
+ theme?: AnySpendTheme;
23
34
  };
24
35
  export declare function AnySpendTournament(props: AnySpendTournamentProps): import("react/jsx-runtime").JSX.Element;
25
36
  export {};
@@ -4,7 +4,7 @@ import { formatDisplayNumber, formatTokenAmount } from "../../../shared/utils/nu
4
4
  import { AnimatePresence } from "motion/react";
5
5
  import { AnySpendCustom } from "./AnySpendCustom.js";
6
6
  export function AnySpendTournament(props) {
7
- const { mode = "modal", action, loadOrder, tournamentChainId, tournamentContractAddress, tournamentMetadata, onSuccess, } = props;
7
+ const { mode = "modal", action, loadOrder, tournamentChainId, tournamentContractAddress, tournamentMetadata, onSuccess, senderAddress, slots, content, theme, } = props;
8
8
  const dstToken = action === "join" ? props.tournamentEntryToken : props.tournamentFundToken;
9
9
  const dstAmount = action === "join" ? props.tournamentEntryFee : props.tournamentFundAmount;
10
10
  const header = ({ anyspendPrice, isLoadingAnyspendPrice, }) => (_jsxs(_Fragment, { children: [_jsx("div", { className: "z-10 mt-[-100px] flex h-[270px] w-full items-end justify-center", children: _jsx("img", { src: "https://cdn.b3.fun/tournament-play.svg", alt: "Tournament Play", className: "h-[200px] w-[360px] object-cover object-center" }) }), _jsxs("div", { className: "from-b3-react-background to-as-on-surface-1 mt-[-100px] w-full rounded-t-lg bg-gradient-to-t", children: [_jsx("div", { className: "h-[100px] w-full" }), _jsxs("div", { className: "flex w-full flex-col items-center gap-1 p-6 pt-0", children: [_jsxs("span", { className: "font-sf-rounded text-center text-lg font-semibold", children: [action === "join" ? "Pay entry fee to join " : "Pay to fund ", " ", tournamentMetadata.name] }), _jsx("div", { className: "mt-2 flex w-fit items-center gap-1", children: anyspendPrice ? (_jsx(AnimatePresence, { mode: "wait", children: _jsxs("div", { className: cn("text-as-primary group flex items-center text-2xl font-semibold transition-all", {
@@ -13,5 +13,5 @@ export function AnySpendTournament(props) {
13
13
  return (_jsx(AnySpendCustom, { loadOrder: loadOrder, mode: mode, recipientAddress: action === "join" ? props.joinFor : undefined, orderType: action === "join" ? "join_tournament" : "fund_tournament", dstChainId: tournamentChainId, dstToken: dstToken, dstAmount: dstAmount, contractAddress: tournamentContractAddress, encodedData: "0x", metadata: {
14
14
  type: action === "join" ? "join_tournament" : "fund_tournament",
15
15
  tournament: tournamentMetadata,
16
- }, header: header, onSuccess: onSuccess, showRecipient: action === "join" }));
16
+ }, header: header, onSuccess: onSuccess, showRecipient: action === "join", senderAddress: senderAddress, slots: slots, content: content, theme: theme }));
17
17
  }
@@ -1,4 +1,5 @@
1
1
  import { components } from "../../../anyspend/types/api";
2
+ import type { AnySpendContent, AnySpendSlots, AnySpendTheme } from "./types/customization";
2
3
  export declare const HYPE_TOKEN_DETAILS: {
3
4
  SYMBOL: string;
4
5
  LOGO_URI: string;
@@ -26,5 +27,10 @@ export interface AnySpendDepositHypeProps {
26
27
  returnToHomeUrl?: string;
27
28
  /** Custom label for recipient display (e.g., "OBSN Telegram Bot") */
28
29
  customRecipientLabel?: string;
30
+ /** Optional sender (payer) address — pre-fills token balances when the user address is known ahead of time */
31
+ senderAddress?: string;
32
+ slots?: AnySpendSlots;
33
+ content?: AnySpendContent;
34
+ theme?: AnySpendTheme;
29
35
  }
30
- export declare function AnySpendDepositHype({ loadOrder, mode, recipientAddress, paymentType, sourceTokenAddress, sourceTokenChainId, onSuccess, onOpenCustomModal, mainFooter, onTokenSelect, customUsdInputValues, preferEoa, }: AnySpendDepositHypeProps): import("react/jsx-runtime").JSX.Element | null;
36
+ export declare function AnySpendDepositHype({ loadOrder, mode, recipientAddress, paymentType, sourceTokenAddress, sourceTokenChainId, onSuccess, onOpenCustomModal, mainFooter, onTokenSelect, customUsdInputValues, preferEoa, senderAddress, slots, content, theme, }: AnySpendDepositHypeProps): import("react/jsx-runtime").JSX.Element | null;
@@ -6,7 +6,7 @@ export const HYPE_TOKEN_DETAILS = {
6
6
  SYMBOL: "HYPE",
7
7
  LOGO_URI: "https://cdn.hypeduel.com/hypes-coin.svg",
8
8
  };
9
- export function AnySpendDepositHype({ loadOrder, mode = "modal", recipientAddress, paymentType = "crypto", sourceTokenAddress, sourceTokenChainId, onSuccess, onOpenCustomModal, mainFooter, onTokenSelect, customUsdInputValues, preferEoa, }) {
9
+ export function AnySpendDepositHype({ loadOrder, mode = "modal", recipientAddress, paymentType = "crypto", sourceTokenAddress, sourceTokenChainId, onSuccess, onOpenCustomModal, mainFooter, onTokenSelect, customUsdInputValues, preferEoa, senderAddress, slots, content, theme, }) {
10
10
  if (!recipientAddress)
11
11
  return null;
12
12
  const header = () => (_jsx("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: _jsx("div", { children: _jsx("h1", { className: "text-as-primary text-xl font-bold", children: paymentType === "crypto" ? "Deposit Crypto" : "Fund with Fiat" }) }) }));
@@ -19,5 +19,5 @@ export function AnySpendDepositHype({ loadOrder, mode = "modal", recipientAddres
19
19
  logoURI: HYPE_TOKEN_DETAILS.LOGO_URI,
20
20
  },
21
21
  };
22
- return (_jsx(AnySpendCustomExactIn, { loadOrder: loadOrder, mode: mode, recipientAddress: recipientAddress, paymentType: paymentType, sourceTokenAddress: sourceTokenAddress, sourceTokenChainId: sourceTokenChainId, destinationToken: hypeToken, destinationChainId: base.id, orderType: "hype_duel", minDestinationAmount: 10, header: header, onSuccess: onSuccess, onOpenCustomModal: onOpenCustomModal, mainFooter: mainFooter, onTokenSelect: onTokenSelect, customUsdInputValues: customUsdInputValues, preferEoa: preferEoa }));
22
+ return (_jsx(AnySpendCustomExactIn, { loadOrder: loadOrder, mode: mode, recipientAddress: recipientAddress, paymentType: paymentType, sourceTokenAddress: sourceTokenAddress, sourceTokenChainId: sourceTokenChainId, destinationToken: hypeToken, destinationChainId: base.id, orderType: "hype_duel", minDestinationAmount: 10, header: header, onSuccess: onSuccess, onOpenCustomModal: onOpenCustomModal, mainFooter: mainFooter, onTokenSelect: onTokenSelect, customUsdInputValues: customUsdInputValues, preferEoa: preferEoa, senderAddress: senderAddress, slots: slots, content: content, theme: theme }));
23
23
  }
@@ -1,8 +1,12 @@
1
1
  import { GenerateSigMintResponse } from "../../types/signatureMint";
2
- export declare function AnyspendSignatureMint({ loadOrder, mode, signatureData, imageUrl, onSuccess, }: {
2
+ import type { AnySpendContent, AnySpendSlots, AnySpendTheme } from "./types/customization";
3
+ export declare function AnyspendSignatureMint({ loadOrder, mode, signatureData, imageUrl, onSuccess, slots, content, theme, }: {
3
4
  loadOrder?: string;
4
5
  mode?: "modal" | "page";
5
6
  signatureData: GenerateSigMintResponse;
6
7
  imageUrl?: string;
7
8
  onSuccess?: (txHash?: string) => void;
9
+ slots?: AnySpendSlots;
10
+ content?: AnySpendContent;
11
+ theme?: AnySpendTheme;
8
12
  }): import("react/jsx-runtime").JSX.Element;
@@ -35,7 +35,7 @@ function generateEncodedDataForSignatureMint(signatureData) {
35
35
  });
36
36
  return encodedData;
37
37
  }
38
- export function AnyspendSignatureMint({ loadOrder, mode = "modal", signatureData, imageUrl, onSuccess, }) {
38
+ export function AnyspendSignatureMint({ loadOrder, mode = "modal", signatureData, imageUrl, onSuccess, slots, content, theme, }) {
39
39
  // Get token data
40
40
  const { data: tokenData, isError: isTokenError, isLoading, } = useTokenData(signatureData.collection.chainId, signatureData.collection.signatureRequestBody?.currency);
41
41
  // Convert token data to AnySpend Token type
@@ -68,5 +68,5 @@ export function AnyspendSignatureMint({ loadOrder, mode = "modal", signatureData
68
68
  const price = parseEther(signatureData.payload.price?.toString() || "0");
69
69
  return (_jsx(AnySpendCustom, { loadOrder: loadOrder, mode: mode, recipientAddress: signatureData.payload.to, orderType: "custom", dstChainId: signatureData.collection.chainId, dstToken: dstToken, dstAmount: price.toString(), contractAddress: signatureData.collection.address || "", encodedData: encodedData, metadata: {
70
70
  action: "Signature Mint",
71
- }, header: header, onSuccess: onSuccess, showRecipient: true }));
71
+ }, header: header, onSuccess: onSuccess, showRecipient: true, slots: slots, content: content, theme: theme }));
72
72
  }
@@ -0,0 +1,9 @@
1
+ import type { AddressData } from "../../../types/forms";
2
+ interface AddressFormProps {
3
+ value: AddressData;
4
+ onChange: (address: AddressData) => void;
5
+ required?: boolean;
6
+ className?: string;
7
+ }
8
+ export declare function AddressForm({ value, onChange, required, className }: AddressFormProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../../../../shared/utils/cn.js";
4
+ const inputBaseClass = "w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 dark:border-neutral-600 dark:bg-neutral-800 dark:text-gray-100 dark:placeholder:text-gray-500 dark:focus:border-blue-400";
5
+ const labelClass = "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300";
6
+ export function AddressForm({ value, onChange, required, className }) {
7
+ const update = (field, val) => {
8
+ onChange({ ...value, [field]: val });
9
+ };
10
+ return (_jsxs("div", { className: cn("anyspend-address-form space-y-3", className), children: [_jsxs("div", { className: "anyspend-address-street", children: [_jsxs("label", { className: cn("anyspend-form-label", labelClass), children: ["Street Address", required && _jsx("span", { className: "ml-0.5 text-red-500", children: "*" })] }), _jsx("input", { type: "text", value: value.street || "", onChange: e => update("street", e.target.value), placeholder: "123 Main Street", required: required, className: cn("anyspend-form-input", inputBaseClass) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "anyspend-address-city", children: [_jsxs("label", { className: cn("anyspend-form-label", labelClass), children: ["City", required && _jsx("span", { className: "ml-0.5 text-red-500", children: "*" })] }), _jsx("input", { type: "text", value: value.city || "", onChange: e => update("city", e.target.value), placeholder: "City", required: required, className: cn("anyspend-form-input", inputBaseClass) })] }), _jsxs("div", { className: "anyspend-address-state", children: [_jsxs("label", { className: cn("anyspend-form-label", labelClass), children: ["State / Province", required && _jsx("span", { className: "ml-0.5 text-red-500", children: "*" })] }), _jsx("input", { type: "text", value: value.state || "", onChange: e => update("state", e.target.value), placeholder: "State", required: required, className: cn("anyspend-form-input", inputBaseClass) })] })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "anyspend-address-zip", children: [_jsxs("label", { className: cn("anyspend-form-label", labelClass), children: ["Zip / Postal Code", required && _jsx("span", { className: "ml-0.5 text-red-500", children: "*" })] }), _jsx("input", { type: "text", value: value.zip || "", onChange: e => update("zip", e.target.value), placeholder: "12345", required: required, className: cn("anyspend-form-input", inputBaseClass) })] }), _jsxs("div", { className: "anyspend-address-country", children: [_jsxs("label", { className: cn("anyspend-form-label", labelClass), children: ["Country", required && _jsx("span", { className: "ml-0.5 text-red-500", children: "*" })] }), _jsx("input", { type: "text", value: value.country || "", onChange: e => update("country", e.target.value), placeholder: "Country", required: required, className: cn("anyspend-form-input", inputBaseClass) })] })] })] }));
11
+ }
@@ -0,0 +1,117 @@
1
+ import { type ReactNode } from "react";
2
+ import { type PaymentMethod } from "./CheckoutPaymentPanel";
3
+ export type { AnySpendCheckoutClasses } from "../types/classes";
4
+ import type { AnySpendCheckoutClasses } from "../types/classes";
5
+ import type { AnySpendContent, AnySpendSlots, AnySpendTheme } from "../types/customization";
6
+ import type { CheckoutFormSchema, CheckoutFormComponentProps, ShippingOption, DiscountResult, AddressData } from "../../../types/forms";
7
+ export type { CheckoutFormSchema, CheckoutFormComponentProps, ShippingOption, DiscountResult, AddressData };
8
+ export interface CheckoutItem {
9
+ id?: string;
10
+ name: string;
11
+ description?: string;
12
+ imageUrl?: string;
13
+ /** Amount in wei (smallest unit of destination token) */
14
+ amount: string;
15
+ quantity: number;
16
+ /** Custom metadata displayed as label: value pairs (e.g., { "Size": "Large", "Color": "Blue" }) */
17
+ metadata?: Record<string, string>;
18
+ }
19
+ export interface CheckoutSummaryLine {
20
+ /** Display label (e.g., "Platform Fee", "Service Charge") */
21
+ label: string;
22
+ /** Amount in token's smallest unit (wei). Negative values shown as deductions. */
23
+ amount: string;
24
+ /** Optional description or note */
25
+ description?: string;
26
+ }
27
+ export interface AnySpendCheckoutProps {
28
+ /** Display mode */
29
+ mode?: "page" | "embedded";
30
+ /** The recipient address */
31
+ recipientAddress: string;
32
+ /** The destination token address */
33
+ destinationTokenAddress: string;
34
+ /** The destination chain ID */
35
+ destinationTokenChainId: number;
36
+ /** Line items */
37
+ items: CheckoutItem[];
38
+ /** Override computed total */
39
+ totalAmount?: string;
40
+ /** Organization name */
41
+ organizationName?: string;
42
+ /** Organization logo URL */
43
+ organizationLogo?: string;
44
+ /** Theme color (hex) */
45
+ themeColor?: string;
46
+ /** Custom button text */
47
+ buttonText?: string;
48
+ /** Checkout session ID (used by pay link backend to track sessions) */
49
+ checkoutSessionId?: string;
50
+ /** Called on successful payment */
51
+ onSuccess?: (result: {
52
+ txHash?: string;
53
+ orderId?: string;
54
+ }) => void;
55
+ /** Called on payment error */
56
+ onError?: (error: Error) => void;
57
+ /** URL to redirect to after payment */
58
+ returnUrl?: string;
59
+ /** Label for the return button */
60
+ returnLabel?: string;
61
+ /** Custom class names */
62
+ classes?: AnySpendCheckoutClasses;
63
+ /** Custom footer for the order summary. Pass `null` to hide, or a ReactNode to replace the default. */
64
+ footer?: ReactNode | null;
65
+ /** Which payment method to expand initially. Defaults to none (all collapsed). */
66
+ defaultPaymentMethod?: PaymentMethod;
67
+ /** Optional sender (payer) address — pre-fills token balances in the crypto panel */
68
+ senderAddress?: string;
69
+ /** Render function overrides for replaceable UI elements */
70
+ slots?: AnySpendSlots;
71
+ /** String or ReactNode overrides for text/messages */
72
+ content?: AnySpendContent;
73
+ /** Structured color/theme configuration */
74
+ theme?: AnySpendTheme;
75
+ /** Show the points row in the order status summary. Defaults to false. */
76
+ showPoints?: boolean;
77
+ /** Show the order ID row in the order status summary. Defaults to false. */
78
+ showOrderId?: boolean;
79
+ /** Shipping cost. String = amount in wei. Object = amount + custom label. */
80
+ shipping?: string | {
81
+ amount: string;
82
+ label?: string;
83
+ };
84
+ /** Tax amount. String = amount in wei. Object = amount + custom label + optional rate display. */
85
+ tax?: string | {
86
+ amount: string;
87
+ label?: string;
88
+ rate?: string;
89
+ };
90
+ /** Discount amount (displayed as negative). String = amount in wei. Object = amount + label + optional code. */
91
+ discount?: string | {
92
+ amount: string;
93
+ label?: string;
94
+ code?: string;
95
+ };
96
+ /** Additional summary line items (fees, tips, etc.) */
97
+ summaryLines?: CheckoutSummaryLine[];
98
+ /** JSON form schema defining fields to collect from the customer */
99
+ formSchema?: CheckoutFormSchema | null;
100
+ /** Custom React component to render as the checkout form */
101
+ formComponent?: React.ComponentType<CheckoutFormComponentProps>;
102
+ /** Called when form data changes */
103
+ onFormSubmit?: (data: Record<string, unknown>) => void;
104
+ /** Shipping options to display */
105
+ shippingOptions?: ShippingOption[] | null;
106
+ /** Whether to collect a shipping address */
107
+ collectShippingAddress?: boolean;
108
+ /** Called when shipping option changes */
109
+ onShippingChange?: (option: ShippingOption) => void;
110
+ /** Enable discount code input */
111
+ enableDiscountCode?: boolean;
112
+ /** Called when discount is applied */
113
+ onDiscountApplied?: (result: DiscountResult) => void;
114
+ /** Async function to validate a discount code. Returns DiscountResult. */
115
+ validateDiscount?: (code: string) => Promise<DiscountResult>;
116
+ }
117
+ export declare function AnySpendCheckout({ mode, recipientAddress, destinationTokenAddress, destinationTokenChainId, items, totalAmount: totalAmountOverride, organizationName, organizationLogo, themeColor, buttonText, checkoutSessionId, onSuccess, onError, returnUrl, returnLabel, classes, footer, defaultPaymentMethod, senderAddress, slots, content, theme, showPoints, showOrderId, shipping: shippingProp, tax, discount: discountProp, summaryLines, formSchema, formComponent, onFormSubmit, shippingOptions, collectShippingAddress, onShippingChange: onShippingChangeProp, enableDiscountCode, onDiscountApplied: onDiscountAppliedProp, validateDiscount, }: AnySpendCheckoutProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,155 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useTokenData } from "../../../../global-account/react/index.js";
4
+ import { USDC_BASE } from "../../../../anyspend/constants/index.js";
5
+ import { formatUnits, safeBigInt } from "../../../../shared/utils/number.js";
6
+ import { useCallback, useMemo, useState } from "react";
7
+ import { useAnyspendQuote } from "../../hooks/useAnyspendQuote.js";
8
+ import { AnySpendFingerprintWrapper, getFingerprintConfig } from "../AnySpendFingerprintWrapper.js";
9
+ import { CheckoutCartPanel } from "./CheckoutCartPanel.js";
10
+ import { CheckoutFormPanel } from "./CheckoutFormPanel.js";
11
+ import { CheckoutLayout } from "./CheckoutLayout.js";
12
+ import { CheckoutPaymentPanel } from "./CheckoutPaymentPanel.js";
13
+ import { AnySpendCustomizationProvider } from "../context/AnySpendCustomizationContext.js";
14
+ const emptyAddress = { street: "", city: "", state: "", zip: "", country: "" };
15
+ export function AnySpendCheckout({ mode = "page", recipientAddress, destinationTokenAddress, destinationTokenChainId, items, totalAmount: totalAmountOverride, organizationName, organizationLogo, themeColor, buttonText = "Pay", checkoutSessionId, onSuccess, onError, returnUrl, returnLabel, classes, footer, defaultPaymentMethod, senderAddress, slots, content, theme, showPoints, showOrderId, shipping: shippingProp, tax, discount: discountProp, summaryLines,
16
+ // New form props
17
+ formSchema, formComponent, onFormSubmit,
18
+ // New shipping props
19
+ shippingOptions, collectShippingAddress, onShippingChange: onShippingChangeProp,
20
+ // New discount props
21
+ enableDiscountCode, onDiscountApplied: onDiscountAppliedProp, validateDiscount, }) {
22
+ // ===== Form state =====
23
+ const [formData, setFormData] = useState({});
24
+ const [selectedShipping, setSelectedShipping] = useState(null);
25
+ const [appliedDiscount, setAppliedDiscount] = useState(null);
26
+ const [shippingAddress, setShippingAddress] = useState(emptyAddress);
27
+ const handleFormDataChange = useCallback((data) => {
28
+ setFormData(data);
29
+ onFormSubmit?.(data);
30
+ }, [onFormSubmit]);
31
+ const handleShippingChange = useCallback((option) => {
32
+ setSelectedShipping(option);
33
+ onShippingChangeProp?.(option);
34
+ }, [onShippingChangeProp]);
35
+ const handleDiscountApplied = useCallback((result) => {
36
+ setAppliedDiscount(result);
37
+ onDiscountAppliedProp?.(result);
38
+ }, [onDiscountAppliedProp]);
39
+ const handleDiscountRemoved = useCallback(() => {
40
+ setAppliedDiscount(null);
41
+ }, []);
42
+ // Merge static shipping prop with dynamic shipping selection
43
+ const effectiveShipping = useMemo(() => {
44
+ if (selectedShipping) {
45
+ return { amount: selectedShipping.amount, label: selectedShipping.name };
46
+ }
47
+ if (shippingProp) {
48
+ return typeof shippingProp === "string" ? { amount: shippingProp } : shippingProp;
49
+ }
50
+ return undefined;
51
+ }, [selectedShipping, shippingProp]);
52
+ // Merge static discount prop with dynamic discount
53
+ const effectiveDiscount = useMemo(() => {
54
+ if (appliedDiscount?.valid && appliedDiscount.discount_amount) {
55
+ return {
56
+ amount: appliedDiscount.discount_amount,
57
+ label: appliedDiscount.discount_type === "percentage" ? `${appliedDiscount.discount_value}% off` : "Discount",
58
+ };
59
+ }
60
+ if (discountProp) {
61
+ return typeof discountProp === "string" ? { amount: discountProp } : discountProp;
62
+ }
63
+ return undefined;
64
+ }, [appliedDiscount, discountProp]);
65
+ // Compute total from items + adjustments (including dynamic shipping/discount)
66
+ const computedTotal = useMemo(() => {
67
+ if (totalAmountOverride)
68
+ return totalAmountOverride;
69
+ let total = BigInt(0);
70
+ for (const item of items) {
71
+ total += safeBigInt(item.amount) * BigInt(item.quantity);
72
+ }
73
+ if (effectiveShipping?.amount)
74
+ total += safeBigInt(effectiveShipping.amount);
75
+ const taxAmt = typeof tax === "string" ? tax : tax?.amount;
76
+ if (taxAmt)
77
+ total += safeBigInt(taxAmt);
78
+ if (effectiveDiscount?.amount)
79
+ total -= safeBigInt(effectiveDiscount.amount);
80
+ if (summaryLines) {
81
+ for (const line of summaryLines)
82
+ total += safeBigInt(line.amount);
83
+ }
84
+ if (total < BigInt(0))
85
+ total = BigInt(0);
86
+ return total.toString();
87
+ }, [items, totalAmountOverride, effectiveShipping, tax, effectiveDiscount, summaryLines]);
88
+ // Get destination token metadata
89
+ const { data: tokenData } = useTokenData(destinationTokenChainId, destinationTokenAddress);
90
+ const tokenSymbol = tokenData?.symbol || "";
91
+ const tokenDecimals = tokenData?.decimals || 18;
92
+ // Resolve USD equivalent for non-stablecoin tokens (shown in cart summary)
93
+ const isStablecoin = useMemo(() => {
94
+ return [
95
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC Base
96
+ "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT Ethereum
97
+ ].some(addr => addr.toLowerCase() === destinationTokenAddress.toLowerCase());
98
+ }, [destinationTokenAddress]);
99
+ const { anyspendQuote } = useAnyspendQuote({
100
+ type: "swap",
101
+ srcChain: 8453,
102
+ dstChain: destinationTokenChainId,
103
+ srcTokenAddress: USDC_BASE.address,
104
+ dstTokenAddress: destinationTokenAddress,
105
+ tradeType: "EXACT_OUTPUT",
106
+ amount: computedTotal,
107
+ });
108
+ const usdEquivalent = useMemo(() => {
109
+ if (isStablecoin)
110
+ return null; // stablecoins already show USD-equivalent amounts
111
+ if (!anyspendQuote?.data?.currencyIn?.amount)
112
+ return null;
113
+ const raw = formatUnits(anyspendQuote.data.currencyIn.amount, USDC_BASE.decimals);
114
+ return `$${parseFloat(raw).toFixed(2)}`;
115
+ }, [isStablecoin, anyspendQuote]);
116
+ const fingerprint = getFingerprintConfig();
117
+ // Build callbackMetadata to include form data with the order
118
+ const checkoutFormMetadata = useMemo(() => {
119
+ const meta = {};
120
+ if (Object.keys(formData).length > 0)
121
+ meta.formData = formData;
122
+ if (selectedShipping)
123
+ meta.shippingOptionId = selectedShipping.id;
124
+ if (selectedShipping)
125
+ meta.shippingAmount = selectedShipping.amount;
126
+ if (shippingAddress.street)
127
+ meta.shippingAddress = shippingAddress;
128
+ if (appliedDiscount?.valid) {
129
+ meta.discountCode = appliedDiscount.discount_value;
130
+ meta.discountAmount = appliedDiscount.discount_amount;
131
+ }
132
+ // Extract common fields for customer enrichment
133
+ if (formData.email)
134
+ meta.customerEmail = formData.email;
135
+ if (formData.name)
136
+ meta.customerName = formData.name;
137
+ if (checkoutSessionId)
138
+ meta.checkoutSessionId = checkoutSessionId;
139
+ return Object.keys(meta).length > 0 ? meta : undefined;
140
+ }, [formData, selectedShipping, shippingAddress, appliedDiscount, checkoutSessionId]);
141
+ // Check if required form fields are filled
142
+ const isFormValid = useMemo(() => {
143
+ if (!formSchema)
144
+ return true;
145
+ return formSchema.fields.filter(f => f.required).every(f => formData[f.id] != null && formData[f.id] !== "");
146
+ }, [formSchema, formData]);
147
+ // Check if we have a form panel to show
148
+ const hasFormContent = (formSchema && formSchema.fields.length > 0) ||
149
+ formComponent ||
150
+ slots?.checkoutForm ||
151
+ (shippingOptions && shippingOptions.length > 0) ||
152
+ collectShippingAddress ||
153
+ enableDiscountCode;
154
+ return (_jsx(AnySpendFingerprintWrapper, { fingerprint: fingerprint, children: _jsx(AnySpendCustomizationProvider, { slots: slots, content: content, theme: theme, children: _jsx(CheckoutLayout, { mode: mode, paymentPanel: _jsxs(_Fragment, { children: [hasFormContent && (_jsxs("div", { className: "mb-6", children: [_jsx(CheckoutFormPanel, { formSchema: formSchema, formComponent: formComponent, shippingOptions: shippingOptions, collectShippingAddress: collectShippingAddress, enableDiscountCode: enableDiscountCode, validateDiscount: validateDiscount, tokenSymbol: tokenSymbol, tokenDecimals: tokenDecimals, classes: classes, formData: formData, onFormDataChange: handleFormDataChange, selectedShipping: selectedShipping, onShippingChange: handleShippingChange, appliedDiscount: appliedDiscount, onDiscountApplied: handleDiscountApplied, onDiscountRemoved: handleDiscountRemoved, shippingAddress: shippingAddress, onShippingAddressChange: setShippingAddress, checkoutFormSlot: slots?.checkoutForm }), _jsx("div", { className: "mt-6 border-t border-gray-200 dark:border-neutral-700" })] })), _jsx(CheckoutPaymentPanel, { recipientAddress: recipientAddress, destinationTokenAddress: destinationTokenAddress, destinationTokenChainId: destinationTokenChainId, totalAmount: computedTotal, buttonText: buttonText, themeColor: themeColor, returnUrl: returnUrl, returnLabel: returnLabel, onSuccess: onSuccess, onError: onError, classes: classes, defaultPaymentMethod: defaultPaymentMethod, senderAddress: senderAddress, showPoints: showPoints, showOrderId: showOrderId, callbackMetadata: checkoutFormMetadata, isFormValid: isFormValid })] }), cartPanel: _jsx(CheckoutCartPanel, { items: items, totalAmount: computedTotal, tokenSymbol: tokenSymbol, tokenDecimals: tokenDecimals, organizationName: organizationName, organizationLogo: organizationLogo, classes: classes, footer: footer, shipping: effectiveShipping, tax: typeof tax === "string" ? { amount: tax } : tax, discount: effectiveDiscount, summaryLines: summaryLines, usdEquivalent: usdEquivalent }), classes: classes }) }) }));
155
+ }
@@ -0,0 +1,81 @@
1
+ import { type ReactNode } from "react";
2
+ import type { AnySpendCheckoutClasses } from "../types/classes";
3
+ import type { AnySpendContent, AnySpendSlots, AnySpendTheme } from "../types/customization";
4
+ import type { CheckoutItem, CheckoutSummaryLine } from "./AnySpendCheckout";
5
+ import { type PaymentMethod } from "./CheckoutPaymentPanel";
6
+ export interface AnySpendCheckoutTriggerProps {
7
+ /** Payment recipient address (hex) */
8
+ recipientAddress: string;
9
+ /** Destination token address */
10
+ destinationTokenAddress: string;
11
+ /** Destination chain ID */
12
+ destinationTokenChainId: number;
13
+ /** Line items to display in the cart (optional — if omitted, only the payment panel is shown) */
14
+ items?: CheckoutItem[];
15
+ /** Total amount in wei — required when items are not provided */
16
+ totalAmount?: string;
17
+ /** Organization name */
18
+ organizationName?: string;
19
+ /** Organization logo URL */
20
+ organizationLogo?: string;
21
+ /** Theme color (hex) */
22
+ themeColor?: string;
23
+ /** Custom button text */
24
+ buttonText?: string;
25
+ /** Workflow ID to trigger on payment */
26
+ workflowId?: string;
27
+ /** Organization ID that owns the workflow */
28
+ orgId?: string;
29
+ /** Optional callback metadata merged into the order */
30
+ callbackMetadata?: {
31
+ /** Passed as trigger result inputs — accessible via {{root.result.inputs.*}} */
32
+ inputs?: Record<string, unknown>;
33
+ } & Record<string, unknown>;
34
+ /** Called on successful payment */
35
+ onSuccess?: (result: {
36
+ txHash?: string;
37
+ orderId?: string;
38
+ }) => void;
39
+ /** Called on payment error */
40
+ onError?: (error: Error) => void;
41
+ /** URL to redirect to after payment */
42
+ returnUrl?: string;
43
+ /** Label for the return button */
44
+ returnLabel?: string;
45
+ /** Custom class names */
46
+ classes?: AnySpendCheckoutClasses;
47
+ /** Display mode — set automatically when used inside B3DynamicModal */
48
+ mode?: "modal" | "page";
49
+ /** Custom footer for the order summary. Pass `null` to hide, or a ReactNode to replace the default. */
50
+ footer?: ReactNode | null;
51
+ /** Which payment method to expand initially. Defaults to none (all collapsed). */
52
+ defaultPaymentMethod?: PaymentMethod;
53
+ /** Optional sender (payer) address — pre-fills token balances in the crypto panel */
54
+ senderAddress?: string;
55
+ /** Render function overrides for replaceable UI elements */
56
+ slots?: AnySpendSlots;
57
+ /** String or ReactNode overrides for text/messages */
58
+ content?: AnySpendContent;
59
+ /** Structured color/theme configuration */
60
+ theme?: AnySpendTheme;
61
+ /** Shipping cost. String = amount in wei. Object = amount + custom label. */
62
+ shipping?: string | {
63
+ amount: string;
64
+ label?: string;
65
+ };
66
+ /** Tax amount. String = amount in wei. Object = amount + custom label + optional rate display. */
67
+ tax?: string | {
68
+ amount: string;
69
+ label?: string;
70
+ rate?: string;
71
+ };
72
+ /** Discount amount (displayed as negative). String = amount in wei. Object = amount + label + optional code. */
73
+ discount?: string | {
74
+ amount: string;
75
+ label?: string;
76
+ code?: string;
77
+ };
78
+ /** Additional summary line items (fees, tips, etc.) */
79
+ summaryLines?: CheckoutSummaryLine[];
80
+ }
81
+ export declare function AnySpendCheckoutTrigger({ recipientAddress, destinationTokenAddress, destinationTokenChainId, items, totalAmount: totalAmountOverride, organizationName, organizationLogo, themeColor, buttonText, workflowId, orgId, callbackMetadata, onSuccess, onError, returnUrl, returnLabel, classes, footer, defaultPaymentMethod, senderAddress, slots, content, theme, shipping, tax, discount, summaryLines, }: AnySpendCheckoutTriggerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useTokenData } from "../../../../global-account/react/index.js";
4
+ import { formatTokenAmount, safeBigInt } from "../../../../shared/utils/number.js";
5
+ import { cn } from "../../../../shared/utils/cn.js";
6
+ import { useMemo } from "react";
7
+ import { AnySpendFingerprintWrapper, getFingerprintConfig } from "../AnySpendFingerprintWrapper.js";
8
+ import { AnySpendCustomizationProvider } from "../context/AnySpendCustomizationContext.js";
9
+ import { CheckoutCartPanel } from "./CheckoutCartPanel.js";
10
+ import { CheckoutPaymentPanel } from "./CheckoutPaymentPanel.js";
11
+ import { PoweredByBranding } from "./PoweredByBranding.js";
12
+ export function AnySpendCheckoutTrigger({ recipientAddress, destinationTokenAddress, destinationTokenChainId, items, totalAmount: totalAmountOverride, organizationName, organizationLogo, themeColor, buttonText = "Pay", workflowId, orgId, callbackMetadata, onSuccess, onError, returnUrl, returnLabel, classes, footer, defaultPaymentMethod, senderAddress, slots, content, theme, shipping, tax, discount, summaryLines, }) {
13
+ // Merge workflowId + orgId into callbackMetadata
14
+ const mergedMetadata = useMemo(() => {
15
+ if (!workflowId && !orgId && !callbackMetadata)
16
+ return undefined;
17
+ return {
18
+ ...(workflowId ? { workflowId } : {}),
19
+ ...(orgId ? { orgId } : {}),
20
+ ...callbackMetadata,
21
+ };
22
+ }, [workflowId, orgId, callbackMetadata]);
23
+ // Compute total from items + adjustments or use override
24
+ const computedTotal = useMemo(() => {
25
+ if (totalAmountOverride)
26
+ return totalAmountOverride;
27
+ if (!items || items.length === 0)
28
+ return "0";
29
+ let total = BigInt(0);
30
+ for (const item of items) {
31
+ total += safeBigInt(item.amount) * BigInt(item.quantity);
32
+ }
33
+ const shippingAmt = typeof shipping === "string" ? shipping : shipping?.amount;
34
+ if (shippingAmt)
35
+ total += safeBigInt(shippingAmt);
36
+ const taxAmt = typeof tax === "string" ? tax : tax?.amount;
37
+ if (taxAmt)
38
+ total += safeBigInt(taxAmt);
39
+ const discountAmt = typeof discount === "string" ? discount : discount?.amount;
40
+ if (discountAmt)
41
+ total -= safeBigInt(discountAmt);
42
+ if (summaryLines) {
43
+ for (const line of summaryLines)
44
+ total += safeBigInt(line.amount);
45
+ }
46
+ if (total < BigInt(0))
47
+ total = BigInt(0);
48
+ return total.toString();
49
+ }, [items, totalAmountOverride, shipping, tax, discount, summaryLines]);
50
+ // Get destination token metadata
51
+ const { data: tokenData } = useTokenData(destinationTokenChainId, destinationTokenAddress);
52
+ const tokenSymbol = tokenData?.symbol || "";
53
+ const tokenDecimals = tokenData?.decimals || 18;
54
+ const formattedTotal = useMemo(() => formatTokenAmount(BigInt(computedTotal || "0"), tokenDecimals), [computedTotal, tokenDecimals]);
55
+ const hasItems = items && items.length > 0;
56
+ const fingerprint = getFingerprintConfig();
57
+ return (_jsx(AnySpendFingerprintWrapper, { fingerprint: fingerprint, children: _jsx(AnySpendCustomizationProvider, { slots: slots, content: content, theme: theme, children: _jsxs("div", { className: "anyspend-checkout-trigger flex flex-col", children: [hasItems && (_jsx("div", { className: "border-b border-gray-200 p-5 dark:border-neutral-700", children: _jsx(CheckoutCartPanel, { items: items, totalAmount: computedTotal, tokenSymbol: tokenSymbol, tokenDecimals: tokenDecimals, organizationName: organizationName, organizationLogo: organizationLogo, classes: classes, footer: footer, shipping: typeof shipping === "string" ? { amount: shipping } : shipping, tax: typeof tax === "string" ? { amount: tax } : tax, discount: typeof discount === "string" ? { amount: discount } : discount, summaryLines: summaryLines }) })), !hasItems && (_jsx("div", { className: "border-b border-gray-200 p-5 dark:border-neutral-700", children: _jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { className: cn("flex items-center justify-between", classes?.cartSummary), children: [_jsx("span", { className: "text-base font-semibold text-gray-900 dark:text-gray-100", children: "Total" }), _jsxs("span", { className: cn("text-base font-semibold text-gray-900 dark:text-gray-100", classes?.cartTotal), children: [formattedTotal, " ", tokenSymbol] })] }), footer === undefined ? (_jsx(PoweredByBranding, { organizationName: organizationName, organizationLogo: organizationLogo, classes: classes })) : (footer)] }) })), _jsx("div", { className: "px-2 py-3", children: _jsx(CheckoutPaymentPanel, { recipientAddress: recipientAddress, destinationTokenAddress: destinationTokenAddress, destinationTokenChainId: destinationTokenChainId, totalAmount: computedTotal, buttonText: buttonText, themeColor: themeColor, returnUrl: returnUrl, returnLabel: returnLabel, onSuccess: onSuccess, onError: onError, callbackMetadata: mergedMetadata, classes: classes, defaultPaymentMethod: defaultPaymentMethod, senderAddress: senderAddress }) })] }) }) }));
58
+ }
@@ -0,0 +1,8 @@
1
+ import type { CheckoutItem, AnySpendCheckoutClasses } from "./AnySpendCheckout";
2
+ interface CartItemRowProps {
3
+ item: CheckoutItem;
4
+ formattedPrice: string;
5
+ classes?: AnySpendCheckoutClasses;
6
+ }
7
+ export declare function CartItemRow({ item, formattedPrice, classes }: CartItemRowProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../../../../shared/utils/cn.js";
4
+ export function CartItemRow({ item, formattedPrice, classes }) {
5
+ return (_jsxs("div", { className: cn("flex items-start gap-3 py-3", classes?.cartItemRow), children: [item.imageUrl && (_jsx("div", { className: cn("h-14 w-14 shrink-0 overflow-hidden rounded-lg bg-gray-100", classes?.cartItemImage), children: _jsx("img", { src: item.imageUrl, alt: item.name, className: "h-full w-full object-cover" }) })), _jsxs("div", { className: "flex min-w-0 flex-1 items-start justify-between", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: cn("text-sm font-medium text-gray-900 dark:text-gray-100", classes?.cartItemName), children: item.name }), item.description && (_jsx("p", { className: cn("mt-0.5 line-clamp-2 text-xs text-gray-500 dark:text-gray-400", classes?.cartItemDescription), children: item.description })), item.quantity > 1 && _jsxs("p", { className: "mt-0.5 text-xs text-gray-400 dark:text-gray-500", children: ["Qty: ", item.quantity] }), item.metadata && Object.keys(item.metadata).length > 0 && (_jsx("div", { className: cn("mt-1 flex flex-wrap gap-x-3 gap-y-0.5", classes?.cartItemMetadata), children: Object.entries(item.metadata).map(([key, value]) => (_jsxs("span", { className: cn("text-xs text-gray-400 dark:text-gray-500", classes?.cartItemMetadataLabel), children: [key, ":", " ", _jsx("span", { className: cn("text-gray-600 dark:text-gray-300", classes?.cartItemMetadataValue), children: value })] }, key))) }))] }), _jsx("p", { className: cn("ml-3 text-sm font-medium text-gray-900 dark:text-gray-100", classes?.cartItemPrice), children: formattedPrice })] })] }));
6
+ }
@@ -0,0 +1,30 @@
1
+ import type { AnySpendCheckoutClasses } from "./AnySpendCheckout";
2
+ import type { CheckoutSummaryLine } from "./AnySpendCheckout";
3
+ interface CartSummaryProps {
4
+ /** Formatted total (final amount after all adjustments) */
5
+ total: string;
6
+ tokenSymbol?: string;
7
+ classes?: AnySpendCheckoutClasses;
8
+ /** Formatted subtotal (sum of items only — shown when adjustments exist) */
9
+ subtotal?: string;
10
+ tokenDecimals?: number;
11
+ shipping?: {
12
+ amount: string;
13
+ label?: string;
14
+ };
15
+ tax?: {
16
+ amount: string;
17
+ label?: string;
18
+ rate?: string;
19
+ };
20
+ discount?: {
21
+ amount: string;
22
+ label?: string;
23
+ code?: string;
24
+ };
25
+ summaryLines?: CheckoutSummaryLine[];
26
+ /** Formatted USD equivalent (e.g. "$5.56") — shown for non-stablecoin tokens */
27
+ usdEquivalent?: string | null;
28
+ }
29
+ export declare function CartSummary({ total, tokenSymbol, classes, subtotal, tokenDecimals, shipping, tax, discount, summaryLines, usdEquivalent, }: CartSummaryProps): import("react/jsx-runtime").JSX.Element;
30
+ export {};