@getpara/react-sdk-lite 2.0.0-dev.7 → 2.1.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 (172) hide show
  1. package/dist/cli/cli.mjs +26 -1
  2. package/dist/modal/ParaModal.js +16 -10
  3. package/dist/modal/components/Account/Account.js +42 -4
  4. package/dist/modal/components/Account/AccountHeader.js +13 -16
  5. package/dist/modal/components/Account/AccountProfile.d.ts +1 -1
  6. package/dist/modal/components/Account/AccountProfile.js +82 -210
  7. package/dist/modal/components/Account/AccountProfileEntry.d.ts +12 -0
  8. package/dist/modal/components/Account/AccountProfileEntry.js +228 -0
  9. package/dist/modal/components/Account/AccountProfileLinkOptions.js +15 -4
  10. package/dist/modal/components/Account/AccountSend/AccountSendAsset.d.ts +1 -0
  11. package/dist/modal/components/Account/AccountSend/AccountSendAsset.js +94 -0
  12. package/dist/modal/components/Account/AccountSend/AccountSendForm.d.ts +1 -0
  13. package/dist/modal/components/Account/AccountSend/AccountSendForm.js +343 -0
  14. package/dist/modal/components/Account/AccountSend/AccountSendNetwork.d.ts +1 -0
  15. package/dist/modal/components/Account/AccountSend/AccountSendNetwork.js +53 -0
  16. package/dist/modal/components/Account/AccountSend/AccountSendNoAssets.d.ts +1 -0
  17. package/dist/modal/components/Account/AccountSend/AccountSendNoAssets.js +56 -0
  18. package/dist/modal/components/Account/AccountSend/AssetNetwork.d.ts +5 -0
  19. package/dist/modal/components/Account/AccountSend/AssetNetwork.js +36 -0
  20. package/dist/modal/components/Account/AccountSend/context.d.ts +38 -0
  21. package/dist/modal/components/Account/AccountSend/context.js +418 -0
  22. package/dist/modal/components/Account/AccountSend/index.d.ts +4 -0
  23. package/dist/modal/components/Account/AccountSend/index.js +67 -0
  24. package/dist/modal/components/Account/AccountWallet.d.ts +1 -0
  25. package/dist/modal/components/Account/AccountWallet.js +134 -0
  26. package/dist/modal/components/{WalletSelect/WalletSelect.d.ts → Account/AccountWalletSelect.d.ts} +1 -1
  27. package/dist/modal/components/{WalletSelect/WalletSelect.js → Account/AccountWalletSelect.js} +20 -6
  28. package/dist/modal/components/AddFunds/AddFunds.js +3 -2
  29. package/dist/modal/components/AddFunds/AddFundsAsset.js +7 -6
  30. package/dist/modal/components/AddFunds/AddFundsContext.d.ts +5 -5
  31. package/dist/modal/components/AddFunds/AddFundsProvider.js +1 -2
  32. package/dist/modal/components/AddFunds/AddFundsSettings.js +13 -54
  33. package/dist/modal/components/AddFunds/common.d.ts +0 -14
  34. package/dist/modal/components/AddFunds/common.js +1 -8
  35. package/dist/modal/components/AuthInput/AuthInput.js +2 -2
  36. package/dist/modal/components/AwaitingAccountStep/AwaitingAccountStep.js +3 -2
  37. package/dist/modal/components/AwaitingWalletCreationStep/AwaitingWalletCreationStep.js +8 -33
  38. package/dist/modal/components/BiometricLoginStep/BiometricLoginStep.js +5 -2
  39. package/dist/modal/components/Body/Body.js +81 -48
  40. package/dist/modal/components/ChainSwitch/ChainSwitch.js +8 -5
  41. package/dist/modal/components/Controls/ChainSelect.js +1 -2
  42. package/dist/modal/components/Controls/Controls.js +3 -1
  43. package/dist/modal/components/ExternalWalletNetworkSelectStep/ExternalWalletNetworkSelectStep.d.ts +5 -1
  44. package/dist/modal/components/ExternalWalletNetworkSelectStep/ExternalWalletNetworkSelectStep.js +48 -19
  45. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.d.ts +5 -2
  46. package/dist/modal/components/ExternalWalletStep/ExternalWalletStep.js +63 -33
  47. package/dist/modal/components/ExternalWallets/ExternalWallets.d.ts +3 -1
  48. package/dist/modal/components/ExternalWallets/ExternalWallets.js +22 -12
  49. package/dist/modal/components/Footer/Footer.js +4 -5
  50. package/dist/modal/components/Header/Header.js +1 -2
  51. package/dist/modal/components/Header/hooks/useStepTitle.js +53 -38
  52. package/dist/modal/components/Hero/Hero.js +5 -3
  53. package/dist/modal/components/IFrameStep/IFrameStep.js +13 -12
  54. package/dist/modal/components/LoginDoneStep/LoginDoneStep.js +4 -1
  55. package/dist/modal/components/OAuth/FarcasterOAuthStep.js +6 -5
  56. package/dist/modal/components/OAuth/TelegramOAuthStep.js +6 -5
  57. package/dist/modal/components/OnRampComponents/AddingFunds.js +1 -1
  58. package/dist/modal/components/OnRampComponents/OnRampProviderButton.js +1 -2
  59. package/dist/modal/components/QuantityInput.d.ts +9 -0
  60. package/dist/modal/components/QuantityInput.js +91 -0
  61. package/dist/modal/components/SearchableButtonList.d.ts +34 -0
  62. package/dist/modal/components/SearchableButtonList.js +223 -0
  63. package/dist/modal/components/Setup2FAStep/Setup2FAStep.js +4 -1
  64. package/dist/modal/components/SwitchWalletsStep/SwitchWalletsStep.d.ts +1 -0
  65. package/dist/modal/components/SwitchWalletsStep/SwitchWalletsStep.js +10 -0
  66. package/dist/modal/components/VerificationCodeStep/VerificationCodeStep.js +13 -2
  67. package/dist/modal/components/Waiting/Waiting.d.ts +1 -1
  68. package/dist/modal/components/Waiting/Waiting.js +7 -2
  69. package/dist/modal/components/WalletCard/WalletCard.js +2 -3
  70. package/dist/modal/components/WalletSelectOld/WalletSelectOld.d.ts +7 -1
  71. package/dist/modal/components/WalletSelectOld/WalletSelectOld.js +33 -12
  72. package/dist/modal/components/common.d.ts +8 -10
  73. package/dist/modal/components/common.js +16 -36
  74. package/dist/modal/hooks/index.d.ts +4 -0
  75. package/dist/modal/hooks/index.js +5 -0
  76. package/dist/modal/hooks/useDebounce.d.ts +4 -0
  77. package/dist/modal/hooks/useDebounce.js +16 -0
  78. package/dist/modal/hooks/useFarcasterLogin.js +8 -1
  79. package/dist/modal/hooks/useTelegramLogin.js +4 -0
  80. package/dist/modal/index.d.ts +1 -1
  81. package/dist/modal/index.js +1 -1
  82. package/dist/modal/stores/modal/actions.js +9 -2
  83. package/dist/modal/stores/modal/useModalStore.d.ts +9 -1
  84. package/dist/modal/stores/modal/useModalStore.js +6 -2
  85. package/dist/modal/types/modalProps.d.ts +5 -1
  86. package/dist/modal/utils/authInputHelpers.js +1 -1
  87. package/dist/modal/utils/countryCodes.js +50 -1
  88. package/dist/modal/utils/getWalletDisplayName.js +1 -1
  89. package/dist/modal/utils/openPopup.d.ts +1 -1
  90. package/dist/modal/utils/openPopup.js +6 -2
  91. package/dist/modal/utils/renderTextWithLinks.d.ts +2 -0
  92. package/dist/modal/utils/renderTextWithLinks.js +34 -0
  93. package/dist/modal/utils/steps.d.ts +24 -3
  94. package/dist/modal/utils/steps.js +51 -5
  95. package/dist/modal/utils/stringFormatters.d.ts +2 -3
  96. package/dist/modal/utils/stringFormatters.js +11 -7
  97. package/dist/modal/utils/validatePortalOrigin.d.ts +2 -0
  98. package/dist/modal/utils/validatePortalOrigin.js +15 -0
  99. package/dist/provider/ParaProviderMin.js +13 -5
  100. package/dist/provider/actions/getEmbeddedAccount.d.ts +3 -2
  101. package/dist/provider/actions/getEmbeddedAccount.js +13 -4
  102. package/dist/provider/actions/index.d.ts +11 -9
  103. package/dist/provider/actions/index.js +4 -0
  104. package/dist/provider/components/CosmosWalletWrapper.js +3 -3
  105. package/dist/provider/components/EvmWalletWrapper.js +3 -3
  106. package/dist/provider/components/ExternalWalletWrapper.js +7 -1
  107. package/dist/provider/external/stubs/CosmosExternalWalletContextStub.js +3 -1
  108. package/dist/provider/external/stubs/EvmExternalWalletContextStub.js +3 -1
  109. package/dist/provider/external/stubs/SolanaExternalWalletContextStub.js +3 -1
  110. package/dist/provider/hooks/mutations/index.d.ts +2 -0
  111. package/dist/provider/hooks/mutations/index.js +4 -0
  112. package/dist/provider/hooks/mutations/useAddAuthMethod.d.ts +42 -0
  113. package/dist/provider/hooks/mutations/useAddAuthMethod.js +57 -0
  114. package/dist/provider/hooks/mutations/useClaimPregenWallets.d.ts +2 -2
  115. package/dist/provider/hooks/mutations/useCreateGuestWallets.d.ts +2 -2
  116. package/dist/provider/hooks/mutations/useCreatePregenWallet.d.ts +5 -5
  117. package/dist/provider/hooks/mutations/useCreatePregenWalletPerType.d.ts +2 -2
  118. package/dist/provider/hooks/mutations/useCreateWallet.d.ts +2 -2
  119. package/dist/provider/hooks/mutations/useCreateWalletPerType.d.ts +2 -2
  120. package/dist/provider/hooks/mutations/useEnable2fa.d.ts +2 -2
  121. package/dist/provider/hooks/mutations/useExportPrivateKey.d.ts +15 -0
  122. package/dist/provider/hooks/mutations/useExportPrivateKey.js +32 -0
  123. package/dist/provider/hooks/mutations/useHasPregenWallet.d.ts +2 -2
  124. package/dist/provider/hooks/mutations/useIssueJwt.d.ts +2 -2
  125. package/dist/provider/hooks/mutations/useKeepSessionAlive.d.ts +2 -2
  126. package/dist/provider/hooks/mutations/useLoginExternalWallet.d.ts +8 -2
  127. package/dist/provider/hooks/mutations/useLogout.d.ts +2 -2
  128. package/dist/provider/hooks/mutations/useResendVerificationCode.d.ts +2 -2
  129. package/dist/provider/hooks/mutations/useSetup2fa.d.ts +2 -2
  130. package/dist/provider/hooks/mutations/useSignMessage.d.ts +2 -2
  131. package/dist/provider/hooks/mutations/useSignTransaction.d.ts +2 -2
  132. package/dist/provider/hooks/mutations/useSignUpOrLogIn.d.ts +2 -2
  133. package/dist/provider/hooks/mutations/useSwitchWallets.d.ts +57 -0
  134. package/dist/provider/hooks/mutations/useSwitchWallets.js +30 -0
  135. package/dist/provider/hooks/mutations/useUpdatePregenWalletIdentifier.d.ts +2 -2
  136. package/dist/provider/hooks/mutations/useVerify2fa.d.ts +2 -2
  137. package/dist/provider/hooks/mutations/useVerifyExternalWallet.d.ts +18 -27
  138. package/dist/provider/hooks/mutations/useVerifyFarcaster.d.ts +5 -5
  139. package/dist/provider/hooks/mutations/useVerifyNewAccount.d.ts +14 -11
  140. package/dist/provider/hooks/mutations/useVerifyOAuth.d.ts +2 -2
  141. package/dist/provider/hooks/mutations/useVerifyTelegram.d.ts +5 -5
  142. package/dist/provider/hooks/mutations/useWaitForLogin.d.ts +2 -2
  143. package/dist/provider/hooks/mutations/useWaitForSignup.d.ts +2 -2
  144. package/dist/provider/hooks/mutations/useWaitForWalletCreation.d.ts +2 -2
  145. package/dist/provider/hooks/queries/index.d.ts +1 -0
  146. package/dist/provider/hooks/queries/index.js +2 -0
  147. package/dist/provider/hooks/queries/useAccount.js +58 -24
  148. package/dist/provider/hooks/queries/useLinkedAccounts.js +4 -2
  149. package/dist/provider/hooks/queries/useProfileBalance.d.ts +29 -0
  150. package/dist/provider/hooks/queries/useProfileBalance.js +65 -0
  151. package/dist/provider/hooks/utils/useAssetInfo.d.ts +3 -0
  152. package/dist/provider/hooks/utils/useAssetInfo.js +21 -0
  153. package/dist/provider/hooks/utils/useAutoSessionKeepAlive.js +1 -1
  154. package/dist/provider/hooks/utils/useEventListeners.js +22 -5
  155. package/dist/provider/hooks/utils/useModal.js +3 -3
  156. package/dist/provider/hooks/utils/useWalletState.d.ts +2 -1
  157. package/dist/provider/hooks/utils/useWalletState.js +2 -1
  158. package/dist/provider/providers/AccountLinkProvider.js +18 -11
  159. package/dist/provider/providers/AssetsProvider.d.ts +14 -0
  160. package/dist/provider/providers/AssetsProvider.js +68 -0
  161. package/dist/provider/providers/AuthProvider.d.ts +4 -0
  162. package/dist/provider/providers/AuthProvider.js +187 -43
  163. package/dist/provider/providers/ExternalWalletProvider.d.ts +19 -5
  164. package/dist/provider/providers/ExternalWalletProvider.js +363 -44
  165. package/dist/provider/stores/getters.d.ts +2 -2
  166. package/dist/provider/stores/slices/modal.js +4 -1
  167. package/dist/provider/stores/types.d.ts +6 -3
  168. package/package.json +8 -8
  169. package/dist/modal/constants/constants.d.ts +0 -35
  170. package/dist/modal/constants/constants.js +0 -148
  171. package/dist/modal/utils/routeMobileExternalWallet.d.ts +0 -1
  172. package/dist/modal/utils/routeMobileExternalWallet.js +0 -31
