@getpara/react-sdk 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/MoonPayEmbed-GAWXP6V7.js +2 -0
  2. package/dist/MoonPayEmbed-GAWXP6V7.js.br +0 -0
  3. package/dist/MoonPayEmbed-GAWXP6V7.js.gz +0 -0
  4. package/dist/index.js +675 -5
  5. package/dist/index.js.br +0 -0
  6. package/dist/index.js.gz +0 -0
  7. package/package.json +8 -7
  8. package/dist/modal/ParaModal.js +0 -281
  9. package/dist/modal/components/Account/Account.js +0 -60
  10. package/dist/modal/components/AddFunds/AddFunds.js +0 -147
  11. package/dist/modal/components/AddFunds/AddFundsAwaiting.js +0 -65
  12. package/dist/modal/components/AddFunds/AddFundsDone.js +0 -26
  13. package/dist/modal/components/AddFunds/MoonPayEmbed.js +0 -2
  14. package/dist/modal/components/AddFunds/index.js +0 -3
  15. package/dist/modal/components/AuthInput/AuthInput.js +0 -221
  16. package/dist/modal/components/AuthInput/countryCodes.js +0 -40
  17. package/dist/modal/components/AuthInput/hooks/useDropdownPosition.js +0 -23
  18. package/dist/modal/components/AuthInput/phoneMasks.js +0 -247
  19. package/dist/modal/components/AuthMainStep/AuthMainStep.js +0 -21
  20. package/dist/modal/components/AuthMainStep/AuthMainStepContent.js +0 -89
  21. package/dist/modal/components/AuthOptions/AuthOptions.js +0 -28
  22. package/dist/modal/components/AwaitingBiometricsStep/AwaitingBiometricsStep.js +0 -7
  23. package/dist/modal/components/AwaitingOAuthStep/AwaitingOAuthStep.js +0 -5
  24. package/dist/modal/components/AwaitingPasswordStep/AwaitingPasswordStep.js +0 -7
  25. package/dist/modal/components/AwaitingWalletCreationStep/AwaitingWalletCreationStep.js +0 -18
  26. package/dist/modal/components/BiometricCreationStep/BiometricCreationStep.js +0 -17
  27. package/dist/modal/components/BiometricLoginStep/BiometricLoginStep.js +0 -131
  28. package/dist/modal/components/Body/AnimatedHeightWrapper.js +0 -26
  29. package/dist/modal/components/Body/Body.js +0 -232
  30. package/dist/modal/components/ChainSwitch/ChainSwitch.js +0 -77
  31. package/dist/modal/components/ChainSwitch/config.js +0 -11
  32. package/dist/modal/components/Controls/Controls.js +0 -54
  33. package/dist/modal/components/Controls/Selects.js +0 -159
  34. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.js +0 -116
  35. package/dist/modal/components/ExternalWalletStep/config.js +0 -11
  36. package/dist/modal/components/ExternalWallets/ExternalWallets.js +0 -142
  37. package/dist/modal/components/ExternalWalletsWrapper/ExternalWalletsWrapper.js +0 -119
  38. package/dist/modal/components/Footer/Footer.js +0 -71
  39. package/dist/modal/components/Header/Header.js +0 -24
  40. package/dist/modal/components/Header/hooks/useStepTitle.js +0 -42
  41. package/dist/modal/components/Hero/Hero.js +0 -119
  42. package/dist/modal/components/IFrameStep/IFrameStep.js +0 -41
  43. package/dist/modal/components/LoginDoneStep/LoginDoneStep.js +0 -19
  44. package/dist/modal/components/ModalContent/ModalContent.js +0 -282
  45. package/dist/modal/components/OAuth/FarcasterOAuthStep.js +0 -81
  46. package/dist/modal/components/OAuth/OAuth.js +0 -125
  47. package/dist/modal/components/OAuth/TelegramOAuthStep.js +0 -133
  48. package/dist/modal/components/OnRampComponents/AddingFunds.js +0 -10
  49. package/dist/modal/components/OnRampComponents/OnRampProviderButton.js +0 -72
  50. package/dist/modal/components/RecoverySecretStep/RecoverySecretStep.js +0 -67
  51. package/dist/modal/components/Setup2FAStep/Setup2FAStep.js +0 -105
  52. package/dist/modal/components/StripeComponents/StripeComponents.js +0 -78
  53. package/dist/modal/components/TwoFactorDoneStep/TwoFactorDoneStep.js +0 -8
  54. package/dist/modal/components/VerificationCodeStep/VerificationCodeStep.js +0 -135
  55. package/dist/modal/components/Waiting/Waiting.js +0 -6
  56. package/dist/modal/components/WalletCard/PartnerIcon.js +0 -29
  57. package/dist/modal/components/WalletCard/WalletCard.js +0 -93
  58. package/dist/modal/components/WalletCreationDoneStep/WalletCreationDoneStep.js +0 -50
  59. package/dist/modal/components/common.js +0 -67
  60. package/dist/modal/components/index.js +0 -1
  61. package/dist/modal/constants/constants.js +0 -93
  62. package/dist/modal/constants/defaults.js +0 -5
  63. package/dist/modal/constants/oAuthLogos.js +0 -18
  64. package/dist/modal/hooks/useActiveWallet.js +0 -11
  65. package/dist/modal/hooks/useEmbeddedExternalConnection.js +0 -46
  66. package/dist/modal/hooks/useGoBack.js +0 -34
  67. package/dist/modal/index.js +0 -9
  68. package/dist/modal/providers/CosmosExternalWalletContextStub.js +0 -18
  69. package/dist/modal/providers/EvmExternalWalletContextStub.js +0 -22
  70. package/dist/modal/providers/ExternalWalletContext.js +0 -253
  71. package/dist/modal/providers/SolanaExternalWalletContextStub.js +0 -12
  72. package/dist/modal/stores/externalWalletProvider/actions.js +0 -5
  73. package/dist/modal/stores/externalWalletProvider/useExternalWalletProviderStore.js +0 -13
  74. package/dist/modal/stores/index.js +0 -3
  75. package/dist/modal/stores/modal/actions.js +0 -64
  76. package/dist/modal/stores/modal/useModalStore.js +0 -41
  77. package/dist/modal/stores/para/actions.js +0 -5
  78. package/dist/modal/stores/para/useParaStore.js +0 -3
  79. package/dist/modal/stores/theme/actions.js +0 -24
  80. package/dist/modal/stores/theme/useThemeStore.js +0 -14
  81. package/dist/modal/stores/userInfo/actions.js +0 -34
  82. package/dist/modal/stores/userInfo/useUserInfoStore.js +0 -9
  83. package/dist/modal/types/commonTypes.js +0 -1
  84. package/dist/modal/types/externalWallets.js +0 -21
  85. package/dist/modal/types/modalProps.js +0 -7
  86. package/dist/modal/utils/authLayoutHelpers.js +0 -2
  87. package/dist/modal/utils/getMailtoLink.js +0 -5
  88. package/dist/modal/utils/getTileButtonFlex.js +0 -15
  89. package/dist/modal/utils/isPasskeySupported.js +0 -10
  90. package/dist/modal/utils/openPopup.js +0 -55
  91. package/dist/modal/utils/routeMobileExternalWallet.js +0 -35
  92. package/dist/modal/utils/steps.js +0 -215
  93. package/dist/modal/utils/stringFormatters.js +0 -12
  94. package/dist/modal/utils/validateOnRampConfig.js +0 -26
  95. package/dist/provider/ParaProvider.js +0 -17
  96. package/dist/provider/actions/checkIfUserExists.js +0 -26
  97. package/dist/provider/actions/createUser.js +0 -30
  98. package/dist/provider/actions/getAccount.js +0 -24
  99. package/dist/provider/actions/getWallet.js +0 -16
  100. package/dist/provider/actions/initiateLogin.js +0 -23
  101. package/dist/provider/actions/keepSessionAlive.js +0 -23
  102. package/dist/provider/actions/logout.js +0 -20
  103. package/dist/provider/actions/signMessage.js +0 -23
  104. package/dist/provider/actions/signTransaction.js +0 -23
  105. package/dist/provider/actions/waitForAccountCreation.js +0 -24
  106. package/dist/provider/actions/waitForLoginAndSetup.js +0 -27
  107. package/dist/provider/actions/waitForPasskeyAndCreateWallet.js +0 -24
  108. package/dist/provider/hooks/index.js +0 -3
  109. package/dist/provider/hooks/mutations/index.js +0 -10
  110. package/dist/provider/hooks/mutations/useCheckIfUserExists.js +0 -23
  111. package/dist/provider/hooks/mutations/useCreateUser.js +0 -23
  112. package/dist/provider/hooks/mutations/useInitiateLogin.js +0 -23
  113. package/dist/provider/hooks/mutations/useKeepSessionAlive.js +0 -23
  114. package/dist/provider/hooks/mutations/useLogout.js +0 -33
  115. package/dist/provider/hooks/mutations/useSignMessage.js +0 -33
  116. package/dist/provider/hooks/mutations/useSignTransaction.js +0 -33
  117. package/dist/provider/hooks/mutations/useWaitForAccountCreation.js +0 -30
  118. package/dist/provider/hooks/mutations/useWaitForLoginAndSetup.js +0 -30
  119. package/dist/provider/hooks/mutations/useWaitForPasskeyAndCreateWallet.js +0 -30
  120. package/dist/provider/hooks/queries/index.js +0 -2
  121. package/dist/provider/hooks/queries/useAccount.js +0 -23
  122. package/dist/provider/hooks/queries/useWallet.js +0 -24
  123. package/dist/provider/hooks/utils/index.js +0 -3
  124. package/dist/provider/hooks/utils/useAutoSessionKeepAlive.js +0 -79
  125. package/dist/provider/hooks/utils/useClient.js +0 -8
  126. package/dist/provider/hooks/utils/useEventListeners.js +0 -87
  127. package/dist/provider/hooks/utils/useInternalClient.js +0 -9
  128. package/dist/provider/hooks/utils/useModal.js +0 -15
  129. package/dist/provider/hooks/utils/useWalletState.js +0 -33
  130. package/dist/provider/index.js +0 -3
  131. package/dist/provider/stores/getters.js +0 -5
  132. package/dist/provider/stores/slices/client.js +0 -4
  133. package/dist/provider/stores/slices/index.js +0 -3
  134. package/dist/provider/stores/slices/modal.js +0 -4
  135. package/dist/provider/stores/slices/wallet.js +0 -6
  136. package/dist/provider/stores/types.js +0 -1
  137. package/dist/provider/stores/useStore.js +0 -14
  138. package/dist/provider/types/provider.js +0 -1
  139. package/dist/provider/types/query.js +0 -1
  140. package/dist/provider/types/utils.js +0 -1
  141. package/dist/provider/utils/renameMutations.js +0 -19
  142. /package/dist/{modal/css → css}/modal.css +0 -0
  143. /package/dist/{modal/public → public}/Inter-VariableFont_slnt,wght.ttf +0 -0
