@n1xyz/wallet-widget 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Logic/transactionManager.d.ts +1 -1
- package/dist/Logic/transactionManager.js +1 -1
- package/dist/Logic/transactionManager.js.map +1 -1
- package/dist/Modal/NordFlow/NordFlow.js +22 -228
- package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
- package/dist/Modal/NordFlow/components/Header.d.ts +10 -0
- package/dist/Modal/NordFlow/components/Header.js +11 -0
- package/dist/Modal/NordFlow/components/Header.js.map +1 -0
- package/dist/Modal/NordFlow/components/TransactionTable.js +4 -7
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
- package/dist/Modal/NordFlow/components/index.d.ts +1 -0
- package/dist/Modal/NordFlow/components/index.js +1 -0
- package/dist/Modal/NordFlow/components/index.js.map +1 -1
- package/dist/Modal/NordFlow/constants.js +116 -95
- package/dist/Modal/NordFlow/constants.js.map +1 -1
- package/dist/Modal/NordFlow/context/DepositContext.d.ts +27 -0
- package/dist/Modal/NordFlow/context/DepositContext.js +308 -0
- package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -0
- package/dist/Modal/NordFlow/context/FlowContext.d.ts +23 -0
- package/dist/Modal/NordFlow/context/FlowContext.js +125 -0
- package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -0
- package/dist/Modal/NordFlow/context/NordProvider.d.ts +10 -0
- package/dist/Modal/NordFlow/context/NordProvider.js +14 -0
- package/dist/Modal/NordFlow/context/NordProvider.js.map +1 -0
- package/dist/Modal/NordFlow/context/WalletConnectContext.d.ts +20 -0
- package/dist/Modal/NordFlow/context/WalletConnectContext.js +214 -0
- package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -0
- package/dist/Modal/NordFlow/context/deposit/types.d.ts +26 -0
- package/dist/Modal/NordFlow/context/deposit/types.js +2 -0
- package/dist/Modal/NordFlow/context/deposit/types.js.map +1 -0
- package/dist/Modal/NordFlow/context/deposit/useDepositAuth.d.ts +7 -0
- package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js +113 -0
- package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js.map +1 -0
- package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.d.ts +20 -0
- package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js +235 -0
- package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js.map +1 -0
- package/dist/Modal/NordFlow/context/index.d.ts +5 -0
- package/dist/Modal/NordFlow/context/index.js +8 -0
- package/dist/Modal/NordFlow/context/index.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/index.d.ts +3 -5
- package/dist/Modal/NordFlow/hooks/index.js +3 -5
- package/dist/Modal/NordFlow/hooks/index.js.map +1 -1
- package/dist/Modal/NordFlow/hooks/useDepositFlow.js +2 -4
- package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +1 -1
- package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -6
- package/dist/Modal/NordFlow/hooks/useNordInstance.js +2 -358
- package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +1 -1
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.d.ts +0 -1
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +0 -1
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +1 -1
- package/dist/Modal/NordFlow/screens/00-IdleScreen.d.ts +6 -0
- package/dist/Modal/NordFlow/screens/00-IdleScreen.js +9 -0
- package/dist/Modal/NordFlow/screens/00-IdleScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -6
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -4
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +1 -5
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +9 -12
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.d.ts +1 -7
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +9 -7
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.d.ts +1 -13
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +59 -31
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.d.ts +1 -6
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +8 -3
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.d.ts +1 -8
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +15 -4
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.d.ts +1 -6
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +14 -120
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.d.ts +1 -1
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +9 -4
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.d.ts +1 -7
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +9 -9
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/index.d.ts +1 -0
- package/dist/Modal/NordFlow/screens/index.js +1 -0
- package/dist/Modal/NordFlow/screens/index.js.map +1 -1
- package/dist/Modal/NordFlow/types.d.ts +0 -5
- package/dist/Modal/NordFlow/types.js +0 -1
- package/dist/Modal/NordFlow/types.js.map +1 -1
- package/dist/Modal/NordFlow/utils/index.d.ts +0 -1
- package/dist/Modal/NordFlow/utils/index.js +0 -1
- package/dist/Modal/NordFlow/utils/index.js.map +1 -1
- package/dist/Provider/LazyWalletProvider.js +2 -0
- package/dist/Provider/LazyWalletProvider.js.map +1 -1
- package/dist/Provider/N1WalletProvider.js +48 -63
- package/dist/Provider/N1WalletProvider.js.map +1 -1
- package/dist/Provider/WalletErrorBoundary.d.ts +10 -0
- package/dist/Provider/WalletErrorBoundary.js +39 -0
- package/dist/Provider/WalletErrorBoundary.js.map +1 -0
- package/dist/Provider/hooks/useNordUserInitialization.d.ts +20 -0
- package/dist/Provider/hooks/useNordUserInitialization.js +293 -0
- package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -0
- package/dist/Provider/types.d.ts +2 -0
- package/dist/Provider/types.js.map +1 -1
- package/dist/Provider/useN1WalletProvider.d.ts +37 -0
- package/dist/Provider/useN1WalletProvider.js +398 -0
- package/dist/Provider/useN1WalletProvider.js.map +1 -0
- package/dist/main.css +1 -1
- package/package.json +1 -1
|
@@ -34,7 +34,7 @@ export declare function createAndSendTransaction(data: TransactionData, signMess
|
|
|
34
34
|
/**
|
|
35
35
|
* Get explorer URL for a transaction
|
|
36
36
|
*/
|
|
37
|
-
export declare function getExplorerUrl(transactionId: string
|
|
37
|
+
export declare function getExplorerUrl(transactionId: string): string;
|
|
38
38
|
/**
|
|
39
39
|
* Check transaction status
|
|
40
40
|
*/
|
|
@@ -163,7 +163,7 @@ function getNetworkName(chainId) {
|
|
|
163
163
|
/**
|
|
164
164
|
* Get explorer URL for a transaction
|
|
165
165
|
*/
|
|
166
|
-
export function getExplorerUrl(transactionId
|
|
166
|
+
export function getExplorerUrl(transactionId) {
|
|
167
167
|
var baseUrl = 'https://explorer.solana.com/tx/';
|
|
168
168
|
return "".concat(baseUrl).concat(transactionId, "?cluster=devnet");
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionManager.js","sourceRoot":"","sources":["../../src/Logic/transactionManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA6BlD;;;;;GAKG;AACH,MAAM,UAAgB,wBAAwB,CAC5C,IAAqB,EACrB,WAAyD;;;;;;oBAEzD,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;;;;oBAI/C,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACvD,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,6BAA6B,EAC7C,6BAA6B,CAC9B,CAAC;oBACJ,CAAC;oBAED,8BAA8B;oBAC9B,IAAI,WAAW,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjD,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,aAAa,EAC7B,0CAAmC,IAAI,CAAC,WAAW,mBAAS,WAAW,CAAC,WAAW,CAAE,CACtF,CAAC;oBACJ,CAAC;yBAGG,CAAA,IAAI,CAAC,WAAW,KAAK,aAAa,CAAC,IAAI,CAAA,EAAvC,wBAAuC;oBAClC,qBAAM,4BAA4B,CAAC,IAAI,EAAE,WAAW,CAAC,EAAA;wBAA5D,sBAAO,SAAqD,EAAC;wBAEtD,qBAAM,2BAA2B,CAAC,IAAI,EAAE,WAAW,CAAC,EAAA;wBAA3D,sBAAO,SAAoD,EAAC;;;;oBAG9D,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,OAAK,CAAC,CAAC;oBAC7D,MAAM,OAAK,YAAY,WAAW;wBAChC,CAAC,CAAC,OAAK;wBACP,CAAC,CAAC,IAAI,WAAW,CACb,eAAe,CAAC,kBAAkB,EAClC,uCAAuC,EACvC,EAAE,aAAa,EAAE,OAAK,EAAE,CACzB,CAAC;;;;;CAET;AAED;;;GAGG;AACH,SAAe,4BAA4B,CACzC,IAAqB,EACrB,WAAyD;;;;YAEzD,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;YAGtD,aAAa,GAAG,eAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;YAE5E,wCAAwC;YACxC,8CAA8C;YAC9C,kCAAkC;YAClC,6BAA6B;YAC7B,2BAA2B;YAE3B,sBAAO;oBACL,OAAO,EAAE,IAAI;oBACb,aAAa,eAAA;oBACb,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,aAAa;oBAC/B,SAAS,EAAE,cAAc;oBACzB,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;oBACzC,MAAM,EAAE,WAAW;oBACnB,WAAW,EAAE,2CAAoC,aAAa,CAAE;iBACjE,EAAC;;;CACH;AAED;;;GAGG;AACH,SAAe,2BAA2B,CACxC,IAAqB,EACrB,WAAyD;;;;;;oBAEzD,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC;oBAE3D,uCAAuC;oBACvC,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAzB,CAAyB,CAAC,EAAA;;oBADzD,uCAAuC;oBACvC,SAAyD,CAAC;oBAGpD,aAAa,GAAG,cAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;oBAE3E,wCAAwC;oBACxC,6CAA6C;oBAC7C,kCAAkC;oBAClC,4BAA4B;oBAC5B,2BAA2B;oBAE3B,sBAAO;4BACL,OAAO,EAAE,IAAI;4BACb,aAAa,eAAA;4BACb,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,WAAW,EAAE,IAAI,CAAC,aAAa;4BAC/B,SAAS,EAAE,aAAa;4BACxB,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;4BACzC,MAAM,EAAE,WAAW;4BACnB,WAAW,EAAE,0CAAmC,aAAa,CAAE;yBAChE,EAAC;;;;CACH;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,iCAAiC;IACjC,IAAM,UAAU,GAA2B;QACzC,gBAAgB,EAAE,gBAAgB;QAClC,eAAe,EAAE,eAAe;QAChC,gBAAgB,EAAE,gBAAgB;QAClC,kBAAkB,EAAE,kBAAkB;QACtC,iBAAiB,EAAE,iBAAiB;QACpC,kBAAkB,EAAE,kBAAkB;KACvC,CAAC;IAEF,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,aAAqB
|
|
1
|
+
{"version":3,"file":"transactionManager.js","sourceRoot":"","sources":["../../src/Logic/transactionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { N1SessionMode } from '../Provider/types';\nimport { logger } from '../utils/logger';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport { getSessionKeys } from './sessionManager';\n\n/**\n * Interface for transaction data\n */\nexport interface TransactionData {\n chainId: string;\n amount: string;\n tokenSymbol: string;\n walletAddress: string;\n sessionMode: N1SessionMode;\n}\n\n/**\n * Interface for transaction result\n */\nexport interface TransactionResult {\n success: boolean;\n transactionId: string;\n amount: string;\n tokenSymbol: string;\n fromAddress: string;\n toAddress: string;\n networkName: string;\n status: 'Completed' | 'Failed' | 'Pending';\n explorerUrl?: string;\n error?: Error;\n}\n\n/**\n * Create and send a transaction\n * @param data Transaction data\n * @param signMessage Function to sign messages with wallet\n * @returns Transaction result\n */\nexport async function createAndSendTransaction(\n data: TransactionData,\n signMessage: (message: Uint8Array) => Promise<Uint8Array>\n): Promise<TransactionResult> {\n logger.debug('Creating and sending transaction', data);\n\n try {\n // Check if we have valid session keys\n const sessionKeys = getSessionKeys(data.walletAddress);\n if (!sessionKeys) {\n throw new WalletError(\n WalletErrorCode.SESSION_INITIALIZATION_FAILED,\n 'No valid session keys found'\n );\n }\n\n // Ensure session mode matches\n if (sessionKeys.sessionMode !== data.sessionMode) {\n throw new WalletError(\n WalletErrorCode.INVALID_CHAIN,\n `Session mode mismatch: expected ${data.sessionMode}, got ${sessionKeys.sessionMode}`\n );\n }\n\n // Handle transaction based on session mode\n if (data.sessionMode === N1SessionMode.Nord) {\n return await createAndSendNordTransaction(data, signMessage);\n } else {\n return await createAndSendNTSTransaction(data, signMessage);\n }\n } catch (error) {\n logger.error('Failed to create and send transaction', error);\n throw error instanceof WalletError\n ? error\n : new WalletError(\n WalletErrorCode.TRANSACTION_FAILED,\n 'Failed to create and send transaction',\n { originalError: error }\n );\n }\n}\n\n/**\n * Create and send a Nord transaction\n * This is a placeholder implementation that will be replaced with the actual Nord transaction logic\n */\nasync function createAndSendNordTransaction(\n data: TransactionData,\n signMessage: (message: Uint8Array) => Promise<Uint8Array>\n): Promise<TransactionResult> {\n logger.debug('Creating and sending Nord transaction', data);\n\n // Generate a transaction ID\n const transactionId = `nord_${Math.random().toString(36).substring(2, 15)}`;\n\n // In a real implementation, this would:\n // 1. Build a transaction for the Nord network\n // 2. Sign it with the session key\n // 3. Send it to the Nord API\n // 4. Wait for confirmation\n\n return {\n success: true,\n transactionId,\n amount: data.amount,\n tokenSymbol: data.tokenSymbol,\n fromAddress: data.walletAddress,\n toAddress: 'Your Account',\n networkName: getNetworkName(data.chainId),\n status: 'Completed',\n explorerUrl: `https://explorer.nord.network/tx/${transactionId}`,\n };\n}\n\n/**\n * Create and send an NTS transaction\n * This is a placeholder implementation that will be replaced with the actual NTS transaction logic\n */\nasync function createAndSendNTSTransaction(\n data: TransactionData,\n signMessage: (message: Uint8Array) => Promise<Uint8Array>\n): Promise<TransactionResult> {\n logger.debug('Creating and sending NTS transaction', data);\n\n // Simulate transaction processing time\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n // Generate a transaction ID\n const transactionId = `nts_${Math.random().toString(36).substring(2, 15)}`;\n\n // In a real implementation, this would:\n // 1. Build a transaction for the NTS network\n // 2. Sign it with the session key\n // 3. Send it to the NTS API\n // 4. Wait for confirmation\n\n return {\n success: true,\n transactionId,\n amount: data.amount,\n tokenSymbol: data.tokenSymbol,\n fromAddress: data.walletAddress,\n toAddress: 'NTS Account',\n networkName: getNetworkName(data.chainId),\n status: 'Completed',\n explorerUrl: `https://explorer.nts.network/tx/${transactionId}`,\n };\n}\n\n/**\n * Get network name from chain ID\n */\nfunction getNetworkName(chainId: string): string {\n // Map chain IDs to network names\n const networkMap: Record<string, string> = {\n 'solana-mainnet': 'Solana Mainnet',\n 'solana-devnet': 'Solana Devnet',\n 'solana-testnet': 'Solana Testnet',\n 'ethereum-mainnet': 'Ethereum Mainnet',\n 'ethereum-goerli': 'Ethereum Goerli',\n 'ethereum-sepolia': 'Ethereum Sepolia',\n };\n\n return networkMap[chainId] || chainId;\n}\n\n/**\n * Get explorer URL for a transaction\n */\nexport function getExplorerUrl(transactionId: string) {\n const baseUrl = 'https://explorer.solana.com/tx/';\n return `${baseUrl}${transactionId}?cluster=devnet`;\n}\n\n/**\n * Check transaction status\n */\nexport async function checkTransactionStatus(\n transactionId: string,\n chainId: string,\n sessionMode: N1SessionMode\n): Promise<'Completed' | 'Failed' | 'Pending'> {\n logger.debug('Checking transaction status', {\n transactionId,\n chainId,\n sessionMode,\n });\n\n // In a real implementation, this would query the appropriate API based on session mode\n // For now, we'll simulate a successful transaction\n\n // Simulate processing time\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n return 'Completed';\n}\n"]}
|
|
@@ -1,50 +1,9 @@
|
|
|
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
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
38
|
-
import
|
|
39
|
-
import
|
|
40
|
-
import { useN1WalletContext, useN1WalletInternalContext, } from '../../Provider/hooks';
|
|
41
|
-
import { logger } from '../../utils/logger';
|
|
42
|
-
import { CHAINS } from './constants';
|
|
2
|
+
import { Header } from './components';
|
|
3
|
+
import { useFlowStateContext } from './context';
|
|
43
4
|
import { withImageFallback } from './hoc';
|
|
44
|
-
import {
|
|
45
|
-
import { AmountInputScreen, AuthLoadingScreen, ChainSelectionScreen, ConnectWalletScreen, DepositProgressScreen, DepositSuccessScreen, ErrorScreen, EvmWalletAuthScreen, FinalSuccessScreen, } from './screens';
|
|
5
|
+
import { AmountInputScreen, AuthLoadingScreen, ChainSelectionScreen, ConnectWalletScreen, DepositProgressScreen, DepositSuccessScreen, ErrorScreen, EvmWalletAuthScreen, FinalSuccessScreen, IdleScreen, } from './screens';
|
|
46
6
|
import { FlowState } from './types';
|
|
47
|
-
import { getTokenBalance, isNordConfigured } from './utils/nordUtils';
|
|
48
7
|
// Apply the withImageFallback HOC to all screen components
|
|
49
8
|
var EnhancedConnectWalletScreen = withImageFallback(ConnectWalletScreen);
|
|
50
9
|
var EnhancedEvmWalletAuthScreen = withImageFallback(EvmWalletAuthScreen);
|
|
@@ -55,209 +14,44 @@ var EnhancedDepositSuccessScreen = withImageFallback(DepositSuccessScreen);
|
|
|
55
14
|
var EnhancedAuthLoadingScreen = withImageFallback(AuthLoadingScreen);
|
|
56
15
|
var EnhancedFinalSuccessScreen = withImageFallback(FinalSuccessScreen);
|
|
57
16
|
var EnhancedErrorScreen = withImageFallback(ErrorScreen);
|
|
17
|
+
var EnhancedIdleScreen = withImageFallback(IdleScreen);
|
|
58
18
|
/**
|
|
59
19
|
* Main component for the wallet connection flow
|
|
60
20
|
*/
|
|
61
21
|
export var NordFlow = function (_a) {
|
|
62
22
|
var onClose = _a.onClose;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
var handleStateChange = useCallback(function (newState, prevState) {
|
|
71
|
-
logger.debug("State changed from ".concat(prevState, " to ").concat(newState));
|
|
72
|
-
}, []);
|
|
73
|
-
// Handle errors
|
|
74
|
-
var handleError = useCallback(function (error) {
|
|
75
|
-
logger.error('Flow error:', error);
|
|
76
|
-
}, []);
|
|
77
|
-
// Initialize flow state
|
|
78
|
-
var _d = useFlowState({
|
|
79
|
-
autoRecover: false, // We'll handle recovery with a prompt
|
|
80
|
-
onStateChange: handleStateChange,
|
|
81
|
-
onError: handleError,
|
|
82
|
-
}), state = _d.state, context = _d.context, transition = _d.transition, updateContext = _d.updateContext, recover = _d.recover, recordInterruption = _d.recordInterruption, handleFlowError = _d.handleError, isRecoveryAvailable = _d.isRecoveryAvailable;
|
|
83
|
-
// Create a wrapped transition function that logs more details
|
|
84
|
-
var enhancedTransition = useCallback(function (newState, contextUpdates) {
|
|
85
|
-
logger.debug("Attempting transition to ".concat(newState), contextUpdates);
|
|
86
|
-
var result = transition(newState, contextUpdates);
|
|
87
|
-
logger.debug("Transition to ".concat(newState, " result:"), result);
|
|
88
|
-
return result;
|
|
89
|
-
}, [transition]);
|
|
90
|
-
// Initialize wallet connection
|
|
91
|
-
var _e = useNordWalletConnect(state, enhancedTransition, // Use enhanced transition instead of regular transition
|
|
92
|
-
context, updateContext, sessionMode || 0), connectWallet = _e.connectWallet, isConnecting = _e.isConnecting;
|
|
93
|
-
// Initialize deposit flow
|
|
94
|
-
var _f = useDepositFlow({
|
|
95
|
-
state: state,
|
|
96
|
-
context: context,
|
|
97
|
-
transition: transition,
|
|
98
|
-
handleError: handleFlowError,
|
|
99
|
-
updateContext: updateContext,
|
|
100
|
-
}), amount = _f.amount, updateAmount = _f.updateAmount, startDeposit = _f.startDeposit, completeDeposit = _f.completeDeposit, getTransactionDetails = _f.getTransactionDetails;
|
|
101
|
-
// Initialize interrupt handler
|
|
102
|
-
var _g = useInterruptHandler({
|
|
103
|
-
state: state,
|
|
104
|
-
recordInterruption: recordInterruption,
|
|
105
|
-
onClose: onClose,
|
|
106
|
-
}), isClosing = _g.isClosing, handleCloseRequest = _g.handleCloseRequest;
|
|
107
|
-
// Check for recovery on mount
|
|
108
|
-
var _h = useState(false), hasAttemptedRecovery = _h[0], setHasAttemptedRecovery = _h[1];
|
|
109
|
-
React.useEffect(function () {
|
|
110
|
-
if (!hasAttemptedRecovery) {
|
|
111
|
-
if (isRecoveryAvailable) {
|
|
112
|
-
// Automatically recover without showing a prompt
|
|
113
|
-
recover();
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
console.log('baababbababababab');
|
|
117
|
-
// Start at CONNECTING_WALLET so we show the wallet selection screen
|
|
118
|
-
// The actual connection will only happen when the user clicks the button
|
|
119
|
-
transition(FlowState.CONNECTING_WALLET);
|
|
120
|
-
}
|
|
121
|
-
setHasAttemptedRecovery(true);
|
|
122
|
-
}
|
|
123
|
-
}, [hasAttemptedRecovery, isRecoveryAvailable, transition, recover]);
|
|
124
|
-
// For deposit progress message
|
|
125
|
-
var depositMessage = {
|
|
126
|
-
visible: true,
|
|
127
|
-
title: 'Processing Deposit',
|
|
128
|
-
subtitle: 'Please wait while we process your deposit',
|
|
129
|
-
isTyping: false,
|
|
130
|
-
};
|
|
131
|
-
var handleFinish = function () {
|
|
132
|
-
if (onClose) {
|
|
133
|
-
onClose();
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
// Handle chain selection
|
|
137
|
-
var handleChainSelect = useCallback(function (chainId) {
|
|
138
|
-
logger.debug('Chain selected in NordFlow:', chainId);
|
|
139
|
-
// For testnet, we need to use the network ID
|
|
140
|
-
var selectedChain = chainId;
|
|
141
|
-
logger.debug('Transitioning to AMOUNT_INPUT with chain:', selectedChain);
|
|
142
|
-
enhancedTransition(FlowState.AMOUNT_INPUT, {
|
|
143
|
-
selectedChain: selectedChain,
|
|
144
|
-
});
|
|
145
|
-
}, [enhancedTransition]);
|
|
146
|
-
// Get the USDC balance
|
|
147
|
-
var getUsdcBalance = useCallback(function () {
|
|
148
|
-
// Try to get the balance from nordUser if available
|
|
149
|
-
if (currentNordUser) {
|
|
150
|
-
var usdcBalance = getTokenBalance(currentNordUser, 'USDC');
|
|
151
|
-
if (usdcBalance > 0) {
|
|
152
|
-
return usdcBalance;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Fallback to the first balance from the context or a default value
|
|
156
|
-
return balances && balances.length > 0 ? Number(balances[0].balance) : 100;
|
|
157
|
-
}, [currentNordUser, balances]);
|
|
158
|
-
// Function to refresh balances
|
|
159
|
-
var refreshBalance = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
160
|
-
var userAny, error_1, error_2;
|
|
161
|
-
return __generator(this, function (_a) {
|
|
162
|
-
switch (_a.label) {
|
|
163
|
-
case 0:
|
|
164
|
-
_a.trys.push([0, 6, , 7]);
|
|
165
|
-
logger.debug('Refreshing balance...');
|
|
166
|
-
if (!(currentNordUser && nord && isNordConfigured(nord))) return [3 /*break*/, 5];
|
|
167
|
-
_a.label = 1;
|
|
168
|
-
case 1:
|
|
169
|
-
_a.trys.push([1, 4, , 5]);
|
|
170
|
-
userAny = currentNordUser;
|
|
171
|
-
if (!(userAny && typeof userAny.refreshBalances === 'function')) return [3 /*break*/, 3];
|
|
172
|
-
return [4 /*yield*/, userAny.refreshBalances()];
|
|
173
|
-
case 2:
|
|
174
|
-
_a.sent();
|
|
175
|
-
logger.debug('Balances refreshed using Nord-TS');
|
|
176
|
-
return [2 /*return*/];
|
|
177
|
-
case 3: return [3 /*break*/, 5];
|
|
178
|
-
case 4:
|
|
179
|
-
error_1 = _a.sent();
|
|
180
|
-
logger.warn('Error refreshing balances using Nord-TS, falling back to default method:', error_1);
|
|
181
|
-
return [3 /*break*/, 5];
|
|
182
|
-
case 5:
|
|
183
|
-
logger.debug('Balance refreshed using default method');
|
|
184
|
-
return [3 /*break*/, 7];
|
|
185
|
-
case 6:
|
|
186
|
-
error_2 = _a.sent();
|
|
187
|
-
logger.error('Error refreshing balance:', error_2);
|
|
188
|
-
return [3 /*break*/, 7];
|
|
189
|
-
case 7: return [2 /*return*/];
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
}); }, [currentNordUser, nord]);
|
|
193
|
-
// Get available chains from Nord if possible
|
|
194
|
-
var getAvailableChains = useCallback(function () {
|
|
195
|
-
if (nord &&
|
|
196
|
-
isNordConfigured(nord) &&
|
|
197
|
-
nord.markets &&
|
|
198
|
-
nord.markets.length > 0) {
|
|
199
|
-
// Map Nord markets to chains format
|
|
200
|
-
return nord.markets.map(function (market) { return ({
|
|
201
|
-
id: market.marketId.toString(),
|
|
202
|
-
name: market.symbol,
|
|
203
|
-
// Use a placeholder or dynamically generated logo instead of non-existent assets
|
|
204
|
-
logo: market.symbol.toLowerCase(), // Just use the symbol as an identifier
|
|
205
|
-
}); });
|
|
206
|
-
}
|
|
207
|
-
// Fallback to predefined chains
|
|
208
|
-
return CHAINS;
|
|
209
|
-
}, [nord]);
|
|
23
|
+
return (_jsx("div", { className: "z-50 flex items-center justify-center overflow-auto font-era", children: _jsxs("div", { className: "bg-n1-gray-50 dark:bg-n1-gray-950 relative border border-n1-gray-200 dark:border-n1-gray-800 rounded-md transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] w-full max-w-sm m-4 origin-center will-change-[max-width,transform,opacity min-w-96", children: [_jsx(Header, { onClose: onClose }), _jsx("div", { className: "wallet-connection-flow-content p-6 overflow-hidden", children: _jsx(NordFlowScreenRenderer, { onClose: onClose }) })] }) }));
|
|
24
|
+
};
|
|
25
|
+
// Screen renderer component that uses the flow state context
|
|
26
|
+
var NordFlowScreenRenderer = function (_a) {
|
|
27
|
+
var onClose = _a.onClose;
|
|
28
|
+
// Use the flow state context
|
|
29
|
+
var _b = useFlowStateContext(), state = _b.state, isClosing = _b.isClosing;
|
|
210
30
|
// Render the appropriate screen based on the current state
|
|
211
31
|
var renderScreen = function () {
|
|
212
32
|
switch (state) {
|
|
213
33
|
case FlowState.CONNECTING_WALLET:
|
|
214
|
-
return
|
|
34
|
+
return _jsx(EnhancedConnectWalletScreen, {});
|
|
215
35
|
case FlowState.CHAIN_SELECTION:
|
|
216
|
-
|
|
217
|
-
return (_jsx(EnhancedChainSelectionScreen, { chains: availableChains, onChainSelect: handleChainSelect }));
|
|
36
|
+
return _jsx(EnhancedChainSelectionScreen, {});
|
|
218
37
|
case FlowState.ETH_TO_SOL_AUTH:
|
|
219
|
-
return
|
|
38
|
+
return _jsx(EnhancedEvmWalletAuthScreen, {});
|
|
220
39
|
case FlowState.AMOUNT_INPUT:
|
|
221
|
-
return
|
|
40
|
+
return _jsx(EnhancedAmountInputScreen, {});
|
|
222
41
|
case FlowState.DEPOSIT_PROGRESS:
|
|
223
|
-
return _jsx(EnhancedDepositProgressScreen, {
|
|
42
|
+
return _jsx(EnhancedDepositProgressScreen, {});
|
|
224
43
|
case FlowState.DEPOSIT_SUCCESS:
|
|
225
|
-
|
|
226
|
-
var txDetails = getTransactionDetails();
|
|
227
|
-
// Create table values from transaction details
|
|
228
|
-
var updatedTableValues = {
|
|
229
|
-
amount: { text: txDetails.amount, visible: true, typing: false },
|
|
230
|
-
tx: { text: txDetails.tx, visible: true, typing: false },
|
|
231
|
-
from: { text: txDetails.from, visible: true, typing: false },
|
|
232
|
-
to: { text: txDetails.to, visible: true, typing: false },
|
|
233
|
-
network: { text: txDetails.network, visible: true, typing: false },
|
|
234
|
-
status: { text: txDetails.status, visible: true, typing: false },
|
|
235
|
-
};
|
|
236
|
-
return (_jsx(EnhancedDepositSuccessScreen, { amount: amount, tableValues: updatedTableValues, onContinue: completeDeposit }));
|
|
44
|
+
return _jsx(EnhancedDepositSuccessScreen, {});
|
|
237
45
|
case FlowState.AUTH_LOADING:
|
|
238
|
-
return
|
|
239
|
-
if (success) {
|
|
240
|
-
// Update the context first
|
|
241
|
-
updateContext({ hasActiveSession: true });
|
|
242
|
-
// Then transition to success
|
|
243
|
-
transition(FlowState.FINAL_SUCCESS, { hasActiveSession: true });
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
// Handle auth failure
|
|
247
|
-
handleFlowError(new Error('Authentication failed'));
|
|
248
|
-
}
|
|
249
|
-
} }));
|
|
46
|
+
return _jsx(EnhancedAuthLoadingScreen, {});
|
|
250
47
|
case FlowState.FINAL_SUCCESS:
|
|
251
|
-
return _jsx(EnhancedFinalSuccessScreen, { onDone:
|
|
48
|
+
return _jsx(EnhancedFinalSuccessScreen, { onDone: onClose || (function () { }) });
|
|
252
49
|
case FlowState.ERROR:
|
|
253
|
-
return
|
|
254
|
-
// Logic to go back to appropriate state based on error
|
|
255
|
-
transition(FlowState.CONNECTING_WALLET);
|
|
256
|
-
}, onCancel: handleFinish }));
|
|
50
|
+
return _jsx(EnhancedErrorScreen, {});
|
|
257
51
|
default:
|
|
258
|
-
return
|
|
52
|
+
return _jsx(EnhancedIdleScreen, {});
|
|
259
53
|
}
|
|
260
54
|
};
|
|
261
|
-
return (_jsx("div", { className:
|
|
55
|
+
return (_jsx("div", { className: isClosing ? 'n1-animate-fade-out' : 'n1-animate-fade-in', children: renderScreen() }));
|
|
262
56
|
};
|
|
263
57
|
//# sourceMappingURL=NordFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NordFlow.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/NordFlow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAe,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAatE,2DAA2D;AAC3D,IAAM,2BAA2B,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC3E,IAAM,2BAA2B,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC3E,IAAM,4BAA4B,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AAC7E,IAAM,yBAAyB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACvE,IAAM,6BAA6B,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAC/E,IAAM,4BAA4B,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AAC7E,IAAM,yBAAyB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACvE,IAAM,0BAA0B,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACzE,IAAM,mBAAmB,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,IAAM,QAAQ,GAA4B,UAAC,EAAW;QAAT,OAAO,aAAA;IACzD,gCAAgC;IAC1B,IAAA,KAA6B,0BAA0B,EAAE,EAAvD,WAAW,iBAAA,EAAE,SAAS,eAAiC,CAAC;IAC1D,IAAA,KAA+B,kBAAkB,EAAE,EAAjD,QAAQ,cAAA,EAAE,IAAI,UAAA,EAAE,QAAQ,cAAyB,CAAC;IAClD,IAAU,gBAAgB,GAAK,eAAe,EAAE,SAAtB,CAAuB;IAEzD,8EAA8E;IAC9E,IAAM,eAAe,GAAG,QAAQ,IAAI,gBAAgB,CAAC;IAErD,uBAAuB;IACvB,IAAM,iBAAiB,GAAG,WAAW,CACnC,UAAC,QAAmB,EAAE,SAA2B;QAC/C,MAAM,CAAC,KAAK,CAAC,6BAAsB,SAAS,iBAAO,QAAQ,CAAE,CAAC,CAAC;IACjE,CAAC,EACD,EAAE,CACH,CAAC;IAEF,gBAAgB;IAChB,IAAM,WAAW,GAAG,WAAW,CAAC,UAAC,KAAY;QAC3C,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,wBAAwB;IAClB,IAAA,KASF,YAAY,CAAC;QACf,WAAW,EAAE,KAAK,EAAE,sCAAsC;QAC1D,aAAa,EAAE,iBAAiB;QAChC,OAAO,EAAE,WAAW;KACrB,CAAC,EAZA,KAAK,WAAA,EACL,OAAO,aAAA,EACP,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,OAAO,aAAA,EACP,kBAAkB,wBAAA,EACL,eAAe,iBAAA,EAC5B,mBAAmB,yBAKnB,CAAC;IAEH,8DAA8D;IAC9D,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,QAAmB,EAAE,cAAqC;QACzD,MAAM,CAAC,KAAK,CAAC,mCAA4B,QAAQ,CAAE,EAAE,cAAc,CAAC,CAAC;QACrE,IAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,wBAAiB,QAAQ,aAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,+BAA+B;IACzB,IAAA,KAAkC,oBAAoB,CAC1D,KAAK,EACL,kBAAkB,EAAE,wDAAwD;IAC5E,OAAO,EACP,aAAa,EACb,WAAW,IAAI,CAAC,CACjB,EANO,aAAa,mBAAA,EAAE,YAAY,kBAMlC,CAAC;IAEF,0BAA0B;IACpB,IAAA,KAMF,cAAc,CAAC;QACjB,KAAK,OAAA;QACL,OAAO,SAAA;QACP,UAAU,YAAA;QACV,WAAW,EAAE,eAAe;QAC5B,aAAa,eAAA;KACd,CAAC,EAXA,MAAM,YAAA,EACN,YAAY,kBAAA,EACZ,YAAY,kBAAA,EACZ,eAAe,qBAAA,EACf,qBAAqB,2BAOrB,CAAC;IAEH,+BAA+B;IACzB,IAAA,KAAoC,mBAAmB,CAAC;QAC5D,KAAK,OAAA;QACL,kBAAkB,oBAAA;QAClB,OAAO,SAAA;KACR,CAAC,EAJM,SAAS,eAAA,EAAE,kBAAkB,wBAInC,CAAC;IAEH,8BAA8B;IACxB,IAAA,KAAkD,QAAQ,CAAC,KAAK,CAAC,EAAhE,oBAAoB,QAAA,EAAE,uBAAuB,QAAmB,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,IAAI,mBAAmB,EAAE,CAAC;gBACxB,iDAAiD;gBACjD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;gBAChC,oEAAoE;gBACpE,yEAAyE;gBACzE,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC1C,CAAC;YACD,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAErE,+BAA+B;IAC/B,IAAM,cAAc,GAAG;QACrB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,oBAAoB;QAC3B,QAAQ,EAAE,2CAA2C;QACrD,QAAQ,EAAE,KAAK;KAChB,CAAA;IAED,IAAM,YAAY,GAAG;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,yBAAyB;IACzB,IAAM,iBAAiB,GAAG,WAAW,CACnC,UAAC,OAAe;QACd,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;QAErD,6CAA6C;QAC7C,IAAM,aAAa,GAAG,OAAO,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,aAAa,CAAC,CAAC;QAEzE,kBAAkB,CAAC,SAAS,CAAC,YAAY,EAAE;YACzC,aAAa,EAAE,aAAa;SAC7B,CAAC,CAAC;IACL,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,uBAAuB;IACvB,IAAM,cAAc,GAAG,WAAW,CAAC;QACjC,oDAAoD;QACpD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAM,WAAW,GAAG,eAAe,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7E,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEhC,+BAA+B;IAC/B,IAAM,cAAc,GAAG,WAAW,CAAC;;;;;;oBAE/B,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;yBAGlC,CAAA,eAAe,IAAI,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA,EAAjD,wBAAiD;;;;oBAK3C,OAAO,GAAG,eAAsB,CAAC;yBACnC,CAAA,OAAO,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,CAAA,EAAxD,wBAAwD;oBAC1D,qBAAM,OAAO,CAAC,eAAe,EAAE,EAAA;;oBAA/B,SAA+B,CAAC;oBAChC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBACjD,sBAAO;;;;oBAGT,MAAM,CAAC,IAAI,CACT,0EAA0E,EAC1E,OAAK,CACN,CAAC;;;oBAIN,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;;;;oBAEvD,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAK,CAAC,CAAC;;;;;SAEpD,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;IAE5B,6CAA6C;IAC7C,IAAM,kBAAkB,GAAG,WAAW,CAAC;QACrC,IACE,IAAI;YACJ,gBAAgB,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EACvB,CAAC;YACD,oCAAoC;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC;gBACnC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC9B,IAAI,EAAE,MAAM,CAAC,MAAM;gBACnB,iFAAiF;gBACjF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,uCAAuC;aAC3E,CAAC,EALkC,CAKlC,CAAC,CAAC;QACN,CAAC;QAED,gCAAgC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,2DAA2D;IAC3D,IAAM,YAAY,GAAG;QACnB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS,CAAC,iBAAiB;gBAC9B,OAAO,CACL,KAAC,2BAA2B,IAC1B,eAAe,EAAE,aAAa,EAC9B,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC;YACJ,KAAK,SAAS,CAAC,eAAe;gBAC5B,IAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;gBAC7C,OAAO,CACL,KAAC,4BAA4B,IAC3B,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,iBAAiB,GAChC,CACH,CAAC;YACJ,KAAK,SAAS,CAAC,eAAe;gBAC5B,OAAO,CACL,KAAC,2BAA2B,IAC1B,MAAM,EAAE,cAAM,OAAA,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,EAArC,CAAqC,GACnD,CACH,CAAC;YACJ,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,CACL,KAAC,yBAAyB,IACxB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,EAC5B,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,GAClC,CACH,CAAC;YACJ,KAAK,SAAS,CAAC,gBAAgB;gBAC7B,OAAO,KAAC,6BAA6B,IAAC,OAAO,EAAE,cAAc,GAAI,CAAC;YACpE,KAAK,SAAS,CAAC,eAAe;gBAC5B,gDAAgD;gBAChD,IAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;gBAC1C,+CAA+C;gBAC/C,IAAM,kBAAkB,GAAG;oBACzB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;oBAChE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;oBACxD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;oBAC5D,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;oBACxD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;oBAClE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;iBACjE,CAAC;gBAEF,OAAO,CACL,KAAC,4BAA4B,IAC3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,UAAU,EAAE,eAAe,GAC3B,CACH,CAAC;YACJ,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,CACL,KAAC,yBAAyB,IACxB,cAAc,EAAE,UAAC,OAAO;wBACtB,IAAI,OAAO,EAAE,CAAC;4BACZ,2BAA2B;4BAC3B,aAAa,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC1C,6BAA6B;4BAC7B,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;wBAClE,CAAC;6BAAM,CAAC;4BACN,sBAAsB;4BACtB,eAAe,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;wBACtD,CAAC;oBACH,CAAC,GACD,CACH,CAAC;YACJ,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,KAAC,0BAA0B,IAAC,MAAM,EAAE,YAAY,GAAI,CAAC;YAC9D,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,OAAO,EAAE;wBACP,uDAAuD;wBACvD,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;oBAC1C,CAAC,EACD,QAAQ,EAAE,YAAY,GACtB,CACH,CAAC;YACJ;gBACE,OAAO,CACL,eAAK,SAAS,EAAC,yDAAyD,aAEtE,eAAK,SAAS,EAAC,oBAAoB,aAEjC,cAAK,SAAS,EAAC,yHAAyH,GAAO,EAG/I,cAAK,SAAS,EAAC,mDAAmD,YAChE,cAAK,SAAS,EAAC,kDAAkD,GAAO,GACpE,IACF,EAGN,YAAG,SAAS,EAAC,4DAA4D,wBAErE,IACA,CACP,CAAC;QACN,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,uEAAgE,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,CAAE,YAErI,eAAK,SAAS,EAAC,0RAA0R,aAEvS,cAAK,SAAS,EAAC,kFAAkF,YAC/F,eAAK,SAAS,EAAC,mCAAmC,aAChD,cAAK,SAAS,EAAC,yBAAyB,YACtC,cAAK,SAAS,EAAC,yBAAyB,YAEtC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,GACd,GACF,EACN,iBACE,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,6TAKV,YAED,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,YAElC,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAC,GAAG,EACf,CAAC,EAAC,sBAAsB,GACxB,GACE,GACC,IACL,GACF,EAGN,cAAK,SAAS,EAAC,oDAAoD,YAChE,YAAY,EAAE,GACX,IACF,GACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport Logo from '../../components/Logo';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../Provider/hooks';\nimport { logger } from '../../utils/logger';\nimport { CHAINS } from './constants';\nimport { withImageFallback } from './hoc';\nimport {\n useDepositFlow,\n useFlowState,\n useInterruptHandler,\n useNordInstance,\n useNordWalletConnect,\n} from './hooks';\nimport {\n AmountInputScreen,\n AuthLoadingScreen,\n ChainSelectionScreen,\n ConnectWalletScreen,\n DepositProgressScreen,\n DepositSuccessScreen,\n ErrorScreen,\n EvmWalletAuthScreen,\n FinalSuccessScreen,\n} from './screens';\nimport { FlowContext, FlowState } from './types';\nimport { getTokenBalance, isNordConfigured } from './utils/nordUtils';\n\ninterface NordFlowProps {\n onClose?: () => void;\n}\n\n// Define the Chain type to match what's expected by ChainSelectionScreen\ninterface Chain {\n id: string;\n name: string;\n logo: string;\n}\n\n// Apply the withImageFallback HOC to all screen components\nconst EnhancedConnectWalletScreen = withImageFallback(ConnectWalletScreen);\nconst EnhancedEvmWalletAuthScreen = withImageFallback(EvmWalletAuthScreen);\nconst EnhancedChainSelectionScreen = withImageFallback(ChainSelectionScreen);\nconst EnhancedAmountInputScreen = withImageFallback(AmountInputScreen);\nconst EnhancedDepositProgressScreen = withImageFallback(DepositProgressScreen);\nconst EnhancedDepositSuccessScreen = withImageFallback(DepositSuccessScreen);\nconst EnhancedAuthLoadingScreen = withImageFallback(AuthLoadingScreen);\nconst EnhancedFinalSuccessScreen = withImageFallback(FinalSuccessScreen);\nconst EnhancedErrorScreen = withImageFallback(ErrorScreen);\n\n/**\n * Main component for the wallet connection flow\n */\nexport const NordFlow: React.FC<NordFlowProps> = ({ onClose }) => {\n // Get session mode from context\n const { sessionMode, faucetUrl } = useN1WalletInternalContext();\n const { balances, nord, nordUser } = useN1WalletContext();\n const { nordUser: instanceNordUser } = useNordInstance();\n\n // Use the nordUser from context, falling back to the one from useNordInstance\n const currentNordUser = nordUser || instanceNordUser;\n\n // Handle state changes\n const handleStateChange = useCallback(\n (newState: FlowState, prevState: FlowState | null) => {\n logger.debug(`State changed from ${prevState} to ${newState}`);\n },\n []\n );\n\n // Handle errors\n const handleError = useCallback((error: Error) => {\n logger.error('Flow error:', error);\n }, []);\n\n // Initialize flow state\n const {\n state,\n context,\n transition,\n updateContext,\n recover,\n recordInterruption,\n handleError: handleFlowError,\n isRecoveryAvailable,\n } = useFlowState({\n autoRecover: false, // We'll handle recovery with a prompt\n onStateChange: handleStateChange,\n onError: handleError,\n });\n\n // Create a wrapped transition function that logs more details\n const enhancedTransition = useCallback(\n (newState: FlowState, contextUpdates?: Partial<FlowContext>) => {\n logger.debug(`Attempting transition to ${newState}`, contextUpdates);\n const result = transition(newState, contextUpdates);\n logger.debug(`Transition to ${newState} result:`, result);\n return result;\n },\n [transition]\n );\n\n // Initialize wallet connection\n const { connectWallet, isConnecting } = useNordWalletConnect(\n state,\n enhancedTransition, // Use enhanced transition instead of regular transition\n context,\n updateContext,\n sessionMode || 0\n );\n\n // Initialize deposit flow\n const {\n amount,\n updateAmount,\n startDeposit,\n completeDeposit,\n getTransactionDetails,\n } = useDepositFlow({\n state,\n context,\n transition,\n handleError: handleFlowError,\n updateContext,\n });\n\n // Initialize interrupt handler\n const { isClosing, handleCloseRequest } = useInterruptHandler({\n state,\n recordInterruption,\n onClose,\n });\n\n // Check for recovery on mount\n const [hasAttemptedRecovery, setHasAttemptedRecovery] = useState(false);\n\n React.useEffect(() => {\n if (!hasAttemptedRecovery) {\n if (isRecoveryAvailable) {\n // Automatically recover without showing a prompt\n recover();\n } else {\n console.log('baababbababababab')\n // Start at CONNECTING_WALLET so we show the wallet selection screen\n // The actual connection will only happen when the user clicks the button\n transition(FlowState.CONNECTING_WALLET);\n }\n setHasAttemptedRecovery(true);\n }\n }, [hasAttemptedRecovery, isRecoveryAvailable, transition, recover]);\n\n // For deposit progress message\n const depositMessage = {\n visible: true,\n title: 'Processing Deposit',\n subtitle: 'Please wait while we process your deposit',\n isTyping: false,\n }\n\n const handleFinish = () => {\n if (onClose) {\n onClose();\n }\n };\n\n // Handle chain selection\n const handleChainSelect = useCallback(\n (chainId: string) => {\n logger.debug('Chain selected in NordFlow:', chainId);\n\n // For testnet, we need to use the network ID\n const selectedChain = chainId;\n logger.debug('Transitioning to AMOUNT_INPUT with chain:', selectedChain);\n\n enhancedTransition(FlowState.AMOUNT_INPUT, {\n selectedChain: selectedChain,\n });\n },\n [enhancedTransition]\n );\n\n // Get the USDC balance\n const getUsdcBalance = useCallback(() => {\n // Try to get the balance from nordUser if available\n if (currentNordUser) {\n const usdcBalance = getTokenBalance(currentNordUser, 'USDC');\n if (usdcBalance > 0) {\n return usdcBalance;\n }\n }\n\n // Fallback to the first balance from the context or a default value\n return balances && balances.length > 0 ? Number(balances[0].balance) : 100;\n }, [currentNordUser, balances]);\n\n // Function to refresh balances\n const refreshBalance = useCallback(async () => {\n try {\n logger.debug('Refreshing balance...');\n\n // If we have a nordUser, try to refresh balances using Nord-TS\n if (currentNordUser && nord && isNordConfigured(nord)) {\n try {\n // This is a placeholder - in a real implementation, you would use the correct method\n // to refresh balances from the Nord-TS API\n // Check if the nordUser has a refreshBalances method using type safety\n const userAny = currentNordUser as any;\n if (userAny && typeof userAny.refreshBalances === 'function') {\n await userAny.refreshBalances();\n logger.debug('Balances refreshed using Nord-TS');\n return;\n }\n } catch (error) {\n logger.warn(\n 'Error refreshing balances using Nord-TS, falling back to default method:',\n error\n );\n }\n }\n\n logger.debug('Balance refreshed using default method');\n } catch (error) {\n logger.error('Error refreshing balance:', error);\n }\n }, [currentNordUser, nord]);\n\n // Get available chains from Nord if possible\n const getAvailableChains = useCallback((): Chain[] => {\n if (\n nord &&\n isNordConfigured(nord) &&\n nord.markets &&\n nord.markets.length > 0\n ) {\n // Map Nord markets to chains format\n return nord.markets.map((market) => ({\n id: market.marketId.toString(),\n name: market.symbol,\n // Use a placeholder or dynamically generated logo instead of non-existent assets\n logo: market.symbol.toLowerCase(), // Just use the symbol as an identifier\n }));\n }\n\n // Fallback to predefined chains\n return CHAINS;\n }, [nord]);\n\n // Render the appropriate screen based on the current state\n const renderScreen = () => {\n switch (state) {\n case FlowState.CONNECTING_WALLET:\n return (\n <EnhancedConnectWalletScreen\n onConnectWallet={connectWallet}\n isConnecting={isConnecting}\n />\n );\n case FlowState.CHAIN_SELECTION:\n const availableChains = getAvailableChains();\n return (\n <EnhancedChainSelectionScreen\n chains={availableChains}\n onChainSelect={handleChainSelect}\n />\n );\n case FlowState.ETH_TO_SOL_AUTH:\n return (\n <EnhancedEvmWalletAuthScreen\n onAuth={() => transition(FlowState.CHAIN_SELECTION)}\n />\n );\n case FlowState.AMOUNT_INPUT:\n return (\n <EnhancedAmountInputScreen\n amount={amount}\n onAmountChange={updateAmount}\n onContinue={startDeposit}\n balance={getUsdcBalance()} // Use real balance\n faucetUrl={faucetUrl} // Pass faucetUrl directly\n refreshBalance={refreshBalance} // Pass refresh function\n depositError={context.depositError} // Pass deposit error from context\n />\n );\n case FlowState.DEPOSIT_PROGRESS:\n return <EnhancedDepositProgressScreen message={depositMessage} />;\n case FlowState.DEPOSIT_SUCCESS:\n // Get transaction details from the deposit flow\n const txDetails = getTransactionDetails();\n // Create table values from transaction details\n const updatedTableValues = {\n amount: { text: txDetails.amount, visible: true, typing: false },\n tx: { text: txDetails.tx, visible: true, typing: false },\n from: { text: txDetails.from, visible: true, typing: false },\n to: { text: txDetails.to, visible: true, typing: false },\n network: { text: txDetails.network, visible: true, typing: false },\n status: { text: txDetails.status, visible: true, typing: false },\n };\n\n return (\n <EnhancedDepositSuccessScreen\n amount={amount}\n tableValues={updatedTableValues}\n onContinue={completeDeposit}\n />\n );\n case FlowState.AUTH_LOADING:\n return (\n <EnhancedAuthLoadingScreen\n onAuthComplete={(success) => {\n if (success) {\n // Update the context first\n updateContext({ hasActiveSession: true });\n // Then transition to success\n transition(FlowState.FINAL_SUCCESS, { hasActiveSession: true });\n } else {\n // Handle auth failure\n handleFlowError(new Error('Authentication failed'));\n }\n }}\n />\n );\n case FlowState.FINAL_SUCCESS:\n return <EnhancedFinalSuccessScreen onDone={handleFinish} />;\n case FlowState.ERROR:\n return (\n <EnhancedErrorScreen\n error={context.error}\n onRetry={() => {\n // Logic to go back to appropriate state based on error\n transition(FlowState.CONNECTING_WALLET);\n }}\n onCancel={handleFinish}\n />\n );\n default:\n return (\n <div className=\"flex flex-col items-center justify-center p-8 space-y-4\">\n {/* Minimalistic but creative loading animation */}\n <div className=\"relative w-12 h-12\">\n {/* Simple spinning ring with primary color accent */}\n <div className=\"absolute inset-0 border-2 border-n1-gray-200 dark:border-n1-gray-800 border-b-n1-main rounded-full n1-animate-spin-slow\"></div>\n\n {/* Subtle pulsing dot in the center */}\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"w-2 h-2 bg-n1-main rounded-full n1-animate-pulse\"></div>\n </div>\n </div>\n\n {/* Simple loading text */}\n <p className=\"text-n1-gray-700 dark:text-n1-gray-300 text-sm font-medium\">\n Loading\n </p>\n </div>\n );\n }\n };\n\n return (\n <div\n className={`z-50 flex items-center justify-center overflow-auto font-era ${isClosing ? 'n1-animate-fade-out' : 'n1-animate-fade-in'}`}\n >\n <div className=\"bg-n1-gray-50 dark:bg-n1-gray-950 relative border border-n1-gray-200 dark:border-n1-gray-800 rounded-md transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] w-full max-w-sm m-4 origin-center will-change-[max-width,transform,opacity min-w-96\">\n {/* Header */}\n <div className=\"p-6 border-b border-n1-gray-200 dark:border-n1-gray-800 w-full max-w-2xl mx-auto\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-6 h-6 text-n1-gray-50\">\n {/* Use Logo component with fallback */}\n <Logo size={24} />\n </div>\n </div>\n <button\n onClick={handleCloseRequest}\n className={`\n text-neutral-400 hover:text-n1-gray-900 dark:hover:text-white \n transition-colors duration-300 ease-[cubic-bezier(0.16,1,0.3,1)]\n h-10 w-10 rounded-full hover:bg-n1-gray-100 dark:hover:bg-n1-gray-800\n flex items-center justify-center\n `}\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"wallet-connection-flow-content p-6 overflow-hidden\">\n {renderScreen()}\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"NordFlow.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/NordFlow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Header } from './components';\nimport { useFlowStateContext } from './context';\nimport { withImageFallback } from './hoc';\nimport {\n AmountInputScreen,\n AuthLoadingScreen,\n ChainSelectionScreen,\n ConnectWalletScreen,\n DepositProgressScreen,\n DepositSuccessScreen,\n ErrorScreen,\n EvmWalletAuthScreen,\n FinalSuccessScreen,\n IdleScreen,\n} from './screens';\nimport { FlowState } from './types';\n\ninterface NordFlowProps {\n onClose?: () => void;\n}\n\n// Apply the withImageFallback HOC to all screen components\nconst EnhancedConnectWalletScreen = withImageFallback(ConnectWalletScreen);\nconst EnhancedEvmWalletAuthScreen = withImageFallback(EvmWalletAuthScreen);\nconst EnhancedChainSelectionScreen = withImageFallback(ChainSelectionScreen);\nconst EnhancedAmountInputScreen = withImageFallback(AmountInputScreen);\nconst EnhancedDepositProgressScreen = withImageFallback(DepositProgressScreen);\nconst EnhancedDepositSuccessScreen = withImageFallback(DepositSuccessScreen);\nconst EnhancedAuthLoadingScreen = withImageFallback(AuthLoadingScreen);\nconst EnhancedFinalSuccessScreen = withImageFallback(FinalSuccessScreen);\nconst EnhancedErrorScreen = withImageFallback(ErrorScreen);\nconst EnhancedIdleScreen = withImageFallback(IdleScreen);\n\n/**\n * Main component for the wallet connection flow\n */\nexport const NordFlow: React.FC<NordFlowProps> = ({ onClose }) => {\n return (\n <div\n className={`z-50 flex items-center justify-center overflow-auto font-era`}\n >\n <div className=\"bg-n1-gray-50 dark:bg-n1-gray-950 relative border border-n1-gray-200 dark:border-n1-gray-800 rounded-md transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] w-full max-w-sm m-4 origin-center will-change-[max-width,transform,opacity min-w-96\">\n {/* Header */}\n <Header onClose={onClose} />\n\n {/* Content */}\n <div className=\"wallet-connection-flow-content p-6 overflow-hidden\">\n <NordFlowScreenRenderer onClose={onClose} />\n </div>\n </div>\n </div>\n );\n};\n\n// Screen renderer component that uses the flow state context\nconst NordFlowScreenRenderer: React.FC<{ onClose?: () => void }> = ({ onClose }) => {\n // Use the flow state context\n const {\n state,\n isClosing,\n } = useFlowStateContext();\n\n // Render the appropriate screen based on the current state\n const renderScreen = () => {\n switch (state) {\n case FlowState.CONNECTING_WALLET:\n return <EnhancedConnectWalletScreen />;\n case FlowState.CHAIN_SELECTION:\n return <EnhancedChainSelectionScreen />;\n case FlowState.ETH_TO_SOL_AUTH:\n return <EnhancedEvmWalletAuthScreen />;\n case FlowState.AMOUNT_INPUT:\n return <EnhancedAmountInputScreen />;\n case FlowState.DEPOSIT_PROGRESS:\n return <EnhancedDepositProgressScreen />;\n case FlowState.DEPOSIT_SUCCESS:\n return <EnhancedDepositSuccessScreen />;\n case FlowState.AUTH_LOADING:\n return <EnhancedAuthLoadingScreen />;\n case FlowState.FINAL_SUCCESS:\n return <EnhancedFinalSuccessScreen onDone={onClose || (() => { })} />;\n case FlowState.ERROR:\n return <EnhancedErrorScreen />;\n default:\n return <EnhancedIdleScreen />;\n }\n };\n\n return (\n <div className={isClosing ? 'n1-animate-fade-out' : 'n1-animate-fade-in'}>\n {renderScreen()}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Logo from '../../../components/Logo';
|
|
3
|
+
/**
|
|
4
|
+
* Header component for the Nord Flow modal
|
|
5
|
+
* Contains the logo and close button
|
|
6
|
+
*/
|
|
7
|
+
export var Header = function (_a) {
|
|
8
|
+
var onClose = _a.onClose;
|
|
9
|
+
return (_jsx("div", { className: "p-6 border-b border-n1-gray-200 dark:border-n1-gray-800 w-full max-w-2xl mx-auto", children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "flex items-center gap-3", children: _jsx("div", { className: "w-6 h-6 text-n1-gray-50", children: _jsx(Logo, { size: 24 }) }) }), _jsx("button", { onClick: function () { return onClose && onClose(); }, className: "\n text-neutral-400 hover:text-n1-gray-900 dark:hover:text-white \n transition-colors duration-300 ease-[cubic-bezier(0.16,1,0.3,1)]\n h-10 w-10 rounded-full hover:bg-n1-gray-100 dark:hover:bg-n1-gray-800\n flex items-center justify-center\n ", children: _jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M6 18L18 6M6 6l12 12" }) }) })] }) }));
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/Header.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAM5C;;;GAGG;AACH,MAAM,CAAC,IAAM,MAAM,GAA0B,UAAC,EAAW;QAAT,OAAO,aAAA;IACrD,OAAO,CACL,cAAK,SAAS,EAAC,kFAAkF,YAC/F,eAAK,SAAS,EAAC,mCAAmC,aAChD,cAAK,SAAS,EAAC,yBAAyB,YACtC,cAAK,SAAS,EAAC,yBAAyB,YAEtC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,GACd,GACF,EACN,iBACE,OAAO,EAAE,cAAM,OAAA,OAAO,IAAI,OAAO,EAAE,EAApB,CAAoB,EACnC,SAAS,EAAE,ySAKV,YAED,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,YAElC,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAC,GAAG,EACf,CAAC,EAAC,sBAAsB,GACxB,GACE,GACC,IACL,GACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport Logo from '../../../components/Logo';\n\ninterface HeaderProps {\n onClose?: () => void;\n}\n\n/**\n * Header component for the Nord Flow modal\n * Contains the logo and close button\n */\nexport const Header: React.FC<HeaderProps> = ({ onClose }) => {\n return (\n <div className=\"p-6 border-b border-n1-gray-200 dark:border-n1-gray-800 w-full max-w-2xl mx-auto\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-6 h-6 text-n1-gray-50\">\n {/* Use Logo component with fallback */}\n <Logo size={24} />\n </div>\n </div>\n <button\n onClick={() => onClose && onClose()}\n className={`\n text-neutral-400 hover:text-n1-gray-900 dark:hover:text-white \n transition-colors duration-300 ease-[cubic-bezier(0.16,1,0.3,1)]\n h-10 w-10 rounded-full hover:bg-n1-gray-100 dark:hover:bg-n1-gray-800\n flex items-center justify-center\n `}\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n}; "]}
|
|
@@ -31,13 +31,13 @@ export function TransactionTable(_a) {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
if (key === 'tx') {
|
|
34
|
-
return 'text-n1-
|
|
34
|
+
return 'text-n1-main-600 dark:text-n1-main-400 text-xs font-medium hover:text-n1-main-700 dark:hover:text-n1-main-300 transition-colors duration-200';
|
|
35
35
|
}
|
|
36
36
|
if (key === 'network') {
|
|
37
37
|
return 'text-purple-600 dark:text-purple-400 font-medium';
|
|
38
38
|
}
|
|
39
39
|
if (key === 'from' || key === 'to') {
|
|
40
|
-
return 'text-n1-gray-800 dark:text-n1-gray-200 text-xs font-medium hover:text-n1-
|
|
40
|
+
return 'text-n1-gray-800 dark:text-n1-gray-200 text-xs font-medium hover:text-n1-main-600 dark:hover:text-n1-main-400 transition-colors duration-200';
|
|
41
41
|
}
|
|
42
42
|
if (key === 'amount') {
|
|
43
43
|
return 'text-green-600 dark:text-emerald-500 font-semibold';
|
|
@@ -56,11 +56,8 @@ export function TransactionTable(_a) {
|
|
|
56
56
|
};
|
|
57
57
|
// Get explorer URL for transaction ID or address
|
|
58
58
|
var getExplorerLink = function (key, value) {
|
|
59
|
-
var _a;
|
|
60
|
-
// Extract network from tableValues to determine which explorer to use
|
|
61
|
-
var network = ((_a = tableValues.network) === null || _a === void 0 ? void 0 : _a.text) || 'solana-mainnet';
|
|
62
59
|
if (key === 'tx') {
|
|
63
|
-
return getExplorerUrl(value
|
|
60
|
+
return getExplorerUrl(value);
|
|
64
61
|
}
|
|
65
62
|
if (key === 'from') {
|
|
66
63
|
return "https://explorer.solana.com/address/".concat(value, "?cluster=devnet");
|
|
@@ -80,7 +77,7 @@ export function TransactionTable(_a) {
|
|
|
80
77
|
return (_jsxs("div", { className: "relative w-full h-full bg-n1-gray-100 dark:bg-n1-gray-950 border border-n1-gray-200 dark:border-n1-gray-800 p-5 rounded-sm flex flex-col justify-center", children: [onClose && (_jsx("button", { onClick: onClose, className: "absolute top-3 right-2 text-n1-gray-500 dark:text-n1-gray-600 hover:text-n1-gray-500 dark:hover:text-n1-gray-300 transition-colors duration-200 focus:outline-none", "aria-label": "Close details", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })), _jsx("div", { className: "space-y-3 text-sm pt-5", children: sortedEntries.map(function (_a) {
|
|
81
78
|
var key = _a[0], value = _a[1];
|
|
82
79
|
return (_jsxs("div", { className: "flex items-center justify-between py-2 ", children: [_jsx("span", { className: "text-n1-gray-500 dark:text-n1-gray-400 font-medium min-w-[120px]", children: getLabel(key) }), _jsxs("div", { className: "relative transition-all duration-300 ".concat(value.visible ? 'opacity-100' : 'opacity-0', " max-w-[65%] text-right flex-1"), children: [(key === 'tx' || key === 'from') &&
|
|
83
|
-
getExplorerLink(key, value.text) ? (_jsxs("a", { href: getExplorerLink(key, value.text), target: "_blank", rel: "noopener noreferrer", className: "".concat(getValueStyles(key, value.text), " break-all inline-block group"), title: value.text, children: [_jsx("span", { className: "underline hover:font-bold", children: getDisplayValue(key, value.text) }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity duration-200", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) })] })) : (_jsx("span", { className: "".concat(getValueStyles(key, value.text), " break-all inline-block"), title: value.text, children: value.text })), value.typing && (_jsx("span", { className: "inline-block ml-1 w-[2px] h-[14px] bg-n1-
|
|
80
|
+
getExplorerLink(key, value.text) ? (_jsxs("a", { href: getExplorerLink(key, value.text), target: "_blank", rel: "noopener noreferrer", className: "".concat(getValueStyles(key, value.text), " break-all inline-block group"), title: value.text, children: [_jsx("span", { className: "underline hover:font-bold", children: getDisplayValue(key, value.text) }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity duration-200", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) })] })) : (_jsx("span", { className: "".concat(getValueStyles(key, value.text), " break-all inline-block"), title: value.text, children: value.text })), value.typing && (_jsx("span", { className: "inline-block ml-1 w-[2px] h-[14px] bg-n1-main-500 dark:bg-n1-main-400 n1-animate-pulse" }))] })] }, key));
|
|
84
81
|
}) })] }));
|
|
85
82
|
}
|
|
86
83
|
//# sourceMappingURL=TransactionTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionTable.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/TransactionTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { TableValues } from '../types';\nimport { shortenAddress } from '../utils/nordUtils';\nimport { getExplorerUrl } from '../../../Logic/transactionManager';\n\ninterface TransactionTableProps {\n tableValues: TableValues & {\n amount?: { text: string; visible: boolean; typing: boolean };\n };\n onClose?: () => void;\n}\n\nexport function TransactionTable({\n tableValues,\n onClose,\n}: TransactionTableProps) {\n // Friendly labels for the keys\n const getLabel = (key: string) => {\n const labels: Record<string, string> = {\n amount: 'Amount',\n tx: 'Transaction ID',\n from: 'From',\n to: 'To',\n network: 'Network',\n status: 'Status',\n };\n\n return labels[key] || key;\n };\n\n // Get appropriate color for values based on key\n const getValueStyles = (key: string, value: string) => {\n if (key === 'status') {\n if (\n value.toLowerCase().includes('success') ||\n value.toLowerCase().includes('confirmed')\n ) {\n return 'text-green-500 dark:text-emerald-500 font-medium';\n }\n if (value.toLowerCase().includes('pending')) {\n return 'text-amber-500 dark:text-amber-400 font-medium';\n }\n if (\n value.toLowerCase().includes('fail') ||\n value.toLowerCase().includes('error')\n ) {\n return 'text-red-500 dark:text-red-400 font-medium';\n }\n }\n\n if (key === 'tx') {\n return 'text-n1-primary-600 dark:text-n1-primary-400 text-xs font-medium hover:text-n1-primary-700 dark:hover:text-n1-primary-300 transition-colors duration-200';\n }\n\n if (key === 'network') {\n return 'text-purple-600 dark:text-purple-400 font-medium';\n }\n\n if (key === 'from' || key === 'to') {\n return 'text-n1-gray-800 dark:text-n1-gray-200 text-xs font-medium hover:text-n1-primary-600 dark:hover:text-n1-primary-400 transition-colors duration-200';\n }\n\n if (key === 'amount') {\n return 'text-green-600 dark:text-emerald-500 font-semibold';\n }\n\n return 'text-n1-gray-900 dark:text-n1-gray-50 font-medium';\n };\n\n // Format display value with ellipsis for long text\n const getDisplayValue = (key: string, value: string) => {\n if (key === 'tx') {\n return shortenAddress(value, 5, 4);\n }\n\n if (key === 'from' || key === 'to') {\n return shortenAddress(value, 5, 4);\n }\n\n return value;\n };\n\n // Get explorer URL for transaction ID or address\n const getExplorerLink = (key: string, value: string) => {\n // Extract network from tableValues to determine which explorer to use\n const network = tableValues.network?.text || 'solana-mainnet';\n\n if (key === 'tx') {\n return getExplorerUrl(value, network);\n }\n\n if (key === 'from') {\n return `https://explorer.solana.com/address/${value}?cluster=devnet`;\n }\n\n return '';\n };\n\n // Order of fields to display\n const fieldOrder = ['amount', 'status', 'network', 'from', 'to', 'tx'];\n\n // Sort entries based on fieldOrder\n const sortedEntries = Object.entries(tableValues).sort(([keyA], [keyB]) => {\n const indexA = fieldOrder.indexOf(keyA);\n const indexB = fieldOrder.indexOf(keyB);\n return (indexA === -1 ? 999 : indexA) - (indexB === -1 ? 999 : indexB);\n });\n\n return (\n <div className=\"relative w-full h-full bg-n1-gray-100 dark:bg-n1-gray-950 border border-n1-gray-200 dark:border-n1-gray-800 p-5 rounded-sm flex flex-col justify-center\">\n {onClose && (\n <button\n onClick={onClose}\n className=\"absolute top-3 right-2 text-n1-gray-500 dark:text-n1-gray-600 hover:text-n1-gray-500 dark:hover:text-n1-gray-300 transition-colors duration-200 focus:outline-none\"\n aria-label=\"Close details\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n <div className=\"space-y-3 text-sm pt-5\">\n {sortedEntries.map(([key, value]) => (\n <div key={key} className=\"flex items-center justify-between py-2 \">\n <span className=\"text-n1-gray-500 dark:text-n1-gray-400 font-medium min-w-[120px]\">\n {getLabel(key)}\n </span>\n <div\n className={`relative transition-all duration-300 ${value.visible ? 'opacity-100' : 'opacity-0'} max-w-[65%] text-right flex-1`}\n >\n {(key === 'tx' || key === 'from') &&\n getExplorerLink(key, value.text) ? (\n <a\n href={getExplorerLink(key, value.text)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${getValueStyles(key, value.text)} break-all inline-block group`}\n title={value.text}\n >\n <span className=\"underline hover:font-bold\">\n {getDisplayValue(key, value.text)}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity duration-200\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n ) : (\n <span\n className={`${getValueStyles(key, value.text)} break-all inline-block`}\n title={value.text}\n >\n {value.text}\n </span>\n )}\n {value.typing && (\n <span className=\"inline-block ml-1 w-[2px] h-[14px] bg-n1-primary-500 dark:bg-n1-primary-400 n1-animate-pulse\"></span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TransactionTable.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/TransactionTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { TableValues } from '../types';\nimport { shortenAddress } from '../utils/nordUtils';\nimport { getExplorerUrl } from '../../../Logic/transactionManager';\n\ninterface TransactionTableProps {\n tableValues: TableValues & {\n amount?: { text: string; visible: boolean; typing: boolean };\n };\n onClose?: () => void;\n}\n\nexport function TransactionTable({\n tableValues,\n onClose,\n}: TransactionTableProps) {\n // Friendly labels for the keys\n const getLabel = (key: string) => {\n const labels: Record<string, string> = {\n amount: 'Amount',\n tx: 'Transaction ID',\n from: 'From',\n to: 'To',\n network: 'Network',\n status: 'Status',\n };\n\n return labels[key] || key;\n };\n\n // Get appropriate color for values based on key\n const getValueStyles = (key: string, value: string) => {\n if (key === 'status') {\n if (\n value.toLowerCase().includes('success') ||\n value.toLowerCase().includes('confirmed')\n ) {\n return 'text-green-500 dark:text-emerald-500 font-medium';\n }\n if (value.toLowerCase().includes('pending')) {\n return 'text-amber-500 dark:text-amber-400 font-medium';\n }\n if (\n value.toLowerCase().includes('fail') ||\n value.toLowerCase().includes('error')\n ) {\n return 'text-red-500 dark:text-red-400 font-medium';\n }\n }\n\n if (key === 'tx') {\n return 'text-n1-main-600 dark:text-n1-main-400 text-xs font-medium hover:text-n1-main-700 dark:hover:text-n1-main-300 transition-colors duration-200';\n }\n\n if (key === 'network') {\n return 'text-purple-600 dark:text-purple-400 font-medium';\n }\n\n if (key === 'from' || key === 'to') {\n return 'text-n1-gray-800 dark:text-n1-gray-200 text-xs font-medium hover:text-n1-main-600 dark:hover:text-n1-main-400 transition-colors duration-200';\n }\n\n if (key === 'amount') {\n return 'text-green-600 dark:text-emerald-500 font-semibold';\n }\n\n return 'text-n1-gray-900 dark:text-n1-gray-50 font-medium';\n };\n\n // Format display value with ellipsis for long text\n const getDisplayValue = (key: string, value: string) => {\n if (key === 'tx') {\n return shortenAddress(value, 5, 4);\n }\n\n if (key === 'from' || key === 'to') {\n return shortenAddress(value, 5, 4);\n }\n\n return value;\n };\n\n // Get explorer URL for transaction ID or address\n const getExplorerLink = (key: string, value: string) => {\n\n if (key === 'tx') {\n return getExplorerUrl(value);\n }\n\n if (key === 'from') {\n return `https://explorer.solana.com/address/${value}?cluster=devnet`;\n }\n\n return '';\n };\n\n // Order of fields to display\n const fieldOrder = ['amount', 'status', 'network', 'from', 'to', 'tx'];\n\n // Sort entries based on fieldOrder\n const sortedEntries = Object.entries(tableValues).sort(([keyA], [keyB]) => {\n const indexA = fieldOrder.indexOf(keyA);\n const indexB = fieldOrder.indexOf(keyB);\n return (indexA === -1 ? 999 : indexA) - (indexB === -1 ? 999 : indexB);\n });\n\n return (\n <div className=\"relative w-full h-full bg-n1-gray-100 dark:bg-n1-gray-950 border border-n1-gray-200 dark:border-n1-gray-800 p-5 rounded-sm flex flex-col justify-center\">\n {onClose && (\n <button\n onClick={onClose}\n className=\"absolute top-3 right-2 text-n1-gray-500 dark:text-n1-gray-600 hover:text-n1-gray-500 dark:hover:text-n1-gray-300 transition-colors duration-200 focus:outline-none\"\n aria-label=\"Close details\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n <div className=\"space-y-3 text-sm pt-5\">\n {sortedEntries.map(([key, value]) => (\n <div key={key} className=\"flex items-center justify-between py-2 \">\n <span className=\"text-n1-gray-500 dark:text-n1-gray-400 font-medium min-w-[120px]\">\n {getLabel(key)}\n </span>\n <div\n className={`relative transition-all duration-300 ${value.visible ? 'opacity-100' : 'opacity-0'} max-w-[65%] text-right flex-1`}\n >\n {(key === 'tx' || key === 'from') &&\n getExplorerLink(key, value.text) ? (\n <a\n href={getExplorerLink(key, value.text)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${getValueStyles(key, value.text)} break-all inline-block group`}\n title={value.text}\n >\n <span className=\"underline hover:font-bold\">\n {getDisplayValue(key, value.text)}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity duration-200\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n ) : (\n <span\n className={`${getValueStyles(key, value.text)} break-all inline-block`}\n title={value.text}\n >\n {value.text}\n </span>\n )}\n {value.typing && (\n <span className=\"inline-block ml-1 w-[2px] h-[14px] bg-n1-main-500 dark:bg-n1-main-400 n1-animate-pulse\"></span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './ImageWithFallback';\nexport * from './ChainButton';\nexport * from './LoadingSquares';\nexport * from './TransactionTable';\nexport * from './WaitingMessage';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC","sourcesContent":["export * from './ImageWithFallback';\nexport * from './ChainButton';\nexport * from './LoadingSquares';\nexport * from './TransactionTable';\nexport * from './WaitingMessage';\nexport * from './Header';\n"]}
|