@lifi/widget 1.26.5 → 1.27.1

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 (155) hide show
  1. package/App.js +15 -2
  2. package/AppDrawer.d.ts +4 -2
  3. package/AppDrawer.style.d.ts +1 -1
  4. package/cjs/App.js +14 -1
  5. package/cjs/AppDrawer.d.ts +4 -2
  6. package/cjs/AppDrawer.style.d.ts +1 -1
  7. package/cjs/components/ActiveSwaps/ActiveSwaps.style.d.ts +1 -1
  8. package/cjs/components/Card/Card.d.ts +1 -1
  9. package/cjs/components/ChainSelect/ChainSelect.d.ts +1 -0
  10. package/cjs/components/ChainSelect/ChainSelect.style.d.ts +1 -1
  11. package/cjs/components/Header/Header.style.d.ts +2 -2
  12. package/cjs/components/Menu.js +1 -1
  13. package/cjs/components/PoweredBy/PoweredBy.js +5 -2
  14. package/cjs/components/ReverseTokensButton/ReverseTokensButton.style.d.ts +1 -1
  15. package/cjs/components/SelectTokenButton/SelectTokenButton.js +1 -1
  16. package/cjs/components/SendToWallet/SendToWallet.js +20 -6
  17. package/cjs/components/SendToWallet/SendToWallet.style.d.ts +1 -1
  18. package/cjs/components/SendToWallet/SendToWallet.style.js +6 -0
  19. package/cjs/components/SendToWallet/SendToWalletButton.js +5 -6
  20. package/cjs/components/SmallAvatar.d.ts +20 -0
  21. package/cjs/components/SmallAvatar.js +15 -1
  22. package/cjs/components/Step/CircularProgress.d.ts +1 -0
  23. package/cjs/components/Step/StepList.d.ts +1 -0
  24. package/cjs/components/Step/StepProcess.style.d.ts +1 -1
  25. package/cjs/components/SwapButton/SwapButton.d.ts +1 -1
  26. package/cjs/components/SwapButton/SwapButton.js +4 -6
  27. package/cjs/components/SwapButton/index.d.ts +1 -0
  28. package/cjs/components/SwapButton/index.js +15 -0
  29. package/cjs/components/SwapButton/types.d.ts +1 -2
  30. package/cjs/components/SwapInput/SwapInput.style.d.ts +1 -1
  31. package/cjs/components/SwapInput/SwapInput.style.js +1 -0
  32. package/cjs/components/SwapInput/SwapInputAdornment.style.d.ts +1 -1
  33. package/cjs/components/SwapInput/SwapInputEndAdornment.d.ts +1 -0
  34. package/cjs/components/SwapInput/SwapInputStartAdornment.js +1 -1
  35. package/cjs/components/SwapRouteCard/SwapRouteCard.style.d.ts +1 -1
  36. package/cjs/components/SwapRoutes/SwapRoutesExpanded.d.ts +1 -0
  37. package/cjs/components/Token/Token.d.ts +3 -0
  38. package/cjs/components/Token/Token.js +16 -2
  39. package/cjs/components/TokenAvatar/TokenAvatar.d.ts +2 -1
  40. package/cjs/components/TokenAvatar/TokenAvatar.js +8 -8
  41. package/cjs/components/TokenAvatar/TokenAvatar.style.d.ts +2 -2
  42. package/cjs/components/TokenAvatar/TokenAvatar.style.js +3 -3
  43. package/cjs/config/theme.js +2 -2
  44. package/cjs/config/version.d.ts +1 -1
  45. package/cjs/config/version.js +1 -1
  46. package/cjs/i18n/de.json +30 -6
  47. package/cjs/i18n/fr.json +30 -6
  48. package/cjs/i18n/it.json +30 -6
  49. package/cjs/i18n/uk.json +38 -20
  50. package/cjs/i18n/zh.json +30 -6
  51. package/cjs/index.d.ts +3 -1
  52. package/cjs/pages/ActiveSwapsPage/ActiveSwapsPage.d.ts +1 -0
  53. package/cjs/pages/MainPage/MainSwapButton.js +4 -4
  54. package/cjs/pages/SelectTokenPage/SearchTokenInput.d.ts +1 -0
  55. package/cjs/pages/SelectWalletPage/SelectWalletPage.d.ts +1 -0
  56. package/cjs/pages/SettingsPage/AdvancedPreferences.d.ts +1 -0
  57. package/cjs/pages/SettingsPage/ColorSchemeButtonGroup.js +3 -2
  58. package/cjs/pages/SettingsPage/ColorSchemeButtonGroup.style.d.ts +1 -1
  59. package/cjs/pages/SettingsPage/GasPriceSelect.d.ts +1 -0
  60. package/cjs/pages/SettingsPage/LanguageSelect.js +3 -2
  61. package/cjs/pages/SettingsPage/SettingsPage.d.ts +1 -0
  62. package/cjs/pages/SettingsPage/ShowDestinationWallet.d.ts +1 -0
  63. package/cjs/pages/SettingsPage/ShowDestinationWallet.js +4 -2
  64. package/cjs/pages/SettingsPage/SlippageInput.d.ts +1 -0
  65. package/cjs/pages/SwapPage/StartSwapButton.d.ts +3 -0
  66. package/cjs/pages/SwapPage/StartSwapButton.js +11 -0
  67. package/cjs/pages/SwapPage/SwapPage.js +2 -4
  68. package/cjs/stores/routes/useRouteExecutionStore.js +13 -1
  69. package/cjs/stores/settings/index.d.ts +1 -0
  70. package/cjs/stores/settings/index.js +1 -0
  71. package/cjs/stores/settings/types.d.ts +8 -0
  72. package/cjs/{components/SendToWallet/store.d.ts → stores/settings/useSendToWalletStore.d.ts} +0 -0
  73. package/cjs/stores/settings/useSendToWalletStore.js +16 -0
  74. package/cjs/types/widget.d.ts +31 -8
  75. package/cjs/types/widget.js +10 -3
  76. package/components/ActiveSwaps/ActiveSwapItem.js +1 -1
  77. package/components/ActiveSwaps/ActiveSwaps.style.d.ts +1 -1
  78. package/components/Card/Card.d.ts +1 -1
  79. package/components/ChainSelect/ChainSelect.d.ts +1 -0
  80. package/components/ChainSelect/ChainSelect.style.d.ts +1 -1
  81. package/components/Header/Header.style.d.ts +2 -2
  82. package/components/Header/WalletHeader.js +1 -1
  83. package/components/Menu.js +1 -1
  84. package/components/PoweredBy/PoweredBy.js +5 -2
  85. package/components/ReverseTokensButton/ReverseTokensButton.style.d.ts +1 -1
  86. package/components/SelectTokenButton/SelectTokenButton.js +2 -2
  87. package/components/SendToWallet/SendToWallet.js +21 -7
  88. package/components/SendToWallet/SendToWallet.style.d.ts +1 -1
  89. package/components/SendToWallet/SendToWallet.style.js +6 -0
  90. package/components/SendToWallet/SendToWalletButton.js +7 -8
  91. package/components/SmallAvatar.d.ts +20 -0
  92. package/components/SmallAvatar.js +14 -1
  93. package/components/Step/CircularProgress.d.ts +1 -0
  94. package/components/Step/StepList.d.ts +1 -0
  95. package/components/Step/StepProcess.style.d.ts +1 -1
  96. package/components/SwapButton/SwapButton.d.ts +1 -1
  97. package/components/SwapButton/SwapButton.js +3 -6
  98. package/components/SwapButton/index.d.ts +1 -0
  99. package/components/SwapButton/index.js +1 -0
  100. package/components/SwapButton/types.d.ts +1 -2
  101. package/components/SwapInput/SwapInput.style.d.ts +1 -1
  102. package/components/SwapInput/SwapInput.style.js +1 -0
  103. package/components/SwapInput/SwapInputAdornment.style.d.ts +1 -1
  104. package/components/SwapInput/SwapInputEndAdornment.d.ts +1 -0
  105. package/components/SwapInput/SwapInputStartAdornment.js +2 -2
  106. package/components/SwapRouteCard/SwapRouteCard.style.d.ts +1 -1
  107. package/components/SwapRoutes/SwapRoutesExpanded.d.ts +1 -0
  108. package/components/Token/Token.d.ts +3 -0
  109. package/components/Token/Token.js +13 -1
  110. package/components/TokenAvatar/TokenAvatar.d.ts +2 -1
  111. package/components/TokenAvatar/TokenAvatar.js +9 -9
  112. package/components/TokenAvatar/TokenAvatar.style.d.ts +2 -2
  113. package/components/TokenAvatar/TokenAvatar.style.js +2 -2
  114. package/config/theme.js +2 -2
  115. package/config/version.d.ts +1 -1
  116. package/config/version.js +1 -1
  117. package/hooks/useRouteExecution.js +1 -1
  118. package/i18n/de.json +30 -6
  119. package/i18n/fr.json +30 -6
  120. package/i18n/it.json +30 -6
  121. package/i18n/uk.json +38 -20
  122. package/i18n/zh.json +30 -6
  123. package/index.d.ts +3 -1
  124. package/package.json +12 -12
  125. package/pages/ActiveSwapsPage/ActiveSwapsPage.d.ts +1 -0
  126. package/pages/MainPage/MainSwapButton.js +3 -4
  127. package/pages/SelectTokenPage/SearchTokenInput.d.ts +1 -0
  128. package/pages/SelectWalletPage/SelectWalletPage.d.ts +1 -0
  129. package/pages/SettingsPage/AdvancedPreferences.d.ts +1 -0
  130. package/pages/SettingsPage/ColorSchemeButtonGroup.js +3 -2
  131. package/pages/SettingsPage/ColorSchemeButtonGroup.style.d.ts +1 -1
  132. package/pages/SettingsPage/GasPriceSelect.d.ts +1 -0
  133. package/pages/SettingsPage/LanguageSelect.js +3 -2
  134. package/pages/SettingsPage/SettingsPage.d.ts +1 -0
  135. package/pages/SettingsPage/ShowDestinationWallet.d.ts +1 -0
  136. package/pages/SettingsPage/ShowDestinationWallet.js +6 -4
  137. package/pages/SettingsPage/SlippageInput.d.ts +1 -0
  138. package/pages/SwapPage/StartSwapButton.d.ts +3 -0
  139. package/pages/SwapPage/StartSwapButton.js +7 -0
  140. package/pages/SwapPage/SwapPage.js +2 -4
  141. package/stores/routes/useRouteExecutionStore.js +13 -1
  142. package/stores/settings/index.d.ts +1 -0
  143. package/stores/settings/index.js +1 -0
  144. package/stores/settings/types.d.ts +8 -0
  145. package/{components/SendToWallet/store.d.ts → stores/settings/useSendToWalletStore.d.ts} +0 -0
  146. package/stores/settings/useSendToWalletStore.js +13 -0
  147. package/tsconfig.cjs.tsbuildinfo +1 -1
  148. package/types/widget.d.ts +31 -8
  149. package/types/widget.js +9 -2
  150. package/cjs/components/SendToWallet/store.js +0 -12
  151. package/cjs/components/SendToWallet/types.d.ts +0 -6
  152. package/cjs/components/SendToWallet/types.js +0 -2
  153. package/components/SendToWallet/store.js +0 -9
  154. package/components/SendToWallet/types.d.ts +0 -6
  155. package/components/SendToWallet/types.js +0 -1
