thirdweb 5.105.48 → 5.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/dist/cjs/exports/react.js +3 -1
  2. package/dist/cjs/exports/react.js.map +1 -1
  3. package/dist/cjs/pay/convert/type.js +26 -43
  4. package/dist/cjs/pay/convert/type.js.map +1 -1
  5. package/dist/cjs/react/core/design-system/index.js +3 -1
  6. package/dist/cjs/react/core/design-system/index.js.map +1 -1
  7. package/dist/cjs/react/core/hooks/usePaymentMethods.js +4 -1
  8. package/dist/cjs/react/core/hooks/usePaymentMethods.js.map +1 -1
  9. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +1 -2
  10. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  11. package/dist/cjs/react/core/machines/paymentMachine.js.map +1 -1
  12. package/dist/cjs/react/native/ui/connect/ExternalWalletsList.js +2 -1
  13. package/dist/cjs/react/native/ui/connect/ExternalWalletsList.js.map +1 -1
  14. package/dist/cjs/react/web/hooks/wallets/useAutoConnect.js +1 -9
  15. package/dist/cjs/react/web/hooks/wallets/useAutoConnect.js.map +1 -1
  16. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js +7 -5
  17. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  18. package/dist/cjs/react/web/ui/Bridge/DirectPayment.js +2 -2
  19. package/dist/cjs/react/web/ui/Bridge/ErrorBanner.js +1 -1
  20. package/dist/cjs/react/web/ui/Bridge/FundWallet.js +7 -6
  21. package/dist/cjs/react/web/ui/Bridge/FundWallet.js.map +1 -1
  22. package/dist/cjs/react/web/ui/Bridge/QuoteLoader.js +5 -3
  23. package/dist/cjs/react/web/ui/Bridge/QuoteLoader.js.map +1 -1
  24. package/dist/cjs/react/web/ui/Bridge/StepRunner.js +3 -3
  25. package/dist/cjs/react/web/ui/Bridge/StepRunner.js.map +1 -1
  26. package/dist/cjs/react/web/ui/Bridge/TransactionPayment.js +2 -2
  27. package/dist/cjs/react/web/ui/Bridge/UnsupportedTokenScreen.js +2 -2
  28. package/dist/cjs/react/web/ui/Bridge/UnsupportedTokenScreen.js.map +1 -1
  29. package/dist/cjs/react/web/ui/Bridge/common/TokenAndChain.js +3 -3
  30. package/dist/cjs/react/web/ui/Bridge/common/TokenAndChain.js.map +1 -1
  31. package/dist/cjs/react/web/ui/Bridge/common/WithHeader.js +2 -1
  32. package/dist/cjs/react/web/ui/Bridge/common/WithHeader.js.map +1 -1
  33. package/dist/cjs/react/web/ui/Bridge/payment-details/PaymentDetails.js +28 -3
  34. package/dist/cjs/react/web/ui/Bridge/payment-details/PaymentDetails.js.map +1 -1
  35. package/dist/cjs/react/web/ui/Bridge/payment-selection/FiatProviderSelection.js +16 -22
  36. package/dist/cjs/react/web/ui/Bridge/payment-selection/FiatProviderSelection.js.map +1 -1
  37. package/dist/cjs/react/web/ui/Bridge/payment-selection/PaymentSelection.js +12 -4
  38. package/dist/cjs/react/web/ui/Bridge/payment-selection/PaymentSelection.js.map +1 -1
  39. package/dist/cjs/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js +2 -2
  40. package/dist/cjs/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js.map +1 -1
  41. package/dist/cjs/react/web/ui/Bridge/payment-success/PaymentReceipt.js +1 -1
  42. package/dist/cjs/react/web/ui/Bridge/payment-success/PaymentReceipt.js.map +1 -1
  43. package/dist/cjs/react/web/ui/Bridge/payment-success/SuccessScreen.js +8 -7
  44. package/dist/cjs/react/web/ui/Bridge/payment-success/SuccessScreen.js.map +1 -1
  45. package/dist/cjs/react/web/ui/Bridge/swap-widget/SearchInput.js +22 -0
  46. package/dist/cjs/react/web/ui/Bridge/swap-widget/SearchInput.js.map +1 -0
  47. package/dist/cjs/react/web/ui/Bridge/swap-widget/SelectChainButton.js +20 -0
  48. package/dist/cjs/react/web/ui/Bridge/swap-widget/SelectChainButton.js.map +1 -0
  49. package/dist/cjs/react/web/ui/Bridge/swap-widget/SwapWidget.js +251 -0
  50. package/dist/cjs/react/web/ui/Bridge/swap-widget/SwapWidget.js.map +1 -0
  51. package/dist/cjs/react/web/ui/Bridge/swap-widget/common.js +17 -0
  52. package/dist/cjs/react/web/ui/Bridge/swap-widget/common.js.map +1 -0
  53. package/dist/cjs/react/web/ui/Bridge/swap-widget/hooks.js +22 -0
  54. package/dist/cjs/react/web/ui/Bridge/swap-widget/hooks.js.map +1 -0
  55. package/dist/cjs/react/web/ui/Bridge/swap-widget/select-chain.js +66 -0
  56. package/dist/cjs/react/web/ui/Bridge/swap-widget/select-chain.js.map +1 -0
  57. package/dist/cjs/react/web/ui/Bridge/swap-widget/select-token-ui.js +208 -0
  58. package/dist/cjs/react/web/ui/Bridge/swap-widget/select-token-ui.js.map +1 -0
  59. package/dist/cjs/react/web/ui/Bridge/swap-widget/storage.js +53 -0
  60. package/dist/cjs/react/web/ui/Bridge/swap-widget/storage.js.map +1 -0
  61. package/dist/cjs/react/web/ui/Bridge/swap-widget/swap-ui.js +450 -0
  62. package/dist/cjs/react/web/ui/Bridge/swap-widget/swap-ui.js.map +1 -0
  63. package/dist/cjs/react/web/ui/Bridge/swap-widget/types.js +3 -0
  64. package/dist/cjs/react/web/ui/Bridge/swap-widget/types.js.map +1 -0
  65. package/dist/cjs/react/web/ui/Bridge/swap-widget/use-bridge-chains.js +16 -0
  66. package/dist/cjs/react/web/ui/Bridge/swap-widget/use-bridge-chains.js.map +1 -0
  67. package/dist/cjs/react/web/ui/Bridge/swap-widget/use-tokens.js +68 -0
  68. package/dist/cjs/react/web/ui/Bridge/swap-widget/use-tokens.js.map +1 -0
  69. package/dist/cjs/react/web/ui/Bridge/swap-widget/utils.js +7 -0
  70. package/dist/cjs/react/web/ui/Bridge/swap-widget/utils.js.map +1 -0
  71. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +14 -1
  72. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  73. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +11 -11
  74. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  75. package/dist/cjs/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js +4 -3
  76. package/dist/cjs/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js.map +1 -1
  77. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +15 -1
  78. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  79. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectModal.js +1 -1
  80. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectModal.js.map +1 -1
  81. package/dist/cjs/react/web/ui/ConnectWallet/NetworkSelector.js +2 -2
  82. package/dist/cjs/react/web/ui/ConnectWallet/NetworkSelector.js.map +1 -1
  83. package/dist/cjs/react/web/ui/ConnectWallet/WalletEntryButton.js +1 -1
  84. package/dist/cjs/react/web/ui/ConnectWallet/WalletEntryButton.js.map +1 -1
  85. package/dist/cjs/react/web/ui/ConnectWallet/WalletSelector.js +7 -8
  86. package/dist/cjs/react/web/ui/ConnectWallet/WalletSelector.js.map +1 -1
  87. package/dist/cjs/react/web/ui/ConnectWallet/WalletTypeRowButton.js +1 -1
  88. package/dist/cjs/react/web/ui/ConnectWallet/WalletTypeRowButton.js.map +1 -1
  89. package/dist/cjs/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.js +9 -0
  90. package/dist/cjs/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.js.map +1 -0
  91. package/dist/cjs/react/web/ui/ConnectWallet/icons/WalletDotIcon.js +12 -0
  92. package/dist/cjs/react/web/ui/ConnectWallet/icons/WalletDotIcon.js.map +1 -0
  93. package/dist/cjs/react/web/ui/ConnectWallet/screens/ReceiveFunds.js +1 -1
  94. package/dist/cjs/react/web/ui/ConnectWallet/screens/ReceiveFunds.js.map +1 -1
  95. package/dist/cjs/react/web/ui/ConnectWallet/screens/SendFunds.js +7 -7
  96. package/dist/cjs/react/web/ui/ConnectWallet/screens/SendFunds.js.map +1 -1
  97. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +3 -3
  98. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  99. package/dist/cjs/react/web/ui/ConnectWallet/screens/TokenSelector.js +2 -2
  100. package/dist/cjs/react/web/ui/ConnectWallet/screens/TokenSelector.js.map +1 -1
  101. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +1 -1
  102. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
  103. package/dist/cjs/react/web/ui/components/DynamicHeight.js +1 -1
  104. package/dist/cjs/react/web/ui/components/DynamicHeight.js.map +1 -1
  105. package/dist/cjs/react/web/ui/components/Img.js +42 -7
  106. package/dist/cjs/react/web/ui/components/Img.js.map +1 -1
  107. package/dist/cjs/react/web/ui/components/Modal.js +10 -10
  108. package/dist/cjs/react/web/ui/components/Modal.js.map +1 -1
  109. package/dist/cjs/react/web/ui/components/OTPInput.js +1 -1
  110. package/dist/cjs/react/web/ui/components/OTPInput.js.map +1 -1
  111. package/dist/cjs/react/web/ui/components/Skeleton.js +1 -0
  112. package/dist/cjs/react/web/ui/components/Skeleton.js.map +1 -1
  113. package/dist/cjs/react/web/ui/components/Spinner.js +2 -1
  114. package/dist/cjs/react/web/ui/components/Spinner.js.map +1 -1
  115. package/dist/cjs/react/web/ui/components/basic.js +11 -5
  116. package/dist/cjs/react/web/ui/components/basic.js.map +1 -1
  117. package/dist/cjs/react/web/ui/components/buttons.js +9 -0
  118. package/dist/cjs/react/web/ui/components/buttons.js.map +1 -1
  119. package/dist/cjs/react/web/ui/components/formElements.js +1 -1
  120. package/dist/cjs/react/web/ui/components/formElements.js.map +1 -1
  121. package/dist/cjs/react/web/ui/components/modalElements.js +1 -1
  122. package/dist/cjs/react/web/ui/components/modalElements.js.map +1 -1
  123. package/dist/cjs/react/web/ui/components/text.js +2 -1
  124. package/dist/cjs/react/web/ui/components/text.js.map +1 -1
  125. package/dist/cjs/react/web/utils/cls.js +17 -0
  126. package/dist/cjs/react/web/utils/cls.js.map +1 -0
  127. package/dist/cjs/react/web/wallets/in-app/InputSelectionUI.js +1 -1
  128. package/dist/cjs/react/web/wallets/in-app/InputSelectionUI.js.map +1 -1
  129. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +9 -9
  130. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  131. package/dist/cjs/react/web/wallets/shared/ConnectingScreen.js +3 -3
  132. package/dist/cjs/react/web/wallets/shared/ConnectingScreen.js.map +1 -1
  133. package/dist/cjs/react/web/wallets/shared/GuestLogin.js +1 -1
  134. package/dist/cjs/react/web/wallets/shared/GuestLogin.js.map +1 -1
  135. package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js +5 -5
  136. package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
  137. package/dist/cjs/react/web/wallets/shared/ScanScreen.js +5 -5
  138. package/dist/cjs/react/web/wallets/shared/ScanScreen.js.map +1 -1
  139. package/dist/cjs/react/web/wallets/shared/SocialLogin.js +1 -1
  140. package/dist/cjs/react/web/wallets/shared/SocialLogin.js.map +1 -1
  141. package/dist/cjs/stories/Bridge/Swap/SelectChain.stories.js +25 -0
  142. package/dist/cjs/stories/Bridge/Swap/SelectChain.stories.js.map +1 -0
  143. package/dist/cjs/stories/Bridge/Swap/SwapWidget.Prefill.stories.js +83 -0
  144. package/dist/cjs/stories/Bridge/Swap/SwapWidget.Prefill.stories.js.map +1 -0
  145. package/dist/cjs/stories/Bridge/Swap/SwapWidget.stories.js +52 -0
  146. package/dist/cjs/stories/Bridge/Swap/SwapWidget.stories.js.map +1 -0
  147. package/dist/cjs/stories/BuyWidget.stories.js +36 -0
  148. package/dist/cjs/stories/BuyWidget.stories.js.map +1 -0
  149. package/dist/cjs/stories/ConnectEmbed.stories.js +90 -0
  150. package/dist/cjs/stories/ConnectEmbed.stories.js.map +1 -0
  151. package/dist/cjs/stories/ConnectWallet/useWalletDetailsModal.stories.js +1 -1
  152. package/dist/cjs/version.js +1 -1
  153. package/dist/cjs/version.js.map +1 -1
  154. package/dist/cjs/wallets/connection/autoConnect.js +0 -9
  155. package/dist/cjs/wallets/connection/autoConnect.js.map +1 -1
  156. package/dist/cjs/wallets/connection/autoConnectCore.js +8 -2
  157. package/dist/cjs/wallets/connection/autoConnectCore.js.map +1 -1
  158. package/dist/cjs/wallets/constants.js +8 -1
  159. package/dist/cjs/wallets/constants.js.map +1 -1
  160. package/dist/cjs/wallets/manager/index.js +1 -2
  161. package/dist/cjs/wallets/manager/index.js.map +1 -1
  162. package/dist/esm/exports/react.js +1 -0
  163. package/dist/esm/exports/react.js.map +1 -1
  164. package/dist/esm/pay/convert/type.js +26 -43
  165. package/dist/esm/pay/convert/type.js.map +1 -1
  166. package/dist/esm/react/core/design-system/index.js +3 -1
  167. package/dist/esm/react/core/design-system/index.js.map +1 -1
  168. package/dist/esm/react/core/hooks/usePaymentMethods.js +4 -1
  169. package/dist/esm/react/core/hooks/usePaymentMethods.js.map +1 -1
  170. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +1 -2
  171. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  172. package/dist/esm/react/core/machines/paymentMachine.js.map +1 -1
  173. package/dist/esm/react/native/ui/connect/ExternalWalletsList.js +2 -1
  174. package/dist/esm/react/native/ui/connect/ExternalWalletsList.js.map +1 -1
  175. package/dist/esm/react/web/hooks/wallets/useAutoConnect.js +1 -9
  176. package/dist/esm/react/web/hooks/wallets/useAutoConnect.js.map +1 -1
  177. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js +7 -5
  178. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  179. package/dist/esm/react/web/ui/Bridge/DirectPayment.js +2 -2
  180. package/dist/esm/react/web/ui/Bridge/ErrorBanner.js +1 -1
  181. package/dist/esm/react/web/ui/Bridge/FundWallet.js +7 -6
  182. package/dist/esm/react/web/ui/Bridge/FundWallet.js.map +1 -1
  183. package/dist/esm/react/web/ui/Bridge/QuoteLoader.js +5 -3
  184. package/dist/esm/react/web/ui/Bridge/QuoteLoader.js.map +1 -1
  185. package/dist/esm/react/web/ui/Bridge/StepRunner.js +3 -3
  186. package/dist/esm/react/web/ui/Bridge/StepRunner.js.map +1 -1
  187. package/dist/esm/react/web/ui/Bridge/TransactionPayment.js +2 -2
  188. package/dist/esm/react/web/ui/Bridge/UnsupportedTokenScreen.js +2 -2
  189. package/dist/esm/react/web/ui/Bridge/UnsupportedTokenScreen.js.map +1 -1
  190. package/dist/esm/react/web/ui/Bridge/common/TokenAndChain.js +3 -3
  191. package/dist/esm/react/web/ui/Bridge/common/TokenAndChain.js.map +1 -1
  192. package/dist/esm/react/web/ui/Bridge/common/WithHeader.js +2 -1
  193. package/dist/esm/react/web/ui/Bridge/common/WithHeader.js.map +1 -1
  194. package/dist/esm/react/web/ui/Bridge/payment-details/PaymentDetails.js +28 -3
  195. package/dist/esm/react/web/ui/Bridge/payment-details/PaymentDetails.js.map +1 -1
  196. package/dist/esm/react/web/ui/Bridge/payment-selection/FiatProviderSelection.js +16 -22
  197. package/dist/esm/react/web/ui/Bridge/payment-selection/FiatProviderSelection.js.map +1 -1
  198. package/dist/esm/react/web/ui/Bridge/payment-selection/PaymentSelection.js +12 -4
  199. package/dist/esm/react/web/ui/Bridge/payment-selection/PaymentSelection.js.map +1 -1
  200. package/dist/esm/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js +3 -3
  201. package/dist/esm/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js.map +1 -1
  202. package/dist/esm/react/web/ui/Bridge/payment-success/PaymentReceipt.js +1 -1
  203. package/dist/esm/react/web/ui/Bridge/payment-success/PaymentReceipt.js.map +1 -1
  204. package/dist/esm/react/web/ui/Bridge/payment-success/SuccessScreen.js +9 -8
  205. package/dist/esm/react/web/ui/Bridge/payment-success/SuccessScreen.js.map +1 -1
  206. package/dist/esm/react/web/ui/Bridge/swap-widget/SearchInput.js +19 -0
  207. package/dist/esm/react/web/ui/Bridge/swap-widget/SearchInput.js.map +1 -0
  208. package/dist/esm/react/web/ui/Bridge/swap-widget/SelectChainButton.js +17 -0
  209. package/dist/esm/react/web/ui/Bridge/swap-widget/SelectChainButton.js.map +1 -0
  210. package/dist/esm/react/web/ui/Bridge/swap-widget/SwapWidget.js +247 -0
  211. package/dist/esm/react/web/ui/Bridge/swap-widget/SwapWidget.js.map +1 -0
  212. package/dist/esm/react/web/ui/Bridge/swap-widget/common.js +14 -0
  213. package/dist/esm/react/web/ui/Bridge/swap-widget/common.js.map +1 -0
  214. package/dist/esm/react/web/ui/Bridge/swap-widget/hooks.js +19 -0
  215. package/dist/esm/react/web/ui/Bridge/swap-widget/hooks.js.map +1 -0
  216. package/dist/esm/react/web/ui/Bridge/swap-widget/select-chain.js +62 -0
  217. package/dist/esm/react/web/ui/Bridge/swap-widget/select-chain.js.map +1 -0
  218. package/dist/esm/react/web/ui/Bridge/swap-widget/select-token-ui.js +205 -0
  219. package/dist/esm/react/web/ui/Bridge/swap-widget/select-token-ui.js.map +1 -0
  220. package/dist/esm/react/web/ui/Bridge/swap-widget/storage.js +49 -0
  221. package/dist/esm/react/web/ui/Bridge/swap-widget/storage.js.map +1 -0
  222. package/dist/esm/react/web/ui/Bridge/swap-widget/swap-ui.js +447 -0
  223. package/dist/esm/react/web/ui/Bridge/swap-widget/swap-ui.js.map +1 -0
  224. package/dist/esm/react/web/ui/Bridge/swap-widget/types.js +2 -0
  225. package/dist/esm/react/web/ui/Bridge/swap-widget/types.js.map +1 -0
  226. package/dist/esm/react/web/ui/Bridge/swap-widget/use-bridge-chains.js +13 -0
  227. package/dist/esm/react/web/ui/Bridge/swap-widget/use-bridge-chains.js.map +1 -0
  228. package/dist/esm/react/web/ui/Bridge/swap-widget/use-tokens.js +64 -0
  229. package/dist/esm/react/web/ui/Bridge/swap-widget/use-tokens.js.map +1 -0
  230. package/dist/esm/react/web/ui/Bridge/swap-widget/utils.js +4 -0
  231. package/dist/esm/react/web/ui/Bridge/swap-widget/utils.js.map +1 -0
  232. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +14 -1
  233. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  234. package/dist/esm/react/web/ui/ConnectWallet/Details.js +11 -11
  235. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  236. package/dist/esm/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js +4 -3
  237. package/dist/esm/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js.map +1 -1
  238. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +15 -1
  239. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  240. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModal.js +1 -1
  241. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModal.js.map +1 -1
  242. package/dist/esm/react/web/ui/ConnectWallet/NetworkSelector.js +2 -2
  243. package/dist/esm/react/web/ui/ConnectWallet/NetworkSelector.js.map +1 -1
  244. package/dist/esm/react/web/ui/ConnectWallet/WalletEntryButton.js +1 -1
  245. package/dist/esm/react/web/ui/ConnectWallet/WalletEntryButton.js.map +1 -1
  246. package/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js +8 -9
  247. package/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js.map +1 -1
  248. package/dist/esm/react/web/ui/ConnectWallet/WalletTypeRowButton.js +1 -1
  249. package/dist/esm/react/web/ui/ConnectWallet/WalletTypeRowButton.js.map +1 -1
  250. package/dist/esm/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.js +5 -0
  251. package/dist/esm/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.js.map +1 -0
  252. package/dist/esm/react/web/ui/ConnectWallet/icons/WalletDotIcon.js +8 -0
  253. package/dist/esm/react/web/ui/ConnectWallet/icons/WalletDotIcon.js.map +1 -0
  254. package/dist/esm/react/web/ui/ConnectWallet/screens/ReceiveFunds.js +1 -1
  255. package/dist/esm/react/web/ui/ConnectWallet/screens/ReceiveFunds.js.map +1 -1
  256. package/dist/esm/react/web/ui/ConnectWallet/screens/SendFunds.js +7 -7
  257. package/dist/esm/react/web/ui/ConnectWallet/screens/SendFunds.js.map +1 -1
  258. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +3 -3
  259. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  260. package/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js +2 -2
  261. package/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js.map +1 -1
  262. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +1 -1
  263. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
  264. package/dist/esm/react/web/ui/components/DynamicHeight.js +1 -1
  265. package/dist/esm/react/web/ui/components/DynamicHeight.js.map +1 -1
  266. package/dist/esm/react/web/ui/components/Img.js +43 -8
  267. package/dist/esm/react/web/ui/components/Img.js.map +1 -1
  268. package/dist/esm/react/web/ui/components/Modal.js +10 -10
  269. package/dist/esm/react/web/ui/components/Modal.js.map +1 -1
  270. package/dist/esm/react/web/ui/components/OTPInput.js +1 -1
  271. package/dist/esm/react/web/ui/components/OTPInput.js.map +1 -1
  272. package/dist/esm/react/web/ui/components/Skeleton.js +1 -0
  273. package/dist/esm/react/web/ui/components/Skeleton.js.map +1 -1
  274. package/dist/esm/react/web/ui/components/Spinner.js +2 -1
  275. package/dist/esm/react/web/ui/components/Spinner.js.map +1 -1
  276. package/dist/esm/react/web/ui/components/basic.js +11 -5
  277. package/dist/esm/react/web/ui/components/basic.js.map +1 -1
  278. package/dist/esm/react/web/ui/components/buttons.js +9 -0
  279. package/dist/esm/react/web/ui/components/buttons.js.map +1 -1
  280. package/dist/esm/react/web/ui/components/formElements.js +1 -1
  281. package/dist/esm/react/web/ui/components/formElements.js.map +1 -1
  282. package/dist/esm/react/web/ui/components/modalElements.js +1 -1
  283. package/dist/esm/react/web/ui/components/modalElements.js.map +1 -1
  284. package/dist/esm/react/web/ui/components/text.js +2 -1
  285. package/dist/esm/react/web/ui/components/text.js.map +1 -1
  286. package/dist/esm/react/web/utils/cls.js +14 -0
  287. package/dist/esm/react/web/utils/cls.js.map +1 -0
  288. package/dist/esm/react/web/wallets/in-app/InputSelectionUI.js +1 -1
  289. package/dist/esm/react/web/wallets/in-app/InputSelectionUI.js.map +1 -1
  290. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +9 -9
  291. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  292. package/dist/esm/react/web/wallets/shared/ConnectingScreen.js +3 -3
  293. package/dist/esm/react/web/wallets/shared/ConnectingScreen.js.map +1 -1
  294. package/dist/esm/react/web/wallets/shared/GuestLogin.js +1 -1
  295. package/dist/esm/react/web/wallets/shared/GuestLogin.js.map +1 -1
  296. package/dist/esm/react/web/wallets/shared/OTPLoginUI.js +5 -5
  297. package/dist/esm/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
  298. package/dist/esm/react/web/wallets/shared/ScanScreen.js +5 -5
  299. package/dist/esm/react/web/wallets/shared/ScanScreen.js.map +1 -1
  300. package/dist/esm/react/web/wallets/shared/SocialLogin.js +1 -1
  301. package/dist/esm/react/web/wallets/shared/SocialLogin.js.map +1 -1
  302. package/dist/esm/stories/Bridge/Swap/SelectChain.stories.js +21 -0
  303. package/dist/esm/stories/Bridge/Swap/SelectChain.stories.js.map +1 -0
  304. package/dist/esm/stories/Bridge/Swap/SwapWidget.Prefill.stories.js +74 -0
  305. package/dist/esm/stories/Bridge/Swap/SwapWidget.Prefill.stories.js.map +1 -0
  306. package/dist/esm/stories/Bridge/Swap/SwapWidget.stories.js +45 -0
  307. package/dist/esm/stories/Bridge/Swap/SwapWidget.stories.js.map +1 -0
  308. package/dist/esm/stories/BuyWidget.stories.js +29 -0
  309. package/dist/esm/stories/BuyWidget.stories.js.map +1 -0
  310. package/dist/esm/stories/ConnectEmbed.stories.js +81 -0
  311. package/dist/esm/stories/ConnectEmbed.stories.js.map +1 -0
  312. package/dist/esm/stories/ConnectWallet/useWalletDetailsModal.stories.js +1 -1
  313. package/dist/esm/version.js +1 -1
  314. package/dist/esm/version.js.map +1 -1
  315. package/dist/esm/wallets/connection/autoConnect.js +0 -9
  316. package/dist/esm/wallets/connection/autoConnect.js.map +1 -1
  317. package/dist/esm/wallets/connection/autoConnectCore.js +8 -2
  318. package/dist/esm/wallets/connection/autoConnectCore.js.map +1 -1
  319. package/dist/esm/wallets/constants.js +7 -0
  320. package/dist/esm/wallets/constants.js.map +1 -1
  321. package/dist/esm/wallets/manager/index.js +1 -2
  322. package/dist/esm/wallets/manager/index.js.map +1 -1
  323. package/dist/types/bridge/types/Chain.d.ts +1 -0
  324. package/dist/types/bridge/types/Chain.d.ts.map +1 -1
  325. package/dist/types/exports/react.d.ts +1 -0
  326. package/dist/types/exports/react.d.ts.map +1 -1
  327. package/dist/types/pay/convert/type.d.ts +27 -3
  328. package/dist/types/pay/convert/type.d.ts.map +1 -1
  329. package/dist/types/react/core/design-system/index.d.ts +2 -0
  330. package/dist/types/react/core/design-system/index.d.ts.map +1 -1
  331. package/dist/types/react/core/hooks/usePaymentMethods.d.ts.map +1 -1
  332. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts +1 -1
  333. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  334. package/dist/types/react/core/machines/paymentMachine.d.ts +1 -0
  335. package/dist/types/react/core/machines/paymentMachine.d.ts.map +1 -1
  336. package/dist/types/react/native/ui/connect/ExternalWalletsList.d.ts.map +1 -1
  337. package/dist/types/react/web/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  338. package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts.map +1 -1
  339. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts +1 -1
  340. package/dist/types/react/web/ui/Bridge/FundWallet.d.ts.map +1 -1
  341. package/dist/types/react/web/ui/Bridge/StepRunner.d.ts +2 -1
  342. package/dist/types/react/web/ui/Bridge/StepRunner.d.ts.map +1 -1
  343. package/dist/types/react/web/ui/Bridge/common/TokenAndChain.d.ts.map +1 -1
  344. package/dist/types/react/web/ui/Bridge/common/WithHeader.d.ts.map +1 -1
  345. package/dist/types/react/web/ui/Bridge/payment-details/PaymentDetails.d.ts +3 -1
  346. package/dist/types/react/web/ui/Bridge/payment-details/PaymentDetails.d.ts.map +1 -1
  347. package/dist/types/react/web/ui/Bridge/payment-selection/FiatProviderSelection.d.ts.map +1 -1
  348. package/dist/types/react/web/ui/Bridge/payment-selection/PaymentSelection.d.ts.map +1 -1
  349. package/dist/types/react/web/ui/Bridge/payment-selection/WalletFiatSelection.d.ts.map +1 -1
  350. package/dist/types/react/web/ui/Bridge/payment-success/PaymentReceipt.d.ts.map +1 -1
  351. package/dist/types/react/web/ui/Bridge/payment-success/SuccessScreen.d.ts.map +1 -1
  352. package/dist/types/react/web/ui/Bridge/swap-widget/SearchInput.d.ts +6 -0
  353. package/dist/types/react/web/ui/Bridge/swap-widget/SearchInput.d.ts.map +1 -0
  354. package/dist/types/react/web/ui/Bridge/swap-widget/SelectChainButton.d.ts +8 -0
  355. package/dist/types/react/web/ui/Bridge/swap-widget/SelectChainButton.d.ts.map +1 -0
  356. package/dist/types/react/web/ui/Bridge/swap-widget/SwapWidget.d.ts +213 -0
  357. package/dist/types/react/web/ui/Bridge/swap-widget/SwapWidget.d.ts.map +1 -0
  358. package/dist/types/react/web/ui/Bridge/swap-widget/common.d.ts +9 -0
  359. package/dist/types/react/web/ui/Bridge/swap-widget/common.d.ts.map +1 -0
  360. package/dist/types/react/web/ui/Bridge/swap-widget/hooks.d.ts +3 -0
  361. package/dist/types/react/web/ui/Bridge/swap-widget/hooks.d.ts.map +1 -0
  362. package/dist/types/react/web/ui/Bridge/swap-widget/select-chain.d.ts +23 -0
  363. package/dist/types/react/web/ui/Bridge/swap-widget/select-chain.d.ts.map +1 -0
  364. package/dist/types/react/web/ui/Bridge/swap-widget/select-token-ui.d.ts +18 -0
  365. package/dist/types/react/web/ui/Bridge/swap-widget/select-token-ui.d.ts.map +1 -0
  366. package/dist/types/react/web/ui/Bridge/swap-widget/storage.d.ts +46 -0
  367. package/dist/types/react/web/ui/Bridge/swap-widget/storage.d.ts.map +1 -0
  368. package/dist/types/react/web/ui/Bridge/swap-widget/swap-ui.d.ts +40 -0
  369. package/dist/types/react/web/ui/Bridge/swap-widget/swap-ui.d.ts.map +1 -0
  370. package/dist/types/react/web/ui/Bridge/swap-widget/types.d.ts +139 -0
  371. package/dist/types/react/web/ui/Bridge/swap-widget/types.d.ts.map +1 -0
  372. package/dist/types/react/web/ui/Bridge/swap-widget/use-bridge-chains.d.ts +4 -0
  373. package/dist/types/react/web/ui/Bridge/swap-widget/use-bridge-chains.d.ts.map +1 -0
  374. package/dist/types/react/web/ui/Bridge/swap-widget/use-tokens.d.ts +44 -0
  375. package/dist/types/react/web/ui/Bridge/swap-widget/use-tokens.d.ts.map +1 -0
  376. package/dist/types/react/web/ui/Bridge/swap-widget/utils.d.ts +2 -0
  377. package/dist/types/react/web/ui/Bridge/swap-widget/utils.d.ts.map +1 -0
  378. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts +13 -0
  379. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  380. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  381. package/dist/types/react/web/ui/ConnectWallet/Modal/AllWalletsUI.d.ts.map +1 -1
  382. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts +13 -0
  383. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  384. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModal.d.ts.map +1 -1
  385. package/dist/types/react/web/ui/ConnectWallet/NetworkSelector.d.ts +1 -0
  386. package/dist/types/react/web/ui/ConnectWallet/NetworkSelector.d.ts.map +1 -1
  387. package/dist/types/react/web/ui/ConnectWallet/WalletEntryButton.d.ts +1 -0
  388. package/dist/types/react/web/ui/ConnectWallet/WalletEntryButton.d.ts.map +1 -1
  389. package/dist/types/react/web/ui/ConnectWallet/WalletSelector.d.ts.map +1 -1
  390. package/dist/types/react/web/ui/ConnectWallet/WalletTypeRowButton.d.ts +1 -0
  391. package/dist/types/react/web/ui/ConnectWallet/WalletTypeRowButton.d.ts.map +1 -1
  392. package/dist/types/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.d.ts +3 -0
  393. package/dist/types/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.d.ts.map +1 -0
  394. package/dist/types/react/web/ui/ConnectWallet/icons/WalletDotIcon.d.ts +6 -0
  395. package/dist/types/react/web/ui/ConnectWallet/icons/WalletDotIcon.d.ts.map +1 -0
  396. package/dist/types/react/web/ui/ConnectWallet/screens/ReceiveFunds.d.ts.map +1 -1
  397. package/dist/types/react/web/ui/ConnectWallet/screens/SendFunds.d.ts.map +1 -1
  398. package/dist/types/react/web/ui/ConnectWallet/screens/SignatureScreen.d.ts.map +1 -1
  399. package/dist/types/react/web/ui/ConnectWallet/screens/TokenSelector.d.ts.map +1 -1
  400. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -1
  401. package/dist/types/react/web/ui/components/Img.d.ts +3 -0
  402. package/dist/types/react/web/ui/components/Img.d.ts.map +1 -1
  403. package/dist/types/react/web/ui/components/Modal.d.ts +3 -0
  404. package/dist/types/react/web/ui/components/Modal.d.ts.map +1 -1
  405. package/dist/types/react/web/ui/components/Skeleton.d.ts +1 -0
  406. package/dist/types/react/web/ui/components/Skeleton.d.ts.map +1 -1
  407. package/dist/types/react/web/ui/components/Spinner.d.ts +1 -0
  408. package/dist/types/react/web/ui/components/Spinner.d.ts.map +1 -1
  409. package/dist/types/react/web/ui/components/basic.d.ts +6 -0
  410. package/dist/types/react/web/ui/components/basic.d.ts.map +1 -1
  411. package/dist/types/react/web/ui/components/buttons.d.ts +1 -1
  412. package/dist/types/react/web/ui/components/buttons.d.ts.map +1 -1
  413. package/dist/types/react/web/ui/components/formElements.d.ts +1 -0
  414. package/dist/types/react/web/ui/components/formElements.d.ts.map +1 -1
  415. package/dist/types/react/web/ui/components/modalElements.d.ts.map +1 -1
  416. package/dist/types/react/web/ui/components/text.d.ts +1 -0
  417. package/dist/types/react/web/ui/components/text.d.ts.map +1 -1
  418. package/dist/types/react/web/utils/cls.d.ts +12 -0
  419. package/dist/types/react/web/utils/cls.d.ts.map +1 -0
  420. package/dist/types/react/web/wallets/in-app/InputSelectionUI.d.ts +1 -0
  421. package/dist/types/react/web/wallets/in-app/InputSelectionUI.d.ts.map +1 -1
  422. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  423. package/dist/types/react/web/wallets/shared/ConnectingScreen.d.ts.map +1 -1
  424. package/dist/types/react/web/wallets/shared/GuestLogin.d.ts.map +1 -1
  425. package/dist/types/react/web/wallets/shared/OTPLoginUI.d.ts.map +1 -1
  426. package/dist/types/react/web/wallets/shared/ScanScreen.d.ts.map +1 -1
  427. package/dist/types/react/web/wallets/shared/SocialLogin.d.ts.map +1 -1
  428. package/dist/types/stories/Bridge/Swap/SelectChain.stories.d.ts +10 -0
  429. package/dist/types/stories/Bridge/Swap/SelectChain.stories.d.ts.map +1 -0
  430. package/dist/types/stories/Bridge/Swap/SwapWidget.Prefill.stories.d.ts +15 -0
  431. package/dist/types/stories/Bridge/Swap/SwapWidget.Prefill.stories.d.ts.map +1 -0
  432. package/dist/types/stories/Bridge/Swap/SwapWidget.stories.d.ts +10 -0
  433. package/dist/types/stories/Bridge/Swap/SwapWidget.stories.d.ts.map +1 -0
  434. package/dist/types/stories/BuyWidget.stories.d.ts +13 -0
  435. package/dist/types/stories/BuyWidget.stories.d.ts.map +1 -0
  436. package/dist/types/stories/ConnectEmbed.stories.d.ts +12 -0
  437. package/dist/types/stories/ConnectEmbed.stories.d.ts.map +1 -0
  438. package/dist/types/version.d.ts +1 -1
  439. package/dist/types/version.d.ts.map +1 -1
  440. package/dist/types/wallets/connection/autoConnect.d.ts.map +1 -1
  441. package/dist/types/wallets/connection/autoConnectCore.d.ts +0 -1
  442. package/dist/types/wallets/connection/autoConnectCore.d.ts.map +1 -1
  443. package/dist/types/wallets/constants.d.ts +2 -0
  444. package/dist/types/wallets/constants.d.ts.map +1 -1
  445. package/dist/types/wallets/manager/index.d.ts.map +1 -1
  446. package/package.json +2 -1
  447. package/src/bridge/types/Chain.ts +2 -0
  448. package/src/exports/react.ts +4 -0
  449. package/src/pay/convert/type.ts +27 -44
  450. package/src/react/core/design-system/index.ts +3 -1
  451. package/src/react/core/hooks/usePaymentMethods.ts +4 -1
  452. package/src/react/core/hooks/wallets/useAutoConnect.ts +0 -2
  453. package/src/react/core/machines/paymentMachine.ts +1 -0
  454. package/src/react/native/ui/connect/ExternalWalletsList.tsx +2 -4
  455. package/src/react/web/hooks/wallets/useAutoConnect.ts +0 -11
  456. package/src/react/web/ui/Bridge/BridgeOrchestrator.tsx +7 -5
  457. package/src/react/web/ui/Bridge/BuyWidget.tsx +1 -1
  458. package/src/react/web/ui/Bridge/DirectPayment.tsx +2 -2
  459. package/src/react/web/ui/Bridge/ErrorBanner.tsx +1 -1
  460. package/src/react/web/ui/Bridge/FundWallet.tsx +9 -8
  461. package/src/react/web/ui/Bridge/QuoteLoader.tsx +6 -3
  462. package/src/react/web/ui/Bridge/StepRunner.tsx +5 -3
  463. package/src/react/web/ui/Bridge/TransactionPayment.tsx +2 -2
  464. package/src/react/web/ui/Bridge/UnsupportedTokenScreen.tsx +2 -2
  465. package/src/react/web/ui/Bridge/common/TokenAndChain.tsx +3 -2
  466. package/src/react/web/ui/Bridge/common/WithHeader.tsx +23 -13
  467. package/src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx +47 -5
  468. package/src/react/web/ui/Bridge/payment-selection/FiatProviderSelection.tsx +89 -83
  469. package/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx +16 -7
  470. package/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx +12 -7
  471. package/src/react/web/ui/Bridge/payment-success/PaymentReceipt.tsx +1 -5
  472. package/src/react/web/ui/Bridge/payment-success/SuccessScreen.tsx +27 -16
  473. package/src/react/web/ui/Bridge/swap-widget/SearchInput.tsx +46 -0
  474. package/src/react/web/ui/Bridge/swap-widget/SelectChainButton.tsx +50 -0
  475. package/src/react/web/ui/Bridge/swap-widget/SwapWidget.tsx +528 -0
  476. package/src/react/web/ui/Bridge/swap-widget/common.tsx +35 -0
  477. package/src/react/web/ui/Bridge/swap-widget/hooks.ts +21 -0
  478. package/src/react/web/ui/Bridge/swap-widget/select-chain.tsx +171 -0
  479. package/src/react/web/ui/Bridge/swap-widget/select-token-ui.tsx +528 -0
  480. package/src/react/web/ui/Bridge/swap-widget/storage.ts +56 -0
  481. package/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx +950 -0
  482. package/src/react/web/ui/Bridge/swap-widget/types.ts +157 -0
  483. package/src/react/web/ui/Bridge/swap-widget/use-bridge-chains.ts +14 -0
  484. package/src/react/web/ui/Bridge/swap-widget/use-tokens.ts +120 -0
  485. package/src/react/web/ui/Bridge/swap-widget/utils.ts +3 -0
  486. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +15 -0
  487. package/src/react/web/ui/ConnectWallet/Details.test.tsx +1 -1
  488. package/src/react/web/ui/ConnectWallet/Details.tsx +12 -1
  489. package/src/react/web/ui/ConnectWallet/Modal/AllWalletsUI.tsx +9 -3
  490. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +19 -1
  491. package/src/react/web/ui/ConnectWallet/Modal/ConnectModal.tsx +2 -0
  492. package/src/react/web/ui/ConnectWallet/NetworkSelector.tsx +4 -1
  493. package/src/react/web/ui/ConnectWallet/WalletEntryButton.tsx +2 -0
  494. package/src/react/web/ui/ConnectWallet/WalletSelector.tsx +20 -22
  495. package/src/react/web/ui/ConnectWallet/WalletTypeRowButton.tsx +2 -0
  496. package/src/react/web/ui/ConnectWallet/icons/ArrowUpDownIcon.tsx +23 -0
  497. package/src/react/web/ui/ConnectWallet/icons/WalletDotIcon.tsx +22 -0
  498. package/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.tsx +5 -2
  499. package/src/react/web/ui/ConnectWallet/screens/SendFunds.test.tsx +1 -3
  500. package/src/react/web/ui/ConnectWallet/screens/SendFunds.tsx +19 -4
  501. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +13 -3
  502. package/src/react/web/ui/ConnectWallet/screens/TokenSelector.tsx +2 -0
  503. package/src/react/web/ui/TransactionButton/TransactionModal.tsx +2 -0
  504. package/src/react/web/ui/components/DynamicHeight.tsx +1 -1
  505. package/src/react/web/ui/components/Img.tsx +67 -9
  506. package/src/react/web/ui/components/Modal.tsx +17 -12
  507. package/src/react/web/ui/components/OTPInput.tsx +1 -1
  508. package/src/react/web/ui/components/Skeleton.tsx +2 -0
  509. package/src/react/web/ui/components/Spinner.tsx +3 -0
  510. package/src/react/web/ui/components/basic.tsx +17 -3
  511. package/src/react/web/ui/components/buttons.tsx +18 -1
  512. package/src/react/web/ui/components/formElements.tsx +2 -1
  513. package/src/react/web/ui/components/modalElements.tsx +1 -0
  514. package/src/react/web/ui/components/text.tsx +3 -1
  515. package/src/react/web/utils/cls.ts +13 -0
  516. package/src/react/web/wallets/in-app/InputSelectionUI.tsx +2 -0
  517. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +9 -0
  518. package/src/react/web/wallets/shared/ConnectingScreen.tsx +21 -4
  519. package/src/react/web/wallets/shared/GuestLogin.tsx +6 -1
  520. package/src/react/web/wallets/shared/OTPLoginUI.tsx +35 -6
  521. package/src/react/web/wallets/shared/ScanScreen.tsx +22 -3
  522. package/src/react/web/wallets/shared/SocialLogin.tsx +6 -1
  523. package/src/stories/Bridge/Swap/SelectChain.stories.tsx +51 -0
  524. package/src/stories/Bridge/Swap/SwapWidget.Prefill.stories.tsx +116 -0
  525. package/src/stories/Bridge/Swap/SwapWidget.stories.tsx +71 -0
  526. package/src/stories/BuyWidget.stories.tsx +56 -0
  527. package/src/stories/ConnectEmbed.stories.tsx +128 -0
  528. package/src/stories/ConnectWallet/useWalletDetailsModal.stories.tsx +1 -1
  529. package/src/transaction/prepare-transaction.test.ts +2 -2
  530. package/src/version.ts +1 -1
  531. package/src/wallets/connection/autoConnect.test.ts +0 -3
  532. package/src/wallets/connection/autoConnect.ts +0 -11
  533. package/src/wallets/connection/autoConnectCore.ts +7 -3
  534. package/src/wallets/constants.ts +10 -0
  535. package/src/wallets/manager/index.ts +1 -2
