@lifi/widget 3.13.1 → 3.14.0-beta.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.
- package/CHANGELOG.md +7 -0
- package/README.md +10 -5
- package/dist/esm/AppDrawer.style.d.ts +1 -3
- package/dist/esm/AppRoutes.d.ts +1 -1
- package/dist/esm/components/ActiveTransactions/ActiveTransactionItem.js +1 -0
- package/dist/esm/components/ActiveTransactions/ActiveTransactionItem.js.map +1 -1
- package/dist/esm/components/ActiveTransactions/ActiveTransactions.style.d.ts +3 -9
- package/dist/esm/components/AlertMessage/AlertMessage.style.d.ts +2 -6
- package/dist/esm/components/AmountInput/AmountInput.style.d.ts +2 -6
- package/dist/esm/components/AmountInput/AmountInputAdornment.style.d.ts +2 -6
- package/dist/esm/components/AppContainer.d.ts +3 -9
- package/dist/esm/components/Avatar/Avatar.style.d.ts +6 -18
- package/dist/esm/components/Avatar/SmallAvatar.d.ts +1 -3
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js +2 -2
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
- package/dist/esm/components/ButtonTertiary.d.ts +1 -3
- package/dist/esm/components/ButtonTertiary.js +4 -5
- package/dist/esm/components/ButtonTertiary.js.map +1 -1
- package/dist/esm/components/Card/Card.d.ts +1 -3
- package/dist/esm/components/Card/CardButton.style.d.ts +4 -12
- package/dist/esm/components/Card/CardHeader.d.ts +1 -3
- package/dist/esm/components/Card/CardIconButton.d.ts +1 -3
- package/dist/esm/components/Card/CardLabel.d.ts +2 -6
- package/dist/esm/components/Card/CardLabel.js +0 -1
- package/dist/esm/components/Card/CardLabel.js.map +1 -1
- package/dist/esm/components/Card/CardTitle.d.ts +1 -3
- package/dist/esm/components/Card/InputCard.d.ts +1 -3
- package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts +2 -6
- package/dist/esm/components/ContractComponent/NFT/NFT.style.d.ts +1 -3
- package/dist/esm/components/Header/Header.style.d.ts +6 -18
- package/dist/esm/components/Header/SettingsButton.style.d.ts +2 -6
- package/dist/esm/components/IconTypography.d.ts +1 -3
- package/dist/esm/components/ListItem/ListItem.d.ts +1 -3
- package/dist/esm/components/ListItem/ListItemButton.d.ts +1 -3
- package/dist/esm/components/ListItemButton.d.ts +1 -3
- package/dist/esm/components/PageContainer.d.ts +1 -3
- package/dist/esm/components/PoweredBy/PoweredBy.style.d.ts +1 -3
- package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.d.ts +3 -9
- package/dist/esm/components/RouteCard/RouteCard.js +13 -4
- package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCard.style.d.ts +1 -3
- package/dist/esm/components/RouteCard/getMatchingLabels.d.ts +3 -0
- package/dist/esm/components/RouteCard/getMatchingLabels.js +34 -0
- package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -0
- package/dist/esm/components/Routes/RoutesExpanded.js +1 -1
- package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
- package/dist/esm/components/Routes/RoutesExpanded.style.d.ts +4 -12
- package/dist/esm/components/Search/SearchInput.style.d.ts +2 -6
- package/dist/esm/components/Search/SearchNotFound.style.d.ts +3 -9
- package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.d.ts +3 -9
- package/dist/esm/components/SendToWallet/SendToWallet.style.d.ts +1 -3
- package/dist/esm/components/SettingsListItemButton.d.ts +1 -3
- package/dist/esm/components/Skeleton/WidgetSkeleton.style.d.ts +11 -33
- package/dist/esm/components/Step/CircularProgress.js +2 -1
- package/dist/esm/components/Step/CircularProgress.js.map +1 -1
- package/dist/esm/components/Step/CircularProgress.style.d.ts +1 -3
- package/dist/esm/components/Step/CircularProgress.style.js +13 -2
- package/dist/esm/components/Step/CircularProgress.style.js.map +1 -1
- package/dist/esm/components/Step/Step.js +17 -8
- package/dist/esm/components/Step/Step.js.map +1 -1
- package/dist/esm/components/Step/StepProcess.js +2 -1
- package/dist/esm/components/Step/StepProcess.js.map +1 -1
- package/dist/esm/components/Step/StepTimer.js +2 -1
- package/dist/esm/components/Step/StepTimer.js.map +1 -1
- package/dist/esm/components/StepActions/StepActions.style.d.ts +3 -9
- package/dist/esm/components/StepDivider/StepDivider.style.d.ts +1 -3
- package/dist/esm/components/Tabs/Tabs.style.d.ts +3 -9
- package/dist/esm/components/Token/Token.style.d.ts +3 -9
- package/dist/esm/components/TokenList/TokenList.style.d.ts +3 -9
- package/dist/esm/components/TokenList/TokenListItem.js +1 -1
- package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
- package/dist/esm/components/TokenRate/TokenRate.style.d.ts +1 -3
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/hooks/timer/useInterval.js +1 -1
- package/dist/esm/hooks/timer/useInterval.js.map +1 -1
- package/dist/esm/hooks/useDebouncedWatch.js +1 -1
- package/dist/esm/hooks/useDebouncedWatch.js.map +1 -1
- package/dist/esm/hooks/useProcessMessage.js +18 -6
- package/dist/esm/hooks/useProcessMessage.js.map +1 -1
- package/dist/esm/hooks/useRoutes.d.ts +2 -2
- package/dist/esm/hooks/useRoutes.js +99 -58
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useSetContentHeight.d.ts +1 -1
- package/dist/esm/hooks/useSetContentHeight.js.map +1 -1
- package/dist/esm/i18n/bn.json +5 -1
- package/dist/esm/i18n/de.json +5 -1
- package/dist/esm/i18n/en.json +14 -10
- package/dist/esm/i18n/es.json +5 -1
- package/dist/esm/i18n/fr.json +5 -1
- package/dist/esm/i18n/hi.json +5 -1
- package/dist/esm/i18n/id.json +5 -1
- package/dist/esm/i18n/it.json +5 -1
- package/dist/esm/i18n/ja.json +5 -1
- package/dist/esm/i18n/ko.json +5 -1
- package/dist/esm/i18n/pt.json +5 -1
- package/dist/esm/i18n/th.json +5 -1
- package/dist/esm/i18n/tr.json +5 -1
- package/dist/esm/i18n/uk.json +5 -1
- package/dist/esm/i18n/vi.json +5 -1
- package/dist/esm/i18n/zh.json +5 -1
- package/dist/esm/pages/MainPage/MainPage.style.d.ts +1 -3
- package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts +1 -3
- package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js +1 -2
- package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
- package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/SendToWalletPage.style.d.ts +15 -45
- package/dist/esm/pages/SettingsPage/ResetSettingsButton.style.d.ts +1 -3
- package/dist/esm/pages/SettingsPage/SettingsCard/SettingCard.style.d.ts +2 -6
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.d.ts +3 -9
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js +2 -2
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.d.ts +3 -9
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +1 -1
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/providers/WalletProvider/EVMBaseProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/EVMBaseProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SDKProviders.js +2 -15
- package/dist/esm/providers/WalletProvider/SDKProviders.js.map +1 -1
- package/dist/esm/providers/WalletProvider/UTXOBaseProvider.js +1 -1
- package/dist/esm/providers/WalletProvider/UTXOBaseProvider.js.map +1 -1
- package/dist/esm/stores/bookmarks/BookmarkStore.js +1 -1
- package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
- package/dist/esm/stores/chains/ChainOrderStore.js +1 -1
- package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
- package/dist/esm/stores/form/FormStore.js +1 -1
- package/dist/esm/stores/form/FormStore.js.map +1 -1
- package/dist/esm/stores/header/useHeaderStore.js +1 -1
- package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.js +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/routes/useExecutingRoutesIds.js +2 -2
- package/dist/esm/stores/routes/useExecutingRoutesIds.js.map +1 -1
- package/dist/esm/stores/settings/useSplitSubvariantStore.js +1 -1
- package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
- package/dist/esm/themes/createTheme.js +4 -5
- package/dist/esm/themes/createTheme.js.map +1 -1
- package/dist/esm/types/widget.d.ts +19 -1
- package/dist/esm/types/widget.js.map +1 -1
- package/package.json +13 -16
- package/src/components/ActiveTransactions/ActiveTransactionItem.tsx +1 -0
- package/src/components/BaseTransactionButton/BaseTransactionButton.tsx +3 -3
- package/src/components/ButtonTertiary.tsx +4 -5
- package/src/components/Card/CardLabel.tsx +0 -1
- package/src/components/RouteCard/RouteCard.tsx +19 -6
- package/src/components/RouteCard/getMatchingLabels.ts +53 -0
- package/src/components/Routes/RoutesExpanded.tsx +3 -3
- package/src/components/Step/CircularProgress.style.tsx +13 -2
- package/src/components/Step/CircularProgress.tsx +2 -1
- package/src/components/Step/Step.tsx +23 -12
- package/src/components/Step/StepProcess.tsx +2 -1
- package/src/components/Step/StepTimer.tsx +3 -1
- package/src/components/TokenList/TokenListItem.tsx +1 -1
- package/src/config/version.ts +1 -1
- package/src/hooks/timer/useInterval.ts +1 -1
- package/src/hooks/useDebouncedWatch.ts +1 -1
- package/src/hooks/useProcessMessage.ts +24 -5
- package/src/hooks/useRoutes.ts +127 -66
- package/src/hooks/useSetContentHeight.ts +1 -1
- package/src/i18n/bn.json +5 -1
- package/src/i18n/de.json +5 -1
- package/src/i18n/en.json +14 -10
- package/src/i18n/es.json +5 -1
- package/src/i18n/fr.json +5 -1
- package/src/i18n/hi.json +5 -1
- package/src/i18n/id.json +5 -1
- package/src/i18n/it.json +5 -1
- package/src/i18n/ja.json +5 -1
- package/src/i18n/ko.json +5 -1
- package/src/i18n/pt.json +5 -1
- package/src/i18n/th.json +5 -1
- package/src/i18n/tr.json +5 -1
- package/src/i18n/uk.json +5 -1
- package/src/i18n/vi.json +5 -1
- package/src/i18n/zh.json +5 -1
- package/src/pages/SendToWallet/BookmarkAddressSheet.tsx +2 -3
- package/src/pages/SendToWallet/BookmarksPage.tsx +0 -1
- package/src/pages/TransactionPage/ExchangeRateBottomSheet.tsx +2 -2
- package/src/pages/TransactionPage/StatusBottomSheet.tsx +1 -1
- package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +1 -1
- package/src/providers/WalletProvider/EVMBaseProvider.tsx +1 -1
- package/src/providers/WalletProvider/SDKProviders.tsx +2 -16
- package/src/providers/WalletProvider/UTXOBaseProvider.tsx +1 -1
- package/src/stores/bookmarks/BookmarkStore.tsx +1 -1
- package/src/stores/chains/ChainOrderStore.tsx +1 -1
- package/src/stores/form/FormStore.tsx +1 -1
- package/src/stores/header/useHeaderStore.tsx +1 -1
- package/src/stores/routes/RouteExecutionStore.tsx +1 -1
- package/src/stores/routes/useExecutingRoutesIds.ts +2 -2
- package/src/stores/settings/useSplitSubvariantStore.tsx +1 -1
- package/src/themes/createTheme.ts +6 -8
- package/src/themes/types.ts +0 -1
- package/src/types/widget.ts +23 -0
- package/dist/esm/providers/WalletProvider/getSafeMultisigConfig.d.ts +0 -8
- package/dist/esm/providers/WalletProvider/getSafeMultisigConfig.js +0 -95
- package/dist/esm/providers/WalletProvider/getSafeMultisigConfig.js.map +0 -1
- package/src/providers/WalletProvider/getSafeMultisigConfig.ts +0 -144
package/src/i18n/tr.json
CHANGED
|
@@ -52,12 +52,14 @@
|
|
|
52
52
|
},
|
|
53
53
|
"header": {
|
|
54
54
|
"activeTransactions": "Aktif işlemler",
|
|
55
|
+
"amount": "",
|
|
55
56
|
"bookmarkedWallets": "Kayıtlı cüzdanlar",
|
|
56
57
|
"bridge": "Gönder",
|
|
57
58
|
"checkout": "Ödeme yap",
|
|
58
59
|
"checkoutDetails": "Ödeme detayları",
|
|
59
60
|
"deposit": "Para Yatır",
|
|
60
61
|
"depositDetails": "Para Yatırma Detayı",
|
|
62
|
+
"depositTo": "",
|
|
61
63
|
"exchange": "Al-Sat",
|
|
62
64
|
"from": "Şundan takas et",
|
|
63
65
|
"gas": "Gaz",
|
|
@@ -265,13 +267,15 @@
|
|
|
265
267
|
"stepBridge": "Köprüle",
|
|
266
268
|
"stepBridgeAndBuy": "Köprüle ve satın al",
|
|
267
269
|
"stepBridgeAndDeposit": "Köprüle ve yatır",
|
|
270
|
+
"stepBuy": "Satın al",
|
|
271
|
+
"stepDeposit": "Para Yatır",
|
|
268
272
|
"stepDetails": "LI.FI aracılığıyla {{tool}}",
|
|
269
273
|
"stepSwap": "Takas et",
|
|
270
274
|
"stepSwapAndBridge": "Takas et ve Köprüle",
|
|
271
275
|
"stepSwapAndBuy": "Takasla ve satın al",
|
|
272
276
|
"stepSwapAndDeposit": "Takas et ve yatır",
|
|
273
|
-
"transferId": "",
|
|
274
277
|
"swapStepDetails": "{{chain}} üzerinde {{tool}} aracılığıyla takas et",
|
|
278
|
+
"transferId": "",
|
|
275
279
|
"tags": {
|
|
276
280
|
"cheapest": "En iyi sonuç",
|
|
277
281
|
"fastest": "En Hızlı"
|
package/src/i18n/uk.json
CHANGED
|
@@ -52,12 +52,14 @@
|
|
|
52
52
|
},
|
|
53
53
|
"header": {
|
|
54
54
|
"activeTransactions": "Активні транзакції",
|
|
55
|
+
"amount": "Сума",
|
|
55
56
|
"bookmarkedWallets": "Закладки гаманців",
|
|
56
57
|
"bridge": "Бридж",
|
|
57
58
|
"checkout": "Розрахунок",
|
|
58
59
|
"checkoutDetails": "Деталі платежу",
|
|
59
60
|
"deposit": "Депозит",
|
|
60
61
|
"depositDetails": "Деталі депозиту",
|
|
62
|
+
"depositTo": "Внести на",
|
|
61
63
|
"exchange": "Обмін",
|
|
62
64
|
"from": "Своп з",
|
|
63
65
|
"gas": "Газ",
|
|
@@ -265,13 +267,15 @@
|
|
|
265
267
|
"stepBridge": "Бридж",
|
|
266
268
|
"stepBridgeAndBuy": "Бридж та покупка",
|
|
267
269
|
"stepBridgeAndDeposit": "Брідж та депозит",
|
|
270
|
+
"stepBuy": "Придбати",
|
|
271
|
+
"stepDeposit": "Депозит",
|
|
268
272
|
"stepDetails": "{{tool}} через LI.FI",
|
|
269
273
|
"stepSwap": "Своп",
|
|
270
274
|
"stepSwapAndBridge": "Своп та бридж",
|
|
271
275
|
"stepSwapAndBuy": "Своп та покупка",
|
|
272
276
|
"stepSwapAndDeposit": "Своп та депозит",
|
|
273
|
-
"transferId": "Ідентифікатор переказу",
|
|
274
277
|
"swapStepDetails": "Своп на {{chain}} через {{tool}}",
|
|
278
|
+
"transferId": "Ідентифікатор переказу",
|
|
275
279
|
"tags": {
|
|
276
280
|
"cheapest": "Найкращий курс",
|
|
277
281
|
"fastest": "Найшвидший"
|
package/src/i18n/vi.json
CHANGED
|
@@ -52,12 +52,14 @@
|
|
|
52
52
|
},
|
|
53
53
|
"header": {
|
|
54
54
|
"activeTransactions": "Các giao dịch hiện tại",
|
|
55
|
+
"amount": "",
|
|
55
56
|
"bookmarkedWallets": "Ví được đánh dấu",
|
|
56
57
|
"bridge": "Cầu",
|
|
57
58
|
"checkout": "Thanh toán",
|
|
58
59
|
"checkoutDetails": "",
|
|
59
60
|
"deposit": "",
|
|
60
61
|
"depositDetails": "",
|
|
62
|
+
"depositTo": "",
|
|
61
63
|
"exchange": "Hoán đổi",
|
|
62
64
|
"from": "Swap từ",
|
|
63
65
|
"gas": "Gas",
|
|
@@ -265,13 +267,15 @@
|
|
|
265
267
|
"stepBridge": "Cầu",
|
|
266
268
|
"stepBridgeAndBuy": "Chuyển và mua",
|
|
267
269
|
"stepBridgeAndDeposit": "",
|
|
270
|
+
"stepBuy": "Mua",
|
|
271
|
+
"stepDeposit": "",
|
|
268
272
|
"stepDetails": "{{tool}} thông qua LI.FI",
|
|
269
273
|
"stepSwap": "Swap",
|
|
270
274
|
"stepSwapAndBridge": "Swap và Bridge",
|
|
271
275
|
"stepSwapAndBuy": "Hoán đổi và mua",
|
|
272
276
|
"stepSwapAndDeposit": "",
|
|
273
|
-
"transferId": "",
|
|
274
277
|
"swapStepDetails": "Swap tại {{chain}} thông qua {{tool}}",
|
|
278
|
+
"transferId": "",
|
|
275
279
|
"tags": {
|
|
276
280
|
"cheapest": "Lợi nhuận tốt nhất",
|
|
277
281
|
"fastest": "Nhanh nhất"
|
package/src/i18n/zh.json
CHANGED
|
@@ -52,12 +52,14 @@
|
|
|
52
52
|
},
|
|
53
53
|
"header": {
|
|
54
54
|
"activeTransactions": "进行中的交易",
|
|
55
|
+
"amount": "",
|
|
55
56
|
"bookmarkedWallets": "已收藏的钱包",
|
|
56
57
|
"bridge": "跨链",
|
|
57
58
|
"checkout": "支付",
|
|
58
59
|
"checkoutDetails": "交易细节",
|
|
59
60
|
"deposit": "存款",
|
|
60
61
|
"depositDetails": "存款详情",
|
|
62
|
+
"depositTo": "",
|
|
61
63
|
"exchange": "兑换",
|
|
62
64
|
"from": "兑换自",
|
|
63
65
|
"gas": "燃气费",
|
|
@@ -265,13 +267,15 @@
|
|
|
265
267
|
"stepBridge": "跨链",
|
|
266
268
|
"stepBridgeAndBuy": "跨链并购买",
|
|
267
269
|
"stepBridgeAndDeposit": "跨链并存款",
|
|
270
|
+
"stepBuy": "购买",
|
|
271
|
+
"stepDeposit": "存款",
|
|
268
272
|
"stepDetails": "通过 LI.FI {{tool}}",
|
|
269
273
|
"stepSwap": "兑换",
|
|
270
274
|
"stepSwapAndBridge": "兑换和跨链",
|
|
271
275
|
"stepSwapAndBuy": "兑换并购买",
|
|
272
276
|
"stepSwapAndDeposit": "兑换并存款",
|
|
273
|
-
"transferId": "交易 ID",
|
|
274
277
|
"swapStepDetails": "通过{{tool}}在{{chain}}链上兑换代币",
|
|
278
|
+
"transferId": "交易 ID",
|
|
275
279
|
"tags": {
|
|
276
280
|
"cheapest": "最佳报价",
|
|
277
281
|
"fastest": "速度最快"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Error as ErrorIcon, Info, TurnedIn } from '@mui/icons-material'
|
|
2
|
-
import { LoadingButton } from '@mui/lab'
|
|
3
2
|
import { Button, Typography } from '@mui/material'
|
|
4
3
|
import type { ChangeEvent, MutableRefObject } from 'react'
|
|
5
4
|
import { forwardRef, useState } from 'react'
|
|
@@ -217,7 +216,7 @@ export const BookmarkAddressSheet = forwardRef<
|
|
|
217
216
|
<Button variant="text" onClick={handleCancel} fullWidth>
|
|
218
217
|
{t('button.cancel')}
|
|
219
218
|
</Button>
|
|
220
|
-
<
|
|
219
|
+
<Button
|
|
221
220
|
variant="contained"
|
|
222
221
|
onClick={handleBookmark}
|
|
223
222
|
loading={isValidating}
|
|
@@ -226,7 +225,7 @@ export const BookmarkAddressSheet = forwardRef<
|
|
|
226
225
|
focusRipple
|
|
227
226
|
>
|
|
228
227
|
{t('button.bookmark')}
|
|
229
|
-
</
|
|
228
|
+
</Button>
|
|
230
229
|
</SendToWalletButtonRow>
|
|
231
230
|
</SendToWalletSheetContainer>
|
|
232
231
|
</BottomSheet>
|
|
@@ -9,7 +9,6 @@ import { Button, ListItemAvatar, ListItemText, MenuItem } from '@mui/material'
|
|
|
9
9
|
import { useId, useRef, useState } from 'react'
|
|
10
10
|
import { useTranslation } from 'react-i18next'
|
|
11
11
|
import { useNavigate } from 'react-router-dom'
|
|
12
|
-
|
|
13
12
|
import { AccountAvatar } from '../../components/Avatar/AccountAvatar.js'
|
|
14
13
|
import type { BottomSheetBase } from '../../components/BottomSheet/types.js'
|
|
15
14
|
import { ListItemButton } from '../../components/ListItem//ListItemButton.js'
|
|
@@ -34,7 +34,7 @@ export const ExchangeRateBottomSheet = forwardRef<
|
|
|
34
34
|
>(({ onContinue, onCancel }, ref) => {
|
|
35
35
|
const [data, setData] = useState<ExchangeRateUpdateParams>()
|
|
36
36
|
const bottomSheetRef = useRef<BottomSheetBase>(null)
|
|
37
|
-
const resolverRef = useRef<(value: boolean) => void>()
|
|
37
|
+
const resolverRef = useRef<(value: boolean) => void>(null)
|
|
38
38
|
|
|
39
39
|
const handleContinue = () => {
|
|
40
40
|
;(ref as MutableRefObject<ExchangeRateBottomSheetBase>).current?.close(true)
|
|
@@ -90,7 +90,7 @@ const ExchangeRateBottomSheetContent: React.FC<
|
|
|
90
90
|
ExchangeRateBottomSheetProps
|
|
91
91
|
> = ({ data, onCancel, onContinue }) => {
|
|
92
92
|
const { t } = useTranslation()
|
|
93
|
-
const ref = useRef<HTMLElement>()
|
|
93
|
+
const ref = useRef<HTMLElement>(null)
|
|
94
94
|
useSetContentHeight(ref)
|
|
95
95
|
|
|
96
96
|
if (!data) {
|
|
@@ -44,7 +44,7 @@ const TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({
|
|
|
44
44
|
onContinue,
|
|
45
45
|
}) => {
|
|
46
46
|
const { t } = useTranslation()
|
|
47
|
-
const ref = useRef<HTMLElement>()
|
|
47
|
+
const ref = useRef<HTMLElement>(null)
|
|
48
48
|
useSetContentHeight(ref)
|
|
49
49
|
const { gasCosts, feeCosts, gasCostUSD, feeCostUSD } =
|
|
50
50
|
getAccumulatedFeeCostsBreakdown(route)
|
|
@@ -14,7 +14,7 @@ import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
|
14
14
|
export const EVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
15
15
|
const { walletConfig } = useWidgetConfig()
|
|
16
16
|
const { chains } = useAvailableChains()
|
|
17
|
-
const wagmi = useRef<DefaultWagmiConfigResult>()
|
|
17
|
+
const wagmi = useRef<DefaultWagmiConfigResult>(null)
|
|
18
18
|
|
|
19
19
|
if (!wagmi.current) {
|
|
20
20
|
wagmi.current = createDefaultWagmiConfig({
|
|
@@ -5,20 +5,18 @@ import { ChainType, EVM, Solana, UTXO, config } from '@lifi/sdk'
|
|
|
5
5
|
import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
|
|
6
6
|
import { useWallet } from '@solana/wallet-adapter-react'
|
|
7
7
|
import { useEffect } from 'react'
|
|
8
|
-
import {
|
|
8
|
+
import { useConfig as useWagmiConfig } from 'wagmi'
|
|
9
9
|
import {
|
|
10
10
|
getConnectorClient as getWagmiConnectorClient,
|
|
11
11
|
switchChain,
|
|
12
12
|
} from 'wagmi/actions'
|
|
13
13
|
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
14
|
-
import { getSafeMultisigConfig } from './getSafeMultisigConfig.js'
|
|
15
14
|
|
|
16
15
|
export const SDKProviders = () => {
|
|
17
16
|
const { sdkConfig } = useWidgetConfig()
|
|
18
17
|
const { wallet } = useWallet()
|
|
19
18
|
const wagmiConfig = useWagmiConfig()
|
|
20
19
|
const bigmiConfig = useBigmiConfig()
|
|
21
|
-
const account = useAccount({ config: wagmiConfig })
|
|
22
20
|
|
|
23
21
|
useEffect(() => {
|
|
24
22
|
// Configure SDK Providers
|
|
@@ -33,11 +31,6 @@ export const SDKProviders = () => {
|
|
|
33
31
|
(provider) => provider.type === ChainType.UTXO
|
|
34
32
|
)
|
|
35
33
|
if (!hasConfiguredEVMProvider) {
|
|
36
|
-
// TODO: refactor this in favor of EIP-5792: Wallet Call API
|
|
37
|
-
const multisig =
|
|
38
|
-
account.connector?.id === 'safe'
|
|
39
|
-
? getSafeMultisigConfig(account.connector)
|
|
40
|
-
: undefined
|
|
41
34
|
providers.push(
|
|
42
35
|
EVM({
|
|
43
36
|
getWalletClient: () => getWagmiConnectorClient(wagmiConfig),
|
|
@@ -45,7 +38,6 @@ export const SDKProviders = () => {
|
|
|
45
38
|
const chain = await switchChain(wagmiConfig, { chainId })
|
|
46
39
|
return getWagmiConnectorClient(wagmiConfig, { chainId: chain.id })
|
|
47
40
|
},
|
|
48
|
-
multisig,
|
|
49
41
|
})
|
|
50
42
|
)
|
|
51
43
|
}
|
|
@@ -69,13 +61,7 @@ export const SDKProviders = () => {
|
|
|
69
61
|
providers.push(...sdkConfig.providers)
|
|
70
62
|
}
|
|
71
63
|
config.setProviders(providers)
|
|
72
|
-
}, [
|
|
73
|
-
account.connector,
|
|
74
|
-
bigmiConfig,
|
|
75
|
-
sdkConfig?.providers,
|
|
76
|
-
wagmiConfig,
|
|
77
|
-
wallet?.adapter,
|
|
78
|
-
])
|
|
64
|
+
}, [bigmiConfig, sdkConfig?.providers, wagmiConfig, wallet?.adapter])
|
|
79
65
|
|
|
80
66
|
return null
|
|
81
67
|
}
|
|
@@ -4,7 +4,7 @@ import { createDefaultBigmiConfig } from '@lifi/wallet-management'
|
|
|
4
4
|
import { type FC, type PropsWithChildren, useRef } from 'react'
|
|
5
5
|
|
|
6
6
|
export const UTXOBaseProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
7
|
-
const bigmi = useRef<DefaultWagmiConfigResult>()
|
|
7
|
+
const bigmi = useRef<DefaultWagmiConfigResult>(null)
|
|
8
8
|
|
|
9
9
|
if (!bigmi.current) {
|
|
10
10
|
bigmi.current = createDefaultBigmiConfig({
|
|
@@ -12,7 +12,7 @@ export const BookmarkStoreProvider: React.FC<PersistStoreProviderProps> = ({
|
|
|
12
12
|
...props
|
|
13
13
|
}) => {
|
|
14
14
|
const { toAddress } = useWidgetConfig()
|
|
15
|
-
const storeRef = useRef<BookmarkStore>()
|
|
15
|
+
const storeRef = useRef<BookmarkStore>(null)
|
|
16
16
|
|
|
17
17
|
if (!storeRef.current) {
|
|
18
18
|
storeRef.current = createBookmarksStore({ ...props, toAddress })
|
|
@@ -24,7 +24,7 @@ export function ChainOrderStoreProvider({
|
|
|
24
24
|
...props
|
|
25
25
|
}: PersistStoreProviderProps) {
|
|
26
26
|
const { chains: chainsConfig } = useWidgetConfig()
|
|
27
|
-
const storeRef = useRef<ChainOrderStore>()
|
|
27
|
+
const storeRef = useRef<ChainOrderStore>(null)
|
|
28
28
|
const { chains } = useChains()
|
|
29
29
|
const { setFieldValue, getFieldValues } = useFieldActions()
|
|
30
30
|
const { externalChainTypes, useExternalWalletProvidersOnly } =
|
|
@@ -53,7 +53,7 @@ export const FormStoreProvider: React.FC<FormStoreProviderProps> = ({
|
|
|
53
53
|
formUpdateKey,
|
|
54
54
|
} = widgetConfig
|
|
55
55
|
|
|
56
|
-
const storeRef = useRef<FormStoreStore>()
|
|
56
|
+
const storeRef = useRef<FormStoreStore>(null)
|
|
57
57
|
|
|
58
58
|
const hiddenToAddress = hiddenUI?.includes(HiddenUI.ToAddress)
|
|
59
59
|
|
|
@@ -7,7 +7,7 @@ import type { HeaderState, HeaderStore } from './types.js'
|
|
|
7
7
|
export const HeaderStoreContext = createContext<HeaderStore | null>(null)
|
|
8
8
|
|
|
9
9
|
export function HeaderStoreProvider({ children }: PersistStoreProviderProps) {
|
|
10
|
-
const storeRef = useRef<HeaderStore>()
|
|
10
|
+
const storeRef = useRef<HeaderStore>(null)
|
|
11
11
|
if (!storeRef.current) {
|
|
12
12
|
storeRef.current = createHeaderStore()
|
|
13
13
|
}
|
|
@@ -16,7 +16,7 @@ export function RouteExecutionStoreProvider({
|
|
|
16
16
|
children,
|
|
17
17
|
...props
|
|
18
18
|
}: PersistStoreProviderProps) {
|
|
19
|
-
const storeRef = useRef<RouteExecutionStore>()
|
|
19
|
+
const storeRef = useRef<RouteExecutionStore>(null)
|
|
20
20
|
if (!storeRef.current) {
|
|
21
21
|
storeRef.current = createRouteExecutionStore(props)
|
|
22
22
|
}
|
|
@@ -18,8 +18,8 @@ export const useExecutingRoutesIds = () => {
|
|
|
18
18
|
)
|
|
19
19
|
.sort(
|
|
20
20
|
(a, b) =>
|
|
21
|
-
(b?.route.steps[0].execution?.process[0]
|
|
22
|
-
(a?.route.steps[0].execution?.process[0]
|
|
21
|
+
(b?.route.steps[0].execution?.process[0]?.startedAt ?? 0) -
|
|
22
|
+
(a?.route.steps[0].execution?.process[0]?.startedAt ?? 0)
|
|
23
23
|
)
|
|
24
24
|
.map(({ route }) => route.id),
|
|
25
25
|
shallow
|
|
@@ -22,7 +22,7 @@ export function SplitSubvariantStoreProvider({
|
|
|
22
22
|
children,
|
|
23
23
|
...props
|
|
24
24
|
}: SplitSubvariantProviderProps) {
|
|
25
|
-
const storeRef = useRef<SplitSubvariantStore>()
|
|
25
|
+
const storeRef = useRef<SplitSubvariantStore>(null)
|
|
26
26
|
if (!storeRef.current || shouldRecreateStore(storeRef.current, props)) {
|
|
27
27
|
storeRef.current = createSplitSubvariantStore(props)
|
|
28
28
|
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { loadingButtonClasses } from '@mui/lab'
|
|
2
|
-
import type {} from '@mui/lab/themeAugmentation'
|
|
3
1
|
import type {
|
|
4
2
|
CSSObject,
|
|
5
3
|
PaletteMode,
|
|
@@ -8,6 +6,7 @@ import type {
|
|
|
8
6
|
} from '@mui/material'
|
|
9
7
|
import {
|
|
10
8
|
alpha,
|
|
9
|
+
buttonClasses,
|
|
11
10
|
createTheme as createMuiTheme,
|
|
12
11
|
css,
|
|
13
12
|
darken,
|
|
@@ -247,19 +246,18 @@ export const createTheme = (
|
|
|
247
246
|
cursor: 'not-allowed',
|
|
248
247
|
pointerEvents: 'auto',
|
|
249
248
|
},
|
|
250
|
-
[`&.${
|
|
249
|
+
[`&.${buttonClasses.loading}.Mui-disabled`]: {
|
|
251
250
|
backgroundColor: primaryMainColor,
|
|
252
251
|
color: contrastButtonColor,
|
|
253
252
|
cursor: 'auto',
|
|
254
253
|
pointerEvents: 'auto',
|
|
255
254
|
},
|
|
256
|
-
[`.${
|
|
255
|
+
[`.${buttonClasses.loadingIndicator}`]: {
|
|
257
256
|
color: contrastButtonColor,
|
|
258
257
|
},
|
|
259
|
-
[`&.${
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
},
|
|
258
|
+
[`&.${buttonClasses.root}.${buttonClasses.loading}`]: {
|
|
259
|
+
color: 'transparent',
|
|
260
|
+
},
|
|
263
261
|
...getStyleOverrides('MuiButton', 'root', widgetTheme, ownerState),
|
|
264
262
|
}),
|
|
265
263
|
text: ({ ownerState }) => ({
|
package/src/themes/types.ts
CHANGED
package/src/types/widget.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
PaletteMode,
|
|
14
14
|
PaletteOptions,
|
|
15
15
|
Shape,
|
|
16
|
+
SxProps,
|
|
16
17
|
Theme,
|
|
17
18
|
} from '@mui/material'
|
|
18
19
|
import type { TypographyOptions } from '@mui/material/styles/createTypography.js'
|
|
@@ -191,6 +192,22 @@ export type WidgetLanguages = {
|
|
|
191
192
|
|
|
192
193
|
export type PoweredByType = 'default' | 'jumper'
|
|
193
194
|
|
|
195
|
+
export interface RouteLabel {
|
|
196
|
+
text: string
|
|
197
|
+
sx?: SxProps<Theme>
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export interface RouteLabelRule {
|
|
201
|
+
label: RouteLabel
|
|
202
|
+
// Matching criteria
|
|
203
|
+
bridges?: AllowDeny<string>
|
|
204
|
+
exchanges?: AllowDeny<string>
|
|
205
|
+
fromChainId?: number[]
|
|
206
|
+
toChainId?: number[]
|
|
207
|
+
fromTokenAddress?: string[]
|
|
208
|
+
toTokenAddress?: string[]
|
|
209
|
+
}
|
|
210
|
+
|
|
194
211
|
export interface WidgetConfig {
|
|
195
212
|
fromChain?: number
|
|
196
213
|
toChain?: number
|
|
@@ -227,6 +244,7 @@ export interface WidgetConfig {
|
|
|
227
244
|
hiddenUI?: HiddenUIType[]
|
|
228
245
|
requiredUI?: RequiredUIType[]
|
|
229
246
|
useRecommendedRoute?: boolean
|
|
247
|
+
useRelayerRoutes?: boolean
|
|
230
248
|
|
|
231
249
|
walletConfig?: WidgetWalletConfig
|
|
232
250
|
sdkConfig?: WidgetSDKConfig
|
|
@@ -243,6 +261,11 @@ export interface WidgetConfig {
|
|
|
243
261
|
explorerUrls?: Record<number, string[]> &
|
|
244
262
|
Partial<Record<'internal', string[]>>
|
|
245
263
|
poweredBy?: PoweredByType
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Custom labels/badges to show on routes based on specified rules
|
|
267
|
+
*/
|
|
268
|
+
routeLabels?: RouteLabelRule[]
|
|
246
269
|
}
|
|
247
270
|
|
|
248
271
|
export interface FormFieldOptions {
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { MultisigTransaction, MultisigTxDetails } from '@lifi/sdk';
|
|
2
|
-
import type { Connector } from 'wagmi';
|
|
3
|
-
export declare const getSafeMultisigConfig: (connector: Connector) => {
|
|
4
|
-
isMultisigWalletClient: boolean;
|
|
5
|
-
shouldBatchTransactions: boolean;
|
|
6
|
-
sendBatchTransaction: (batchTransactions: MultisigTransaction[]) => Promise<`0x${string}`>;
|
|
7
|
-
getMultisigTransactionDetails: (txHash: string, chainId: number, updateIntermediateStatus?: () => void) => Promise<MultisigTxDetails>;
|
|
8
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
var TransactionStatus;
|
|
2
|
-
(function (TransactionStatus) {
|
|
3
|
-
TransactionStatus["AWAITING_CONFIRMATIONS"] = "AWAITING_CONFIRMATIONS";
|
|
4
|
-
TransactionStatus["AWAITING_EXECUTION"] = "AWAITING_EXECUTION";
|
|
5
|
-
TransactionStatus["CANCELLED"] = "CANCELLED";
|
|
6
|
-
TransactionStatus["FAILED"] = "FAILED";
|
|
7
|
-
TransactionStatus["SUCCESS"] = "SUCCESS";
|
|
8
|
-
})(TransactionStatus || (TransactionStatus = {}));
|
|
9
|
-
export const getSafeMultisigConfig = (connector) => {
|
|
10
|
-
const getMultisigTransactionDetails = async (txHash, chainId, updateIntermediateStatus) => {
|
|
11
|
-
const safeAppProvider = (await connector.getProvider());
|
|
12
|
-
const safeProviderSDK = safeAppProvider.sdk;
|
|
13
|
-
const safeTransactionDetails = await safeProviderSDK.txs.getBySafeTxHash(txHash);
|
|
14
|
-
const safeTxHash = safeTransactionDetails.txId;
|
|
15
|
-
const safeApiTransactionResponse = await fetch(`https://safe-client.safe.global/v1/chains/${chainId}/transactions/${safeTxHash}`);
|
|
16
|
-
const safeApiTransactionDetails = await safeApiTransactionResponse.json();
|
|
17
|
-
const nonTerminalStatus = [
|
|
18
|
-
TransactionStatus.SUCCESS,
|
|
19
|
-
TransactionStatus.CANCELLED,
|
|
20
|
-
TransactionStatus.FAILED,
|
|
21
|
-
];
|
|
22
|
-
const isSafeStatusPending = !nonTerminalStatus.includes(safeTransactionDetails.txStatus) &&
|
|
23
|
-
!nonTerminalStatus.includes(safeApiTransactionDetails.txStatus);
|
|
24
|
-
const isAwaitingExecution = [
|
|
25
|
-
safeTransactionDetails.txStatus,
|
|
26
|
-
safeApiTransactionDetails.txStatus,
|
|
27
|
-
].includes(TransactionStatus.AWAITING_EXECUTION);
|
|
28
|
-
if (isAwaitingExecution) {
|
|
29
|
-
updateIntermediateStatus?.();
|
|
30
|
-
}
|
|
31
|
-
if (isSafeStatusPending) {
|
|
32
|
-
await new Promise((resolve) => {
|
|
33
|
-
setTimeout(resolve, 5000);
|
|
34
|
-
});
|
|
35
|
-
return await getMultisigTransactionDetails(txHash, chainId, updateIntermediateStatus);
|
|
36
|
-
}
|
|
37
|
-
if ([
|
|
38
|
-
safeTransactionDetails.txStatus,
|
|
39
|
-
safeApiTransactionDetails.txStatus,
|
|
40
|
-
].includes(TransactionStatus.SUCCESS)) {
|
|
41
|
-
return {
|
|
42
|
-
status: 'DONE',
|
|
43
|
-
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
if ([
|
|
47
|
-
safeTransactionDetails.txStatus,
|
|
48
|
-
safeApiTransactionDetails.txStatus,
|
|
49
|
-
].includes(TransactionStatus.FAILED)) {
|
|
50
|
-
return {
|
|
51
|
-
status: 'FAILED',
|
|
52
|
-
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
if ([
|
|
56
|
-
safeTransactionDetails.txStatus,
|
|
57
|
-
safeApiTransactionDetails.txStatus,
|
|
58
|
-
].includes(TransactionStatus.CANCELLED)) {
|
|
59
|
-
return {
|
|
60
|
-
status: 'CANCELLED',
|
|
61
|
-
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
if (isSafeStatusPending) {
|
|
65
|
-
return {
|
|
66
|
-
status: 'PENDING',
|
|
67
|
-
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
status: 'PENDING',
|
|
72
|
-
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
const sendBatchTransaction = async (batchTransactions) => {
|
|
76
|
-
const safeAppProvider = (await connector.getProvider());
|
|
77
|
-
const safeProviderSDK = safeAppProvider.sdk;
|
|
78
|
-
try {
|
|
79
|
-
const { safeTxHash } = await safeProviderSDK.txs.send({
|
|
80
|
-
txs: batchTransactions,
|
|
81
|
-
});
|
|
82
|
-
return `0x${safeTxHash.slice(2)}`;
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
throw new Error(error);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
return {
|
|
89
|
-
isMultisigWalletClient: connector?.id === 'safe',
|
|
90
|
-
shouldBatchTransactions: connector?.id === 'safe',
|
|
91
|
-
sendBatchTransaction,
|
|
92
|
-
getMultisigTransactionDetails,
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
//# sourceMappingURL=getSafeMultisigConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getSafeMultisigConfig.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/getSafeMultisigConfig.ts"],"names":[],"mappings":"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"}
|