0xtrails 0.2.4 → 0.2.5

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 (161) hide show
  1. package/dist/aave.d.ts +8 -0
  2. package/dist/aave.d.ts.map +1 -1
  3. package/dist/{ccip-BlV1Mry3.js → ccip-CXlshvBY.js} +1 -1
  4. package/dist/config.d.ts +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/constants.d.ts +1 -0
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/error.d.ts +1 -0
  9. package/dist/error.d.ts.map +1 -1
  10. package/dist/estimate.d.ts +52 -0
  11. package/dist/estimate.d.ts.map +1 -1
  12. package/dist/{index-BNWCIGfQ.js → index-_QuyGrjU.js} +72332 -72246
  13. package/dist/index.js +2 -2
  14. package/dist/intents.d.ts +40 -0
  15. package/dist/intents.d.ts.map +1 -1
  16. package/dist/metaTxnMonitor.d.ts +3 -3
  17. package/dist/metaTxnMonitor.d.ts.map +1 -1
  18. package/dist/metaTxns.d.ts +3 -3
  19. package/dist/metaTxns.d.ts.map +1 -1
  20. package/dist/morpho.d.ts +8 -0
  21. package/dist/morpho.d.ts.map +1 -1
  22. package/dist/prepareSend.d.ts +16 -6
  23. package/dist/prepareSend.d.ts.map +1 -1
  24. package/dist/queryParams.d.ts.map +1 -1
  25. package/dist/relayer.d.ts +6 -6
  26. package/dist/relayer.d.ts.map +1 -1
  27. package/dist/sequenceWallet.d.ts +2 -2
  28. package/dist/sequenceWallet.d.ts.map +1 -1
  29. package/dist/tokens.d.ts.map +1 -1
  30. package/dist/wallets.d.ts.map +1 -1
  31. package/dist/widget/components/AccountActionsDropdown.d.ts.map +1 -1
  32. package/dist/widget/components/AccountSettings.d.ts.map +1 -1
  33. package/dist/widget/components/ClassicSwap.d.ts +2 -0
  34. package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
  35. package/dist/widget/components/ConnectWallet.d.ts.map +1 -1
  36. package/dist/widget/components/ConnectedWallets.d.ts +4 -0
  37. package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
  38. package/dist/widget/components/Earn.d.ts.map +1 -1
  39. package/dist/widget/components/Fund.d.ts.map +1 -1
  40. package/dist/widget/components/FundMethods.d.ts.map +1 -1
  41. package/dist/widget/components/{FundSendForm.d.ts → FundSwap.d.ts} +11 -5
  42. package/dist/widget/components/FundSwap.d.ts.map +1 -0
  43. package/dist/widget/components/FundingMethodSelectorButton.d.ts +4 -0
  44. package/dist/widget/components/FundingMethodSelectorButton.d.ts.map +1 -0
  45. package/dist/widget/components/Modal.d.ts.map +1 -1
  46. package/dist/widget/components/Pay.d.ts.map +1 -1
  47. package/dist/widget/components/PercentageMaxButtons.d.ts +12 -0
  48. package/dist/widget/components/PercentageMaxButtons.d.ts.map +1 -0
  49. package/dist/widget/components/{PaySendForm.d.ts → PoolDeposit.d.ts} +11 -34
  50. package/dist/widget/components/PoolDeposit.d.ts.map +1 -0
  51. package/dist/widget/components/{SimpleSwap.d.ts → PoolWithdraw.d.ts} +16 -8
  52. package/dist/widget/components/PoolWithdraw.d.ts.map +1 -0
  53. package/dist/widget/components/QuoteDetails.d.ts.map +1 -1
  54. package/dist/widget/components/Receive.d.ts.map +1 -1
  55. package/dist/widget/components/RecipientSelectorButton.d.ts +4 -0
  56. package/dist/widget/components/RecipientSelectorButton.d.ts.map +1 -0
  57. package/dist/widget/components/Recipients.d.ts.map +1 -1
  58. package/dist/widget/components/RequiredPropsError.d.ts +8 -0
  59. package/dist/widget/components/RequiredPropsError.d.ts.map +1 -0
  60. package/dist/widget/components/ScreenHeader.d.ts.map +1 -1
  61. package/dist/widget/components/SlippageToleranceSettings.d.ts.map +1 -1
  62. package/dist/widget/components/Swap.d.ts +1 -0
  63. package/dist/widget/components/Swap.d.ts.map +1 -1
  64. package/dist/widget/components/SwapSettings.d.ts.map +1 -1
  65. package/dist/widget/components/TokenImage.d.ts +1 -0
  66. package/dist/widget/components/TokenImage.d.ts.map +1 -1
  67. package/dist/widget/components/TokenList.d.ts.map +1 -1
  68. package/dist/widget/components/TokenSelector.d.ts.map +1 -1
  69. package/dist/widget/components/TokenSelectorButton.d.ts +16 -0
  70. package/dist/widget/components/TokenSelectorButton.d.ts.map +1 -0
  71. package/dist/widget/components/UserPreferences.d.ts.map +1 -1
  72. package/dist/widget/components/WaasFeeOptions.d.ts +8 -0
  73. package/dist/widget/components/WaasFeeOptions.d.ts.map +1 -0
  74. package/dist/widget/components/WalletConfirmation.d.ts.map +1 -1
  75. package/dist/widget/components/WalletList.d.ts.map +1 -1
  76. package/dist/widget/css/compiled.css +2 -0
  77. package/dist/widget/css/index.css +554 -0
  78. package/dist/widget/hooks/useBack.d.ts +1 -0
  79. package/dist/widget/hooks/useBack.d.ts.map +1 -1
  80. package/dist/widget/hooks/useCheckout.d.ts +1 -1
  81. package/dist/widget/hooks/useCheckout.d.ts.map +1 -1
  82. package/dist/widget/hooks/useCurrentScreen.d.ts +1 -1
  83. package/dist/widget/hooks/useCurrentScreen.d.ts.map +1 -1
  84. package/dist/widget/hooks/useDefaultTokenSelection.d.ts +3 -3
  85. package/dist/widget/hooks/useDefaultTokenSelection.d.ts.map +1 -1
  86. package/dist/widget/hooks/usePayMessage.d.ts.map +1 -1
  87. package/dist/widget/hooks/useSelectedFundMethod.d.ts +12 -0
  88. package/dist/widget/hooks/useSelectedFundMethod.d.ts.map +1 -0
  89. package/dist/widget/hooks/useSelectedRecipient.d.ts.map +1 -1
  90. package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
  91. package/dist/widget/index.js +1 -1
  92. package/dist/widget/widget.d.ts +4 -4
  93. package/dist/widget/widget.d.ts.map +1 -1
  94. package/package.json +18 -12
  95. package/src/aave.ts +32 -0
  96. package/src/config.ts +12 -4
  97. package/src/constants.ts +2 -0
  98. package/src/error.ts +19 -1
  99. package/src/estimate.ts +416 -5
  100. package/src/intents.ts +161 -11
  101. package/src/metaTxnMonitor.ts +3 -3
  102. package/src/metaTxns.ts +3 -5
  103. package/src/morpho.ts +32 -0
  104. package/src/prepareSend.ts +503 -166
  105. package/src/queryParams.ts +2 -1
  106. package/src/relayer.ts +11 -11
  107. package/src/sequenceWallet.ts +2 -2
  108. package/src/tokens.ts +7 -1
  109. package/src/wallets.ts +8 -0
  110. package/src/widget/compiled.css +2 -2
  111. package/src/widget/components/AccountActionsDropdown.tsx +3 -13
  112. package/src/widget/components/AccountSettings.tsx +6 -24
  113. package/src/widget/components/ClassicSwap.tsx +111 -155
  114. package/src/widget/components/ConnectWallet.tsx +4 -37
  115. package/src/widget/components/ConnectedWallets.tsx +113 -58
  116. package/src/widget/components/Earn.tsx +73 -589
  117. package/src/widget/components/Fund.tsx +31 -82
  118. package/src/widget/components/FundMethods.tsx +82 -159
  119. package/src/widget/components/FundSwap.tsx +52 -0
  120. package/src/widget/components/FundingMethodSelectorButton.tsx +60 -0
  121. package/src/widget/components/Modal.tsx +6 -2
  122. package/src/widget/components/Pay.tsx +183 -208
  123. package/src/widget/components/PercentageMaxButtons.tsx +77 -0
  124. package/src/widget/components/PoolDeposit.tsx +593 -0
  125. package/src/widget/components/PoolWithdraw.tsx +903 -0
  126. package/src/widget/components/QuoteDetails.tsx +22 -8
  127. package/src/widget/components/Receive.tsx +0 -2
  128. package/src/widget/components/RecipientSelectorButton.tsx +42 -0
  129. package/src/widget/components/Recipients.tsx +62 -156
  130. package/src/widget/components/RequiredPropsError.tsx +33 -0
  131. package/src/widget/components/ScreenHeader.tsx +5 -1
  132. package/src/widget/components/SlippageToleranceSettings.tsx +2 -1
  133. package/src/widget/components/Swap.tsx +2 -43
  134. package/src/widget/components/SwapSettings.tsx +2 -14
  135. package/src/widget/components/TokenImage.tsx +21 -4
  136. package/src/widget/components/TokenList.tsx +0 -1
  137. package/src/widget/components/TokenSelector.tsx +1 -0
  138. package/src/widget/components/TokenSelectorButton.tsx +75 -0
  139. package/src/widget/components/UserPreferences.tsx +6 -24
  140. package/src/widget/components/WaasFeeOptions.tsx +331 -0
  141. package/src/widget/components/WalletConfirmation.tsx +55 -3
  142. package/src/widget/components/WalletList.tsx +4 -2
  143. package/src/widget/hooks/useBack.tsx +2 -0
  144. package/src/widget/hooks/useCheckout.ts +36 -20
  145. package/src/widget/hooks/useCurrentScreen.tsx +1 -0
  146. package/src/widget/hooks/useDefaultTokenSelection.tsx +104 -28
  147. package/src/widget/hooks/usePayMessage.tsx +86 -11
  148. package/src/widget/hooks/useSelectedFundMethod.tsx +41 -0
  149. package/src/widget/hooks/useSelectedRecipient.tsx +10 -0
  150. package/src/widget/hooks/useSendForm.ts +24 -2
  151. package/src/widget/index.css +27 -0
  152. package/src/widget/widget.tsx +169 -111
  153. package/dist/widget/components/FundSendForm.d.ts.map +0 -1
  154. package/dist/widget/components/PaySendForm.d.ts.map +0 -1
  155. package/dist/widget/components/SimpleSwap.d.ts.map +0 -1
  156. package/dist/widget/hooks/useSwapSettings.d.ts +0 -16
  157. package/dist/widget/hooks/useSwapSettings.d.ts.map +0 -1
  158. package/src/widget/components/FundSendForm.tsx +0 -903
  159. package/src/widget/components/PaySendForm.tsx +0 -869
  160. package/src/widget/components/SimpleSwap.tsx +0 -983
  161. package/src/widget/hooks/useSwapSettings.tsx +0 -100
