@n1xyz/wallet-widget 0.0.34 → 0.0.35-alpha.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 (81) hide show
  1. package/dist/features/onboarding-flow/components/ImageWithFallback.d.ts +5 -2
  2. package/dist/features/onboarding-flow/components/ImageWithFallback.js +36 -6
  3. package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -1
  4. package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -1
  5. package/dist/main.css +1 -1
  6. package/dist/providers/N1WalletProvider.js +4 -0
  7. package/dist/providers/N1WalletProvider.js.map +1 -1
  8. package/dist/providers/ShadowRootWrapper.js +5 -0
  9. package/dist/providers/ShadowRootWrapper.js.map +1 -1
  10. package/dist/styles/cdn-fonts.d.ts +1 -0
  11. package/dist/styles/cdn-fonts.js +45 -0
  12. package/dist/styles/cdn-fonts.js.map +1 -0
  13. package/dist/styles/embedded-main-css.d.ts +1 -1
  14. package/dist/styles/embedded-main-css.js +1 -1
  15. package/dist/styles/embedded-main-css.js.map +1 -1
  16. package/dist/utils/ed25519.js +1 -1
  17. package/dist/utils/ed25519.js.map +1 -1
  18. package/package.json +31 -25
  19. package/dist/config/dynamic.d.ts +0 -1
  20. package/dist/config/dynamic.js +0 -13
  21. package/dist/config/dynamic.js.map +0 -1
  22. package/dist/config/turnkey.d.ts +0 -2
  23. package/dist/config/turnkey.js +0 -35
  24. package/dist/config/turnkey.js.map +0 -1
  25. package/dist/features/onboarding-flow/screens/02-TurnkeyAuthScreen.d.ts +0 -1
  26. package/dist/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js +0 -18
  27. package/dist/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +0 -1
  28. package/dist/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.d.ts +0 -1
  29. package/dist/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js +0 -18
  30. package/dist/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +0 -1
  31. package/dist/features/onboarding-flow/screens/04-ChainSelectionScreen.d.ts +0 -31
  32. package/dist/features/onboarding-flow/screens/04-ChainSelectionScreen.js +0 -100
  33. package/dist/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +0 -1
  34. package/dist/features/onboarding-flow/screens/05-AmountInputScreen.d.ts +0 -6
  35. package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js +0 -360
  36. package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js.map +0 -1
  37. package/dist/features/onboarding-flow/screens/06-DepositProgressScreen.d.ts +0 -3
  38. package/dist/features/onboarding-flow/screens/06-DepositProgressScreen.js +0 -31
  39. package/dist/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +0 -1
  40. package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +0 -1
  41. package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.js +0 -136
  42. package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +0 -1
  43. package/dist/features/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +0 -1
  44. package/dist/features/onboarding-flow/screens/08-AuthLoadingScreen.js +0 -31
  45. package/dist/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +0 -1
  46. package/dist/features/onboarding-flow/screens/08-TurnkeyAuthScreen.d.ts +0 -1
  47. package/dist/features/onboarding-flow/screens/08-TurnkeyAuthScreen.js +0 -18
  48. package/dist/features/onboarding-flow/screens/08-TurnkeyAuthScreen.js.map +0 -1
  49. package/dist/features/onboarding-flow/screens/09-ErrorScreen.d.ts +0 -1
  50. package/dist/features/onboarding-flow/screens/09-ErrorScreen.js +0 -14
  51. package/dist/features/onboarding-flow/screens/09-ErrorScreen.js.map +0 -1
  52. package/dist/features/onboarding-flow/screens/09-TurnkeyPreparingScreen.d.ts +0 -1
  53. package/dist/features/onboarding-flow/screens/09-TurnkeyPreparingScreen.js +0 -18
  54. package/dist/features/onboarding-flow/screens/09-TurnkeyPreparingScreen.js.map +0 -1
  55. package/dist/features/onboarding-flow/screens/TurnkeyAuthScreen.d.ts +0 -1
  56. package/dist/features/onboarding-flow/screens/TurnkeyAuthScreen.js +0 -18
  57. package/dist/features/onboarding-flow/screens/TurnkeyAuthScreen.js.map +0 -1
  58. package/dist/features/onboarding-flow/screens/TurnkeyPreparingScreen.d.ts +0 -1
  59. package/dist/features/onboarding-flow/screens/TurnkeyPreparingScreen.js +0 -18
  60. package/dist/features/onboarding-flow/screens/TurnkeyPreparingScreen.js.map +0 -1
  61. package/dist/features/turnkey/createTurnkeyWallet.d.ts +0 -25
  62. package/dist/features/turnkey/createTurnkeyWallet.js +0 -119
  63. package/dist/features/turnkey/createTurnkeyWallet.js.map +0 -1
  64. package/dist/providers/TurnkeyProviderBridge.d.ts +0 -7
  65. package/dist/providers/TurnkeyProviderBridge.js +0 -20
  66. package/dist/providers/TurnkeyProviderBridge.js.map +0 -1
  67. package/dist/turnkey/TurnkeyProvider.d.ts +0 -9
  68. package/dist/turnkey/TurnkeyProvider.js +0 -378
  69. package/dist/turnkey/TurnkeyProvider.js.map +0 -1
  70. package/dist/turnkey/createWalletProvider.d.ts +0 -3
  71. package/dist/turnkey/createWalletProvider.js +0 -180
  72. package/dist/turnkey/createWalletProvider.js.map +0 -1
  73. package/dist/turnkey/index.d.ts +0 -3
  74. package/dist/turnkey/index.js +0 -3
  75. package/dist/turnkey/index.js.map +0 -1
  76. package/dist/turnkey/types.d.ts +0 -48
  77. package/dist/turnkey/types.js +0 -8
  78. package/dist/turnkey/types.js.map +0 -1
  79. package/dist/utils/turnkeySessionStorage.d.ts +0 -3
  80. package/dist/utils/turnkeySessionStorage.js +0 -33
  81. package/dist/utils/turnkeySessionStorage.js.map +0 -1