@@ -0,0 +1,228 @@
1
+ "use client";
2
+ import {
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../../../chunk-MMUBH76A.js";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ import { useMemo } from "react";
8
+ import { ACCOUNT_TYPES, safeStyled, useCopyToClipboard, WalletTypeIcon } from "@getpara/react-common";
9
+ import { CpslButton, CpslIcon, CpslText } from "@getpara/react-components";
10
+ import {
11
+ formatAssetQuantity,
12
+ formatCurrency,
13
+ truncateAddress
14
+ } from "@getpara/web-sdk";
15
+ import { useStore } from "../../../provider/stores/useStore.js";
16
+ import { useModalStore } from "../../stores/index.js";
17
+ import { useAssets } from "../../../provider/providers/AssetsProvider.js";
18
+ import { ModalStep } from "../../utils/steps.js";
19
+ import { AccountTypeIcon } from "../common.js";
20
+ import { useExternalWallets } from "../../../provider/providers/ExternalWalletProvider.js";
21
+ import { useAccountLinking } from "../../../provider/providers/AccountLinkProvider.js";
22
+ import { useInternalClient } from "../../../provider/hooks/utils/useInternalClient.js";
23
+ const AccountProfileEntry = ({
24
+ icon,
25
+ key,
26
+ text,
27
+ textSecondary,
28
+ textTertiary,
29
+ copyString,
30
+ accessory,
31
+ style,
32
+ className,
33
+ onSelect,
34
+ dataTestId
35
+ }) => {
36
+ const [isCopied, copy] = useCopyToClipboard();
37
+ const Copy = copyString ? /* @__PURE__ */ jsx(
38
+ CpslButton,
39
+ {
40
+ size: "small",
41
+ variant: "ghost",
42
+ onClick: (e) => {
43
+ e.stopPropagation();
44
+ e.preventDefault();
45
+ copy(copyString);
46
+ },
47
+ children: /* @__PURE__ */ jsx(CopyIcon, { id: "ignore-click", slot: "start", isCopied, icon: isCopied ? "check" : "copy" })
48
+ }
49
+ ) : null;
50
+ return /* @__PURE__ */ jsxs(EntryContainer, { onClick: onSelect, className, style, "data-testid": dataTestId, children: [
51
+ icon,
52
+ /* @__PURE__ */ jsx(EntryDisplayName, { variant: "bodyM", color: "contrast", children: text }),
53
+ /* @__PURE__ */ jsx(EntryFlex, { children: textSecondary ? /* @__PURE__ */ jsxs(Fragment, { children: [
54
+ /* @__PURE__ */ jsx(CpslText, { variant: "bodyM", color: "secondary", children: textSecondary }),
55
+ Copy
56
+ ] }) : Copy }),
57
+ textTertiary && /* @__PURE__ */ jsx(CpslText, { variant: "bodyM", color: "contrast", children: textTertiary }),
58
+ accessory,
59
+ onSelect && /* @__PURE__ */ jsx(CpslIcon, { color: "var(--cpsl-color-foreground-32)", icon: "chevronRight", size: "16px" })
60
+ ] }, key);
61
+ };
62
+ const WalletEntry = ({
63
+ wallet,
64
+ isSelectable = false,
65
+ style,
66
+ className
67
+ }) => {
68
+ var _a, _b;
69
+ const { wallets } = useExternalWallets();
70
+ const { profileBalance } = useAssets();
71
+ const balancesConfig = useStore((state) => {
72
+ var _a2;
73
+ return (_a2 = state.modalConfig) == null ? void 0 : _a2.balances;
74
+ });
75
+ const setProfileWallet = useModalStore((state) => state.setProfileWallet);
76
+ const setStep = useModalStore((state) => state.setStep);
77
+ const walletBalance = useMemo(() => {
78
+ return profileBalance == null ? void 0 : profileBalance.wallets.find((w) => w.address === wallet.address);
79
+ }, [profileBalance, wallet.address]);
80
+ const externalWallet = useMemo(
81
+ () => wallets.find((w) => w.id === wallet.externalProviderId),
82
+ [wallets, wallet.externalProviderId]
83
+ );
84
+ const withAddressShort = wallet.ensName || !!wallet.externalProviderId;
85
+ const balance = useMemo(() => {
86
+ var _a2;
87
+ switch (true) {
88
+ case !balancesConfig:
89
+ case (balancesConfig == null ? void 0 : balancesConfig.displayType) === "AGGREGATED":
90
+ return formatCurrency(walletBalance == null ? void 0 : walletBalance.value);
91
+ default:
92
+ return formatAssetQuantity({
93
+ quantity: (_a2 = walletBalance == null ? void 0 : walletBalance.assets.find(
94
+ ({ metadata }) => !!metadata && metadata.symbol === balancesConfig.asset.symbol
95
+ )) == null ? void 0 : _a2.quantity,
96
+ symbol: balancesConfig.asset.symbol
97
+ });
98
+ }
99
+ }, [balancesConfig, walletBalance]);
100
+ return /* @__PURE__ */ jsx(
101
+ AccountProfileEntry,
102
+ {
103
+ icon: /* @__PURE__ */ jsx(
104
+ WalletTypeIcon,
105
+ {
106
+ walletType: wallet.type,
107
+ externalWallet: externalWallet != null ? externalWallet : wallet.externalProviderId,
108
+ size: "24px",
109
+ inset: "0"
110
+ }
111
+ ),
112
+ text: (_b = (_a = wallet.ensName) != null ? _a : wallet.externalProviderId) != null ? _b : wallet.addressShort,
113
+ textSecondary: withAddressShort ? wallet.addressShort : void 0,
114
+ textTertiary: balance,
115
+ copyString: wallet.address,
116
+ style: __spreadProps(__spreadValues({}, style || {}), { zIndex: 2 }),
117
+ className,
118
+ onSelect: isSelectable ? () => {
119
+ setProfileWallet(wallet);
120
+ setStep(ModalStep.ACCOUNT_WALLET);
121
+ } : void 0,
122
+ dataTestId: `wallet-entry-${wallet.type}-${wallet.address}`
123
+ },
124
+ wallet.address
125
+ );
126
+ };
127
+ const AccountLinkEntry = ({
128
+ accountLink,
129
+ isPrimary = false
130
+ }) => {
131
+ var _a, _b, _c, _d;
132
+ const para = useInternalClient();
133
+ const { wallets } = useExternalWallets();
134
+ const { unlinkAccount } = useAccountLinking();
135
+ const { identifier, displayName, type, externalWallet } = accountLink;
136
+ const externalWalletConnector = wallets.find(
137
+ (wallet) => {
138
+ var _a2, _b2;
139
+ return wallet.id === (externalWallet == null ? void 0 : externalWallet.providerId) || wallet.id.toLowerCase() === ((_a2 = externalWallet == null ? void 0 : externalWallet.providerId) == null ? void 0 : _a2.toLowerCase()) || wallet.name.toLowerCase() === ((_b2 = externalWallet == null ? void 0 : externalWallet.providerId) == null ? void 0 : _b2.toLowerCase());
140
+ }
141
+ );
142
+ let accountType = type;
143
+ let src = void 0;
144
+ let address = void 0;
145
+ let addressShort = void 0;
146
+ if (externalWallet) {
147
+ address = (_a = externalWallet.addressBech32) != null ? _a : externalWallet.address;
148
+ addressShort = truncateAddress(address, externalWallet.type, {
149
+ prefix: para.cosmosPrefix
150
+ });
151
+ if (externalWalletConnector) {
152
+ accountType = void 0;
153
+ src = externalWalletConnector.iconUrl;
154
+ } else if (externalWallet.providerId && ACCOUNT_TYPES[externalWallet.providerId]) {
155
+ accountType = externalWallet.providerId;
156
+ src = void 0;
157
+ } else {
158
+ accountType = "EXTERNAL_WALLET";
159
+ src = void 0;
160
+ }
161
+ }
162
+ return /* @__PURE__ */ jsx(
163
+ AccountProfileEntry,
164
+ {
165
+ icon: /* @__PURE__ */ jsx(AccountTypeIcon, { accountType, src, size: "24px" }),
166
+ text: externalWallet ? (_d = (_c = (_b = externalWallet.ensName) != null ? _b : externalWalletConnector == null ? void 0 : externalWalletConnector.name) != null ? _c : externalWallet.provider) != null ? _d : "" : displayName != null ? displayName : identifier,
167
+ textSecondary: addressShort,
168
+ copyString: address,
169
+ accessory: isPrimary ? void 0 : /* @__PURE__ */ jsx(
170
+ EntryUnlink,
171
+ {
172
+ href: "#",
173
+ onClick: isPrimary ? void 0 : (e) => {
174
+ e.preventDefault();
175
+ unlinkAccount(accountLink);
176
+ },
177
+ children: "Unlink"
178
+ }
179
+ )
180
+ },
181
+ identifier
182
+ );
183
+ };
184
+ const EntryContainer = safeStyled.button`
185
+ overflow: hidden;
186
+ position: relative;
187
+ width: 100%;
188
+ display: flex;
189
+ gap: 8px;
190
+ align-items: center;
191
+ background: transparent;
192
+ border: none;
193
+ padding: 0;
194
+ ${({ onClick }) => onClick ? "cursor: pointer;" : ""}
195
+ `;
196
+ const EntryDisplayName = safeStyled(CpslText)``;
197
+ const EntryFlex = safeStyled.div`
198
+ display: flex;
199
+ gap: 8px;
200
+ align-items: center;
201
+ flex: 1;
202
+ `;
203
+ const CopyIcon = safeStyled(CpslIcon)`
204
+ --width: 16px;
205
+ --height: 16px;
206
+ --icon-color: ${({ isCopied }) => isCopied ? "var(--cpsl-color-utility-green) !important" : "var(--cpsl-color-text-secondary)"};
207
+
208
+ &:hover {
209
+ --icon-color: var(--cpsl-color-text-contrast);
210
+ }
211
+ `;
212
+ const EntryUnlink = safeStyled.a`
213
+ color: var(--cpsl-color-utility-red);
214
+ position: absolute;
215
+ right: 0;
216
+ text-decoration: none;
217
+ font-size: 14px;
218
+ font-weight: 500;
219
+ font-family: var(--cpsl-font-family);
220
+
221
+ &:hover {
222
+ text-decoration: underline;
223
+ }
224
+ `;
225
+ export {
226
+ AccountLinkEntry,
227
+ WalletEntry
228
+ };
@@ -6,13 +6,15 @@ import { AccountTypeIcon, GradientScroll, StepContainer } from "../common.js";
6
6
  import { CpslButton, CpslDivider, CpslText } from "@getpara/react-components";
7
7
  import { useExternalWallets } from "../../../provider/providers/ExternalWalletProvider.js";
8
8
  import { useAccountLinking } from "../../../provider/providers/AccountLinkProvider.js";
9
+ import { useLinkedAccounts } from "../../../provider/hooks/index.js";
9
10
  import { useEffect, useMemo } from "react";
10
11
  import { useInternalClient } from "../../../provider/hooks/utils/useInternalClient.js";
11
12
  import { getAccountTypeName, safeStyled } from "@getpara/react-common";
12
13
  function AccountProfileLinkOptions() {
13
14
  const para = useInternalClient();
14
15
  const { accountLinkOptions, linkAccount, isLinkAccountPending, linkAccountError, setLinkAccountError, resetMutations } = useAccountLinking();
15
- const { wallet: connectedWallet, wallets } = useExternalWallets();
16
+ const { wallets } = useExternalWallets();
17
+ const { data: linkedAccounts } = useLinkedAccounts();
16
18
  const [isEmail, isPhone, externalWalletIndex, isOptions] = [
17
19
  accountLinkOptions.includes("EMAIL"),
18
20
  accountLinkOptions.includes("PHONE"),
@@ -28,8 +30,17 @@ function AccountProfileLinkOptions() {
28
30
  return Array.from(
29
31
  new Set(
30
32
  baseOptions.filter((option) => {
31
- if (!wallets.some((wallet) => wallet.id === option) || (connectedWallet == null ? void 0 : connectedWallet.id) !== option && wallets.some(({ type, id, installed, isMobile }) => {
32
- return (installed || isMobile) && (para == null ? void 0 : para.supportedWalletTypes.some((obj) => obj.type === type)) && id === option;
33
+ if (!wallets.some((wallet) => wallet.id === option) || wallets.some(({ type, id, installed, isMobile }) => {
34
+ if (!(installed || isMobile) || !(para == null ? void 0 : para.supportedWalletTypes.some((obj) => obj.type === type)) || id !== option) {
35
+ return false;
36
+ }
37
+ const isAlreadyLinked = [...(linkedAccounts == null ? void 0 : linkedAccounts.primary) || [], ...(linkedAccounts == null ? void 0 : linkedAccounts.linked) || []].some(
38
+ (linkedAccount) => {
39
+ var _a, _b;
40
+ return ((_a = linkedAccount.externalWallet) == null ? void 0 : _a.providerId) === id && ((_b = linkedAccount.externalWallet) == null ? void 0 : _b.type) === type;
41
+ }
42
+ );
43
+ return !isAlreadyLinked;
33
44
  })) {
34
45
  return true;
35
46
  }
@@ -37,7 +48,7 @@ function AccountProfileLinkOptions() {
37
48
  })
38
49
  )
39
50
  );
40
- }, [accountLinkOptions, externalWalletIndex, wallets]);
51
+ }, [accountLinkOptions, externalWalletIndex, wallets, linkedAccounts, para == null ? void 0 : para.supportedWalletTypes]);
41
52
  useEffect(() => {
42
53
  resetMutations();
43
54
  setLinkAccountError(null);
@@ -0,0 +1 @@
1
+ export declare function AccountSendAsset(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,94 @@
1
+ "use client";
2
+ import "../../../../chunk-MMUBH76A.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { useMemo, useCallback, memo } from "react";
5
+ import { useWalletState } from "../../../../provider/index.js";
6
+ import { useAssets } from "../../../../provider/providers/AssetsProvider.js";
7
+ import { SearchableButtonList } from "../../SearchableButtonList.js";
8
+ import { useSend } from "./context.js";
9
+ import { CpslIcon } from "@getpara/react-components";
10
+ import { formatAssetQuantity, formatCurrency } from "@getpara/web-sdk";
11
+ import { ModalStep } from "../../../utils/steps.js";
12
+ import { useModalStore } from "../../../stores/index.js";
13
+ import { AssetNetwork } from "./AssetNetwork.js";
14
+ const NetworkIcons = memo(({ networks }) => {
15
+ return /* @__PURE__ */ jsx("div", { style: { position: "relative", height: "12px" }, children: networks.slice(0, 3).map((network, index) => {
16
+ var _a;
17
+ return /* @__PURE__ */ jsx(
18
+ CpslIcon,
19
+ {
20
+ src: network.metadata.logoUrl,
21
+ size: "16px",
22
+ radius: "full",
23
+ style: {
24
+ borderRadius: "1000px",
25
+ backgroundColor: "var(--cpsl-color-primary)",
26
+ position: "absolute",
27
+ top: 0,
28
+ left: `${index * 8}px`,
29
+ zIndex: 3 - index
30
+ }
31
+ },
32
+ ((_a = network.metadata) == null ? void 0 : _a.logoUrl) || index
33
+ );
34
+ }) });
35
+ });
36
+ NetworkIcons.displayName = "NetworkIcons";
37
+ function AccountSendAsset() {
38
+ const setStep = useModalStore((state) => state.setStep);
39
+ const { profileBalance } = useAssets();
40
+ const { selectedWallet } = useWalletState();
41
+ const { setSendMetadata, setTransferAmount } = useSend();
42
+ const walletAssets = useMemo(() => {
43
+ var _a, _b;
44
+ return (_b = (_a = profileBalance == null ? void 0 : profileBalance.wallets.find((wallet) => wallet.address === (selectedWallet == null ? void 0 : selectedWallet.address))) == null ? void 0 : _a.assets) != null ? _b : [];
45
+ }, [profileBalance, selectedWallet == null ? void 0 : selectedWallet.address]);
46
+ const transformItem = useCallback((item) => {
47
+ var _a, _b;
48
+ const isValued = ((_a = item.value) == null ? void 0 : _a.value) && ((_b = item.value) == null ? void 0 : _b.value) >= 0.01;
49
+ const quantity = formatAssetQuantity({ quantity: item.quantity, symbol: item.metadata.symbol });
50
+ return {
51
+ key: item.metadata.zerionId,
52
+ icon: /* @__PURE__ */ jsx(
53
+ AssetNetwork,
54
+ {
55
+ assetSrc: item.metadata.logoUrl,
56
+ networkSrc: item.networks.length === 1 ? item.networks[0].metadata.logoUrl : void 0,
57
+ size: 48
58
+ }
59
+ ),
60
+ text: item.metadata.symbol,
61
+ textSecondary: item.networks.length > 0 ? item.networks.length === 1 ? item.networks[0].metadata.name : /* @__PURE__ */ jsx(NetworkIcons, { networks: item.networks }) : void 0,
62
+ endText: isValued ? formatCurrency(item.value) : quantity,
63
+ endTextSecondary: isValued ? quantity : void 0
64
+ };
65
+ }, []);
66
+ const searchFilter = useCallback(({ item, searchStr }) => {
67
+ if (!item.metadata) return false;
68
+ const lowerSearchStr = searchStr.toLowerCase();
69
+ return item.metadata.symbol.toLowerCase().includes(lowerSearchStr) || item.metadata.name.toLowerCase().includes(lowerSearchStr);
70
+ }, []);
71
+ const onSelect = useCallback(
72
+ (item) => {
73
+ setTransferAmount(0);
74
+ setSendMetadata({
75
+ asset: item,
76
+ network: item.networks[0]
77
+ });
78
+ setStep(item.networks.length > 1 ? ModalStep.ACCOUNT_SEND_NETWORK : ModalStep.ACCOUNT_SEND);
79
+ },
80
+ [setTransferAmount, setSendMetadata, setStep]
81
+ );
82
+ return /* @__PURE__ */ jsx("div", { style: { width: "100%" }, children: /* @__PURE__ */ jsx(
83
+ SearchableButtonList,
84
+ {
85
+ items: walletAssets,
86
+ transformItem,
87
+ searchFilter,
88
+ onSelect
89
+ }
90
+ ) });
91
+ }
92
+ export {
93
+ AccountSendAsset
94
+ };
@@ -0,0 +1 @@
1
+ export declare function AccountSendForm(): import("react/jsx-runtime").JSX.Element;