@relayprotocol/relay-kit-ui 5.1.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/_cjs/src/components/common/BalanceDisplay.js +4 -3
  2. package/_cjs/src/components/common/BalanceDisplay.js.map +1 -1
  3. package/_cjs/src/components/common/MultiWalletDropdown.js +5 -4
  4. package/_cjs/src/components/common/MultiWalletDropdown.js.map +1 -1
  5. package/_cjs/src/components/common/PercentageButtons.js +9 -9
  6. package/_cjs/src/components/common/PercentageButtons.js.map +1 -1
  7. package/_cjs/src/components/common/SlippageToleranceConfig.js +30 -17
  8. package/_cjs/src/components/common/SlippageToleranceConfig.js.map +1 -1
  9. package/_cjs/src/components/common/TokenSelector/ChainFilter.js +21 -19
  10. package/_cjs/src/components/common/TokenSelector/ChainFilter.js.map +1 -1
  11. package/_cjs/src/components/common/TokenSelector/ChainFilterRow.js +117 -0
  12. package/_cjs/src/components/common/TokenSelector/ChainFilterRow.js.map +1 -0
  13. package/_cjs/src/components/common/TokenSelector/ChainFilterSidebar.js +2 -13
  14. package/_cjs/src/components/common/TokenSelector/ChainFilterSidebar.js.map +1 -1
  15. package/_cjs/src/components/common/TokenSelector/CompactChainFilter.js +180 -0
  16. package/_cjs/src/components/common/TokenSelector/CompactChainFilter.js.map +1 -0
  17. package/_cjs/src/components/common/TokenSelector/PaymentMethod.js +456 -0
  18. package/_cjs/src/components/common/TokenSelector/PaymentMethod.js.map +1 -0
  19. package/_cjs/src/components/common/TokenSelector/PaymentTokenList.js +83 -0
  20. package/_cjs/src/components/common/TokenSelector/PaymentTokenList.js.map +1 -0
  21. package/_cjs/src/components/common/TokenSelector/triggers/PaymentMethodTrigger.js +77 -0
  22. package/_cjs/src/components/common/TokenSelector/triggers/PaymentMethodTrigger.js.map +1 -0
  23. package/_cjs/src/components/primitives/ChainTokenIcon.js +3 -2
  24. package/_cjs/src/components/primitives/ChainTokenIcon.js.map +1 -1
  25. package/_cjs/src/components/primitives/SlippageButton.js +40 -0
  26. package/_cjs/src/components/primitives/SlippageButton.js.map +1 -0
  27. package/_cjs/src/components/primitives/Tabs.js +4 -2
  28. package/_cjs/src/components/primitives/Tabs.js.map +1 -1
  29. package/_cjs/src/components/widgets/SwapButton.js +35 -7
  30. package/_cjs/src/components/widgets/SwapButton.js.map +1 -1
  31. package/_cjs/src/components/widgets/TokenWidget/AmountModeToggle.js +31 -0
  32. package/_cjs/src/components/widgets/TokenWidget/AmountModeToggle.js.map +1 -0
  33. package/_cjs/src/components/widgets/TokenWidget/AmountSectionHeader.js +8 -0
  34. package/_cjs/src/components/widgets/TokenWidget/AmountSectionHeader.js.map +1 -0
  35. package/_cjs/src/components/widgets/TokenWidget/BuyTabContent.js +218 -0
  36. package/_cjs/src/components/widgets/TokenWidget/BuyTabContent.js.map +1 -0
  37. package/_cjs/src/components/widgets/TokenWidget/DestinationWalletSelector.js +20 -0
  38. package/_cjs/src/components/widgets/TokenWidget/DestinationWalletSelector.js.map +1 -0
  39. package/_cjs/src/components/widgets/TokenWidget/FeeBreakdownInfo.js +26 -0
  40. package/_cjs/src/components/widgets/TokenWidget/FeeBreakdownInfo.js.map +1 -0
  41. package/_cjs/src/components/widgets/TokenWidget/FeeBreakdownTooltip.js +40 -0
  42. package/_cjs/src/components/widgets/TokenWidget/FeeBreakdownTooltip.js.map +1 -0
  43. package/_cjs/src/components/widgets/TokenWidget/SectionContainer.js +22 -0
  44. package/_cjs/src/components/widgets/TokenWidget/SectionContainer.js.map +1 -0
  45. package/_cjs/src/components/widgets/TokenWidget/SellTabContent.js +280 -0
  46. package/_cjs/src/components/widgets/TokenWidget/SellTabContent.js.map +1 -0
  47. package/_cjs/src/components/widgets/TokenWidget/TransactionDetailsFooter.js +28 -0
  48. package/_cjs/src/components/widgets/TokenWidget/TransactionDetailsFooter.js.map +1 -0
  49. package/_cjs/src/components/widgets/TokenWidget/hooks/useWalletGuards.js +108 -0
  50. package/_cjs/src/components/widgets/TokenWidget/hooks/useWalletGuards.js.map +1 -0
  51. package/_cjs/src/components/widgets/TokenWidget/index.js +9 -0
  52. package/_cjs/src/components/widgets/TokenWidget/index.js.map +1 -0
  53. package/_cjs/src/components/widgets/TokenWidget/widget/TokenWidgetRenderer.js +770 -0
  54. package/_cjs/src/components/widgets/TokenWidget/widget/TokenWidgetRenderer.js.map +1 -0
  55. package/_cjs/src/components/widgets/TokenWidget/widget/index.js +1005 -0
  56. package/_cjs/src/components/widgets/TokenWidget/widget/index.js.map +1 -0
  57. package/_cjs/src/hooks/index.js +3 -1
  58. package/_cjs/src/hooks/index.js.map +1 -1
  59. package/_cjs/src/hooks/useDuneBalances.js +2 -1
  60. package/_cjs/src/hooks/useDuneBalances.js.map +1 -1
  61. package/_cjs/src/hooks/useEOADetection.js +3 -0
  62. package/_cjs/src/hooks/useEOADetection.js.map +1 -1
  63. package/_cjs/src/hooks/useMultiWalletBalances.js +119 -0
  64. package/_cjs/src/hooks/useMultiWalletBalances.js.map +1 -0
  65. package/_cjs/src/index.js.map +1 -1
  66. package/_cjs/src/styles.css +251 -88
  67. package/_cjs/src/utils/numbers.js +39 -1
  68. package/_cjs/src/utils/numbers.js.map +1 -1
  69. package/_cjs/src/utils/tokenSelector.js +4 -1
  70. package/_cjs/src/utils/tokenSelector.js.map +1 -1
  71. package/_cjs/src/utils/tokens.js +20 -1
  72. package/_cjs/src/utils/tokens.js.map +1 -1
  73. package/_cjs/src/version.js +1 -1
  74. package/_cjs/tsconfig.build.tsbuildinfo +1 -1
  75. package/_esm/src/components/common/BalanceDisplay.js +4 -3
  76. package/_esm/src/components/common/BalanceDisplay.js.map +1 -1
  77. package/_esm/src/components/common/MultiWalletDropdown.js +5 -4
  78. package/_esm/src/components/common/MultiWalletDropdown.js.map +1 -1
  79. package/_esm/src/components/common/PercentageButtons.js +10 -10
  80. package/_esm/src/components/common/PercentageButtons.js.map +1 -1
  81. package/_esm/src/components/common/SlippageToleranceConfig.js +31 -23
  82. package/_esm/src/components/common/SlippageToleranceConfig.js.map +1 -1
  83. package/_esm/src/components/common/TokenSelector/ChainFilter.js +25 -23
  84. package/_esm/src/components/common/TokenSelector/ChainFilter.js.map +1 -1
  85. package/_esm/src/components/common/TokenSelector/ChainFilterRow.js +112 -0
  86. package/_esm/src/components/common/TokenSelector/ChainFilterRow.js.map +1 -0
  87. package/_esm/src/components/common/TokenSelector/ChainFilterSidebar.js +4 -15
  88. package/_esm/src/components/common/TokenSelector/ChainFilterSidebar.js.map +1 -1
  89. package/_esm/src/components/common/TokenSelector/CompactChainFilter.js +176 -0
  90. package/_esm/src/components/common/TokenSelector/CompactChainFilter.js.map +1 -0
  91. package/_esm/src/components/common/TokenSelector/PaymentMethod.js +461 -0
  92. package/_esm/src/components/common/TokenSelector/PaymentMethod.js.map +1 -0
  93. package/_esm/src/components/common/TokenSelector/PaymentTokenList.js +79 -0
  94. package/_esm/src/components/common/TokenSelector/PaymentTokenList.js.map +1 -0
  95. package/_esm/src/components/common/TokenSelector/triggers/PaymentMethodTrigger.js +72 -0
  96. package/_esm/src/components/common/TokenSelector/triggers/PaymentMethodTrigger.js.map +1 -0
  97. package/_esm/src/components/primitives/ChainTokenIcon.js +3 -2
  98. package/_esm/src/components/primitives/ChainTokenIcon.js.map +1 -1
  99. package/_esm/src/components/primitives/SlippageButton.js +36 -0
  100. package/_esm/src/components/primitives/SlippageButton.js.map +1 -0
  101. package/_esm/src/components/primitives/Tabs.js +4 -2
  102. package/_esm/src/components/primitives/Tabs.js.map +1 -1
  103. package/_esm/src/components/widgets/SwapButton.js +35 -7
  104. package/_esm/src/components/widgets/SwapButton.js.map +1 -1
  105. package/_esm/src/components/widgets/TokenWidget/AmountModeToggle.js +30 -0
  106. package/_esm/src/components/widgets/TokenWidget/AmountModeToggle.js.map +1 -0
  107. package/_esm/src/components/widgets/TokenWidget/AmountSectionHeader.js +7 -0
  108. package/_esm/src/components/widgets/TokenWidget/AmountSectionHeader.js.map +1 -0
  109. package/_esm/src/components/widgets/TokenWidget/BuyTabContent.js +215 -0
  110. package/_esm/src/components/widgets/TokenWidget/BuyTabContent.js.map +1 -0
  111. package/_esm/src/components/widgets/TokenWidget/DestinationWalletSelector.js +16 -0
  112. package/_esm/src/components/widgets/TokenWidget/DestinationWalletSelector.js.map +1 -0
  113. package/_esm/src/components/widgets/TokenWidget/FeeBreakdownInfo.js +21 -0
  114. package/_esm/src/components/widgets/TokenWidget/FeeBreakdownInfo.js.map +1 -0
  115. package/_esm/src/components/widgets/TokenWidget/FeeBreakdownTooltip.js +39 -0
  116. package/_esm/src/components/widgets/TokenWidget/FeeBreakdownTooltip.js.map +1 -0
  117. package/_esm/src/components/widgets/TokenWidget/SectionContainer.js +22 -0
  118. package/_esm/src/components/widgets/TokenWidget/SectionContainer.js.map +1 -0
  119. package/_esm/src/components/widgets/TokenWidget/SellTabContent.js +283 -0
  120. package/_esm/src/components/widgets/TokenWidget/SellTabContent.js.map +1 -0
  121. package/_esm/src/components/widgets/TokenWidget/TransactionDetailsFooter.js +27 -0
  122. package/_esm/src/components/widgets/TokenWidget/TransactionDetailsFooter.js.map +1 -0
  123. package/_esm/src/components/widgets/TokenWidget/hooks/useWalletGuards.js +104 -0
  124. package/_esm/src/components/widgets/TokenWidget/hooks/useWalletGuards.js.map +1 -0
  125. package/_esm/src/components/widgets/TokenWidget/index.js +2 -0
  126. package/_esm/src/components/widgets/TokenWidget/index.js.map +1 -0
  127. package/_esm/src/components/widgets/TokenWidget/widget/TokenWidgetRenderer.js +795 -0
  128. package/_esm/src/components/widgets/TokenWidget/widget/TokenWidgetRenderer.js.map +1 -0
  129. package/_esm/src/components/widgets/TokenWidget/widget/index.js +1073 -0
  130. package/_esm/src/components/widgets/TokenWidget/widget/index.js.map +1 -0
  131. package/_esm/src/hooks/index.js +2 -1
  132. package/_esm/src/hooks/index.js.map +1 -1
  133. package/_esm/src/hooks/useDuneBalances.js +2 -1
  134. package/_esm/src/hooks/useDuneBalances.js.map +1 -1
  135. package/_esm/src/hooks/useEOADetection.js +3 -0
  136. package/_esm/src/hooks/useEOADetection.js.map +1 -1
  137. package/_esm/src/hooks/useMultiWalletBalances.js +122 -0
  138. package/_esm/src/hooks/useMultiWalletBalances.js.map +1 -0
  139. package/_esm/src/index.js.map +1 -1
  140. package/_esm/src/styles.css +251 -88
  141. package/_esm/src/utils/numbers.js +44 -1
  142. package/_esm/src/utils/numbers.js.map +1 -1
  143. package/_esm/src/utils/tokenSelector.js +4 -1
  144. package/_esm/src/utils/tokenSelector.js.map +1 -1
  145. package/_esm/src/utils/tokens.js +25 -0
  146. package/_esm/src/utils/tokens.js.map +1 -1
  147. package/_esm/src/version.js +1 -1
  148. package/_esm/tsconfig.build.tsbuildinfo +1 -1
  149. package/_types/src/components/common/BalanceDisplay.d.ts +2 -0
  150. package/_types/src/components/common/BalanceDisplay.d.ts.map +1 -1
  151. package/_types/src/components/common/MultiWalletDropdown.d.ts +2 -1
  152. package/_types/src/components/common/MultiWalletDropdown.d.ts.map +1 -1
  153. package/_types/src/components/common/PercentageButtons.d.ts +3 -1
  154. package/_types/src/components/common/PercentageButtons.d.ts.map +1 -1
  155. package/_types/src/components/common/SlippageToleranceConfig.d.ts +7 -0
  156. package/_types/src/components/common/SlippageToleranceConfig.d.ts.map +1 -1
  157. package/_types/src/components/common/TokenSelector/ChainFilter.d.ts.map +1 -1
  158. package/_types/src/components/common/TokenSelector/ChainFilterRow.d.ts +19 -0
  159. package/_types/src/components/common/TokenSelector/ChainFilterRow.d.ts.map +1 -0
  160. package/_types/src/components/common/TokenSelector/ChainFilterSidebar.d.ts.map +1 -1
  161. package/_types/src/components/common/TokenSelector/CompactChainFilter.d.ts +14 -0
  162. package/_types/src/components/common/TokenSelector/CompactChainFilter.d.ts.map +1 -0
  163. package/_types/src/components/common/TokenSelector/PaymentMethod.d.ts +24 -0
  164. package/_types/src/components/common/TokenSelector/PaymentMethod.d.ts.map +1 -0
  165. package/_types/src/components/common/TokenSelector/PaymentTokenList.d.ts +15 -0
  166. package/_types/src/components/common/TokenSelector/PaymentTokenList.d.ts.map +1 -0
  167. package/_types/src/components/common/TokenSelector/triggers/PaymentMethodTrigger.d.ts +13 -0
  168. package/_types/src/components/common/TokenSelector/triggers/PaymentMethodTrigger.d.ts.map +1 -0
  169. package/_types/src/components/primitives/ChainTokenIcon.d.ts +1 -0
  170. package/_types/src/components/primitives/ChainTokenIcon.d.ts.map +1 -1
  171. package/_types/src/components/primitives/SlippageButton.d.ts +8 -0
  172. package/_types/src/components/primitives/SlippageButton.d.ts.map +1 -0
  173. package/_types/src/components/primitives/Tabs.d.ts.map +1 -1
  174. package/_types/src/components/widgets/SwapButton.d.ts +5 -2
  175. package/_types/src/components/widgets/SwapButton.d.ts.map +1 -1
  176. package/_types/src/components/widgets/TokenWidget/AmountModeToggle.d.ts +12 -0
  177. package/_types/src/components/widgets/TokenWidget/AmountModeToggle.d.ts.map +1 -0
  178. package/_types/src/components/widgets/TokenWidget/AmountSectionHeader.d.ts +11 -0
  179. package/_types/src/components/widgets/TokenWidget/AmountSectionHeader.d.ts.map +1 -0
  180. package/_types/src/components/widgets/TokenWidget/BuyTabContent.d.ts +52 -0
  181. package/_types/src/components/widgets/TokenWidget/BuyTabContent.d.ts.map +1 -0
  182. package/_types/src/components/widgets/TokenWidget/DestinationWalletSelector.d.ts +17 -0
  183. package/_types/src/components/widgets/TokenWidget/DestinationWalletSelector.d.ts.map +1 -0
  184. package/_types/src/components/widgets/TokenWidget/FeeBreakdownInfo.d.ts +16 -0
  185. package/_types/src/components/widgets/TokenWidget/FeeBreakdownInfo.d.ts.map +1 -0
  186. package/_types/src/components/widgets/TokenWidget/FeeBreakdownTooltip.d.ts +15 -0
  187. package/_types/src/components/widgets/TokenWidget/FeeBreakdownTooltip.d.ts.map +1 -0
  188. package/_types/src/components/widgets/TokenWidget/SectionContainer.d.ts +8 -0
  189. package/_types/src/components/widgets/TokenWidget/SectionContainer.d.ts.map +1 -0
  190. package/_types/src/components/widgets/TokenWidget/SellTabContent.d.ts +61 -0
  191. package/_types/src/components/widgets/TokenWidget/SellTabContent.d.ts.map +1 -0
  192. package/_types/src/components/widgets/TokenWidget/TransactionDetailsFooter.d.ts +14 -0
  193. package/_types/src/components/widgets/TokenWidget/TransactionDetailsFooter.d.ts.map +1 -0
  194. package/_types/src/components/widgets/TokenWidget/hooks/useWalletGuards.d.ts +28 -0
  195. package/_types/src/components/widgets/TokenWidget/hooks/useWalletGuards.d.ts.map +1 -0
  196. package/_types/src/components/widgets/TokenWidget/index.d.ts +3 -0
  197. package/_types/src/components/widgets/TokenWidget/index.d.ts.map +1 -0
  198. package/_types/src/components/widgets/TokenWidget/widget/TokenWidgetRenderer.d.ts +125 -0
  199. package/_types/src/components/widgets/TokenWidget/widget/TokenWidgetRenderer.d.ts.map +1 -0
  200. package/_types/src/components/widgets/TokenWidget/widget/index.d.ts +57 -0
  201. package/_types/src/components/widgets/TokenWidget/widget/index.d.ts.map +1 -0
  202. package/_types/src/hooks/index.d.ts +2 -1
  203. package/_types/src/hooks/index.d.ts.map +1 -1
  204. package/_types/src/hooks/useDuneBalances.d.ts.map +1 -1
  205. package/_types/src/hooks/useEOADetection.d.ts.map +1 -1
  206. package/_types/src/hooks/useMultiWalletBalances.d.ts +26 -0
  207. package/_types/src/hooks/useMultiWalletBalances.d.ts.map +1 -0
  208. package/_types/src/index.d.ts +1 -0
  209. package/_types/src/index.d.ts.map +1 -1
  210. package/_types/src/utils/numbers.d.ts +8 -1
  211. package/_types/src/utils/numbers.d.ts.map +1 -1
  212. package/_types/src/utils/tokenSelector.d.ts +1 -1
  213. package/_types/src/utils/tokenSelector.d.ts.map +1 -1
  214. package/_types/src/utils/tokens.d.ts +17 -0
  215. package/_types/src/utils/tokens.d.ts.map +1 -1
  216. package/_types/src/version.d.ts +1 -1
  217. package/_types/tsconfig.build.tsbuildinfo +1 -1
  218. package/dist/panda.buildinfo.json +74 -33
  219. package/dist/styles.css +251 -88
  220. package/package.json +8 -3
