@layerswap/widget 0.1.4 → 0.1.15
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/README.md +78 -3
- package/dist/Models/Theme.d.ts +7 -6
- package/dist/Models/Theme.js +7 -7
- package/dist/Models/WalletProvider.d.ts +0 -4
- package/dist/Models/WalletProvider.js +2 -0
- package/dist/components/Buttons/copyButton.js +4 -3
- package/dist/components/ColorSchema.js +79 -45
- package/dist/components/Common/AddressIcon.js +1 -0
- package/dist/components/Common/AverageCompletionTime.js +1 -1
- package/dist/components/Common/CountDownTimer.js +2 -2
- package/dist/components/Common/FormattedAverageCompletionTime.js +1 -1
- package/dist/components/HeaderWithMenu/index.js +1 -8
- package/dist/components/Input/Address/AddressNote.js +3 -2
- package/dist/components/Input/Address/AddressPicker/AddressWithIcon.js +2 -2
- package/dist/components/Input/Address/AddressPicker/ConnectedWallets/ConnectWalletButton.js +12 -5
- package/dist/components/Input/Address/AddressPicker/ExchangeNote.d.ts +1 -1
- package/dist/components/Input/Address/AddressPicker/ExchangeNote.js +1 -1
- package/dist/components/Input/RouteIcon.js +1 -1
- package/dist/components/LayerswapMenu/MenuList.js +2 -56
- package/dist/components/Pages/404/index.js +1 -0
- package/dist/components/Pages/Auth/Steps/CodeStep/VerifyEmailCode.js +1 -0
- package/dist/components/Pages/Auth/index.d.ts +1 -1
- package/dist/components/Pages/Auth/index.js +3 -2
- package/dist/components/Pages/Campaigns/Details/Leaderboard.js +1 -0
- package/dist/components/Pages/Campaigns/Details/index.d.ts +1 -1
- package/dist/components/Pages/Campaigns/Details/index.js +3 -2
- package/dist/components/Pages/Campaigns/index.d.ts +1 -1
- package/dist/components/Pages/Campaigns/index.js +3 -2
- package/dist/components/Pages/Maintanance/index.js +1 -0
- package/dist/components/Pages/NoCookies/index.js +2 -1
- package/dist/components/Pages/SwapHistory/History.js +1 -2
- package/dist/components/Pages/SwapHistory/index.d.ts +1 -1
- package/dist/components/Pages/SwapHistory/index.js +4 -3
- package/dist/components/Pages/SwapPages/Form/FeeDetails/Campaign.js +1 -0
- package/dist/components/Pages/SwapPages/Form/Form.js +1 -4
- package/dist/components/Pages/SwapPages/Form/SecondaryComponents/ValidationError.js +1 -1
- package/dist/components/Pages/SwapPages/Form/Select/Popover/PopoverSelect.js +1 -1
- package/dist/components/Pages/SwapPages/Form/index.js +1 -0
- package/dist/components/Pages/SwapPages/Withdraw/Coinbase/Carousel.js +8 -6
- package/dist/components/Pages/SwapPages/Withdraw/Processing/Processing.js +2 -2
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/FuelWalletWithdrawal.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/FuelWalletWithdrawal.js +159 -125
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/ImtblxWalletWithdrawStep.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/ImtblxWalletWithdrawStep.js +69 -51
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/ActivationTokentPicker.d.ts +0 -8
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/ActivationTokentPicker.js +87 -45
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/hooks.d.ts +0 -40
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/hooks.js +73 -46
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/index.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/index.js +175 -128
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/index.d.ts +0 -7
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/index.js +138 -116
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/transactionSender.d.ts +0 -8
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/transactionSender.js +96 -75
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/SophonWalletWithdraw.js +2 -2
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/StarknetWalletWithdraw.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/StarknetWalletWithdraw.js +88 -71
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/TonWalletWithdraw.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/TonWalletWithdraw.js +146 -136
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/TronWalletWithdraw.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/TronWalletWithdraw.js +120 -99
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/TransferToken.js +3 -3
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/buttons.js +1 -0
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/index.js +1 -1
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/transactionMessage.js +2 -2
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransferContent.js +101 -33
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Evm.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Evm.js +60 -55
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Starknet.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Starknet.js +71 -55
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/buttons.js +1 -0
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/index.d.ts +0 -4
- package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/index.js +56 -52
- package/dist/components/Pages/SwapPages/Withdraw/index.d.ts +1 -1
- package/dist/components/Pages/SwapPages/Withdraw/index.js +3 -2
- package/dist/components/Wallet/WalletModal/Connector.js +1 -1
- package/dist/components/Wallet/WalletProviders/FuelProvider.d.ts +0 -5
- package/dist/components/Wallet/WalletProviders/FuelProvider.js +25 -20
- package/dist/components/Wallet/WalletProviders/ImtblPassportProvider.d.ts +0 -5
- package/dist/components/Wallet/WalletProviders/ImtblPassportProvider.js +39 -36
- package/dist/components/Wallet/WalletProviders/SolanaProvider.d.ts +0 -5
- package/dist/components/Wallet/WalletProviders/SolanaProvider.js +49 -38
- package/dist/components/Wallet/WalletProviders/StarknetProvider.d.ts +0 -5
- package/dist/components/Wallet/WalletProviders/StarknetProvider.js +112 -117
- package/dist/components/Wallet/WalletProviders/TonConnectProvider.d.ts +0 -6
- package/dist/components/Wallet/WalletProviders/TonConnectProvider.js +58 -50
- package/dist/components/Wallet/WalletProviders/TronProvider.d.ts +0 -3
- package/dist/components/Wallet/WalletProviders/TronProvider.js +23 -15
- package/dist/components/Wallet/WalletProviders/Wagmi.d.ts +1 -1
- package/dist/components/Wallet/WalletProviders/Wagmi.js +20 -10
- package/dist/components/Wallet/WalletProviders/index.js +13 -6
- package/dist/components/Widget/Footer.d.ts +2 -1
- package/dist/components/Widget/Footer.js +13 -4
- package/dist/components/Widget/Index.d.ts +1 -1
- package/dist/components/Widget/Index.js +1 -1
- package/dist/components/WidgetLoading.d.ts +1 -0
- package/dist/components/WidgetLoading.js +5 -0
- package/dist/components/Wizard/Wizard.js +1 -1
- package/dist/components/shadcn/command.js +1 -1
- package/dist/components/themeWrapper.js +4 -3
- package/dist/context/{LayerswapContext.d.ts → LayerswapProvider.d.ts} +3 -8
- package/dist/context/{LayerswapContext.js → LayerswapProvider.js} +8 -9
- package/dist/context/authContext.js +1 -0
- package/dist/context/walletHooksProvider.js +1 -0
- package/dist/hooks/useWallet.js +10 -14
- package/dist/index.css +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.js +2 -4
- package/dist/index.mjs +19 -0
- package/dist/lib/AppSettings.d.ts +7 -3
- package/dist/lib/AppSettings.js +8 -7
- package/dist/lib/address/formatter/index.js +8 -9
- package/dist/lib/address/validator/index.js +18 -20
- package/dist/lib/axiosInterceptor.js +1 -2
- package/dist/lib/balances/balanceResolver.js +16 -16
- package/dist/lib/balances/providers/evmBalanceProvider.js +3 -3
- package/dist/lib/balances/providers/loopringBalanceProvider.d.ts +0 -6
- package/dist/lib/balances/providers/loopringBalanceProvider.js +56 -43
- package/dist/lib/balances/providers/paradexBalanceProvider.d.ts +0 -6
- package/dist/lib/balances/providers/paradexBalanceProvider.js +42 -42
- package/dist/lib/balances/providers/solanaBalanceProvider.d.ts +0 -6
- package/dist/lib/balances/providers/solanaBalanceProvider.js +70 -71
- package/dist/lib/balances/providers/starknetBalanceProvider.d.ts +0 -6
- package/dist/lib/balances/providers/starknetBalanceProvider.js +48 -45
- package/dist/lib/balances/providers/tonBalanceProvider.d.ts +0 -18
- package/dist/lib/balances/providers/tonBalanceProvider.js +104 -100
- package/dist/lib/balances/providers/tronBalanceResolver.js +2 -3
- package/dist/lib/fuels/common/FakeAccount.d.ts +0 -24
- package/dist/lib/fuels/common/FakeAccount.js +58 -36
- package/dist/lib/fuels/common/PredicateConnector.d.ts +0 -54
- package/dist/lib/fuels/common/PredicateConnector.js +292 -205
- package/dist/lib/fuels/common/PredicateFactory.d.ts +0 -29
- package/dist/lib/fuels/common/PredicateFactory.js +123 -76
- package/dist/lib/fuels/common/PredicateWalletAdapter.d.ts +0 -17
- package/dist/lib/fuels/common/PredicateWalletAdapter.js +44 -29
- package/dist/lib/fuels/common/index.d.ts +0 -4
- package/dist/lib/fuels/common/index.js +4 -4
- package/dist/lib/fuels/connectors/fuel-wallet/FuelWalletConnector.d.ts +0 -51
- package/dist/lib/fuels/connectors/fuel-wallet/FuelWalletConnector.js +268 -234
- package/dist/lib/fuels/connectors/fuel-wallet/index.d.ts +0 -2
- package/dist/lib/fuels/connectors/fuel-wallet/index.js +2 -2
- package/dist/lib/fuels/connectors/fuel-wallet/types.d.ts +0 -50
- package/dist/lib/fuels/connectors/fuel-wallet/types.js +53 -9
- package/dist/lib/fuels/connectors/fuelet-wallet/FueletWalletConnector.d.ts +0 -7
- package/dist/lib/fuels/connectors/fuelet-wallet/FueletWalletConnector.js +20 -19
- package/dist/lib/fuels/connectors/fuelet-wallet/index.d.ts +0 -1
- package/dist/lib/fuels/connectors/fuelet-wallet/index.js +1 -1
- package/dist/lib/gases/gasResolver.d.ts +1 -1
- package/dist/lib/gases/gasResolver.js +10 -10
- package/dist/lib/gases/providers/evmGasProvider.js +5 -4
- package/dist/lib/gases/providers/loopringGasProvider.d.ts +0 -6
- package/dist/lib/gases/providers/loopringGasProvider.js +27 -24
- package/dist/lib/gases/providers/solanaGasProvider.d.ts +0 -7
- package/dist/lib/gases/providers/solanaGasProvider.js +32 -31
- package/dist/lib/gases/providers/starknetGasProvider.d.ts +0 -7
- package/dist/lib/gases/providers/starknetGasProvider.js +34 -33
- package/dist/lib/imtbl.d.ts +0 -69
- package/dist/lib/imtbl.js +63 -60
- package/dist/lib/internalApiClient.d.ts +0 -2
- package/dist/lib/internalApiClient.js +1 -4
- package/dist/lib/layerSwapApiClient.js +3 -3
- package/dist/lib/logError.js +2 -2
- package/dist/lib/nft/nftBalanceResolver.js +1 -2
- package/dist/lib/nft/providers/starknetNftProvider.d.ts +0 -6
- package/dist/lib/nft/providers/starknetNftProvider.js +49 -50
- package/dist/lib/wallets/connectors/useSyncProviders/store.d.ts +1 -4
- package/dist/lib/wallets/fuel/Bako.d.ts +0 -15
- package/dist/lib/wallets/fuel/Bako.js +34 -29
- package/dist/lib/wallets/fuel/Basko.d.ts +0 -15
- package/dist/lib/wallets/fuel/Basko.js +34 -29
- package/dist/lib/wallets/fuel/useFuel.d.ts +0 -2
- package/dist/lib/wallets/fuel/useFuel.js +211 -192
- package/dist/lib/wallets/imtblX/useImtblX.d.ts +0 -2
- package/dist/lib/wallets/imtblX/useImtblX.js +87 -87
- package/dist/lib/wallets/paradex/Authorize/Ethereum.d.ts +0 -2
- package/dist/lib/wallets/paradex/Authorize/Ethereum.js +24 -23
- package/dist/lib/wallets/paradex/Authorize/Starknet.d.ts +0 -2
- package/dist/lib/wallets/paradex/Authorize/Starknet.js +14 -13
- package/dist/lib/wallets/paradex/lib/account.d.ts +0 -28
- package/dist/lib/wallets/paradex/lib/account.js +102 -53
- package/dist/lib/wallets/paradex/lib/index.d.ts +0 -24
- package/dist/lib/wallets/paradex/lib/index.js +20 -20
- package/dist/lib/wallets/paradex/lib/paraclear-provider.d.ts +0 -6
- package/dist/lib/wallets/paradex/lib/paraclear-provider.js +13 -9
- package/dist/lib/wallets/paradex/lib/paraclear.d.ts +0 -137
- package/dist/lib/wallets/paradex/lib/paraclear.js +258 -131
- package/dist/lib/wallets/paradex/lib/starknet-account-support.d.ts +0 -22
- package/dist/lib/wallets/paradex/lib/starknet-account-support.js +296 -220
- package/dist/lib/wallets/paradex/lib/starknet-signer.d.ts +0 -15
- package/dist/lib/wallets/paradex/lib/starknet-signer.js +120 -94
- package/dist/lib/wallets/paradex/useParadex.d.ts +0 -7
- package/dist/lib/wallets/paradex/useParadex.js +197 -194
- package/dist/lib/wallets/solana/transactionBuilder.d.ts +0 -4
- package/dist/lib/wallets/solana/transactionBuilder.js +63 -39
- package/dist/lib/wallets/solana/useSVM.d.ts +0 -5
- package/dist/lib/wallets/solana/useSVM.js +139 -142
- package/dist/lib/wallets/starknet/useStarknet.d.ts +0 -2
- package/dist/lib/wallets/starknet/useStarknet.js +139 -139
- package/dist/lib/wallets/ton/client.d.ts +0 -3
- package/dist/lib/wallets/ton/client.js +7 -7
- package/dist/lib/wallets/ton/useTON.d.ts +0 -2
- package/dist/lib/wallets/ton/useTON.js +121 -122
- package/dist/lib/wallets/tron/connectors/bitkeep.d.ts +0 -61
- package/dist/lib/wallets/tron/connectors/bitkeep.js +326 -303
- package/dist/lib/wallets/tron/connectors/index.d.ts +0 -4
- package/dist/lib/wallets/tron/connectors/index.js +4 -4
- package/dist/lib/wallets/tron/connectors/okxWallet.d.ts +0 -66
- package/dist/lib/wallets/tron/connectors/okxWallet.js +364 -336
- package/dist/lib/wallets/tron/connectors/tokenPocket.d.ts +0 -72
- package/dist/lib/wallets/tron/connectors/tokenPocket.js +337 -308
- package/dist/lib/wallets/tron/connectors/tronLink/index.d.ts +0 -102
- package/dist/lib/wallets/tron/connectors/tronLink/index.js +560 -520
- package/dist/lib/wallets/tron/connectors/tronLink/types.d.ts +0 -56
- package/dist/lib/wallets/tron/connectors/tronLink/types.js +53 -1
- package/dist/lib/wallets/tron/connectors/tronLink/utils.d.ts +0 -14
- package/dist/lib/wallets/tron/connectors/tronLink/utils.js +64 -61
- package/dist/lib/wallets/tron/useTron.d.ts +0 -2
- package/dist/lib/wallets/tron/useTron.js +111 -111
- package/dist/lib/wallets/utils/resolveWalletIcon.js +1 -0
- package/package.json +26 -77
- package/dist/hooks/useCopyClipboard.d.ts +0 -1
- package/dist/hooks/useCopyClipboard.js +0 -21
- package/dist/index.cjs +0 -125
- package/dist/lib/abis/ERC20.json +0 -258
- package/dist/lib/fuels/connectors/walletConnect/WalletConnectConnector.d.ts +0 -42
- package/dist/lib/fuels/connectors/walletConnect/WalletConnectConnector.js +0 -357
- package/dist/lib/fuels/connectors/walletConnect/constants.d.ts +0 -6
- package/dist/lib/fuels/connectors/walletConnect/constants.js +0 -7
- package/dist/lib/fuels/connectors/walletConnect/index.d.ts +0 -3
- package/dist/lib/fuels/connectors/walletConnect/index.js +0 -3
- package/dist/lib/fuels/connectors/walletConnect/types.d.ts +0 -12
- package/dist/lib/fuels/connectors/walletConnect/types.js +0 -1
- package/dist/lib/fuels/connectors/walletConnect/utils/index.d.ts +0 -1
- package/dist/lib/fuels/connectors/walletConnect/utils/index.js +0 -1
- package/dist/lib/fuels/connectors/walletConnect/utils/subscribeAndEnforceChain.d.ts +0 -2
- package/dist/lib/fuels/connectors/walletConnect/utils/subscribeAndEnforceChain.js +0 -39
- package/dist/lib/fuels/connectors/walletConnect/web3Modal.d.ts +0 -10
- package/dist/lib/fuels/connectors/walletConnect/web3Modal.js +0 -38
- package/dist/lib/loopring/LoopringAPI.d.ts +0 -12
- package/dist/lib/loopring/LoopringAPI.js +0 -13
- package/dist/lib/loopring/defs.d.ts +0 -425
- package/dist/lib/loopring/defs.js +0 -217
- package/dist/lib/loopring/eddsa.d.ts +0 -29
- package/dist/lib/loopring/eddsa.js +0 -208
- package/dist/lib/loopring/field.d.ts +0 -17
- package/dist/lib/loopring/field.js +0 -61
- package/dist/lib/loopring/formatter.d.ts +0 -137
- package/dist/lib/loopring/formatter.js +0 -516
- package/dist/lib/loopring/helpers.d.ts +0 -36
- package/dist/lib/loopring/helpers.js +0 -140
- package/dist/lib/loopring/jubjub.d.ts +0 -19
- package/dist/lib/loopring/jubjub.js +0 -79
- package/dist/lib/loopring/permutation.d.ts +0 -22
- package/dist/lib/loopring/permutation.js +0 -198
- package/dist/lib/loopring/poseidon/EDDSAUtil.d.ts +0 -14
- package/dist/lib/loopring/poseidon/EDDSAUtil.js +0 -61
- package/dist/lib/loopring/poseidon/babyJub.d.ts +0 -6
- package/dist/lib/loopring/poseidon/babyJub.js +0 -51
- package/dist/lib/loopring/poseidon/eddsa.d.ts +0 -29
- package/dist/lib/loopring/poseidon/eddsa.js +0 -210
- package/dist/lib/loopring/utils.d.ts +0 -76
- package/dist/lib/loopring/utils.js +0 -230
- package/dist/styles/dialog-transition.css +0 -28
- package/dist/styles/globals.css +0 -372
- package/dist/styles/manual-trasnfer-svg.css +0 -299
- package/dist/styles/vaul.css +0 -256
package/README.md
CHANGED
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<div align="center">
|
|
3
|
+
|
|
4
|
+
[](https://www.npmjs.com/package/@layerswap/widget)
|
|
5
|
+
[](https://x.com/layerswap)
|
|
6
|
+
|
|
5
7
|
</div>
|
|
8
|
+
|
|
9
|
+
<h1 align="center">Layerswap Widget</h1>
|
|
10
|
+
|
|
11
|
+
<img alt="layerswap" src="https://layerswap.io/app/opengraph.jpg" />
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
### Layerswap Widget
|
|
16
|
+
|
|
17
|
+
Layerswap Widget is available as an [npm package](https://www.npmjs.com/package/@layerswap/widget).
|
|
18
|
+
|
|
19
|
+
**pnpm:**
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
pnpm add @layerswap/widget wagmi viem zustand @tanstack/react-query
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**npm:**
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
npm install @layerswap/widget wagmi viem zustand @tanstack/react-query
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**yarn:**
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
yarn add @layerswap/widget wagmi viem zustand @tanstack/react-query
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Getting started with Layerswap Widget
|
|
38
|
+
|
|
39
|
+
Here is an example of a basic app using Layerswap Widget:
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { LayerswapProvider, Swap } from '@layerswap/widget';
|
|
43
|
+
|
|
44
|
+
export const WidgetPage = () => {
|
|
45
|
+
return (
|
|
46
|
+
<LayerswapProvider>
|
|
47
|
+
<Swap />
|
|
48
|
+
</LayerswapProvider>
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
You can create your custom wallet provider if you want to use RainbowKit, Dynamic, etc.
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { LayerswapProvider, Swap, WalletHooksProvider } from '@layerswap/widget';
|
|
57
|
+
import useCustomEVM from "../hooks/useCustomEvm";
|
|
58
|
+
|
|
59
|
+
function CustomHooks ({ children }: { children: ReactNode }) {
|
|
60
|
+
const customEvm = useCustomEVM()
|
|
61
|
+
return <WalletHooksProvider overides={{ evm: customEvm }}>
|
|
62
|
+
{children}
|
|
63
|
+
</WalletHooksProvider>
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export const WidgetPage = () => {
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<LayerswapProvider>
|
|
70
|
+
<CustomHooks>
|
|
71
|
+
<Swap />
|
|
72
|
+
<CustomHooks>
|
|
73
|
+
</LayerswapProvider>
|
|
74
|
+
);
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Examples
|
|
79
|
+
|
|
80
|
+
See [examples](/examples) folder in this repository.
|
package/dist/Models/Theme.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
export type ThemeData = {
|
|
2
2
|
backdrop?: string;
|
|
3
|
-
actionButtonText
|
|
4
|
-
buttonTextColor
|
|
5
|
-
logo
|
|
6
|
-
placeholderText
|
|
7
|
-
primary
|
|
3
|
+
actionButtonText?: string;
|
|
4
|
+
buttonTextColor?: string;
|
|
5
|
+
logo?: string;
|
|
6
|
+
placeholderText?: string;
|
|
7
|
+
primary?: ThemeColor;
|
|
8
8
|
secondary?: ThemeColor;
|
|
9
9
|
headerLogo?: string;
|
|
10
|
-
footerLogo?: string;
|
|
11
10
|
footerLogoHeight?: string;
|
|
11
|
+
footerSticky?: boolean;
|
|
12
|
+
borderRadius?: 'none' | 'small' | 'medium' | 'large' | 'extraLarge' | 'default';
|
|
12
13
|
};
|
|
13
14
|
export type ThemeColor = {
|
|
14
15
|
DEFAULT: string;
|
package/dist/Models/Theme.js
CHANGED
|
@@ -5,7 +5,7 @@ export const THEME_COLORS = {
|
|
|
5
5
|
buttonTextColor: '255, 255, 255',
|
|
6
6
|
placeholderText: '140, 152, 192',
|
|
7
7
|
logo: '255, 255, 255',
|
|
8
|
-
|
|
8
|
+
borderRadius: 'small',
|
|
9
9
|
primary: {
|
|
10
10
|
DEFAULT: '46, 236, 255',
|
|
11
11
|
'50': '230, 253, 255',
|
|
@@ -43,7 +43,7 @@ export const THEME_COLORS = {
|
|
|
43
43
|
actionButtonText: '0, 0, 0',
|
|
44
44
|
buttonTextColor: '255, 255, 255',
|
|
45
45
|
logo: '255, 255, 255',
|
|
46
|
-
|
|
46
|
+
borderRadius: 'small',
|
|
47
47
|
primary: {
|
|
48
48
|
DEFAULT: '128, 226, 235',
|
|
49
49
|
'50': '255, 255, 255',
|
|
@@ -81,7 +81,7 @@ export const THEME_COLORS = {
|
|
|
81
81
|
actionButtonText: '255, 255, 255',
|
|
82
82
|
buttonTextColor: '17, 17, 17',
|
|
83
83
|
logo: '255, 0, 147',
|
|
84
|
-
|
|
84
|
+
borderRadius: 'small',
|
|
85
85
|
primary: {
|
|
86
86
|
DEFAULT: '228, 37, 117',
|
|
87
87
|
'50': '248, 200, 220',
|
|
@@ -119,7 +119,7 @@ export const THEME_COLORS = {
|
|
|
119
119
|
actionButtonText: '254, 255, 254',
|
|
120
120
|
buttonTextColor: '228, 229, 240',
|
|
121
121
|
logo: '255, 0, 147',
|
|
122
|
-
|
|
122
|
+
borderRadius: 'small',
|
|
123
123
|
primary: {
|
|
124
124
|
DEFAULT: '228, 37, 117',
|
|
125
125
|
'50': '248, 200, 220',
|
|
@@ -156,7 +156,7 @@ export const THEME_COLORS = {
|
|
|
156
156
|
actionButtonText: '254, 255, 254',
|
|
157
157
|
buttonTextColor: '74, 61, 59',
|
|
158
158
|
logo: '226, 49, 115',
|
|
159
|
-
|
|
159
|
+
borderRadius: 'small',
|
|
160
160
|
primary: {
|
|
161
161
|
DEFAULT: '237, 78, 51',
|
|
162
162
|
'50': '248, 200, 220',
|
|
@@ -193,7 +193,7 @@ export const THEME_COLORS = {
|
|
|
193
193
|
actionButtonText: '255, 255, 255',
|
|
194
194
|
buttonTextColor: '15, 15, 15',
|
|
195
195
|
logo: '15, 15, 15',
|
|
196
|
-
|
|
196
|
+
borderRadius: 'small',
|
|
197
197
|
primary: {
|
|
198
198
|
DEFAULT: '51, 144, 236',
|
|
199
199
|
'50': '248, 200, 220',
|
|
@@ -231,8 +231,8 @@ export const THEME_COLORS = {
|
|
|
231
231
|
buttonTextColor: '243, 243, 243',
|
|
232
232
|
logo: '15, 15, 15',
|
|
233
233
|
headerLogo: 'none',
|
|
234
|
-
footerLogo: 'block',
|
|
235
234
|
footerLogoHeight: '20px',
|
|
235
|
+
borderRadius: 'small',
|
|
236
236
|
primary: {
|
|
237
237
|
DEFAULT: '243, 243, 243',
|
|
238
238
|
'50': '248, 200, 220',
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { AccountInterface } from 'starknet';
|
|
2
|
-
import { StarknetWindowObject } from 'starknetkit';
|
|
3
1
|
export type InternalConnector = {
|
|
4
2
|
name: string;
|
|
5
3
|
id: string;
|
|
@@ -20,8 +18,6 @@ export type Wallet = {
|
|
|
20
18
|
providerName: string;
|
|
21
19
|
icon: (props: any) => React.JSX.Element;
|
|
22
20
|
metadata?: {
|
|
23
|
-
starknetAccount?: AccountInterface;
|
|
24
|
-
wallet?: StarknetWindowObject;
|
|
25
21
|
l1Address?: string;
|
|
26
22
|
deepLink?: string;
|
|
27
23
|
};
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
3
|
import { Check, Copy } from 'lucide-react';
|
|
3
4
|
import { classNames } from '../utils/classNames';
|
|
4
|
-
import useCopyClipboard from '../../hooks/useCopyClipboard';
|
|
5
5
|
import { useState } from 'react';
|
|
6
6
|
import { Tooltip, TooltipContent, TooltipTrigger } from '../shadcn/tooltip';
|
|
7
|
+
import { useCopyToClipboard } from '@uidotdev/usehooks';
|
|
7
8
|
const CopyButton = ({ className, toCopy, children, iconSize, iconClassName }) => {
|
|
8
|
-
const [isCopied, setCopied] =
|
|
9
|
+
const [isCopied, setCopied] = useCopyToClipboard();
|
|
9
10
|
const [isTooltipOpen, setTooltipOpen] = useState(false);
|
|
10
11
|
const handleCopyClick = () => {
|
|
11
|
-
setCopied(toCopy);
|
|
12
|
+
setCopied(toCopy.toString());
|
|
12
13
|
setTooltipOpen(true);
|
|
13
14
|
};
|
|
14
15
|
return (_jsxs(Tooltip, { open: isTooltipOpen, onOpenChange: setTooltipOpen, children: [_jsx(TooltipTrigger, { children: _jsx("div", { className: classNames(className), onClick: handleCopyClick, children: isCopied ? (_jsxs("div", { className: "flex items-center gap-1 cursor-pointer", children: [_jsx(Check, { className: iconClassName, width: iconSize ? iconSize : 16, height: iconSize ? iconSize : 16 }), children] })) : (_jsxs("div", { className: "flex items-center gap-1 cursor-pointer", children: [_jsx(Copy, { className: iconClassName, width: iconSize ? iconSize : 16, height: iconSize ? iconSize : 16 }), children] })) }) }), _jsx(TooltipContent, { children: _jsx("p", { children: isCopied ? "Copied" : "Copy" }) })] }));
|
|
@@ -1,52 +1,86 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { THEME_COLORS } from "../Models/Theme";
|
|
3
|
+
const BORDER_RADIUS_VALUES = {
|
|
4
|
+
small: 6,
|
|
5
|
+
medium: 8,
|
|
6
|
+
large: 12,
|
|
7
|
+
extraLarge: 16
|
|
8
|
+
};
|
|
9
|
+
const adjustBorderRadius = (key, borderRadiusType) => {
|
|
10
|
+
if (borderRadiusType === 'none')
|
|
11
|
+
return '0';
|
|
12
|
+
const values = {
|
|
13
|
+
small: { small: 4, medium: 6, large: 8, extraLarge: 10 },
|
|
14
|
+
medium: { small: 6, medium: 8, large: 10, extraLarge: 12 },
|
|
15
|
+
large: { small: 8, medium: 10, large: 12, extraLarge: 14 },
|
|
16
|
+
extraLarge: { small: 10, medium: 12, large: 14, extraLarge: 16 },
|
|
17
|
+
};
|
|
18
|
+
const selected = values[borderRadiusType];
|
|
19
|
+
if (!selected) {
|
|
20
|
+
return `${BORDER_RADIUS_VALUES[key]}px`;
|
|
21
|
+
}
|
|
22
|
+
return `${selected[key]}px`;
|
|
23
|
+
};
|
|
3
24
|
const ColorSchema = ({ themeData }) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
const fallbackTheme = THEME_COLORS.default;
|
|
26
|
+
const backdrop = themeData?.backdrop || fallbackTheme.backdrop;
|
|
27
|
+
const logo = themeData?.logo || fallbackTheme.logo;
|
|
28
|
+
const actionButtonText = themeData?.actionButtonText || fallbackTheme.actionButtonText;
|
|
29
|
+
const buttonTextColor = themeData?.buttonTextColor || fallbackTheme.buttonTextColor;
|
|
30
|
+
const placeholderText = themeData?.placeholderText || fallbackTheme.placeholderText;
|
|
31
|
+
const headerLogo = themeData?.headerLogo || fallbackTheme.headerLogo;
|
|
32
|
+
const borderRadius = themeData?.borderRadius || fallbackTheme.borderRadius;
|
|
33
|
+
const primary = themeData?.primary || fallbackTheme.primary;
|
|
34
|
+
const secondary = themeData?.secondary || fallbackTheme.secondary;
|
|
35
|
+
return (_jsx(_Fragment, { children: _jsx("style", { children: `
|
|
36
|
+
:root {
|
|
37
|
+
--ls-border-radius-none: 0px;
|
|
38
|
+
--ls-border-radius-sm: ${adjustBorderRadius('small', borderRadius)};
|
|
39
|
+
--ls-border-radius-md: ${adjustBorderRadius('medium', borderRadius)};
|
|
40
|
+
--ls-border-radius-lg: ${adjustBorderRadius('large', borderRadius)};
|
|
41
|
+
--ls-border-radius-xl: ${adjustBorderRadius('extraLarge', borderRadius)};
|
|
42
|
+
--ls-border-radius-default: ${adjustBorderRadius('small', borderRadius)};
|
|
43
|
+
|
|
44
|
+
--ls-colors-backdrop: ${backdrop};
|
|
45
|
+
--ls-colors-logo: ${logo};
|
|
46
|
+
|
|
47
|
+
--ls-colors-primary: ${primary?.DEFAULT};
|
|
48
|
+
--ls-colors-primary-50: ${primary?.[50]};
|
|
49
|
+
--ls-colors-primary-100: ${primary?.[100]};
|
|
50
|
+
--ls-colors-primary-200: ${primary?.[200]};
|
|
51
|
+
--ls-colors-primary-300: ${primary?.[300]};
|
|
52
|
+
--ls-colors-primary-400: ${primary?.[400]};
|
|
53
|
+
--ls-colors-primary-500: ${primary?.[500]};
|
|
54
|
+
--ls-colors-primary-600: ${primary?.[600]};
|
|
55
|
+
--ls-colors-primary-700: ${primary?.[700]};
|
|
56
|
+
--ls-colors-primary-800: ${primary?.[800]};
|
|
57
|
+
--ls-colors-primary-900: ${primary?.[900]};
|
|
58
|
+
|
|
59
|
+
--ls-colors-actionButtonText: ${actionButtonText};
|
|
60
|
+
--ls-colors-buttonTextColor: ${buttonTextColor};
|
|
61
|
+
--ls-colors-text-placeholder: ${placeholderText};
|
|
62
|
+
--ls-colors-primary-text: ${primary?.text};
|
|
63
|
+
--ls-colors-primary-text-muted: ${primary?.textMuted};
|
|
64
|
+
--ls-colors-primary-logoColor: ${logo};
|
|
21
65
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
66
|
+
--ls-colors-secondary: ${secondary?.DEFAULT};
|
|
67
|
+
--ls-colors-secondary-50: ${secondary?.[50]};
|
|
68
|
+
--ls-colors-secondary-100: ${secondary?.[100]};
|
|
69
|
+
--ls-colors-secondary-200: ${secondary?.[200]};
|
|
70
|
+
--ls-colors-secondary-300: ${secondary?.[300]};
|
|
71
|
+
--ls-colors-secondary-400: ${secondary?.[400]};
|
|
72
|
+
--ls-colors-secondary-500: ${secondary?.[500]};
|
|
73
|
+
--ls-colors-secondary-600: ${secondary?.[600]};
|
|
74
|
+
--ls-colors-secondary-700: ${secondary?.[700]};
|
|
75
|
+
--ls-colors-secondary-800: ${secondary?.[800]};
|
|
76
|
+
--ls-colors-secondary-900: ${secondary?.[900]};
|
|
77
|
+
--ls-colors-secondary-950: ${secondary?.[950]};
|
|
78
|
+
--ls-colors-secondary-text: ${secondary?.text};
|
|
79
|
+
}
|
|
28
80
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
--ls-colors-secondary-300: ${themeData.secondary?.[300]};
|
|
34
|
-
--ls-colors-secondary-400: ${themeData.secondary?.[400]};
|
|
35
|
-
--ls-colors-secondary-500: ${themeData.secondary?.[500]};
|
|
36
|
-
--ls-colors-secondary-600: ${themeData.secondary?.[600]};
|
|
37
|
-
--ls-colors-secondary-700: ${themeData.secondary?.[700]};
|
|
38
|
-
--ls-colors-secondary-800: ${themeData.secondary?.[800]};
|
|
39
|
-
--ls-colors-secondary-900: ${themeData.secondary?.[900]};
|
|
40
|
-
--ls-colors-secondary-950: ${themeData.secondary?.[950]};
|
|
41
|
-
--ls-colors-secondary-text: ${themeData.secondary?.text};
|
|
42
|
-
}
|
|
43
|
-
.headerLogo {
|
|
44
|
-
display: ${themeData.headerLogo};
|
|
45
|
-
}
|
|
46
|
-
.footerLogo {
|
|
47
|
-
display: ${themeData.footerLogo};
|
|
48
|
-
height: ${themeData.footerLogoHeight};
|
|
49
|
-
}
|
|
50
|
-
` }) }));
|
|
81
|
+
.headerLogo {
|
|
82
|
+
display: ${headerLogo};
|
|
83
|
+
}
|
|
84
|
+
` }) }));
|
|
51
85
|
};
|
|
52
86
|
export default ColorSchema;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
const AverageCompletionTime = ({ avgCompletionTime }) => {
|
|
3
3
|
if (!avgCompletionTime)
|
|
4
|
-
return;
|
|
4
|
+
return null;
|
|
5
5
|
const time = avgCompletionTime?.split(':');
|
|
6
6
|
const hours = Number(time[0]);
|
|
7
7
|
const minutes = Number(time[1]);
|
|
@@ -4,7 +4,7 @@ import { SwapStatus } from "../../Models/SwapStatus";
|
|
|
4
4
|
import { useIntercom } from "react-use-intercom";
|
|
5
5
|
import { useAuthState } from "../../context/authContext";
|
|
6
6
|
import { TransactionType } from "../../lib/layerSwapApiClient";
|
|
7
|
-
import { datadogRum } from "@datadog/browser-rum";
|
|
7
|
+
// import { datadogRum } from "@datadog/browser-rum";
|
|
8
8
|
const CountdownTimer = ({ initialTime, swap }) => {
|
|
9
9
|
const { email, userId } = useAuthState();
|
|
10
10
|
const { boot, show, update } = useIntercom();
|
|
@@ -47,7 +47,7 @@ const CountdownTimer = ({ initialTime, swap }) => {
|
|
|
47
47
|
const renderingError = new Error("Transaction is taking longer than expected");
|
|
48
48
|
renderingError.name = `LongTransactionError`;
|
|
49
49
|
renderingError.cause = renderingError;
|
|
50
|
-
datadogRum.addError(renderingError);
|
|
50
|
+
// datadogRum.addError(renderingError);
|
|
51
51
|
}
|
|
52
52
|
return (_jsx("div", { className: 'flex items-center space-x-1', children: thresholdElapsed && swap.status !== SwapStatus.UserTransferPending ? (_jsxs("div", { children: [_jsx("span", { children: "Transaction is taking longer than expected " }), _jsx("a", { className: 'underline hover:cursor-pointer', onClick: () => startIntercom(), children: "please contact our support." })] })) : countdown === 0 && swap.status !== SwapStatus.Completed ? (_jsx("div", { children: _jsx("span", { children: "Taking a bit longer than expected" }) })) : swap.status === SwapStatus.Completed && (!countdown || countdown === 0) ? ("") : (_jsxs("div", { className: 'text-secondary-text flex items-center', children: [_jsx("span", { children: "Estimated time:" }), _jsx("span", { className: 'text-primary-text ml-0.5', children: countdown ? formatted : _jsx("div", { className: "h-[10px] mt-1 w-16 ml-1 animate-pulse rounded bg-gray-500" }) })] })) }));
|
|
53
53
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
const FormattedAverageCompletionTime = ({ avgCompletionTime }) => {
|
|
3
3
|
if (!avgCompletionTime)
|
|
4
|
-
return;
|
|
4
|
+
return null;
|
|
5
5
|
const parts = avgCompletionTime.split('.');
|
|
6
6
|
const time = parts[0];
|
|
7
7
|
const [hours, minutes, seconds] = time.split(':').map(parseFloat);
|
|
@@ -2,12 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useIntercom } from "react-use-intercom";
|
|
3
3
|
import { useAuthState } from "../../context/authContext";
|
|
4
4
|
import IconButton from "../Buttons/iconButton";
|
|
5
|
-
import GoHomeButton from "../utils/GoHome";
|
|
6
5
|
import { ArrowLeft } from 'lucide-react';
|
|
7
|
-
import ChatIcon from "../Icons/ChatIcon";
|
|
8
6
|
import LayerswapMenu from "../LayerswapMenu";
|
|
9
7
|
import { useQueryState } from "../../context/query";
|
|
10
|
-
import { WalletsHeader } from "../Wallet/WalletComponents/ConnectedWallets";
|
|
11
8
|
// const WalletsHeader = dynamic(() => import("../Wallet/WalletComponents/ConnectedWallets").then((comp) => comp.WalletsHeader), {
|
|
12
9
|
// loading: () => <></>
|
|
13
10
|
// })
|
|
@@ -17,10 +14,6 @@ function HeaderWithMenu({ goBack }) {
|
|
|
17
14
|
const updateWithProps = () => update({ userId, customAttributes: { email: email, } });
|
|
18
15
|
const query = useQueryState();
|
|
19
16
|
return (_jsxs("div", { className: "w-full grid grid-cols-5 px-6 mt-3 pb-2", children: [goBack &&
|
|
20
|
-
_jsx(IconButton, { onClick: goBack, "aria-label": "Go back", className: "-ml-2", icon: _jsx(ArrowLeft, { strokeWidth: "2" }) }),
|
|
21
|
-
boot();
|
|
22
|
-
show();
|
|
23
|
-
updateWithProps();
|
|
24
|
-
}, icon: _jsx(ChatIcon, { className: "h-6 w-6", strokeWidth: "2" }) }), _jsx("div", { className: "fixed-width-container", children: _jsx(LayerswapMenu, {}) })] })] }));
|
|
17
|
+
_jsx(IconButton, { onClick: goBack, "aria-label": "Go back", className: "-ml-2", icon: _jsx(ArrowLeft, { strokeWidth: "2" }) }), _jsx("div", { className: "col-start-5 justify-self-end self-center flex items-center gap-x-1 -mr-2", children: _jsx("div", { className: "fixed-width-container", children: _jsx(LayerswapMenu, {}) }) })] }));
|
|
25
18
|
}
|
|
26
19
|
export default HeaderWithMenu;
|
|
@@ -4,7 +4,8 @@ import CopyButton from "../../Buttons/copyButton";
|
|
|
4
4
|
import AddressIcon from "../../Common/AddressIcon";
|
|
5
5
|
const AddressNote = ({ partner, values }) => {
|
|
6
6
|
const { to: destination, destination_address } = values;
|
|
7
|
-
return (destination && destination_address
|
|
8
|
-
_jsxs("div", { className: "flex flex-col items-center gap-6 mt-2", children: [_jsx("div", { className: "h-24 w-24 rounded-2xl overflow-hidden", children: _jsx(AddressIcon, { className: "scale-150 h-24 w-24 blur-[1.5px]", address: destination_address, size: 96 }) }), _jsxs("div", { className: "text-center max-w-xs space-y-1", children: [_jsx("p", { className: "text-2xl", children: "Address Confirmation" }), _jsxs("p", { className: "text-secondary-text", children: [_jsx("span", { children: "Destination address was autofilled from URL" }), " ", partner && _jsxs(_Fragment, { children: [_jsx("span", { children: "by" }), " ", _jsxs("span", { children: [partner.display_name, "."] })] }), " ", _jsx("span", { children: "Please double-check its correctness." })] })] }), _jsxs("div", { className: "w-full rounded-lg bg-secondary-700 overflow-hidden px-4 py-3 space-y-2", children: [_jsx("div", { className: "gap-4 flex relative items-center outline-none w-full text-primary-text", children: _jsxs("div", { className: "flex items-center justify-between w-full", children: [_jsxs("div", { className: "text-secondary-text", children: [_jsx("span", { children: destination?.display_name }), " ", _jsx("span", { children: "address" })] }), _jsxs("div", { className: "flex items-center gap-4 text-secondary-text", children: [_jsx(CopyButton, { toCopy: destination_address }), _jsx("a", { href: destination?.account_explorer_template?.replace('{0}', destination_address) || '', target: "_blank", children: _jsx(ExternalLink, { className: "h-4 w-4" }) })] })] }) }), _jsxs("div", { className: 'flex gap-3 text-sm items-center', children: [_jsx("div", { className: 'flex flex-shrink-0 bg-secondary-400 text-primary-text items-center justify-center rounded-md h-9 overflow-hidden w-9', children: _jsx(AddressIcon, { className: "scale-150 h-9 w-9", address: destination_address, size: 36 }) }), _jsx("p", { className: "break-all text-sm", children: destination_address })] })] })] })
|
|
7
|
+
return (destination && destination_address ?
|
|
8
|
+
_jsxs("div", { className: "flex flex-col items-center gap-6 mt-2", children: [_jsx("div", { className: "h-24 w-24 rounded-2xl overflow-hidden", children: _jsx(AddressIcon, { className: "scale-150 h-24 w-24 blur-[1.5px]", address: destination_address, size: 96 }) }), _jsxs("div", { className: "text-center max-w-xs space-y-1", children: [_jsx("p", { className: "text-2xl", children: "Address Confirmation" }), _jsxs("p", { className: "text-secondary-text", children: [_jsx("span", { children: "Destination address was autofilled from URL" }), " ", partner && _jsxs(_Fragment, { children: [_jsx("span", { children: "by" }), " ", _jsxs("span", { children: [partner.display_name, "."] })] }), " ", _jsx("span", { children: "Please double-check its correctness." })] })] }), _jsxs("div", { className: "w-full rounded-lg bg-secondary-700 overflow-hidden px-4 py-3 space-y-2", children: [_jsx("div", { className: "gap-4 flex relative items-center outline-none w-full text-primary-text", children: _jsxs("div", { className: "flex items-center justify-between w-full", children: [_jsxs("div", { className: "text-secondary-text", children: [_jsx("span", { children: destination?.display_name }), " ", _jsx("span", { children: "address" })] }), _jsxs("div", { className: "flex items-center gap-4 text-secondary-text", children: [_jsx(CopyButton, { toCopy: destination_address }), _jsx("a", { href: destination?.account_explorer_template?.replace('{0}', destination_address) || '', target: "_blank", children: _jsx(ExternalLink, { className: "h-4 w-4" }) })] })] }) }), _jsxs("div", { className: 'flex gap-3 text-sm items-center', children: [_jsx("div", { className: 'flex flex-shrink-0 bg-secondary-400 text-primary-text items-center justify-center rounded-md h-9 overflow-hidden w-9', children: _jsx(AddressIcon, { className: "scale-150 h-9 w-9", address: destination_address, size: 36 }) }), _jsx("p", { className: "break-all text-sm", children: destination_address })] })] })] })
|
|
9
|
+
: null);
|
|
9
10
|
};
|
|
10
11
|
export default AddressNote;
|
|
@@ -5,8 +5,8 @@ import AddressIcon from "../../../Common/AddressIcon";
|
|
|
5
5
|
import shortenAddress from "../../../utils/ShortenAddress";
|
|
6
6
|
import { History, ExternalLink, Copy, Check, ChevronDown, WalletIcon, Pencil, Link2, Power } from "lucide-react";
|
|
7
7
|
import { Popover, PopoverContent, PopoverTrigger } from "../../../shadcn/popover";
|
|
8
|
-
import useCopyClipboard from "../../../../hooks/useCopyClipboard";
|
|
9
8
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../../../shadcn/tooltip";
|
|
9
|
+
import { useCopyToClipboard } from "@uidotdev/usehooks";
|
|
10
10
|
const AddressWithIcon = ({ addressItem, connectedWallet, partner, network, balance }) => {
|
|
11
11
|
const difference_in_days = addressItem?.date ? Math.round(Math.abs(((new Date()).getTime() - new Date(addressItem.date).getTime()) / (1000 * 3600 * 24))) : undefined;
|
|
12
12
|
const maxWalletNameWidth = calculateMaxWidth(String(balance?.amount));
|
|
@@ -59,7 +59,7 @@ const calculateMaxWidth = (balance) => {
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
export const ExtendedAddress = ({ address, network, addressClassNames, onDisconnect }) => {
|
|
62
|
-
const [isCopied, setCopied] =
|
|
62
|
+
const [isCopied, setCopied] = useCopyToClipboard();
|
|
63
63
|
const [isPopoverOpen, setPopoverOpen] = useState(false);
|
|
64
64
|
return (_jsx("div", { onClick: (e) => e.stopPropagation(), children: _jsxs(Popover, { open: isPopoverOpen, onOpenChange: () => setPopoverOpen(!isPopoverOpen), children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("div", { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("div", { className: "group-hover/addressItem:underline hover:text-secondary-text transition duration-200 no-underline flex gap-1 items-center cursor-pointer", children: [_jsx("p", { className: `block text-sm font-medium ${addressClassNames}`, children: shortenAddress(address) }), _jsx(ChevronDown, { className: "invisible group-hover/addressItem:visible h-4 w-4" })] }) }), _jsx(TooltipContent, { side: "bottom", children: _jsx("p", { children: address }) })] }) }) }), _jsxs(PopoverContent, { className: "w-full p-2 flex flex-col gap-1 items-stretch", side: "top", children: [_jsxs("div", { onClick: (e) => { e.stopPropagation(), setCopied(address); }, className: "hover:text-primary-text px-2 py-1.5 hover:bg-secondary-600 rounded transition-all duartion-200 flex items-center justify-between gap-5 w-full", children: [_jsx("p", { children: "Copy address" }), isCopied ?
|
|
65
65
|
_jsx(Check, { className: "h-4 w-4" })
|
|
@@ -5,11 +5,18 @@ import { useState } from "react";
|
|
|
5
5
|
const ConnectWalletButton = ({ provider, onConnect, destination }) => {
|
|
6
6
|
const [isLoading, setIsLoading] = useState(false);
|
|
7
7
|
const connect = async () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
onConnect
|
|
12
|
-
|
|
8
|
+
try {
|
|
9
|
+
setIsLoading(true);
|
|
10
|
+
const result = await provider.connectWallet();
|
|
11
|
+
if (onConnect && result)
|
|
12
|
+
onConnect(result);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error('Error connecting:', error);
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
setIsLoading(false);
|
|
19
|
+
}
|
|
13
20
|
};
|
|
14
21
|
return _jsx(_Fragment, { children: _jsx("button", { typeof: "button", onClick: connect, type: "button", className: `py-5 px-6 bg-secondary-700 hover:bg-secondary-600 transition-colors duration-200 rounded-xl ${isLoading && 'cursor-progress opacity-80'}`, children: _jsxs("div", { className: "flex flex-row justify-between gap-9 items-stretch", children: [_jsx(ResolveConnectorIcon, { connector: provider.name, iconClassName: "w-10 h-10 p-0.5 rounded-lg bg-secondary-800 border border-secondary-400", className: "grid grid-cols-2 gap-1 min-w-fit" }), _jsxs("div", { className: "h-full space-y-2", children: [_jsx("p", { className: "text-sm font-medium text-secondary-text text-start", children: "Connect your wallet to browse and select from your addresses" }), _jsx("div", { className: "bg-primary-700/30 border-none !text-primary py-2 rounded-lg text-base font-semibold", children: isLoading ?
|
|
15
22
|
_jsxs("div", { className: "flex items-center gap-1 justify-center", children: [_jsx(RefreshCw, { className: "h-3 w-auto animate-spin" }), _jsx("span", { className: "ml-1", children: "Connecting..." })] })
|
|
@@ -4,5 +4,5 @@ declare const ExchangeNote: ({ destinationAsset, destinationExchange, destinatio
|
|
|
4
4
|
destinationAsset: Token | undefined;
|
|
5
5
|
destinationExchange: Exchange;
|
|
6
6
|
destination: RouteNetwork | undefined;
|
|
7
|
-
}) => import("react/jsx-runtime").JSX.Element |
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
8
8
|
export default ExchangeNote;
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Info } from "lucide-react";
|
|
3
3
|
const ExchangeNote = ({ destinationAsset, destinationExchange, destination }) => {
|
|
4
4
|
if (!destinationAsset || !destinationExchange || !destination)
|
|
5
|
-
return;
|
|
5
|
+
return null;
|
|
6
6
|
return (_jsxs("div", { className: 'text-left p-4 bg-secondary-800 text-primary-text rounded-lg border border-secondary-500 mt-3 w-full', children: [_jsxs("div", { className: "flex items-center", children: [_jsx(Info, { className: 'h-5 w-5 text-primary-600 mr-3' }), _jsxs("label", { className: "block text-sm md:text-base font-medium leading-6", children: ["How to find your ", destinationExchange.display_name, " deposit address"] })] }), _jsxs("ul", { className: "list-disc font-light space-y-1 text-xs md:text-sm mt-2 ml-8 text-primary-text", children: [_jsx("li", { children: "Go to the Deposits page" }), _jsxs("li", { children: [_jsx("span", { children: "Select" }), _jsx("span", { className: "inline-block mx-1", children: _jsxs("span", { className: 'flex gap-1 items-baseline text-sm ', children: [_jsx("img", { src: destinationAsset.logo, alt: "Project Logo", height: "15", width: "15", className: 'rounded-sm' }), _jsx("span", { className: "text-primary-text", children: destinationAsset.symbol })] }) }), _jsx("span", { children: "as asset" })] }), _jsxs("li", { children: [_jsx("span", { children: "Select" }), _jsx("span", { className: "inline-block mx-1", children: _jsxs("span", { className: 'flex gap-1 items-baseline text-sm ', children: [_jsx("img", { src: destination?.logo || '', alt: "Project Logo", height: "15", width: "15", className: 'rounded-sm' }), _jsx("span", { className: "text-primary-text", children: destination?.display_name })] }) }), _jsx("span", { children: "as network" })] })] })] }));
|
|
7
7
|
};
|
|
8
8
|
export default ExchangeNote;
|
|
@@ -7,6 +7,6 @@ const RouteIcon = (props) => {
|
|
|
7
7
|
return _jsxs(Tooltip, { delayDuration: 200, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "absolute -left-1 top-0.5 z-50", children: _jsx(Info, { className: "!w-4 text-primary-text-placeholder hover:text-primary-text icoooooooooon" }) }) }), _jsx(TooltipContent, { children: _jsxs("p", { className: "max-w-72", children: [_jsx("span", { children: "Transfers" }), " ", _jsx("span", { children: direction }), " ", _jsx("span", { children: "this" }), " ", _jsx("span", { children: type }), " ", _jsx("span", { children: "are not available at the moment. Please try later." })] }) })] });
|
|
8
8
|
if (routeNotFound)
|
|
9
9
|
return _jsxs(Tooltip, { delayDuration: 200, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "absolute -left-0.5 top-0.5 z-50", children: _jsx(RouteOff, { className: "!w-3 text-primary-text-placeholder hover:text-primary-text icoooooooooon" }) }) }), _jsx(TooltipContent, { children: _jsx("p", { className: "max-w-72", children: "Route unavailable" }) })] });
|
|
10
|
-
return
|
|
10
|
+
return null;
|
|
11
11
|
};
|
|
12
12
|
export default RouteIcon;
|
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { BookOpen,
|
|
2
|
+
import { BookOpen, ScrollText, LibraryIcon, Shield } from "lucide-react";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
import { useAuthDataUpdate, useAuthState, UserType } from "../../context/authContext";
|
|
5
5
|
import TokenService from "../../lib/TokenService";
|
|
6
6
|
import { useIntercom } from "react-use-intercom";
|
|
7
|
-
import ChatIcon from "../Icons/ChatIcon";
|
|
8
7
|
import inIframe from "../utils/inIframe";
|
|
9
|
-
import DiscordLogo from "../Icons/DiscordLogo";
|
|
10
|
-
import GitHubLogo from "../Icons/GitHubLogo";
|
|
11
|
-
import SubstackLogo from "../Icons/SubstackLogo";
|
|
12
|
-
import TwitterLogo from "../Icons/TwitterLogo";
|
|
13
|
-
import Popover from "../Modal/popover";
|
|
14
|
-
import YoutubeLogo from "../Icons/YoutubeLogo";
|
|
15
8
|
import Menu from "./Menu";
|
|
16
9
|
import { MenuStep } from "../../Models/Wizard";
|
|
17
|
-
import SendFeedback from "./Feedback";
|
|
18
|
-
import { WalletsMenu } from "../Wallet/WalletComponents/ConnectedWallets";
|
|
19
10
|
const MenuList = ({ goToStep }) => {
|
|
20
11
|
const { email, userType, userId } = useAuthState();
|
|
21
12
|
const { setUserType } = useAuthDataUpdate();
|
|
@@ -41,51 +32,6 @@ const MenuList = ({ goToStep }) => {
|
|
|
41
32
|
const handleCloseFeedback = () => {
|
|
42
33
|
setOpenFeedbackModal(false);
|
|
43
34
|
};
|
|
44
|
-
return _jsx("div", { className: "text-sm font-medium focus:outline-none h-full", children: _jsxs(Menu, { children: [_jsx(
|
|
45
|
-
_jsx(Menu.Item, { onClick: () => goToStep(MenuStep.Campaigns, "/campaigns"), icon: _jsx(Gift, { className: "h-5 w-5" }), children: "Campaigns" }) })] }), _jsxs(Menu.Group, { children: [_jsx(Menu.Item, { onClick: () => {
|
|
46
|
-
boot();
|
|
47
|
-
show();
|
|
48
|
-
updateWithProps();
|
|
49
|
-
}, target: "_blank", icon: _jsx(ChatIcon, { strokeWidth: 2, className: "h-5 w-5" }), children: "Help" }), _jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/', target: "_blank", icon: _jsx(BookOpen, { className: "h-5 w-5" }), children: "Docs for Users" }), _jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/user-docs/partners-and-integrations/', target: "_blank", icon: _jsx(Users, { className: "h-5 w-5" }), children: "Docs for Partners" })] }), _jsxs(Menu.Group, { children: [_jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/user-docs/more-information/privacy-policy/', target: "_blank", icon: _jsx(Shield, { className: "h-5 w-5" }), children: "Privacy Policy" }), _jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/user-docs/more-information/terms-of-services/', target: "_blank", icon: _jsx(LibraryIcon, { className: "h-5 w-5" }), children: "Terms of Service" })] }), _jsx(Menu.Group, { children: _jsx(Popover, { opener: _jsx(Menu.Item, { onClick: () => setOpenFeedbackModal(true), target: "_blank", icon: _jsx(MessageSquarePlus, { className: "h-5 w-5" }), children: "Suggest a Feature" }), isNested: true, show: openFeedbackModal, header: "Suggest a Feature", setShow: setOpenFeedbackModal, popoverId: "feedback", children: _jsx("div", { className: "p-0 md:max-w-md", children: _jsx(SendFeedback, { onSend: handleCloseFeedback }) }) }) }), _jsxs("div", { className: "space-y-3 w-full", children: [_jsx("hr", { className: "border-secondary-500" }), _jsx("p", { className: "text-primary-text-muted flex justify-center my-3", children: "Media links & suggestions:" })] }), _jsx("div", { className: "grid grid-cols-2 gap-2 justify-center", children: navigation.social.map((item, index) => (_jsx("a", { target: "_blank", href: item.href, className: `flex relative bg-secondary-700 hover:bg-secondary-600 rounded-md cursor-pointer select-none items-center outline-none text-primary-text ${item.className}`, children: _jsxs("div", { className: "p-2 w-full flex justify-center gap-1", children: [_jsx(item.icon, { className: "h-5 w-5", "aria-hidden": "true" }), _jsx("p", { children: item.name })] }) }, index))) })] }) });
|
|
50
|
-
};
|
|
51
|
-
const navigation = {
|
|
52
|
-
social: [
|
|
53
|
-
{
|
|
54
|
-
name: 'Twitter',
|
|
55
|
-
href: 'https://twitter.com/layerswap/',
|
|
56
|
-
icon: (props) => TwitterLogo(props),
|
|
57
|
-
className: 'plausible-event-name=Twitter'
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'GitHub',
|
|
61
|
-
href: 'https://github.com/layerswap/layerswapapp/',
|
|
62
|
-
icon: (props) => GitHubLogo(props),
|
|
63
|
-
className: 'plausible-event-name=GitHub'
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: 'Discord',
|
|
67
|
-
href: 'https://discord.com/invite/KhwYN35sHy/',
|
|
68
|
-
icon: (props) => DiscordLogo(props),
|
|
69
|
-
className: 'plausible-event-name=Discord'
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
name: 'YouTube',
|
|
73
|
-
href: 'https://www.youtube.com/@layerswaphq/',
|
|
74
|
-
icon: (props) => YoutubeLogo(props),
|
|
75
|
-
className: 'plausible-event-name=Youtube'
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: 'Substack',
|
|
79
|
-
href: 'https://layerswap.substack.com/',
|
|
80
|
-
icon: (props) => SubstackLogo(props),
|
|
81
|
-
className: 'plausible-event-name=Substack'
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: 'Roadmap',
|
|
85
|
-
href: 'https://layerswap.ducalis.io/roadmap/summary/',
|
|
86
|
-
icon: (props) => _jsx(Map, { ...props }),
|
|
87
|
-
className: 'plausible-event-name=Roadmap'
|
|
88
|
-
},
|
|
89
|
-
]
|
|
35
|
+
return _jsx("div", { className: "text-sm font-medium focus:outline-none h-full", children: _jsxs(Menu, { children: [_jsx(Menu.Group, { children: _jsx(_Fragment, { children: _jsx(Menu.Item, { onClick: () => goToStep(MenuStep.Transactions, "/transactions"), icon: _jsx(ScrollText, { className: "h-5 w-5" }), children: "Transactions" }) }) }), _jsx(Menu.Group, { children: _jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/', target: "_blank", icon: _jsx(BookOpen, { className: "h-5 w-5" }), children: "Docs" }) }), _jsxs(Menu.Group, { children: [_jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/user-docs/more-information/privacy-policy/', target: "_blank", icon: _jsx(Shield, { className: "h-5 w-5" }), children: "Privacy Policy" }), _jsx(Menu.Item, { pathname: 'https://docs.layerswap.io/user-docs/more-information/terms-of-services/', target: "_blank", icon: _jsx(LibraryIcon, { className: "h-5 w-5" }), children: "Terms of Service" })] })] }) });
|
|
90
36
|
};
|
|
91
37
|
export default MenuList;
|