@getpara/react-sdk 1.2.0 → 1.3.1-dev.1

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 (205) hide show
  1. package/dist/cli/cli.mjs +43 -0
  2. package/dist/index.js +6428 -5
  3. package/dist/index.js.br +0 -0
  4. package/dist/index.js.gz +0 -0
  5. package/dist/modal/components/AuthInput/AuthInput.d.ts +1 -1
  6. package/dist/modal/components/AuthInput/hooks/useDropdownPosition.d.ts +4 -4
  7. package/dist/modal/components/ChainSwitch/ChainSwitch.d.ts +1 -1
  8. package/dist/modal/components/Controls/Selects.d.ts +1 -1
  9. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.d.ts +1 -1
  10. package/dist/modal/components/Footer/Footer.d.ts +1 -1
  11. package/dist/modal/components/WalletCard/WalletCard.d.ts +2 -2
  12. package/dist/modal/components/common.d.ts +2 -2
  13. package/dist/modal/index.d.ts +0 -1
  14. package/dist/modal/stores/index.d.ts +0 -1
  15. package/dist/modal/stores/modal/useModalStore.d.ts +6 -3
  16. package/dist/modal/types/modalProps.d.ts +1 -27
  17. package/dist/modal/utils/authLayoutHelpers.d.ts +2 -2
  18. package/dist/modal/utils/getTileButtonFlex.d.ts +1 -1
  19. package/dist/modal/utils/openPopup.d.ts +1 -1
  20. package/dist/provider/ParaProvider.d.ts +3 -1
  21. package/dist/provider/actions/checkIfUserExists.d.ts +2 -7
  22. package/dist/provider/actions/createUser.d.ts +2 -10
  23. package/dist/provider/actions/getAccount.d.ts +9 -6
  24. package/dist/provider/actions/getWallet.d.ts +1 -1
  25. package/dist/provider/actions/logout.d.ts +4 -1
  26. package/dist/provider/actions/waitForLoginAndSetup.d.ts +1 -1
  27. package/dist/provider/components/CosmosWalletWrapper.d.ts +12 -0
  28. package/dist/provider/components/EvmWalletWrapper.d.ts +12 -0
  29. package/dist/provider/components/ExternalWalletWrapper.d.ts +8 -0
  30. package/dist/provider/components/SolanaWalletWrapper.d.ts +9 -0
  31. package/dist/provider/external/getParaCosmosConnector.d.ts +7 -0
  32. package/dist/provider/external/getParaEvmConnector.d.ts +7 -0
  33. package/dist/provider/external/getParaSolanaConnector.d.ts +7 -0
  34. package/dist/provider/external/stubs/CosmosExternalWalletContextStub.d.ts +10 -0
  35. package/dist/provider/external/stubs/EvmExternalWalletContextStub.d.ts +3 -0
  36. package/dist/provider/external/stubs/SolanaExternalWalletContextStub.d.ts +6 -0
  37. package/dist/provider/hooks/mutations/useLogout.d.ts +3 -2
  38. package/dist/provider/hooks/queries/useAccount.d.ts +4 -3
  39. package/dist/provider/hooks/queries/useWallet.d.ts +1 -1
  40. package/dist/provider/hooks/utils/useClient.d.ts +1 -1
  41. package/dist/provider/hooks/utils/useWalletState.d.ts +2 -2
  42. package/dist/provider/index.d.ts +1 -0
  43. package/dist/provider/providers/CosmosExternalWalletProvider.d.ts +7 -0
  44. package/dist/provider/providers/EvmExternalWalletProvider.d.ts +7 -0
  45. package/dist/{modal/providers/ExternalWalletContext.d.ts → provider/providers/ExternalWalletProvider.d.ts} +20 -29
  46. package/dist/provider/providers/SolanaExternalWalletProvider.d.ts +7 -0
  47. package/dist/provider/stores/getters.d.ts +3 -3
  48. package/dist/provider/stores/setters.d.ts +1 -0
  49. package/dist/provider/stores/slices/config.d.ts +3 -0
  50. package/dist/provider/stores/slices/externalWallets.d.ts +3 -0
  51. package/dist/provider/stores/slices/index.d.ts +1 -0
  52. package/dist/provider/stores/types.d.ts +43 -1
  53. package/dist/provider/types/externalWalletProviders.d.ts +12 -0
  54. package/dist/provider/types/provider.d.ts +115 -16
  55. package/dist/provider/types/utils.d.ts +1 -0
  56. package/dist/provider/utils/paraConfigTypeGuards.d.ts +7 -0
  57. package/package.json +33 -9
  58. package/dist/modal/ParaModal.js +0 -281
  59. package/dist/modal/components/Account/Account.js +0 -60
  60. package/dist/modal/components/AddFunds/AddFunds.js +0 -147
  61. package/dist/modal/components/AddFunds/AddFundsAwaiting.js +0 -65
  62. package/dist/modal/components/AddFunds/AddFundsDone.js +0 -26
  63. package/dist/modal/components/AddFunds/MoonPayEmbed.js +0 -2
  64. package/dist/modal/components/AddFunds/index.js +0 -3
  65. package/dist/modal/components/AuthInput/AuthInput.js +0 -221
  66. package/dist/modal/components/AuthInput/countryCodes.js +0 -40
  67. package/dist/modal/components/AuthInput/hooks/useDropdownPosition.js +0 -23
  68. package/dist/modal/components/AuthInput/phoneMasks.js +0 -247
  69. package/dist/modal/components/AuthMainStep/AuthMainStep.js +0 -21
  70. package/dist/modal/components/AuthMainStep/AuthMainStepContent.js +0 -89
  71. package/dist/modal/components/AuthOptions/AuthOptions.js +0 -28
  72. package/dist/modal/components/AwaitingBiometricsStep/AwaitingBiometricsStep.js +0 -7
  73. package/dist/modal/components/AwaitingOAuthStep/AwaitingOAuthStep.js +0 -5
  74. package/dist/modal/components/AwaitingPasswordStep/AwaitingPasswordStep.js +0 -7
  75. package/dist/modal/components/AwaitingWalletCreationStep/AwaitingWalletCreationStep.js +0 -18
  76. package/dist/modal/components/BiometricCreationStep/BiometricCreationStep.js +0 -17
  77. package/dist/modal/components/BiometricLoginStep/BiometricLoginStep.js +0 -131
  78. package/dist/modal/components/Body/AnimatedHeightWrapper.js +0 -26
  79. package/dist/modal/components/Body/Body.js +0 -232
  80. package/dist/modal/components/ChainSwitch/ChainSwitch.js +0 -77
  81. package/dist/modal/components/ChainSwitch/config.js +0 -11
  82. package/dist/modal/components/Controls/Controls.js +0 -54
  83. package/dist/modal/components/Controls/Selects.js +0 -159
  84. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.js +0 -116
  85. package/dist/modal/components/ExternalWalletStep/config.js +0 -11
  86. package/dist/modal/components/ExternalWallets/ExternalWallets.js +0 -142
  87. package/dist/modal/components/ExternalWalletsWrapper/ExternalWalletsWrapper.d.ts +0 -7
  88. package/dist/modal/components/ExternalWalletsWrapper/ExternalWalletsWrapper.js +0 -119
  89. package/dist/modal/components/Footer/Footer.js +0 -71
  90. package/dist/modal/components/Header/Header.js +0 -24
  91. package/dist/modal/components/Header/hooks/useStepTitle.js +0 -42
  92. package/dist/modal/components/Hero/Hero.js +0 -119
  93. package/dist/modal/components/IFrameStep/IFrameStep.js +0 -41
  94. package/dist/modal/components/LoginDoneStep/LoginDoneStep.js +0 -19
  95. package/dist/modal/components/ModalContent/ModalContent.js +0 -282
  96. package/dist/modal/components/OAuth/FarcasterOAuthStep.js +0 -81
  97. package/dist/modal/components/OAuth/OAuth.js +0 -125
  98. package/dist/modal/components/OAuth/TelegramOAuthStep.js +0 -133
  99. package/dist/modal/components/OnRampComponents/AddingFunds.js +0 -10
  100. package/dist/modal/components/OnRampComponents/OnRampProviderButton.js +0 -72
  101. package/dist/modal/components/RecoverySecretStep/RecoverySecretStep.js +0 -67
  102. package/dist/modal/components/Setup2FAStep/Setup2FAStep.js +0 -105
  103. package/dist/modal/components/StripeComponents/StripeComponents.js +0 -78
  104. package/dist/modal/components/TwoFactorDoneStep/TwoFactorDoneStep.js +0 -8
  105. package/dist/modal/components/VerificationCodeStep/VerificationCodeStep.js +0 -135
  106. package/dist/modal/components/Waiting/Waiting.js +0 -6
  107. package/dist/modal/components/WalletCard/PartnerIcon.js +0 -29
  108. package/dist/modal/components/WalletCard/WalletCard.js +0 -93
  109. package/dist/modal/components/WalletCreationDoneStep/WalletCreationDoneStep.js +0 -50
  110. package/dist/modal/components/common.js +0 -67
  111. package/dist/modal/components/index.js +0 -1
  112. package/dist/modal/constants/constants.js +0 -93
  113. package/dist/modal/constants/defaults.js +0 -5
  114. package/dist/modal/constants/oAuthLogos.js +0 -18
  115. package/dist/modal/hooks/useActiveWallet.d.ts +0 -1
  116. package/dist/modal/hooks/useActiveWallet.js +0 -11
  117. package/dist/modal/hooks/useEmbeddedExternalConnection.d.ts +0 -1
  118. package/dist/modal/hooks/useEmbeddedExternalConnection.js +0 -46
  119. package/dist/modal/hooks/useGoBack.js +0 -34
  120. package/dist/modal/index.js +0 -9
  121. package/dist/modal/providers/CosmosExternalWalletContextStub.d.ts +0 -29
  122. package/dist/modal/providers/CosmosExternalWalletContextStub.js +0 -18
  123. package/dist/modal/providers/EvmExternalWalletContextStub.d.ts +0 -33
  124. package/dist/modal/providers/EvmExternalWalletContextStub.js +0 -22
  125. package/dist/modal/providers/ExternalWalletContext.js +0 -253
  126. package/dist/modal/providers/SolanaExternalWalletContextStub.d.ts +0 -21
  127. package/dist/modal/providers/SolanaExternalWalletContextStub.js +0 -12
  128. package/dist/modal/stores/externalWalletProvider/actions.d.ts +0 -3
  129. package/dist/modal/stores/externalWalletProvider/actions.js +0 -5
  130. package/dist/modal/stores/externalWalletProvider/useExternalWalletProviderStore.d.ts +0 -20
  131. package/dist/modal/stores/externalWalletProvider/useExternalWalletProviderStore.js +0 -13
  132. package/dist/modal/stores/index.js +0 -3
  133. package/dist/modal/stores/modal/actions.js +0 -64
  134. package/dist/modal/stores/modal/useModalStore.js +0 -41
  135. package/dist/modal/stores/para/actions.d.ts +0 -3
  136. package/dist/modal/stores/para/actions.js +0 -5
  137. package/dist/modal/stores/para/useParaStore.d.ts +0 -10
  138. package/dist/modal/stores/para/useParaStore.js +0 -3
  139. package/dist/modal/stores/theme/actions.d.ts +0 -3
  140. package/dist/modal/stores/theme/actions.js +0 -24
  141. package/dist/modal/stores/theme/useThemeStore.d.ts +0 -20
  142. package/dist/modal/stores/theme/useThemeStore.js +0 -14
  143. package/dist/modal/stores/userInfo/actions.js +0 -34
  144. package/dist/modal/stores/userInfo/useUserInfoStore.js +0 -9
  145. package/dist/modal/types/commonTypes.js +0 -1
  146. package/dist/modal/types/externalWallets.js +0 -21
  147. package/dist/modal/types/modalProps.js +0 -7
  148. package/dist/modal/utils/authLayoutHelpers.js +0 -2
  149. package/dist/modal/utils/getMailtoLink.js +0 -5
  150. package/dist/modal/utils/getTileButtonFlex.js +0 -15
  151. package/dist/modal/utils/isPasskeySupported.js +0 -10
  152. package/dist/modal/utils/openPopup.js +0 -55
  153. package/dist/modal/utils/routeMobileExternalWallet.js +0 -35
  154. package/dist/modal/utils/steps.js +0 -215
  155. package/dist/modal/utils/stringFormatters.js +0 -12
  156. package/dist/modal/utils/validateOnRampConfig.js +0 -26
  157. package/dist/provider/ParaProvider.js +0 -17
  158. package/dist/provider/actions/checkIfUserExists.js +0 -26
  159. package/dist/provider/actions/createUser.js +0 -30
  160. package/dist/provider/actions/getAccount.js +0 -24
  161. package/dist/provider/actions/getWallet.js +0 -16
  162. package/dist/provider/actions/initiateLogin.js +0 -23
  163. package/dist/provider/actions/keepSessionAlive.js +0 -23
  164. package/dist/provider/actions/logout.js +0 -20
  165. package/dist/provider/actions/signMessage.js +0 -23
  166. package/dist/provider/actions/signTransaction.js +0 -23
  167. package/dist/provider/actions/waitForAccountCreation.js +0 -24
  168. package/dist/provider/actions/waitForLoginAndSetup.js +0 -27
  169. package/dist/provider/actions/waitForPasskeyAndCreateWallet.js +0 -24
  170. package/dist/provider/hooks/index.js +0 -3
  171. package/dist/provider/hooks/mutations/index.js +0 -10
  172. package/dist/provider/hooks/mutations/useCheckIfUserExists.js +0 -23
  173. package/dist/provider/hooks/mutations/useCreateUser.js +0 -23
  174. package/dist/provider/hooks/mutations/useInitiateLogin.js +0 -23
  175. package/dist/provider/hooks/mutations/useKeepSessionAlive.js +0 -23
  176. package/dist/provider/hooks/mutations/useLogout.js +0 -33
  177. package/dist/provider/hooks/mutations/useSignMessage.js +0 -33
  178. package/dist/provider/hooks/mutations/useSignTransaction.js +0 -33
  179. package/dist/provider/hooks/mutations/useWaitForAccountCreation.js +0 -30
  180. package/dist/provider/hooks/mutations/useWaitForLoginAndSetup.js +0 -30
  181. package/dist/provider/hooks/mutations/useWaitForPasskeyAndCreateWallet.js +0 -30
  182. package/dist/provider/hooks/queries/index.js +0 -2
  183. package/dist/provider/hooks/queries/useAccount.js +0 -23
  184. package/dist/provider/hooks/queries/useWallet.js +0 -24
  185. package/dist/provider/hooks/utils/index.js +0 -3
  186. package/dist/provider/hooks/utils/useAutoSessionKeepAlive.js +0 -79
  187. package/dist/provider/hooks/utils/useClient.js +0 -8
  188. package/dist/provider/hooks/utils/useEventListeners.js +0 -87
  189. package/dist/provider/hooks/utils/useInternalClient.js +0 -9
  190. package/dist/provider/hooks/utils/useModal.js +0 -15
  191. package/dist/provider/hooks/utils/useWalletState.js +0 -33
  192. package/dist/provider/index.js +0 -3
  193. package/dist/provider/stores/getters.js +0 -5
  194. package/dist/provider/stores/slices/client.js +0 -4
  195. package/dist/provider/stores/slices/index.js +0 -3
  196. package/dist/provider/stores/slices/modal.js +0 -4
  197. package/dist/provider/stores/slices/wallet.js +0 -6
  198. package/dist/provider/stores/types.js +0 -1
  199. package/dist/provider/stores/useStore.js +0 -14
  200. package/dist/provider/types/provider.js +0 -1
  201. package/dist/provider/types/query.js +0 -1
  202. package/dist/provider/types/utils.js +0 -1
  203. package/dist/provider/utils/renameMutations.js +0 -19
  204. /package/dist/{modal/css → css}/modal.css +0 -0
  205. /package/dist/{modal/public → public}/Inter-VariableFont_slnt,wght.ttf +0 -0