package/cjs/i18n/uk.json CHANGED
@@ -69,17 +69,22 @@
69
69
  },
70
70
  "swap": {
71
71
  "crossStepDetails": "Брідж з {{from}} до {{to}} через {{tool}}",
72
+ "currentAmount": "Поточна сума",
72
73
  "error": {
73
74
  "message": {
74
- "slippageTooLarge": "Прослизання більше визначеного порогу. Будь ласка, оберіть новий маршрут, щоб отримати свіжу пропозицію.",
75
+ "slippageThreshold": "Прослизання перевищує визначений поріг. Будь ласка, зробіть запит на новий маршрут, щоб отримати нову пропозицію.",
75
76
  "transactionFailed": "Будь ласка, перевірте провідник блоків для отримання додаткової інформації.",
76
77
  "transactionNotSent": "Транзакція не була відправлена, ваші кошти все ще знаходяться у вашому гаманці ({{amount, number(maximumFractionDigits: 4)}} {{tokenSymbol}} на {{chainName}}).",
77
- "transactionRejected": "Для завершення транзакції потрібен ваш підпис. {{amount, number(maximumFractionDigits: 4)}} {{tokenSymbol}} на {{chainName}} залишаються у вашому гаманці."
78
+ "transactionRejected": "Для завершення транзакції потрібен ваш підпис. {{amount, number(maximumFractionDigits: 4)}} {{tokenSymbol}} на {{chainName}} залишаються у вашому гаманці.",
79
+ "unknown": "Будь ласка, спробуйте ще раз або зверніться до служби підтримки."
78
80
  },
79
81
  "title": {
82
+ "balanceIsTooLow": "Баланс занадто низький",
80
83
  "chainSwitch": "Потрібно переключити чейн.",
81
84
  "failed": "Помилка обміну.",
82
- "slippageTooLarge": "Прослизання занадто велике.",
85
+ "gasLimitIsTooLow": "Занадто низький ліміт газу",
86
+ "slippageNotMet": "Не виконані умови прослизання",
87
+ "transactionCanceled": "Транзакцію скасовано",
83
88
  "transactionFailed": "Транзакція не вдалася.",
84
89
  "transactionRejected": "Підпис обов'язковий.",
85
90
  "transactionUnderpriced": "Транзакція є заниженою.",
@@ -94,6 +99,8 @@
94
99
  "from": "З",
95
100
  "fromAmount": "Ви платите",
96
101
  "gasCost": "Вартість газу",
102
+ "gasFeeEstimated": "орієнтована комісія за газ",
103
+ "gasFeePaid": "оплата за газ",
97
104
  "inProgress": "в процесі",
98
105
  "info": {
99
106
  "message": {
@@ -112,46 +119,55 @@
112
119
  "otherTokens": "Інші токени",
113
120
  "process": {
114
121
  "crossChain": {
115
- "actionRequired": "Будь ласка, підпишіть транзакцію.",
116
- "done": "Транзакцію схвалено.",
117
- "pending": "Очікування транзакції.",
118
- "started": "Підготовка транзакції."
122
+ "actionRequired": "Будь ласка, підпишіть транзакцію",
123
+ "done": "Брідж транзакцію схвалено",
124
+ "pending": "Очікування брідж транзакції",
125
+ "started": "Підготовка брідж транзакції"
119
126
  },
120
127
  "receivingChain": {
121
- "done": "Кошти отримані.",
122
- "pending": "В очікуванні приймаючого чейна."
128
+ "done": "Брідж завершено",
129
+ "partial": "Брідж частково завершено",
130
+ "pending": "В очікуванні чейна що приймає",
131
+ "refunded": "Брідж транзакція відшкодована"
123
132
  },
124
133
  "swap": {
125
- "actionRequired": "Будь ласка, підпишіть транзакцію.",
126
- "done": "Обмін завершено.",
127
- "pending": "Обмінюємо.",
128
- "started": "Підготовка свопу."
134
+ "actionRequired": "Будь ласка, підпишіть транзакцію",
135
+ "done": "Своп завершено",
136
+ "pending": "Очікування своп транзакції",
137
+ "started": "Підготовка своп транзакції"
129
138
  },
130
139
  "switchChain": {
131
- "actionRequired": "Потрібно переключити чейн.",
132
- "done": "Чейн успішно переключився."
140
+ "actionRequired": "Потрібно перемикнути чейн",
141
+ "done": "Чейн успішно перемикнувся"
133
142
  },
134
143
  "tokenAllowance": {
135
- "done": "Токени схвалено.",
136
- "pending": "Очікування схвалення токенів.",
137
- "started": "Схвалення токенів."
144
+ "done": "Токени схвалено",
145
+ "pending": "Очікування схвалення токенів",
146
+ "started": "Схвалення токенів"
138
147
  }
139
148
  },
149
+ "quotedAmount": "Запропонована сума",
150
+ "rateChange": "Зміна курсу",
140
151
  "receiving": "Отримання",
141
152
  "routes": "Ви отримуєте",
142
153
  "selectChain": "Чейн",
143
154
  "selectChainAndToken": "Виберіть чейн і токен",
144
155
  "selectToken": "Токен",
156
+ "sendToAddress": "Відправити на {{address}}",
145
157
  "sendToWallet": "Надіслати на інший гаманець",
158
+ "sentToAddress": "Відправлено на {{address}}",
146
159
  "stepBridge": "Брідж",
147
160
  "stepSwap": "Своп",
148
161
  "stepSwapAndBridge": "Своп та брідж",
149
162
  "success": {
150
163
  "message": {
164
+ "swapPartiallySuccessful": "Ми намагалися завершити своп, але {{tool}} не вистачило ліквідності токену {{tokenSymbol}}.",
151
165
  "swapSuccessful": "Зараз у гаманці {{walletAddress}} на чейні {{chainName}} є {{amount, number(maximumFractionDigits: 4)}} {{tokenSymbol}}."
152
166
  },
153
167
  "title": {
154
168
  "gasSwapSuccessful": "Своп газу успішний",
169
+ "refundIssued": "Здійснено повернення коштів",
170
+ "swapPartiallySuccessful": "Своп частково успішний",
155
171
  "swapSuccessful": "Своп успішний"
156
172
  }
157
173
  },
@@ -177,14 +193,16 @@
177
193
  "deleteSwapHistory": "Історія свопів зберігається лише локально й не може бути відновлена, якщо ви їх видалите.",
178
194
  "highValueLoss": "Вартість отриманих токенів значно нижча, ніж обмінені токени та вартість транзакції.",
179
195
  "insufficientFunds": "У вас недостатньо коштів для здійснення свопу.",
180
- "insufficientGas": "Потрібно додати хоча б:"
196
+ "insufficientGas": "Потрібно додати хоча б:",
197
+ "rateChanged": "Курс обміну змінився. Продовжуючи своп, ви приймете новий курс."
181
198
  },
182
199
  "title": {
183
200
  "deleteActiveSwaps": "Видалити всі активні свопи?",
184
201
  "deleteSwap": "Видалити цей своп?",
185
202
  "deleteSwapHistory": "Видалити історію свопів?",
186
203
  "highValueLoss": "Висока втрата вартості",
187
- "insufficientGas": "Недостатня кількість газу"
204
+ "insufficientGas": "Недостатня кількість газу",
205
+ "rateChanged": "Курс змінився"
188
206
  }
189
207
  }
190
208
  },
package/cjs/i18n/zh.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "delete": "删除",
11
11
  "disconnectWallet": "断开钱包",
12
12
  "done": "已完成",
13
+ "getGas": "Get gas",
13
14
  "hide": "隐藏",
14
15
  "lifiSwap": "LI.FI代币兑换",
15
16
  "light": "浅色模式",
@@ -21,6 +22,7 @@
21
22
  "reviewSwap": "查看该兑换",
22
23
  "seeDetails": "查看详情",
23
24
  "showAll": "显示所有",
25
+ "startGasSwap": "Start gas swap",
24
26
  "startSwap": "开始兑换",
25
27
  "swap": "兑换",
26
28
  "tryAgain": "再试一次"
@@ -32,6 +34,8 @@
32
34
  "header": {
33
35
  "activeSwaps": "正在进行的兑换",
34
36
  "from": "兑换自",
37
+ "gas": "Gas",
38
+ "gasSwap": "Gas swap",
35
39
  "routes": "你会得到",
36
40
  "selectChain": "选择链",
37
41
  "selectWallet": "选择你的钱包",
@@ -65,17 +69,22 @@
65
69
  },
66
70
  "swap": {
67
71
  "crossStepDetails": "通过{{tool}}把资产从{{from}}链跨到{{to}}链上",
72
+ "currentAmount": "Current amount",
68
73
  "error": {
69
74
  "message": {
70
- "slippageTooLarge": "滑点大于预设值,请选择其他路由来获取新的报价。",
75
+ "slippageThreshold": "The slippage is larger than the defined threshold. Please request a new route to get a fresh quote.",
71
76
  "transactionFailed": "请查看区块浏览器以了解更多信息。",
72
77
  "transactionNotSent": "交易未发送,资金仍在您的钱包中({{chainName}}链上{{amount, number(maximumFractionDigits: 4)}}个{{tokenSymbol}})。",
73
- "transactionRejected": "需要您签名来完成此次交易。不用担心,{{chainName}}链上{{amount, number(maximumFractionDigits: 4)}}个{{tokenSymbol}}仍在您的钱包里。"
78
+ "transactionRejected": "需要您签名来完成此次交易。不用担心,{{chainName}}链上{{amount, number(maximumFractionDigits: 4)}}个{{tokenSymbol}}仍在您的钱包里。",
79
+ "unknown": "Please try again or contact support."
74
80
  },
75
81
  "title": {
82
+ "balanceIsTooLow": "The balance is too low",
76
83
  "chainSwitch": "需要切换当前链",
77
84
  "failed": "兑换失败。",
78
- "slippageTooLarge": "滑点过大。",
85
+ "gasLimitIsTooLow": "The gas limit is too low",
86
+ "slippageNotMet": "Slippage conditions not met",
87
+ "transactionCanceled": "Transaction canceled",
79
88
  "transactionFailed": "交易失败。",
80
89
  "transactionRejected": "交易需要签名。",
81
90
  "transactionUnderpriced": "交易价格过低。",
@@ -90,6 +99,8 @@
90
99
  "from": "从",
91
100
  "fromAmount": "需要支付",
92
101
  "gasCost": "交易费",
102
+ "gasFeeEstimated": "estimated gas fee",
103
+ "gasFeePaid": "gas fee paid",
93
104
  "inProgress": "进行中",
94
105
  "info": {
95
106
  "message": {
@@ -104,6 +115,7 @@
104
115
  "routeNotFound": "没有可用的路由"
105
116
  }
106
117
  },
118
+ "onChain": "on {{chainName}}",
107
119
  "otherTokens": "其他代币",
108
120
  "process": {
109
121
  "crossChain": {
@@ -114,7 +126,9 @@
114
126
  },
115
127
  "receivingChain": {
116
128
  "done": "资金已到账。",
117
- "pending": "等待接收链。"
129
+ "partial": "Bridge partially completed",
130
+ "pending": "等待接收链。",
131
+ "refunded": "Bridge transaction refunded"
118
132
  },
119
133
  "swap": {
120
134
  "actionRequired": "请签署此交易。",
@@ -132,20 +146,28 @@
132
146
  "started": "设置代币限额。"
133
147
  }
134
148
  },
149
+ "quotedAmount": "Quoted amount",
150
+ "rateChange": "Rate change",
135
151
  "receiving": "接收",
136
152
  "routes": "你会得到",
137
153
  "selectChain": "链",
138
154
  "selectChainAndToken": "选择链和代币",
139
155
  "selectToken": "代币",
156
+ "sendToAddress": "Send to {{address}}",
140
157
  "sendToWallet": "发送到另外的钱包",
158
+ "sentToAddress": "Sent to {{address}}",
141
159
  "stepBridge": "跨链",
142
160
  "stepSwap": "兑换",
143
161
  "stepSwapAndBridge": "兑换和跨链",
144
162
  "success": {
145
163
  "message": {
164
+ "swapPartiallySuccessful": "We've tried to complete the swap, but {{tool}} ran out of liquidity for {{tokenSymbol}} token.",
146
165
  "swapSuccessful": "现在有 {{amount, number(maximumFractionDigits: 4)}}个{{tokenSymbol}}在{{chainName}}链上的{{walletAddress}}钱包。"
147
166
  },
148
167
  "title": {
168
+ "gasSwapSuccessful": "Gas swap successful",
169
+ "refundIssued": "Refund issued",
170
+ "swapPartiallySuccessful": "Swap partially successful",
149
171
  "swapSuccessful": "兑换成功"
150
172
  }
151
173
  },
@@ -171,14 +193,16 @@
171
193
  "deleteSwapHistory": "兑换历史记录只存储在本地,如果你删除它,我们将无法恢复这些记录。",
172
194
  "highValueLoss": "收到的代币的价值明显低于要被兑换代币和交易成本。",
173
195
  "insufficientFunds": "你没有足够的资金来执行这笔交易。",
174
- "insufficientGas": "你至少需要:"
196
+ "insufficientGas": "你至少需要:",
197
+ "rateChanged": "The exchange rate has changed. By continuing the swap, you'll accept the new rate."
175
198
  },
176
199
  "title": {
177
200
  "deleteActiveSwaps": "确定要清空正在进行的兑换记录?",
178
201
  "deleteSwap": "确定要删除这个兑换记录?",
179
202
  "deleteSwapHistory": "确定要清空兑换历史记录?",
180
203
  "highValueLoss": "大额资金损失",
181
- "insufficientGas": "手续费不足"
204
+ "insufficientGas": "手续费不足",
205
+ "rateChanged": "Rate changed"
182
206
  }
183
207
  }
184
208
  },
package/cjs/index.d.ts CHANGED
@@ -7,4 +7,6 @@ export declare const LiFiWidget: import("react").FC<import("./types").WidgetProp
7
7
  /**
8
8
  * @deprecated Use configuration { variant: 'drawer' } instead
9
9
  */
10
- export declare const LiFiWidgetDrawer: import("react").ForwardRefExoticComponent<import("./types").WidgetProps & import("react").RefAttributes<import("./AppDrawer").WidgetDrawer>>;
10
+ export declare const LiFiWidgetDrawer: import("react").ForwardRefExoticComponent<import("./types").WidgetDrawerProps & import("./types").WidgetConfig & {
11
+ config?: import("./types").WidgetConfig | undefined;
12
+ } & import("react").RefAttributes<import("./AppDrawer").WidgetDrawer>>;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const ActiveSwapsPage: () => JSX.Element;
@@ -11,14 +11,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.MainSwapButton = void 0;
13
13
  const jsx_runtime_1 = require("react/jsx-runtime");
14
- const react_1 = require("react");
15
14
  const react_hook_form_1 = require("react-hook-form");
16
15
  const react_router_dom_1 = require("react-router-dom");
17
16
  const SwapButton_1 = require("../../components/SwapButton");
18
17
  const hooks_1 = require("../../hooks");
19
18
  const stores_1 = require("../../stores");
20
19
  const utils_1 = require("../../utils");
21
- exports.MainSwapButton = (0, react_1.forwardRef)((_, ref) => {
20
+ const MainSwapButton = () => {
22
21
  const navigate = (0, react_router_dom_1.useNavigate)();
23
22
  const { isValid, isValidating } = (0, react_hook_form_1.useFormState)();
24
23
  const setExecutableRoute = (0, stores_1.useSetExecutableRoute)();
@@ -32,5 +31,6 @@ exports.MainSwapButton = (0, react_1.forwardRef)((_, ref) => {
32
31
  });
33
32
  }
34
33
  });
35
- return ((0, jsx_runtime_1.jsx)(SwapButton_1.SwapButton, { onClick: handleClick, currentRoute: currentRoute, disable: isLoading || isFetching || isValidating || !isValid, ref: ref }));
36
- });
34
+ return ((0, jsx_runtime_1.jsx)(SwapButton_1.SwapButton, { onClick: handleClick, currentRoute: currentRoute, disabled: isLoading || isFetching || isValidating || !isValid }));
35
+ };
36
+ exports.MainSwapButton = MainSwapButton;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const SearchTokenInput: () => JSX.Element;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const SelectWalletPage: () => JSX.Element;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const AdvancedPreferences: () => JSX.Element;
@@ -7,12 +7,13 @@ const material_1 = require("@mui/material");
7
7
  const react_i18next_1 = require("react-i18next");
