@n1xyz/wallet-widget 0.0.19 → 0.0.20

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 (42) hide show
  1. package/dist/Modal/N1WalletModal.js +63 -18
  2. package/dist/Modal/N1WalletModal.js.map +1 -1
  3. package/dist/Modal/NTSFlow/NTSFlow.d.ts +1 -4
  4. package/dist/Modal/NTSFlow/NTSFlow.js +7 -7
  5. package/dist/Modal/NTSFlow/NTSFlow.js.map +1 -1
  6. package/dist/Modal/NTSFlow/views/01-ConnectView.d.ts +1 -0
  7. package/dist/Modal/NTSFlow/views/01-ConnectView.js +69 -0
  8. package/dist/Modal/NTSFlow/views/01-ConnectView.js.map +1 -0
  9. package/dist/Modal/NTSFlow/views/02-CreateSessionView.d.ts +1 -0
  10. package/dist/Modal/NTSFlow/views/02-CreateSessionView.js +261 -0
  11. package/dist/Modal/NTSFlow/views/02-CreateSessionView.js.map +1 -0
  12. package/dist/Modal/NTSFlow/views/03-SigningView.d.ts +1 -0
  13. package/dist/Modal/NTSFlow/views/03-SigningView.js +6 -0
  14. package/dist/Modal/NTSFlow/views/03-SigningView.js.map +1 -0
  15. package/dist/Modal/NTSFlow/views/04-CreateUserView.d.ts +1 -0
  16. package/dist/Modal/NTSFlow/views/04-CreateUserView.js +106 -0
  17. package/dist/Modal/NTSFlow/views/04-CreateUserView.js.map +1 -0
  18. package/dist/Modal/NTSFlow/views/05-SuccessView.d.ts +1 -0
  19. package/dist/Modal/NTSFlow/views/05-SuccessView.js +12 -0
  20. package/dist/Modal/NTSFlow/views/05-SuccessView.js.map +1 -0
  21. package/dist/Modal/NTSFlow/views/99-NoWhitelistView.d.ts +1 -0
  22. package/dist/Modal/NTSFlow/views/99-NoWhitelistView.js +43 -0
  23. package/dist/Modal/NTSFlow/views/99-NoWhitelistView.js.map +1 -0
  24. package/dist/Modal/NTSFlow/views/ConnectView.js +1 -1
  25. package/dist/Modal/NTSFlow/views/ConnectView.js.map +1 -1
  26. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +2 -1
  27. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
  28. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +3 -2
  29. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -1
  30. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +12 -4
  31. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -1
  32. package/dist/Modal/Sidebar/N1Sidebar.js +1 -1
  33. package/dist/Modal/Sidebar/N1Sidebar.js.map +1 -1
  34. package/dist/Provider/N1WalletProvider.d.ts +2 -2
  35. package/dist/Provider/N1WalletProvider.js +47 -18
  36. package/dist/Provider/N1WalletProvider.js.map +1 -1
  37. package/dist/Provider/context.d.ts +2 -2
  38. package/dist/Provider/hooks.d.ts +2 -2
  39. package/dist/Provider/types.d.ts +16 -3
  40. package/dist/Provider/types.js.map +1 -1
  41. package/dist/utils/dynamicImports.d.ts +2 -1
  42. package/package.json +2 -2
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  };
37
37
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
38
  import '../main.css';
39
- import { bs58Decode, getEd25519PublicKey, signEd25519 } from '@n1xyz/nts-sdk';
39
+ import { bs58Decode, getEd25519PublicKey, signEd25519, NUser } from '@n1xyz/nts-sdk';
40
40
  import { lazy, Suspense, useEffect, useState } from 'react';
41
41
  import { ANIMATION_EASE } from './NordFlow/constants';
42
42
  import { WalletError, WalletErrorCode } from '../errors/types';
@@ -63,8 +63,39 @@ var NordFlow = lazy(function () {
63
63
  });