@@ -1,5 +1,6 @@
1
1
  import "@0xsequence/design-system/preset"
2
2
  import { SequenceHooksContext, SequenceHooksProvider } from "@0xsequence/hooks"
3
+ import { AaveClient, AaveProvider } from "@aave/react"
3
4
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
4
5
  import { AnimatePresence, motion } from "motion/react"
5
6
  import React, {
@@ -9,14 +10,19 @@ import React, {
9
10
  useContext,
10
11
  useEffect,
11
12
  useImperativeHandle,
13
+ useMemo,
12
14
  useRef,
13
15
  useState,
14
- useMemo,
15
16
  } from "react"
16
17
  import { createPortal } from "react-dom"
17
18
  import type { Chain, WalletClient } from "viem"
18
- import { createWalletClient, custom, http, isAddress } from "viem"
19
- import { getAllChains } from "../chains.js"
19
+ import {
20
+ createWalletClient,
21
+ custom,
22
+ encodeFunctionData,
23
+ http,
24
+ isAddress,
25
+ } from "viem"
20
26
  import type { Connector } from "wagmi"
21
27
  import {
22
28
  createConfig,
@@ -28,33 +34,6 @@ import {
28
34
  WagmiContext,
29
35
  WagmiProvider,
30
36
  } from "wagmi"
31
- import { getChainInfo, getRpcUrl } from "../chains.js"
32
- import type { TransactionState } from "../transactions.js"
33
- import type { RelayerEnv, MetaTxnReceipt } from "../relayer.js"
34
- import type { Theme } from "../theme.js"
35
- import { ConnectWallet } from "./components/ConnectWallet.js"
36
- import Footer from "./components/Footer.js"
37
- import Modal from "./components/Modal.js"
38
- import Receipt from "./components/Receipt.js"
39
- import { WalletList } from "./components/WalletList.js"
40
- import { Pay } from "./components/Pay.js"
41
- import TokenList from "./components/TokenList.js"
42
- import TransferPending from "./components/TransferPendingVertical.js"
43
- import WalletConfirmation from "./components/WalletConfirmation.js"
44
- import QRCodeDeposit from "./components/QRCodeDeposit.js"
45
- import { ThemeProvider } from "./components/ThemeProvider.js"
46
- import { ToastProvider } from "./components/Toast.js"
47
- import {
48
- getCommitHash,
49
- getSequenceNodeGatewayUrl,
50
- setWalletConnectProjectId,
51
- setSequenceNodeGatewayUrl,
52
- getSequenceEnv,
53
- } from "../config.js"
54
- import { useRecentTokens } from "./hooks/useRecentTokens.js"
55
- import { useTargetAmount } from "./hooks/useTargetAmount.js"
56
- import { getWethAddress } from "../tokens.js"
57
- import css from "./compiled.css?inline"
58
37
  import {
59
38
  getAnalytics,
60
39
  getSessionId,
@@ -62,89 +41,117 @@ import {
62
41
  trackWalletDisconnected,
63
42
  trackWidgetScreen,
64
43
  } from "../analytics.js"
65
- import type { PrepareSendQuote } from "../prepareSend.js"
66
- import type { SupportedToken } from "../tokens.js"
44
+ import { getAllChains, getChainInfo, getRpcUrl } from "../chains.js"
67
45
  import {
68
- getIsWalletRejectedError,
69
- getIsBalanceTooLowError,
70
- getFullErrorMessage,
71
- getIsApiError,
72
- getIsRateLimitedError,
73
- getPrettifiedErrorMessage,
74
- } from "../error.js"
75
- import {
76
- setSequenceIndexerUrl,
77
- setSequenceApiUrl,
78
- setTrailsApiUrl,
79
- setSequenceProjectAccessKey,
80
- getSequenceIndexerUrl,
46
+ getCommitHash,
47
+ getDebug,
81
48
  getSequenceApiUrl,
49
+ getSequenceEnv,
50
+ getSequenceIndexerUrl,
51
+ getSequenceNodeGatewayUrl,
52
+ getSequenceProjectAccessKey,
82
53
  getTrailsApiUrl,
54
+ setDebug,
55
+ setSequenceApiUrl,
83
56
  setSequenceEnv,
57
+ setSequenceIndexerUrl,
58
+ setSequenceNodeGatewayUrl,
59
+ setSequenceProjectAccessKey,
84
60
  setSlippageTolerance,
85
- getSequenceProjectAccessKey,
86
- setDebug,
61
+ setTrailsApiUrl,
62
+ setWalletConnectProjectId,
87
63
  } from "../config.js"
88
- import { Fund } from "./components/Fund.js"
89
- import { Recipients } from "./components/Recipients.js"
90
- import { Swap } from "./components/Swap.js"
91
- import { Receive } from "./components/Receive.js"
92
- import { Earn } from "./components/Earn.js"
93
- import type { MeshConnectProps } from "./components/MeshConnectIframe.js"
94
- import { MeshConnectFlow } from "./components/MeshConnectFlow.js"
95
- import WalletConnectScreen from "./components/WalletConnect.js"
96
- import FundMethods from "./components/FundMethods.js"
97
- import EarnPools from "./components/EarnPools.js"
98
- import WalletConnectionPending from "./components/WalletConnectionPending.js"
99
- import { AccountIntentTransactionHistory } from "./components/AccountIntentTransactionHistory.js"
100
- import { AccountSettings } from "./components/AccountSettings.js"
101
- import { UserPreferences } from "./components/UserPreferences.js"
64
+ import { cssObjectToString } from "../cssUtils.js"
65
+ import {
66
+ getFullErrorMessage,
67
+ getIsApiError,
68
+ getIsBalanceTooLowError,
69
+ getIsRateLimitedError,
70
+ getIsWalletRejectedError,
71
+ getPrettifiedErrorMessage,
72
+ } from "../error.js"
73
+ import { logger } from "../logger.js"
102
74
  import type { Mode } from "../mode.js"
103
- import type { OnCompleteProps } from "./hooks/useSendForm.js"
104
75
  import type { Pool } from "../pools.js"
105
76
  import { usePools } from "../pools.js"
106
- import { AaveProvider, AaveClient } from "@aave/react"
107
- import { encodeFunctionData } from "viem"
108
- import { cssObjectToString } from "../cssUtils.js"
109
- import { useCheckout } from "./hooks/useCheckout.js"
110
- import { useWallets, walletConnectConnector, connectors } from "../wallets.js"
111
- import { isValidNumeric, isValidInteger } from "../prices.js"
112
- import { ErrorDisplay } from "./components/ErrorDisplay.js"
113
- import { useDebugScreens } from "./hooks/useDebugScreens.js"
114
- import { PriceImpactWarningProvider } from "./hooks/usePriceImpactWarning.js"
115
- import { ModeProvider } from "./hooks/useMode.js"
116
- import { logger } from "../logger.js"
77
+ import type { PrepareSendQuote } from "../prepareSend.js"
78
+ import { isValidInteger, isValidNumeric } from "../prices.js"
79
+ import type { MetaTxnReceipt, RelayerEnv } from "../relayer.js"
80
+ import type { Theme } from "../theme.js"
81
+ import type { SupportedToken } from "../tokens.js"
82
+ import { getWethAddress } from "../tokens.js"
83
+ import type { TransactionState } from "../transactions.js"
84
+ import { connectors, useWallets, walletConnectConnector } from "../wallets.js"
85
+ // import { useOpenConnectModal } from "@0xsequence/connect"
86
+ import css from "./compiled.css?inline"
87
+ import { AccountIntentTransactionHistory } from "./components/AccountIntentTransactionHistory.js"
88
+ import { AccountSettings } from "./components/AccountSettings.js"
117
89
  import { ChainList } from "./components/ChainList.js"
90
+ import { ConnectWallet } from "./components/ConnectWallet.js"
118
91
  import { Disconnect } from "./components/Disconnect.js"
119
- import {
120
- OriginSelectedTokenProvider as SelectedTokenProvider,
121
- type Token,
122
- useOriginSelectedToken as useSelectedToken,
123
- } from "./hooks/useOriginSelectedToken.js"
124
- import { DestinationSelectedTokenProvider } from "./hooks/useDestinationSelectedToken.js"
125
- import { SelectedFeeTokenProvider } from "./hooks/useSelectedFeeToken.js"
126
- import { SelectedRecipientProvider } from "./hooks/useSelectedRecipient.js"
127
- import { SwapAmountProvider } from "./hooks/useSwapAmount.js"
128
- import { ChainFilterProvider } from "./hooks/useChainFilter.js"
129
- import { BalanceVisibleProvider } from "./hooks/useBalanceVisible.js"
130
- import { SwapSettingsProvider } from "./hooks/useSwapSettings.js"
131
- import { ThemeProvider as ThemePreferenceProvider } from "./hooks/useTheme.js"
92
+ import { Earn } from "./components/Earn.js"
93
+ import EarnPools from "./components/EarnPools.js"
94
+ import { ErrorDisplay } from "./components/ErrorDisplay.js"
95
+ import Footer from "./components/Footer.js"
96
+ import { Fund } from "./components/FundSwap.js"
97
+ import FundMethods from "./components/FundMethods.js"
98
+ import { MeshConnectExchanges } from "./components/MeshConnectExchanges.js"
99
+ import { MeshConnectFlow } from "./components/MeshConnectFlow.js"
100
+ import type { MeshConnectProps } from "./components/MeshConnectIframe.js"
101
+ import Modal from "./components/Modal.js"
102
+ import { Pay } from "./components/Pay.js"
103
+ import QRCodeDeposit from "./components/QRCodeDeposit.js"
104
+ import Receipt from "./components/Receipt.js"
105
+ import { Receive } from "./components/Receive.js"
106
+ import { Recipients } from "./components/Recipients.js"
107
+ import { Swap } from "./components/Swap.js"
108
+ import { ThemeProvider } from "./components/ThemeProvider.js"
132
109
  import { ThemeSyncer } from "./components/ThemeSyncer.js"
133
- import { EarnPoolProvider, useEarnPool } from "./hooks/useEarnPool.js"
134
- import { WidgetPropsProvider, useWidgetProps } from "./hooks/useWidgetProps.js"
110
+ import { ToastProvider } from "./components/Toast.js"
111
+ import TokenList from "./components/TokenList.js"
112
+ import TransferPending from "./components/TransferPendingVertical.js"
113
+ import { UserPreferences } from "./components/UserPreferences.js"
114
+ import WalletConfirmation from "./components/WalletConfirmation.js"
115
+ import WalletConnectScreen from "./components/WalletConnect.js"
116
+ import WalletConnectionPending from "./components/WalletConnectionPending.js"
117
+ import { WalletList } from "./components/WalletList.js"
118
+ import { BackProvider, useBack } from "./hooks/useBack.js"
119
+ import { BalanceVisibleProvider } from "./hooks/useBalanceVisible.js"
120
+ import { ChainFilterProvider } from "./hooks/useChainFilter.js"
121
+ import { useCheckout } from "./hooks/useCheckout.js"
135
122
  import {
136
123
  CurrentScreenProvider,
137
124
  useCurrentScreen,
138
125
  type Screen,
139
126
  } from "./hooks/useCurrentScreen.js"
140
- import { BackProvider, useBack } from "./hooks/useBack.js"
141
- import { useInitialRedirect } from "./hooks/useInitialRedirect.js"
127
+ import { useDebugScreens } from "./hooks/useDebugScreens.js"
142
128
  import { DefaultTokenSelectionProvider } from "./hooks/useDefaultTokenSelection.js"
129
+ import { DestinationSelectedTokenProvider } from "./hooks/useDestinationSelectedToken.js"
130
+ import { EarnPoolProvider, useEarnPool } from "./hooks/useEarnPool.js"
131
+ import { useInitialRedirect } from "./hooks/useInitialRedirect.js"
132
+ import { ModeProvider } from "./hooks/useMode.js"
133
+ import {
134
+ OriginSelectedTokenProvider as SelectedTokenProvider,
135
+ useOriginSelectedToken as useSelectedToken,
136
+ type Token,
137
+ } from "./hooks/useOriginSelectedToken.js"
138
+ import { PriceImpactWarningProvider } from "./hooks/usePriceImpactWarning.js"
139
+ import { useRecentTokens } from "./hooks/useRecentTokens.js"
140
+ import { SelectedFeeTokenProvider } from "./hooks/useSelectedFeeToken.js"
143
141
  import {
144
142
  SelectedMeshExchangeProvider,
145
143
  useSelectedMeshExchange,
146
144
  } from "./hooks/useSelectedMeshExchange.js"
147
- import { MeshConnectExchanges } from "./components/MeshConnectExchanges.js"
145
+ import { SelectedRecipientProvider } from "./hooks/useSelectedRecipient.js"
146
+ import type { OnCompleteProps } from "./hooks/useSendForm.js"
147
+ import { SwapAmountProvider } from "./hooks/useSwapAmount.js"
148
+ import { useTargetAmount } from "./hooks/useTargetAmount.js"
149
+ import { ThemeProvider as ThemePreferenceProvider } from "./hooks/useTheme.js"
150
+ import { useWidgetProps, WidgetPropsProvider } from "./hooks/useWidgetProps.js"
151
+ import {
152
+ SelectedFundMethodProvider,
153
+ useSelectedFundMethod,
154
+ } from "./hooks/useSelectedFundMethod.js"
148
155
 
149
156
  export const aaveClient = AaveClient.create()
150
157
 
@@ -178,7 +185,6 @@ export type TrailsWidgetProps = {
178
185
  renderInline?: boolean
179
186
  theme?: Theme
180
187
  mode?: Mode
181
- swapMode?: "simple" | "classic"
182
188
  walletOptions?: string[]
183
189
  onOriginConfirmation?: (data: {
184
190
  txHash: string
@@ -206,6 +212,7 @@ export type TrailsWidgetProps = {
206
212
  gasless?: boolean
207
213
  buttonText?: string
208
214
  customCss?: string | Record<string, string>
215
+ disableCss?: boolean
209
216
  quoteProvider?: string
210
217
  slippageTolerance?: number | string
211
218
  priceImpactWarningThresholdBps?: number
@@ -442,15 +449,24 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
442
449
  hideDisconnect,
443
450
  } = useWidgetProps()
444
451
  const { address, isConnected, chainId, connector } = useAccount()
452
+ // const { setOpenConnectModal } = useOpenConnectModal()
445
453
 
446
454
  // Helper function to detect if the current connector is a Sequence wallet
447
455
  const isSequenceWallet = useMemo(() => {
448
456
  if (!connector) return false
449
457
  const connectorName = connector.name?.toLowerCase() || ""
450
458
  const connectorId = connector.id?.toLowerCase() || ""
451
- return (
459
+ const isSequence =
452
460
  connectorName.includes("sequence") || connectorId.includes("sequence")
453
- )
461
+
462
+ console.log("[trails-sdk] Sequence wallet detection:", {
463
+ connectorName,
464
+ connectorId,
465
+ isSequence,
466
+ connector: connector.name,
467
+ })
468
+
469
+ return isSequence
454
470
  }, [connector])
455
471
  const connections = useConnections()
456
472
  const { disconnectAsync } = useDisconnect()
@@ -461,8 +477,13 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
461
477
  const [isModalOpen, setIsModalOpen] = useState(false)
462
478
  const [currentMode, setCurrentMode] = useState<Mode>(mode)
463
479
  const { currentScreen, setCurrentScreen } = useCurrentScreen()
464
- const { goBack, clearHistory, isNavigatingBack, setCurrentScreenWithBack } =
465
- useBack()
480
+ const {
481
+ goBack,
482
+ clearHistory,
483
+ isNavigatingBack,
484
+ setCurrentScreenWithBack,
485
+ getPreviousScreen,
486
+ } = useBack()
466
487
 
467
488
  // Wrapper function that clears errors when going back
468
489
  const handleBack = () => {
@@ -472,7 +493,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
472
493
  const [previousAddress, setPreviousAddress] = useState<string | undefined>(
473
494
  address,
474
495
  )
475
- const [selectedFundMethod, setSelectedFundMethod] = useState<string>("wallet")
496
+ const { selectedFundMethod, setSelectedFundMethod } = useSelectedFundMethod()
476
497
  const { selectedPool, setSelectedPool } = useEarnPool()
477
498
  const [selectedWalletId, setSelectedWalletId] = useState<string | null>(
478
499
  () => {
@@ -529,6 +550,17 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
529
550
  }
530
551
  }, [])
531
552
 
553
+ // Update currentMode when mode prop changes
554
+ useEffect(() => {
555
+ setCurrentMode(mode)
556
+
557
+ // If connected, navigate to the appropriate screen for the new mode
558
+ if (isConnected) {
559
+ const newScreen = getInitialScreenForMode(mode)
560
+ setCurrentScreen(newScreen)
561
+ }
562
+ }, [mode, isConnected, setCurrentScreen, getInitialScreenForMode])
563
+
532
564
  // Use the simple initial redirect hook
533
565
  const { hasConnectedBefore } = useInitialRedirect(
534
566
  isConnected,
@@ -961,6 +993,15 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
961
993
  "[trails-sdk] Initiating connection to wallet",
962
994
  walletId,
963
995
  )
996
+
997
+ // Handle sequence-waas wallet using the openConnectModal hook
998
+ if (walletId === "sequence-waas") {
999
+ logger.console.log("[trails-sdk] Opening Sequence WaaS connect modal")
1000
+ // setOpenConnectModal(true)
1001
+ // setIsConnecting(false)
1002
+ return
1003
+ }
1004
+
964
1005
  if (config.connector !== walletConnectConnector) {
965
1006
  logger.console.log(
966
1007
  "[trails-sdk] Initiating connection to walletId",
@@ -1166,6 +1207,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
1166
1207
  setTotalCompletionSeconds(null)
1167
1208
  clearHistory()
1168
1209
  }, [
1210
+ setSelectedFundMethod,
1169
1211
  setDestinationTxHash,
1170
1212
  setDestinationChainId,
1171
1213
  setTransactionStates,
@@ -1518,7 +1560,12 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
1518
1560
  setCurrentScreen("wallet-connect")
1519
1561
  } else {
1520
1562
  saveLastClickedWallet(walletId)
1521
- setCurrentScreen("wallet-connection-pending")
1563
+ // Preserve the existing back route from the navigation stack
1564
+ const backRoute = getPreviousScreen()
1565
+ setCurrentScreenWithBack(
1566
+ "wallet-connection-pending",
1567
+ backRoute || undefined,
1568
+ )
1522
1569
  // Auto-trigger connection
1523
1570
  setTimeout(() => {
1524
1571
  handleWalletConnect(walletId)
@@ -1642,6 +1689,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
1642
1689
  case "fund-form":
1643
1690
  return walletClient?.account ? (
1644
1691
  <Fund
1692
+ selectedToken={selectedToken}
1645
1693
  onSend={handleOnSend}
1646
1694
  onWaitingForWalletConfirm={handleWaitingForWalletConfirm}
1647
1695
  onConfirm={() => setCurrentScreen("pending")}
@@ -1751,7 +1799,12 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
1751
1799
  )
1752
1800
  // Don't reset the redirect flag - user has already been through initial flow
1753
1801
  setTimeout(() => {
1754
- setCurrentScreen("wallet-connection-pending")
1802
+ // Preserve the existing back route from the navigation stack
1803
+ const backRoute = getPreviousScreen()
1804
+ setCurrentScreenWithBack(
1805
+ "wallet-connection-pending",
1806
+ backRoute || undefined,
1807
+ )
1755
1808
  }, 100)
1756
1809
  // Auto-trigger connection
1757
1810
  setTimeout(() => {
@@ -1821,6 +1874,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
1821
1874
  toToken={toToken || undefined}
1822
1875
  toCalldata={toCalldata || undefined}
1823
1876
  walletClient={walletClient}
1877
+ isSequenceWallet={isSequenceWallet}
1824
1878
  onTransactionStateChange={handleTransactionStateChange}
1825
1879
  onError={handleSendError}
1826
1880
  paymasterUrls={paymasterUrls}
@@ -1895,6 +1949,12 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
1895
1949
  getInitialScreenForMode={getInitialScreenForMode}
1896
1950
  />
1897
1951
  )
1952
+ case "home": {
1953
+ // Redirect to the appropriate screen for the current mode
1954
+ const homeScreen = getInitialScreenForMode(currentMode)
1955
+ setCurrentScreen(homeScreen)
1956
+ return null
1957
+ }
1898
1958
  default:
1899
1959
  return null
1900
1960
  }
@@ -2024,8 +2084,8 @@ const WidgetInner = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2024
2084
  <SwapAmountProvider>
2025
2085
  <ChainFilterProvider>
2026
2086
  <BalanceVisibleProvider>
2027
- <SwapSettingsProvider>
2028
- <ThemePreferenceProvider>
2087
+ <ThemePreferenceProvider>
2088
+ <SelectedFundMethodProvider>
2029
2089
  <ThemeSyncer />
2030
2090
  <EarnPoolProvider>
2031
2091
  <SelectedMeshExchangeProvider>
@@ -2034,8 +2094,8 @@ const WidgetInner = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2034
2094
  </DefaultTokenSelectionProvider>
2035
2095
  </SelectedMeshExchangeProvider>
2036
2096
  </EarnPoolProvider>
2037
- </ThemePreferenceProvider>
2038
- </SwapSettingsProvider>
2097
+ </SelectedFundMethodProvider>
2098
+ </ThemePreferenceProvider>
2039
2099
  </BalanceVisibleProvider>
2040
2100
  </ChainFilterProvider>
2041
2101
  </SwapAmountProvider>
@@ -2062,7 +2122,7 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2062
2122
  logger.console.warn("appId is deprecated. Use projectAccessKey instead.")
2063
2123
  setSequenceProjectAccessKey(props.appId)
2064
2124
  }
2065
- if (props.sequenceEnv) {
2125
+ if (props.sequenceEnv && props.sequenceEnv !== getSequenceEnv()) {
2066
2126
  logger.console.log("props.sequenceEnv", props.sequenceEnv)
2067
2127
  setSequenceEnv(props.sequenceEnv)
2068
2128
  }
@@ -2100,7 +2160,7 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2100
2160
  logger.console.log("props.slippageTolerance", props.slippageTolerance)
2101
2161
  setSlippageTolerance(String(props.slippageTolerance))
2102
2162
  }
2103
- if (typeof props.debug === "boolean") {
2163
+ if (typeof props.debug === "boolean" && props.debug === getDebug()) {
2104
2164
  logger.console.log("props.debug", props.debug)
2105
2165
  setDebug(props.debug)
2106
2166
  }
@@ -2169,12 +2229,6 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2169
2229
  },
2170
2230
  }
2171
2231
 
2172
- logger.console.log("[trails-sdk] sequenceConfig", sequenceConfig)
2173
- logger.console.log(
2174
- "[trails-sdk] props.decoupleWagmi",
2175
- props.decoupleWagmi,
2176
- )
2177
-
2178
2232
  if (props.decoupleWagmi) {
2179
2233
  return (
2180
2234
  <AaveProvider client={aaveClient}>
@@ -2231,6 +2285,10 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2231
2285
  return props.customCss
2232
2286
  }, [props.customCss])
2233
2287
 
2288
+ if (props.disableCss) {
2289
+ return <StrictMode>{content}</StrictMode>
2290
+ }
2291
+
2234
2292
  return (
2235
2293
  <ShadowPortal customCss={customCss}>
2236
2294
  <StrictMode>{content}</StrictMode>
@@ -1 +0,0 @@
1
- {"version":3,"file":"FundSendForm.d.ts","sourceRoot":"","sources":["../../../src/widget/components/FundSendForm.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAa,MAAM,yBAAyB,CAAA;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAOjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAS5D,UAAU,iBAAiB;IACzB,aAAa,EAAE,KAAK,CAAA;IACpB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAC7C,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,wBAAwB,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAA;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC/C,yBAAyB,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC5D,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;IACpE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uBAAuB,CAAC,EAAE,CACxB,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,kBAAkB,EAAE,MAAM,CAAA;KAC3B,EACD,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,KAC5B,IAAI,CAAA;IACT,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA60BpD,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PaySendForm.d.ts","sourceRoot":"","sources":["../../../src/widget/components/PaySendForm.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SimpleSwap.d.ts","sourceRoot":"","sources":["../../../src/widget/components/SimpleSwap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAmBjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGjE,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAC1B,wBAAwB,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAA;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC/C,yBAAyB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/C,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAC7C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;IACpE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,+BAA+B,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CAC/D;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAs6BhD,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -1,16 +0,0 @@
1
- import { default as React, ReactNode } from 'react';
2
- interface SwapSettingsContextType {
3
- isSimpleSwapMode: boolean;
4
- setIsSimpleSwapMode: (simple: boolean) => void;
5
- setIsSimpleSwapModeWithStorage: (simple: boolean) => void;
6
- toggleSimpleSwapMode: () => void;
7
- resetSwapSettings: () => void;
8
- }
9
- interface SwapSettingsProviderProps {
10
- children: ReactNode;
11
- initialSimpleMode?: boolean;
12
- }
13
- export declare const SwapSettingsProvider: React.FC<SwapSettingsProviderProps>;
14
- export declare const useSwapSettings: () => SwapSettingsContextType;
15
- export {};
16
- //# sourceMappingURL=useSwapSettings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwapSettings.d.ts","sourceRoot":"","sources":["../../../src/widget/hooks/useSwapSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,UAAU,uBAAuB;IAC/B,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,8BAA8B,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACzD,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,iBAAiB,EAAE,MAAM,IAAI,CAAA;CAC9B;AAMD,UAAU,yBAAyB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAID,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA2DpE,CAAA;AAED,eAAO,MAAM,eAAe,QAAO,uBAUlC,CAAA"}