@@ -0,0 +1,528 @@
1
+ "use client";
2
+
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import type { Buy, Sell } from "../../../../../bridge/index.js";
5
+ import type { TokenWithPrices } from "../../../../../bridge/types/Token.js";
6
+ import type { ThirdwebClient } from "../../../../../client/client.js";
7
+ import { NATIVE_TOKEN_ADDRESS } from "../../../../../constants/addresses.js";
8
+ import type { SupportedFiatCurrency } from "../../../../../pay/convert/type.js";
9
+ import { getAddress } from "../../../../../utils/address.js";
10
+ import { CustomThemeProvider } from "../../../../core/design-system/CustomThemeProvider.js";
11
+ import type { Theme } from "../../../../core/design-system/index.js";
12
+ import type { BridgePrepareRequest } from "../../../../core/hooks/useBridgePrepare.js";
13
+ import type { CompletedStatusResult } from "../../../../core/hooks/useStepExecutor.js";
14
+ import { webWindowAdapter } from "../../../adapters/WindowAdapter.js";
15
+ import { EmbedContainer } from "../../ConnectWallet/Modal/ConnectEmbed.js";
16
+ import { DynamicHeight } from "../../components/DynamicHeight.js";
17
+ import { ErrorBanner } from "../ErrorBanner.js";
18
+ import { PaymentDetails } from "../payment-details/PaymentDetails.js";
19
+ import { SuccessScreen } from "../payment-success/SuccessScreen.js";
20
+ import { StepRunner } from "../StepRunner.js";
21
+ import { useActiveWalletInfo } from "./hooks.js";
22
+ import { getLastUsedTokens, setLastUsedTokens } from "./storage.js";
23
+ import { SwapUI } from "./swap-ui.js";
24
+ import type {
25
+ SwapPreparedQuote,
26
+ SwapWidgetConnectOptions,
27
+ TokenSelection,
28
+ } from "./types.js";
29
+ import { useBridgeChains } from "./use-bridge-chains.js";
30
+
31
+ export type SwapWidgetProps = {
32
+ /**
33
+ * A client is the entry point to the thirdweb SDK.
34
+ * It is required for all other actions.
35
+ * You can create a client using the `createThirdwebClient` function. Refer to the [Creating a Client](https://portal.thirdweb.com/typescript/v5/client) documentation for more information.
36
+ *
37
+ * You must provide a `clientId` or `secretKey` in order to initialize a client. Pass `clientId` if you want for client-side usage and `secretKey` for server-side usage.
38
+ *
39
+ * ```tsx
40
+ * import { createThirdwebClient } from "thirdweb";
41
+ *
42
+ * const client = createThirdwebClient({
43
+ * clientId: "<your_client_id>",
44
+ * })
45
+ * ```
46
+ */
47
+ client: ThirdwebClient;
48
+ /**
49
+ * The prefill Buy and/or Sell tokens for the swap widget. If `tokenAddress` is not provided, the native token will be used
50
+ *
51
+ * @example
52
+ *
53
+ * ### Set an ERC20 token as the buy token
54
+ * ```ts
55
+ * <SwapWidget client={client} prefill={{
56
+ * buyToken: {
57
+ * chainId: 8453,
58
+ * tokenAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
59
+ * },
60
+ * }} />
61
+ * ```
62
+ *
63
+ * ### Set a native token as the sell token
64
+ *
65
+ * ```ts
66
+ * <SwapWidget client={client} prefill={{
67
+ * sellToken: {
68
+ * chainId: 8453,
69
+ * },
70
+ * }} />
71
+ * ```
72
+ *
73
+ * ### Set 0.1 Base USDC as the buy token
74
+ * ```ts
75
+ * <SwapWidget client={client} prefill={{
76
+ * buyToken: {
77
+ * chainId: 8453,
78
+ * amount: "0.1",
79
+ * tokenAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
80
+ * },
81
+ * }} />
82
+ * ```
83
+ *
84
+ * ### Set Base USDC as the buy token and Base native token as the sell token
85
+ * ```ts
86
+ * <SwapWidget client={client} prefill={{
87
+ * buyToken: {
88
+ * chainId: 8453,
89
+ * tokenAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
90
+ * },
91
+ * sellToken: {
92
+ * chainId: 8453,
93
+ * },
94
+ * }} />
95
+ * ```
96
+ */
97
+ prefill?: {
98
+ buyToken?: {
99
+ tokenAddress?: string;
100
+ chainId: number;
101
+ amount?: string;
102
+ };
103
+ sellToken?: {
104
+ tokenAddress?: string;
105
+ chainId: number;
106
+ amount?: string;
107
+ };
108
+ };
109
+ /**
110
+ * Set the theme for the `SwapWidget` component. By default it is set to `"dark"`
111
+ *
112
+ * theme can be set to either `"dark"`, `"light"` or a custom theme object.
113
+ * You can also import [`lightTheme`](https://portal.thirdweb.com/references/typescript/v5/lightTheme)
114
+ * or [`darkTheme`](https://portal.thirdweb.com/references/typescript/v5/darkTheme)
115
+ * functions from `thirdweb/react` to use the default themes as base and overrides parts of it.
116
+ * @example
117
+ * ```ts
118
+ * import { lightTheme } from "thirdweb/react";
119
+ *
120
+ * const customTheme = lightTheme({
121
+ * colors: {
122
+ * modalBg: 'red'
123
+ * }
124
+ * })
125
+ *
126
+ * function Example() {
127
+ * return <SwapWidget client={client} theme={customTheme} />
128
+ * }
129
+ * ```
130
+ */
131
+ theme?: "light" | "dark" | Theme;
132
+ /**
133
+ * The currency to use for the payment.
134
+ * @default "USD"
135
+ */
136
+ currency?: SupportedFiatCurrency;
137
+ connectOptions?: SwapWidgetConnectOptions;
138
+ /**
139
+ * Whether to show thirdweb branding in the widget.
140
+ * @default true
141
+ */
142
+ showThirdwebBranding?: boolean;
143
+ /**
144
+ * Callback to be called when the swap is successful.
145
+ */
146
+ onSuccess?: (quote: SwapPreparedQuote) => void;
147
+ /**
148
+ * Callback to be called when user encounters an error when swapping.
149
+ */
150
+ onError?: (error: Error, quote: SwapPreparedQuote) => void;
151
+ /**
152
+ * Callback to be called when the user cancels the purchase.
153
+ */
154
+ onCancel?: (quote: SwapPreparedQuote) => void;
155
+ style?: React.CSSProperties;
156
+ className?: string;
157
+ };
158
+
159
+ /**
160
+ * A widget for swapping tokens with cross-chain support
161
+ *
162
+ * @param props - Props of type [`SwapWidgetProps`](https://portal.thirdweb.com/references/typescript/v5/SwapWidgetProps) to configure the SwapWidget component.
163
+ *
164
+ * @example
165
+ * ### Basic usage
166
+ *
167
+ * By default, no tokens are selected in the widget UI.
168
+ *
169
+ * You can set specific tokens to buy or sell by default by passing the `prefill` prop. User can change these selections in the widget UI.
170
+ *
171
+ * ```tsx
172
+ * <SwapWidget client={client} />
173
+ * ```
174
+ *
175
+ * ### Set an ERC20 token to Buy by default
176
+ *
177
+ * ```tsx
178
+ * <SwapWidget client={client} prefill={{
179
+ * buyToken: {
180
+ * // Base USDC
181
+ * chainId: 8453,
182
+ * tokenAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
183
+ * },
184
+ * }} />
185
+ * ```
186
+ *
187
+ * ### Set a native token to Sell by default
188
+ *
189
+ * By not specifying a `tokenAddress`, the native token will be used.
190
+ *
191
+ * ```tsx
192
+ * <SwapWidget client={client} prefill={{
193
+ * // Base native token (ETH)
194
+ * sellToken: {
195
+ * chainId: 8453,
196
+ * },
197
+ * }} />
198
+ * ```
199
+ *
200
+ * ### Set amount and token to Buy by default
201
+ *
202
+ * ```tsx
203
+ * <SwapWidget client={client} prefill={{
204
+ * buyToken: {
205
+ * // 0.1 Base USDC
206
+ * chainId: 8453,
207
+ * amount: "0.1",
208
+ * tokenAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
209
+ * },
210
+ * }} />
211
+ * ```
212
+ *
213
+ * ### Set both buy and sell tokens by default
214
+ *
215
+ * ```tsx
216
+ * <SwapWidget client={client} prefill={{
217
+ * buyToken: {
218
+ * // Base USDC
219
+ * chainId: 8453,
220
+ * tokenAddress: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
221
+ * },
222
+ * sellToken: {
223
+ * // Polygon native token (MATIC)
224
+ * chainId: 137,
225
+ * },
226
+ * }} />
227
+ * ```
228
+ *
229
+ */
230
+ export function SwapWidget(props: SwapWidgetProps) {
231
+ return (
232
+ <SwapWidgetContainer
233
+ theme={props.theme}
234
+ style={props.style}
235
+ className={props.className}
236
+ >
237
+ <SwapWidgetContent {...props} />
238
+ </SwapWidgetContainer>
239
+ );
240
+ }
241
+
242
+ /**
243
+ * @internal
244
+ */
245
+ export function SwapWidgetContainer(props: {
246
+ theme: SwapWidgetProps["theme"];
247
+ className: string | undefined;
248
+ style?: React.CSSProperties | undefined;
249
+ children: React.ReactNode;
250
+ }) {
251
+ return (
252
+ <CustomThemeProvider theme={props.theme || "dark"}>
253
+ <EmbedContainer
254
+ className={props.className}
255
+ modalSize="compact"
256
+ style={{
257
+ ...props.style,
258
+ }}
259
+ >
260
+ <DynamicHeight>{props.children}</DynamicHeight>
261
+ </EmbedContainer>
262
+ </CustomThemeProvider>
263
+ );
264
+ }
265
+
266
+ type SelectionInfo = {
267
+ preparedQuote: SwapPreparedQuote;
268
+ request: BridgePrepareRequest;
269
+ quote: Buy.quote.Result | Sell.quote.Result;
270
+ buyToken: TokenWithPrices;
271
+ sellToken: TokenWithPrices;
272
+ sellTokenBalance: bigint;
273
+ mode: "buy" | "sell";
274
+ };
275
+
276
+ type Join<T, U> = T & U;
277
+
278
+ type SwapWidgetScreen =
279
+ | { id: "1:swap-ui" }
280
+ | Join<{ id: "2:preview" }, SelectionInfo>
281
+ | Join<{ id: "3:execute" }, SelectionInfo>
282
+ | Join<
283
+ {
284
+ id: "4:success";
285
+ completedStatuses: CompletedStatusResult[];
286
+ },
287
+ SelectionInfo
288
+ >
289
+ | { id: "error"; error: Error; preparedQuote: SwapPreparedQuote };
290
+
291
+ function SwapWidgetContent(props: SwapWidgetProps) {
292
+ const [screen, setScreen] = useState<SwapWidgetScreen>({ id: "1:swap-ui" });
293
+ const activeWalletInfo = useActiveWalletInfo();
294
+
295
+ const [amountSelection, setAmountSelection] = useState<{
296
+ type: "buy" | "sell";
297
+ amount: string;
298
+ }>(() => {
299
+ if (props.prefill?.buyToken?.amount) {
300
+ return {
301
+ type: "buy",
302
+ amount: props.prefill.buyToken.amount,
303
+ };
304
+ }
305
+ if (props.prefill?.sellToken?.amount) {
306
+ return {
307
+ type: "sell",
308
+ amount: props.prefill.sellToken.amount,
309
+ };
310
+ }
311
+ return {
312
+ type: "buy",
313
+ amount: "",
314
+ };
315
+ });
316
+
317
+ const [buyToken, setBuyToken] = useState<TokenSelection | undefined>(() => {
318
+ if (props.prefill?.buyToken) {
319
+ return {
320
+ tokenAddress:
321
+ props.prefill.buyToken.tokenAddress ||
322
+ getAddress(NATIVE_TOKEN_ADDRESS),
323
+ chainId: props.prefill.buyToken.chainId,
324
+ };
325
+ }
326
+ const lastUsedBuyToken = getLastUsedTokens()?.buyToken;
327
+
328
+ // the token that will be set as initial value of sell token
329
+ const sellToken = getInitialSellToken(
330
+ props.prefill,
331
+ getLastUsedTokens()?.sellToken,
332
+ );
333
+
334
+ // if both tokens are same, ignore "buyToken", keep "sellToken"
335
+ if (
336
+ lastUsedBuyToken &&
337
+ sellToken &&
338
+ lastUsedBuyToken.tokenAddress.toLowerCase() ===
339
+ sellToken.tokenAddress.toLowerCase() &&
340
+ lastUsedBuyToken.chainId === sellToken.chainId
341
+ ) {
342
+ return undefined;
343
+ }
344
+
345
+ return lastUsedBuyToken;
346
+ });
347
+
348
+ const [sellToken, setSellToken] = useState<TokenSelection | undefined>(() => {
349
+ return getInitialSellToken(props.prefill, getLastUsedTokens()?.sellToken);
350
+ });
351
+
352
+ // persist selections to localStorage whenever they change
353
+ useEffect(() => {
354
+ setLastUsedTokens({ buyToken, sellToken });
355
+ }, [buyToken, sellToken]);
356
+
357
+ // preload requests
358
+ useBridgeChains(props.client);
359
+
360
+ const handleError = useCallback(
361
+ (error: Error, quote: SwapPreparedQuote) => {
362
+ console.error(error);
363
+ props.onError?.(error, quote);
364
+ setScreen({
365
+ id: "error",
366
+ preparedQuote: quote,
367
+ error,
368
+ });
369
+ },
370
+ [props.onError],
371
+ );
372
+
373
+ // if wallet suddenly disconnects, show screen 1
374
+ if (screen.id === "1:swap-ui" || !activeWalletInfo) {
375
+ return (
376
+ <SwapUI
377
+ showThirdwebBranding={
378
+ props.showThirdwebBranding === undefined
379
+ ? true
380
+ : props.showThirdwebBranding
381
+ }
382
+ client={props.client}
383
+ theme={props.theme || "dark"}
384
+ connectOptions={props.connectOptions}
385
+ currency={props.currency || "USD"}
386
+ activeWalletInfo={activeWalletInfo}
387
+ buyToken={buyToken}
388
+ sellToken={sellToken}
389
+ setBuyToken={setBuyToken}
390
+ setSellToken={setSellToken}
391
+ amountSelection={amountSelection}
392
+ setAmountSelection={setAmountSelection}
393
+ onSwap={(data) => {
394
+ setScreen({
395
+ id: "2:preview",
396
+ buyToken: data.buyToken,
397
+ sellToken: data.sellToken,
398
+ sellTokenBalance: data.sellTokenBalance,
399
+ mode: data.mode,
400
+ preparedQuote: data.result,
401
+ request: data.request,
402
+ quote: data.result,
403
+ });
404
+ }}
405
+ />
406
+ );
407
+ }
408
+
409
+ if (screen.id === "2:preview") {
410
+ return (
411
+ <PaymentDetails
412
+ title="Review Swap"
413
+ confirmButtonLabel="Swap"
414
+ client={props.client}
415
+ onBack={() => {
416
+ setScreen({ id: "1:swap-ui" });
417
+ }}
418
+ onConfirm={() => {
419
+ setScreen({
420
+ ...screen,
421
+ id: "3:execute",
422
+ });
423
+ }}
424
+ onError={(error) => handleError(error, screen.preparedQuote)}
425
+ paymentMethod={{
426
+ quote: screen.quote,
427
+ type: "wallet",
428
+ payerWallet: activeWalletInfo.activeWallet,
429
+ balance: screen.sellTokenBalance,
430
+ originToken: screen.sellToken,
431
+ action: screen.mode,
432
+ }}
433
+ preparedQuote={screen.preparedQuote}
434
+ uiOptions={{
435
+ destinationToken: screen.buyToken,
436
+ mode: "fund_wallet",
437
+ currency: props.currency,
438
+ }}
439
+ />
440
+ );
441
+ }
442
+
443
+ if (screen.id === "3:execute") {
444
+ return (
445
+ <StepRunner
446
+ title="Processing Swap"
447
+ autoStart={true}
448
+ client={props.client}
449
+ onBack={() => {
450
+ setScreen({
451
+ ...screen,
452
+ id: "2:preview",
453
+ sellTokenBalance: screen.sellTokenBalance,
454
+ });
455
+ }}
456
+ onCancel={() => props.onCancel?.(screen.preparedQuote)}
457
+ onComplete={(completedStatuses) => {
458
+ props.onSuccess?.(screen.preparedQuote);
459
+ setScreen({
460
+ ...screen,
461
+ id: "4:success",
462
+ completedStatuses,
463
+ });
464
+ }}
465
+ request={screen.request}
466
+ wallet={activeWalletInfo.activeWallet}
467
+ windowAdapter={webWindowAdapter}
468
+ />
469
+ );
470
+ }
471
+
472
+ if (screen.id === "4:success") {
473
+ return (
474
+ <SuccessScreen
475
+ client={props.client}
476
+ completedStatuses={screen.completedStatuses}
477
+ onDone={() => {
478
+ setScreen({ id: "1:swap-ui" });
479
+ // clear amounts
480
+ setAmountSelection({
481
+ type: "buy",
482
+ amount: "",
483
+ });
484
+ }}
485
+ preparedQuote={screen.preparedQuote}
486
+ uiOptions={{
487
+ destinationToken: screen.buyToken,
488
+ mode: "fund_wallet",
489
+ currency: props.currency,
490
+ }}
491
+ windowAdapter={webWindowAdapter}
492
+ hasPaymentId={false} // TODO Question: Do we need to expose this as prop?
493
+ />
494
+ );
495
+ }
496
+
497
+ if (screen.id === "error") {
498
+ return (
499
+ <ErrorBanner
500
+ client={props.client}
501
+ error={screen.error}
502
+ onCancel={() => {
503
+ setScreen({ id: "1:swap-ui" });
504
+ props.onCancel?.(screen.preparedQuote);
505
+ }}
506
+ onRetry={() => {
507
+ setScreen({ id: "1:swap-ui" });
508
+ }}
509
+ />
510
+ );
511
+ }
512
+
513
+ return null;
514
+ }
515
+
516
+ function getInitialSellToken(
517
+ prefill: SwapWidgetProps["prefill"],
518
+ lastUsedSellToken: TokenSelection | undefined,
519
+ ) {
520
+ if (prefill?.sellToken) {
521
+ return {
522
+ tokenAddress:
523
+ prefill.sellToken.tokenAddress || getAddress(NATIVE_TOKEN_ADDRESS),
524
+ chainId: prefill.sellToken.chainId,
525
+ };
526
+ }
527
+ return lastUsedSellToken;
528
+ }
@@ -0,0 +1,35 @@
1
+ import type { Theme } from "../../../../core/design-system/index.js";
2
+ import { Text } from "../../components/text.js";
3
+
4
+ export function DecimalRenderer(props: {
5
+ value: string;
6
+ color: keyof Theme["colors"];
7
+ weight: 400 | 500 | 600 | 700;
8
+ integerSize: "md" | "sm";
9
+ fractionSize: "sm" | "xs";
10
+ }) {
11
+ if (Number(props.value) > 1000) {
12
+ return (
13
+ <Text size={props.integerSize} color={props.color} weight={props.weight}>
14
+ {compactFormatter.format(Number(props.value))}
15
+ </Text>
16
+ );
17
+ }
18
+ const [integerPart, fractionPart] = props.value.split(".");
19
+
20
+ return (
21
+ <div style={{ display: "flex", alignItems: "baseline" }}>
22
+ <Text size={props.integerSize} color={props.color} weight={props.weight}>
23
+ {integerPart}
24
+ </Text>
25
+ <Text size={props.fractionSize} color={props.color} weight={props.weight}>
26
+ .{fractionPart || "00"}
27
+ </Text>
28
+ </div>
29
+ );
30
+ }
31
+
32
+ const compactFormatter = new Intl.NumberFormat("en-US", {
33
+ notation: "compact",
34
+ maximumFractionDigits: 2,
35
+ });
@@ -0,0 +1,21 @@
1
+ import { useMemo } from "react";
2
+ import { useActiveAccount } from "../../../../core/hooks/wallets/useActiveAccount.js";
3
+ import { useActiveWallet } from "../../../../core/hooks/wallets/useActiveWallet.js";
4
+ import { useActiveWalletChain } from "../../../../core/hooks/wallets/useActiveWalletChain.js";
5
+ import type { ActiveWalletInfo } from "./types.js";
6
+
7
+ export function useActiveWalletInfo(): ActiveWalletInfo | undefined {
8
+ const activeAccount = useActiveAccount();
9
+ const activeWallet = useActiveWallet();
10
+ const activeChain = useActiveWalletChain();
11
+
12
+ return useMemo(() => {
13
+ return activeAccount && activeWallet && activeChain
14
+ ? {
15
+ activeChain,
16
+ activeWallet,
17
+ activeAccount,
18
+ }
19
+ : undefined;
20
+ }, [activeAccount, activeWallet, activeChain]);
21
+ }