@daimo/pay 0.3.21 → 1.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.
- package/build/index.d.ts +132 -301
- package/build/package.json.js +103 -0
- package/build/package.json.js.map +1 -0
- package/build/src/assets/ScanIconWithLogos.js +34 -0
- package/build/src/assets/ScanIconWithLogos.js.map +1 -0
- package/build/src/assets/browsers.js +13 -0
- package/build/src/assets/browsers.js.map +1 -0
- package/build/src/assets/chains.js +152 -0
- package/build/src/assets/chains.js.map +1 -0
- package/build/src/assets/coins.js +6 -0
- package/build/src/assets/coins.js.map +1 -0
- package/build/src/assets/crepe.js +8 -0
- package/build/src/assets/crepe.js.map +1 -0
- package/build/src/assets/icons.js +28 -0
- package/build/src/assets/icons.js.map +1 -0
- package/build/src/assets/logos.js +131 -0
- package/build/src/assets/logos.js.map +1 -0
- package/build/src/assets/wallet.js +8 -0
- package/build/src/assets/wallet.js.map +1 -0
- package/build/src/assets/wave.js +6 -0
- package/build/src/assets/wave.js.map +1 -0
- package/build/src/components/Common/Alert/index.js +10 -0
- package/build/src/components/Common/Alert/index.js.map +1 -0
- package/build/src/components/Common/Alert/styles.js +55 -0
- package/build/src/components/Common/Alert/styles.js.map +1 -0
- package/build/src/components/Common/Avatar/index.js +66 -0
- package/build/src/components/Common/Avatar/index.js.map +1 -0
- package/build/src/components/Common/Avatar/styles.js +59 -0
- package/build/src/components/Common/Avatar/styles.js.map +1 -0
- package/build/src/components/Common/BrowserIcon/index.js +28 -0
- package/build/src/components/Common/BrowserIcon/index.js.map +1 -0
- package/build/src/components/Common/BrowserIcon/styles.js +20 -0
- package/build/src/components/Common/BrowserIcon/styles.js.map +1 -0
- package/build/src/components/Common/Button/index.js +38 -0
- package/build/src/components/Common/Button/index.js.map +1 -0
- package/build/src/components/Common/Button/styles.js +291 -0
- package/build/src/components/Common/Button/styles.js.map +1 -0
- package/build/src/components/Common/Chain/index.js +25 -0
- package/build/src/components/Common/Chain/index.js.map +1 -0
- package/build/src/components/Common/Chain/styles.js +94 -0
- package/build/src/components/Common/Chain/styles.js.map +1 -0
- package/build/src/components/Common/ChainSelectList/index.js +107 -0
- package/build/src/components/Common/ChainSelectList/index.js.map +1 -0
- package/build/src/components/Common/ChainSelectList/styles.js +228 -0
- package/build/src/components/Common/ChainSelectList/styles.js.map +1 -0
- package/build/src/components/Common/ConnectorList/index.js +70 -0
- package/build/src/components/Common/ConnectorList/index.js.map +1 -0
- package/build/src/components/Common/ConnectorList/styles.js +314 -0
- package/build/src/components/Common/ConnectorList/styles.js.map +1 -0
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +71 -0
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
- package/build/src/components/Common/CopyToClipboard/index.js +51 -0
- package/build/src/components/Common/CopyToClipboard/index.js.map +1 -0
- package/build/src/components/Common/CustomQRCode/QRCode.js +69 -0
- package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
- package/build/src/components/Common/CustomQRCode/index.js +22 -0
- package/build/src/components/Common/CustomQRCode/index.js.map +1 -0
- package/build/src/components/Common/CustomQRCode/styles.js +155 -0
- package/build/src/components/Common/CustomQRCode/styles.js.map +1 -0
- package/build/src/components/Common/FitText/index.js +27 -0
- package/build/src/components/Common/FitText/index.js.map +1 -0
- package/build/src/components/Common/Modal/index.js +297 -0
- package/build/src/components/Common/Modal/index.js.map +1 -0
- package/build/src/components/Common/Modal/styles.js +660 -0
- package/build/src/components/Common/Modal/styles.js.map +1 -0
- package/build/src/components/Common/OptionsList/index.js +106 -0
- package/build/src/components/Common/OptionsList/index.js.map +1 -0
- package/build/src/components/Common/OptionsList/styles.js +165 -0
- package/build/src/components/Common/OptionsList/styles.js.map +1 -0
- package/build/src/components/Common/OrderHeader/index.js +215 -0
- package/build/src/components/Common/OrderHeader/index.js.map +1 -0
- package/build/src/components/Common/Portal/index.js +31 -0
- package/build/src/components/Common/Portal/index.js.map +1 -0
- package/build/src/components/Common/PoweredByFooter/index.js +44 -0
- package/build/src/components/Common/PoweredByFooter/index.js.map +1 -0
- package/build/src/components/Common/ScrollArea/index.js +62 -0
- package/build/src/components/Common/ScrollArea/index.js.map +1 -0
- package/build/src/components/Common/ScrollArea/styles.js +168 -0
- package/build/src/components/Common/ScrollArea/styles.js.map +1 -0
- package/build/src/components/Common/Spinner/index.js +24 -0
- package/build/src/components/Common/Spinner/index.js.map +1 -0
- package/build/src/components/Common/Spinner/styles.js +22 -0
- package/build/src/components/Common/Spinner/styles.js.map +1 -0
- package/build/src/components/Common/ThemedButton/index.js +25 -0
- package/build/src/components/Common/ThemedButton/index.js.map +1 -0
- package/build/src/components/Common/ThemedButton/styles.js +152 -0
- package/build/src/components/Common/ThemedButton/styles.js.map +1 -0
- package/build/src/components/Common/Tooltip/index.js +97 -0
- package/build/src/components/Common/Tooltip/index.js.map +1 -0
- package/build/src/components/Common/Tooltip/styles.js +81 -0
- package/build/src/components/Common/Tooltip/styles.js.map +1 -0
- package/build/src/components/DaimoPay.js +232 -0
- package/build/src/components/DaimoPay.js.map +1 -0
- package/build/src/components/DaimoPayButton/index.js +133 -0
- package/build/src/components/DaimoPayButton/index.js.map +1 -0
- package/build/src/components/DaimoPayButton/styles.js +50 -0
- package/build/src/components/DaimoPayButton/styles.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectUsing.js +45 -0
- package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +202 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +133 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +75 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
- package/build/src/components/DaimoPayModal/index.js +140 -0
- package/build/src/components/DaimoPayModal/index.js.map +1 -0
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +21 -0
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
- package/build/src/components/Pages/About/graphics.js +187 -0
- package/build/src/components/Pages/About/graphics.js.map +1 -0
- package/build/src/components/Pages/About/index.js +131 -0
- package/build/src/components/Pages/About/index.js.map +1 -0
- package/build/src/components/Pages/About/styles.js +144 -0
- package/build/src/components/Pages/About/styles.js.map +1 -0
- package/build/src/components/Pages/Confirmation/index.js +105 -0
- package/build/src/components/Pages/Confirmation/index.js.map +1 -0
- package/build/src/components/Pages/Connectors/index.js +20 -0
- package/build/src/components/Pages/Connectors/index.js.map +1 -0
- package/build/src/components/Pages/Connectors/styles.js +267 -0
- package/build/src/components/Pages/Connectors/styles.js.map +1 -0
- package/build/src/components/Pages/DownloadApp/index.js +30 -0
- package/build/src/components/Pages/DownloadApp/index.js.map +1 -0
- package/build/src/components/Pages/MobileConnectors/index.js +73 -0
- package/build/src/components/Pages/MobileConnectors/index.js.map +1 -0
- package/build/src/components/Pages/MobileConnectors/styles.js +65 -0
- package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -0
- package/build/src/components/Pages/Onboarding/index.js +18 -0
- package/build/src/components/Pages/Onboarding/index.js.map +1 -0
- package/build/src/components/Pages/Onboarding/styles.js +229 -0
- package/build/src/components/Pages/Onboarding/styles.js.map +1 -0
- package/build/src/components/Pages/PayWithToken/index.js +204 -0
- package/build/src/components/Pages/PayWithToken/index.js.map +1 -0
- package/build/src/components/Pages/SelectDepositAddressChain/index.js +32 -0
- package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
- package/build/src/components/Pages/SelectMethod/index.js +113 -0
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -0
- package/build/src/components/Pages/SelectToken/index.js +62 -0
- package/build/src/components/Pages/SelectToken/index.js.map +1 -0
- package/build/src/components/Pages/Solana/ConnectSolana/index.js +37 -0
- package/build/src/components/Pages/Solana/ConnectSolana/index.js.map +1 -0
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js +45 -0
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +85 -0
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
- package/build/src/components/Pages/Solana/SelectSolanaToken/index.js +38 -0
- package/build/src/components/Pages/Solana/SelectSolanaToken/index.js.map +1 -0
- package/build/src/components/Pages/SwitchNetworks/index.js +26 -0
- package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -0
- package/build/src/components/Pages/WaitingDepositAddress/index.js +51 -0
- package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
- package/build/src/components/Pages/WaitingOther/index.js +91 -0
- package/build/src/components/Pages/WaitingOther/index.js.map +1 -0
- package/build/src/components/Spinners/CircleSpinner/index.js +15 -0
- package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -0
- package/build/src/components/Spinners/CircleSpinner/styles.js +118 -0
- package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
- package/build/src/components/Spinners/SquircleSpinner/index.js +15 -0
- package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
- package/build/src/components/Spinners/SquircleSpinner/styles.js +66 -0
- package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
- package/build/src/components/contexts/solana/index.js +11 -0
- package/build/src/components/contexts/solana/index.js.map +1 -0
- package/build/src/components/contexts/web3/index.js +46 -0
- package/build/src/components/contexts/web3/index.js.map +1 -0
- package/build/src/constants/chainConfigs.js +306 -0
- package/build/src/constants/chainConfigs.js.map +1 -0
- package/build/src/constants/defaultTheme.js +6 -0
- package/build/src/constants/defaultTheme.js.map +1 -0
- package/build/src/defaultConfig.js +59 -0
- package/build/src/defaultConfig.js.map +1 -0
- package/build/src/defaultConnectors.js +43 -0
- package/build/src/defaultConnectors.js.map +1 -0
- package/build/src/hooks/connectors/useWalletConnectUri.js +93 -0
- package/build/src/hooks/connectors/useWalletConnectUri.js.map +1 -0
- package/build/src/hooks/useChainIsSupported.js +12 -0
- package/build/src/hooks/useChainIsSupported.js.map +1 -0
- package/build/src/hooks/useChains.js +11 -0
- package/build/src/hooks/useChains.js.map +1 -0
- package/build/src/hooks/useConnect.js +45 -0
- package/build/src/hooks/useConnect.js.map +1 -0
- package/build/src/hooks/useConnectCallback.js +18 -0
- package/build/src/hooks/useConnectCallback.js.map +1 -0
- package/build/src/hooks/useConnectors.js +29 -0
- package/build/src/hooks/useConnectors.js.map +1 -0
- package/build/src/hooks/useDaimoPayStatus.js +37 -0
- package/build/src/hooks/useDaimoPayStatus.js.map +1 -0
- package/build/src/hooks/useDepositAddressOptions.js +28 -0
- package/build/src/hooks/useDepositAddressOptions.js.map +1 -0
- package/build/src/hooks/useEnsFallbackConfig.js +16 -0
- package/build/src/hooks/useEnsFallbackConfig.js.map +1 -0
- package/build/src/hooks/useExternalPaymentOptions.js +46 -0
- package/build/src/hooks/useExternalPaymentOptions.js.map +1 -0
- package/build/src/hooks/useFitText.js +148 -0
- package/build/src/hooks/useFitText.js.map +1 -0
- package/build/src/hooks/useFocusTrap.js +60 -0
- package/build/src/hooks/useFocusTrap.js.map +1 -0
- package/build/src/hooks/useGoogleFont.js +45 -0
- package/build/src/hooks/useGoogleFont.js.map +1 -0
- package/build/src/hooks/useIsMobile.js +17 -0
- package/build/src/hooks/useIsMobile.js.map +1 -0
- package/build/src/hooks/useIsMounted.js +12 -0
- package/build/src/hooks/useIsMounted.js.map +1 -0
- package/build/src/hooks/useLastConnector.js +24 -0
- package/build/src/hooks/useLastConnector.js.map +1 -0
- package/build/src/hooks/useLocales.js +67 -0
- package/build/src/hooks/useLocales.js.map +1 -0
- package/build/src/hooks/useLockBodyScroll.js +53 -0
- package/build/src/hooks/useLockBodyScroll.js.map +1 -0
- package/build/src/hooks/useModal.js +35 -0
- package/build/src/hooks/useModal.js.map +1 -0
- package/build/src/hooks/usePayWithSolanaToken.js +50 -0
- package/build/src/hooks/usePayWithSolanaToken.js.map +1 -0
- package/build/src/hooks/usePayWithToken.js +57 -0
- package/build/src/hooks/usePayWithToken.js.map +1 -0
- package/build/src/hooks/usePaymentState.js +243 -0
- package/build/src/hooks/usePaymentState.js.map +1 -0
- package/build/src/hooks/usePrevious.js +14 -0
- package/build/src/hooks/usePrevious.js.map +1 -0
- package/build/src/hooks/useSolanaPaymentOptions.js +37 -0
- package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -0
- package/build/src/hooks/useWalletConnectModal.js +52 -0
- package/build/src/hooks/useWalletConnectModal.js.map +1 -0
- package/build/src/hooks/useWalletPaymentOptions.js +40 -0
- package/build/src/hooks/useWalletPaymentOptions.js.map +1 -0
- package/build/src/hooks/useWindowSize.js +23 -0
- package/build/src/hooks/useWindowSize.js.map +1 -0
- package/build/src/index.js +10 -0
- package/build/src/index.js.map +1 -0
- package/build/src/localizations/index.js +57 -0
- package/build/src/localizations/index.js.map +1 -0
- package/build/src/localizations/locales/ar-AE.js +97 -0
- package/build/src/localizations/locales/ar-AE.js.map +1 -0
- package/build/src/localizations/locales/ca-AD.js +95 -0
- package/build/src/localizations/locales/ca-AD.js.map +1 -0
- package/build/src/localizations/locales/ee-EE.js +95 -0
- package/build/src/localizations/locales/ee-EE.js.map +1 -0
- package/build/src/localizations/locales/en-US.js +95 -0
- package/build/src/localizations/locales/en-US.js.map +1 -0
- package/build/src/localizations/locales/es-ES.js +95 -0
- package/build/src/localizations/locales/es-ES.js.map +1 -0
- package/build/src/localizations/locales/fa-IR.js +95 -0
- package/build/src/localizations/locales/fa-IR.js.map +1 -0
- package/build/src/localizations/locales/fr-FR.js +95 -0
- package/build/src/localizations/locales/fr-FR.js.map +1 -0
- package/build/src/localizations/locales/ja-JP.js +95 -0
- package/build/src/localizations/locales/ja-JP.js.map +1 -0
- package/build/src/localizations/locales/pt-BR.js +95 -0
- package/build/src/localizations/locales/pt-BR.js.map +1 -0
- package/build/src/localizations/locales/ru-RU.js +95 -0
- package/build/src/localizations/locales/ru-RU.js.map +1 -0
- package/build/src/localizations/locales/tr-TR.js +95 -0
- package/build/src/localizations/locales/tr-TR.js.map +1 -0
- package/build/src/localizations/locales/vi-VN.js +95 -0
- package/build/src/localizations/locales/vi-VN.js.map +1 -0
- package/build/src/localizations/locales/zh-CN.js +95 -0
- package/build/src/localizations/locales/zh-CN.js.map +1 -0
- package/build/src/styles/defaultTheme.js +89 -0
- package/build/src/styles/defaultTheme.js.map +1 -0
- package/build/src/styles/index.js +329 -0
- package/build/src/styles/index.js.map +1 -0
- package/build/src/styles/styled/index.js +16 -0
- package/build/src/styles/styled/index.js.map +1 -0
- package/build/src/styles/themes/base.js +141 -0
- package/build/src/styles/themes/base.js.map +1 -0
- package/build/src/styles/themes/index.js +13 -0
- package/build/src/styles/themes/index.js.map +1 -0
- package/build/src/styles/themes/midnight.js +76 -0
- package/build/src/styles/themes/midnight.js.map +1 -0
- package/build/src/styles/themes/minimal.js +96 -0
- package/build/src/styles/themes/minimal.js.map +1 -0
- package/build/src/styles/themes/nouns.js +81 -0
- package/build/src/styles/themes/nouns.js.map +1 -0
- package/build/src/styles/themes/retro.js +106 -0
- package/build/src/styles/themes/retro.js.map +1 -0
- package/build/src/styles/themes/rounded.js +106 -0
- package/build/src/styles/themes/rounded.js.map +1 -0
- package/build/src/styles/themes/soft.js +71 -0
- package/build/src/styles/themes/soft.js.map +1 -0
- package/build/src/styles/themes/web95.js +132 -0
- package/build/src/styles/themes/web95.js.map +1 -0
- package/build/src/utils/exports.js +12 -0
- package/build/src/utils/exports.js.map +1 -0
- package/build/src/utils/index.js +39 -0
- package/build/src/utils/index.js.map +1 -0
- package/build/src/utils/p3.js +16 -0
- package/build/src/utils/p3.js.map +1 -0
- package/build/src/utils/platform.js +13 -0
- package/build/src/utils/platform.js.map +1 -0
- package/build/src/utils/trpc.js +14 -0
- package/build/src/utils/trpc.js.map +1 -0
- package/build/src/utils/wallets.js +14 -0
- package/build/src/utils/wallets.js.map +1 -0
- package/build/src/wallets/index.js +32 -0
- package/build/src/wallets/index.js.map +1 -0
- package/build/src/wallets/useWallets.js +86 -0
- package/build/src/wallets/useWallets.js.map +1 -0
- package/build/src/wallets/walletConfigs.js +362 -0
- package/build/src/wallets/walletConfigs.js.map +1 -0
- package/package.json +5 -5
- package/build/index.es.js +0 -11565
- package/build/index.es.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BrowserIconContainer } from './styles.js';
|
|
4
|
+
import browsers from '../../../assets/browsers.js';
|
|
5
|
+
import { detectBrowser } from '../../../utils/index.js';
|
|
6
|
+
|
|
7
|
+
const BrowserIcon = React.forwardRef(({ browser }, ref) => {
|
|
8
|
+
const currentBrowser = browser ?? detectBrowser();
|
|
9
|
+
let icon;
|
|
10
|
+
switch (currentBrowser) {
|
|
11
|
+
case "chrome":
|
|
12
|
+
icon = browsers.Chrome;
|
|
13
|
+
break;
|
|
14
|
+
case "firefox":
|
|
15
|
+
icon = browsers.FireFox;
|
|
16
|
+
break;
|
|
17
|
+
case "edge":
|
|
18
|
+
icon = browsers.Edge;
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
if (!icon)
|
|
22
|
+
return jsx(Fragment, {});
|
|
23
|
+
return jsx(BrowserIconContainer, { children: icon });
|
|
24
|
+
});
|
|
25
|
+
BrowserIcon.displayName = "BrowserIcon";
|
|
26
|
+
|
|
27
|
+
export { BrowserIcon as default };
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import styled from '../../../styles/styled/index.js';
|
|
3
|
+
|
|
4
|
+
const BrowserIconContainer = styled(motion.div) `
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
max-width: 32px;
|
|
9
|
+
max-height: 32px;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
svg {
|
|
13
|
+
display: block;
|
|
14
|
+
width: 100%;
|
|
15
|
+
height: 100%;
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
export { BrowserIconContainer };
|
|
20
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { AnimatePresence } from 'framer-motion';
|
|
3
|
+
import { flattenChildren } from '../../../utils/index.js';
|
|
4
|
+
import FitText from '../FitText/index.js';
|
|
5
|
+
import { Spinner } from '../Spinner/index.js';
|
|
6
|
+
import { ButtonContainer, ButtonContainerInner, IconContainer, DownloadArrow, DownloadArrowInner, Arrow, ArrowLine, ArrowChevron, InnerContainer, SpinnerContainer } from './styles.js';
|
|
7
|
+
|
|
8
|
+
const transition = {
|
|
9
|
+
duration: 0.4,
|
|
10
|
+
ease: [0.175, 0.885, 0.32, 0.98],
|
|
11
|
+
};
|
|
12
|
+
const Button = ({ children, variant = "secondary", // unique aspect to how we're handling buttons
|
|
13
|
+
disabled, icon, iconPosition = "left", roundedIcon, waiting, arrow, download, href, style, onClick, }) => {
|
|
14
|
+
const key = typeof children === "string"
|
|
15
|
+
? children
|
|
16
|
+
: flattenChildren(children).join(""); // Need to generate a string for the key so we can automatically animate between content
|
|
17
|
+
const hrefUrl = typeof href === "string" ? href : flattenChildren(href).join(""); // Need to have a flat string for the href
|
|
18
|
+
return (jsx(ButtonContainer, { as: href ? "a" : undefined, onClick: (event) => {
|
|
19
|
+
if (!disabled && onClick)
|
|
20
|
+
onClick(event);
|
|
21
|
+
}, href: hrefUrl, target: href && "_blank", rel: href && "noopener noreferrer", disabled: disabled, "$variant": variant, style: style, children: jsxs(AnimatePresence, { initial: false, children: [jsxs(ButtonContainerInner, { initial: { opacity: 0, y: -10 }, animate: {
|
|
22
|
+
opacity: 1,
|
|
23
|
+
y: -1,
|
|
24
|
+
}, exit: {
|
|
25
|
+
position: "absolute",
|
|
26
|
+
opacity: 0,
|
|
27
|
+
y: 10,
|
|
28
|
+
transition: {
|
|
29
|
+
...transition,
|
|
30
|
+
},
|
|
31
|
+
}, transition: {
|
|
32
|
+
...transition,
|
|
33
|
+
delay: 0.2,
|
|
34
|
+
}, children: [icon && iconPosition === "left" && (jsx(IconContainer, { "$rounded": roundedIcon, children: icon })), download && (jsx(DownloadArrow, { children: jsx(DownloadArrowInner, { children: jsxs(Arrow, { width: "13", height: "12", viewBox: "0 0 13 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx(ArrowLine, { stroke: "currentColor", x1: "1", y1: "6", x2: "12", y2: "6", strokeWidth: "var(--stroke-width)", strokeLinecap: "round" }), jsx(ArrowChevron, { stroke: "currentColor", d: "M7.51431 1.5L11.757 5.74264M7.5 10.4858L11.7426 6.24314", strokeWidth: "var(--stroke-width)", strokeLinecap: "round" })] }) }) })), jsx(InnerContainer, { style: { paddingLeft: arrow ? 6 : 0 }, children: jsx(FitText, { children: children }) }), icon && iconPosition === "right" && (jsx(IconContainer, { "$rounded": roundedIcon, children: icon })), arrow && (jsxs(Arrow, { width: "13", height: "12", viewBox: "0 0 13 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx(ArrowLine, { stroke: "currentColor", x1: "1", y1: "6", x2: "12", y2: "6", strokeWidth: "2", strokeLinecap: "round" }), jsx(ArrowChevron, { stroke: "currentColor", d: "M7.51431 1.5L11.757 5.74264M7.5 10.4858L11.7426 6.24314", strokeWidth: "2", strokeLinecap: "round" })] }))] }, key), waiting && (jsx(SpinnerContainer, { children: jsx(Spinner, {}) }))] }) }));
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { Button as default };
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import { css } from 'styled-components';
|
|
3
|
+
import defaultTheme from '../../../constants/defaultTheme.js';
|
|
4
|
+
import styled from '../../../styles/styled/index.js';
|
|
5
|
+
|
|
6
|
+
const SpinnerContainer = styled(motion.div) `
|
|
7
|
+
position: absolute;
|
|
8
|
+
right: 16px;
|
|
9
|
+
top: 0;
|
|
10
|
+
bottom: 0;
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
`;
|
|
15
|
+
const Arrow = styled.svg `
|
|
16
|
+
--x: -3px;
|
|
17
|
+
--stroke-width: 2;
|
|
18
|
+
position: relative;
|
|
19
|
+
top: 1px;
|
|
20
|
+
left: -0.5px;
|
|
21
|
+
display: inline-block;
|
|
22
|
+
vertical-align: middle;
|
|
23
|
+
margin-left: 9px;
|
|
24
|
+
margin-right: 1px;
|
|
25
|
+
transition: all 100ms ease;
|
|
26
|
+
transform: translateX(var(--x, -3px));
|
|
27
|
+
color: currentColor;
|
|
28
|
+
opacity: 0.4;
|
|
29
|
+
`;
|
|
30
|
+
const ArrowChevron = styled.path ``;
|
|
31
|
+
const ArrowLine = styled.line `
|
|
32
|
+
transition: inherit;
|
|
33
|
+
transition-property: transform;
|
|
34
|
+
transform-origin: 90% 50%;
|
|
35
|
+
transform: scaleX(0.1);
|
|
36
|
+
`;
|
|
37
|
+
const DownloadArrow = styled.div `
|
|
38
|
+
display: inline-block;
|
|
39
|
+
vertical-align: middle;
|
|
40
|
+
position: relative;
|
|
41
|
+
margin-right: 6px;
|
|
42
|
+
color: currentColor;
|
|
43
|
+
`;
|
|
44
|
+
const DownloadArrowInner = styled.div `
|
|
45
|
+
transform: rotate(90deg);
|
|
46
|
+
${Arrow} {
|
|
47
|
+
margin: 0 auto;
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
const ButtonContainerInner = styled(motion.div) `
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
inset: 0;
|
|
55
|
+
height: 100%;
|
|
56
|
+
`;
|
|
57
|
+
const ButtonContainer = styled.button `
|
|
58
|
+
|
|
59
|
+
${({ disabled }) => disabled &&
|
|
60
|
+
css `
|
|
61
|
+
cursor: not-allowed;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
${InnerContainer} {
|
|
64
|
+
opacity: 0.4;
|
|
65
|
+
}
|
|
66
|
+
`}
|
|
67
|
+
|
|
68
|
+
${({ $variant }) => {
|
|
69
|
+
if ($variant === "primary") {
|
|
70
|
+
return css `
|
|
71
|
+
--color: var(--ck-primary-button-color, var(--ck-body-color));
|
|
72
|
+
--background: var(
|
|
73
|
+
--ck-primary-button-background,
|
|
74
|
+
var(--ck-body-background-primary)
|
|
75
|
+
);
|
|
76
|
+
--box-shadow: var(--ck-primary-button-box-shadow);
|
|
77
|
+
--border-radius: var(--ck-primary-button-border-radius);
|
|
78
|
+
--font-weight: var(--ck-primary-button-font-weight, 500);
|
|
79
|
+
|
|
80
|
+
--hover-color: var(--ck-button-primary-hover-color, var(--color));
|
|
81
|
+
--hover-background: var(
|
|
82
|
+
--ck-primary-button-hover-background,
|
|
83
|
+
var(--background)
|
|
84
|
+
);
|
|
85
|
+
--hover-box-shadow: var(
|
|
86
|
+
--ck-primary-button-hover-box-shadow,
|
|
87
|
+
var(--box-shadow)
|
|
88
|
+
);
|
|
89
|
+
--hover-border-radius: var(
|
|
90
|
+
--ck-primary-button-hover-border-radius,
|
|
91
|
+
var(--border-radius)
|
|
92
|
+
);
|
|
93
|
+
--hover-font-weight: var(
|
|
94
|
+
--ck-primary-button-font-weight,
|
|
95
|
+
var(--font-weight)
|
|
96
|
+
);
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
99
|
+
else if ($variant === "secondary") {
|
|
100
|
+
return css `
|
|
101
|
+
--color: var(--ck-secondary-button-color, var(--ck-body-color));
|
|
102
|
+
--background: var(
|
|
103
|
+
--ck-secondary-button-background,
|
|
104
|
+
var(--ck-body-background-secondary)
|
|
105
|
+
);
|
|
106
|
+
--box-shadow: var(--ck-secondary-button-box-shadow);
|
|
107
|
+
--border-radius: var(--ck-secondary-button-border-radius);
|
|
108
|
+
--font-weight: var(--ck-secondary-button-font-weight, 500);
|
|
109
|
+
|
|
110
|
+
--hover-color: var(--ck-secondary-button-hover-color, var(--color));
|
|
111
|
+
--hover-background: var(
|
|
112
|
+
--ck-secondary-button-hover-background,
|
|
113
|
+
var(--background)
|
|
114
|
+
);
|
|
115
|
+
--hover-box-shadow: var(
|
|
116
|
+
--ck-secondary-button-hover-box-shadow,
|
|
117
|
+
var(--box-shadow)
|
|
118
|
+
);
|
|
119
|
+
--hover-border-radius: var(
|
|
120
|
+
--ck-secondary-button-hover-border-radius,
|
|
121
|
+
var(--border-radius)
|
|
122
|
+
);
|
|
123
|
+
--hover-font-weight: var(
|
|
124
|
+
--ck-secondary-button-font-weight,
|
|
125
|
+
var(--font-weight)
|
|
126
|
+
);
|
|
127
|
+
`;
|
|
128
|
+
}
|
|
129
|
+
else if ($variant === "tertiary") {
|
|
130
|
+
return css `
|
|
131
|
+
--color: var(
|
|
132
|
+
--ck-tertiary-button-color,
|
|
133
|
+
var(--ck-secondary-button-color)
|
|
134
|
+
);
|
|
135
|
+
--background: var(
|
|
136
|
+
--ck-tertiary-button-background,
|
|
137
|
+
var(--ck-secondary-button-background)
|
|
138
|
+
);
|
|
139
|
+
--box-shadow: var(
|
|
140
|
+
--ck-tertiary-button-box-shadow,
|
|
141
|
+
var(--ck-secondary-button-box-shadow)
|
|
142
|
+
);
|
|
143
|
+
--border-radius: var(
|
|
144
|
+
--ck-tertiary-button-border-radius,
|
|
145
|
+
var(--ck-secondary-button-border-radius)
|
|
146
|
+
);
|
|
147
|
+
--font-weight: var(
|
|
148
|
+
--ck-tertiary-button-font-weight,
|
|
149
|
+
var(--ck-secondary-button-font-weight)
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
--hover-color: var(
|
|
153
|
+
--button-tertiary-hover-color,
|
|
154
|
+
var(--ck-tertiary-button-color)
|
|
155
|
+
);
|
|
156
|
+
--hover-background: var(
|
|
157
|
+
--ck-tertiary-button-hover-background,
|
|
158
|
+
var(--ck-tertiary-button-background)
|
|
159
|
+
);
|
|
160
|
+
--hover-box-shadow: var(
|
|
161
|
+
--ck-tertiary-button-hover-box-shadow,
|
|
162
|
+
var(--ck-tertiary-button-box-shadow)
|
|
163
|
+
);
|
|
164
|
+
--hover-border-radius: var(
|
|
165
|
+
--ck-tertiary-button-hover-border-radius,
|
|
166
|
+
var(--ck-tertiary-button-border-radius, var(--border-radius))
|
|
167
|
+
);
|
|
168
|
+
--hover-font-weight: var(
|
|
169
|
+
--ck-tertiary-button-font-weight,
|
|
170
|
+
var(--ck-secondary-button-font-weight)
|
|
171
|
+
);
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
}}
|
|
175
|
+
|
|
176
|
+
appearance: none;
|
|
177
|
+
cursor: pointer;
|
|
178
|
+
user-select: none;
|
|
179
|
+
min-width: fit-content;
|
|
180
|
+
width: 100%;
|
|
181
|
+
display:block;
|
|
182
|
+
text-align: center;
|
|
183
|
+
height: 48px;
|
|
184
|
+
margin: 12px 0 0;
|
|
185
|
+
line-height: 48px;
|
|
186
|
+
padding: 0 4px;
|
|
187
|
+
font-size: 16px;
|
|
188
|
+
font-weight: var(--font-weight,500);
|
|
189
|
+
text-decoration: none;
|
|
190
|
+
white-space: nowrap;
|
|
191
|
+
transition: 100ms ease;
|
|
192
|
+
transition-property: box-shadow, background-color;
|
|
193
|
+
color: var(--color);
|
|
194
|
+
background: var(--background);
|
|
195
|
+
border-radius: var(--border-radius);
|
|
196
|
+
box-shadow: var(--box-shadow);
|
|
197
|
+
will-change: transform, box-shadow, background-color, color;
|
|
198
|
+
|
|
199
|
+
${DownloadArrow} {
|
|
200
|
+
${Arrow} {
|
|
201
|
+
transform: translateX(0);
|
|
202
|
+
${ArrowLine} {
|
|
203
|
+
transform: none;
|
|
204
|
+
}
|
|
205
|
+
${ArrowChevron} {
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
@media only screen and (min-width: ${defaultTheme.mobileWidth + 1}px) {
|
|
212
|
+
&:hover,
|
|
213
|
+
&:focus-visible {
|
|
214
|
+
color: var(--ck-accent-text-color, var(--hover-color));
|
|
215
|
+
background: var(--ck-accent-color, var(--hover-background));
|
|
216
|
+
border-radius: var(--hover-border-radius);
|
|
217
|
+
box-shadow: var(--hover-box-shadow);
|
|
218
|
+
|
|
219
|
+
${Arrow} {
|
|
220
|
+
transform: translateX(0);
|
|
221
|
+
${ArrowLine} {
|
|
222
|
+
transform: none;
|
|
223
|
+
}
|
|
224
|
+
${ArrowChevron} {
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
${DownloadArrow} {
|
|
228
|
+
${Arrow} {
|
|
229
|
+
transform: translateX(var(--x));
|
|
230
|
+
${ArrowLine} {
|
|
231
|
+
transform: scaleX(0.1);
|
|
232
|
+
}
|
|
233
|
+
${ArrowChevron} {
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
&:active {
|
|
239
|
+
box-shadow: var(--ck-secondary-button-active-box-shadow, var(--hover-box-shadow));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
@media only screen and (max-width: ${defaultTheme.mobileWidth}px) {
|
|
243
|
+
transition: transform 100ms ease;
|
|
244
|
+
transform: scale(1);
|
|
245
|
+
font-size: 17px;
|
|
246
|
+
&:active {
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
`;
|
|
250
|
+
const InnerContainer = styled.div `
|
|
251
|
+
transform: translateZ(0); // Shifting fix
|
|
252
|
+
position: relative;
|
|
253
|
+
display: inline-block;
|
|
254
|
+
vertical-align: middle;
|
|
255
|
+
max-width: calc(100% - 42px);
|
|
256
|
+
transition: opacity 300ms ease;
|
|
257
|
+
/*
|
|
258
|
+
overflow: hidden;
|
|
259
|
+
text-overflow: ellipsis;
|
|
260
|
+
*/
|
|
261
|
+
`;
|
|
262
|
+
const IconContainer = styled(motion.div) `
|
|
263
|
+
position: relative;
|
|
264
|
+
display: inline-block;
|
|
265
|
+
vertical-align: middle;
|
|
266
|
+
max-width: 20px;
|
|
267
|
+
max-height: 20px;
|
|
268
|
+
margin: 0 10px;
|
|
269
|
+
&:first-child {
|
|
270
|
+
margin-left: 0;
|
|
271
|
+
}
|
|
272
|
+
&:last-child {
|
|
273
|
+
margin-right: 0;
|
|
274
|
+
}
|
|
275
|
+
${(props) => {
|
|
276
|
+
return (props.$rounded &&
|
|
277
|
+
css `
|
|
278
|
+
overflow: hidden;
|
|
279
|
+
border-radius: 5px;
|
|
280
|
+
`);
|
|
281
|
+
}}
|
|
282
|
+
svg {
|
|
283
|
+
display: block;
|
|
284
|
+
position: relative;
|
|
285
|
+
max-width: 100%;
|
|
286
|
+
height: auto;
|
|
287
|
+
}
|
|
288
|
+
`;
|
|
289
|
+
|
|
290
|
+
export { Arrow, ArrowChevron, ArrowLine, ButtonContainer, ButtonContainerInner, DownloadArrow, DownloadArrowInner, IconContainer, InnerContainer, SpinnerContainer };
|
|
291
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { AnimatePresence } from 'framer-motion';
|
|
3
|
+
import Chains from '../../../assets/chains.js';
|
|
4
|
+
import { chainConfigs } from '../../../constants/chainConfigs.js';
|
|
5
|
+
import { useChainIsSupported } from '../../../hooks/useChainIsSupported.js';
|
|
6
|
+
import useIsMounted from '../../../hooks/useIsMounted.js';
|
|
7
|
+
import { ChainContainer, Unsupported, LogoContainer, LoadingContainer } from './styles.js';
|
|
8
|
+
|
|
9
|
+
const Spinner = (jsxs("svg", { "aria-hidden": "true", width: "36", height: "36", viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.3592 30.1654C10.0472 29.4491 8.85718 28.524 7.83713 27.424C6.81708 26.324 5.98425 25.0677 5.36889 23.7054C5.20157 23.335 5.05033 22.9567 4.91578 22.5717C4.51465 21.4237 4.26735 20.2308 4.17794 19.0239C4.16599 18.8626 4.13894 18.7041 4.09809 18.5507C3.85023 17.6197 3.09399 16.8738 2.11531 16.7999C0.975331 16.7138 -0.0310983 17.5702 0.0141657 18.7125C0.0223289 18.9185 0.0340286 19.1243 0.049253 19.3298C0.165374 20.8971 0.486545 22.4464 1.00749 23.9373C1.10424 24.2142 1.20764 24.4884 1.31755 24.7596C2.13617 26.7799 3.31595 28.6371 4.80146 30.239C6.28696 31.841 8.04998 33.1573 10.0029 34.1258C10.2651 34.2558 10.5307 34.3796 10.7995 34.4969C12.247 35.1287 13.7676 35.5656 15.3217 35.7995C15.5255 35.8301 15.7298 35.8573 15.9346 35.881C17.0703 36.0122 18.0001 35.0731 18.0001 33.9299C18.0001 32.9484 17.3133 32.1381 16.4036 31.8208C16.2537 31.7685 16.0977 31.7296 15.9377 31.7056C14.7411 31.5255 13.5702 31.1891 12.4556 30.7026C12.0818 30.5394 11.716 30.3601 11.3592 30.1654Z", fill: "url(#paint0_linear_1288_1870)" }), jsx("defs", { children: jsxs("linearGradient", { id: "paint0_linear_1288_1870", x1: "2", y1: "19.4884", x2: "16.8752", y2: "33.7485", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "var(--ck-connectbutton-balance-color,currentColor)", stopOpacity: "0.7" }), jsx("stop", { offset: "1", stopColor: "var(--ck-connectbutton-balance-color,currentColor)", stopOpacity: "0" })] }) })] }));
|
|
10
|
+
/** Icon for an EVM chain, given chain ID. No ID shows a loading spinner. */
|
|
11
|
+
const Chain = ({ id, unsupported: controlledUnsupported, radius = "50%", size = 24, }) => {
|
|
12
|
+
const isChainSupported = useChainIsSupported(id);
|
|
13
|
+
const unsupported = controlledUnsupported ?? !isChainSupported;
|
|
14
|
+
const chain = chainConfigs.find((c) => c.id === id);
|
|
15
|
+
const isMounted = useIsMounted();
|
|
16
|
+
if (!isMounted)
|
|
17
|
+
return (jsx("div", { style: {
|
|
18
|
+
width: size,
|
|
19
|
+
height: size,
|
|
20
|
+
} }));
|
|
21
|
+
return (jsx(ChainContainer, { size: size, radius: radius, children: jsxs(AnimatePresence, { initial: false, children: [unsupported && (jsx(Unsupported, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, children: jsxs("svg", { width: "13", height: "12", viewBox: "0 0 13 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { d: "M2.61317 11.2501H9.46246C10.6009 11.2501 11.3256 10.3506 11.3256 9.3549C11.3256 9.05145 11.255 8.73244 11.0881 8.43303L7.65903 2.14708C7.659 2.14702 7.65897 2.14696 7.65893 2.1469C7.65889 2.14682 7.65884 2.14673 7.65879 2.14664C7.31045 1.50746 6.6741 1.17871 6.04 1.17871C5.41478 1.17871 4.763 1.50043 4.41518 2.14968L0.993416 8.43476C0.828865 8.72426 0.75 9.04297 0.75 9.3549C0.75 10.3506 1.47471 11.2501 2.61317 11.2501Z", fill: "currentColor", stroke: "var(--ck-body-background, #fff)", strokeWidth: "1.5" }), jsx("path", { d: "M6.03258 7.43916C5.77502 7.43916 5.63096 7.29153 5.62223 7.02311L5.55675 4.96973C5.54802 4.69684 5.74446 4.5 6.02821 4.5C6.3076 4.5 6.51277 4.70131 6.50404 4.9742L6.43856 7.01864C6.42546 7.29153 6.2814 7.43916 6.03258 7.43916ZM6.03258 9.11676C5.7401 9.11676 5.5 8.9065 5.5 8.60677C5.5 8.30704 5.7401 8.09678 6.03258 8.09678C6.32506 8.09678 6.56515 8.30256 6.56515 8.60677C6.56515 8.91097 6.32069 9.11676 6.03258 9.11676Z", fill: "white" })] }) })), id ? (jsx(LogoContainer, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.3 }, children: chain?.logo ?? jsx(Chains.UnknownChain, {}) }, `${chain?.id}-${chain?.name}-${id}`)) : (jsx(LoadingContainer, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.3 }, children: Spinner }, "loading"))] }) }));
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { Chain as default };
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import { css, keyframes } from 'styled-components';
|
|
3
|
+
import styled from '../../../styles/styled/index.js';
|
|
4
|
+
|
|
5
|
+
const ChainContainer = styled.div `
|
|
6
|
+
--bg: transparent;
|
|
7
|
+
--color: #333;
|
|
8
|
+
${(props) => typeof props.size === "string"
|
|
9
|
+
? css `
|
|
10
|
+
--width: ${props.size};
|
|
11
|
+
--height: ${props.size};
|
|
12
|
+
`
|
|
13
|
+
: css `
|
|
14
|
+
--width: ${props.size >= 0 ? `${props.size}px` : "24px"};
|
|
15
|
+
--height: ${props.size >= 0 ? `${props.size}px` : "24px"};
|
|
16
|
+
`};
|
|
17
|
+
${(props) => typeof props.radius === "string"
|
|
18
|
+
? css `
|
|
19
|
+
--radius: ${props.radius};
|
|
20
|
+
`
|
|
21
|
+
: css `
|
|
22
|
+
--radius: ${props.radius >= 0 ? `${props.radius}px` : "24px"};
|
|
23
|
+
`};
|
|
24
|
+
display: block;
|
|
25
|
+
position: relative;
|
|
26
|
+
width: var(--width);
|
|
27
|
+
height: var(--height);
|
|
28
|
+
min-width: var(--width);
|
|
29
|
+
min-height: var(--height);
|
|
30
|
+
border-radius: var(--radius);
|
|
31
|
+
background: var(--ck-body-background-secondary);
|
|
32
|
+
pointer-events: none;
|
|
33
|
+
user-select: none;
|
|
34
|
+
svg {
|
|
35
|
+
display: block;
|
|
36
|
+
width: 100%;
|
|
37
|
+
height: auto;
|
|
38
|
+
}
|
|
39
|
+
> div {
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
const LogoContainer = styled(motion.div) `
|
|
46
|
+
display: block;
|
|
47
|
+
position: absolute;
|
|
48
|
+
inset: 0;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
border-radius: inherit;
|
|
51
|
+
user-select: none;
|
|
52
|
+
display: flex;
|
|
53
|
+
align-items: center;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
svg {
|
|
56
|
+
display: block;
|
|
57
|
+
width: 100%;
|
|
58
|
+
height: auto;
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
const Spin = keyframes `
|
|
62
|
+
0%{ transform: rotate(0deg); }
|
|
63
|
+
100%{ transform: rotate(360deg); }
|
|
64
|
+
`;
|
|
65
|
+
const LoadingContainer = styled(motion.div) `
|
|
66
|
+
position: absolute;
|
|
67
|
+
inset: 0;
|
|
68
|
+
animation: ${Spin} 1s linear infinite;
|
|
69
|
+
svg {
|
|
70
|
+
display: block;
|
|
71
|
+
position: absolute;
|
|
72
|
+
inset: 0;
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
const Unsupported = styled(motion.div) `
|
|
76
|
+
z-index: 2;
|
|
77
|
+
position: absolute;
|
|
78
|
+
top: 0;
|
|
79
|
+
right: 0;
|
|
80
|
+
width: 40%;
|
|
81
|
+
height: 40%;
|
|
82
|
+
min-width: 13px;
|
|
83
|
+
min-height: 13px;
|
|
84
|
+
color: var(--ck-body-color-danger, red);
|
|
85
|
+
svg {
|
|
86
|
+
display: block;
|
|
87
|
+
position: relative;
|
|
88
|
+
top: -30%;
|
|
89
|
+
right: -30%;
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
|
|
93
|
+
export { ChainContainer, LoadingContainer, LogoContainer, Unsupported };
|
|
94
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useAccount, useSwitchChain } from 'wagmi';
|
|
4
|
+
import { chainConfigs } from '../../../constants/chainConfigs.js';
|
|
5
|
+
import Alert from '../Alert/index.js';
|
|
6
|
+
import { SwitchNetworksContainer, ChainButtonContainer, ChainButtons, ChainButton, ChainLogoContainer, ChainLogoSpinner, ChainIcon, ChainButtonStatus, ChainButtonBg } from './styles.js';
|
|
7
|
+
import { motion, AnimatePresence } from 'framer-motion';
|
|
8
|
+
import { isMobile, isCoinbaseWalletConnector } from '../../../utils/index.js';
|
|
9
|
+
import Chains from '../../../assets/chains.js';
|
|
10
|
+
import useLocales from '../../../hooks/useLocales.js';
|
|
11
|
+
import { usePayContext } from '../../DaimoPay.js';
|
|
12
|
+
|
|
13
|
+
const Spinner = (jsxs("svg", { "aria-hidden": "true", width: "36", height: "36", viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M2 16.75C2.69036 16.75 3.25 17.3096 3.25 18V19C3.25 26.5939 9.40609 32.75 17 32.75V35.25C8.02537 35.25 0.75 27.9746 0.75 19V18C0.75 17.3096 1.30964 16.75 2 16.75Z", fill: "url(#paint0_linear_1288_18701)" }), jsx("defs", { children: jsxs("linearGradient", { id: "paint0_linear_1288_18701", x1: "2", y1: "19.4884", x2: "16.8752", y2: "33.7485", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "var(--ck-spinner-color)" }), jsx("stop", { offset: "1", stopColor: "var(--ck-spinner-color)", stopOpacity: "0" })] }) })] }));
|
|
14
|
+
const ChainSelectList = ({ variant, }) => {
|
|
15
|
+
const { connector, chain } = useAccount();
|
|
16
|
+
const { chains, isPending, switchChain, error } = useSwitchChain();
|
|
17
|
+
const [pendingChainId, setPendingChainId] = useState(undefined);
|
|
18
|
+
const locales = useLocales({});
|
|
19
|
+
const mobile = isMobile();
|
|
20
|
+
const isError = error?.["code"] === 4902; // Wallet cannot switch networks
|
|
21
|
+
const disabled = isError || !switchChain;
|
|
22
|
+
const handleSwitchNetwork = (chainId) => {
|
|
23
|
+
if (switchChain) {
|
|
24
|
+
setPendingChainId(chainId);
|
|
25
|
+
switchChain({ chainId });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const { triggerResize } = usePayContext();
|
|
29
|
+
return (jsxs(SwitchNetworksContainer, { style: { marginBottom: switchChain !== undefined ? -8 : 0 }, children: [jsx(ChainButtonContainer, { children: jsx(ChainButtons, { children: chains.map((x) => {
|
|
30
|
+
const c = chainConfigs.find((ch) => ch.id === x.id);
|
|
31
|
+
const ch = { ...c, ...x };
|
|
32
|
+
return (jsxs(ChainButton, { "$variant": variant, disabled: disabled ||
|
|
33
|
+
ch.id === chain?.id ||
|
|
34
|
+
(isPending && pendingChainId === ch.id), onClick: () => handleSwitchNetwork?.(ch.id), style: {
|
|
35
|
+
opacity: disabled && ch.id !== chain?.id ? 0.4 : undefined,
|
|
36
|
+
}, children: [jsxs("span", { style: {
|
|
37
|
+
display: "flex",
|
|
38
|
+
alignItems: "center",
|
|
39
|
+
justifyContent: "flex-start",
|
|
40
|
+
gap: 12,
|
|
41
|
+
color: ch.id === chain?.id
|
|
42
|
+
? "var(--ck-dropdown-active-color, inherit)"
|
|
43
|
+
: "inherit",
|
|
44
|
+
}, children: [jsxs(ChainLogoContainer, { children: [jsx(ChainLogoSpinner, { initial: { opacity: 0 }, animate: {
|
|
45
|
+
opacity: isPending && pendingChainId === ch.id ? 1 : 0,
|
|
46
|
+
}, transition: {
|
|
47
|
+
ease: [0.76, 0, 0.24, 1],
|
|
48
|
+
duration: 0.15,
|
|
49
|
+
delay: 0.1,
|
|
50
|
+
}, children: jsx(motion.div, { animate:
|
|
51
|
+
// UI fix for Coinbase Wallet on mobile does not remove isPending on rejection event
|
|
52
|
+
mobile &&
|
|
53
|
+
isCoinbaseWalletConnector(connector?.id) &&
|
|
54
|
+
isPending &&
|
|
55
|
+
pendingChainId === ch.id
|
|
56
|
+
? {
|
|
57
|
+
opacity: [1, 0],
|
|
58
|
+
transition: { delay: 4, duration: 3 },
|
|
59
|
+
}
|
|
60
|
+
: { opacity: 1 }, children: Spinner }, `${ch?.id}-${ch?.name}`) }), jsx(ChainIcon, { children: ch.logo ?? jsx(Chains.UnknownChain, {}) })] }), ch.name] }), variant !== "secondary" && (jsx(ChainButtonStatus, { children: jsxs(AnimatePresence, { initial: false, exitBeforeEnter: true, children: [ch.id === chain?.id && (jsx(motion.span, { style: {
|
|
61
|
+
color: "var(--ck-dropdown-active-color, var(--ck-focus-color))",
|
|
62
|
+
display: "block",
|
|
63
|
+
position: "relative",
|
|
64
|
+
}, initial: { opacity: 0, x: -4 }, animate: { opacity: 1, x: 0 }, exit: {
|
|
65
|
+
opacity: 0,
|
|
66
|
+
x: 4,
|
|
67
|
+
transition: { duration: 0.1, delay: 0 },
|
|
68
|
+
}, transition: {
|
|
69
|
+
ease: [0.76, 0, 0.24, 1],
|
|
70
|
+
duration: 0.3,
|
|
71
|
+
delay: 0.2,
|
|
72
|
+
}, children: locales.connected }, "connectedText")), isPending && pendingChainId === ch.id && (jsx(motion.span, { style: {
|
|
73
|
+
color: "var(--ck-dropdown-pending-color, inherit)",
|
|
74
|
+
display: "block",
|
|
75
|
+
position: "relative",
|
|
76
|
+
}, initial: {
|
|
77
|
+
opacity: 0,
|
|
78
|
+
x: -4,
|
|
79
|
+
}, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: 4 }, transition: {
|
|
80
|
+
ease: [0.76, 0, 0.24, 1],
|
|
81
|
+
duration: 0.3,
|
|
82
|
+
delay: 0.1,
|
|
83
|
+
}, children: jsx(motion.span, { animate:
|
|
84
|
+
// UI fix for Coinbase Wallet on mobile does not remove isLoading on rejection event
|
|
85
|
+
mobile &&
|
|
86
|
+
isCoinbaseWalletConnector(connector?.id) && {
|
|
87
|
+
opacity: [1, 0],
|
|
88
|
+
transition: { delay: 4, duration: 4 },
|
|
89
|
+
}, children: locales.approveInWallet }) }, "approveText"))] }) })), variant === "secondary" ? (jsx(ChainButtonBg, { initial: false, animate: {
|
|
90
|
+
opacity: ch.id === chain?.id ? 1 : 0,
|
|
91
|
+
}, transition: {
|
|
92
|
+
duration: 0.3,
|
|
93
|
+
ease: "easeOut",
|
|
94
|
+
} })) : (
|
|
95
|
+
//hover === ch.name && (
|
|
96
|
+
ch.id === chain?.id && (jsx(ChainButtonBg, { layoutId: "activeChain", layout: "position", transition: {
|
|
97
|
+
duration: 0.3,
|
|
98
|
+
ease: "easeOut",
|
|
99
|
+
} })))] }, `${ch?.id}-${ch?.name}`));
|
|
100
|
+
}) }) }), jsx(AnimatePresence, { children: isError && (jsx(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: {
|
|
101
|
+
ease: [0.76, 0, 0.24, 1],
|
|
102
|
+
duration: 0.3,
|
|
103
|
+
}, onAnimationStart: triggerResize, onAnimationComplete: triggerResize, children: jsx("div", { style: { paddingTop: 10, paddingBottom: 8 }, children: jsxs(Alert, { children: [locales.warnings_walletSwitchingUnsupported, " ", locales.warnings_walletSwitchingUnsupportedResolve] }) }) })) })] }));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export { ChainSelectList as default };
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|