0xtrails 0.1.13 → 0.2.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 (216) hide show
  1. package/dist/aave.d.ts.map +1 -1
  2. package/dist/analytics.d.ts +11 -2
  3. package/dist/analytics.d.ts.map +1 -1
  4. package/dist/apiClient.d.ts +1 -1
  5. package/dist/apiClient.d.ts.map +1 -1
  6. package/dist/{proxyCaller.d.ts → balanceInjector.d.ts} +5 -4
  7. package/dist/balanceInjector.d.ts.map +1 -0
  8. package/dist/{ccip-D3gTQONK.js → ccip-D6ToCrWc.js} +12 -12
  9. package/dist/cctp.d.ts.map +1 -1
  10. package/dist/cctpqueue.d.ts +3 -3
  11. package/dist/cctpqueue.d.ts.map +1 -1
  12. package/dist/chains.d.ts.map +1 -1
  13. package/dist/config.d.ts +17 -3
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/constants.d.ts +5 -4
  16. package/dist/constants.d.ts.map +1 -1
  17. package/dist/contractUtils.d.ts +2 -0
  18. package/dist/contractUtils.d.ts.map +1 -1
  19. package/dist/customChains.d.ts +24 -0
  20. package/dist/customChains.d.ts.map +1 -0
  21. package/dist/{index-CnUM7lKf.js → index-BqgeTLL8.js} +34072 -30146
  22. package/dist/index.d.ts +5 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +411 -400
  25. package/dist/intentEntrypoint.d.ts +96 -0
  26. package/dist/intentEntrypoint.d.ts.map +1 -0
  27. package/dist/intents.d.ts +5 -3
  28. package/dist/intents.d.ts.map +1 -1
  29. package/dist/metaTxnMonitor.d.ts.map +1 -1
  30. package/dist/morpho.d.ts.map +1 -1
  31. package/dist/pools.d.ts +3 -1
  32. package/dist/pools.d.ts.map +1 -1
  33. package/dist/prepareSend.d.ts +8 -2
  34. package/dist/prepareSend.d.ts.map +1 -1
  35. package/dist/prices.d.ts +1 -1
  36. package/dist/prices.d.ts.map +1 -1
  37. package/dist/relaySdk.d.ts.map +1 -1
  38. package/dist/relayer.d.ts.map +1 -1
  39. package/dist/toast.d.ts +9 -0
  40. package/dist/toast.d.ts.map +1 -0
  41. package/dist/tokenBalances.d.ts +6 -2
  42. package/dist/tokenBalances.d.ts.map +1 -1
  43. package/dist/tokens.d.ts.map +1 -1
  44. package/dist/trails.d.ts +6 -5
  45. package/dist/trails.d.ts.map +1 -1
  46. package/dist/trailsClient.d.ts +12 -0
  47. package/dist/trailsClient.d.ts.map +1 -0
  48. package/dist/transactions.d.ts +8 -0
  49. package/dist/transactions.d.ts.map +1 -1
  50. package/dist/wallets.d.ts.map +1 -1
  51. package/dist/widget/components/AccountActionsDropdown.d.ts.map +1 -1
  52. package/dist/widget/components/AccountIntentTransactionHistory.d.ts.map +1 -1
  53. package/dist/widget/components/AccountSettings.d.ts +7 -0
  54. package/dist/widget/components/AccountSettings.d.ts.map +1 -0
  55. package/dist/widget/components/ChainList.d.ts +0 -1
  56. package/dist/widget/components/ChainList.d.ts.map +1 -1
  57. package/dist/widget/components/ClassicSwap.d.ts +46 -0
  58. package/dist/widget/components/ClassicSwap.d.ts.map +1 -0
  59. package/dist/widget/components/ConfigDisplay.d.ts.map +1 -1
  60. package/dist/widget/components/ConnectedWallets.d.ts +9 -0
  61. package/dist/widget/components/ConnectedWallets.d.ts.map +1 -0
  62. package/dist/widget/components/DebugMenu.d.ts.map +1 -1
  63. package/dist/widget/components/DebugScreensList.d.ts.map +1 -1
  64. package/dist/widget/components/DebugToast.d.ts +3 -0
  65. package/dist/widget/components/DebugToast.d.ts.map +1 -0
  66. package/dist/widget/components/Earn.d.ts.map +1 -1
  67. package/dist/widget/components/EarnPools.d.ts.map +1 -1
  68. package/dist/widget/components/Fund.d.ts +44 -0
  69. package/dist/widget/components/Fund.d.ts.map +1 -0
  70. package/dist/widget/components/Identicon.d.ts +9 -0
  71. package/dist/widget/components/Identicon.d.ts.map +1 -0
  72. package/dist/widget/components/Pay.d.ts +46 -0
  73. package/dist/widget/components/Pay.d.ts.map +1 -0
  74. package/dist/widget/components/Receive.d.ts.map +1 -1
  75. package/dist/widget/components/RecentTokens.d.ts.map +1 -1
  76. package/dist/widget/components/Recipients.d.ts +9 -0
  77. package/dist/widget/components/Recipients.d.ts.map +1 -0
  78. package/dist/widget/components/RefundWarning.d.ts +9 -0
  79. package/dist/widget/components/RefundWarning.d.ts.map +1 -0
  80. package/dist/widget/components/SimpleSwap.d.ts.map +1 -1
  81. package/dist/widget/components/Swap.d.ts.map +1 -1
  82. package/dist/widget/components/SwapSettings.d.ts +1 -5
  83. package/dist/widget/components/SwapSettings.d.ts.map +1 -1
  84. package/dist/widget/components/ThemeProvider.d.ts.map +1 -1
  85. package/dist/widget/components/ThemeSyncer.d.ts +6 -0
  86. package/dist/widget/components/ThemeSyncer.d.ts.map +1 -0
  87. package/dist/widget/components/Toast.d.ts +24 -0
  88. package/dist/widget/components/Toast.d.ts.map +1 -0
  89. package/dist/widget/components/TokenList.d.ts.map +1 -1
  90. package/dist/widget/components/TransactionDetails.d.ts.map +1 -1
  91. package/dist/widget/components/TruncatedAddress.d.ts +2 -0
  92. package/dist/widget/components/TruncatedAddress.d.ts.map +1 -1
  93. package/dist/widget/components/UserPreferences.d.ts +7 -0
  94. package/dist/widget/components/UserPreferences.d.ts.map +1 -0
  95. package/dist/widget/hooks/useBalanceVisible.d.ts +1 -0
  96. package/dist/widget/hooks/useBalanceVisible.d.ts.map +1 -1
  97. package/dist/widget/hooks/useCheckout.d.ts.map +1 -1
  98. package/dist/widget/hooks/useCurrentScreen.d.ts +1 -1
  99. package/dist/widget/hooks/useCurrentScreen.d.ts.map +1 -1
  100. package/dist/widget/hooks/useDebugScreens.d.ts +1 -1
  101. package/dist/widget/hooks/useDebugScreens.d.ts.map +1 -1
  102. package/dist/widget/hooks/useDefaultTokenSelection.d.ts +54 -0
  103. package/dist/widget/hooks/useDefaultTokenSelection.d.ts.map +1 -0
  104. package/dist/widget/hooks/useIntentTransactionHistory.d.ts.map +1 -1
  105. package/dist/widget/hooks/usePayMessage.d.ts +34 -0
  106. package/dist/widget/hooks/usePayMessage.d.ts.map +1 -0
  107. package/dist/widget/hooks/useRecipients.d.ts +17 -0
  108. package/dist/widget/hooks/useRecipients.d.ts.map +1 -0
  109. package/dist/widget/hooks/useSelectedRecipient.d.ts +12 -0
  110. package/dist/widget/hooks/useSelectedRecipient.d.ts.map +1 -0
  111. package/dist/widget/hooks/useSendForm.d.ts +2 -0
  112. package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
  113. package/dist/widget/hooks/useSwapAmount.d.ts +13 -0
  114. package/dist/widget/hooks/useSwapAmount.d.ts.map +1 -0
  115. package/dist/widget/hooks/useSwapSettings.d.ts +16 -0
  116. package/dist/widget/hooks/useSwapSettings.d.ts.map +1 -0
  117. package/dist/widget/hooks/useTargetAmount.d.ts +5 -0
  118. package/dist/widget/hooks/useTargetAmount.d.ts.map +1 -0
  119. package/dist/widget/hooks/useTheme.d.ts +14 -0
  120. package/dist/widget/hooks/useTheme.d.ts.map +1 -0
  121. package/dist/widget/hooks/useTokenList.d.ts.map +1 -1
  122. package/dist/widget/index.js +2 -2
  123. package/dist/widget/widget.d.ts +9 -0
  124. package/dist/widget/widget.d.ts.map +1 -1
  125. package/package.json +29 -28
  126. package/src/aave.ts +6 -1
  127. package/src/analytics.ts +103 -53
  128. package/src/apiClient.ts +1 -1
  129. package/src/{proxyCaller.ts → balanceInjector.ts} +22 -17
  130. package/src/cctp.ts +6 -2
  131. package/src/cctpqueue.ts +7 -7
  132. package/src/chains.ts +8 -0
  133. package/src/config.ts +40 -9
  134. package/src/constants.ts +11 -8
  135. package/src/contractUtils.ts +33 -2
  136. package/src/customChains.ts +24 -0
  137. package/src/index.ts +11 -1
  138. package/src/intentEntrypoint.ts +253 -0
  139. package/src/intents.ts +87 -54
  140. package/src/metaTxnMonitor.ts +1 -0
  141. package/src/morpho.ts +13 -2
  142. package/src/pools.ts +68 -86
  143. package/src/prepareSend.ts +437 -207
  144. package/src/prices.ts +51 -7
  145. package/src/relaySdk.ts +6 -4
  146. package/src/relayer.ts +2 -0
  147. package/src/toast.ts +110 -0
  148. package/src/tokenBalances.ts +112 -20
  149. package/src/tokens.ts +70 -7
  150. package/src/trails.ts +80 -77
  151. package/src/trailsClient.ts +45 -0
  152. package/src/transactions.ts +27 -35
  153. package/src/umd.tsx +1 -1
  154. package/src/wallets.ts +2 -1
  155. package/src/widget/assets/sequence-logo.svg +15 -0
  156. package/src/widget/compiled.css +2 -2
  157. package/src/widget/components/AccountActionsDropdown.tsx +18 -159
  158. package/src/widget/components/AccountIntentTransactionHistory.tsx +346 -63
  159. package/src/widget/components/AccountSettings.tsx +96 -0
  160. package/src/widget/components/ChainFilterDropdown.tsx +1 -1
  161. package/src/widget/components/ChainList.tsx +10 -20
  162. package/src/widget/components/ClassicSwap.tsx +923 -0
  163. package/src/widget/components/ConfigDisplay.tsx +8 -5
  164. package/src/widget/components/ConnectedWallets.tsx +260 -0
  165. package/src/widget/components/DebugMenu.tsx +2 -0
  166. package/src/widget/components/DebugScreensList.tsx +3 -0
  167. package/src/widget/components/DebugToast.tsx +63 -0
  168. package/src/widget/components/Earn.tsx +108 -116
  169. package/src/widget/components/EarnPools.tsx +2 -4
  170. package/src/widget/components/EarnPoolsFilters.tsx +6 -6
  171. package/src/widget/components/Fund.tsx +1245 -0
  172. package/src/widget/components/FundMethods.tsx +1 -1
  173. package/src/widget/components/FundSendForm.tsx +1 -1
  174. package/src/widget/components/Identicon.tsx +158 -0
  175. package/src/widget/components/Pay.tsx +1088 -0
  176. package/src/widget/components/PaySendForm.tsx +1 -1
  177. package/src/widget/components/QuoteDetails.tsx +1 -1
  178. package/src/widget/components/Receipt.tsx +1 -1
  179. package/src/widget/components/Receive.tsx +4 -2
  180. package/src/widget/components/RecentTokens.tsx +2 -1
  181. package/src/widget/components/Recipients.tsx +448 -0
  182. package/src/widget/components/RefundWarning.tsx +61 -0
  183. package/src/widget/components/ScreenHeader.tsx +1 -1
  184. package/src/widget/components/SimpleSwap.tsx +74 -58
  185. package/src/widget/components/Swap.tsx +35 -853
  186. package/src/widget/components/SwapSettings.tsx +5 -11
  187. package/src/widget/components/ThemeProvider.tsx +32 -0
  188. package/src/widget/components/ThemeSyncer.tsx +47 -0
  189. package/src/widget/components/Toast.tsx +315 -0
  190. package/src/widget/components/TokenList.tsx +2 -34
  191. package/src/widget/components/TokenSelector.tsx +3 -3
  192. package/src/widget/components/TransactionDetails.tsx +153 -13
  193. package/src/widget/components/TruncatedAddress.tsx +5 -1
  194. package/src/widget/components/UserPreferences.tsx +156 -0
  195. package/src/widget/components/WalletList.tsx +1 -1
  196. package/src/widget/hooks/useBalanceVisible.tsx +40 -2
  197. package/src/widget/hooks/useCheckout.ts +13 -0
  198. package/src/widget/hooks/useCurrentScreen.tsx +3 -0
  199. package/src/widget/hooks/useDebugScreens.ts +12 -2
  200. package/src/widget/hooks/useDefaultTokenSelection.tsx +475 -0
  201. package/src/widget/hooks/useIntentTransactionHistory.ts +212 -0
  202. package/src/widget/hooks/usePayMessage.tsx +370 -0
  203. package/src/widget/hooks/useRecipients.ts +168 -0
  204. package/src/widget/hooks/useSelectedRecipient.tsx +48 -0
  205. package/src/widget/hooks/useSendForm.ts +179 -26
  206. package/src/widget/hooks/useSwapAmount.tsx +50 -0
  207. package/src/widget/hooks/useSwapSettings.tsx +100 -0
  208. package/src/widget/hooks/useTargetAmount.ts +23 -0
  209. package/src/widget/hooks/useTheme.tsx +80 -0
  210. package/src/widget/hooks/useTokenList.ts +20 -11
  211. package/src/widget/index.css +45 -21
  212. package/src/widget/widget.tsx +164 -68
  213. package/dist/address.d.ts +0 -2
  214. package/dist/address.d.ts.map +0 -1
  215. package/dist/proxyCaller.d.ts.map +0 -1
  216. package/src/address.ts +0 -6