@@ -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
- `;
@@ -1,159 +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 } from "react/jsx-runtime";
11
- import { CpslIdenticon, CpslSelect, CpslSelectItem, CpslText } from '@getpara/react-components';
12
- import { useExternalWallets } from '../../providers/ExternalWalletContext.js';
13
- import styled from 'styled-components';
14
- import { useThemeStore } from '../../stores/index.js';
15
- import { truncateAddress, WalletType } from '@getpara/web-sdk';
16
- import { useEffect, useRef } from 'react';
17
- import { useDropdownPosition } from '../AuthInput/hooks/useDropdownPosition.js';
18
- import { MOBILE_SIZE } from '../../constants/constants.js';
19
- import { useActiveWallet } from '../../hooks/useActiveWallet.js';
20
- import { useWalletState } from '../../../provider/index.js';
21
- import { useInternalClient } from '../../../provider/hooks/utils/useInternalClient.js';
22
- const getValue = (id, type) => {
23
- return id && type ? `${id}~${type}` : undefined;
24
- };
25
- const WALLET_TYPES = {
26
- [WalletType.EVM]: 'EVM',
27
- [WalletType.SOLANA]: 'Solana',
28
- [WalletType.COSMOS]: 'Cosmos',
29
- };
30
- export const ChainSelect = () => {
31
- var _a, _b;
32
- const containerRef = useRef(null);
33
- const { dropdownMaxHeight, dropdownWidth, mobileAnchor, resize } = useDropdownPosition(containerRef);
34
- const activeWallet = useActiveWallet();
35
- const { switchChain, chainId, chains, chainIdSwitchingTo } = useExternalWallets();
36
- useEffect(() => {
37
- if (dropdownMaxHeight && chainId) {
38
- resize();
39
- }
40
- }, [chainId, chainIdSwitchingTo, dropdownMaxHeight]);
41
- const handleChainChange = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
42
- yield switchChain(chainId);
43
- });
44
- if (!activeWallet || !activeWallet.isExternal || activeWallet.type === WalletType.SOLANA) {
45
- return null;
46
- }
47
- const chainIdToUse = chainIdSwitchingTo !== null && chainIdSwitchingTo !== void 0 ? chainIdSwitchingTo : chainId;
48
- const selectedChainName = (_a = chains.find(c => c.id.toString() === chainIdToUse)) === null || _a === void 0 ? void 0 : _a.name;
49
- return (_jsx(Container, { children: _jsx(SelectContainer, { ref: containerRef, id: "inputContainer", children: _jsxs(StyledSelect, { selectedValue: (_b = chainIdToUse === null || chainIdToUse === void 0 ? void 0 : chainIdToUse.toString()) !== null && _b !== void 0 ? _b : '', onCpslSelectValueChange: e => {
50
- handleChainChange(e.detail);
51
- }, showFormattedSelectedItem: true, placeholder: "Choose chain...", anchorElId: "inputContainer", dropdownMaxHeight: dropdownMaxHeight, "$width": dropdownWidth, "$top": mobileAnchor + 16 + 1, autoWidth: true, selectedItemVariant: "bodyXS", children: [chainIdToUse && (_jsx(ChainName, { variant: "bodyXS", color: "contrast", slot: "selected-item", children: selectedChainName })), chains === null || chains === void 0 ? void 0 : chains.map(chain => (_jsx(StyledSelectItem, { slot: "items", value: chain.id.toString(), children: _jsx(ChainName, { variant: "bodyXS", color: "contrast", children: chain.name }) }, chain.id)))] }) }) }));
52
- };
53
- function getName(para, { type, isExternal, name, isMenu = false, hideWallets = false, }) {
54
- if (para.isMultiWallet) {
55
- return (name !== null && name !== void 0 ? name : `${isExternal ? 'External ' : ''}${WALLET_TYPES[type]}${!hideWallets && (isMenu || isExternal) ? ' Wallet' : ''}`);
56
- }
57
- return hideWallets ? 'My Account' : name || 'My Wallet';
58
- }
59
- export const AccountSelect = () => {
60
- const hideWallets = useThemeStore(state => state.hideWallets);
61
- const para = useInternalClient();
62
- const containerRef = useRef(null);
63
- const { dropdownMaxHeight, dropdownWidth, mobileAnchor, resize } = useDropdownPosition(containerRef);
64
- const { setSelectedWallet } = useWalletState();
65
- const activeWallet = useActiveWallet();
66
- const ActiveWalletNode = activeWallet ? (_jsxs(FlexRow, { slot: "selected-item", children: [_jsx(CpslIdenticon, { variant: "avatar", size: "14px", hash: para.getIdenticonHash(activeWallet.id, activeWallet.type) }), _jsx(WalletName, { variant: "bodyXS", color: "contrast", children: getName(para, Object.assign(Object.assign({}, activeWallet), { hideWallets })) }), !hideWallets && (_jsx(CpslText, { variant: "bodyXS", color: "secondary", children: para.getDisplayAddress(activeWallet.id, { truncate: true, addressType: activeWallet.type }) }))] })) : null;
67
- useEffect(() => {
68
- if (dropdownMaxHeight && (activeWallet === null || activeWallet === void 0 ? void 0 : activeWallet.address)) {
69
- resize();
70
- }
71
- }, [activeWallet, para.availableWallets, dropdownMaxHeight]);
72
- return (_jsx(Container, { children: _jsx(SelectContainer, { ref: containerRef, id: "addressInputContainer", children: para.availableWallets.length > 1 ? (_jsxs(StyledSelect, { selectedValue: getValue(activeWallet === null || activeWallet === void 0 ? void 0 : activeWallet.id, activeWallet === null || activeWallet === void 0 ? void 0 : activeWallet.type), onCpslSelectValueChange: e => {
73
- const [id, type] = e.detail.split('~');
74
- setSelectedWallet({ id, type: type });
75
- }, showFormattedSelectedItem: true, placeholder: "Choose wallet...", anchorElId: "addressInputContainer", dropdownMaxHeight: dropdownMaxHeight, "$width": dropdownWidth, "$top": mobileAnchor + 16 + 1, autoWidth: true, selectedItemVariant: "bodyXS", children: [activeWallet && ActiveWalletNode, para.availableWallets.map(({ address, name: _name, id, type, isExternal }) => {
76
- const key = getValue(id, type);
77
- const name = _name !== null && _name !== void 0 ? _name : getName(para, { type, isExternal, isMenu: true, hideWallets });
78
- return (_jsx(StyledSelectItem, { slot: "items", value: key, children: _jsxs(FlexRow, { children: [_jsx(CpslIdenticon, { size: "40px", hash: para.getIdenticonHash(id, type) }), _jsxs(FlexCol, { children: [name && (_jsx(CpslText, { variant: "bodyS", color: "contrast", children: name })), !hideWallets && (_jsx(CpslText, { variant: "bodyXS", color: "secondary", children: truncateAddress(address, type, { prefix: para.cosmosPrefix }) }))] })] }) }, key));
79
- })] })) : (ActiveWalletNode) }) }));
80
- };
81
- const Container = styled.div `
82
- flex: 0;
83
- width: 100%;
84
- display: flex;
85
- justify-content: center;
86
- `;
87
- const FlexRow = styled.div `
88
- display: flex;
89
- align-items: center;
90
- gap: 8px;
91
- `;
92
- const FlexCol = styled.div `
93
- display: flex;
94
- flex-direction: column;
95
- align-items: flex-start;
96
- `;
97
- const WalletName = styled(CpslText) `
98
- white-space: nowrap;
99
- `;
100
- const SelectContainer = styled.div `
101
- position: relative;
102
- display: flex;
103
- align-items: center;
104
- gap: 8px;
105
- border-radius: 1000px;
106
- background-color: var(--cpsl-color-background-8);
107
- padding: 8px;
108
- `;
109
- const ChainName = styled(CpslText) `
110
- max-width: 150px;
111
- text-transform: capitalize;
112
-
113
- &::part(text-element) {
114
- white-space: nowrap;
115
- text-overflow: ellipsis;
116
- overflow: hidden;
117
- }
118
- `;
119
- const StyledSelect = styled(CpslSelect) `
120
- --container-height: auto;
121
- --container-border-width: 0px;
122
- --container-padding-end: 0px;
123
- --container-padding-start: 0px;
124
- --container-background-color: transparent;
125
- --container-box-shadow: none;
126
- --container-gap: 2px;
127
- --icon-width: 16px;
128
- --icon-height: 16px;
129
-
130
- &::part(selected-text) {
131
- white-space: nowrap;
132
- }
133
-
134
- &::part(dropdown) {
135
- min-width: ${({ $width }) => `${$width - 2}px`};
136
- }
137
-
138
- &::part(popover) {
139
- /* Have to adjust the top of the popover here since we're using a transform on the modal which causes fixed position items to not be relative to the viewport */
140
- @media (max-width: ${MOBILE_SIZE}px) {
141
- top: ${({ $top }) => ($top ? `${$top}px` : '0px')};
142
- bottom: 16px;
143
- }
144
- cpsl-auth-modal.force-mobile-media & {
145
- top: ${({ $top }) => ($top ? `${$top}px` : '0px')};
146
- bottom: 16px;
147
- }
148
- }
149
-
150
- &::part(icon) {
151
- --icon-color: var(--cpsl-color-contrast);
152
- }
153
- `;
154
- const StyledSelectItem = styled(CpslSelectItem) `
155
- --outer-container-padding-start: 4px;
156
- --outer-container-padding-end: 4px;
157
- --outer-container-padding-top: 4px;
158
- --outer-container-padding-bottom: 4px;
159
- `;
@@ -1,116 +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 { isMobile, isTablet, WalletType } from '@getpara/web-sdk';
20
- import { routeMobileExternalWallet } from '../../utils/routeMobileExternalWallet.js';
21
- export const ExternalWalletStep = () => {
22
- const [isCopied, copy] = useCopyToClipboard();
23
- const externalWalletError = useModalStore(state => state.externalWalletError);
24
- const setStep = useModalStore(state => state.setStep);
25
- const { connectExternalWallet, wallet, qrUri, walletDisplayHelpers } = useExternalWallets();
26
- useEffect(() => {
27
- routeMobileExternalWallet(qrUri);
28
- }, [qrUri]);
29
- const handleTryAgainClick = () => __awaiter(void 0, void 0, void 0, function* () {
30
- yield connectExternalWallet(wallet);
31
- });
32
- const handleCopy = () => {
33
- copy(qrUri);
34
- };
35
- const Content = useMemo(() => {
36
- var _a, _b, _c;
37
- if (!wallet) {
38
- return null;
39
- }
40
- const isWalletConnect = wallet.id === 'walletConnect';
41
- const isMobileWalletConnect = isMobile() && isWalletConnect;
42
- if (isMobileWalletConnect) {
43
- _jsx(InnerStepContainer, { children: _jsx(Text, { weight: "semiBold", children: "Continue in the WalletConnect modal." }) });
44
- }
45
- const { showExtension, showMobile, isSolanaMobileIOS } = walletDisplayHelpers;
46
- // Fallback to not supported text
47
- if ((!showMobile && !showExtension) || (isSolanaMobileIOS && !wallet.installed)) {
48
- const text = isSolanaMobileIOS
49
- ? "Solana wallets aren't available on mobile IOS browsers.\n\nPlease continue in the wallet app."
50
- : `${wallet.name} isn't supported on mobile devices.\n\nPlease choose another wallet or continue on desktop.`;
51
- return (_jsx(InnerStepContainer, { children: _jsx(Text, { weight: "semiBold", children: text }) }));
52
- }
53
- if (showExtension) {
54
- const isInstalled = wallet.installed;
55
- return (_jsxs(InnerStepContainer, { children: [isInstalled && !(externalWalletError === null || externalWalletError === void 0 ? void 0 : externalWalletError.length) ? (_jsx(CenteredText, { color: "contrast", weight: "semiBold", children: `Confirm connection request in the ${wallet.name} browser extension.` })) : (_jsxs(ErrorContainer, { children: [_jsx(ErrorIcon, { icon: "alertCircle" }), _jsx(CpslText, { weight: "semiBold", color: "error", children: isInstalled ? externalWalletError === null || externalWalletError === void 0 ? void 0 : externalWalletError[0] : `${wallet.name} not detected` })] })), _jsxs(CpslButton, { as: isInstalled ? 'button' : 'a', href: (_a = wallet.downloadUrl) !== null && _a !== void 0 ? _a : '', target: "_blank", variant: "secondary", onClick: handleTryAgainClick, children: [_jsx(CpslIcon, { slot: "start", icon: isInstalled ? 'refresh' : 'linkExternal' }), isInstalled ? 'Try Again' : `Get ${wallet.name}`] })] }));
56
- }
57
- if (showMobile) {
58
- // If Solana wallet or if on a mobile and NOT on a table, show the connection screen. Else show the QR code.
59
- if (wallet.type === WalletType.SOLANA || (isMobile() && !isTablet())) {
60
- // Checking if the wallet is installed only for Solana wallets since Solana MWA doesn't work on IOS Safari
61
- // https://docs.solanamobile.com/web/developing-for-web#ios-web
62
- const isInstalled = wallet.type !== WalletType.SOLANA || wallet.installed;
63
- return (_jsxs(_Fragment, { children: [_jsx(InnerStepContainer, { children: !isInstalled && (_jsx(CpslText, { weight: "semiBold", color: "error", children: `${wallet.name} not detected` })) }), wallet.id !== 'walletConnect' && (_jsxs(InnerStepContainer, { children: [_jsx(CpslButton, { onClick: () => routeMobileExternalWallet(qrUri), fullWidth: true, children: "Connect Wallet" }), _jsx(Link, { href: (_b = wallet.downloadUrl) !== null && _b !== void 0 ? _b : '', target: "_blank", children: _jsxs(ExternalButton, { variant: "secondary", children: [`Get ${wallet.name}`, _jsx(ExternalIcon, { icon: "linkExternal" })] }) })] }))] }));
64
- }
65
- const openWCModal = () => __awaiter(void 0, void 0, void 0, function* () {
66
- yield connectExternalWallet(wallet, true, true);
67
- });
68
- const GetWalletButton = (_jsxs(ExternalButton, { variant: "secondary", onClick: isWalletConnect ? openWCModal : undefined, children: [`${isWalletConnect ? 'Open' : 'Get'} ${wallet.name}`, _jsx(ExternalIcon, { icon: "linkExternal" })] }));
69
- return (_jsxs(_Fragment, { children: [_jsxs(InnerStepContainer, { children: [_jsx(CpslText, { weight: "semiBold", children: "Scan with your mobile device" }), _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'] })] }), _jsx(InnerStepContainer, { children: isWalletConnect ? (_jsx(_Fragment, { children: GetWalletButton })) : (_jsx(Link, { href: (_c = wallet.downloadUrl) !== null && _c !== void 0 ? _c : '', target: "_blank", children: GetWalletButton })) })] }));
70
- }
71
- }, [wallet, walletDisplayHelpers, externalWalletError, qrUri]);
72
- useEffect(() => {
73
- if (!wallet) {
74
- setStep(ModalStep.AUTH_MAIN);
75
- }
76
- }, [wallet]);
77
- if (!wallet) {
78
- return null;
79
- }
80
- return _jsx(Container, { children: Content });
81
- };
82
- const Container = styled(StepContainer) `
83
- flex: 1;
84
- justify-content: space-between;
85
- `;
86
- const ErrorContainer = styled.div `
87
- display: flex;
88
- align-items: center;
89
- justify-content: center;
90
- gap: 4px;
91
- `;
92
- const ErrorIcon = styled(CpslIcon) `
93
- --height: 16px;
94
- --width: 16px;
95
- --icon-color: var(--cpsl-color-text-error);
96
- `;
97
- const Text = styled(CenteredText) `
98
- white-space: pre-line;
99
- `;
100
- const ExternalButton = styled(CpslButton) `
101
- display: flex;
102
- gap: 8px;
103
- align-items: center;
104
- justify-content: center;
105
- width: 100%;
106
- cursor: pointer;
107
- margin-top: 8px;
108
- text-decoration: none;
109
- `;
110
- const ExternalIcon = styled(CpslIcon) `
111
- --height: 20px;
112
- --width: 20px;
113
- `;
114
- const Link = styled.a `
115
- text-decoration: none;
116
- `;