64
64
  export function N1WalletModal() {
65
65
  var _this = this;
66
- var _a = useN1WalletContext(), showLogin = _a.showLogin, setShowLogin = _a.setShowLogin, viewMode = _a.viewMode;
67
- var _b = useN1WalletInternalContext(), setBalances = _b.setBalances, setViewMode = _b.setViewMode, setUsername = _b.setUsername, setSessionPubKey = _b.setSessionPubKey, setSignMessageWithSessionKey = _b.setSignMessageWithSessionKey, setIsConnected = _b.setIsConnected, setWalletPubKey = _b.setWalletPubKey, setStartClosingLogin = _b.setStartClosingLogin, startClosingLogin = _b.startClosingLogin, setLoading = _b.setLoading, setAddress = _b.setAddress, dynamicWallet = _b.dynamicWallet, dynamicSdkHasLoaded = _b.dynamicSdkHasLoaded, darkMode = _b.darkMode, handleError = _b.handleError, showSidebar = _b.showSidebar, sessionMode = _b.sessionMode;
66
+ var _a = useN1WalletContext(), showLogin = _a.showLogin, setShowLogin = _a.setShowLogin, viewMode = _a.viewMode, ntsInterface = _a.ntsInterface;
67
+ var _b = useN1WalletInternalContext(), setBalances = _b.setBalances, setViewMode = _b.setViewMode, setUsername = _b.setUsername, setSessionPubKey = _b.setSessionPubKey, setSignMessageWithWalletKey = _b.setSignMessageWithWalletKey, setSignMessageWithSessionKey = _b.setSignMessageWithSessionKey, setIsConnected = _b.setIsConnected, setWalletPubKey = _b.setWalletPubKey, setStartClosingLogin = _b.setStartClosingLogin, startClosingLogin = _b.startClosingLogin, setLoading = _b.setLoading, setAddress = _b.setAddress, dynamicWallet = _b.dynamicWallet, dynamicSdkHasLoaded = _b.dynamicSdkHasLoaded, darkMode = _b.darkMode, handleError = _b.handleError, showSidebar = _b.showSidebar, sessionMode = _b.sessionMode, setNUser = _b.setNUser;
68
+ var signWithWallet = function (msg) { return __awaiter(_this, void 0, void 0, function () {
69
+ var signature, binaryString, signatureUint8Array, i, sig, error_1;
70
+ return __generator(this, function (_a) {
71
+ switch (_a.label) {
72
+ case 0:
73
+ _a.trys.push([0, 4, , 5]);
74
+ if (!dynamicWallet) {
75
+ throw new WalletError(WalletErrorCode.WALLET_NOT_FOUND, 'Wallet not found for signing');
76
+ }
77
+ if (!(dynamicWallet.chain === 'SOL')) return [3 /*break*/, 2];
78
+ return [4 /*yield*/, dynamicWallet.signMessage(msg)];
79
+ case 1:
80
+ signature = _a.sent();
81
+ binaryString = atob(signature);
82
+ signatureUint8Array = new Uint8Array(binaryString.length);
83
+ for (i = 0; i < binaryString.length; i++) {
84
+ signatureUint8Array[i] = binaryString.charCodeAt(i);
85
+ }
86
+ return [2 /*return*/, signatureUint8Array];
87
+ case 2: return [4 /*yield*/, dynamicWallet.signMessage(msg)];
88
+ case 3:
89
+ sig = (_a.sent());
90
+ logger.debug('Wallet signature received', { signature: sig });
91
+ return [2 /*return*/, Uint8Array.from(Buffer.from(sig.slice(2), 'hex'))];
92
+ case 4:
93
+ error_1 = _a.sent();
94
+ throw new WalletError(WalletErrorCode.USER_REJECTED, 'Failed to sign message with wallet', { originalError: error_1 });
95
+ case 5: return [2 /*return*/];
96
+ }
97
+ });
98
+ }); };
68
99
  var _c = useState(false), showLoginAnimation = _c[0], setShowLoginAnimation = _c[1];
69
100
  // Handle loading state
70
101
  useEffect(function () {
@@ -79,7 +110,7 @@ export function N1WalletModal() {
79
110
  return;
80
111
  }
81
112
  var initializeSession = function () { return __awaiter(_this, void 0, void 0, function () {
82
- var response, whitelistData, walletPubKey, sessionData_1, sessionPubKey_1, signFn_1, userData, balances, error_1, error_2, error_3;
113
+ var response, whitelistData, walletPubKey, sessionData_1, sessionPubKey, signFn_1, newUserInstance, userData, balances, error_2, error_3, error_4;
83
114
  var _this = this;
84
115
  return __generator(this, function (_a) {
85
116
  switch (_a.label) {
@@ -140,8 +171,8 @@ export function N1WalletModal() {
140
171
  logger.info('Using existing session');
141
172
  return [4 /*yield*/, getEd25519PublicKey(sessionData_1.ed25519PrivateKey)];
142
173
  case 6:
143
- sessionPubKey_1 = _a.sent();
144
- setSessionPubKey(sessionPubKey_1);
174
+ sessionPubKey = _a.sent();
175
+ setSessionPubKey(sessionPubKey);
145
176
  signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
146
177
  var signature;
147
178
  return __generator(this, function (_a) {
@@ -151,15 +182,29 @@ export function N1WalletModal() {
151
182
  return [4 /*yield*/, signEd25519(message, sessionData_1.ed25519PrivateKey)];
152
183
  case 1:
153
184
  signature = _a.sent();
154
- console.log("baby", {
155
- signature: signature,
156
- pubKey: sessionPubKey_1,
157
- });
158
185
  return [2 /*return*/, signature];
159
186
  }
160
187
  });
161
188
  }); };
189
+ setSignMessageWithWalletKey(function () { return signWithWallet; });
162
190
  setSignMessageWithSessionKey(function () { return signFn_1; });
191
+ // Create and set NUser instance
192
+ if (ntsInterface && walletPubKey && signWithWallet) {
193
+ newUserInstance = new NUser(ntsInterface, walletPubKey, // walletPubKey derived in this function
194
+ sessionPubKey, // rehydrated sessionPubKey
195
+ signWithWallet, // signWithWalletKeyFn from context
196
+ signFn_1 // rehydrated session signFn
197
+ );
198
+ newUserInstance.isSessionValid = true; // Mark session as valid
199
+ setNUser(newUserInstance);
200
+ logger.debug('NUser instance created and set from rehydrated session');
201
+ }
202
+ else {
203
+ logger.warn('Could not create NUser from rehydrated session: ntsInterface, walletPubKey, or signMessageWithWalletKey missing');
204
+ // Potentially handle this, e.g., by clearing session and going to CreateSession
205
+ // For now, we'll let the flow continue, but NAppClient might not initialize.
206
+ throw new WalletError(WalletErrorCode.CONNECTION_FAILED, 'Failed to create NUser from rehydrated session');
207
+ }
163
208
  _a.label = 7;
164
209
  case 7:
165
210
  _a.trys.push([7, 13, , 14]);
@@ -188,16 +233,16 @@ export function N1WalletModal() {
188
233
  setBalances(balances);
189
234
  return [3 /*break*/, 12];
190
235
  case 11:
191
- error_1 = _a.sent();
192
- logger.error('Error fetching balances:', error_1);
236
+ error_2 = _a.sent();
237
+ logger.error('Error fetching balances:', error_2);
193
238
  return [3 /*break*/, 12];
194
239
  case 12:
195
240
  // Success!
196
241
  setViewMode(N1ModalViewMode.Success);
197
242
  return [3 /*break*/, 14];
198
243
  case 13:
199
- error_2 = _a.sent();
200
- logger.error('Error fetching user:', error_2);
244
+ error_3 = _a.sent();
245
+ logger.error('Error fetching user:', error_3);
201
246
  throw new WalletError(WalletErrorCode.USER_FETCH_FAILED, 'Failed to fetch user data');
202
247
  case 14: return [3 /*break*/, 16];
203
248
  case 15:
@@ -205,10 +250,10 @@ export function N1WalletModal() {
205
250
  return [7 /*endfinally*/];
206
251
  case 16: return [3 /*break*/, 18];
207
252
  case 17:
208
- error_3 = _a.sent();
209
- logger.error('Error in session initialization:', error_3);
210
- handleError(error_3 instanceof WalletError
211
- ? error_3
253
+ error_4 = _a.sent();
254
+ logger.error('Error in session initialization:', error_4);
255
+ handleError(error_4 instanceof WalletError
256
+ ? error_4
212
257
  : new WalletError(WalletErrorCode.SESSION_INITIALIZATION_FAILED, 'Failed to initialize session'));
213
258
  return [3 /*break*/, 18];
214
259
  case 18: return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"N1WalletModal.js","sourceRoot":"","sources":["../../src/Modal/N1WalletModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import '../main.css';\nimport { bs58Decode, getEd25519PublicKey, signEd25519 } from '@n1xyz/nts-sdk';\nimport { lazy, Suspense, useEffect, useState } from 'react';\nimport { ANIMATION_EASE } from './NordFlow/constants';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport {\n getSessionKeysFromLocalStorage,\n getUser,\n getUserBalances,\n} from '../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../Provider/hooks';\nimport { N1ModalViewMode, N1SessionMode } from '../Provider/types';\nimport { logger } from '../utils/logger';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst N1Sidebar = lazy(() =>\n import('./Sidebar/N1Sidebar').then((mod) => ({ default: mod.N1Sidebar }))\n);\n\n// Lazy load the NTSFlow component\nconst NTSFlow = lazy(() =>\n import('./NTSFlow').then((mod) => ({\n default: mod.NTSFlow,\n }))\n);\n\n// Lazy load the NordFlow component\nconst NordFlow = lazy(() =>\n import('./NordFlow/NordFlow').then((mod) => ({\n default: mod.NordFlow,\n }))\n);\n\nexport function N1WalletModal() {\n const { showLogin, setShowLogin, viewMode } = useN1WalletContext();\n\n const {\n setBalances,\n setViewMode,\n setUsername,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setIsConnected,\n setWalletPubKey,\n setStartClosingLogin,\n startClosingLogin,\n setLoading,\n setAddress,\n dynamicWallet,\n dynamicSdkHasLoaded,\n darkMode,\n handleError,\n showSidebar,\n sessionMode,\n } = useN1WalletInternalContext();\n\n const [showLoginAnimation, setShowLoginAnimation] = useState(false);\n\n // Handle loading state\n useEffect(() => {\n if (dynamicSdkHasLoaded || dynamicWallet) {\n setLoading(false);\n }\n }, [dynamicSdkHasLoaded, dynamicWallet]);\n\n // Initialize session when wallet is connected\n useEffect(() => {\n\n // For Nord mode, we don't need to execute the NTS flow\n if (sessionMode === N1SessionMode.Nord) {\n return;\n }\n\n const initializeSession = async () => {\n // If wallet is not connected, or not in connect mode, skip\n if (!dynamicWallet || viewMode !== N1ModalViewMode.Connect) {\n return;\n }\n\n // NTS Flow below\n // Wallet is connected or we're in connect mode\n // TODO: make this clearer/ more organized\n try {\n logger.debug('Initialize Session...');\n\n if (dynamicWallet) {\n // Check whitelist status first\n const response = await fetch(\n 'https://argus-1g4n.onrender.com/api/db/verifyWhitelist',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ address: dynamicWallet.address }),\n }\n );\n\n const whitelistData = await response.json();\n\n if (!whitelistData.isWhitelisted) {\n logger.info('Wallet not whitelisted');\n setViewMode(N1ModalViewMode.NoWhitelist);\n return;\n }\n }\n\n logger.group('Session Initialization');\n try {\n // Get wallet public key\n const walletPubKey =\n dynamicWallet.chain === 'SOL'\n ? bs58Decode(dynamicWallet.address)\n : Uint8Array.from(\n Buffer.from(dynamicWallet.address.slice(2), 'hex')\n );\n setWalletPubKey(walletPubKey);\n\n // Check for existing session\n const sessionData = getSessionKeysFromLocalStorage(\n dynamicWallet.address\n );\n if (!sessionData) {\n logger.info(\n 'No existing session found, transitioning to CreateSession'\n );\n setViewMode(N1ModalViewMode.CreateSession);\n return;\n }\n logger.debug('Session time', sessionData.createdAt);\n logger.debug(\n 'Session time',\n new Date(sessionData.createdAt).getTime()\n );\n logger.debug('Current time', Date.now());\n if (\n new Date(sessionData.createdAt).getTime() <\n Date.now() - 30 * 24 * 60 * 60 * 1000\n ) {\n // Session expired (older than 30 days)\n logger.info(\n 'Session expired, transitioning to CreateSession',\n new Date(sessionData.createdAt)\n );\n setViewMode(N1ModalViewMode.CreateSession);\n return;\n }\n\n // Use existing session\n logger.info('Using existing session');\n const sessionPubKey = await getEd25519PublicKey(\n sessionData.ed25519PrivateKey\n );\n setSessionPubKey(sessionPubKey);\n\n // Setup signing function\n const signFn = async (message: Uint8Array) => {\n logger.debug('signFn', { message });\n const signature = await signEd25519(\n message,\n sessionData.ed25519PrivateKey\n );\n console.log(\"baby\", {\n signature,\n pubKey: sessionPubKey,\n })\n return signature;\n };\n setSignMessageWithSessionKey(() => signFn);\n\n // Fetch user data\n try {\n logger.debug('Fetching user data');\n const userData = await getUser();\n logger.debug('User data:', userData);\n\n if (!userData) {\n logger.info('No user data found, transitioning to CreatingUser');\n setViewMode(N1ModalViewMode.CreatingUser);\n return;\n }\n\n // User exists, set data and check balances\n setUsername(userData.name || '');\n setAddress(dynamicWallet.address);\n setWalletPubKey(walletPubKey);\n setIsConnected(true);\n\n // Fetch balances\n try {\n const balances = await getUserBalances(dynamicWallet.address);\n logger.debug('User balances:', balances);\n setBalances(balances);\n } catch (error) {\n logger.error('Error fetching balances:', error);\n // Continue anyway, non-critical error\n }\n\n // Success!\n setViewMode(N1ModalViewMode.Success);\n } catch (error) {\n logger.error('Error fetching user:', error);\n throw new WalletError(\n WalletErrorCode.USER_FETCH_FAILED,\n 'Failed to fetch user data'\n );\n }\n } finally {\n logger.groupEnd();\n }\n } catch (error) {\n logger.error('Error in session initialization:', error);\n handleError(\n error instanceof WalletError\n ? error\n : new WalletError(\n WalletErrorCode.SESSION_INITIALIZATION_FAILED,\n 'Failed to initialize session'\n )\n );\n }\n };\n\n initializeSession();\n }, [dynamicWallet, dynamicSdkHasLoaded, viewMode, sessionMode]);\n\n // Handle modal visibility\n useEffect(() => {\n if (showLogin) {\n setStartClosingLogin(false);\n setShowLoginAnimation(true);\n }\n }, [showLogin]);\n\n useEffect(() => {\n if (startClosingLogin) {\n setShowLoginAnimation(false);\n const timeout = setTimeout(() => {\n setShowLogin(false);\n setStartClosingLogin(false);\n }, 700);\n return () => clearTimeout(timeout);\n }\n }, [startClosingLogin, setShowLogin, setStartClosingLogin]);\n\n // Handle modal close for Nord mode\n const handleNordFlowClose = () => {\n setStartClosingLogin(true);\n };\n\n if (!showLogin && !showSidebar) return null;\n\n return (\n <div className={'n1-wallet-widget '+(darkMode ? 'dark' : '')}>\n {showLogin && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center w-full h-full\">\n <div\n className={`\n fixed inset-0 w-full h-full bg-black/20 dark:bg-black/40 backdrop-blur-sm\n transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100' : 'opacity-0'}\n `}\n onClick={() => setStartClosingLogin(true)}\n />\n <div\n className={`\n relative z-50 transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100 scale-100' : 'opacity-0 scale-95'}\n `}\n >\n {sessionMode === N1SessionMode.Nord ? (\n <NordFlow onClose={handleNordFlowClose} />\n ) : (\n <NTSFlow />\n )}\n </div>\n </div>\n )}\n <Suspense fallback={<LoadingFallback />}>\n <N1Sidebar />\n </Suspense>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"N1WalletModal.js","sourceRoot":"","sources":["../../src/Modal/N1WalletModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import '../main.css';\nimport { bs58Decode, getEd25519PublicKey, signEd25519, NUser } from '@n1xyz/nts-sdk';\nimport { lazy, Suspense, useEffect, useState } from 'react';\nimport { ANIMATION_EASE } from './NordFlow/constants';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport {\n getSessionKeysFromLocalStorage,\n getUser,\n getUserBalances,\n} from '../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../Provider/hooks';\nimport { N1ModalViewMode, N1SessionMode } from '../Provider/types';\nimport { logger } from '../utils/logger';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst N1Sidebar = lazy(() =>\n import('./Sidebar/N1Sidebar').then((mod) => ({ default: mod.N1Sidebar }))\n);\n\n// Lazy load the NTSFlow component\nconst NTSFlow = lazy(() =>\n import('./NTSFlow').then((mod) => ({\n default: mod.NTSFlow,\n }))\n);\n\n// Lazy load the NordFlow component\nconst NordFlow = lazy(() =>\n import('./NordFlow/NordFlow').then((mod) => ({\n default: mod.NordFlow,\n }))\n);\n\nexport function N1WalletModal() {\n const { showLogin, setShowLogin, viewMode, ntsInterface } = useN1WalletContext();\n\n const {\n setBalances,\n setViewMode,\n setUsername,\n setSessionPubKey,\n setSignMessageWithWalletKey,\n setSignMessageWithSessionKey,\n setIsConnected,\n setWalletPubKey,\n setStartClosingLogin,\n startClosingLogin,\n setLoading,\n setAddress,\n dynamicWallet,\n dynamicSdkHasLoaded,\n darkMode,\n handleError,\n showSidebar,\n sessionMode,\n setNUser,\n } = useN1WalletInternalContext();\n\n\n\n\n const signWithWallet = async (msg: string): Promise<Uint8Array> => {\n try {\n if (!dynamicWallet) {\n throw new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Wallet not found for signing'\n );\n }\n\n if (dynamicWallet.chain === 'SOL') {\n const signature = await dynamicWallet.signMessage(msg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n }\n\n const sig = (await dynamicWallet.signMessage(msg)) as string;\n logger.debug('Wallet signature received', { signature: sig });\n return Uint8Array.from(Buffer.from(sig.slice(2), 'hex'));\n } catch (error) {\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n const [showLoginAnimation, setShowLoginAnimation] = useState(false);\n\n // Handle loading state\n useEffect(() => {\n if (dynamicSdkHasLoaded || dynamicWallet) {\n setLoading(false);\n }\n }, [dynamicSdkHasLoaded, dynamicWallet]);\n\n // Initialize session when wallet is connected\n useEffect(() => {\n\n // For Nord mode, we don't need to execute the NTS flow\n if (sessionMode === N1SessionMode.Nord) {\n return;\n }\n\n const initializeSession = async () => {\n // If wallet is not connected, or not in connect mode, skip\n if (!dynamicWallet || viewMode !== N1ModalViewMode.Connect) {\n return;\n }\n\n // NTS Flow below\n // Wallet is connected or we're in connect mode\n // TODO: make this clearer/ more organized\n try {\n logger.debug('Initialize Session...');\n\n if (dynamicWallet) {\n // Check whitelist status first\n const response = await fetch(\n 'https://argus-1g4n.onrender.com/api/db/verifyWhitelist',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ address: dynamicWallet.address }),\n }\n );\n\n const whitelistData = await response.json();\n\n if (!whitelistData.isWhitelisted) {\n logger.info('Wallet not whitelisted');\n setViewMode(N1ModalViewMode.NoWhitelist);\n return;\n }\n }\n\n logger.group('Session Initialization');\n try {\n // Get wallet public key\n const walletPubKey =\n dynamicWallet.chain === 'SOL'\n ? bs58Decode(dynamicWallet.address)\n : Uint8Array.from(\n Buffer.from(dynamicWallet.address.slice(2), 'hex')\n );\n setWalletPubKey(walletPubKey);\n\n // Check for existing session\n const sessionData = getSessionKeysFromLocalStorage(\n dynamicWallet.address\n );\n if (!sessionData) {\n logger.info(\n 'No existing session found, transitioning to CreateSession'\n );\n setViewMode(N1ModalViewMode.CreateSession);\n return;\n }\n logger.debug('Session time', sessionData.createdAt);\n logger.debug(\n 'Session time',\n new Date(sessionData.createdAt).getTime()\n );\n logger.debug('Current time', Date.now());\n if (\n new Date(sessionData.createdAt).getTime() <\n Date.now() - 30 * 24 * 60 * 60 * 1000\n ) {\n // Session expired (older than 30 days)\n logger.info(\n 'Session expired, transitioning to CreateSession',\n new Date(sessionData.createdAt)\n );\n setViewMode(N1ModalViewMode.CreateSession);\n return;\n }\n\n // Use existing session\n logger.info('Using existing session');\n const sessionPubKey = await getEd25519PublicKey(\n sessionData.ed25519PrivateKey\n );\n setSessionPubKey(sessionPubKey);\n\n // Setup signing function\n const signFn = async (message: Uint8Array) => {\n logger.debug('signFn', { message });\n const signature = await signEd25519(\n message,\n sessionData.ed25519PrivateKey\n );\n return signature;\n };\n setSignMessageWithWalletKey(() => signWithWallet);\n setSignMessageWithSessionKey(() => signFn);\n\n // Create and set NUser instance\n if (ntsInterface && walletPubKey && signWithWallet) {\n const newUserInstance = new NUser(\n ntsInterface,\n walletPubKey, // walletPubKey derived in this function\n sessionPubKey, // rehydrated sessionPubKey\n signWithWallet, // signWithWalletKeyFn from context\n signFn // rehydrated session signFn\n );\n newUserInstance.isSessionValid = true; // Mark session as valid\n setNUser(newUserInstance);\n logger.debug('NUser instance created and set from rehydrated session');\n } else {\n logger.warn(\n 'Could not create NUser from rehydrated session: ntsInterface, walletPubKey, or signMessageWithWalletKey missing'\n );\n // Potentially handle this, e.g., by clearing session and going to CreateSession\n // For now, we'll let the flow continue, but NAppClient might not initialize.\n throw new WalletError(\n WalletErrorCode.CONNECTION_FAILED,\n 'Failed to create NUser from rehydrated session'\n );\n }\n\n // Fetch user data\n try {\n logger.debug('Fetching user data');\n const userData = await getUser();\n logger.debug('User data:', userData);\n\n if (!userData) {\n logger.info('No user data found, transitioning to CreatingUser');\n setViewMode(N1ModalViewMode.CreatingUser);\n return;\n }\n\n // User exists, set data and check balances\n setUsername(userData.name || '');\n setAddress(dynamicWallet.address);\n setWalletPubKey(walletPubKey);\n setIsConnected(true);\n\n // Fetch balances\n try {\n const balances = await getUserBalances(dynamicWallet.address);\n logger.debug('User balances:', balances);\n setBalances(balances);\n } catch (error) {\n logger.error('Error fetching balances:', error);\n // Continue anyway, non-critical error\n }\n\n // Success!\n setViewMode(N1ModalViewMode.Success);\n } catch (error) {\n logger.error('Error fetching user:', error);\n throw new WalletError(\n WalletErrorCode.USER_FETCH_FAILED,\n 'Failed to fetch user data'\n );\n }\n } finally {\n logger.groupEnd();\n }\n } catch (error) {\n logger.error('Error in session initialization:', error);\n handleError(\n error instanceof WalletError\n ? error\n : new WalletError(\n WalletErrorCode.SESSION_INITIALIZATION_FAILED,\n 'Failed to initialize session'\n )\n );\n }\n };\n\n initializeSession();\n }, [dynamicWallet, dynamicSdkHasLoaded, viewMode, sessionMode]);\n\n // Handle modal visibility\n useEffect(() => {\n if (showLogin) {\n setStartClosingLogin(false);\n setShowLoginAnimation(true);\n }\n }, [showLogin]);\n\n useEffect(() => {\n if (startClosingLogin) {\n setShowLoginAnimation(false);\n const timeout = setTimeout(() => {\n setShowLogin(false);\n setStartClosingLogin(false);\n }, 700);\n return () => clearTimeout(timeout);\n }\n }, [startClosingLogin, setShowLogin, setStartClosingLogin]);\n\n // Handle modal close for Nord mode\n const handleNordFlowClose = () => {\n setStartClosingLogin(true);\n };\n\n if (!showLogin && !showSidebar) return null;\n\n return (\n <div className={'n1-wallet-widget ' + (darkMode ? 'dark' : '')}>\n {showLogin && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center w-full h-full\">\n <div\n className={`\n fixed inset-0 w-full h-full bg-black/20 dark:bg-black/40 backdrop-blur-sm\n transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100' : 'opacity-0'}\n `}\n onClick={() => setStartClosingLogin(true)}\n />\n <div\n className={`\n relative z-50 transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100 scale-100' : 'opacity-0 scale-95'}\n `}\n >\n {sessionMode === N1SessionMode.Nord ? (\n <NordFlow onClose={handleNordFlowClose} />\n ) : (\n <NTSFlow />\n )}\n </div>\n </div>\n )}\n <Suspense fallback={<LoadingFallback />}>\n <N1Sidebar />\n </Suspense>\n </div>\n );\n}\n"]}
@@ -1,4 +1 @@
1
- interface NTSFlowProps {
2
- }
3
- export declare function NTSFlow({}: NTSFlowProps): JSX.Element;
4
- export {};
1
+ export declare function NTSFlow(): JSX.Element;
@@ -5,30 +5,30 @@ import { N1ModalViewMode } from '../../Provider/types';
5
5
  import { LoadingFallback } from './LoadingFallback';
6
6
  // Lazy load components
7
7
  var ConnectView = lazy(function () {
8
- return import('./views/ConnectView').then(function (mod) { return ({ default: mod.ConnectView }); });
8
+ return import('./views/01-ConnectView').then(function (mod) { return ({ default: mod.ConnectView }); });
9
9
  });
10
10
  var CreateSessionView = lazy(function () {
11
- return import('./views/CreateSessionView').then(function (mod) { return ({
11
+ return import('./views/02-CreateSessionView').then(function (mod) { return ({
12
12
  default: mod.CreateSessionView,
13
13
  }); });
14
14
  });
15
15
  var SigningView = lazy(function () {
16
- return import('./views/SigningView').then(function (mod) { return ({ default: mod.SigningView }); });
16
+ return import('./views/03-SigningView').then(function (mod) { return ({ default: mod.SigningView }); });
17
17
  });
18
18
  var CreateUserView = lazy(function () {
19
- return import('./views/CreateUserView').then(function (mod) { return ({
19
+ return import('./views/04-CreateUserView').then(function (mod) { return ({
20
20
  default: mod.CreateUserView,
21
21
  }); });
22
22
  });
23
23
  var SuccessView = lazy(function () {
24
- return import('./views/SuccessView').then(function (mod) { return ({ default: mod.SuccessView }); });
24
+ return import('./views/05-SuccessView').then(function (mod) { return ({ default: mod.SuccessView }); });
25
25
  });
26
26
  var NoWhitelistView = lazy(function () {
27
- return import('./views/NoWhitelistView').then(function (mod) { return ({
27
+ return import('./views/99-NoWhitelistView').then(function (mod) { return ({
28
28
  default: mod.NoWhitelistView,
29
29
  }); });
30
30
  });
31
- export function NTSFlow(_a) {
31
+ export function NTSFlow() {
32
32
  var viewMode = useN1WalletContext().viewMode;
33
33
  return (_jsxs(Suspense, { fallback: _jsx(LoadingFallback, {}), children: [viewMode === N1ModalViewMode.Connect && _jsx(ConnectView, {}), viewMode === N1ModalViewMode.CreateSession && _jsx(CreateSessionView, {}), viewMode === N1ModalViewMode.Signing && _jsx(SigningView, {}), viewMode === N1ModalViewMode.CreatingUser && _jsx(CreateUserView, {}), viewMode === N1ModalViewMode.Success && _jsx(SuccessView, {}), viewMode === N1ModalViewMode.NoWhitelist && _jsx(NoWhitelistView, {})] }));
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NTSFlow.js","sourceRoot":"","sources":["../../../src/Modal/NTSFlow/NTSFlow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,uBAAuB;AACvB,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA3E,CAA2E,CAC5E,CAAC;AACF,IAAM,iBAAiB,GAAG,IAAI,CAAC;IAC7B,OAAA,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACjD,OAAO,EAAE,GAAG,CAAC,iBAAiB;KAC/B,CAAC,EAFgD,CAEhD,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA3E,CAA2E,CAC5E,CAAC;AACF,IAAM,cAAc,GAAG,IAAI,CAAC;IAC1B,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAC9C,OAAO,EAAE,GAAG,CAAC,cAAc;KAC5B,CAAC,EAF6C,CAE7C,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA3E,CAA2E,CAC5E,CAAC;AACF,IAAM,eAAe,GAAG,IAAI,CAAC;IAC3B,OAAA,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAC/C,OAAO,EAAE,GAAG,CAAC,eAAe;KAC7B,CAAC,EAF8C,CAE9C,CAAC;AAFH,CAEG,CACJ,CAAC;AAMF,MAAM,UAAU,OAAO,CAAC,EAAgB;IAC9B,IAAA,QAAQ,GAAK,kBAAkB,EAAE,SAAzB,CAA0B;IAE1C,OAAO,CACL,MAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,eAAe,KAAG,aACpC,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,aAAa,IAAI,KAAC,iBAAiB,KAAG,EACnE,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,YAAY,IAAI,KAAC,cAAc,KAAG,EAC/D,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,WAAW,IAAI,KAAC,eAAe,KAAG,IACvD,CACZ,CAAC;AACJ,CAAC","sourcesContent":["import { lazy, Suspense } from 'react';\nimport { useN1WalletContext } from '../../Provider/hooks';\nimport { N1ModalViewMode } from '../../Provider/types';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst ConnectView = lazy(() =>\n import('./views/ConnectView').then((mod) => ({ default: mod.ConnectView }))\n);\nconst CreateSessionView = lazy(() =>\n import('./views/CreateSessionView').then((mod) => ({\n default: mod.CreateSessionView,\n }))\n);\nconst SigningView = lazy(() =>\n import('./views/SigningView').then((mod) => ({ default: mod.SigningView }))\n);\nconst CreateUserView = lazy(() =>\n import('./views/CreateUserView').then((mod) => ({\n default: mod.CreateUserView,\n }))\n);\nconst SuccessView = lazy(() =>\n import('./views/SuccessView').then((mod) => ({ default: mod.SuccessView }))\n);\nconst NoWhitelistView = lazy(() =>\n import('./views/NoWhitelistView').then((mod) => ({\n default: mod.NoWhitelistView,\n }))\n);\n\ninterface NTSFlowProps {\n // Add any props if needed\n}\n\nexport function NTSFlow({}: NTSFlowProps) {\n const { viewMode } = useN1WalletContext();\n\n return (\n <Suspense fallback={<LoadingFallback />}>\n {viewMode === N1ModalViewMode.Connect && <ConnectView />}\n {viewMode === N1ModalViewMode.CreateSession && <CreateSessionView />}\n {viewMode === N1ModalViewMode.Signing && <SigningView />}\n {viewMode === N1ModalViewMode.CreatingUser && <CreateUserView />}\n {viewMode === N1ModalViewMode.Success && <SuccessView />}\n {viewMode === N1ModalViewMode.NoWhitelist && <NoWhitelistView />}\n </Suspense>\n );\n}\n"]}
1
+ {"version":3,"file":"NTSFlow.js","sourceRoot":"","sources":["../../../src/Modal/NTSFlow/NTSFlow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,uBAAuB;AACvB,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA9E,CAA8E,CAC/E,CAAC;AACF,IAAM,iBAAiB,GAAG,IAAI,CAAC;IAC7B,OAAA,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACpD,OAAO,EAAE,GAAG,CAAC,iBAAiB;KAC/B,CAAC,EAFmD,CAEnD,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA9E,CAA8E,CAC/E,CAAC;AACF,IAAM,cAAc,GAAG,IAAI,CAAC;IAC1B,OAAA,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACjD,OAAO,EAAE,GAAG,CAAC,cAAc;KAC5B,CAAC,EAFgD,CAEhD,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA9E,CAA8E,CAC/E,CAAC;AACF,IAAM,eAAe,GAAG,IAAI,CAAC;IAC3B,OAAA,MAAM,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAClD,OAAO,EAAE,GAAG,CAAC,eAAe;KAC7B,CAAC,EAFiD,CAEjD,CAAC;AAFH,CAEG,CACJ,CAAC;AAEF,MAAM,UAAU,OAAO;IACb,IAAA,QAAQ,GAAK,kBAAkB,EAAE,SAAzB,CAA0B;IAE1C,OAAO,CACL,MAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,eAAe,KAAG,aACpC,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,aAAa,IAAI,KAAC,iBAAiB,KAAG,EACnE,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,YAAY,IAAI,KAAC,cAAc,KAAG,EAC/D,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,WAAW,IAAI,KAAC,eAAe,KAAG,IACvD,CACZ,CAAC;AACJ,CAAC","sourcesContent":["import { lazy, Suspense } from 'react';\nimport { useN1WalletContext } from '../../Provider/hooks';\nimport { N1ModalViewMode } from '../../Provider/types';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst ConnectView = lazy(() =>\n import('./views/01-ConnectView').then((mod) => ({ default: mod.ConnectView }))\n);\nconst CreateSessionView = lazy(() =>\n import('./views/02-CreateSessionView').then((mod) => ({\n default: mod.CreateSessionView,\n }))\n);\nconst SigningView = lazy(() =>\n import('./views/03-SigningView').then((mod) => ({ default: mod.SigningView }))\n);\nconst CreateUserView = lazy(() =>\n import('./views/04-CreateUserView').then((mod) => ({\n default: mod.CreateUserView,\n }))\n);\nconst SuccessView = lazy(() =>\n import('./views/05-SuccessView').then((mod) => ({ default: mod.SuccessView }))\n);\nconst NoWhitelistView = lazy(() =>\n import('./views/99-NoWhitelistView').then((mod) => ({\n default: mod.NoWhitelistView,\n }))\n);\n\nexport function NTSFlow() {\n const { viewMode } = useN1WalletContext();\n\n return (\n <Suspense fallback={<LoadingFallback />}>\n {viewMode === N1ModalViewMode.Connect && <ConnectView />}\n {viewMode === N1ModalViewMode.CreateSession && <CreateSessionView />}\n {viewMode === N1ModalViewMode.Signing && <SigningView />}\n {viewMode === N1ModalViewMode.CreatingUser && <CreateUserView />}\n {viewMode === N1ModalViewMode.Success && <SuccessView />}\n {viewMode === N1ModalViewMode.NoWhitelist && <NoWhitelistView />}\n </Suspense>\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function ConnectView(): JSX.Element;
@@ -0,0 +1,69 @@
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 { useState } from 'react';
39
+ import { useN1WalletInternalContext } from '../../../Provider/hooks';
40
+ import { ANIMATION_EASE } from '../../NordFlow/constants';
41
+ import { ModalHeader } from '../components/ModalHeader';
42
+ import { IoMdWallet } from 'react-icons/io';
43
+ export function ConnectView() {
44
+ var _this = this;
45
+ var _a = useN1WalletInternalContext(), showDynamicWidget = _a.showDynamicWidget, handleError = _a.handleError;
46
+ var _b = useState(null), isHovered = _b[0], setIsHovered = _b[1];
47
+ var handleConnect = function () { return __awaiter(_this, void 0, void 0, function () {
48
+ var error_1;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0:
52
+ _a.trys.push([0, 2, , 3]);
53
+ return [4 /*yield*/, showDynamicWidget(true)];
54
+ case 1:
55
+ _a.sent();
56
+ return [3 /*break*/, 3];
57
+ case 2:
58
+ error_1 = _a.sent();
59
+ handleError(error_1);
60
+ return [3 /*break*/, 3];
61
+ case 3: return [2 /*return*/];
62
+ }
63
+ });
64
+ }); };
65
+ return (_jsxs("div", { className: "bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 relative border border-n1-ww-gray-200 dark:border-n1-ww-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]", children: [_jsx("div", { className: "p-6 border-b border-n1-ww-gray-200 dark:border-n1-ww-gray-800", children: _jsx(ModalHeader, {}) }), _jsx("div", { className: "p-6 overflow-hidden relative", children: _jsxs("div", { className: "space-y-4", children: [_jsx("button", { onClick: handleConnect, onMouseEnter: function () { return setIsHovered('wallet'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-400 dark:hover:border-white/60\n "), style: {
66
+ transform: isHovered === 'wallet' ? 'scale(0.99)' : 'scale(1)',
67
+ }, children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsxs("div", { className: "flex items-center", children: [_jsx(IoMdWallet, { className: "w-5 h-5 text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white transition-colors duration-300" }), _jsx("span", { className: "\n ml-2 text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n "), children: "Continue with Wallet" })] }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('google'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Google (soon)" }) }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('email'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Email (soon)" }) }) }) })] }) })] }));
68
+ }
69
+ //# sourceMappingURL=01-ConnectView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"01-ConnectView.js","sourceRoot":"","sources":["../../../../src/Modal/NTSFlow/views/01-ConnectView.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,UAAU,WAAW;IAA3B,iBA4FC;IA3FO,IAAA,KAAqC,0BAA0B,EAAE,EAA/D,iBAAiB,uBAAA,EAAE,WAAW,iBAAiC,CAAC;IAClE,IAAA,KAA4B,QAAQ,CAExC,IAAI,CAAC,EAFA,SAAS,QAAA,EAAE,YAAY,QAEvB,CAAC;IAER,IAAM,aAAa,GAAG;;;;;;oBAElB,qBAAM,iBAAiB,CAAC,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;;;;oBAE9B,WAAW,CAAC,OAAoB,CAAC,CAAC;;;;;SAErC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,8RAA8R,aAC3S,cAAK,SAAS,EAAC,+DAA+D,YAC5E,KAAC,WAAW,KAAG,GACX,EAEN,cAAK,SAAS,EAAC,8BAA8B,YAC3C,eAAK,SAAS,EAAC,WAAW,aACxB,iBACE,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,QAAQ,CAAC,EAAtB,CAAsB,EAC1C,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,sLAEqB,cAAc,yJAE7C,EACD,KAAK,EAAE;gCACL,SAAS,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;6BAC/D,YAED,cAAK,SAAS,EAAC,+BAA+B,YAC5C,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,UAAU,IAAC,SAAS,EAAC,8IAA8I,GAAG,EACvK,eACE,SAAS,EAAE,sGAC+D,cAAc,gJAEzF,qCAGM,IACH,GACF,GACC,EAGT,iBACE,QAAQ,QACR,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,QAAQ,CAAC,EAAtB,CAAsB,EAC1C,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,sLAEqB,cAAc,iHAE7C,YAED,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAM,SAAS,EAAC,+EAA+E,4CAExF,GACH,GACF,GACC,EAET,iBACE,QAAQ,QACR,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,OAAO,CAAC,EAArB,CAAqB,EACzC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,sLAEqB,cAAc,iHAE7C,YAED,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAM,SAAS,EAAC,+EAA+E,2CAExF,GACH,GACF,GACC,IACL,GACF,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useState } from 'react';\n// import { IoMdWallet } from 'react-icons/io';\nimport { WalletError } from '../../../errors/types';\nimport { useN1WalletInternalContext } from '../../../Provider/hooks';\nimport { ANIMATION_EASE } from '../../NordFlow/constants';\nimport { ModalHeader } from '../components/ModalHeader';\nimport { IoMdWallet } from 'react-icons/io';\n\nexport function ConnectView() {\n const { showDynamicWidget, handleError } = useN1WalletInternalContext();\n const [isHovered, setIsHovered] = useState<\n 'wallet' | 'google' | 'email' | null\n >(null);\n\n const handleConnect = async () => {\n try {\n await showDynamicWidget(true);\n } catch (error) {\n handleError(error as WalletError);\n }\n };\n\n return ( \n <div className=\"bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 relative border border-n1-ww-gray-200 dark:border-n1-ww-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]\">\n <div className=\"p-6 border-b border-n1-ww-gray-200 dark:border-n1-ww-gray-800\">\n <ModalHeader />\n </div>\n\n <div className=\"p-6 overflow-hidden relative\">\n <div className=\"space-y-4\">\n <button\n onClick={handleConnect}\n onMouseEnter={() => setIsHovered('wallet')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-400 dark:hover:border-white/60\n `}\n style={{\n transform: isHovered === 'wallet' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center\">\n <IoMdWallet className=\"w-5 h-5 text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white transition-colors duration-300\" />\n <span\n className={`\n ml-2 text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n `}\n >\n Continue with Wallet\n </span>\n </div>\n </div>\n </button>\n\n\n <button\n disabled\n onMouseEnter={() => setIsHovered('google')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n `}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center\">\n <span className=\"text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400\">\n Continue with Google (soon)\n </span>\n </div>\n </div>\n </button>\n\n <button\n disabled\n onMouseEnter={() => setIsHovered('email')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n `}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center\">\n <span className=\"text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400\">\n Continue with Email (soon)\n </span>\n </div>\n </div>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function CreateSessionView(): JSX.Element;