@@ -0,0 +1,96 @@
1
+ import { LogOut, Plus, User, ChevronRight, History } from "lucide-react"
2
+ import type React from "react"
3
+ import { useWidgetProps } from "../hooks/useWidgetProps.js"
4
+ import { useCurrentScreen, type Screen } from "../hooks/useCurrentScreen.js"
5
+ import { ConnectedWallets } from "./ConnectedWallets.js"
6
+ import { ScreenHeader } from "./ScreenHeader.js"
7
+
8
+ const ACTIONS = [
9
+ {
10
+ label: "History",
11
+ screen: "account-history",
12
+ icon: History,
13
+ disabled: false,
14
+ },
15
+ {
16
+ label: "User preferences",
17
+ screen: "user-preferences",
18
+ icon: User,
19
+ disabled: false,
20
+ },
21
+ { label: "Disconnect", screen: "disconnect", icon: LogOut, disabled: false },
22
+ ] as const
23
+
24
+ interface AccountSettingsProps {
25
+ onBack?: () => void
26
+ }
27
+
28
+ export const AccountSettings: React.FC<AccountSettingsProps> = ({ onBack }) => {
29
+ const { hideDisconnect, decoupleWagmi } = useWidgetProps()
30
+ const { setCurrentScreen } = useCurrentScreen()
31
+
32
+ return (
33
+ <div className="flex flex-col h-full">
34
+ <ScreenHeader
35
+ headerContent="Settings"
36
+ headerContentAlign="left"
37
+ onBack={onBack}
38
+ showAccountActions={false}
39
+ />
40
+
41
+ {/* Connected Wallets */}
42
+ <div>
43
+ <ConnectedWallets />
44
+ </div>
45
+
46
+ {/* Link a Wallet */}
47
+ <div className="mb-4">
48
+ <button
49
+ type="button"
50
+ onClick={() => setCurrentScreen("wallet-list")}
51
+ className="w-full text-left px-0 py-3 text-sm trails-list-item flex items-center justify-between cursor-pointer transition-colors border-b border-gray-200 dark:border-gray-700 trails-text-primary"
52
+ >
53
+ <div className="flex items-center gap-3">
54
+ <Plus className="w-4 h-4" />
55
+ Link a Wallet
56
+ </div>
57
+ <span className="text-sm text-gray-500 dark:text-gray-400">›</span>
58
+ </button>
59
+ </div>
60
+
61
+ {/* Actions */}
62
+ <div className="space-y-0">
63
+ {ACTIONS.map((action) => {
64
+ if (action.disabled) return null
65
+ // Hide disconnect action if hideDisconnect is true
66
+ if (
67
+ (hideDisconnect || decoupleWagmi) &&
68
+ action.screen === "disconnect"
69
+ )
70
+ return null
71
+
72
+ const IconComponent = action.icon
73
+
74
+ return (
75
+ <button
76
+ key={action.screen}
77
+ type="button"
78
+ onClick={() => {
79
+ setCurrentScreen(action.screen as Screen)
80
+ }}
81
+ className={`w-full text-left px-0 py-3 text-sm trails-list-item flex items-center justify-between cursor-pointer transition-colors trails-text-primary`}
82
+ >
83
+ <div className="flex items-center gap-3">
84
+ <IconComponent className="w-4 h-4" />
85
+ {action.label}
86
+ </div>
87
+ <ChevronRight className="w-4 h-4 text-gray-400" />
88
+ </button>
89
+ )
90
+ })}
91
+ </div>
92
+ </div>
93
+ )
94
+ }
95
+
96
+ export default AccountSettings
@@ -119,7 +119,7 @@ export const ChainFilterDropdown: React.FC<ChainFilterDropdownProps> = ({
119
119
  />
120
120
  )}
