@aurora-is-near/intents-swap-widget 3.15.2 → 3.16.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/dist/components/TokenIcon.d.ts +5 -12
- package/dist/components/TokenIcon.js +34 -32
- package/dist/components/TokenIcon.js.map +1 -1
- package/dist/{config-CJfcVohD.js → config-DQMHUj5z.js} +678 -681
- package/dist/config-DQMHUj5z.js.map +1 -0
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/constants/chains.d.ts +0 -1
- package/dist/constants/chains.js +44 -65
- package/dist/constants/chains.js.map +1 -1
- package/dist/constants/tokens.d.ts +1 -1
- package/dist/constants/tokens.js +3 -50
- package/dist/constants/tokens.js.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/ext/alchemy/index.js +1 -1
- package/dist/ext/index.js +1 -1
- package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
- package/dist/features/BalanceRpcLoader/index.js +1 -1
- package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
- package/dist/features/ChainsDropdown/index.js +32 -32
- package/dist/features/ChainsDropdown/index.js.map +1 -1
- package/dist/features/DepositMethodSwitcher.js +1 -1
- package/dist/features/ErrorBoundary.js +1 -1
- package/dist/features/ExternalDeposit.js +1 -1
- package/dist/features/SendAddress/index.js +1 -1
- package/dist/features/SendAddress/useNotification.js +1 -1
- package/dist/features/SubmitButton/index.js +1 -1
- package/dist/features/SuccessScreen/index.js +1 -1
- package/dist/features/SwapDirectionSwitcher.js +1 -1
- package/dist/features/SwapQuote/SwapQuote.js +1 -1
- package/dist/features/SwapQuote/index.js +1 -1
- package/dist/features/TokenInput/TokenInput.js +1 -1
- package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
- package/dist/features/TokenInput/TokenInputSource.js +1 -1
- package/dist/features/TokenInput/TokenInputTarget.js +1 -1
- package/dist/features/TokenInput/WalletBalance.js +1 -1
- package/dist/features/TokenInput/hooks/index.js +1 -1
- package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
- package/dist/features/TokenInput/index.js +1 -1
- package/dist/features/TokensList/TokenItem.js +1 -1
- package/dist/features/TokensList/TokensList.js +1 -1
- package/dist/features/TokensList/index.js +1 -1
- package/dist/features/TokensModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/index.js +1 -1
- package/dist/features/index.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useAllTokens.js +1 -1
- package/dist/hooks/useChains.js +1 -1
- package/dist/hooks/useCompatibilityCheck.js +1 -1
- package/dist/hooks/useDefaultToken.js +1 -1
- package/dist/hooks/useExternalDepositStatus/index.js +1 -1
- package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
- package/dist/hooks/useIntentsBalance.js +1 -1
- package/dist/hooks/useIsCompatibilityCheckRequired.js +1 -1
- package/dist/hooks/useMakeDepositAddress.js +1 -1
- package/dist/hooks/useMakeIntentsTransfer.js +1 -1
- package/dist/hooks/useMakeNEARFtTransferCall.js +1 -1
- package/dist/hooks/useMakeQuote.js +1 -1
- package/dist/hooks/useMakeQuoteTransfer.js +1 -1
- package/dist/hooks/useMakeTransfer.js +1 -1
- package/dist/hooks/useMergedBalance.js +1 -1
- package/dist/hooks/useSwitchChain.js +1 -1
- package/dist/hooks/useTheme.js +1 -1
- package/dist/hooks/useTokenInputPair.js +1 -1
- package/dist/hooks/useTokens.js +2 -2
- package/dist/hooks/useTokensFiltered.js +1 -1
- package/dist/hooks/useTokensIntentsUnique.js +1 -1
- package/dist/icons/index.d.ts +4 -0
- package/dist/icons/index.js +392 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/machine/effects/index.js +1 -1
- package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
- package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
- package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
- package/dist/machine/effects/useSelectedTokensEffect.d.ts +0 -2
- package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
- package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
- package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
- package/dist/machine/effects/useWalletConnEffect.js +1 -1
- package/dist/machine/events/index.js +1 -1
- package/dist/machine/events/tokenSelect.js +1 -1
- package/dist/machine/events/validateInputAndMoveTo.js +1 -1
- package/dist/machine/events/validateInputs.js +1 -1
- package/dist/machine/index.js +1 -1
- package/dist/machine/snap.d.ts +0 -18
- package/dist/machine/snap.js +1 -1
- package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
- package/dist/machine/subscriptions/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +0 -4
- package/dist/theme/ThemeProvider.js +1 -1
- package/dist/theme.css +5 -4
- package/dist/types/chain.d.ts +0 -1
- package/dist/types/config.d.ts +1 -1
- package/dist/types/token.d.ts +0 -1
- package/dist/utils/intents/signers/near.js +1 -1
- package/dist/utils/intents/signers/privy.js +1 -1
- package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +3 -3
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js.map +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapContent.js +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
- package/package.json +1 -1
- package/src/components/TokenIcon.tsx +35 -38
- package/src/config.tsx +0 -2
- package/src/constants/chains.ts +0 -23
- package/src/constants/tokens.ts +1 -48
- package/src/features/ChainsDropdown/index.tsx +5 -5
- package/src/features/TokenInput/TokenInput.tsx +1 -1
- package/src/features/TokensList/TokenItem.tsx +1 -1
- package/src/hooks/useTokens.ts +1 -8
- package/src/icons/abg.svg +11 -0
- package/src/icons/arb.svg +22 -0
- package/src/icons/aster.svg +1 -0
- package/src/icons/aurora.svg +14 -0
- package/src/icons/avax.svg +12 -0
- package/src/icons/base.svg +11 -0
- package/src/icons/bera.svg +20 -0
- package/src/icons/bsc.svg +14 -0
- package/src/icons/btc.svg +11 -0
- package/src/icons/cardano.svg +40 -0
- package/src/icons/doge.svg +15 -0
- package/src/icons/eth.svg +16 -0
- package/src/icons/frax.svg +26 -0
- package/src/icons/gnear.svg +1 -0
- package/src/icons/gnosis.svg +16 -0
- package/src/icons/index.tsx +111 -0
- package/src/icons/itlx.svg +12 -0
- package/src/icons/jambo.svg +10 -0
- package/src/icons/knc.svg +1 -0
- package/src/icons/loud.svg +7 -0
- package/src/icons/ltc.svg +1 -0
- package/src/icons/mon.svg +1 -0
- package/src/icons/mpdao.svg +1 -0
- package/src/icons/near.svg +16 -0
- package/src/icons/noear.svg +10 -0
- package/src/icons/op.svg +12 -0
- package/src/icons/pol.svg +11 -0
- package/src/icons/public.svg +1 -0
- package/src/icons/purge.svg +10 -0
- package/src/icons/rhea.svg +10 -0
- package/src/icons/sol.svg +21 -0
- package/src/icons/sui.svg +16 -0
- package/src/icons/ton.svg +11 -0
- package/src/icons/tron.svg +11 -0
- package/src/icons/unknown.svg +4 -0
- package/src/icons/usd1.svg +10 -0
- package/src/icons/usdf.svg +10 -0
- package/src/icons/wif.svg +10 -0
- package/src/icons/xdai.svg +22 -0
- package/src/icons/xrp.svg +17 -0
- package/src/icons/zec.svg +16 -0
- package/src/tailwind.css +0 -4
- package/src/theme/ThemeProvider.tsx +3 -1
- package/src/theme.css +5 -4
- package/src/types/chain.ts +0 -1
- package/src/types/config.ts +1 -1
- package/src/types/token.ts +0 -1
- package/src/widgets/WidgetDeposit/WidgetDepositContent.tsx +1 -1
- package/dist/config-CJfcVohD.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as o, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import a from "clsx";
|
|
3
3
|
import { SkeletonBox as s } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as i } from "../../config-
|
|
4
|
+
import { y as i } from "../../config-DQMHUj5z.js";
|
|
5
5
|
const p = () => {
|
|
6
6
|
const { hideTokenInputHeadings: l } = i();
|
|
7
7
|
return /* @__PURE__ */ o("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
|
|
@@ -3,7 +3,7 @@ import { useState as b, useEffect as y } from "react";
|
|
|
3
3
|
import { useTokenModal as R } from "../../hooks/useTokenModal.js";
|
|
4
4
|
import { WidgetSwapSkeleton as S } from "./WidgetSwapSkeleton.js";
|
|
5
5
|
import { useTypedTranslation as D } from "../../localisation.js";
|
|
6
|
-
import { b as N, u as O, y as Q, n as j, c as q, p as w, o as F, S as U } from "../../config-
|
|
6
|
+
import { b as N, u as O, y as Q, n as j, c as q, p as w, o as F, S as U } from "../../config-DQMHUj5z.js";
|
|
7
7
|
import "@tanstack/react-query";
|
|
8
8
|
import "@headlessui/react";
|
|
9
9
|
import "framer-motion";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as a, jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import o from "clsx";
|
|
3
3
|
import { SkeletonBox as s } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as i } from "../../config-
|
|
4
|
+
import { y as i } from "../../config-DQMHUj5z.js";
|
|
5
5
|
const m = () => {
|
|
6
6
|
const { hideTokenInputHeadings: e } = i();
|
|
7
7
|
return /* @__PURE__ */ a("div", { className: "w-full gap-sw-lg relative flex flex-col", children: [
|
|
@@ -3,7 +3,7 @@ import { useState as w, useEffect as b } from "react";
|
|
|
3
3
|
import { useTokenModal as B } from "../../hooks/useTokenModal.js";
|
|
4
4
|
import { WidgetWithdrawSkeleton as y } from "./WidgetWithdrawSkeleton.js";
|
|
5
5
|
import { useTypedTranslation as D } from "../../localisation.js";
|
|
6
|
-
import { b as N, u as O, y as Q, n as j, c as q, p as S, o as F, S as U } from "../../config-
|
|
6
|
+
import { b as N, u as O, y as Q, n as j, c as q, p as S, o as F, S as U } from "../../config-DQMHUj5z.js";
|
|
7
7
|
import "@tanstack/react-query";
|
|
8
8
|
import "@headlessui/react";
|
|
9
9
|
import "framer-motion";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import o from "clsx";
|
|
3
3
|
import { SkeletonBox as l } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as x } from "../../config-
|
|
4
|
+
import { y as x } from "../../config-DQMHUj5z.js";
|
|
5
5
|
const p = () => {
|
|
6
6
|
const { hideTokenInputHeadings: s } = x();
|
|
7
7
|
return /* @__PURE__ */ a("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
|
package/package.json
CHANGED
|
@@ -1,50 +1,47 @@
|
|
|
1
1
|
import { Icon } from './Icon';
|
|
2
2
|
|
|
3
3
|
import { cn } from '@/utils';
|
|
4
|
+
import { TOKENS_DATA } from '@/constants/tokens';
|
|
5
|
+
import { ASSET_ICONS, CHAIN_ICONS, UNKNOWN_ICON } from '@/icons';
|
|
6
|
+
import type { Token } from '@/types/token';
|
|
4
7
|
|
|
5
8
|
type TokenItemProps = {
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
token: Token;
|
|
10
|
+
chainShowIcon: boolean;
|
|
8
11
|
className?: string;
|
|
9
|
-
}
|
|
10
|
-
| {
|
|
11
|
-
chainShowIcon: true;
|
|
12
|
-
chainIcon: string;
|
|
13
|
-
chainName: string;
|
|
14
|
-
}
|
|
15
|
-
| {
|
|
16
|
-
chainShowIcon: false;
|
|
17
|
-
chainIcon?: string | undefined;
|
|
18
|
-
chainName?: string | undefined;
|
|
19
|
-
}
|
|
20
|
-
);
|
|
12
|
+
};
|
|
21
13
|
|
|
22
14
|
const BORDER_RADIUS = 4;
|
|
23
15
|
|
|
24
16
|
export const TokenIcon = ({
|
|
25
|
-
|
|
26
|
-
name,
|
|
27
|
-
chainName,
|
|
28
|
-
chainIcon,
|
|
17
|
+
token,
|
|
29
18
|
chainShowIcon,
|
|
30
19
|
className,
|
|
31
|
-
}: TokenItemProps) =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
20
|
+
}: TokenItemProps) => {
|
|
21
|
+
const tokenSymbolLowerCase = token.symbol.toLowerCase();
|
|
22
|
+
const chainIcon = CHAIN_ICONS[token.blockchain] ?? UNKNOWN_ICON;
|
|
23
|
+
const tokenIcon =
|
|
24
|
+
ASSET_ICONS[tokenSymbolLowerCase] ??
|
|
25
|
+
TOKENS_DATA[tokenSymbolLowerCase]?.icon;
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<div className="relative flex items-center">
|
|
29
|
+
<Icon icon={tokenIcon} label={token.name} />
|
|
30
|
+
{chainShowIcon && (
|
|
31
|
+
<div
|
|
32
|
+
className={cn(
|
|
33
|
+
'absolute top-[19px] right-[-4px] flex h-[16px] w-[16px] items-center justify-center overflow-hidden border-2',
|
|
34
|
+
className,
|
|
35
|
+
)}
|
|
36
|
+
style={{ borderRadius: BORDER_RADIUS }}>
|
|
37
|
+
<Icon
|
|
38
|
+
size={16}
|
|
39
|
+
radius={BORDER_RADIUS}
|
|
40
|
+
icon={chainIcon}
|
|
41
|
+
label={token.chainName}
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
)}
|
|
45
|
+
</div>
|
|
46
|
+
);
|
|
47
|
+
};
|
package/src/config.tsx
CHANGED
|
@@ -33,8 +33,6 @@ const DISABLED_TOKENS = ['fms', 'abg', 'stjack', 'noear', 'testnebula'];
|
|
|
33
33
|
|
|
34
34
|
const DEFAULT_CONFIG: WidgetConfig = {
|
|
35
35
|
appName: 'Unknown',
|
|
36
|
-
appIcon:
|
|
37
|
-
'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/unknown.svg',
|
|
38
36
|
|
|
39
37
|
slippageTolerance: 100, // 1%
|
|
40
38
|
intentsAccountType: 'evm',
|
package/src/constants/chains.ts
CHANGED
|
@@ -75,9 +75,6 @@ export const NOT_EVM_CHAINS = [
|
|
|
75
75
|
|
|
76
76
|
export const CHAINS = [...EVM_CHAINS, ...NOT_EVM_CHAINS] as const;
|
|
77
77
|
|
|
78
|
-
export const DEFAULT_CHAIN_ICON =
|
|
79
|
-
'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/unknown.svg';
|
|
80
|
-
|
|
81
78
|
export const DRY_QUOTE_ZERO_ADDRESSES = {
|
|
82
79
|
evm: '0x0000000000000000000000000000000000000000',
|
|
83
80
|
sol: '11111111111111111111111111111111',
|
|
@@ -106,102 +103,82 @@ export const CHAINS_LIST: Record<Chains, Chain> = {
|
|
|
106
103
|
near: {
|
|
107
104
|
id: 'near',
|
|
108
105
|
label: 'NEAR',
|
|
109
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/near.svg',
|
|
110
106
|
},
|
|
111
107
|
eth: {
|
|
112
108
|
id: 'eth',
|
|
113
109
|
label: 'Ethereum',
|
|
114
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/eth.svg',
|
|
115
110
|
},
|
|
116
111
|
sol: {
|
|
117
112
|
id: 'sol',
|
|
118
113
|
label: 'Solana',
|
|
119
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/sol.svg',
|
|
120
114
|
},
|
|
121
115
|
base: {
|
|
122
116
|
id: 'base',
|
|
123
117
|
label: 'Base',
|
|
124
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/base.svg',
|
|
125
118
|
},
|
|
126
119
|
btc: {
|
|
127
120
|
id: 'btc',
|
|
128
121
|
label: 'Bitcoin',
|
|
129
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/btc.svg',
|
|
130
122
|
},
|
|
131
123
|
gnosis: {
|
|
132
124
|
id: 'gnosis',
|
|
133
125
|
label: 'Gnosis',
|
|
134
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/gnosis.svg',
|
|
135
126
|
},
|
|
136
127
|
xrp: {
|
|
137
128
|
id: 'xrp',
|
|
138
129
|
label: 'XRP',
|
|
139
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/xrp.svg',
|
|
140
130
|
},
|
|
141
131
|
bera: {
|
|
142
132
|
id: 'bera',
|
|
143
133
|
label: 'Bera',
|
|
144
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/bera.svg',
|
|
145
134
|
},
|
|
146
135
|
tron: {
|
|
147
136
|
id: 'tron',
|
|
148
137
|
label: 'Tron',
|
|
149
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/tron.svg',
|
|
150
138
|
},
|
|
151
139
|
zec: {
|
|
152
140
|
id: 'zec',
|
|
153
141
|
label: 'Zcash',
|
|
154
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/zec.svg',
|
|
155
142
|
},
|
|
156
143
|
doge: {
|
|
157
144
|
id: 'doge',
|
|
158
145
|
label: 'Dogecoin',
|
|
159
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/doge.svg',
|
|
160
146
|
},
|
|
161
147
|
arb: {
|
|
162
148
|
id: 'arb',
|
|
163
149
|
label: 'Arbitrum',
|
|
164
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/arb.svg',
|
|
165
150
|
},
|
|
166
151
|
ton: {
|
|
167
152
|
id: 'ton',
|
|
168
153
|
label: 'TON',
|
|
169
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/ton.svg',
|
|
170
154
|
},
|
|
171
155
|
op: {
|
|
172
156
|
id: 'op',
|
|
173
157
|
label: 'Optimism',
|
|
174
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/op.svg',
|
|
175
158
|
},
|
|
176
159
|
avax: {
|
|
177
160
|
id: 'avax',
|
|
178
161
|
label: 'Avalanche',
|
|
179
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/avax.svg',
|
|
180
162
|
},
|
|
181
163
|
pol: {
|
|
182
164
|
id: 'pol',
|
|
183
165
|
label: 'Polygon',
|
|
184
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/pol.svg',
|
|
185
166
|
},
|
|
186
167
|
bsc: {
|
|
187
168
|
id: 'bsc',
|
|
188
169
|
label: 'Binance Smart Chain',
|
|
189
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/bsc.svg',
|
|
190
170
|
},
|
|
191
171
|
sui: {
|
|
192
172
|
id: 'sui',
|
|
193
173
|
label: 'Sui',
|
|
194
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/sui.svg',
|
|
195
174
|
},
|
|
196
175
|
cardano: {
|
|
197
176
|
id: 'cardano',
|
|
198
177
|
label: 'Cardano',
|
|
199
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/cardano.svg',
|
|
200
178
|
},
|
|
201
179
|
ltc: {
|
|
202
180
|
id: 'ltc',
|
|
203
181
|
label: 'Litecoin',
|
|
204
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/ltc.svg',
|
|
205
182
|
},
|
|
206
183
|
};
|
|
207
184
|
|
package/src/constants/tokens.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const DEFAULT_TOKEN_ICON = '/icons/widget/unknown-token.png';
|
|
2
2
|
|
|
3
3
|
type TokenAdditionalData = {
|
|
4
|
-
icon
|
|
4
|
+
icon?: string;
|
|
5
5
|
name: string;
|
|
6
6
|
};
|
|
7
7
|
|
|
@@ -98,19 +98,15 @@ export const TOKENS_DATA: Record<string, TokenAdditionalData> = {
|
|
|
98
98
|
name: 'Burrow',
|
|
99
99
|
},
|
|
100
100
|
abg: {
|
|
101
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/abg.png',
|
|
102
101
|
name: 'Asian Girl Boss',
|
|
103
102
|
},
|
|
104
103
|
noear: {
|
|
105
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/noear.png',
|
|
106
104
|
name: 'NOEAR',
|
|
107
105
|
},
|
|
108
106
|
ref: {
|
|
109
|
-
icon: undefined,
|
|
110
107
|
name: 'Ref Finance',
|
|
111
108
|
},
|
|
112
109
|
gnear: {
|
|
113
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/gnear.svg',
|
|
114
110
|
name: 'gNear',
|
|
115
111
|
},
|
|
116
112
|
gno: {
|
|
@@ -126,7 +122,6 @@ export const TOKENS_DATA: Record<string, TokenAdditionalData> = {
|
|
|
126
122
|
name: 'Safe',
|
|
127
123
|
},
|
|
128
124
|
score: {
|
|
129
|
-
icon: undefined,
|
|
130
125
|
name: 'Trust Score',
|
|
131
126
|
},
|
|
132
127
|
kaito: {
|
|
@@ -138,147 +133,111 @@ export const TOKENS_DATA: Record<string, TokenAdditionalData> = {
|
|
|
138
133
|
name: 'TRX',
|
|
139
134
|
},
|
|
140
135
|
arb: {
|
|
141
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/arb.svg',
|
|
142
136
|
name: 'Arbitrum',
|
|
143
137
|
},
|
|
144
138
|
avax: {
|
|
145
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/avax.svg',
|
|
146
139
|
name: 'Avalanche',
|
|
147
140
|
},
|
|
148
141
|
base: {
|
|
149
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/base.svg',
|
|
150
142
|
name: 'Base',
|
|
151
143
|
},
|
|
152
144
|
bera: {
|
|
153
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/bera.svg',
|
|
154
145
|
name: 'Bera',
|
|
155
146
|
},
|
|
156
147
|
bsc: {
|
|
157
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/bsc.svg',
|
|
158
148
|
name: 'Binance Smart Chain',
|
|
159
149
|
},
|
|
160
150
|
bnb: {
|
|
161
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/bsc.svg',
|
|
162
151
|
name: 'Binance Coin',
|
|
163
152
|
},
|
|
164
153
|
btc: {
|
|
165
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/btc.svg',
|
|
166
154
|
name: 'Bitcoin',
|
|
167
155
|
},
|
|
168
156
|
ada: {
|
|
169
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/cardano.svg',
|
|
170
157
|
name: 'Cardano',
|
|
171
158
|
},
|
|
172
159
|
doge: {
|
|
173
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/doge.svg',
|
|
174
160
|
name: 'Dogecoin',
|
|
175
161
|
},
|
|
176
162
|
eth: {
|
|
177
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/eth.svg',
|
|
178
163
|
name: 'Ethereum',
|
|
179
164
|
},
|
|
180
165
|
frax: {
|
|
181
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/frax.png',
|
|
182
166
|
name: 'FRAZ',
|
|
183
167
|
},
|
|
184
168
|
gnosis: {
|
|
185
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/gnosis.svg',
|
|
186
169
|
name: 'Gnosis',
|
|
187
170
|
},
|
|
188
171
|
jambo: {
|
|
189
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/jambo.png',
|
|
190
172
|
name: 'Jambo',
|
|
191
173
|
},
|
|
192
174
|
knc: {
|
|
193
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/knc.svg',
|
|
194
175
|
name: 'KNC',
|
|
195
176
|
},
|
|
196
177
|
loud: {
|
|
197
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/loud.svg',
|
|
198
178
|
name: 'Loud',
|
|
199
179
|
},
|
|
200
180
|
mpdao: {
|
|
201
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/mpdao.svg',
|
|
202
181
|
name: 'mpDAO',
|
|
203
182
|
},
|
|
204
183
|
near: {
|
|
205
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/near.svg',
|
|
206
184
|
name: 'Near',
|
|
207
185
|
},
|
|
208
186
|
op: {
|
|
209
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/op.svg',
|
|
210
187
|
name: 'Optimism',
|
|
211
188
|
},
|
|
212
189
|
pol: {
|
|
213
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/pol.svg',
|
|
214
190
|
name: 'Polygon',
|
|
215
191
|
},
|
|
216
192
|
public: {
|
|
217
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/public.svg',
|
|
218
193
|
name: 'Public',
|
|
219
194
|
},
|
|
220
195
|
purge: {
|
|
221
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/purge.png',
|
|
222
196
|
name: 'Forgive Me Father',
|
|
223
197
|
},
|
|
224
198
|
rhea: {
|
|
225
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/rhea.png',
|
|
226
199
|
name: 'Rhea',
|
|
227
200
|
},
|
|
228
201
|
sol: {
|
|
229
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/sol.svg',
|
|
230
202
|
name: 'Solana',
|
|
231
203
|
},
|
|
232
204
|
sui: {
|
|
233
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/sui.svg',
|
|
234
205
|
name: 'Sui',
|
|
235
206
|
},
|
|
236
207
|
ton: {
|
|
237
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/ton.svg',
|
|
238
208
|
name: 'Ton',
|
|
239
209
|
},
|
|
240
210
|
tron: {
|
|
241
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/tron.svg',
|
|
242
211
|
name: 'Tron',
|
|
243
212
|
},
|
|
244
213
|
usd1: {
|
|
245
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/usd1.png',
|
|
246
214
|
name: 'USD1',
|
|
247
215
|
},
|
|
248
216
|
usdf: {
|
|
249
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/usdf.png',
|
|
250
217
|
name: 'USDf',
|
|
251
218
|
},
|
|
252
219
|
$wif: {
|
|
253
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/wif.png',
|
|
254
220
|
name: 'WIF',
|
|
255
221
|
},
|
|
256
222
|
xdai: {
|
|
257
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/xdai.svg',
|
|
258
223
|
name: 'xDAI',
|
|
259
224
|
},
|
|
260
225
|
xrp: {
|
|
261
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/xrp.svg',
|
|
262
226
|
name: 'Ripple',
|
|
263
227
|
},
|
|
264
228
|
zec: {
|
|
265
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/zec.svg',
|
|
266
229
|
name: 'Zcash',
|
|
267
230
|
},
|
|
268
231
|
xbtc: {
|
|
269
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/btc.svg',
|
|
270
232
|
name: 'xBTC',
|
|
271
233
|
},
|
|
272
234
|
wbtc: {
|
|
273
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/btc.svg',
|
|
274
235
|
name: 'wBTC',
|
|
275
236
|
},
|
|
276
237
|
wnear: {
|
|
277
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/near.svg',
|
|
278
238
|
name: 'wNEAR',
|
|
279
239
|
},
|
|
280
240
|
weth: {
|
|
281
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/eth.svg',
|
|
282
241
|
name: 'wETH',
|
|
283
242
|
},
|
|
284
243
|
nearkat: {
|
|
@@ -286,27 +245,21 @@ export const TOKENS_DATA: Record<string, TokenAdditionalData> = {
|
|
|
286
245
|
name: 'NearKat',
|
|
287
246
|
},
|
|
288
247
|
itlx: {
|
|
289
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/itlx.svg',
|
|
290
248
|
name: 'ITLX',
|
|
291
249
|
},
|
|
292
250
|
ltc: {
|
|
293
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/ltc.svg',
|
|
294
251
|
name: 'LTC',
|
|
295
252
|
},
|
|
296
253
|
aster: {
|
|
297
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/aster.svg',
|
|
298
254
|
name: 'ASTER',
|
|
299
255
|
},
|
|
300
256
|
spx: {
|
|
301
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/spx.svg',
|
|
302
257
|
name: 'SPX',
|
|
303
258
|
},
|
|
304
259
|
eure: {
|
|
305
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/eure.svg',
|
|
306
260
|
name: 'EURe',
|
|
307
261
|
},
|
|
308
262
|
gbpe: {
|
|
309
|
-
icon: 'https://wtmcxrwapthiogjpxwfr.supabase.co/storage/v1/object/public/swap-widget/gbpe.svg',
|
|
310
263
|
name: 'GBPE',
|
|
311
264
|
},
|
|
312
265
|
};
|
|
@@ -9,9 +9,9 @@ import { useConfig } from '@/config';
|
|
|
9
9
|
import { Hr } from '@/components/Hr';
|
|
10
10
|
import { Icon } from '@/components/Icon';
|
|
11
11
|
import { useChains } from '@/hooks/useChains';
|
|
12
|
-
import { CHAINS_LIST } from '@/constants/chains';
|
|
13
12
|
import { notReachable } from '@/utils/notReachable';
|
|
14
13
|
import { useTypedTranslation } from '@/localisation';
|
|
14
|
+
import { ASSET_ICONS, UNKNOWN_ICON } from '@/icons';
|
|
15
15
|
import type { Chains, ChainsFilter } from '@/types/chain';
|
|
16
16
|
|
|
17
17
|
type Msg = { type: 'on_click_chain'; chain: 'all' | 'intents' | Chains };
|
|
@@ -72,7 +72,7 @@ export const ChainsDropdown = ({
|
|
|
72
72
|
<Icon
|
|
73
73
|
radius={10}
|
|
74
74
|
label={selectedChain.label}
|
|
75
|
-
icon={
|
|
75
|
+
icon={ASSET_ICONS[selected] ?? UNKNOWN_ICON}
|
|
76
76
|
/>
|
|
77
77
|
);
|
|
78
78
|
}
|
|
@@ -125,10 +125,10 @@ export const ChainsDropdown = ({
|
|
|
125
125
|
{({ focus }) => (
|
|
126
126
|
<ChainItem
|
|
127
127
|
chain="intents"
|
|
128
|
-
label={
|
|
128
|
+
label={appName}
|
|
129
129
|
isSelected={selected === 'intents'}
|
|
130
130
|
isFocused={focus}
|
|
131
|
-
icon={appIcon}
|
|
131
|
+
icon={appIcon ?? UNKNOWN_ICON}
|
|
132
132
|
onMsg={(msg) => {
|
|
133
133
|
switch (msg.type) {
|
|
134
134
|
case 'on_click_chain':
|
|
@@ -156,7 +156,7 @@ export const ChainsDropdown = ({
|
|
|
156
156
|
<ChainItem
|
|
157
157
|
chain={chain.id}
|
|
158
158
|
label={chain.label}
|
|
159
|
-
icon={
|
|
159
|
+
icon={ASSET_ICONS[chain.id] ?? UNKNOWN_ICON}
|
|
160
160
|
isSelected={selected === chain.id}
|
|
161
161
|
isFocused={focus}
|
|
162
162
|
onMsg={(msg) => {
|
|
@@ -96,9 +96,9 @@ export const TokenInputWithToken = ({
|
|
|
96
96
|
},
|
|
97
97
|
)}>
|
|
98
98
|
<TokenIcon
|
|
99
|
+
token={token}
|
|
99
100
|
chainShowIcon={!token.isIntent}
|
|
100
101
|
className="border-sw-gray-800 group-hover:border-sw-gray-700 transition-colors top-[14px]"
|
|
101
|
-
{...token}
|
|
102
102
|
/>
|
|
103
103
|
<span className="text-sw-label-md text-sw-gray-50">
|
|
104
104
|
{token.symbol}
|
|
@@ -50,9 +50,9 @@ export const TokenItem = ({
|
|
|
50
50
|
!isNotSelectable && onMsg({ type: 'on_select_token', token })
|
|
51
51
|
}>
|
|
52
52
|
<TokenIcon
|
|
53
|
+
token={token}
|
|
53
54
|
chainShowIcon={!token.isIntent}
|
|
54
55
|
className="border-sw-gray-900 group-hover:border-sw-gray-800 transition-colors"
|
|
55
|
-
{...token}
|
|
56
56
|
/>
|
|
57
57
|
|
|
58
58
|
<div className="gap-sw-xs mr-auto flex flex-col">
|
package/src/hooks/useTokens.ts
CHANGED
|
@@ -3,10 +3,9 @@ import { useQuery } from '@tanstack/react-query';
|
|
|
3
3
|
import { OneClickService } from '@defuse-protocol/one-click-sdk-typescript';
|
|
4
4
|
|
|
5
5
|
import { useConfig } from '@/config';
|
|
6
|
+
import { CHAINS_LIST } from '@/constants/chains';
|
|
6
7
|
import { NATIVE_NEAR_DUMB_ASSET_ID, TOKENS_DATA } from '@/constants/tokens';
|
|
7
|
-
import { CHAINS_LIST, DEFAULT_CHAIN_ICON } from '@/constants/chains';
|
|
8
8
|
import { isValidChain } from '@/utils/checkers/isValidChain';
|
|
9
|
-
import type { Chains } from '@/types/chain';
|
|
10
9
|
import type { SimpleToken, Token } from '@/types/token';
|
|
11
10
|
|
|
12
11
|
const getTokenIcon = (tokenSymbol: string): string => {
|
|
@@ -15,10 +14,6 @@ const getTokenIcon = (tokenSymbol: string): string => {
|
|
|
15
14
|
return TOKENS_DATA[symbol]?.icon ?? '';
|
|
16
15
|
};
|
|
17
16
|
|
|
18
|
-
const getChainIcon = (blockchain: Chains): string => {
|
|
19
|
-
return CHAINS_LIST[blockchain].icon ?? DEFAULT_CHAIN_ICON;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
17
|
const capitalizeChainName = (blockchain: string) =>
|
|
23
18
|
`${blockchain?.charAt(0).toUpperCase()}${blockchain?.slice(1)}`;
|
|
24
19
|
|
|
@@ -94,7 +89,6 @@ export const useTokens = (variant?: 'source' | 'target') => {
|
|
|
94
89
|
isIntent: false,
|
|
95
90
|
icon: token.icon ?? getTokenIcon(token.symbol),
|
|
96
91
|
name: getTokenName(token.symbol),
|
|
97
|
-
chainIcon: getChainIcon(blockchain),
|
|
98
92
|
chainName:
|
|
99
93
|
CHAINS_LIST[token.blockchain]?.label ??
|
|
100
94
|
capitalizeChainName(token.blockchain),
|
|
@@ -120,7 +114,6 @@ export const useTokens = (variant?: 'source' | 'target') => {
|
|
|
120
114
|
chainName: 'Near',
|
|
121
115
|
blockchain: 'near',
|
|
122
116
|
assetId: NATIVE_NEAR_DUMB_ASSET_ID,
|
|
123
|
-
chainIcon: getChainIcon('near'),
|
|
124
117
|
icon: TOKENS_DATA.near?.icon ?? '',
|
|
125
118
|
price: wnearToken?.price ?? 0,
|
|
126
119
|
contractAddress: wnearToken?.contractAddress,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
2
|
+
width="64"
|
|
3
|
+
height="64"
|
|
4
|
+
viewBox="0 0 64 64">
|
|
5
|
+
<image
|
|
6
|
+
width="64"
|
|
7
|
+
height="64"
|
|
8
|
+
preserveAspectRatio="xMidYMid meet"
|
|
9
|
+
href="data:image/png;base64,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"
|
|
10
|
+
/>
|
|
11
|
+
</svg>
|