@@ -1,5 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Waiting } from '../Waiting/Waiting.js';
3
- export const AwaitingOAuthStep = () => {
4
- return _jsx(Waiting, { heading: "Complete Login", subheading: "Follow the prompts presented by your browser." });
5
- };
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useModalStore } from '../../stores/index.js';
3
- import { Waiting } from '../Waiting/Waiting.js';
4
- export const AwaitingPasswordStep = () => {
5
- const isLogin = useModalStore(state => state.isLogin());
6
- return (_jsx(Waiting, { heading: isLogin ? 'Waiting for Password' : 'Creating Password', subheading: "Follow the prompts presented by your browser." }));
7
- };
@@ -1,18 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CpslIcon, CpslInfoBox, CpslText } from '@getpara/react-components';
3
- import { InfoBoxContent, InfoBoxHeader, StepContainer } from '../common.js';
4
- import { useEffect, useRef, useState } from 'react';
5
- import { Waiting } from '../Waiting/Waiting.js';
6
- import { useThemeStore } from '../../stores/index.js';
7
- export const AwaitingWalletCreationStep = () => {
8
- const hideWallets = useThemeStore(state => state.hideWallets);
9
- const [showInfoBox, setShowInfoBox] = useState(false);
10
- const showInfoBoxTimeout = useRef();
11
- useEffect(() => {
12
- showInfoBoxTimeout.current = window.setTimeout(() => {
13
- setShowInfoBox(true);
14
- }, 4000);
15
- return () => clearTimeout(showInfoBoxTimeout.current);
16
- }, []);
17
- return (_jsxs(StepContainer, { "$wide": true, children: [_jsx(Waiting, { heading: hideWallets ? 'Creating Your Account' : 'Creating Your Wallet', subheading: "This should only take a couple of seconds." }), showInfoBox && (_jsx(CpslInfoBox, { children: _jsxs(InfoBoxContent, { children: [_jsxs(InfoBoxHeader, { children: [_jsx(CpslIcon, { icon: "clock" }), _jsx(CpslText, { weight: "medium", children: "Hang on" })] }), _jsxs(CpslText, { variant: "bodyS", weight: "medium", color: "secondary", children: ["Creating your ", hideWallets ? 'account' : 'wallet', " is taking a little longer than expected, but we're working on it!"] })] }) }))] }));
18
- };
@@ -1,17 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { CpslButton, CpslDivider, CpslIcon, CpslQrCode, CpslSpinner, CpslText } from '@getpara/react-components';
3
- import { useModalStore, useUserInfoStore } from '../../stores/index.js';
4
- import { InnerStepContainer, StepContainer, Heading, QRContainer } from '../common.js';
5
- import { isPasskeySupported } from '../../utils/isPasskeySupported.js';
6
- import { useCopyToClipboard, UserIdentifier } from '@getpara/react-common';
7
- export const BiometricCreationStep = ({ handlePasswordClick, handlePasskeyClick, }) => {
8
- const webAuthURLForCreate = useModalStore(state => state.webAuthURLForCreate);
9
- const iFrameUrl = useModalStore(state => state.iFrameUrl);
10
- const authInfo = useUserInfoStore(state => state.getAuthInfo());
11
- const [isCopied, copy] = useCopyToClipboard();
12
- const handleCopy = () => {
13
- copy(webAuthURLForCreate);
14
- };
15
- const isBoth = !!webAuthURLForCreate && !!iFrameUrl;
16
- return (_jsxs(StepContainer, { "$wide": true, children: [_jsxs(InnerStepContainer, { children: [_jsx(Heading, { variant: "headingS", weight: "bold", children: isBoth ? 'Secure Your Account' : 'Create Passkey' }), _jsx(UserIdentifier, Object.assign({}, authInfo)), _jsx(CpslText, { variant: "bodyS", color: "secondary", weight: "medium", children: isBoth ? 'Choose a password or set up a passkey' : 'Your Passkey keeps your account safe.' })] }), _jsxs(InnerStepContainer, { children: [isPasskeySupported() ? (_jsxs(CpslButton, { fullWidth: true, onClick: handlePasskeyClick, children: [_jsx(CpslIcon, { slot: "start", icon: "key" }), isBoth ? 'Create Passkey' : 'Create'] })) : (_jsxs(_Fragment, { children: [_jsx(CpslText, { weight: "semiBold", children: "Scan with your mobile device" }), _jsx(QRContainer, { children: !webAuthURLForCreate ? _jsx(CpslSpinner, { size: 100 }) : _jsx(CpslQrCode, { url: webAuthURLForCreate }) }), _jsxs(CpslButton, { size: "small", variant: "ghost", onClick: handleCopy, children: [_jsx(CpslIcon, { slot: "start", icon: isCopied ? 'check' : 'copy' }), isCopied ? 'Copied' : 'Copy Link'] })] })), isBoth && (_jsxs(_Fragment, { children: [_jsx(CpslDivider, { children: "or" }), _jsxs(CpslButton, { fullWidth: true, onClick: handlePasswordClick, children: [_jsx(CpslIcon, { slot: "start", icon: "passcode" }), "Choose Password"] })] }))] })] }));
17
- };
@@ -1,131 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
- import { CpslButton, CpslDivider, CpslIcon } from '@getpara/react-components';
12
- import { useEffect, useMemo, useState } from 'react';
13
- import { useModalStore, useUserInfoStore } from '../../stores/index.js';
14
- import { ModalStep } from '../../utils/steps.js';
15
- import { Heading, StepContainer, InnerStepContainer } from '../common.js';
16
- import { openPopup } from '../../utils/openPopup.js';
17
- import styled from 'styled-components';
18
- import { AuthMethod, getPublicKeyHex } from '@getpara/web-sdk';
19
- import { isPasskeySupported } from '../../utils/isPasskeySupported.js';
20
- import { formatBiometricHints, KnownDevices, UserIdentifier } from '@getpara/react-common';
21
- import { useInternalClient } from '../../../provider/hooks/utils/useInternalClient.js';
22
- export const BiometricLoginStep = () => {
23
- const popupWindow = useModalStore(state => state.popupWindow);
24
- const supportedAuthMethods = useModalStore(state => state.supportedAuthMethods);
25
- const passwordUrlForLogin = useModalStore(state => state.passwordUrlForLogin);
26
- const webAuthURLForLogin = useModalStore(state => state.webAuthURLForLogin);
27
- const setStep = useModalStore(state => state.setStep);
28
- const setPopupWindow = useModalStore(state => state.setPopupWindow);
29
- const biometricLocationHints = useModalStore(state => state.biometricLocationHints);
30
- const para = useInternalClient();
31
- const authInfo = useUserInfoStore(state => state.getAuthInfo());
32
- const setWebAuthURLForLogin = useModalStore(state => state.setWebAuthURLForLogin);
33
- const setPasswordUrlForLogin = useModalStore(state => state.setPasswordUrlForLogin);
34
- const passkeysSupported = isPasskeySupported();
35
- const formattedHints = useMemo(() => formatBiometricHints(biometricLocationHints), [biometricLocationHints]);
36
- const setSupportedAuthMethods = useModalStore(state => state.setSupportedAuthMethods);
37
- const [webAuthURLForKnownDeviceLogin, setWebAuthURLForKnownDeviceLogin] = useState();
38
- useEffect(() => {
39
- function setLinks() {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- if (!(supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.size) && para.getUserId()) {
42
- const fetchedSupportedAuthMethods = yield para.supportedAuthMethods({ userId: para.getUserId() });
43
- if (fetchedSupportedAuthMethods === null || fetchedSupportedAuthMethods === void 0 ? void 0 : fetchedSupportedAuthMethods.size) {
44
- setSupportedAuthMethods(fetchedSupportedAuthMethods);
45
- }
46
- return;
47
- }
48
- if (!para.isEmail && !para.isPhone && !para.isFarcaster && !para.isTelegram) {
49
- return;
50
- }
51
- if (!para.loginEncryptionKeyPair) {
52
- return;
53
- }
54
- const authType = para.isEmail ? 'email' : para.isPhone ? 'phone' : para.isFarcaster ? 'farcaster' : 'telegram';
55
- const res = yield para.touchSession();
56
- const webAuthUrlForLogin = (supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.has) && supportedAuthMethods.has(AuthMethod.PASSKEY)
57
- ? yield para.getWebAuthURLForLogin({
58
- sessionId: res.data.sessionId,
59
- loginEncryptionPublicKey: getPublicKeyHex(para.loginEncryptionKeyPair),
60
- partnerId: res.data.partnerId,
61
- authType,
62
- displayName: authInfo.displayName,
63
- pfpUrl: authInfo.pfpUrl,
64
- })
65
- : undefined;
66
- const _webAuthURLForKnownDeviceLogin = (supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.has) && supportedAuthMethods.has(AuthMethod.PASSKEY)
67
- ? yield para.getWebAuthURLForLogin({
68
- sessionId: res.data.sessionId,
69
- loginEncryptionPublicKey: getPublicKeyHex(para.loginEncryptionKeyPair),
70
- partnerId: res.data.partnerId,
71
- newDeviceSessionId: res.data.sessionLookupId,
72
- newDeviceEncryptionKey: getPublicKeyHex(para.loginEncryptionKeyPair),
73
- authType,
74
- displayName: authInfo.displayName,
75
- pfpUrl: authInfo.pfpUrl,
76
- })
77
- : undefined;
78
- const passwordAuthUrlForLogin = (supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.has) && supportedAuthMethods.has(AuthMethod.PASSWORD)
79
- ? yield para.getPasswordURLForLogin({
80
- sessionId: res.data.sessionId,
81
- loginEncryptionPublicKey: getPublicKeyHex(para.loginEncryptionKeyPair),
82
- partnerId: res.data.partnerId,
83
- authType,
84
- displayName: authInfo.displayName,
85
- pfpUrl: authInfo.pfpUrl,
86
- })
87
- : undefined;
88
- const shortWebAuthLoginLink = webAuthUrlForLogin ? yield para.shortenLoginLink(webAuthUrlForLogin) : undefined;
89
- const shortWebAuthForKnownDeviceLoginLink = _webAuthURLForKnownDeviceLogin
90
- ? yield para.shortenLoginLink(_webAuthURLForKnownDeviceLogin)
91
- : undefined;
92
- setWebAuthURLForKnownDeviceLogin(shortWebAuthForKnownDeviceLoginLink);
93
- setWebAuthURLForLogin(shortWebAuthLoginLink);
94
- setPasswordUrlForLogin(passwordAuthUrlForLogin);
95
- });
96
- }
97
- setLinks();
98
- }, [supportedAuthMethods, para]);
99
- const handlePasskeyClick = () => {
100
- if (!!popupWindow) {
101
- return;
102
- }
103
- const loginWindow = openPopup(webAuthURLForLogin, 'ParaPasskey', 'LOGIN_PASSKEY');
104
- setPopupWindow(loginWindow);
105
- setStep(ModalStep.AWAITING_BIOMETRIC_LOGIN);
106
- };
107
- const handlePasswordClick = () => {
108
- const loginWindow = openPopup(passwordUrlForLogin, 'ParaPassword', 'LOGIN_PASSWORD');
109
- setPopupWindow(loginWindow);
110
- setStep(ModalStep.AWAITING_PASSWORD_LOGIN);
111
- };
112
- function shouldShowWelcomeBack() {
113
- return (!(biometricLocationHints === null || biometricLocationHints === void 0 ? void 0 : biometricLocationHints.length) ||
114
- (passkeysSupported && formattedHints.isOnKnownDevice) ||
115
- ((supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.has) && supportedAuthMethods.has(AuthMethod.PASSWORD)));
116
- }
117
- return (_jsxs(StepContainer, { "$wide": true, children: [_jsxs(InnerStepContainer, { children: [shouldShowWelcomeBack() && (_jsx(Heading, { variant: "headingS", weight: "bold", children: "Welcome back," })), _jsx(UserIdentifier, Object.assign({}, authInfo))] }), _jsxs(MainContainer, { children: [(supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.has) && supportedAuthMethods.has(AuthMethod.PASSWORD) && passwordUrlForLogin && (_jsx(PasswordOnly, { handlePasswordClick: handlePasswordClick })), (supportedAuthMethods === null || supportedAuthMethods === void 0 ? void 0 : supportedAuthMethods.has) &&
118
- supportedAuthMethods.has(AuthMethod.PASSKEY) &&
119
- webAuthURLForLogin &&
120
- webAuthURLForKnownDeviceLogin && (_jsx(BiometricOnly, { handlePasskeyClick: handlePasskeyClick, formattedHints: formattedHints, shortLoginLink: webAuthURLForKnownDeviceLogin, passkeysSupported: passkeysSupported, biometricLocationHints: biometricLocationHints }))] })] }));
121
- };
122
- const PasswordOnly = ({ handlePasswordClick }) => {
123
- return (_jsx(CpslButton, { fullWidth: true, onClick: handlePasswordClick, children: "Login" }));
124
- };
125
- const BiometricOnly = ({ handlePasskeyClick, formattedHints, shortLoginLink, passkeysSupported, biometricLocationHints = [], }) => {
126
- const [hasHints, isOnKnownDevice] = [biometricLocationHints.length > 0, formattedHints.isOnKnownDevice];
127
- return (_jsxs(_Fragment, { children: [((hasHints && !isOnKnownDevice) || !passkeysSupported) && (_jsx(KnownDevices, { hints: formattedHints, link: shortLoginLink })), passkeysSupported && (_jsxs(_Fragment, { children: [hasHints && !isOnKnownDevice && _jsx(CpslDivider, { children: "or" }), _jsx(CpslButton, { fullWidth: true, onClick: handlePasskeyClick, children: !hasHints || isOnKnownDevice ? (_jsxs(_Fragment, { children: [_jsx(CpslIcon, { slot: "start", icon: "key" }), "Login with passkey"] })) : ('Continue anyway') })] }))] }));
128
- };
129
- const MainContainer = styled(InnerStepContainer) `
130
- gap: 16px;
131
- `;
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { motion } from 'framer-motion';
3
- import { useEffect, useRef, useState } from 'react';
4
- import styled from 'styled-components';
5
- export const AnimatedHeightWrapper = ({ children, className }) => {
6
- const containerRef = useRef(null);
7
- const [height, setHeight] = useState('auto');
8
- useEffect(() => {
9
- if (containerRef.current) {
10
- const resizeObserver = new ResizeObserver(entries => {
11
- // We only have one entry, so we can use entries[0].
12
- const observedHeight = entries[0].contentRect.height;
13
- setHeight(observedHeight);
14
- });
15
- resizeObserver.observe(containerRef.current);
16
- return () => {
17
- // Cleanup the observer when the component is unmounted
18
- resizeObserver.disconnect();
19
- };
20
- }
21
- }, []);
22
- return (_jsx(Container, { className: className, style: { height }, animate: { height }, transition: { duration: 0.2 }, children: _jsx("div", { ref: containerRef, children: children }) }));
23
- };
24
- const Container = styled(motion.div) `
25
- overflow: hidden;
26
- `;
@@ -1,232 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { styled } from 'styled-components';
3
- import { IFrameSteps, ModalStep } from '../../utils/steps.js';
4
- import { CpslAlert, CpslIcon } from '@getpara/react-components';
5
- import { VerificationCodeStep } from '../VerificationCodeStep/VerificationCodeStep.js';
6
- import { useModalStore, useThemeStore } from '../../stores/index.js';
7
- import { BiometricLoginStep } from '../BiometricLoginStep/BiometricLoginStep.js';
8
- import { Setup2FAStep } from '../Setup2FAStep/Setup2FAStep.js';
9
- import { LoginDoneStep } from '../LoginDoneStep/LoginDoneStep.js';
10
- import { EnabledFlow } from '@getpara/web-sdk';
11
- import { AwaitingBiometricsStep } from '../AwaitingBiometricsStep/AwaitingBiometricsStep.js';
12
- import { AwaitingWalletCreationStep } from '../AwaitingWalletCreationStep/AwaitingWalletCreationStep.js';
13
- import { WalletCreationDoneStep } from '../WalletCreationDoneStep/WalletCreationDoneStep.js';
14
- import { RecoverySecretStep } from '../RecoverySecretStep/RecoverySecretStep.js';
15
- import { TwoFactorDoneStep } from '../TwoFactorDoneStep/TwoFactorDoneStep.js';
16
- import { BiometricCreationStep } from '../BiometricCreationStep/BiometricCreationStep.js';
17
- import { AwaitingOAuthStep } from '../AwaitingOAuthStep/AwaitingOAuthStep.js';
18
- import { AddFundsAwaiting, AddFundsDone, AddFunds } from '../AddFunds/index.js';
19
- import FarcasterOAuthStep from '../OAuth/FarcasterOAuthStep.js';
20
- import { Header } from '../Header/Header.js';
21
- import { AuthMainStep } from '../AuthMainStep/AuthMainStep.js';
22
- import { BODY_MOTION_VARIANTS, BODY_TRANSITION, MOBILE_SIZE } from '../../constants/constants.js';
23
- import { Account } from '../Account/Account.js';
24
- import { AuthOptions } from '../AuthOptions/AuthOptions.js';
25
- import { ExternalWallets } from '../ExternalWallets/ExternalWallets.js';
26
- import { ExternalWalletStep } from '../ExternalWalletStep/ExternalWalletStep.js';
27
- import { Hero } from '../Hero/Hero.js';
28
- import { AnimatedHeightWrapper } from './AnimatedHeightWrapper.js';
29
- import { ChainSwitch } from '../ChainSwitch/ChainSwitch.js';
30
- import { motion, AnimatePresence } from 'framer-motion';
31
- import { Controls } from '../Controls/Controls.js';
32
- import { useEffect, useState } from 'react';
33
- import { TelegramOAuthStep } from '../OAuth/TelegramOAuthStep.js';
34
- import { AwaitingPasswordStep } from '../AwaitingPasswordStep/AwaitingPasswordStep.js';
35
- import { IFrameStep } from '../IFrameStep/IFrameStep.js';
36
- const MIN_HEIGHT = {
37
- [ModalStep.ADD_FUNDS_AWAITING]: '680px',
38
- };
39
- const PADDING_TOP = {
40
- [ModalStep.TELEGRAM_OAUTH]: '36px',
41
- };
42
- const PADDING_BOTTOM = {
43
- [ModalStep.TELEGRAM_OAUTH]: '16px',
44
- };
45
- export const Body = ({ oAuthMethods, twoFactorAuthEnabled, disableEmailLogin, disablePhoneLogin, onClose, createAccountWithPasskey, createAccountWithPassword, }) => {
46
- const currentStep = useModalStore(state => state.step);
47
- const onRampConfig = useModalStore(state => state.onRampConfig);
48
- const stepDirection = useModalStore(state => state.stepDirection);
49
- const setStepDirection = useModalStore(state => state.setStepDirection);
50
- const accountAddFundTab = useModalStore(state => state.accountAddFundTab);
51
- const setAccountAddFundTab = useModalStore(state => state.setAccountAddFundTab);
52
- const appName = useThemeStore(state => state.appName);
53
- const embeddedModal = useThemeStore(state => state.embeddedModal);
54
- const [isTestModeAlert, setIsTestModeAlert] = useState(onRampConfig === null || onRampConfig === void 0 ? void 0 : onRampConfig.testMode);
55
- const Content = () => {
56
- switch (currentStep) {
57
- case ModalStep.AUTH_MAIN: {
58
- return (_jsx(AuthMainStep, { oAuthMethods: oAuthMethods, disableEmailLogin: disableEmailLogin, disablePhoneLogin: disablePhoneLogin }));
59
- }
60
- case ModalStep.EX_WALLET_MORE: {
61
- return _jsx(ExternalWallets, {});
62
- }
63
- case ModalStep.AUTH_MORE: {
64
- return (_jsx(AuthOptions, { oAuthMethods: oAuthMethods, disableEmailLogin: disableEmailLogin, disablePhoneLogin: disablePhoneLogin }));
65
- }
66
- case ModalStep.VERIFICATIONS: {
67
- return _jsx(VerificationCodeStep, {});
68
- }
69
- case ModalStep.BIOMETRIC_LOGIN: {
70
- return _jsx(BiometricLoginStep, {});
71
- }
72
- case ModalStep.SETUP_2FA:
73
- case ModalStep.VERIFY_2FA: {
74
- return _jsx(Setup2FAStep, { onClose: onClose });
75
- }
76
- case ModalStep.LOGIN_DONE: {
77
- return _jsx(LoginDoneStep, { onClose: onClose });
78
- }
79
- case ModalStep.AWAITING_BIOMETRIC_LOGIN:
80
- case ModalStep.AWAITING_BIOMETRIC_CREATION: {
81
- return _jsx(AwaitingBiometricsStep, {});
82
- }
83
- case ModalStep.AWAITING_PASSWORD_LOGIN:
84
- case ModalStep.AWAITING_PASSWORD_CREATION: {
85
- return _jsx(AwaitingPasswordStep, {});
86
- }
87
- case ModalStep.AWAITING_WALLET_CREATION: {
88
- return _jsx(AwaitingWalletCreationStep, {});
89
- }
90
- case ModalStep.WALLET_CREATION_DONE: {
91
- return _jsx(WalletCreationDoneStep, { twoFactorAuthEnabled: twoFactorAuthEnabled, onClose: onClose });
92
- }
93
- case ModalStep.SECRET: {
94
- return _jsx(RecoverySecretStep, {});
95
- }
96
- case ModalStep.TWO_FACTOR_DONE: {
97
- return _jsx(TwoFactorDoneStep, { onClose: onClose });
98
- }
99
- case ModalStep.BIOMETRIC_CREATION: {
100
- return (_jsx(BiometricCreationStep, { handlePasswordClick: createAccountWithPassword, handlePasskeyClick: createAccountWithPasskey }));
101
- }
102
- case ModalStep.AWAITING_OAUTH: {
103
- return _jsx(AwaitingOAuthStep, {});
104
- }
105
- case ModalStep.FARCASTER_OAUTH: {
106
- return _jsx(FarcasterOAuthStep, {});
107
- }
108
- case ModalStep.TELEGRAM_OAUTH: {
109
- return _jsx(TelegramOAuthStep, {});
110
- }
111
- case ModalStep.ADD_FUNDS_BUY:
112
- case ModalStep.ADD_FUNDS_RECEIVE:
113
- case ModalStep.ADD_FUNDS_WITHDRAW: {
114
- return _jsx(AddFunds, {});
115
- }
116
- case ModalStep.ADD_FUNDS_AWAITING: {
117
- return _jsx(AddFundsAwaiting, {});
118
- }
119
- case ModalStep.ADD_FUNDS_SUCCESS: {
120
- return _jsx(AddFundsDone, { isSuccess: true, onClose: onClose });
121
- }
122
- case ModalStep.ADD_FUNDS_FAILURE: {
123
- return _jsx(AddFundsDone, { onClose: onClose });
124
- }
125
- case ModalStep.ACCOUNT_MAIN: {
126
- return _jsx(Account, { onClose: onClose });
127
- }
128
- case ModalStep.EX_WALLET_SELECTED: {
129
- return _jsx(ExternalWalletStep, {});
130
- }
131
- case ModalStep.CHAIN_SWITCH: {
132
- return _jsx(ChainSwitch, {});
133
- }
134
- default: {
135
- if (IFrameSteps.includes(currentStep)) {
136
- return null;
137
- }
138
- }
139
- }
140
- };
141
- useEffect(() => {
142
- if (!isTestModeAlert && (onRampConfig === null || onRampConfig === void 0 ? void 0 : onRampConfig.testMode)) {
143
- setIsTestModeAlert(true);
144
- }
145
- }, [onRampConfig === null || onRampConfig === void 0 ? void 0 : onRampConfig.testMode]);
146
- useEffect(() => {
147
- switch (currentStep) {
148
- case ModalStep.ADD_FUNDS_BUY:
149
- setAccountAddFundTab(EnabledFlow.BUY);
150
- break;
151
- case ModalStep.ADD_FUNDS_RECEIVE:
152
- setAccountAddFundTab(EnabledFlow.RECEIVE);
153
- break;
154
- case ModalStep.ADD_FUNDS_WITHDRAW:
155
- setAccountAddFundTab(EnabledFlow.WITHDRAW);
156
- break;
157
- default:
158
- break;
159
- }
160
- }, [currentStep]);
161
- return (_jsxs(Container, { slot: "body", "data-testid": "modal-content", children: [!embeddedModal && (_jsxs(_Fragment, { children: [_jsx(Controls, { onClose: onClose }), _jsx(Header, {})] })), _jsxs(AnimatedWrapper, { children: [_jsx(AnimatePresence, { mode: "popLayout", initial: false, onExitComplete: () => {
162
- setStepDirection(1);
163
- }, custom: stepDirection, children: _jsxs(BodyContainer, { custom: stepDirection, variants: BODY_MOTION_VARIANTS, initial: "enter", animate: "center", exit: "exit", transition: BODY_TRANSITION, children: [_jsx(Hero, {}), _jsxs(InnerContainer, { "$embeddedModal": embeddedModal, "$step": currentStep, "$isIFrameStep": IFrameSteps.includes(currentStep), children: [Content(), (onRampConfig === null || onRampConfig === void 0 ? void 0 : onRampConfig.testMode) &&
164
- [
165
- ModalStep.ADD_FUNDS_BUY,
166
- ModalStep.ADD_FUNDS_WITHDRAW,
167
- ModalStep.ADD_FUNDS_AWAITING,
168
- ModalStep.ADD_FUNDS_FAILURE,
169
- ModalStep.ADD_FUNDS_SUCCESS,
170
- ].includes(currentStep) &&
171
- isTestModeAlert &&
172
- accountAddFundTab !== EnabledFlow.RECEIVE && (_jsx(TestModeAlert, { children: _jsxs("div", { style: { fontSize: '14px' }, children: ["This Para Modal is configured to run on-ramp services in ", _jsx("b", { children: "test mode" }), " only, for development purposes. If you are a user of ", appName, ", please contact support.", _jsx(CloseButton, { onClick: () => setIsTestModeAlert(false), children: _jsx(CloseX, { icon: "x" }) })] }) }))] })] }, ['ADD_FUNDS_BUY', 'ADD_FUNDS_RECEIVE', 'ADD_FUNDS_WITHDRAW'].includes(currentStep) ? 'ADD_FUNDS' : currentStep) }), _jsx(IFrameStep, {})] })] }));
173
- };
174
- const Container = styled.div `
175
- position: relative;
176
- `;
177
- const AnimatedWrapper = styled(AnimatedHeightWrapper) `
178
- margin-top: -16px;
179
- `;
180
- const BodyContainer = styled(motion.div) `
181
- position: relative;
182
- display: flex;
183
- flex-direction: column;
184
- gap: 24px;
185
- will-change: auto !important;
186
- `;
187
- const InnerContainer = styled.div `
188
- z-index: 1;
189
- flex: 1;
190
- display: flex;
191
- flex-direction: column;
192
- justify-content: flex-start;
193
- gap: 24px;
194
- padding: ${({ $embeddedModal, $step, $isIFrameStep }) => {
195
- var _a, _b;
196
- return $isIFrameStep
197
- ? '0px'
198
- : $embeddedModal
199
- ? '12px 0px 0px'
200
- : `${(_a = PADDING_TOP[$step]) !== null && _a !== void 0 ? _a : '72px'} 72px ${(_b = PADDING_BOTTOM[$step]) !== null && _b !== void 0 ? _b : '32px'}`;
201
- }};
202
- min-height: ${({ $step }) => { var _a; return (_a = MIN_HEIGHT[$step]) !== null && _a !== void 0 ? _a : 'auto'; }};
203
- height: ${({ $step }) => { var _a; return (_a = MIN_HEIGHT[$step]) !== null && _a !== void 0 ? _a : 'auto'; }};
204
-
205
- @media (max-width: ${MOBILE_SIZE}px) {
206
- padding: ${({ $embeddedModal, $step, $isIFrameStep }) => { var _a; return $isIFrameStep ? '0px' : $embeddedModal ? '12px 0px 0px' : `${(_a = PADDING_TOP[$step]) !== null && _a !== void 0 ? _a : '72px'} 16px 0px`; }};
207
- }
208
-
209
- cpsl-auth-modal.force-mobile-media & {
210
- padding: 72px 16px 0px;
211
- }
212
- `;
213
- const TestModeAlert = styled(CpslAlert) `
214
- --container-padding-end: 40px;
215
- position: absolute;
216
- bottom: 16px;
217
- left: 16px;
218
- right: 16px;
219
- z-index: 1000;
220
- `;
221
- const CloseButton = styled.button `
222
- background-color: transparent;
223
- border: none;
224
- padding: 4px;
225
- cursor: pointer;
226
- position: absolute;
227
- top: 0;
228
- right: 0;
229
- `;
230
- const CloseX = styled(CpslIcon) `
231
- --icon-color: var(--cpsl-color-foreground-0);
232
- `;
@@ -1,77 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
- import { CpslButton, CpslIcon, CpslQrCode, CpslSpinner, CpslText } from '@getpara/react-components';
12
- import { CenteredText, InnerStepContainer, QRContainer, StepContainer } from '../common.js';
13
- import { useEffect, useMemo } from 'react';
14
- import { useModalStore } from '../../stores/index.js';
15
- import styled from 'styled-components';
16
- import { useExternalWallets } from '../../providers/ExternalWalletContext.js';
17
- import { useCopyToClipboard } from '@getpara/react-common';
18
- import { ModalStep } from '../../utils/steps.js';
19
- import { routeMobileExternalWallet } from '../../utils/routeMobileExternalWallet.js';
20
- import { NETWORK_NOT_SUPPORTED_ERROR } from '../../constants/constants.js';
21
- import { WalletType } from '@getpara/web-sdk';
22
- export const ChainSwitch = () => {
23
- const [isCopied, copy] = useCopyToClipboard();
24
- const externalWalletError = useModalStore(state => state.externalWalletError);
25
- const setStep = useModalStore(state => state.setStep);
26
- const setStepDirection = useModalStore(state => state.setStepDirection);
27
- const { switchChain, wallet, qrUri, chainIdSwitchingTo, walletDisplayHelpers } = useExternalWallets();
28
- useEffect(() => {
29
- if ((wallet === null || wallet === void 0 ? void 0 : wallet.type) === WalletType.COSMOS) {
30
- routeMobileExternalWallet(qrUri);
31
- }
32
- }, [qrUri, wallet]);
33
- useEffect(() => {
34
- if (!wallet) {
35
- setStepDirection(-1);
36
- setStep(ModalStep.ACCOUNT_MAIN);
37
- }
38
- }, [wallet]);
39
- const handleTryAgainClick = () => __awaiter(void 0, void 0, void 0, function* () {
40
- if (chainIdSwitchingTo) {
41
- yield switchChain(chainIdSwitchingTo);
42
- }
43
- });
44
- const handleCopy = () => {
45
- copy(qrUri);
46
- };
47
- const Content = useMemo(() => {
48
- var _a;
49
- if (!wallet) {
50
- return null;
51
- }
52
- const { isCosmosMobileWallet } = walletDisplayHelpers;
53
- if (isCosmosMobileWallet) {
54
- return (_jsx(_Fragment, { children: _jsxs(InnerStepContainer, { children: [_jsx(CpslText, { weight: "semiBold", children: "Scan with your mobile device to switch networks" }), _jsx(QRContainer, { children: !qrUri ? _jsx(CpslSpinner, { size: 100 }) : _jsx(CpslQrCode, { url: qrUri, imageSrc: wallet.iconUrl }) }), _jsxs(CpslButton, { size: "small", variant: "ghost", onClick: handleCopy, children: [_jsx(CpslIcon, { slot: "start", icon: isCopied ? 'check' : 'copy' }), isCopied ? 'Copied' : 'Copy Link'] })] }) }));
55
- }
56
- return (_jsxs(InnerStepContainer, { children: [!(externalWalletError === null || externalWalletError === void 0 ? void 0 : externalWalletError.length) ? (_jsx(CenteredText, { color: "contrast", weight: "semiBold", children: `Confirm the request to change networks in your ${wallet.name} wallet.` })) : (_jsxs(_Fragment, { children: [_jsxs(ErrorContainer, { children: [_jsx(ErrorIcon, { icon: "alertCircle" }), _jsx(CenteredText, { weight: "semiBold", color: "error", children: externalWalletError[0] })] }), externalWalletError[1] && (_jsx(CenteredText, { color: "secondary", weight: "medium", children: externalWalletError[1] }))] })), ((_a = externalWalletError === null || externalWalletError === void 0 ? void 0 : externalWalletError[0]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== NETWORK_NOT_SUPPORTED_ERROR && (_jsxs(CpslButton, { variant: "secondary", onClick: handleTryAgainClick, children: [_jsx(CpslIcon, { slot: "start", icon: "refresh" }), "Try Again"] }))] }));
57
- }, [wallet, walletDisplayHelpers, externalWalletError, qrUri]);
58
- if (!wallet) {
59
- return null;
60
- }
61
- return _jsx(Container, { children: Content });
62
- };
63
- const Container = styled(StepContainer) `
64
- flex: 1;
65
- justify-content: space-between;
66
- `;
67
- const ErrorContainer = styled.div `
68
- display: flex;
69
- align-items: center;
70
- justify-content: center;
71
- gap: 4px;
72
- `;
73
- const ErrorIcon = styled(CpslIcon) `
74
- --height: 16px;
75
- --width: 16px;
76
- --icon-color: var(--cpsl-color-text-error);
77
- `;
@@ -1,11 +0,0 @@
1
- export var TabValue;
2
- (function (TabValue) {
3
- TabValue["extension"] = "extension";
4
- TabValue["mobile"] = "mobile";
5
- TabValue["web"] = "web";
6
- })(TabValue || (TabValue = {}));
7
- export const TABS = {
8
- extension: { label: 'Extension', value: TabValue.extension, icon: 'puzzlePiece' },
9
- mobile: { label: 'Mobile', value: TabValue.mobile, icon: 'phone' },
10
- web: { label: 'Web', value: TabValue.web, icon: 'globe' },
11
- };
@@ -1,54 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CpslIcon } from '@getpara/react-components';
3
- import { styled } from 'styled-components';
4
- import { useModalStore } from '../../stores/index.js';
5
- import { useThemeStore } from '../../stores/theme/useThemeStore.js';
6
- import { useGoBack } from '../../hooks/useGoBack.js';
7
- import { AccountSelect, ChainSelect } from './Selects.js';
8
- import { ModalStep } from '../../utils/steps.js';
9
- import { HeaderButton } from '@getpara/react-common';
10
- export const Controls = ({ onClose }) => {
11
- const bareModal = useThemeStore(state => state.bareModal);
12
- const hasPreviousStep = useModalStore(state => state.hasPreviousStep());
13
- const step = useModalStore(state => state.step);
14
- const isFullyLoggedIn = useModalStore(state => state.isFullyLoggedIn);
15
- const goBack = useGoBack();
16
- const shouldShowSelects = [
17
- ModalStep.ACCOUNT_MAIN,
18
- ModalStep.CHAIN_SWITCH,
19
- ModalStep.ADD_FUNDS_BUY,
20
- ModalStep.ADD_FUNDS_RECEIVE,
21
- ModalStep.ADD_FUNDS_WITHDRAW,
22
- ].includes(step);
23
- const handleBackClick = () => {
24
- goBack();
25
- };
26
- return (_jsxs(Container, { children: [_jsx(BackButton, { variant: "ghost", style: {
27
- visibility: hasPreviousStep ? 'visible' : 'hidden',
28
- }, onClick: handleBackClick, children: _jsx(CpslIcon, { icon: "arrow" }) }), _jsx(MiddleContainer, { children: shouldShowSelects && isFullyLoggedIn && (_jsxs(_Fragment, { children: [_jsx(ChainSelect, {}), _jsx(AccountSelect, {})] })) }), _jsx(CloseButton, { bareModal: bareModal, variant: "ghost", onClick: onClose, children: _jsx(CpslIcon, { icon: "close" }) })] }));
29
- };
30
- const Container = styled.div `
31
- position: absolute;
32
- width: 100%;
33
- top: 16px;
34
-
35
- z-index: 3;
36
- display: flex;
37
- align-items: center;
38
- justify-content: space-between;
39
- gap: 8px;
40
- `;
41
- const MiddleContainer = styled.div `
42
- flex: 1;
43
- display: flex;
44
- align-items: center;
45
- justify-content: center;
46
- gap: 4px;
47
- `;
48
- const CloseButton = styled(HeaderButton) `
49
- transform: rotate(180deg);
50
- visibility: ${({ bareModal }) => (bareModal ? 'hidden' : 'visible')};
51
- `;
52
- const BackButton = styled(HeaderButton) `
53
- transform: rotate(180deg);
54
- `;