121
121
  <ChevronDown
122
- className={`h-4 w-4 text-gray-400 transition-all duration-200 ${
122
+ className={`h-5 w-5 text-gray-400 transition-all duration-200 ${
123
123
  isOpen ? "rotate-180" : ""
124
124
  }`}
125
125
  />
@@ -1,4 +1,4 @@
1
- import { useState, useMemo, useEffect } from "react"
1
+ import { useState, useMemo } from "react"
2
2
  import type React from "react"
3
3
  import { AnimatePresence, motion } from "framer-motion"
4
4
  import { ScreenHeader } from "./ScreenHeader.js"
@@ -6,8 +6,7 @@ import { ChainImage } from "./ChainImage.js"
6
6
  import { AllChainsIcon } from "./AllChainsIcon.js"
7
7
  import { SearchInputField } from "./SearchInputField.js"
8
8
  import { useChainFilter } from "../hooks/useChainFilter.js"
9
- import { getSupportedSequenceChains } from "../../chains.js"
10
- import type { Chain } from "viem"
9
+ import { useSupportedChains } from "../../chains.js"
11
10
 
12
11
  export interface ChainListItem {
13
12
  chainId: number
@@ -16,33 +15,22 @@ export interface ChainListItem {
16
15
  }
17
16
 
18
17
  interface ChainListProps {
19
- chains?: ChainListItem[]
20
18
  onBack: () => void
21
19
  }
22
20
 
23
- export const ChainList: React.FC<ChainListProps> = ({ chains, onBack }) => {
21
+ export const ChainList: React.FC<ChainListProps> = ({ onBack }) => {
24
22
  const [searchQuery, setSearchQuery] = useState("")
25
- const [supportedChains, setSupportedChains] = useState<Chain[]>([])
26
23
  const { selectedChainId, setSelectedChainId } = useChainFilter()
27
-
28
- // Load supported chains on mount if no chains provided
29
- useEffect(() => {
30
- if (!chains) {
31
- getSupportedSequenceChains().then(setSupportedChains)
32
- }
33
- }, [chains])
24
+ const { supportedChains } = useSupportedChains()
34
25
 
35
26
  // Convert chains to ChainListItem format
36
27
  const chainList = useMemo(() => {
37
- if (chains) {
38
- return chains
39
- }
40
28
  return supportedChains.map((chain) => ({
41
29
  chainId: chain.id,
42
30
  name: chain.name,
43
31
  imageUrl: "", // ChainImage component handles the icons
44
32
  }))
45
- }, [chains, supportedChains])
33
+ }, [supportedChains])
46
34
 
47
35
  // Filter chains based on search query
48
36
  const filteredChains = useMemo(() => {
@@ -83,7 +71,7 @@ export const ChainList: React.FC<ChainListProps> = ({ chains, onBack }) => {
83
71
  <motion.button
84
72
  type="button"
85
73
  onClick={() => handleChainSelect(null)}
86
- className="w-full py-2 px-4 flex items-center space-x-3 transition-all duration-200 trails-bg-secondary trails-hover-bg trails-border-radius-list-button cursor-pointer"
74
+ className="w-full py-2 px-4 flex items-center space-x-3 transition-all duration-200 trails-list-item trails-border-radius-list-button cursor-pointer"
87
75
  title="Show tokens from all chains"
88
76
  initial={{ opacity: 0, y: 20 }}
89
77
  animate={{ opacity: 1, y: 0 }}
@@ -112,8 +100,10 @@ export const ChainList: React.FC<ChainListProps> = ({ chains, onBack }) => {
112
100
  key={chain.chainId}
113
101
  type="button"
114
102
  onClick={() => handleChainSelect(chain.chainId)}
115
- className={`w-full py-2 px-4 flex items-center space-x-3 transition-all duration-200 trails-bg-secondary trails-hover-bg trails-border-radius-list-button cursor-pointer ${
116
- selectedChainId === chain.chainId ? "trails-bg-card" : ""
103
+ className={`w-full py-2 px-4 flex items-center space-x-3 transition-all duration-200 trails-list-item trails-border-radius-list-button cursor-pointer ${
104
+ selectedChainId === chain.chainId
105
+ ? "trails-list-item-selected"
106
+ : ""
117
107
  }`}
118
108
  title={`Select ${chain.name}`}
119
109
  initial={{ opacity: 0, y: 20 }}