@@ -1,360 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
- var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
- function verb(n) { return function (v) { return step([n, v]); }; }
25
- function step(op) {
26
- if (f) throw new TypeError("Generator is already executing.");
27
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
- if (y = 0, t) op = [op[0] & 2, t.value];
30
- switch (op[0]) {
31
- case 0: case 1: t = op; break;
32
- case 4: _.label++; return { value: op[1], done: false };
33
- case 5: _.label++; y = op[1]; op = [0]; continue;
34
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
- default:
36
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
- if (t[2]) _.ops.pop();
41
- _.trys.pop(); continue;
42
- }
43
- op = body.call(thisArg, _);
44
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
- }
47
- };
48
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
49
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
50
- if (ar || !(i in from)) {
51
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
52
- ar[i] = from[i];
53
- }
54
- }
55
- return to.concat(ar || Array.prototype.slice.call(from));
56
- };
57
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
58
- import { Connection, LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js";
59
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
60
- import { SolanaLogo } from "../../../components/logos";
61
- import { useN1WalletContext } from "../../../hooks";
62
- import { logger } from "../../../utils/logger";
63
- import { useDepositFlow, useOnboardingState } from "../providers";
64
- import { formatAmount, isNordConfigured } from "../utils/nordUtils";
65
- import { getSolanaRpcUrl } from "../../../config/solana";
66
- export var DEFAULT_MIN_DEPOSIT = 5;
67
- export var BALANCE_REFRESH_MS = 20000;
68
- export function AmountInputScreen(_a) {
69
- var _this = this;
70
- var context = useOnboardingState().context;
71
- var _b = useDepositFlow(), amount = _b.amount, updateAmount = _b.updateAmount, startDeposit = _b.startDeposit;
72
- var _c = useN1WalletContext(), nord = _c.nord, address = _c.address;
73
- var _d = useState(null), tokenSymbol = _d[0], setTokenSymbol = _d[1];
74
- var _e = useState(null), tokenDecimals = _e[0], setTokenDecimals = _e[1];
75
- var _f = useState(null), nordTokens = _f[0], setNordTokens = _f[1];
76
- var _g = useState({
77
- usdc: null,
78
- sol: null,
79
- loading: false,
80
- error: null,
81
- }), walletBalances = _g[0], setWalletBalances = _g[1];
82
- var isMountedRef = useRef(true);
83
- useEffect(function () {
84
- return function () {
85
- isMountedRef.current = false;
86
- };
87
- }, []);
88
- useEffect(function () {
89
- if (!amount) {
90
- updateAmount("100");
91
- }
92
- }, [amount, updateAmount]);
93
- var selectedChainName = context.selectedChain || "Solana";
94
- var _h = useState(null), tokenMintAddress = _h[0], setTokenMintAddress = _h[1];
95
- useEffect(function () {
96
- var isCancelled = false;
97
- var loadNordTokens = function () { return __awaiter(_this, void 0, void 0, function () {
98
- var error_1;
99
- return __generator(this, function (_a) {
100
- switch (_a.label) {
101
- case 0:
102
- if (!nord || !isNordConfigured(nord)) {
103
- if (!isCancelled) {
104
- setNordTokens(null);
105
- }
106
- return [2 /*return*/];
107
- }
108
- if (Array.isArray(nord.tokens) && nord.tokens.length > 0) {
109
- if (!isCancelled) {
110
- setNordTokens(nord.tokens);
111
- }
112
- return [2 /*return*/];
113
- }
114
- if (typeof nord.fetchNordInfo !== "function") {
115
- return [2 /*return*/];
116
- }
117
- _a.label = 1;
118
- case 1:
119
- _a.trys.push([1, 3, , 4]);
120
- return [4 /*yield*/, nord.fetchNordInfo()];
121
- case 2:
122
- _a.sent();
123
- if (isCancelled) {
124
- return [2 /*return*/];
125
- }
126
- if (Array.isArray(nord.tokens) && nord.tokens.length > 0) {
127
- setNordTokens(nord.tokens);
128
- }
129
- return [3 /*break*/, 4];
130
- case 3:
131
- error_1 = _a.sent();
132
- if (!isCancelled) {
133
- logger.warn("Unable to fetch Nord info:", error_1);
134
- setNordTokens(null);
135
- }
136
- return [3 /*break*/, 4];
137
- case 4: return [2 /*return*/];
138
- }
139
- });
140
- }); };
141
- loadNordTokens();
142
- return function () {
143
- isCancelled = true;
144
- };
145
- }, [nord]);
146
- useEffect(function () {
147
- if (nord && isNordConfigured(nord)) {
148
- try {
149
- if (!nordTokens || nordTokens.length === 0) {
150
- return;
151
- }
152
- console.log("nordTokens", nordTokens);
153
- var usdcToken = nordTokens.find(function (t) { return t.symbol === "USDC"; }) || nordTokens[0];
154
- if (usdcToken) {
155
- if (!usdcToken.symbol) {
156
- throw new Error("Nord token configuration missing symbol");
157
- }
158
- if (!Number.isFinite(usdcToken.decimals)) {
159
- throw new Error("Nord token configuration missing decimals");
160
- }
161
- if (!usdcToken.mintAddr) {
162
- throw new Error("Nord token configuration missing mint address");
163
- }
164
- setTokenSymbol(usdcToken.symbol);
165
- setTokenDecimals(usdcToken.decimals);
166
- setTokenMintAddress(usdcToken.mintAddr);
167
- }
168
- }
169
- catch (error) {
170
- logger.warn("Error getting token information from Nord:", error);
171
- }
172
- }
173
- }, [nord, nordTokens]);
174
- var minDeposit = useMemo(function () {
175
- var _a, _b;
176
- if (!nord ||
177
- !isNordConfigured(nord) ||
178
- !tokenMintAddress ||
179
- tokenDecimals == null) {
180
- return DEFAULT_MIN_DEPOSIT;
181
- }
182
- try {
183
- // @ts-ignore
184
- var mintInfo = (_b = (_a = nord.protonClient) === null || _a === void 0 ? void 0 : _a.mintInfo) === null || _b === void 0 ? void 0 : _b.get(tokenMintAddress);
185
- if (mintInfo === null || mintInfo === void 0 ? void 0 : mintInfo.minDeposit) {
186
- var minDepositUnits = Number(mintInfo.minDeposit);
187
- var divisor = Math.pow(10, tokenDecimals);
188
- if (Number.isFinite(minDepositUnits) && divisor > 0) {
189
- return minDepositUnits / divisor;
190
- }
191
- }
192
- }
193
- catch (error) {
194
- logger.warn("Unable to derive min deposit from Nord config", error);
195
- }
196
- return DEFAULT_MIN_DEPOSIT;
197
- }, [nord, tokenMintAddress, tokenDecimals]);
198
- var fetchBalances = useCallback(function () {
199
- var args_1 = [];
200
- for (var _i = 0; _i < arguments.length; _i++) {
201
- args_1[_i] = arguments[_i];
202
- }
203
- return __awaiter(_this, __spreadArray([], args_1, true), void 0, function (showSpinner) {
204
- var rpcEndpoint, connection, ownerKey, _a, solLamports, tokenAccounts, usdcTotal, error_2;
205
- if (showSpinner === void 0) { showSpinner = true; }
206
- return __generator(this, function (_b) {
207
- switch (_b.label) {
208
- case 0:
209
- if (!address || !tokenMintAddress) {
210
- if (isMountedRef.current) {
211
- setWalletBalances({
212
- usdc: null,
213
- sol: null,
214
- loading: false,
215
- error: null,
216
- });
217
- }
218
- return [2 /*return*/];
219
- }
220
- if (showSpinner) {
221
- setWalletBalances(function (prev) { return (__assign(__assign({}, prev), { loading: true, error: null })); });
222
- }
223
- _b.label = 1;
224
- case 1:
225
- _b.trys.push([1, 3, , 4]);
226
- rpcEndpoint = getSolanaRpcUrl();
227
- connection = new Connection(rpcEndpoint, "confirmed");
228
- ownerKey = new PublicKey(address);
229
- return [4 /*yield*/, Promise.all([
230
- connection.getBalance(ownerKey),
231
- connection.getParsedTokenAccountsByOwner(ownerKey, {
232
- mint: new PublicKey(tokenMintAddress),
233
- }),
234
- ])];
235
- case 2:
236
- _a = _b.sent(), solLamports = _a[0], tokenAccounts = _a[1];
237
- usdcTotal = tokenAccounts.value.reduce(function (total, _a) {
238
- var _b, _c;
239
- var account = _a.account;
240
- var info = (_b = account.data.parsed) === null || _b === void 0 ? void 0 : _b.info;
241
- var tokenAmount = info === null || info === void 0 ? void 0 : info.tokenAmount;
242
- if (!tokenAmount) {
243
- return total;
244
- }
245
- var uiAmount = typeof tokenAmount.uiAmount === "number"
246
- ? tokenAmount.uiAmount
247
- : parseFloat((_c = tokenAmount.uiAmountString) !== null && _c !== void 0 ? _c : "0");
248
- return total + (Number.isFinite(uiAmount) ? uiAmount : 0);
249
- }, 0);
250
- if (!isMountedRef.current) {
251
- return [2 /*return*/];
252
- }
253
- setWalletBalances({
254
- usdc: usdcTotal,
255
- sol: solLamports / LAMPORTS_PER_SOL,
256
- loading: false,
257
- error: null,
258
- });
259
- return [3 /*break*/, 4];
260
- case 3:
261
- error_2 = _b.sent();
262
- logger.warn("Failed to load wallet balances", error_2);
263
- if (!isMountedRef.current) {
264
- return [2 /*return*/];
265
- }
266
- setWalletBalances(function (prev) { return (__assign(__assign({}, prev), { loading: false, error: "Unable to fetch wallet balances. Please try again." })); });
267
- return [3 /*break*/, 4];
268
- case 4: return [2 /*return*/];
269
- }
270
- });
271
- });
272
- }, [address, tokenMintAddress]);
273
- useEffect(function () {
274
- if (!tokenMintAddress) {
275
- return;
276
- }
277
- fetchBalances();
278
- var interval = setInterval(function () {
279
- fetchBalances(false);
280
- }, BALANCE_REFRESH_MS);
281
- return function () { return clearInterval(interval); };
282
- }, [fetchBalances, tokenMintAddress]);
283
- var isSolana = selectedChainName.toLowerCase().includes("solana");
284
- var requiredSolForFees = 0.002; // ensure wallet has at least 0.002 SOL for fees
285
- var gasFeeDisplay = "~$0.30";
286
- var minDepositDisplay = minDeposit.toString();
287
- var tokenSymbolDisplay = tokenSymbol !== null && tokenSymbol !== void 0 ? tokenSymbol : "—";
288
- var formattedBalance = walletBalances.usdc == null || tokenDecimals == null
289
- ? walletBalances.loading
290
- ? "Loading..."
291
- : "—"
292
- : formatAmount(walletBalances.usdc, tokenDecimals);
293
- var formattedSolBalance = walletBalances.sol == null
294
- ? walletBalances.loading
295
- ? "Loading..."
296
- : "—"
297
- : walletBalances.sol.toFixed(4);
298
- var numericAmount = Number(amount || 0);
299
- var hasEnteredAmount = Number.isFinite(numericAmount) && numericAmount > 0;
300
- var meetsMinDeposit = numericAmount >= minDeposit;
301
- var hasSufficientUsdc = walletBalances.usdc == null ? false : numericAmount <= walletBalances.usdc;
302
- var hasSufficientSol = walletBalances.sol == null
303
- ? false
304
- : walletBalances.sol >= requiredSolForFees;
305
- var validationError = useMemo(function () {
306
- if (!address) {
307
- return "Connect a wallet to continue.";
308
- }
309
- if (walletBalances.error) {
310
- return walletBalances.error;
311
- }
312
- if (!tokenSymbol || tokenDecimals == null) {
313
- return "Token information unavailable. Please try again later.";
314
- }
315
- if (!hasEnteredAmount) {
316
- return "Enter an amount to continue.";
317
- }
318
- if (walletBalances.loading ||
319
- walletBalances.usdc == null ||
320
- walletBalances.sol == null) {
321
- return null;
322
- }
323
- if (!meetsMinDeposit) {
324
- return "Minimum deposit is ".concat(minDeposit, " ").concat(tokenSymbol, ".");
325
- }
326
- if (!hasSufficientUsdc) {
327
- return "Insufficient ".concat(tokenSymbol, " balance for this deposit.");
328
- }
329
- if (!hasSufficientSol) {
330
- return "Not enough SOL to cover network fees.";
331
- }
332
- return null;
333
- }, [
334
- address,
335
- walletBalances.error,
336
- walletBalances.loading,
337
- walletBalances.usdc,
338
- walletBalances.sol,
339
- hasEnteredAmount,
340
- hasSufficientSol,
341
- hasSufficientUsdc,
342
- meetsMinDeposit,
343
- tokenSymbol,
344
- tokenDecimals,
345
- minDeposit,
346
- ]);
347
- var isValidAmount = !walletBalances.loading && validationError === null;
348
- var handleUseMax = function () {
349
- if (walletBalances.usdc == null ||
350
- walletBalances.usdc <= 0 ||
351
- tokenDecimals == null) {
352
- return;
353
- }
354
- updateAmount(walletBalances.usdc.toFixed(tokenDecimals));
355
- };
356
- return (_jsxs("div", { className: "overflow-hidden relative", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsx("h2", { className: "text-sm text-white font-medium", children: "Deposit From" }), _jsxs("div", { className: "flex items-center space-x-2 rounded-md bg-n1-ww-border h-5 justify-center p-1", children: [isSolana ? (_jsx("div", { className: "rounded-full flex items-center justify-center bg-black h-3 w-3", children: _jsx(SolanaLogo, { width: 6, height: 6 }) })) : (_jsx("div", { className: "w-4 h-4 rounded-full bg-n1-ww-gray-600" })), _jsx("span", { className: "text-white text-xs font-medium", children: selectedChainName })] })] }), _jsxs("div", { className: "space-y-3 mb-4 text-white text-xs font-light", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { children: "Available Balance:" }), _jsxs("span", { children: [formattedBalance, " ", tokenSymbolDisplay] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { children: "SOL Balance:" }), _jsxs("span", { children: [formattedSolBalance, " SOL"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { children: "Minimum Deposit:" }), _jsxs("span", { children: [minDepositDisplay, " ", tokenSymbolDisplay] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { children: "Gas Fee:" }), _jsx("span", { children: gasFeeDisplay })] })] }), _jsx("div", { className: "h-px bg-n1-ww-border mb-4" }), _jsxs("div", { className: "mb-4 flex justify-between w-full", children: [_jsx("div", { className: "flex items-center gap-3", children: _jsxs("div", { className: "flex items-center justify-between border border-n1-ww-gray-400 bg-n1-ww-gray-600 flex-1 w-[292px] rounded h-8 px-2", children: [_jsx("span", { className: "text-white text-sm font-medium", children: "Amount" }), _jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("input", { type: "number", step: "0.000001", value: amount, onChange: function (e) { return updateAmount(e.target.value); }, className: "text-white font-light text-xs text-right bg-transparent border-none outline-none focus:ring-2 focus:ring-n1-ww-main focus:ring-offset-0 rounded px-1" }), _jsx("button", { className: "border border-n1-ww-gray-400 h-5 text-white text-xs font-light flex items-center justify-center px-1 rounded transition-colors", children: tokenSymbolDisplay })] })] }) }), _jsx("button", { className: "border border-n1-ww-gray-400 bg-n1-ww-gray-600 rounded text-white text-sm font-medium px-2 h-8 hover:bg-n1-ww-gray-800 transition-colors w-[68px]", onClick: handleUseMax, type: "button", children: "Max" })] }), validationError && (_jsx("p", { className: "mb-2 text-xs text-red-400", children: validationError })), _jsx("button", { onClick: startDeposit, disabled: !isValidAmount, className: "\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ".concat(isValidAmount
357
- ? "border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer"
358
- : "border-n1-ww-border opacity-50 cursor-not-allowed", "\n "), children: _jsx("span", { className: "\n font-medium text-sm opacity-90\n ".concat(isValidAmount ? "text-n1-ww-main" : "text-n1-ww-gray-600", "\n "), children: "Deposit" }) })] }));
359
- }
360
- //# sourceMappingURL=05-AmountInputScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"05-AmountInputScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/05-AmountInputScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Connection, LAMPORTS_PER_SOL, PublicKey } from \"@solana/web3.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { SolanaLogo } from \"../../../components/logos\";\nimport { useN1WalletContext } from \"../../../hooks\";\nimport { logger } from \"../../../utils/logger\";\nimport { useDepositFlow, useOnboardingState } from \"../providers\";\nimport { WalletBalanceState } from \"../types\";\nimport { formatAmount, isNordConfigured } from \"../utils/nordUtils\";\nimport { getSolanaRpcUrl } from \"../../../config/solana\";\n\nexport const DEFAULT_MIN_DEPOSIT = 5;\n\nexport const BALANCE_REFRESH_MS = 20_000;\n\ninterface AmountInputScreenProps {}\n\nexport function AmountInputScreen({}: AmountInputScreenProps) {\n const { context } = useOnboardingState();\n const { amount, updateAmount, startDeposit } = useDepositFlow();\n const { nord, address } = useN1WalletContext();\n\n const [tokenSymbol, setTokenSymbol] = useState<string | null>(null);\n const [tokenDecimals, setTokenDecimals] = useState<number | null>(null);\n const [nordTokens, setNordTokens] = useState<any[] | null>(null);\n const [walletBalances, setWalletBalances] = useState<WalletBalanceState>({\n usdc: null,\n sol: null,\n loading: false,\n error: null,\n });\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (!amount) {\n updateAmount(\"100\");\n }\n }, [amount, updateAmount]);\n\n const selectedChainName = context.selectedChain || \"Solana\";\n const [tokenMintAddress, setTokenMintAddress] = useState<string | null>(null);\n\n useEffect(() => {\n let isCancelled = false;\n\n const loadNordTokens = async () => {\n if (!nord || !isNordConfigured(nord)) {\n if (!isCancelled) {\n setNordTokens(null);\n }\n return;\n }\n\n if (Array.isArray(nord.tokens) && nord.tokens.length > 0) {\n if (!isCancelled) {\n setNordTokens(nord.tokens);\n }\n return;\n }\n\n if (typeof nord.fetchNordInfo !== \"function\") {\n return;\n }\n\n try {\n await nord.fetchNordInfo();\n if (isCancelled) {\n return;\n }\n if (Array.isArray(nord.tokens) && nord.tokens.length > 0) {\n setNordTokens(nord.tokens);\n }\n } catch (error) {\n if (!isCancelled) {\n logger.warn(\"Unable to fetch Nord info:\", error);\n setNordTokens(null);\n }\n }\n };\n\n loadNordTokens();\n\n return () => {\n isCancelled = true;\n };\n }, [nord]);\n\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n if (!nordTokens || nordTokens.length === 0) {\n return;\n }\n console.log(\"nordTokens\", nordTokens);\n const usdcToken =\n nordTokens.find((t: any) => t.symbol === \"USDC\") || nordTokens[0];\n if (usdcToken) {\n if (!usdcToken.symbol) {\n throw new Error(\"Nord token configuration missing symbol\");\n }\n if (!Number.isFinite(usdcToken.decimals)) {\n throw new Error(\"Nord token configuration missing decimals\");\n }\n if (!usdcToken.mintAddr) {\n throw new Error(\"Nord token configuration missing mint address\");\n }\n setTokenSymbol(usdcToken.symbol);\n setTokenDecimals(usdcToken.decimals);\n setTokenMintAddress(usdcToken.mintAddr);\n }\n } catch (error) {\n logger.warn(\"Error getting token information from Nord:\", error);\n }\n }\n }, [nord, nordTokens]);\n\n const minDeposit = useMemo(() => {\n if (\n !nord ||\n !isNordConfigured(nord) ||\n !tokenMintAddress ||\n tokenDecimals == null\n ) {\n return DEFAULT_MIN_DEPOSIT;\n }\n try {\n // @ts-ignore\n const mintInfo = nord.protonClient?.mintInfo?.get(tokenMintAddress);\n if (mintInfo?.minDeposit) {\n const minDepositUnits = Number(mintInfo.minDeposit);\n const divisor = 10 ** tokenDecimals;\n if (Number.isFinite(minDepositUnits) && divisor > 0) {\n return minDepositUnits / divisor;\n }\n }\n } catch (error) {\n logger.warn(\"Unable to derive min deposit from Nord config\", error);\n }\n return DEFAULT_MIN_DEPOSIT;\n }, [nord, tokenMintAddress, tokenDecimals]);\n\n const fetchBalances = useCallback(\n async (showSpinner: boolean = true) => {\n if (!address || !tokenMintAddress) {\n if (isMountedRef.current) {\n setWalletBalances({\n usdc: null,\n sol: null,\n loading: false,\n error: null,\n });\n }\n return;\n }\n\n if (showSpinner) {\n setWalletBalances((prev) => ({\n ...prev,\n loading: true,\n error: null,\n }));\n }\n\n try {\n const rpcEndpoint = getSolanaRpcUrl();\n const connection = new Connection(rpcEndpoint, \"confirmed\");\n const ownerKey = new PublicKey(address);\n\n const [solLamports, tokenAccounts] = await Promise.all([\n connection.getBalance(ownerKey),\n connection.getParsedTokenAccountsByOwner(ownerKey, {\n mint: new PublicKey(tokenMintAddress),\n }),\n ]);\n\n const usdcTotal = tokenAccounts.value.reduce((total, { account }) => {\n const info = account.data.parsed?.info;\n const tokenAmount = info?.tokenAmount;\n if (!tokenAmount) {\n return total;\n }\n const uiAmount =\n typeof tokenAmount.uiAmount === \"number\"\n ? tokenAmount.uiAmount\n : parseFloat(tokenAmount.uiAmountString ?? \"0\");\n return total + (Number.isFinite(uiAmount) ? uiAmount : 0);\n }, 0);\n\n if (!isMountedRef.current) {\n return;\n }\n\n setWalletBalances({\n usdc: usdcTotal,\n sol: solLamports / LAMPORTS_PER_SOL,\n loading: false,\n error: null,\n });\n } catch (error) {\n logger.warn(\"Failed to load wallet balances\", error);\n if (!isMountedRef.current) {\n return;\n }\n setWalletBalances((prev) => ({\n ...prev,\n loading: false,\n error: \"Unable to fetch wallet balances. Please try again.\",\n }));\n }\n },\n [address, tokenMintAddress]\n );\n\n useEffect(() => {\n if (!tokenMintAddress) {\n return;\n }\n fetchBalances();\n const interval = setInterval(() => {\n fetchBalances(false);\n }, BALANCE_REFRESH_MS);\n\n return () => clearInterval(interval);\n }, [fetchBalances, tokenMintAddress]);\n\n const isSolana = selectedChainName.toLowerCase().includes(\"solana\");\n const requiredSolForFees = 0.002; // ensure wallet has at least 0.002 SOL for fees\n const gasFeeDisplay = \"~$0.30\";\n const minDepositDisplay = minDeposit.toString();\n const tokenSymbolDisplay = tokenSymbol ?? \"—\";\n\n const formattedBalance =\n walletBalances.usdc == null || tokenDecimals == null\n ? walletBalances.loading\n ? \"Loading...\"\n : \"—\"\n : formatAmount(walletBalances.usdc, tokenDecimals);\n\n const formattedSolBalance =\n walletBalances.sol == null\n ? walletBalances.loading\n ? \"Loading...\"\n : \"—\"\n : walletBalances.sol.toFixed(4);\n\n const numericAmount = Number(amount || 0);\n const hasEnteredAmount = Number.isFinite(numericAmount) && numericAmount > 0;\n const meetsMinDeposit = numericAmount >= minDeposit;\n const hasSufficientUsdc =\n walletBalances.usdc == null ? false : numericAmount <= walletBalances.usdc;\n const hasSufficientSol =\n walletBalances.sol == null\n ? false\n : walletBalances.sol >= requiredSolForFees;\n\n const validationError = useMemo(() => {\n if (!address) {\n return \"Connect a wallet to continue.\";\n }\n\n if (walletBalances.error) {\n return walletBalances.error;\n }\n\n if (!tokenSymbol || tokenDecimals == null) {\n return \"Token information unavailable. Please try again later.\";\n }\n\n if (!hasEnteredAmount) {\n return \"Enter an amount to continue.\";\n }\n\n if (\n walletBalances.loading ||\n walletBalances.usdc == null ||\n walletBalances.sol == null\n ) {\n return null;\n }\n\n if (!meetsMinDeposit) {\n return `Minimum deposit is ${minDeposit} ${tokenSymbol}.`;\n }\n\n if (!hasSufficientUsdc) {\n return `Insufficient ${tokenSymbol} balance for this deposit.`;\n }\n\n if (!hasSufficientSol) {\n return \"Not enough SOL to cover network fees.\";\n }\n\n return null;\n }, [\n address,\n walletBalances.error,\n walletBalances.loading,\n walletBalances.usdc,\n walletBalances.sol,\n hasEnteredAmount,\n hasSufficientSol,\n hasSufficientUsdc,\n meetsMinDeposit,\n tokenSymbol,\n tokenDecimals,\n minDeposit,\n ]);\n\n const isValidAmount = !walletBalances.loading && validationError === null;\n\n const handleUseMax = () => {\n if (\n walletBalances.usdc == null ||\n walletBalances.usdc <= 0 ||\n tokenDecimals == null\n ) {\n return;\n }\n updateAmount(walletBalances.usdc.toFixed(tokenDecimals));\n };\n\n return (\n <div className=\"overflow-hidden relative\">\n {/* Header Section */}\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-sm text-white font-medium\">Deposit From</h2>\n <div className=\"flex items-center space-x-2 rounded-md bg-n1-ww-border h-5 justify-center p-1\">\n {isSolana ? (\n <div className=\"rounded-full flex items-center justify-center bg-black h-3 w-3\">\n <SolanaLogo width={6} height={6} />\n </div>\n ) : (\n <div className=\"w-4 h-4 rounded-full bg-n1-ww-gray-600\"></div>\n )}\n <span className=\"text-white text-xs font-medium\">\n {selectedChainName}\n </span>\n </div>\n </div>\n\n {/* Deposit Information Section */}\n <div className=\"space-y-3 mb-4 text-white text-xs font-light\">\n <div className=\"flex items-center justify-between\">\n <span>Available Balance:</span>\n <span>\n {formattedBalance} {tokenSymbolDisplay}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>SOL Balance:</span>\n <span>{formattedSolBalance} SOL</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>Minimum Deposit:</span>\n <span>\n {minDepositDisplay} {tokenSymbolDisplay}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>Gas Fee:</span>\n <span>{gasFeeDisplay}</span>\n </div>\n </div>\n\n <div className=\"h-px bg-n1-ww-border mb-4\"></div>\n\n {/* Amount Input Section */}\n <div className=\"mb-4 flex justify-between w-full\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-between border border-n1-ww-gray-400 bg-n1-ww-gray-600 flex-1 w-[292px] rounded h-8 px-2\">\n <span className=\"text-white text-sm font-medium\">Amount</span>\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"number\"\n step=\"0.000001\"\n value={amount}\n onChange={(e) => updateAmount(e.target.value)}\n className=\"text-white font-light text-xs text-right bg-transparent border-none outline-none focus:ring-2 focus:ring-n1-ww-main focus:ring-offset-0 rounded px-1\"\n />\n <button className=\"border border-n1-ww-gray-400 h-5 text-white text-xs font-light flex items-center justify-center px-1 rounded transition-colors\">\n {tokenSymbolDisplay}\n </button>\n </div>\n </div>\n </div>\n <button\n className=\"border border-n1-ww-gray-400 bg-n1-ww-gray-600 rounded text-white text-sm font-medium px-2 h-8 hover:bg-n1-ww-gray-800 transition-colors w-[68px]\"\n onClick={handleUseMax}\n type=\"button\"\n >\n Max\n </button>\n </div>\n\n {validationError && (\n <p className=\"mb-2 text-xs text-red-400\">{validationError}</p>\n )}\n\n {/* Deposit Button */}\n <button\n onClick={startDeposit}\n disabled={!isValidAmount}\n className={`\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ${\n isValidAmount\n ? \"border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\"\n : \"border-n1-ww-border opacity-50 cursor-not-allowed\"\n }\n `}\n >\n <span\n className={`\n font-medium text-sm opacity-90\n ${isValidAmount ? \"text-n1-ww-main\" : \"text-n1-ww-gray-600\"}\n `}\n >\n Deposit\n </span>\n </button>\n </div>\n );\n}\n"]}
@@ -1,3 +0,0 @@
1
- import { WaitingMessageState } from "../types";
2
- export declare const DEPOSIT_PROGRESS_MESSAGE: WaitingMessageState;
3
- export declare function DepositProgressScreen(): import("react/jsx-runtime").JSX.Element;
@@ -1,31 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { WaitingMessage } from "../components/WaitingMessage";
14
- import { useDepositFlow } from "../providers";
15
- export var DEPOSIT_PROGRESS_MESSAGE = {
16
- visible: true,
17
- title: "Processing Deposit",
18
- subtitle: "Please wait while we process your deposit",
19
- isTyping: false,
20
- };
21
- var SUBTITLES = {
22
- solana: 'Please sign the transaction in your wallet to continue',
23
- nord: 'Waiting for N1 to process the deposit...',
24
- };
25
- export function DepositProgressScreen() {
26
- var _a;
27
- var depositProgressPhase = useDepositFlow().depositProgressPhase;
28
- var message = __assign(__assign({}, DEPOSIT_PROGRESS_MESSAGE), { subtitle: (_a = SUBTITLES[depositProgressPhase]) !== null && _a !== void 0 ? _a : SUBTITLES.solana });
29
- return (_jsx("div", { className: "overflow-hidden relative", children: _jsx(WaitingMessage, { message: message, animation: "transfer" }) }));
30
- }
31
- //# sourceMappingURL=06-DepositProgressScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"06-DepositProgressScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/06-DepositProgressScreen.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,CAAC,IAAM,wBAAwB,GAAwB;IAC3D,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,2CAA2C;IACrD,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,IAAM,SAAS,GAAsC;IACnD,MAAM,EAAE,wDAAwD;IAChE,IAAI,EAAE,0CAA0C;CACjD,CAAC;AAEF,MAAM,UAAU,qBAAqB;;IAC3B,IAAA,oBAAoB,GAAK,cAAc,EAAE,qBAArB,CAAsB;IAClD,IAAM,OAAO,yBACR,wBAAwB,KAC3B,QAAQ,EAAE,MAAA,SAAS,CAAC,oBAAoB,CAAC,mCAAI,SAAS,CAAC,MAAM,GAC9D,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACvC,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,UAAU,GAAG,GACrD,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { WaitingMessage } from \"../components/WaitingMessage\";\nimport { useDepositFlow } from \"../providers\";\nimport { WaitingMessageState } from \"../types\";\n\n\nexport const DEPOSIT_PROGRESS_MESSAGE: WaitingMessageState = {\n visible: true,\n title: \"Processing Deposit\",\n subtitle: \"Please wait while we process your deposit\",\n isTyping: false,\n};\n\nconst SUBTITLES: Record<'solana' | 'nord', string> = {\n solana: 'Please sign the transaction in your wallet to continue',\n nord: 'Waiting for N1 to process the deposit...',\n};\n\nexport function DepositProgressScreen() {\n const { depositProgressPhase } = useDepositFlow();\n const message = {\n ...DEPOSIT_PROGRESS_MESSAGE,\n subtitle: SUBTITLES[depositProgressPhase] ?? SUBTITLES.solana,\n };\n\n return (\n <div className=\"overflow-hidden relative\">\n <WaitingMessage message={message} animation=\"transfer\" />\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- export declare function DepositSuccessScreen(): import("react/jsx-runtime").JSX.Element;
@@ -1,136 +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
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
- import { useEffect, useState } from "react";
39
- import { useN1WalletContext } from "../../../hooks";
40
- import { isNordConfigured, shortenAddress } from "../utils/nordUtils";
41
- import { useDepositFlow, useOnboardingState } from "../providers";
42
- import { getExplorerUrl } from "../utils/transaction";
43
- // Share icon component reused from Header.tsx
44
- var ShareIcon = function (_a) {
45
- var className = _a.className;
46
- return (_jsxs("svg", { className: className || "h-full w-full", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M5.93066 8.06944L12.3473 1.65277", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" }), _jsx("path", { d: "M8.06958 1.65277H12.3474V5.93055", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" }), _jsx("path", { d: "M10.7431 7.80207V12.3472H1.65283V3.25693H6.19797", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" })] }));
47
- };
48
- export function DepositSuccessScreen() {
49
- var _this = this;
50
- var _a = useDepositFlow(), amount = _a.amount, completeDeposit = _a.completeDeposit, transactionResult = _a.transactionResult, transactionId = _a.transactionId;
51
- var nord = useN1WalletContext().nord;
52
- var context = useOnboardingState().context;
53
- var isContinueEnabled = useState(true)[0];
54
- var _b = useState("USDC"), tokenSymbol = _b[0], setTokenSymbol = _b[1];
55
- var _c = useState(false), copiedAddress = _c[0], setCopiedAddress = _c[1];
56
- var _d = useState(false), showCopyTooltip = _d[0], setShowCopyTooltip = _d[1];
57
- var fallbackTransaction = transactionResult !== null && transactionResult !== void 0 ? transactionResult : {
58
- success: true,
59
- transactionId: transactionId !== null && transactionId !== void 0 ? transactionId : "pending-transaction",
60
- amount: amount || "0",
61
- tokenSymbol: "USDC",
62
- fromAddress: "Debug Wallet",
63
- toAddress: "Exchange Account",
64
- networkName: "Devnet",
65
- status: "Completed",
66
- explorerUrl: transactionId ? getExplorerUrl(transactionId) : "",
67
- };
68
- // Get token information from Nord if available
69
- useEffect(function () {
70
- if (nord && isNordConfigured(nord)) {
71
- try {
72
- var usdcToken = nord.tokens.find(function (t) { return t.symbol === "USDC"; }) || nord.tokens[0];
73
- if (usdcToken) {
74
- setTokenSymbol(usdcToken.symbol);
75
- }
76
- }
77
- catch (error) {
78
- console.warn("Error getting token information from Nord:", error);
79
- }
80
- }
81
- }, [nord]);
82
- // Solana transaction ID (from depositSpl)
83
- var solanaTransactionId = transactionId || fallbackTransaction.transactionId;
84
- var solanaTransactionIdShort = shortenAddress(solanaTransactionId, 5, 4);
85
- var solanaExplorerUrl = solanaTransactionId
86
- ? getExplorerUrl(solanaTransactionId)
87
- : "";
88
- // N1 transaction ID (could be derived from transactionResult or generated)
89
- // For now, using a formatted version or placeholder
90
- var n1TransactionId = (transactionResult === null || transactionResult === void 0 ? void 0 : transactionResult.transactionId)
91
- ? "n1_".concat(transactionResult.transactionId.substring(0, 8))
92
- : "n1_".concat(solanaTransactionId.substring(0, 8));
93
- var n1TransactionIdShort = shortenAddress(n1TransactionId, 5, 4);
94
- // N1 explorer URL (placeholder - adjust based on actual N1 explorer)
95
- var n1ExplorerUrl = "https://explorer.n1.network/tx/".concat(n1TransactionId);
96
- var fromAddressShort = shortenAddress(fallbackTransaction.fromAddress, 5, 4);
97
- var fromAddressFull = fallbackTransaction.fromAddress;
98
- // Handle copy to clipboard for wallet address
99
- var handleCopyAddress = function () { return __awaiter(_this, void 0, void 0, function () {
100
- var nav, error_1;
101
- var _a;
102
- return __generator(this, function (_b) {
103
- switch (_b.label) {
104
- case 0:
105
- if (!fromAddressFull || typeof navigator === "undefined")
106
- return [2 /*return*/];
107
- nav = navigator;
108
- if (!((_a = nav.clipboard) === null || _a === void 0 ? void 0 : _a.writeText)) return [3 /*break*/, 4];
109
- _b.label = 1;
110
- case 1:
111
- _b.trys.push([1, 3, , 4]);
112
- return [4 /*yield*/, nav.clipboard.writeText(fromAddressFull)];
113
- case 2:
114
- _b.sent();
115
- setCopiedAddress(true);
116
- setTimeout(function () {
117
- setCopiedAddress(false);
118
- }, 1000);
119
- return [3 /*break*/, 4];
120
- case 3:
121
- error_1 = _b.sent();
122
- console.warn("Failed to copy address:", error_1);
123
- return [3 /*break*/, 4];
124
- case 4: return [2 /*return*/];
125
- }
126
- });
127
- }); };
128
- return (_jsx("div", { className: "relative w-full", children: _jsxs("div", { className: "flex flex-col space-y-4", children: [_jsx("div", { className: "w-full py-4", children: _jsx("div", { className: "flex items-center justify-center", children: _jsxs("div", { className: "text-center flex items-end", children: [_jsx("div", { className: "text-5xl md:text-6xl tracking-tight text-n1-ww-main font-medium", children: Number(amount).toLocaleString() }), _jsx("div", { className: "h-5 inline-flex items-center justify-center border border-n1-ww-border rounded px-1 py-1 ml-2 mb-1", children: _jsx("span", { className: "text-white text-xs font-light", children: tokenSymbol }) })] }) }) }), _jsxs("div", { className: "space-y-3 mb-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "Amount:" }), _jsxs("span", { className: "text-white text-xs font-light", children: [Number(amount).toLocaleString(), " ", tokenSymbol] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "Status:" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-n1-ww-accent-neon", children: [_jsx("rect", { x: "0.5", y: "0.5", width: "13", height: "13", rx: "6.5", stroke: "currentColor" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10.7917 4.83199L6.54647 9.9756L6.27917 10.2995L5.97635 10.0059L3.5 7.60561L4.0421 7.0879L6.21563 9.19473L10.1935 4.375L10.7917 4.83199Z", fill: "currentColor", stroke: "currentColor", strokeWidth: "0.5" })] }), _jsx("span", { className: "text-n1-ww-accent-neon text-xs font-light", children: fallbackTransaction.status })] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "From:" }), _jsxs("div", { className: "relative flex items-center gap-1 group", children: [_jsx("button", { onClick: handleCopyAddress, onMouseEnter: function () { return !copiedAddress && setShowCopyTooltip(true); }, onMouseLeave: function () { return setShowCopyTooltip(false); }, className: "text-white text-xs font-light underline cursor-pointer hover:text-n1-ww-main transition-colors", children: fromAddressShort }), (copiedAddress || showCopyTooltip) && (_jsx("div", { className: "absolute top-full mt-1 left-1/2 -translate-x-1/2 px-2 py-1 bg-n1-ww-gray-800 border border-n1-ww-border rounded text-xs text-white whitespace-nowrap z-10 pointer-events-none ".concat(copiedAddress
129
- ? "opacity-100"
130
- : showCopyTooltip
131
- ? "opacity-100"
132
- : "opacity-0", " transition-opacity duration-200"), children: copiedAddress ? "Copied!" : "Click to copy" }))] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "N1 Transaction ID:" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-white text-xs font-light underline", children: n1TransactionIdShort }), n1ExplorerUrl && (_jsx("a", { href: n1ExplorerUrl, target: "_blank", rel: "noopener noreferrer", className: "flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors", "aria-label": "View N1 transaction on explorer", children: _jsx(ShareIcon, {}) }))] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "Solana Transaction ID:" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-white text-xs font-light underline", children: solanaTransactionIdShort }), solanaExplorerUrl && (_jsx("a", { href: solanaExplorerUrl, target: "_blank", rel: "noopener noreferrer", className: "flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors", "aria-label": "View transaction on explorer", children: _jsx(ShareIcon, {}) }))] })] })] }), _jsx("div", { className: "h-px bg-n1-ww-border mb-4" }), _jsx("button", { onClick: isContinueEnabled ? completeDeposit : undefined, disabled: !isContinueEnabled, className: "\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ".concat(isContinueEnabled
133
- ? "border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer text-n1-ww-main"
134
- : "border-n1-ww-border opacity-50 cursor-not-allowed text-n1-ww-gray-600", "\n "), children: _jsx("span", { className: "font-medium text-sm opacity-90", children: context.isDepositOnlyFlow ? "Close" : "Continue" }) })] }) }));
135
- }
136
- //# sourceMappingURL=07-DepositSuccessScreen.js.map