8
8
  const providers_1 = require("../../providers");
9
9
  const stores_1 = require("../../stores");
10
+ const types_1 = require("../../types");
10
11
  const ColorSchemeButtonGroup_style_1 = require("./ColorSchemeButtonGroup.style");
11
12
  const ColorSchemeButtonGroup = () => {
12
13
  const { t } = (0, react_i18next_1.useTranslation)();
13
- const { disableAppearance } = (0, providers_1.useWidgetConfig)();
14
+ const { disableAppearance, hiddenUI } = (0, providers_1.useWidgetConfig)();
14
15
  const [appearance, setAppearance] = (0, stores_1.useAppearance)();
15
- if (disableAppearance) {
16
+ if (disableAppearance || (hiddenUI === null || hiddenUI === void 0 ? void 0 : hiddenUI.includes(types_1.HiddenUI.Appearance))) {
16
17
  return null;
17
18
  }
18
19
  return ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ pb: 2 }, { children: (0, jsx_runtime_1.jsxs)(material_1.ToggleButtonGroup, Object.assign({ color: "primary", value: appearance, onChange: (_, value) => {
@@ -2,7 +2,7 @@
2
2
  export declare const ToggleButton: import("@emotion/styled").StyledComponent<{
3
3
  children?: import("react").ReactNode;
4
4
  classes?: Partial<import("@mui/material").ToggleButtonClasses> | undefined;
5
- color?: "success" | "warning" | "error" | "primary" | "secondary" | "info" | "standard" | undefined;
5
+ color?: "success" | "warning" | "error" | "secondary" | "primary" | "info" | "standard" | undefined;
6
6
  disabled?: boolean | undefined;
7
7
  disableFocusRipple?: boolean | undefined;
8
8
  fullWidth?: boolean | undefined;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const GasPriceSelect: () => JSX.Element;
@@ -9,14 +9,15 @@ const Card_1 = require("../../components/Card");
9
9
  const Select_1 = require("../../components/Select");
10
10
  const providers_1 = require("../../providers");
11
11
  const stores_1 = require("../../stores");
12
+ const types_1 = require("../../types");
12
13
  const LanguageSelect = () => {
13
14
  var _a;
14
15
  const { t } = (0, react_i18next_1.useTranslation)();
15
- const { languages, disableI18n } = (0, providers_1.useWidgetConfig)();
16
+ const { languages, hiddenUI } = (0, providers_1.useWidgetConfig)();
16
17
  const { i18n } = (0, react_i18next_1.useTranslation)();
17
18
  const setValue = (0, stores_1.useSettingsStore)((state) => state.setValue);
18
19
  const { language } = (0, stores_1.useSettings)(['language']);
19
- if (disableI18n) {
20
+ if (hiddenUI === null || hiddenUI === void 0 ? void 0 : hiddenUI.includes(types_1.HiddenUI.Language)) {
20
21
  return null;
21
22
  }
22
23
  const handleChangeLanguage = (event) => {
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const SettingsPage: () => JSX.Element;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const ShowDestinationWallet: () => JSX.Element | null;
@@ -10,14 +10,16 @@ const stores_1 = require("../../stores");
10
10
  const types_1 = require("../../types");
11
11
  const ShowDestinationWallet = () => {
12
12
  const { t } = (0, react_i18next_1.useTranslation)();
13
- const { disabledUI } = (0, providers_1.useWidgetConfig)();
13
+ const { hiddenUI } = (0, providers_1.useWidgetConfig)();
14
+ const setSendToWallet = (0, stores_1.useSendToWalletStore)((state) => state.setSendToWallet);
14
15
  const setValue = (0, stores_1.useSettingsStore)((state) => state.setValue);
15
16
  const { showDestinationWallet } = (0, stores_1.useSettings)(['showDestinationWallet']);
16
- if (disabledUI === null || disabledUI === void 0 ? void 0 : disabledUI.includes(types_1.DisabledUI.ToAddress)) {
17
+ if (hiddenUI === null || hiddenUI === void 0 ? void 0 : hiddenUI.includes(types_1.HiddenUI.ToAddress)) {
17
18
  return null;
18
19
  }
19
20
  const onChange = (_, checked) => {
20
21
  setValue('showDestinationWallet', checked);
22
+ setSendToWallet(false);
21
23
  };
22
24
  return ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ px: 3, pt: 2 }, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ sx: {
23
25
  display: 'flex',
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const SlippageInput: () => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { SwapButtonProps } from '../../components/SwapButton';
3
+ export declare const StartSwapButton: React.FC<SwapButtonProps>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StartSwapButton = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const SwapButton_1 = require("../../components/SwapButton");
6
+ const hooks_1 = require("../../hooks");
7
+ const StartSwapButton = ({ onClick, currentRoute, text, }) => {
8
+ const { insufficientFunds, insufficientGas, isLoading: isGasSufficiencyLoading, } = (0, hooks_1.useGasSufficiency)(currentRoute);
9
+ return ((0, jsx_runtime_1.jsx)(SwapButton_1.SwapButton, { onClick: onClick, text: text, currentRoute: currentRoute, disabled: insufficientFunds || !!(insufficientGas === null || insufficientGas === void 0 ? void 0 : insufficientGas.length), loading: isGasSufficiencyLoading }));
10
+ };
11
+ exports.StartSwapButton = StartSwapButton;
@@ -19,11 +19,11 @@ const react_i18next_1 = require("react-i18next");
19
19
  const react_router_dom_1 = require("react-router-dom");
20
20
  const GasSufficiencyMessage_1 = require("../../components/GasSufficiencyMessage");
21
21
  const Step_1 = require("../../components/Step");
22
- const SwapButton_1 = require("../../components/SwapButton");
23
22
  const hooks_1 = require("../../hooks");
24
23
  const providers_1 = require("../../providers");
25
24
  const stores_1 = require("../../stores");
26
25
  const ExchangeRateBottomSheet_1 = require("./ExchangeRateBottomSheet");
26
+ const StartSwapButton_1 = require("./StartSwapButton");
27
27
  const StatusBottomSheet_1 = require("./StatusBottomSheet");
28
28
  const SwapPage_style_1 = require("./SwapPage.style");
29
29
  const TokenValueBottomSheet_1 = require("./TokenValueBottomSheet");
@@ -77,9 +77,7 @@ const SwapPage = () => {
77
77
  }
78
78
  };
79
79
  return ((0, jsx_runtime_1.jsxs)(SwapPage_style_1.Container, { children: [(0, Step_1.getStepList)(route), status === stores_1.RouteExecutionStatus.Idle ||
80
- status === stores_1.RouteExecutionStatus.Failed ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(GasSufficiencyMessage_1.GasSufficiencyMessage, { route: route, mt: 2 }), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ mt: 2, display: "flex" }, { children: [(0, jsx_runtime_1.jsx)(SwapButton_1.SwapButton, { text: getSwapButtonText(), onClick: handleSwapClick, currentRoute: route,
81
- // disable={status === 'idle' && (isValidating || !isValid)}
82
- enableLoading: true }), status === stores_1.RouteExecutionStatus.Failed ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, Object.assign({ title: t('button.removeSwap'), placement: "bottom-end", enterDelay: 400, arrow: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ onClick: handleRemoveRoute, sx: {
80
+ status === stores_1.RouteExecutionStatus.Failed ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(GasSufficiencyMessage_1.GasSufficiencyMessage, { route: route, mt: 2 }), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ mt: 2, display: "flex" }, { children: [(0, jsx_runtime_1.jsx)(StartSwapButton_1.StartSwapButton, { text: getSwapButtonText(), onClick: handleSwapClick, currentRoute: route }), status === stores_1.RouteExecutionStatus.Failed ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, Object.assign({ title: t('button.removeSwap'), placement: "bottom-end", enterDelay: 400, arrow: true }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ onClick: handleRemoveRoute, sx: {
83
81
  minWidth: 48,
84
82
  marginLeft: 1,
85
83
  } }, { children: (0, jsx_runtime_1.jsx)(icons_material_1.Delete, {}) })) }))) : null] }))] })) : null, route && status ? ((0, jsx_runtime_1.jsx)(StatusBottomSheet_1.StatusBottomSheet, { status: status, route: route })) : null, route ? ((0, jsx_runtime_1.jsx)(TokenValueBottomSheet_1.TokenValueBottomSheet, { route: route, ref: tokenValueBottomSheetRef, onContinue: handleExecuteRoute })) : null, route ? ((0, jsx_runtime_1.jsx)(ExchangeRateBottomSheet_1.ExchangeRateBottomSheet, { ref: exchangeRateBottomSheetRef })) : null] }));
@@ -99,6 +99,18 @@ exports.useRouteExecutionStore = (0, zustand_1.default)()((0, middleware_1.persi
99
99
  merge: (persistedState, currentState) => {
100
100
  const state = Object.assign(Object.assign({}, currentState), persistedState);
101
101
  try {
102
+ // Move swaps to history after 1 day
103
+ const currentTime = new Date().getTime();
104
+ const oneDay = 1000 * 60 * 60 * 24;
105
+ Object.values(state.routes).forEach((routeExecution) => {
106
+ var _a, _b, _c, _d, _e;
107
+ const startedAt = (_e = (_d = (_c = (_b = (_a = routeExecution === null || routeExecution === void 0 ? void 0 : routeExecution.route.steps) === null || _a === void 0 ? void 0 : _a.find((step) => { var _a; return ((_a = step.execution) === null || _a === void 0 ? void 0 : _a.status) === 'FAILED'; })) === null || _b === void 0 ? void 0 : _b.execution) === null || _c === void 0 ? void 0 : _c.process.find((process) => process.startedAt)) === null || _d === void 0 ? void 0 : _d.startedAt) !== null && _e !== void 0 ? _e : 0;
108
+ const outdated = startedAt > 0 && currentTime - startedAt > oneDay;
109
+ if ((routeExecution === null || routeExecution === void 0 ? void 0 : routeExecution.route) && outdated) {
110
+ routeExecution.status |= types_1.RouteExecutionStatus.Done;
111
+ }
112
+ });
113
+ // migrate old routes
102
114
  const routeString = localStorage.getItem('routes');
103
115
  if (routeString) {
104
116
  const routes = JSON.parse(routeString);
@@ -125,8 +137,8 @@ exports.useRouteExecutionStore = (0, zustand_1.default)()((0, middleware_1.persi
125
137
  state.routes[route.id].status = types_1.RouteExecutionStatus.Pending;
126
138
  }
127
139
  });
140
+ localStorage.removeItem('routes');
128
141
  }
129
- localStorage.removeItem('routes');
130
142
  }
131
143
  catch (error) {
132
144
  console.log(error);
@@ -1,4 +1,5 @@
1
1
  export * from './types';
2
2
  export * from './useAppearance';
3
+ export * from './useSendToWalletStore';
3
4
  export * from './useSettings';
4
5
  export * from './useSettingsStore';
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types"), exports);
18
18
  __exportStar(require("./useAppearance"), exports);
19
+ __exportStar(require("./useSendToWalletStore"), exports);
19
20
  __exportStar(require("./useSettings"), exports);
20
21
  __exportStar(require("./useSettingsStore"), exports);
@@ -23,3 +23,11 @@ export interface SettingsStore extends SettingsState {
23
23
  initializeTools(toolType: SettingsToolType, tools: string[]): void;
24
24
  setTools(toolType: SettingsToolType, tools: string[], availableTools: (Pick<Bridge, 'key'> | Pick<Exchange, 'key'>)[]): void;
25
25
  }
26
+ export interface SendToWalletState {
27
+ showSendToWallet: boolean;
28
+ showSendToWalletDirty: boolean;
29
+ }
30
+ export interface SendToWalletStore extends SendToWalletState {
31
+ toggleSendToWallet(): void;
32
+ setSendToWallet(value: boolean): void;
33
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSendToWalletStore = void 0;
4
+ const zustand_1 = require("zustand");
5
+ exports.useSendToWalletStore = (0, zustand_1.default)((set) => ({
6
+ showSendToWallet: false,
7
+ showSendToWalletDirty: false,
8
+ toggleSendToWallet: () => set((state) => ({
9
+ showSendToWallet: !state.showSendToWallet,
10
+ showSendToWalletDirty: true,
11
+ })),
12
+ setSendToWallet: (value) => set({
13
+ showSendToWallet: value,
14
+ showSendToWalletDirty: true,
15
+ }),
16
+ }));
@@ -2,19 +2,26 @@ import type { Signer } from '@ethersproject/abstract-signer';
2
2
  import type { ChainKey, ConfigUpdate, Order, RouteOptions, Token } from '@lifi/sdk';
3
3
  import type { PaletteMode, PaletteOptions, Shape } from '@mui/material';
4
4
  import type { TypographyOptions } from '@mui/material/styles/createTypography';
5
- import type { CSSProperties, RefObject } from 'react';
5
+ import type { CSSProperties, ReactNode, RefObject } from 'react';
6
6
  import type { LanguageKey, LanguageResources } from '../providers';
7
7
  export type WidgetVariant = 'default' | 'expandable' | 'drawer' | 'refuel';
8
8
  export declare enum DisabledUI {
9
- FromToken = "fromToken",
10
- ToToken = "toToken",
11
9
  FromAmount = "fromAmount",
12
- ToAddress = "toAddress"
10
+ FromToken = "fromToken",
11
+ ToAddress = "toAddress",
12
+ ToToken = "toToken"
13
13
  }
14
14
  export type DisabledUIType = `${DisabledUI}`;
15
+ export declare enum HiddenUI {
16
+ Appearance = "appearance",
17
+ Language = "language",
18
+ PoweredBy = "poweredBy",
19
+ ToAddress = "toAddress"
20
+ }
21
+ export type HiddenUIType = `${HiddenUI}`;
15
22
  export type Appearance = PaletteMode | 'auto';
16
23
  export type ThemeConfig = {
17
- palette?: Pick<PaletteOptions, 'primary' | 'secondary'>;
24
+ palette?: Pick<PaletteOptions, 'grey' | 'background' | 'text' | 'secondary' | 'primary'>;
18
25
  shape?: Shape;
19
26
  typography?: TypographyOptions;
20
27
  };
@@ -29,6 +36,14 @@ export interface WidgetWalletManagement {
29
36
  export interface SDKConfig extends Omit<ConfigUpdate, 'defaultExecutionSettings' | 'defaultRouteOptions' | 'disableVersionCheck'> {
30
37
  defaultRouteOptions?: Omit<RouteOptions, 'bridges' | 'exchanges'>;
31
38
  }
39
+ export interface WidgetContract {
40
+ address: string;
41
+ callData: string;
42
+ gasLimit: string;
43
+ approvalAddress?: string;
44
+ outputToken?: string;
45
+ fallbackAddress?: string;
46
+ }
32
47
  export interface WidgetConfig {
33
48
  fromChain?: `${ChainKey}` | number;
34
49
  toChain?: `${ChainKey}` | number;
@@ -36,6 +51,10 @@ export interface WidgetConfig {
36
51
  toToken?: string;
37
52
  toAddress?: string;
38
53
  fromAmount?: number | string;
54
+ toAmount?: number | string;
55
+ contract?: WidgetContract;
56
+ contractComponent?: ReactNode;
57
+ contractCompactComponent?: ReactNode;
39
58
  fee?: number;
40
59
  integrator?: string;
41
60
  referrer?: string;
@@ -45,9 +64,9 @@ export interface WidgetConfig {
45
64
  appearance?: Appearance;
46
65
  theme?: ThemeConfig;
47
66
  containerStyle?: CSSProperties;
48
- disableAppearance?: boolean;
49
67
  disableTelemetry?: boolean;
50
68
  disabledUI?: DisabledUIType[];
69
+ hiddenUI?: HiddenUIType[];
51
70
  useRecommendedRoute?: boolean;
52
71
  walletManagement?: WidgetWalletManagement;
53
72
  sdkConfig?: SDKConfig;
@@ -76,13 +95,17 @@ export interface WidgetConfig {
76
95
  };
77
96
  languageResources?: LanguageResources;
78
97
  disableI18n?: boolean;
98
+ /** @deprecated Use hiddenUI: ['appearance'] instead */
99
+ disableAppearance?: boolean;
79
100
  /** @deprecated Use chains.deny instead */
80
101
  disabledChains?: number[];
81
102
  /** @deprecated Use tokens.featured instead */
82
103
  featuredTokens?: Token[];
83
104
  }
84
- export type WidgetProps = {
105
+ export type WidgetDrawerProps = {
85
106
  elementRef?: RefObject<HTMLDivElement>;
86
- config?: WidgetConfig;
87
107
  open?: boolean;
88
108
  };
109
+ export type WidgetProps = WidgetDrawerProps & WidgetConfig & {
110
+ config?: WidgetConfig;
111
+ };
@@ -1,10 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DisabledUI = void 0;
3
+ exports.HiddenUI = exports.DisabledUI = void 0;
4
4
  var DisabledUI;
5
5
  (function (DisabledUI) {
6
- DisabledUI["FromToken"] = "fromToken";
7
- DisabledUI["ToToken"] = "toToken";
8
6
  DisabledUI["FromAmount"] = "fromAmount";
7
+ DisabledUI["FromToken"] = "fromToken";
9
8
  DisabledUI["ToAddress"] = "toAddress";
9
+ DisabledUI["ToToken"] = "toToken";
10
10
  })(DisabledUI = exports.DisabledUI || (exports.DisabledUI = {}));
11
+ var HiddenUI;
12
+ (function (HiddenUI) {
13
+ HiddenUI["Appearance"] = "appearance";
14
+ HiddenUI["Language"] = "language";
15
+ HiddenUI["PoweredBy"] = "poweredBy";
16
+ HiddenUI["ToAddress"] = "toAddress";
17
+ })(HiddenUI = exports.HiddenUI || (exports.HiddenUI = {}));
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ArrowForward as ArrowForwardIcon, ErrorRounded as ErrorIcon, InfoRounded as InfoIcon } from '@mui/icons-material';
2
+ import { ArrowForward as ArrowForwardIcon, ErrorRounded as ErrorIcon, InfoRounded as InfoIcon, } from '@mui/icons-material';
3
3
  import { ListItemAvatar, ListItemText, Typography } from '@mui/material';
4
4
  import { useNavigate } from 'react-router-dom';
5
5
  import { useProcessMessage, useRouteExecution } from '../../hooks';