@@ -0,0 +1,461 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import { Flex, Text, Input, Box, Button } from '../../primitives/index.js';
4
+ import { Modal } from '../Modal.js';
5
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
6
+ import { faMagnifyingGlass, faFolderOpen, faChevronLeft } from '@fortawesome/free-solid-svg-icons';
7
+ import {} from './ChainFilter.js';
8
+ import useRelayClient from '../../../hooks/useRelayClient.js';
9
+ import {} from 'viem';
10
+ import { useDebounceState } from '../../../hooks/index.js';
11
+ import { useMultiWalletBalances } from '../../../hooks/useMultiWalletBalances.js';
12
+ import { useMediaQuery } from 'usehooks-ts';
13
+ import { useTokenList } from '@relayprotocol/relay-kit-hooks';
14
+ import { EventNames } from '../../../constants/events.js';
15
+ import { UnverifiedTokenModal } from '../UnverifiedTokenModal.js';
16
+ import { useEnhancedTokensList } from '../../../hooks/useEnhancedTokensList.js';
17
+ import { TokenList } from './TokenList.js';
18
+ import { UnsupportedDepositAddressChainIds } from '../../../constants/depositAddresses.js';
19
+ import { getRelayUiKitData } from '../../../utils/localStorage.js';
20
+ import { isValidAddress as isValidAddressUtil } from '../../../utils/address.js';
21
+ import { AccessibleList, AccessibleListItem } from '../../primitives/AccessibleList.js';
22
+ import { eclipse, solana } from '../../../utils/solana.js';
23
+ import { bitcoin } from '../../../utils/bitcoin.js';
24
+ import { SuggestedTokens } from './SuggestedTokens.js';
25
+ import { mergeTokenLists } from '../../../utils/tokens.js';
26
+ import {} from '@relayprotocol/relay-sdk';
27
+ import { getInitialChainFilter, sortChains } from '../../../utils/tokenSelector.js';
28
+ import { useInternalRelayChains } from '../../../hooks/index.js';
29
+ import { useTrendingCurrencies } from '@relayprotocol/relay-kit-hooks';
30
+ import { getStarredChainIds } from '../../../utils/localStorage.js';
31
+ import { PaymentTokenList } from './PaymentTokenList.js';
32
+ import { CompactChainFilter } from './CompactChainFilter.js';
33
+ const PaymentMethod = ({ token, trigger, chainIdsFilter, lockedChainIds, context, address, isValidAddress, multiWalletSupportEnabled = false, fromChainWalletVMSupported, supportedWalletVMs, popularChainIds, setToken, onAnalyticEvent, autoSelectToken = false }) => {
34
+ const relayClient = useRelayClient();
35
+ const { chains: allRelayChains } = useInternalRelayChains();
36
+ const isDesktop = useMediaQuery('(min-width: 660px)');
37
+ const [open, setOpen] = useState(false);
38
+ const [unverifiedTokenModalOpen, setUnverifiedTokenModalOpen] = useState(false);
39
+ const [unverifiedToken, setUnverifiedToken] = useState();
40
+ const [chainFilter, setChainFilter] = useState({
41
+ id: undefined,
42
+ name: 'All Chains'
43
+ });
44
+ const [starredChainIds, setStarredChainIds] = useState(() => getStarredChainIds());
45
+ const { value: tokenSearchInput, debouncedValue: debouncedTokenSearchValue, setValue: setTokenSearchInput } = useDebounceState('', 500);
46
+ const depositAddressOnly = context === 'from'
47
+ ? chainFilter?.vmType
48
+ ? !supportedWalletVMs?.includes(chainFilter.vmType)
49
+ : !chainFilter.id
50
+ ? false
51
+ : !fromChainWalletVMSupported && chainFilter.id === token?.chainId
52
+ : !fromChainWalletVMSupported;
53
+ const isReceivingDepositAddress = depositAddressOnly && context === 'to';
54
+ // Configure chains
55
+ const configuredChains = useMemo(() => {
56
+ let chains = allRelayChains?.filter((chain) => relayClient?.chains?.find((relayChain) => relayChain.id === chain.id)) ?? [];
57
+ if (!multiWalletSupportEnabled && context === 'from') {
58
+ chains = chains.filter((chain) => chain.vmType === 'evm');
59
+ }
60
+ if (isReceivingDepositAddress) {
61
+ chains = chains.filter(({ id }) => !UnsupportedDepositAddressChainIds.includes(id));
62
+ }
63
+ return sortChains(chains);
64
+ }, [
65
+ allRelayChains,
66
+ relayClient?.chains,
67
+ multiWalletSupportEnabled,
68
+ context,
69
+ depositAddressOnly
70
+ ]);
71
+ const configuredChainIds = useMemo(() => {
72
+ if (lockedChainIds) {
73
+ return lockedChainIds;
74
+ }
75
+ let _chainIds = configuredChains.map((chain) => chain.id);
76
+ if (chainIdsFilter) {
77
+ _chainIds = _chainIds.filter((id) => !chainIdsFilter.includes(id));
78
+ }
79
+ return _chainIds;
80
+ }, [configuredChains, lockedChainIds, chainIdsFilter, depositAddressOnly]);
81
+ const hasMultipleConfiguredChainIds = configuredChainIds.length > 1;
82
+ const chainFilterOptions = context === 'from'
83
+ ? configuredChains?.filter((chain) => (chain.vmType === 'evm' ||
84
+ chain.vmType === 'suivm' ||
85
+ chain.vmType === 'tvm' ||
86
+ chain.vmType === 'hypevm' ||
87
+ chain.id === solana.id ||
88
+ chain.id === eclipse.id ||
89
+ chain.id === bitcoin.id) &&
90
+ configuredChainIds.includes(chain.id))
91
+ : configuredChains?.filter((chain) => configuredChainIds.includes(chain.id));
92
+ const allChains = useMemo(() => [
93
+ ...(isReceivingDepositAddress
94
+ ? []
95
+ : [{ id: undefined, name: 'All Chains' }]),
96
+ ...chainFilterOptions
97
+ ], [isReceivingDepositAddress, chainFilterOptions]);
98
+ const useDefaultTokenList = debouncedTokenSearchValue === '';
99
+ const { balanceMap: tokenBalances, data: duneTokens, isLoading: isLoadingBalances } = useMultiWalletBalances(undefined, address, isValidAddress, relayClient?.baseApiUrl?.includes('testnet') ? 'testnet' : 'mainnet');
100
+ const filteredDuneTokenBalances = useMemo(() => {
101
+ return duneTokens?.balances?.filter((balance) => configuredChainIds.includes(balance.chain_id));
102
+ }, [duneTokens?.balances, configuredChainIds]);
103
+ const userTokensQuery = useMemo(() => {
104
+ if (filteredDuneTokenBalances && filteredDuneTokenBalances.length > 0) {
105
+ return filteredDuneTokenBalances.map((balance) => `${balance.chain_id}:${balance.address}`);
106
+ }
107
+ return undefined;
108
+ }, [filteredDuneTokenBalances]);
109
+ const { data: userTokens, isLoading: isLoadingUserTokens } = useTokenList(relayClient?.baseApiUrl, userTokensQuery
110
+ ? {
111
+ tokens: userTokensQuery,
112
+ limit: 100,
113
+ depositAddressOnly,
114
+ referrer: relayClient?.source
115
+ }
116
+ : undefined, {
117
+ enabled: !!filteredDuneTokenBalances
118
+ });
119
+ const isSearchTermValidAddress = isValidAddressUtil(chainFilter.vmType, debouncedTokenSearchValue, chainFilter.id);
120
+ const { data: trendingTokens, isLoading: isLoadingTrendingTokens } = useTrendingCurrencies(relayClient?.baseApiUrl, {
121
+ referrer: relayClient?.source
122
+ }, {
123
+ enabled: context === 'to'
124
+ });
125
+ // Get main token list
126
+ const { data: tokenList, isLoading: isLoadingTokenList } = useTokenList(relayClient?.baseApiUrl, {
127
+ chainIds: chainFilter.id
128
+ ? [chainFilter.id]
129
+ : configuredChains.map((c) => c.id),
130
+ address: isSearchTermValidAddress ? debouncedTokenSearchValue : undefined,
131
+ term: !isSearchTermValidAddress ? debouncedTokenSearchValue : undefined,
132
+ defaultList: useDefaultTokenList && !depositAddressOnly,
133
+ limit: 12,
134
+ depositAddressOnly,
135
+ referrer: relayClient?.source
136
+ });
137
+ const { data: externalTokenList, isLoading: isLoadingExternalList } = useTokenList(relayClient?.baseApiUrl, {
138
+ chainIds: chainFilter.id
139
+ ? [chainFilter.id]
140
+ : configuredChains.map((c) => c.id),
141
+ address: isSearchTermValidAddress
142
+ ? debouncedTokenSearchValue
143
+ : undefined,
144
+ term: !isSearchTermValidAddress ? debouncedTokenSearchValue : undefined,
145
+ defaultList: false,
146
+ limit: 12,
147
+ useExternalSearch: true,
148
+ referrer: relayClient?.source
149
+ }, {
150
+ enabled: !!debouncedTokenSearchValue && !depositAddressOnly
151
+ });
152
+ // Merge token lists when searching
153
+ const combinedTokenList = useMemo(() => {
154
+ if (!debouncedTokenSearchValue)
155
+ return tokenList;
156
+ return mergeTokenLists([tokenList, externalTokenList]);
157
+ }, [tokenList, externalTokenList, debouncedTokenSearchValue]);
158
+ const sortedUserTokens = useEnhancedTokensList(userTokens, tokenBalances, context, multiWalletSupportEnabled, chainFilter.id, true);
159
+ const sortedTrendingTokens = useEnhancedTokensList(trendingTokens, tokenBalances, 'to', multiWalletSupportEnabled, undefined, false);
160
+ const sortedCombinedTokens = useEnhancedTokensList(combinedTokenList, tokenBalances, context, multiWalletSupportEnabled, chainFilter.id, false);
161
+ const [chainSearchInputElement, setChainSearchInputElement] = useState(null);
162
+ const [tokenSearchInputElement, setTokenSearchInputElement] = useState(null);
163
+ const inputElement = hasMultipleConfiguredChainIds
164
+ ? chainSearchInputElement
165
+ : tokenSearchInputElement;
166
+ const handleChainStarToggle = useCallback(() => {
167
+ setStarredChainIds(getStarredChainIds());
168
+ }, []);
169
+ useEffect(() => {
170
+ if (!autoSelectToken) {
171
+ return;
172
+ }
173
+ if (address &&
174
+ isValidAddress &&
175
+ !token &&
176
+ sortedUserTokens &&
177
+ sortedUserTokens.length > 0) {
178
+ const topToken = sortedUserTokens[0];
179
+ setToken(topToken);
180
+ }
181
+ }, [
182
+ address,
183
+ isValidAddress,
184
+ token,
185
+ sortedUserTokens,
186
+ setToken,
187
+ autoSelectToken
188
+ ]);
189
+ useEffect(() => {
190
+ if (open) {
191
+ setStarredChainIds(getStarredChainIds());
192
+ }
193
+ }, [open]);
194
+ const resetState = useCallback(() => {
195
+ setTokenSearchInput('');
196
+ setChainSearchInputElement(null);
197
+ setTokenSearchInputElement(null);
198
+ }, []);
199
+ const onOpenChange = useCallback((openChange) => {
200
+ let tokenCount = undefined;
201
+ let usdcCount = 0;
202
+ let usdtCount = 0;
203
+ let ethCount = 0;
204
+ try {
205
+ if (!isLoadingBalances && tokenBalances) {
206
+ tokenCount = Object.keys(tokenBalances).length;
207
+ Object.values(tokenBalances).forEach((token) => {
208
+ const tokenSymbol = token.symbol
209
+ ? token.symbol.toLowerCase()
210
+ : token.symbol;
211
+ if (tokenSymbol === 'usdc') {
212
+ usdcCount += 1;
213
+ }
214
+ else if (tokenSymbol === 'usdt') {
215
+ usdtCount += 1;
216
+ }
217
+ else if (tokenSymbol === 'eth') {
218
+ ethCount += 1;
219
+ }
220
+ });
221
+ }
222
+ onAnalyticEvent?.(openChange
223
+ ? EventNames.SWAP_START_TOKEN_SELECT
224
+ : EventNames.SWAP_EXIT_TOKEN_SELECT, {
225
+ direction: context === 'from' ? 'input' : 'output',
226
+ ...(!openChange && {
227
+ balanceData: {
228
+ tokenCount,
229
+ usdcCount,
230
+ usdtCount,
231
+ ethCount,
232
+ balanceAddress: address
233
+ }
234
+ })
235
+ });
236
+ }
237
+ catch (error) {
238
+ console.error(error);
239
+ }
240
+ if (openChange) {
241
+ const chainFilter = getInitialChainFilter(chainFilterOptions, context, depositAddressOnly, token, true);
242
+ setChainFilter(chainFilter);
243
+ }
244
+ setOpen(openChange);
245
+ }, [
246
+ tokenBalances,
247
+ isLoadingBalances,
248
+ context,
249
+ address,
250
+ onAnalyticEvent,
251
+ setOpen,
252
+ chainFilterOptions,
253
+ depositAddressOnly,
254
+ token
255
+ ]);
256
+ const handleTokenSelection = useCallback((selectedToken) => {
257
+ const isVerified = selectedToken.verified;
258
+ const direction = context === 'from' ? 'input' : 'output';
259
+ let position = undefined;
260
+ // Track position for search results
261
+ if (debouncedTokenSearchValue.length > 0) {
262
+ position = sortedCombinedTokens.findIndex((token) => token.chainId === selectedToken.chainId &&
263
+ token.address?.toLowerCase() ===
264
+ selectedToken.address?.toLowerCase());
265
+ }
266
+ if (!isVerified) {
267
+ const relayUiKitData = getRelayUiKitData();
268
+ const tokenKey = `${selectedToken.chainId}:${selectedToken.address}`;
269
+ const isAlreadyAccepted = relayUiKitData.acceptedUnverifiedTokens.includes(tokenKey);
270
+ if (isAlreadyAccepted) {
271
+ onAnalyticEvent?.(EventNames.SWAP_TOKEN_SELECT, {
272
+ direction,
273
+ token_symbol: selectedToken.symbol,
274
+ chain_id: selectedToken.chainId,
275
+ token_address: selectedToken.address,
276
+ search_term: debouncedTokenSearchValue,
277
+ position
278
+ });
279
+ setToken(selectedToken);
280
+ }
281
+ else {
282
+ setUnverifiedToken(selectedToken);
283
+ setUnverifiedTokenModalOpen(true);
284
+ return;
285
+ }
286
+ }
287
+ else {
288
+ onAnalyticEvent?.(EventNames.SWAP_TOKEN_SELECT, {
289
+ direction,
290
+ token_symbol: selectedToken.symbol,
291
+ chain_id: selectedToken.chainId,
292
+ token_address: selectedToken.address,
293
+ search_term: debouncedTokenSearchValue,
294
+ position
295
+ });
296
+ setToken(selectedToken);
297
+ }
298
+ onOpenChange(false);
299
+ }, [
300
+ setToken,
301
+ onOpenChange,
302
+ resetState,
303
+ context,
304
+ onAnalyticEvent,
305
+ debouncedTokenSearchValue,
306
+ sortedCombinedTokens
307
+ ]);
308
+ useEffect(() => {
309
+ if (!open) {
310
+ resetState();
311
+ }
312
+ }, [open]);
313
+ // Focus input element when modal opens
314
+ useEffect(() => {
315
+ if (open && inputElement && isDesktop) {
316
+ inputElement.focus();
317
+ }
318
+ }, [open, inputElement]);
319
+ return (_jsxs(_Fragment, { children: [_jsx("div", { style: { position: 'relative' }, children: _jsx(Modal, { open: open, onOpenChange: onOpenChange, showCloseButton: false, trigger: trigger, css: {
320
+ p: '4',
321
+ display: 'flex',
322
+ flexDirection: 'column',
323
+ height: 'min(85vh, 540px)',
324
+ width: 'min(400px, 100vw)',
325
+ maxWidth: 'min(400px, 100vw)',
326
+ minWidth: 0,
327
+ boxSizing: 'border-box'
328
+ }, children: _jsxs(Flex, { direction: "column", css: {
329
+ width: '100%',
330
+ height: '100%',
331
+ gap: '3',
332
+ overflowY: 'hidden',
333
+ minWidth: 0,
334
+ maxWidth: '100%'
335
+ }, children: [_jsxs(Flex, { align: "center", css: { gap: '1' }, children: [_jsx(Button, { color: "ghost", size: "none", onClick: () => onOpenChange(false), css: {
336
+ p: '1',
337
+ minWidth: 'auto',
338
+ color: 'gray9',
339
+ cursor: 'pointer',
340
+ borderRadius: 8,
341
+ '--focusColor': 'colors.focus-color',
342
+ _focusVisible: {
343
+ boxShadow: 'inset 0 0 0 2px var(--focusColor)'
344
+ }
345
+ }, children: _jsx(FontAwesomeIcon, { icon: faChevronLeft, width: 20, height: 20 }) }), _jsx(Text, { style: "subtitle2", children: context === 'from' ? 'Pay with' : 'Sell to' })] }), _jsx(Flex, { css: {
346
+ flex: 1,
347
+ gap: '3',
348
+ overflow: 'hidden',
349
+ minWidth: 0,
350
+ maxWidth: '100%'
351
+ }, children: _jsxs(AccessibleList, { onSelect: (value) => {
352
+ if (value === 'input')
353
+ return;
354
+ const [chainId, ...addressParts] = value.split(':');
355
+ const address = addressParts.join(':');
356
+ const allTokens = [
357
+ ...sortedUserTokens,
358
+ ...sortedCombinedTokens,
359
+ ...sortedTrendingTokens
360
+ ];
361
+ const selectedToken = allTokens.find((token) => token.chainId === Number(chainId) &&
362
+ token.address?.toLowerCase() === address?.toLowerCase());
363
+ if (selectedToken) {
364
+ handleTokenSelection(selectedToken);
365
+ }
366
+ }, css: {
367
+ display: 'flex',
368
+ flexDirection: 'column',
369
+ width: '100%',
370
+ minWidth: 0,
371
+ maxWidth: '100%',
372
+ height: '100%'
373
+ }, children: [_jsx(Flex, { direction: "column", align: "start", css: {
374
+ width: '100%',
375
+ gap: '2',
376
+ background: 'modal-background',
377
+ minWidth: 0,
378
+ maxWidth: '100%'
379
+ }, children: _jsxs(Flex, { align: "center", css: {
380
+ width: '100%',
381
+ gap: '2',
382
+ minWidth: 0,
383
+ alignItems: 'center',
384
+ height: 40
385
+ }, children: [_jsx(AccessibleListItem, { value: "input", asChild: true, css: {
386
+ flex: 1,
387
+ minWidth: 0,
388
+ display: 'flex',
389
+ alignItems: 'center'
390
+ }, children: _jsx(Input, { ref: setTokenSearchInputElement, placeholder: "Search for a token", icon: _jsx(Box, { css: { color: 'gray9' }, children: _jsx(FontAwesomeIcon, { icon: faMagnifyingGlass, width: 16, height: 16 }) }), containerCss: {
391
+ width: '100%',
392
+ height: 40
393
+ }, css: {
394
+ width: '100%',
395
+ _placeholder_parent: {
396
+ textOverflow: 'ellipsis'
397
+ }
398
+ }, onChange: (e) => {
399
+ const value = e.target.value;
400
+ setTokenSearchInput(value);
401
+ if (isValidAddressUtil(chainFilter.vmType, value)) {
402
+ onAnalyticEvent?.(EventNames.TOKEN_SELECTOR_CONTRACT_SEARCH, {
403
+ search_term: value,
404
+ chain_filter: chainFilter.id
405
+ });
406
+ }
407
+ } }) }), (!configuredChainIds || hasMultipleConfiguredChainIds) && (_jsx(CompactChainFilter, { options: allChains, value: chainFilter, onSelect: setChainFilter, popularChainIds: popularChainIds, onChainStarToggle: handleChainStarToggle, starredChainIds: starredChainIds, onAnalyticEvent: onAnalyticEvent }))] }) }), _jsxs(Flex, { direction: "column", css: {
408
+ flex: 1,
409
+ overflowY: 'auto',
410
+ gap: '3',
411
+ pt: '2',
412
+ scrollbarColor: 'var(--relay-colors-gray5) transparent',
413
+ minWidth: 0,
414
+ maxWidth: '100%'
415
+ }, children: [chainFilter.id &&
416
+ tokenSearchInput.length === 0 &&
417
+ !depositAddressOnly ? (_jsx(SuggestedTokens, { chainId: chainFilter.id, depositAddressOnly: depositAddressOnly, onSelect: (token) => {
418
+ handleTokenSelection(token);
419
+ } })) : null, tokenSearchInput.length > 0 ? (_jsx(TokenList, { title: "Results", tokens: sortedCombinedTokens, isLoading: isLoadingTokenList ||
420
+ tokenSearchInput !== debouncedTokenSearchValue, isLoadingBalances: isLoadingBalances, chainFilterId: chainFilter.id })) : chainFilter.id ? (_jsx(TokenList, { title: "Tokens", tokens: sortedCombinedTokens, isLoading: isLoadingTokenList, isLoadingBalances: isLoadingBalances, chainFilterId: chainFilter.id })) : (_jsx(Flex, { direction: "column", css: { gap: '3' }, children: (() => {
421
+ const hasValidAddress = Boolean(address && isValidAddress);
422
+ const hasLoadedBalanceData = Boolean(duneTokens);
423
+ const userTokensReady = !isLoadingUserTokens;
424
+ const isWaitingForBalanceData = hasValidAddress &&
425
+ (isLoadingBalances || isLoadingUserTokens) &&
426
+ (!hasLoadedBalanceData || !userTokensReady);
427
+ if (isWaitingForBalanceData) {
428
+ return (_jsx(PaymentTokenList, { title: "Recommended", tokens: [], isLoading: true, isLoadingBalances: false, chainFilterId: chainFilter.id, limit: 10 }));
429
+ }
430
+ if (hasValidAddress &&
431
+ hasLoadedBalanceData &&
432
+ userTokensReady) {
433
+ const tokensWithValue = sortedUserTokens.filter((token) => token.balance?.value_usd &&
434
+ token.balance.value_usd > 0);
435
+ if (tokensWithValue.length > 0) {
436
+ const shouldShowBalanceLoading = isLoadingBalances && hasValidAddress;
437
+ return (_jsx(PaymentTokenList, { title: "Recommended", tokens: tokensWithValue, isLoading: false, isLoadingBalances: shouldShowBalanceLoading, chainFilterId: chainFilter.id, limit: tokensWithValue.length }));
438
+ }
439
+ }
440
+ const fallbackTokens = context === 'to' && sortedTrendingTokens.length > 0
441
+ ? sortedTrendingTokens
442
+ : sortedCombinedTokens;
443
+ const isTrendingTokens = context === 'to' && sortedTrendingTokens.length > 0;
444
+ const shouldShowBalanceLoading = isLoadingBalances && hasValidAddress;
445
+ return (_jsx(PaymentTokenList, { title: isTrendingTokens ? 'Global 24h' : 'Tokens', tokens: fallbackTokens.slice(0, 10), isLoading: context === 'to'
446
+ ? isLoadingTrendingTokens
447
+ : isLoadingTokenList, isLoadingBalances: shouldShowBalanceLoading, chainFilterId: chainFilter.id, limit: 10 }));
448
+ })() })), !isLoadingTokenList &&
449
+ !isLoadingExternalList &&
450
+ tokenList?.length === 0 &&
451
+ externalTokenList?.length === 0 ? (_jsxs(Flex, { direction: "column", align: "center", css: { py: '5', maxWidth: 312, alignSelf: 'center' }, children: [!chainFilter?.id && isSearchTermValidAddress && (_jsx(Box, { css: { color: 'gray8', mb: '2' }, children: _jsx(FontAwesomeIcon, { icon: faFolderOpen, size: "xl", width: 27, height: 24 }) })), _jsx(Text, { color: "subtle", style: "body2", css: { textAlign: 'center' }, children: !chainFilter?.id && isSearchTermValidAddress
452
+ ? 'No results. Switch to the desired chain to search by contract.'
453
+ : 'No results.' })] })) : null] }, chainFilter.id ?? 'all')] }) })] }) }) }), unverifiedTokenModalOpen && (_jsx(UnverifiedTokenModal, { open: unverifiedTokenModalOpen, onOpenChange: setUnverifiedTokenModalOpen, data: unverifiedToken ? { token: unverifiedToken } : undefined, onAcceptToken: (token) => {
454
+ if (token) {
455
+ handleTokenSelection(token);
456
+ }
457
+ setUnverifiedTokenModalOpen(false);
458
+ } }))] }));
459
+ };
460
+ export default PaymentMethod;
461
+ //# sourceMappingURL=PaymentMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentMethod.js","sourceRoot":"","sources":["../../../../../src/components/common/TokenSelector/PaymentMethod.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Flex, Text, Skeleton, ChainTokenIcon, AccessibleListItem, Box, Button } from '../../primitives/index.js';
4
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
+ import { faChevronDown, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
6
+ import { formatBN, formatDollar } from '../../../utils/numbers.js';
7
+ export const PaymentTokenList = ({ title, tokens: rawTokens, isLoading, isLoadingBalances, chainFilterId, showMoreButton, limit = 5, opacity = 1 }) => {
8
+ const [tokensExpanded, setTokensExpanded] = useState(false);
9
+ const tokens = showMoreButton && rawTokens && rawTokens.length > limit && !tokensExpanded
10
+ ? rawTokens.slice(0, limit)
11
+ : rawTokens.slice(0, limit);
12
+ if (isLoading) {
13
+ return (_jsx(_Fragment, { children: Array.from({ length: 10 }).map((_, index) => (_jsxs(Flex, { align: "center", css: { gap: '2', p: '2', width: '100%' }, children: [_jsx(Skeleton, { css: {
14
+ width: 40,
15
+ height: 40,
16
+ borderRadius: '50%',
17
+ flexShrink: 0
18
+ } }), _jsxs(Flex, { direction: "column", css: { gap: '2px', flexGrow: 1 }, children: [_jsx(Skeleton, { css: { width: '60%', height: 16 } }), _jsx(Skeleton, { css: { width: '40%', height: 16 } })] })] }, index))) }));
19
+ }
20
+ if (tokens.length > 0)
21
+ return (_jsxs(Flex, { direction: "column", css: { gap: '1', width: '100%' }, children: [_jsx(Text, { style: "subtitle2", color: "subtle", children: title }), tokens.map((token) => {
22
+ const value = `${token.chainId}:${token.address}`;
23
+ const compactBalance = Boolean(token.balance &&
24
+ token.decimals &&
25
+ token.balance.toString().length - token.decimals > 4);
26
+ return (_jsx(AccessibleListItem, { value: value, asChild: true, children: _jsxs(Button, { color: "ghost", css: {
27
+ gap: '2',
28
+ cursor: 'pointer',
29
+ px: '2',
30
+ py: '2',
31
+ transition: 'backdrop-filter 250ms linear',
32
+ _hover: {
33
+ backgroundColor: 'gray/10'
34
+ },
35
+ flexShrink: 0,
36
+ alignContent: 'center',
37
+ display: 'flex',
38
+ width: '100%',
39
+ '--focusColor': 'colors.focus-color',
40
+ _focusVisible: {
41
+ boxShadow: 'inset 0 0 0 2px var(--focusColor)'
42
+ },
43
+ '&[data-state="on"]': {
44
+ boxShadow: 'inset 0 0 0 2px var(--focusColor)'
45
+ },
46
+ _active: {
47
+ boxShadow: 'inset 0 0 0 2px var(--focusColor)'
48
+ },
49
+ _focusWithin: {
50
+ boxShadow: 'inset 0 0 0 2px var(--focusColor)'
51
+ },
52
+ scrollSnapAlign: 'start',
53
+ opacity
54
+ }, children: [_jsx(ChainTokenIcon, { chainId: token.chainId, tokenlogoURI: token.logoURI, tokenSymbol: token.symbol, size: "lg" }), _jsxs(Flex, { direction: "column", align: "start", css: { gap: '2px', maxWidth: '100%', minWidth: 0 }, children: [_jsxs(Flex, { align: "center", css: { gap: '1', maxWidth: '100%' }, children: [_jsx(Text, { style: "h6", ellipsify: true, css: {
55
+ gap: '1',
56
+ alignItems: 'center'
57
+ }, children: token.symbol }), token.isGasCurrency && chainFilterId && (_jsx(Text, { style: "subtitle3", css: {
58
+ px: '6px',
59
+ py: '4px',
60
+ borderRadius: '100px',
61
+ backgroundColor: 'gray3',
62
+ whiteSpace: 'nowrap',
63
+ flexShrink: 0,
64
+ lineHeight: '12px',
65
+ 'button:hover &': {
66
+ backgroundColor: 'gray5'
67
+ }
68
+ }, children: "Gas Token" }))] }), _jsxs(Flex, { align: "center", css: { gap: '1', maxWidth: '100%' }, children: [_jsx(Text, { style: "subtitle3", color: "subtle", ellipsify: true, children: token.chain?.displayName ||
69
+ token.chain?.name ||
70
+ 'Unknown Chain' }), !token.verified ? (_jsx(Box, { css: { color: 'gray8' }, children: _jsx(FontAwesomeIcon, { icon: faExclamationTriangle, width: 14, height: 14 }) })) : null] })] }), (token.balance || isLoadingBalances) && (_jsx(Flex, { direction: "column", align: "end", css: { gap: '2px', ml: 'auto', flexShrink: 0 }, children: isLoadingBalances ? (_jsxs(_Fragment, { children: [_jsx(Skeleton, { css: { ml: 'auto', width: 60 } }), _jsx(Skeleton, { css: { ml: 'auto', width: 60 } })] })) : (_jsxs(_Fragment, { children: [token.balance?.value_usd &&
71
+ token.balance.value_usd > 0 && (_jsx(Text, { style: "h6", children: formatDollar(token.balance?.value_usd) })), _jsx(Text, { style: "subtitle3", color: "subtle", children: formatBN(token.balance.amount, 4, token.decimals, compactBalance) })] })) }))] }) }, value));
72
+ }), showMoreButton && (_jsxs(Button, { color: "grey", size: "small", corners: "pill", css: { ml: 'auto', minHeight: 24, px: '2', py: '1' }, onClick: () => setTokensExpanded(!tokensExpanded), children: [_jsx(Text, { style: "subtitle3", color: "subtle", children: tokensExpanded ? 'Less' : 'More' }), _jsx(Text, { style: "body1", css: {
73
+ color: 'gray9',
74
+ marginLeft: 'auto',
75
+ transform: tokensExpanded ? 'rotate(180deg)' : 'rotate(0)',
76
+ width: 12
77
+ }, children: _jsx(FontAwesomeIcon, { icon: faChevronDown }) })] }))] }));
78
+ };
79
+ //# sourceMappingURL=PaymentTokenList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentTokenList.js","sourceRoot":"","sources":["../../../../../src/components/common/TokenSelector/PaymentTokenList.tsx"],"names":[],"mappings":"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"}