@n1xyz/wallet-widget 0.0.28 → 0.0.30

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 (169) hide show
  1. package/README.md +89 -11
  2. package/dist/Logic/sessionManager.js +8 -8
  3. package/dist/Logic/sessionManager.js.map +1 -1
  4. package/dist/Logic/transactionManager.d.ts +0 -22
  5. package/dist/Logic/transactionManager.js +0 -189
  6. package/dist/Logic/transactionManager.js.map +1 -1
  7. package/dist/Logic/utils.d.ts +3 -7
  8. package/dist/Logic/utils.js +3 -186
  9. package/dist/Logic/utils.js.map +1 -1
  10. package/dist/Modal/LoadingFallback.js +1 -1
  11. package/dist/Modal/LoadingFallback.js.map +1 -1
  12. package/dist/Modal/N1WalletModal.d.ts +1 -1
  13. package/dist/Modal/N1WalletModal.js +50 -205
  14. package/dist/Modal/N1WalletModal.js.map +1 -1
  15. package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +1 -1
  16. package/dist/Modal/NordFlow/NordFlow.js +44 -17
  17. package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
  18. package/dist/Modal/NordFlow/components/ChainButton.d.ts +5 -2
  19. package/dist/Modal/NordFlow/components/ChainButton.js +16 -13
  20. package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -1
  21. package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +2 -1
  22. package/dist/Modal/NordFlow/components/EVMChainsButton.js +11 -9
  23. package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -1
  24. package/dist/Modal/NordFlow/components/Header.d.ts +3 -1
  25. package/dist/Modal/NordFlow/components/Header.js +38 -4
  26. package/dist/Modal/NordFlow/components/Header.js.map +1 -1
  27. package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -1
  28. package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -1
  29. package/dist/Modal/NordFlow/components/MoreButton.d.ts +1 -1
  30. package/dist/Modal/NordFlow/components/MoreButton.js +4 -4
  31. package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -1
  32. package/dist/Modal/NordFlow/components/TransactionTable.d.ts +1 -1
  33. package/dist/Modal/NordFlow/components/TransactionTable.js +11 -11
  34. package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
  35. package/dist/Modal/NordFlow/components/WaitingMessage.d.ts +3 -1
  36. package/dist/Modal/NordFlow/components/WaitingMessage.js +14 -3
  37. package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -1
  38. package/dist/Modal/NordFlow/components/index.d.ts +0 -1
  39. package/dist/Modal/NordFlow/components/index.js +0 -1
  40. package/dist/Modal/NordFlow/components/index.js.map +1 -1
  41. package/dist/Modal/NordFlow/constants.js +12 -48
  42. package/dist/Modal/NordFlow/constants.js.map +1 -1
  43. package/dist/Modal/NordFlow/context/DepositContext.js +112 -41
  44. package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -1
  45. package/dist/Modal/NordFlow/context/FlowContext.d.ts +1 -0
  46. package/dist/Modal/NordFlow/context/FlowContext.js +99 -6
  47. package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -1
  48. package/dist/Modal/NordFlow/context/WalletConnectContext.js +76 -20
  49. package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -1
  50. package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -1
  51. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +18 -0
  52. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +181 -0
  53. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +1 -0
  54. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -1
  55. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -15
  56. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
  57. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.d.ts +1 -0
  58. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +115 -0
  59. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +1 -0
  60. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.d.ts +4 -0
  61. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js +298 -0
  62. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +1 -0
  63. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.d.ts +1 -0
  64. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +29 -0
  65. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +1 -0
  66. package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.d.ts +1 -0
  67. package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js +131 -0
  68. package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +1 -0
  69. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.d.ts +1 -0
  70. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +37 -0
  71. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +1 -0
  72. package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.d.ts +5 -0
  73. package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js +39 -0
  74. package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js.map +1 -0
  75. package/dist/Modal/NordFlow/screens/08-ErrorScreen.d.ts +1 -0
  76. package/dist/Modal/NordFlow/screens/08-ErrorScreen.js +68 -0
  77. package/dist/Modal/NordFlow/screens/08-ErrorScreen.js.map +1 -0
  78. package/dist/Modal/NordFlow/screens/index.d.ts +5 -9
  79. package/dist/Modal/NordFlow/screens/index.js +5 -9
  80. package/dist/Modal/NordFlow/screens/index.js.map +1 -1
  81. package/dist/Modal/NordFlow/types.d.ts +13 -3
  82. package/dist/Modal/NordFlow/types.js +4 -3
  83. package/dist/Modal/NordFlow/types.js.map +1 -1
  84. package/dist/Modal/NordFlow/utils/depositStorage.d.ts +4 -0
  85. package/dist/Modal/NordFlow/utils/depositStorage.js +48 -0
  86. package/dist/Modal/NordFlow/utils/depositStorage.js.map +1 -0
  87. package/dist/Modal/NordFlow/utils/nordUtils.d.ts +1 -1
  88. package/dist/Modal/NordFlow/utils/nordUtils.js +1 -1
  89. package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -1
  90. package/dist/Provider/LazyWalletProvider.d.ts +1 -1
  91. package/dist/Provider/LazyWalletProvider.js +38 -38
  92. package/dist/Provider/LazyWalletProvider.js.map +1 -1
  93. package/dist/Provider/N1WalletProvider.d.ts +2 -1
  94. package/dist/Provider/N1WalletProvider.js +85 -82
  95. package/dist/Provider/N1WalletProvider.js.map +1 -1
  96. package/dist/Provider/ShadowRootWrapper.d.ts +1 -1
  97. package/dist/Provider/WalletErrorBoundary.d.ts +9 -2
  98. package/dist/Provider/WalletErrorBoundary.js +19 -1
  99. package/dist/Provider/WalletErrorBoundary.js.map +1 -1
  100. package/dist/Provider/hooks/useNordUserInitialization.js +87 -35
  101. package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
  102. package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +1 -1
  103. package/dist/Provider/icons/ConnectionDotsSVG.d.ts +1 -1
  104. package/dist/Provider/icons/MetamaskIcon.d.ts +1 -1
  105. package/dist/Provider/icons/PhantomIcon.d.ts +1 -1
  106. package/dist/Provider/icons/UserIcon.d.ts +1 -1
  107. package/dist/Provider/icons/WalletConnectIcon.d.ts +1 -1
  108. package/dist/Provider/types.d.ts +18 -16
  109. package/dist/Provider/types.js +8 -2
  110. package/dist/Provider/types.js.map +1 -1
  111. package/dist/WidgetButton/N1ConnectButton.d.ts +1 -1
  112. package/dist/WidgetButton/N1ConnectButton.js +29 -10
  113. package/dist/WidgetButton/N1ConnectButton.js.map +1 -1
  114. package/dist/animations/N1Loader.d.ts +11 -0
  115. package/dist/animations/N1Loader.js +42 -0
  116. package/dist/animations/N1Loader.js.map +1 -0
  117. package/dist/animations/N1Loader.json +1 -0
  118. package/dist/animations/Processing.d.ts +11 -0
  119. package/dist/animations/Processing.js +42 -0
  120. package/dist/animations/Processing.js.map +1 -0
  121. package/dist/animations/Processing.json +1 -0
  122. package/dist/components/Logo.d.ts +2 -1
  123. package/dist/components/Logo.js +5 -2
  124. package/dist/components/Logo.js.map +1 -1
  125. package/dist/components/QRCodeLoader.d.ts +1 -1
  126. package/dist/components/QRCodeLoader.js +1 -1
  127. package/dist/components/QRCodeLoader.js.map +1 -1
  128. package/dist/components/logos/EVMChainsGroup.js +1 -1
  129. package/dist/components/logos/EVMChainsGroup.js.map +1 -1
  130. package/dist/components/logos/MoreChainsGroup.js +1 -1
  131. package/dist/components/logos/MoreChainsGroup.js.map +1 -1
  132. package/dist/components/logos/index.d.ts +0 -2
  133. package/dist/components/logos/index.js +0 -2
  134. package/dist/components/logos/index.js.map +1 -1
  135. package/dist/config/solana.d.ts +3 -15
  136. package/dist/config/solana.js +6 -29
  137. package/dist/config/solana.js.map +1 -1
  138. package/dist/embedded-main-css.d.ts +1 -1
  139. package/dist/embedded-main-css.js +1 -1
  140. package/dist/embedded-main-css.js.map +1 -1
  141. package/dist/fonts/apk-galeria/APK-Galeria-Bold-Italic-Trial.otf +0 -0
  142. package/dist/fonts/apk-galeria/APK-Galeria-Bold-Trial.otf +0 -0
  143. package/dist/fonts/apk-galeria/APK-Galeria-Extra-Bold-Italic-Trial.otf +0 -0
  144. package/dist/fonts/apk-galeria/APK-Galeria-Extra-Bold-Trial.otf +0 -0
  145. package/dist/fonts/apk-galeria/APK-Galeria-Light-Italic-Trial.otf +0 -0
  146. package/dist/fonts/apk-galeria/APK-Galeria-Light-Trial.otf +0 -0
  147. package/dist/fonts/apk-galeria/APK-Galeria-Medium-Italic-Trial.otf +0 -0
  148. package/dist/fonts/apk-galeria/APK-Galeria-Medium-Trial.otf +0 -0
  149. package/dist/fonts/apk-galeria/APK-Galeria-Regular-Italic-Trial.otf +0 -0
  150. package/dist/fonts/apk-galeria/APK-Galeria-Regular-Trial.otf +0 -0
  151. package/dist/fonts/apk-galeria/APK-Galeria-Semi-Bold-Italic-Trial.otf +0 -0
  152. package/dist/fonts/apk-galeria/APK-Galeria-Semi-Bold-Trial.otf +0 -0
  153. package/dist/fonts/apk-galeria/APK-Galeria-Thin-Italic-Trial.otf +0 -0
  154. package/dist/fonts/apk-galeria/APK-Galeria-Thin-Trial.otf +0 -0
  155. package/dist/index.d.ts +2 -0
  156. package/dist/index.js +2 -0
  157. package/dist/index.js.map +1 -1
  158. package/dist/main.css +2 -2
  159. package/dist/polyfills/windowEthereumGuard.d.ts +6 -0
  160. package/dist/polyfills/windowEthereumGuard.js +28 -0
  161. package/dist/polyfills/windowEthereumGuard.js.map +1 -0
  162. package/dist/utils/dynamicNord.d.ts +2 -0
  163. package/dist/utils/dynamicNord.js +59 -0
  164. package/dist/utils/dynamicNord.js.map +1 -0
  165. package/dist/utils/ed25519.d.ts +8 -0
  166. package/dist/utils/ed25519.js +87 -0
  167. package/dist/utils/ed25519.js.map +1 -0
  168. package/package.json +26 -11
  169. package/dist/utils/dynamicImports.d.ts +0 -25
@@ -35,18 +35,18 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  }
36
36
  };
37
37
  import { useEffect } from 'react';
38
- import { NordUser } from '@n1xyz/nord-ts';
39
- import { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';
38
+ import { dynamicImportNordUser } from '../../utils/dynamicNord';
40
39
  import { PublicKey } from '@solana/web3.js';
41
- import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage } from '../../Logic/utils';
40
+ import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage, generateSessionKeyPair } from '../../Logic/utils';
41
+ import { signEd25519Message } from '../../utils/ed25519';
42
42
  import { WalletError, WalletErrorCode } from '../../errors/types';
43
43
  import { logger } from '../../utils/logger';
44
44
  import { N1SessionMode } from '../types';
45
45
  import { useN1WalletContext, useN1WalletInternalContext } from '../hooks';
46
46
  export function useNordUserInitialization() {
47
47
  var _this = this;
48
- var _a = useN1WalletInternalContext(), setNordUser = _a.setNordUser, setSessionPubKey = _a.setSessionPubKey, setSignMessageWithSessionKey = _a.setSignMessageWithSessionKey, setSignTransactionWithWalletKey = _a.setSignTransactionWithWalletKey, dynamicWallet = _a.dynamicWallet;
49
- var _b = useN1WalletContext(), address = _b.address, nordUser = _b.nordUser, sessionMode = _b.sessionMode, nord = _b.nord, signMessageWithSessionKey = _b.signMessageWithSessionKey, signTransactionWithWalletKey = _b.signTransactionWithWalletKey, sessionPubKey = _b.sessionPubKey;
48
+ var _a = useN1WalletInternalContext(), setNordUser = _a.setNordUser, setSessionPubKey = _a.setSessionPubKey, setSignMessageWithSessionKey = _a.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _a.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _a.setSignTransactionWithWalletKey, dynamicWallet = _a.dynamicWallet;
49
+ var _b = useN1WalletContext(), address = _b.address, nordUser = _b.nordUser, sessionMode = _b.sessionMode, nord = _b.nord, signMessageWithSessionKey = _b.signMessageWithSessionKey, signMessageWithWalletKey = _b.signMessageWithWalletKey, signTransactionWithWalletKey = _b.signTransactionWithWalletKey, sessionPubKey = _b.sessionPubKey;
50
50
  // First useEffect: Initialize signing functions
51
51
  useEffect(function () {
52
52
  if (sessionMode !== N1SessionMode.Nord || address === null || address === '') {
@@ -85,8 +85,45 @@ export function useNordUserInitialization() {
85
85
  setSignTransactionWithWalletKey(function () { return signTransactionWithWallet; });
86
86
  return signTransactionWithWallet;
87
87
  };
88
+ var createWalletMessageSignFunction = function () {
89
+ if (!dynamicWallet) {
90
+ return null;
91
+ }
92
+ var signMessageWithWallet = function (message) { return __awaiter(_this, void 0, void 0, function () {
93
+ var signer, result, error_2;
94
+ return __generator(this, function (_a) {
95
+ switch (_a.label) {
96
+ case 0:
97
+ _a.trys.push([0, 4, , 5]);
98
+ if (!(dynamicWallet.chain === 'SOL')) return [3 /*break*/, 3];
99
+ return [4 /*yield*/, dynamicWallet.getSigner()];
100
+ case 1:
101
+ signer = _a.sent();
102
+ if (!(signer === null || signer === void 0 ? void 0 : signer.signMessage)) {
103
+ throw new Error('signMessage is not supported by this wallet');
104
+ }
105
+ return [4 /*yield*/, signer.signMessage(message)];
106
+ case 2:
107
+ result = _a.sent();
108
+ if (!(result === null || result === void 0 ? void 0 : result.signature)) {
109
+ throw new Error('Wallet did not return a signature');
110
+ }
111
+ logger.debug('Solana message signature received');
112
+ return [2 /*return*/, result.signature];
113
+ case 3: throw new WalletError(WalletErrorCode.USER_REJECTED, 'Unsupported chain', { originalError: new Error('Unsupported chain') });
114
+ case 4:
115
+ error_2 = _a.sent();
116
+ console.error('Error signing message with wallet:', error_2);
117
+ throw new WalletError(WalletErrorCode.USER_REJECTED, 'Failed to sign message with wallet', { originalError: error_2 });
118
+ case 5: return [2 /*return*/];
119
+ }
120
+ });
121
+ }); };
122
+ setSignMessageWithWalletKey(function () { return signMessageWithWallet; });
123
+ return signMessageWithWallet;
124
+ };
88
125
  var createSession = function () { return __awaiter(_this, void 0, void 0, function () {
89
- var sessionKeyPair_1, storedKeys, signFn_1, error_2;
126
+ var sessionKeyPair_1, storedKeys, signFn_1, error_3;
90
127
  var _this = this;
91
128
  return __generator(this, function (_a) {
92
129
  switch (_a.label) {
@@ -115,17 +152,17 @@ export function useNordUserInitialization() {
115
152
  _a.label = 2;
116
153
  case 2:
117
154
  signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
118
- var error_3;
155
+ var error_4;
119
156
  return __generator(this, function (_a) {
120
157
  switch (_a.label) {
121
158
  case 0:
122
159
  _a.trys.push([0, 2, , 3]);
123
- return [4 /*yield*/, signEd25519(message, sessionKeyPair_1.privateKey)];
160
+ return [4 /*yield*/, signEd25519Message(message, sessionKeyPair_1.privateKey)];
124
161
  case 1: return [2 /*return*/, _a.sent()];
125
162
  case 2:
126
- error_3 = _a.sent();
127
- console.error('Error signing with session key:', error_3);
128
- throw error_3;
163
+ error_4 = _a.sent();
164
+ console.error('Error signing with session key:', error_4);
165
+ throw error_4;
129
166
  case 3: return [2 /*return*/];
130
167
  }
131
168
  });
@@ -140,8 +177,8 @@ export function useNordUserInitialization() {
140
177
  setSignMessageWithSessionKey(function () { return signFn_1; });
141
178
  return [2 /*return*/, signFn_1];
142
179
  case 3:
143
- error_2 = _a.sent();
144
- console.error('Error creating session:', error_2);
180
+ error_3 = _a.sent();
181
+ console.error('Error creating session:', error_3);
145
182
  return [2 /*return*/, null];
146
183
  case 4: return [2 /*return*/];
147
184
  }
@@ -155,6 +192,9 @@ export function useNordUserInitialization() {
155
192
  if (!signTransactionWithWalletKey && dynamicWallet) {
156
193
  createTransactionSignFunction();
157
194
  }
195
+ if (!signMessageWithWalletKey && dynamicWallet) {
196
+ createWalletMessageSignFunction();
197
+ }
158
198
  if (!!signMessageWithSessionKey) return [3 /*break*/, 2];
159
199
  return [4 /*yield*/, createSession()];
160
200
  case 1:
@@ -168,6 +208,10 @@ export function useNordUserInitialization() {
168
208
  }, [
169
209
  dynamicWallet,
170
210
  address,
211
+ sessionMode,
212
+ signMessageWithSessionKey,
213
+ signMessageWithWalletKey,
214
+ signTransactionWithWalletKey,
171
215
  ]);
172
216
  // Second useEffect: Initialize NordUser
173
217
  useEffect(function () {
@@ -175,12 +219,12 @@ export function useNordUserInitialization() {
175
219
  return;
176
220
  }
177
221
  var createNordUser = function () { return __awaiter(_this, void 0, void 0, function () {
178
- var sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1, error_4;
222
+ var sessionId, sessionKeyData, sessionIdKey, storedSessionId, NordUser, user, _1, error_5;
179
223
  return __generator(this, function (_a) {
180
224
  switch (_a.label) {
181
225
  case 0:
182
- _a.trys.push([0, 5, , 6]);
183
- if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signTransactionWithWalletKey) {
226
+ _a.trys.push([0, 7, , 8]);
227
+ if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signMessageWithWalletKey || !signTransactionWithWalletKey) {
184
228
  return [2 /*return*/, null];
185
229
  }
186
230
  sessionId = undefined;
@@ -202,38 +246,45 @@ export function useNordUserInitialization() {
202
246
  console.error('Error retrieving sessionId from localStorage:', error);
203
247
  }
204
248
  }
205
- user = new NordUser({
206
- nord: nord,
207
- sessionSignFn: signMessageWithSessionKey,
208
- transactionSignFn: signTransactionWithWalletKey,
209
- sessionId: sessionId,
210
- sessionPubKey: sessionPubKey,
211
- publicKey: new PublicKey(address),
212
- });
213
- _a.label = 1;
249
+ return [4 /*yield*/, dynamicImportNordUser()];
214
250
  case 1:
215
- _a.trys.push([1, 3, , 4]);
216
- return [4 /*yield*/, user.updateAccountId()];
251
+ NordUser = _a.sent();
252
+ return [4 /*yield*/, NordUser.new({
253
+ nord: nord,
254
+ walletPubkey: new PublicKey(address),
255
+ sessionPubkey: sessionPubKey,
256
+ sessionId: sessionId,
257
+ signSessionFn: signMessageWithSessionKey,
258
+ signTransactionFn: signTransactionWithWalletKey,
259
+ signMessageFn: signMessageWithWalletKey,
260
+ })];
217
261
  case 2:
218
- _a.sent();
219
- return [3 /*break*/, 4];
262
+ user = _a.sent();
263
+ _a.label = 3;
220
264
  case 3:
221
- _1 = _a.sent();
222
- return [3 /*break*/, 4];
265
+ _a.trys.push([3, 5, , 6]);
266
+ return [4 /*yield*/, user.updateAccountId()];
223
267
  case 4:
268
+ _a.sent();
269
+ return [3 /*break*/, 6];
270
+ case 5:
271
+ _1 = _a.sent();
272
+ return [3 /*break*/, 6];
273
+ case 6:
224
274
  setNordUser(user);
225
275
  return [2 /*return*/, user];
226
- case 5:
227
- error_4 = _a.sent();
228
- console.error('Error creating NordUser:', error_4);
276
+ case 7:
277
+ error_5 = _a.sent();
278
+ console.error('Error creating NordUser:', error_5);
229
279
  setNordUser(null);
230
280
  return [2 /*return*/, null];
231
- case 6: return [2 /*return*/];
281
+ case 8: return [2 /*return*/];
232
282
  }
233
283
  });
234
284
  }); };
235
285
  // Only create NordUser when all dependencies are available and nordUser is null
236
286
  if (signMessageWithSessionKey &&
287
+ signMessageWithWalletKey &&
237
288
  signTransactionWithWalletKey &&
238
289
  sessionPubKey &&
239
290
  nordUser === null) {
@@ -245,6 +296,7 @@ export function useNordUserInitialization() {
245
296
  nord,
246
297
  address,
247
298
  signMessageWithSessionKey,
299
+ signMessageWithWalletKey,
248
300
  signTransactionWithWalletKey,
249
301
  sessionPubKey,
250
302
  nordUser,
@@ -1 +1 @@
1
- {"version":3,"file":"useNordUserInitialization.js","sourceRoot":"","sources":["../../../src/Provider/hooks/useNordUserInitialization.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from 'react';\nimport React from 'react';\nimport { NordUser } from '@n1xyz/nord-ts';\nimport { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage } from '../../Logic/utils';\nimport { WalletError, WalletErrorCode } from '../../errors/types';\nimport { logger } from '../../utils/logger';\nimport { N1SessionMode } from '../types';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../hooks';\n\n\nexport function useNordUserInitialization() {\n const { setNordUser, setSessionPubKey, setSignMessageWithSessionKey, setSignTransactionWithWalletKey, dynamicWallet } = useN1WalletInternalContext();\n\n const { address, nordUser, sessionMode, nord, signMessageWithSessionKey, signTransactionWithWalletKey, sessionPubKey } = useN1WalletContext();\n // First useEffect: Initialize signing functions\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord || address === null || address === '') {\n return;\n }\n\n const createTransactionSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n\n // const serializedTx = signedTransaction.serialize();\n // return Transaction.from(serializedTx);\n console.log('signedTransaction', signedTransaction.signatures);\n console.log('signedTransaction - 2', signedTransaction);\n return signedTransaction;\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n };\n\n const createSession = async () => {\n try {\n let sessionKeyPair = null;\n if (address) {\n try {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n publicKey: storedKeys.ed25519PublicKey,\n };\n }\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n publicKey: sessionKeyPair.publicKey!,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH',\n });\n\n setSessionPubKey(sessionKeyPair.publicKey!);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n };\n\n // Initialize signing functions if needed\n const initSigningFunctions = async () => {\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n if (!signMessageWithSessionKey) {\n await createSession();\n }\n };\n\n initSigningFunctions();\n }, [\n dynamicWallet,\n address,\n ]);\n\n // Second useEffect: Initialize NordUser\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord) {\n return;\n }\n\n const createNordUser = async () => {\n try {\n if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signTransactionWithWalletKey) {\n return null;\n }\n\n let sessionId = undefined;\n if (address) {\n try {\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n const user = new NordUser({\n nord: nord,\n sessionSignFn: signMessageWithSessionKey,\n transactionSignFn: signTransactionWithWalletKey,\n sessionId,\n sessionPubKey: sessionPubKey,\n publicKey: new PublicKey(address),\n });\n\n try {\n await user.updateAccountId();\n } catch (_) { }\n\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n };\n\n // Only create NordUser when all dependencies are available and nordUser is null\n if (\n signMessageWithSessionKey &&\n signTransactionWithWalletKey &&\n sessionPubKey &&\n nordUser === null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n createNordUser();\n }\n }, [\n sessionMode,\n nord,\n address,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\n ]);\n} \n"]}
1
+ {"version":3,"file":"useNordUserInitialization.js","sourceRoot":"","sources":["../../../src/Provider/hooks/useNordUserInitialization.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from 'react';\nimport { dynamicImportNordUser } from '../../utils/dynamicNord';\nimport { PublicKey } from '@solana/web3.js';\nimport { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage, generateSessionKeyPair } from '../../Logic/utils';\nimport { signEd25519Message } from '../../utils/ed25519';\nimport { WalletError, WalletErrorCode } from '../../errors/types';\nimport { logger } from '../../utils/logger';\nimport { N1SessionMode } from '../types';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../hooks';\n\n\nexport function useNordUserInitialization() {\n const {\n setNordUser,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n dynamicWallet,\n } = useN1WalletInternalContext();\n\n const {\n address,\n nordUser,\n sessionMode,\n nord,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n } = useN1WalletContext();\n // First useEffect: Initialize signing functions\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord || address === null || address === '') {\n return;\n }\n\n const createTransactionSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n\n // const serializedTx = signedTransaction.serialize();\n // return Transaction.from(serializedTx);\n console.log('signedTransaction', signedTransaction.signatures);\n console.log('signedTransaction - 2', signedTransaction);\n return signedTransaction;\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n };\n\n const createWalletMessageSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signMessageWithWallet = async (\n message: Uint8Array\n ): Promise<Uint8Array> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signer = await dynamicWallet.getSigner();\n if (!signer?.signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n const result = await signer.signMessage(message);\n if (!result?.signature) {\n throw new Error('Wallet did not return a signature');\n }\n logger.debug('Solana message signature received');\n return result.signature;\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing message with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignMessageWithWalletKey(() => signMessageWithWallet);\n return signMessageWithWallet;\n };\n\n const createSession = async () => {\n try {\n let sessionKeyPair = null;\n if (address) {\n try {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n publicKey: storedKeys.ed25519PublicKey,\n };\n }\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519Message(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n publicKey: sessionKeyPair.publicKey!,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH',\n });\n\n setSessionPubKey(sessionKeyPair.publicKey!);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n };\n\n // Initialize signing functions if needed\n const initSigningFunctions = async () => {\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n if (!signMessageWithWalletKey && dynamicWallet) {\n createWalletMessageSignFunction();\n }\n\n if (!signMessageWithSessionKey) {\n await createSession();\n }\n };\n\n initSigningFunctions();\n }, [\n dynamicWallet,\n address,\n sessionMode,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n ]);\n\n // Second useEffect: Initialize NordUser\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord) {\n return;\n }\n\n const createNordUser = async () => {\n try {\n if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signMessageWithWalletKey || !signTransactionWithWalletKey) {\n return null;\n }\n\n let sessionId = undefined;\n if (address) {\n try {\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n const NordUser = await dynamicImportNordUser();\n const user = await NordUser.new({\n nord,\n walletPubkey: new PublicKey(address),\n sessionPubkey: sessionPubKey,\n sessionId,\n signSessionFn: signMessageWithSessionKey,\n signTransactionFn: signTransactionWithWalletKey,\n signMessageFn: signMessageWithWalletKey,\n });\n\n try {\n await user.updateAccountId();\n } catch (_) { }\n\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n };\n\n // Only create NordUser when all dependencies are available and nordUser is null\n if (\n signMessageWithSessionKey &&\n signMessageWithWalletKey &&\n signTransactionWithWalletKey &&\n sessionPubKey &&\n nordUser === null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n createNordUser();\n }\n }, [\n sessionMode,\n nord,\n address,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\n ]);\n} \n"]}
@@ -1 +1 @@
1
- export declare function CoinbaseWalletIcon(): JSX.Element;
1
+ export declare function CoinbaseWalletIcon(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare function ConnectionDotsSVG(): JSX.Element;
1
+ export declare function ConnectionDotsSVG(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare function MetamaskIcon(): JSX.Element;
1
+ export declare function MetamaskIcon(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare function PhantomIcon(): JSX.Element;
1
+ export declare function PhantomIcon(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare function UserIcon(): JSX.Element;
1
+ export declare function UserIcon(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare function WalletConnectIcon(): JSX.Element;
1
+ export declare function WalletConnectIcon(): import("react/jsx-runtime").JSX.Element;
@@ -1,16 +1,22 @@
1
1
  import type { WalletError } from '../errors/types';
2
- import { Nord } from '@n1xyz/nord-ts';
2
+ import type { Nord } from '@n1xyz/nord-ts';
3
3
  export declare enum N1ModalViewMode {
4
4
  Connect = 0,
5
5
  CreateSession = 1,
6
6
  Signing = 2,
7
7
  CreatingUser = 3,
8
8
  Success = 4,
9
- NoWhitelist = 5
9
+ ChainSelection = 6,
10
+ DepositSuccess = 7,
11
+ Error = 8,
12
+ AmountInput = 3,
13
+ DepositProgress = 2,
14
+ AuthLoading = 1,
15
+ FinalSuccess = 4,
16
+ Automatic = 99
10
17
  }
11
18
  export declare enum N1SessionMode {
12
- Nord = 0,
13
- NTS = 1
19
+ Nord = 0
14
20
  }
15
21
  export interface CssColorOverride {
16
22
  color: string;
@@ -20,9 +26,7 @@ export interface N1WalletProviderProps {
20
26
  children: React.ReactNode;
21
27
  providedSessionMode: N1SessionMode;
22
28
  appId: string;
23
- darkMode?: boolean;
24
29
  onError?: (error: WalletError) => void;
25
- faucetUrl?: string;
26
30
  nord?: Nord;
27
31
  /**
28
32
  * Optional array of color overrides: [{color: '#original', replacement: '#new'}]
@@ -95,12 +99,14 @@ export interface N1WalletState {
95
99
  balances: Balance[];
96
100
  chain: string;
97
101
  isConnected: boolean;
98
- ntsInterface: any;
99
- sessionMode: N1SessionMode | null;
102
+ sessionMode: N1SessionMode;
100
103
  sessionPubKey: Uint8Array | null;
101
104
  setShowLogin: (show: boolean) => void;
105
+ startDepositFlow: () => boolean;
106
+ setViewMode: (mode: N1ModalViewMode) => void;
102
107
  showLogin: boolean;
103
108
  signMessageWithSessionKey: ((message: any) => Promise<any>) | null;
109
+ signMessageWithWalletKey: ((message: any) => Promise<any>) | null;
104
110
  signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;
105
111
  userChain: string | null;
106
112
  username: string;
@@ -108,7 +114,6 @@ export interface N1WalletState {
108
114
  walletPubKey: Uint8Array | null;
109
115
  throwTestError: () => Promise<void>;
110
116
  nord?: Nord;
111
- faucetUrl?: string;
112
117
  nordUser?: any;
113
118
  }
114
119
  export interface N1InternalWalletState {
@@ -125,11 +130,10 @@ export interface N1InternalWalletState {
125
130
  setDynamicWallet: (wallet: any) => void;
126
131
  setIsConnected: (connected: boolean) => void;
127
132
  setLoading: (loading: boolean) => void;
128
- setNtsInterface: (nts: any) => void;
129
- setSessionMode: (mode: N1SessionMode | null) => void;
133
+ blockModalReopen: (duration?: number) => void;
130
134
  setSessionPubKey: (key: Uint8Array) => void;
131
- setShowSidebar: (show: boolean) => void;
132
135
  setSignMessageWithSessionKey: React.Dispatch<React.SetStateAction<((message: any) => Promise<any>) | null>>;
136
+ setSignMessageWithWalletKey: React.Dispatch<React.SetStateAction<((message: any) => Promise<any>) | null>>;
133
137
  setSignTransactionWithWalletKey: React.Dispatch<React.SetStateAction<((transaction: any) => Promise<any>) | null>>;
134
138
  setStartClosingLogin: (closing: boolean) => void;
135
139
  setUsername: (username: string) => void;
@@ -137,12 +141,10 @@ export interface N1InternalWalletState {
137
141
  setViewMode: (mode: N1ModalViewMode) => void;
138
142
  setWalletPubKey: (key: Uint8Array) => void;
139
143
  setNordUser: (user: any) => void;
140
- showSidebar: boolean;
141
144
  startClosingLogin: boolean;
142
145
  showDynamicWidget: any;
143
146
  setShowDynamicWidget: (show: any) => void;
144
- darkMode: boolean;
145
- sessionMode: N1SessionMode | null;
146
- faucetUrl?: string;
147
+ sessionMode: N1SessionMode;
147
148
  skipFinalScreen?: boolean;
149
+ depositFlowRequestId: number;
148
150
  }
@@ -5,11 +5,17 @@ export var N1ModalViewMode;
5
5
  N1ModalViewMode[N1ModalViewMode["Signing"] = 2] = "Signing";
6
6
  N1ModalViewMode[N1ModalViewMode["CreatingUser"] = 3] = "CreatingUser";
7
7
  N1ModalViewMode[N1ModalViewMode["Success"] = 4] = "Success";
8
- N1ModalViewMode[N1ModalViewMode["NoWhitelist"] = 5] = "NoWhitelist";
8
+ N1ModalViewMode[N1ModalViewMode["ChainSelection"] = 6] = "ChainSelection";
9
+ N1ModalViewMode[N1ModalViewMode["DepositSuccess"] = 7] = "DepositSuccess";
10
+ N1ModalViewMode[N1ModalViewMode["Error"] = 8] = "Error";
11
+ N1ModalViewMode[N1ModalViewMode["AmountInput"] = 3] = "AmountInput";
12
+ N1ModalViewMode[N1ModalViewMode["DepositProgress"] = 2] = "DepositProgress";
13
+ N1ModalViewMode[N1ModalViewMode["AuthLoading"] = 1] = "AuthLoading";
14
+ N1ModalViewMode[N1ModalViewMode["FinalSuccess"] = 4] = "FinalSuccess";
15
+ N1ModalViewMode[N1ModalViewMode["Automatic"] = 99] = "Automatic";
9
16
  })(N1ModalViewMode || (N1ModalViewMode = {}));
10
17
  export var N1SessionMode;
11
18
  (function (N1SessionMode) {
12
19
  N1SessionMode[N1SessionMode["Nord"] = 0] = "Nord";
13
- N1SessionMode[N1SessionMode["NTS"] = 1] = "NTS";
14
20
  })(N1SessionMode || (N1SessionMode = {}));
15
21
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Provider/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,2DAAO,CAAA;IACP,uEAAa,CAAA;IACb,2DAAO,CAAA;IACP,qEAAY,CAAA;IACZ,2DAAO,CAAA;IACP,mEAAW,CAAA;AACb,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,iDAAI,CAAA;IACJ,+CAAG,CAAA;AACL,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB","sourcesContent":["import type { WalletError } from '../errors/types';\nimport { Nord } from '@n1xyz/nord-ts';\n\nexport enum N1ModalViewMode {\n Connect,\n CreateSession,\n Signing,\n CreatingUser,\n Success,\n NoWhitelist,\n}\n\nexport enum N1SessionMode {\n Nord,\n NTS,\n}\n\nexport interface CssColorOverride {\n color: string; // Color to find in CSS (e.g. '#3b82f6')\n replacement: string; // Replacement color (e.g. '#afafaf')\n}\n\nexport interface N1WalletProviderProps {\n children: React.ReactNode;\n providedSessionMode: N1SessionMode;\n appId: string;\n darkMode?: boolean;\n onError?: (error: WalletError) => void;\n faucetUrl?: string;\n nord?: Nord;\n /**\n * Optional array of color overrides: [{color: '#original', replacement: '#new'}]\n */\n colorOverrides?: CssColorOverride[];\n /**\n * If true, skip the final success screen and immediately call onDone\n */\n skipFinalScreen?: boolean;\n}\n\nexport interface Balance {\n mint: string;\n balance: bigint;\n appId: string;\n appType: string;\n}\n\nexport interface N1NordFunctions {\n // Market information functions\n getMarkets: () => Promise<any[]>;\n getOrderbook: (symbol: string) => Promise<any>;\n getTrades: (params: any) => Promise<any>;\n getMarketsStats: () => Promise<any>;\n\n // Trading functions\n placeOrder: (params: {\n sessionId: bigint | string;\n marketId: number;\n side: 'BUY' | 'SELL';\n fillMode: 'GTC' | 'IOC' | 'FOK' | 'POST_ONLY';\n isReduceOnly: boolean;\n size?: number | string;\n price?: number | string;\n quoteSize?: number | string;\n clientOrderId?: bigint | string;\n }) => Promise<bigint | undefined>;\n\n cancelOrder: (params: {\n sessionId: bigint | string;\n orderId: bigint | string;\n }) => Promise<bigint>;\n\n // Account management\n createSession: (params: {\n userPubkey: Uint8Array;\n sessionPubkey: Uint8Array;\n expiryTimestamp?: bigint;\n }) => Promise<bigint>;\n\n revokeSession: (params: { sessionId: bigint | string }) => Promise<void>;\n\n withdraw: (params: {\n sessionId: bigint | string;\n tokenId: number;\n amount: number;\n }) => Promise<void>;\n\n transfer: (params: {\n sessionId: bigint | string;\n fromAccountId: number;\n toAccountId?: number;\n tokenId: number;\n tokenDecimals: number;\n amount: number | string;\n }) => Promise<number | undefined>;\n\n // Blockchain information\n getTimestamp: () => Promise<bigint>;\n getActionNonce: () => Promise<number>;\n\n // Block and action queries\n queryBlock: (query: any) => Promise<any>;\n queryLastNBlocks: () => Promise<any>;\n queryRecentBlocks: (last_n: number) => Promise<any>;\n queryAction: (query: any) => Promise<any>;\n queryRecentActions: (last_n: number) => Promise<any>;\n getActions: (fromActionId: number, toActionId: number) => Promise<any>;\n}\n\nexport interface N1WalletState {\n address: string;\n appId: string | null;\n balances: Balance[];\n chain: string;\n isConnected: boolean;\n ntsInterface: any;\n sessionMode: N1SessionMode | null;\n sessionPubKey: Uint8Array | null;\n setShowLogin: (show: boolean) => void;\n showLogin: boolean;\n signMessageWithSessionKey: ((message: any) => Promise<any>) | null;\n signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;\n userChain: string | null;\n username: string;\n viewMode: N1ModalViewMode;\n walletPubKey: Uint8Array | null;\n throwTestError: () => Promise<void>;\n nord?: Nord;\n faucetUrl?: string;\n nordUser?: any;\n}\n\nexport interface N1InternalWalletState {\n dynamicHandleLogOut: any;\n dynamicWallet: any;\n loading: boolean;\n dynamicSdkHasLoaded: any;\n handleError: (error: WalletError) => void;\n setDynamicSdkHasLoaded: (loaded: any) => void;\n setAddress: (address: string) => void;\n setBalances: (balances: Balance[]) => void;\n setChain: (chain: string) => void;\n setDynamicHandleLogOut: (handler: any) => void;\n setDynamicWallet: (wallet: any) => void;\n setIsConnected: (connected: boolean) => void;\n setLoading: (loading: boolean) => void;\n setNtsInterface: (nts: any) => void;\n setSessionMode: (mode: N1SessionMode | null) => void;\n setSessionPubKey: (key: Uint8Array) => void;\n setShowSidebar: (show: boolean) => void;\n setSignMessageWithSessionKey: React.Dispatch<\n React.SetStateAction<((message: any) => Promise<any>) | null>\n >;\n setSignTransactionWithWalletKey: React.Dispatch<\n React.SetStateAction<((transaction: any) => Promise<any>) | null>\n >;\n setStartClosingLogin: (closing: boolean) => void;\n setUsername: (username: string) => void;\n setUserChain: (chain: string) => void;\n setViewMode: (mode: N1ModalViewMode) => void;\n setWalletPubKey: (key: Uint8Array) => void;\n setNordUser: (user: any) => void;\n showSidebar: boolean;\n startClosingLogin: boolean;\n showDynamicWidget: any;\n setShowDynamicWidget: (show: any) => void;\n darkMode: boolean;\n sessionMode: N1SessionMode | null;\n faucetUrl?: string;\n skipFinalScreen?: boolean;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Provider/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB,2DAAW,CAAA;IACX,uEAAiB,CAAA;IACjB,2DAAW,CAAA;IACX,qEAAgB,CAAA;IAChB,2DAAW,CAAA;IACX,yEAAkB,CAAA;IAClB,yEAAkB,CAAA;IAClB,uDAAS,CAAA;IACT,mEAA0B,CAAA;IAC1B,2EAAyB,CAAA;IACzB,mEAA2B,CAAA;IAC3B,qEAAsB,CAAA;IACtB,gEAAc,CAAA;AAChB,CAAC,EAdW,eAAe,KAAf,eAAe,QAc1B;AAED,MAAM,CAAN,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,iDAAI,CAAA;AACN,CAAC,EAFW,aAAa,KAAb,aAAa,QAExB","sourcesContent":["import type { WalletError } from '../errors/types';\nimport type { Nord } from '@n1xyz/nord-ts';\n\nexport enum N1ModalViewMode {\n Connect = 0,\n CreateSession = 1,\n Signing = 2,\n CreatingUser = 3,\n Success = 4,\n ChainSelection = 6,\n DepositSuccess = 7,\n Error = 8,\n AmountInput = CreatingUser,\n DepositProgress = Signing,\n AuthLoading = CreateSession,\n FinalSuccess = Success,\n Automatic = 99,\n}\n\nexport enum N1SessionMode {\n Nord,\n}\n\nexport interface CssColorOverride {\n color: string; // Color to find in CSS (e.g. '#3b82f6')\n replacement: string; // Replacement color (e.g. '#afafaf')\n}\n\nexport interface N1WalletProviderProps {\n children: React.ReactNode;\n providedSessionMode: N1SessionMode;\n appId: string;\n onError?: (error: WalletError) => void;\n nord?: Nord;\n /**\n * Optional array of color overrides: [{color: '#original', replacement: '#new'}]\n */\n colorOverrides?: CssColorOverride[];\n /**\n * If true, skip the final success screen and immediately call onDone\n */\n skipFinalScreen?: boolean;\n}\n\nexport interface Balance {\n mint: string;\n balance: bigint;\n appId: string;\n appType: string;\n}\n\nexport interface N1NordFunctions {\n // Market information functions\n getMarkets: () => Promise<any[]>;\n getOrderbook: (symbol: string) => Promise<any>;\n getTrades: (params: any) => Promise<any>;\n getMarketsStats: () => Promise<any>;\n\n // Trading functions\n placeOrder: (params: {\n sessionId: bigint | string;\n marketId: number;\n side: 'BUY' | 'SELL';\n fillMode: 'GTC' | 'IOC' | 'FOK' | 'POST_ONLY';\n isReduceOnly: boolean;\n size?: number | string;\n price?: number | string;\n quoteSize?: number | string;\n clientOrderId?: bigint | string;\n }) => Promise<bigint | undefined>;\n\n cancelOrder: (params: {\n sessionId: bigint | string;\n orderId: bigint | string;\n }) => Promise<bigint>;\n\n // Account management\n createSession: (params: {\n userPubkey: Uint8Array;\n sessionPubkey: Uint8Array;\n expiryTimestamp?: bigint;\n }) => Promise<bigint>;\n\n revokeSession: (params: { sessionId: bigint | string }) => Promise<void>;\n\n withdraw: (params: {\n sessionId: bigint | string;\n tokenId: number;\n amount: number;\n }) => Promise<void>;\n\n transfer: (params: {\n sessionId: bigint | string;\n fromAccountId: number;\n toAccountId?: number;\n tokenId: number;\n tokenDecimals: number;\n amount: number | string;\n }) => Promise<number | undefined>;\n\n // Blockchain information\n getTimestamp: () => Promise<bigint>;\n getActionNonce: () => Promise<number>;\n\n // Block and action queries\n queryBlock: (query: any) => Promise<any>;\n queryLastNBlocks: () => Promise<any>;\n queryRecentBlocks: (last_n: number) => Promise<any>;\n queryAction: (query: any) => Promise<any>;\n queryRecentActions: (last_n: number) => Promise<any>;\n getActions: (fromActionId: number, toActionId: number) => Promise<any>;\n}\n\nexport interface N1WalletState {\n address: string;\n appId: string | null;\n balances: Balance[];\n chain: string;\n isConnected: boolean;\n sessionMode: N1SessionMode;\n sessionPubKey: Uint8Array | null;\n setShowLogin: (show: boolean) => void;\n startDepositFlow: () => boolean;\n setViewMode: (mode: N1ModalViewMode) => void;\n showLogin: boolean;\n signMessageWithSessionKey: ((message: any) => Promise<any>) | null;\n signMessageWithWalletKey: ((message: any) => Promise<any>) | null;\n signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;\n userChain: string | null;\n username: string;\n viewMode: N1ModalViewMode;\n walletPubKey: Uint8Array | null;\n throwTestError: () => Promise<void>;\n nord?: Nord;\n nordUser?: any;\n}\n\nexport interface N1InternalWalletState {\n dynamicHandleLogOut: any;\n dynamicWallet: any;\n loading: boolean;\n dynamicSdkHasLoaded: any;\n handleError: (error: WalletError) => void;\n setDynamicSdkHasLoaded: (loaded: any) => void;\n setAddress: (address: string) => void;\n setBalances: (balances: Balance[]) => void;\n setChain: (chain: string) => void;\n setDynamicHandleLogOut: (handler: any) => void;\n setDynamicWallet: (wallet: any) => void;\n setIsConnected: (connected: boolean) => void;\n setLoading: (loading: boolean) => void;\n blockModalReopen: (duration?: number) => void;\n setSessionPubKey: (key: Uint8Array) => void;\n setSignMessageWithSessionKey: React.Dispatch<\n React.SetStateAction<((message: any) => Promise<any>) | null>\n >;\n setSignMessageWithWalletKey: React.Dispatch<\n React.SetStateAction<((message: any) => Promise<any>) | null>\n >;\n setSignTransactionWithWalletKey: React.Dispatch<\n React.SetStateAction<((transaction: any) => Promise<any>) | null>\n >;\n setStartClosingLogin: (closing: boolean) => void;\n setUsername: (username: string) => void;\n setUserChain: (chain: string) => void;\n setViewMode: (mode: N1ModalViewMode) => void;\n setWalletPubKey: (key: Uint8Array) => void;\n setNordUser: (user: any) => void;\n startClosingLogin: boolean;\n showDynamicWidget: any;\n setShowDynamicWidget: (show: any) => void;\n sessionMode: N1SessionMode;\n skipFinalScreen?: boolean;\n depositFlowRequestId: number;\n}\n"]}
@@ -2,4 +2,4 @@ import React from 'react';
2
2
  export declare function N1ConnectButton(_props: {
3
3
  label: string;
4
4
  children?: React.ReactNode;
5
- }): JSX.Element;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -2,14 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import BlockiesSvg from 'blockies-react-svg';
3
3
  import { useEffect, useState } from 'react';
4
4
  import { useN1WalletContext, useN1WalletInternalContext, } from '../Provider/hooks';
5
- import { logger } from '../utils/logger';
6
5
  import { ShadowRootWrapper } from '../Provider/ShadowRootWrapper';
7
6
  import mainCss from '../embedded-main-css';
8
7
  export function N1ConnectButton(_props) {
9
8
  var _a = useN1WalletContext(), isConnected = _a.isConnected, setShowLogin = _a.setShowLogin, address = _a.address;
10
9
  var _b = useState(false), toOpen = _b[0], setToOpen = _b[1];
11
- var _c = useN1WalletInternalContext(), setShowSidebar = _c.setShowSidebar, loading = _c.loading, darkMode = _c.darkMode, showSidebar = _c.showSidebar;
12
- var addressText = isConnected && address.substring(0, 9) + '...' + address.slice(-3);
10
+ var _c = useN1WalletInternalContext(), loading = _c.loading, startClosingLogin = _c.startClosingLogin;
11
+ var addressText = isConnected
12
+ ? "".concat(address.substring(0, 6), "...").concat(address.slice(-4))
13
+ : '';
13
14
  var showLoginFn = function () {
14
15
  setShowLogin(true);
15
16
  };
@@ -19,12 +20,30 @@ export function N1ConnectButton(_props) {
19
20
  setToOpen(false);
20
21
  }
21
22
  }, [loading]);
22
- var buttonClass = "relative overflow-hidden cursor-pointer h-[3.6rem] flex items-center justify-center min-w-24 group hover-slide bg-n1-ww-main-500 text-sm px-16 uppercase tracking-widest font-light";
23
- var buttonBg = "absolute inset-0 bg-n1-ww-main-500";
24
- var injectedCss = "\n @keyframes slide-bw {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(0); }\n }\n .hover-slide {\n position: relative;\n overflow: hidden;\n z-index: 0;\n }\n .hover-slide::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: currentColor;\n transform: translateX(-100%);\n transition: transform 0.3s cubic-bezier(.4,0,.2,1);\n z-index: 1;\n }\n .hover-slide:hover::before {\n transform: translateX(0);\n }\n .hover-slide .text-invert {\n position: relative;\n z-index: 2;\n transition: color 0.3s cubic-bezier(.4,0,.2,1);\n }\n .hover-slide:not(:hover) .text-invert {\n color: inherit;\n }\n .hover-slide:hover .text-invert {\n color: var(--n1-connect-invert-color, #000);\n }\n .n1-wallet-widget:not(.dark) .hover-slide {\n color: #000;\n }\n .n1-wallet-widget.dark .hover-slide {\n color: #fff;\n }\n .n1-wallet-widget:not(.dark) .hover-slide:hover .text-invert {\n --n1-connect-invert-color: #fff;\n }\n .n1-wallet-widget.dark .hover-slide:hover .text-invert {\n --n1-connect-invert-color: #000;\n }\n ";
25
- return (_jsx(ShadowRootWrapper, { injectedCss: mainCss + injectedCss, children: _jsx("div", { className: 'n1-wallet-widget ' + (darkMode ? 'dark' : ''), children: _jsxs("div", { className: "flex", children: [!isConnected && !loading && (_jsxs("div", { className: buttonClass, onClick: showLoginFn, children: [_jsx("div", { className: buttonBg }), _jsx("div", { className: "relative px-3 py-2 flex items-center justify-center", children: _jsx("span", { className: " text-invert", children: "Connect" }) })] })), loading && !isConnected && (_jsxs("div", { className: buttonClass, onClick: function () { return setToOpen(true); }, children: [_jsx("div", { className: buttonBg }), _jsx("div", { className: "relative px-3 py-2 flex items-center justify-center", children: _jsx("span", { className: " text-invert", children: "Connect" }) })] })), isConnected && (_jsx("div", { className: "relative group", children: _jsxs("div", { className: buttonClass, onClick: function () {
26
- logger.debug('ShowSidebar');
27
- setShowSidebar(true);
28
- }, children: [_jsx("div", { className: buttonBg }), _jsxs("div", { className: "relative px-3 py-2 flex items-center", children: [_jsx("div", { className: "h-6 w-6 rounded-full", children: _jsx(BlockiesSvg, { address: address, className: "drop-shadow w-full h-full rounded-full" }) }), _jsx("div", { className: "ml-2 text-invert", children: addressText })] })] }) })), _jsx("div", { className: " bg-n1-ww-main-500" })] }) }) }));
23
+ var buttonClass = 'inline-flex w-full items-center justify-center gap-2 rounded-full border border-n1-ww-border bg-black px-4 py-2 text-xs font-semibold uppercase tracking-wide text-white transition-colors duration-200 hover:bg-white hover:text-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black disabled:pointer-events-none disabled:opacity-60 min-w-[7rem] sm:w-auto';
24
+ var injectedCss = '';
25
+ var renderLabel = function () {
26
+ if (loading && !isConnected)
27
+ return 'Connecting...';
28
+ if (!isConnected)
29
+ return _props.label || 'Connect';
30
+ return addressText;
31
+ };
32
+ var handleClick = function () {
33
+ if (startClosingLogin) {
34
+ console.debug('[N1ConnectButton] click ignored; modal closing');
35
+ return;
36
+ }
37
+ if (loading && !isConnected) {
38
+ setToOpen(true);
39
+ console.debug('[N1ConnectButton] deferring open until loading completes');
40
+ return;
41
+ }
42
+ if (isConnected)
43
+ return;
44
+ console.debug('[N1ConnectButton] opening modal via connect button');
45
+ showLoginFn();
46
+ };
47
+ return (_jsx(ShadowRootWrapper, { injectedCss: mainCss + injectedCss, children: _jsx("div", { className: "n1-wallet-widget dark", children: _jsxs("button", { type: "button", className: buttonClass, onClick: handleClick, "aria-busy": loading && !isConnected, children: [isConnected && (_jsx("span", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-white", children: _jsx(BlockiesSvg, { address: address, className: "h-4 w-4 rounded-full" }) })), _jsx("span", { children: renderLabel() })] }) }) }));
29
48
  }
30
49
  //# sourceMappingURL=N1ConnectButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"N1ConnectButton.js","sourceRoot":"","sources":["../../src/WidgetButton/N1ConnectButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import BlockiesSvg from 'blockies-react-svg';\nimport React, { useEffect, useState } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../Provider/hooks';\nimport { logger } from '../utils/logger';\nimport { ShadowRootWrapper } from '../Provider/ShadowRootWrapper';\nimport mainCss from '../embedded-main-css';\n\nexport function N1ConnectButton(_props: {\n label: string;\n children?: React.ReactNode;\n}) {\n const { isConnected, setShowLogin, address } = useN1WalletContext();\n const [toOpen, setToOpen] = useState(false);\n const { setShowSidebar, loading, darkMode, showSidebar } =\n useN1WalletInternalContext();\n const addressText =\n isConnected && address.substring(0, 9) + '...' + address.slice(-3);\n\n const showLoginFn = () => {\n setShowLogin(true);\n };\n\n useEffect(() => {\n if (!loading && toOpen) {\n showLoginFn();\n setToOpen(false);\n }\n }, [loading]);\n\n const buttonClass = \"relative overflow-hidden cursor-pointer h-[3.6rem] flex items-center justify-center min-w-24 group hover-slide bg-n1-ww-main-500 text-sm px-16 uppercase tracking-widest font-light\"\n const buttonBg = \"absolute inset-0 bg-n1-ww-main-500\"\n\n const injectedCss = `\n @keyframes slide-bw {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(0); }\n }\n .hover-slide {\n position: relative;\n overflow: hidden;\n z-index: 0;\n }\n .hover-slide::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: currentColor;\n transform: translateX(-100%);\n transition: transform 0.3s cubic-bezier(.4,0,.2,1);\n z-index: 1;\n }\n .hover-slide:hover::before {\n transform: translateX(0);\n }\n .hover-slide .text-invert {\n position: relative;\n z-index: 2;\n transition: color 0.3s cubic-bezier(.4,0,.2,1);\n }\n .hover-slide:not(:hover) .text-invert {\n color: inherit;\n }\n .hover-slide:hover .text-invert {\n color: var(--n1-connect-invert-color, #000);\n }\n .n1-wallet-widget:not(.dark) .hover-slide {\n color: #000;\n }\n .n1-wallet-widget.dark .hover-slide {\n color: #fff;\n }\n .n1-wallet-widget:not(.dark) .hover-slide:hover .text-invert {\n --n1-connect-invert-color: #fff;\n }\n .n1-wallet-widget.dark .hover-slide:hover .text-invert {\n --n1-connect-invert-color: #000;\n }\n `;\n\n return ( \n <ShadowRootWrapper injectedCss={mainCss + injectedCss}>\n <div className={'n1-wallet-widget '+(darkMode ? 'dark' : '')}>\n <div className=\"flex\">\n {!isConnected && !loading && (\n <div\n className={buttonClass}\n onClick={showLoginFn}\n >\n <div className={buttonBg} />\n <div className=\"relative px-3 py-2 flex items-center justify-center\">\n <span className=\" text-invert\">Connect</span>\n </div>\n </div>\n )}\n {loading && !isConnected && (\n <div\n className={buttonClass}\n onClick={() => setToOpen(true)}\n >\n <div className={buttonBg} />\n <div className=\"relative px-3 py-2 flex items-center justify-center\">\n <span className=\" text-invert\">Connect</span>\n </div>\n </div>\n )}\n {isConnected && (\n <div className=\"relative group\">\n <div\n className={buttonClass}\n onClick={() => {\n logger.debug('ShowSidebar');\n setShowSidebar(true);\n }}\n >\n <div className={buttonBg} />\n <div className=\"relative px-3 py-2 flex items-center\">\n <div className=\"h-6 w-6 rounded-full\">\n <BlockiesSvg\n address={address}\n className=\"drop-shadow w-full h-full rounded-full\"\n />\n </div>\n <div className=\"ml-2 text-invert\">{addressText}</div>\n </div>\n </div>\n </div>\n )}\n <div className=\" bg-n1-ww-main-500\"></div>\n </div>\n </div>\n </ShadowRootWrapper>\n );\n}\n"]}
1
+ {"version":3,"file":"N1ConnectButton.js","sourceRoot":"","sources":["../../src/WidgetButton/N1ConnectButton.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAE3C,MAAM,UAAU,eAAe,CAAC,MAG/B;IACO,IAAA,KAAyC,kBAAkB,EAAE,EAA3D,WAAW,iBAAA,EAAE,YAAY,kBAAA,EAAE,OAAO,aAAyB,CAAC;IAC9D,IAAA,KAAsB,QAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,QAAA,EAAE,SAAS,QAAmB,CAAC;IACtC,IAAA,KAAiC,0BAA0B,EAAE,EAA3D,OAAO,aAAA,EAAE,iBAAiB,uBAAiC,CAAC;IACpE,IAAM,WAAW,GAAG,WAAW;QAC7B,CAAC,CAAC,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE;QACrD,CAAC,CAAC,EAAE,CAAC;IAEP,IAAM,WAAW,GAAG;QAClB,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,SAAS,CAAC;QACR,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YACvB,WAAW,EAAE,CAAC;YACd,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAM,WAAW,GACf,0ZAA0Z,CAAC;IAE7Z,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,IAAM,WAAW,GAAG;QAClB,IAAI,OAAO,IAAI,CAAC,WAAW;YAAE,OAAO,eAAe,CAAC;QACpD,IAAI,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;QACnD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG;QAClB,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,WAAW;YAAE,OAAO;QAExB,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAAC,WAAW,EAAE,OAAO,GAAG,WAAW,YACnD,cAAK,SAAS,EAAC,uBAAuB,YACpC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,WAAW,eACT,OAAO,IAAI,CAAC,WAAW,aAEjC,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,gEAAgE,YAC9E,KAAC,WAAW,IACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,sBAAsB,GAChC,GACG,CACR,EACD,yBAAO,WAAW,EAAE,GAAQ,IACrB,GACL,GACY,CACrB,CAAC;AACJ,CAAC","sourcesContent":["import BlockiesSvg from 'blockies-react-svg';\nimport React, { useEffect, useState } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../Provider/hooks';\nimport { ShadowRootWrapper } from '../Provider/ShadowRootWrapper';\nimport mainCss from '../embedded-main-css';\n\nexport function N1ConnectButton(_props: {\n label: string;\n children?: React.ReactNode;\n}) {\n const { isConnected, setShowLogin, address } = useN1WalletContext();\n const [toOpen, setToOpen] = useState(false);\n const { loading, startClosingLogin } = useN1WalletInternalContext();\n const addressText = isConnected\n ? `${address.substring(0, 6)}...${address.slice(-4)}`\n : '';\n\n const showLoginFn = () => {\n setShowLogin(true);\n };\n\n useEffect(() => {\n if (!loading && toOpen) {\n showLoginFn();\n setToOpen(false);\n }\n }, [loading]);\n\n const buttonClass =\n 'inline-flex w-full items-center justify-center gap-2 rounded-full border border-n1-ww-border bg-black px-4 py-2 text-xs font-semibold uppercase tracking-wide text-white transition-colors duration-200 hover:bg-white hover:text-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black disabled:pointer-events-none disabled:opacity-60 min-w-[7rem] sm:w-auto';\n\n const injectedCss = '';\n\n const renderLabel = () => {\n if (loading && !isConnected) return 'Connecting...';\n if (!isConnected) return _props.label || 'Connect';\n return addressText;\n };\n\n const handleClick = () => {\n if (startClosingLogin) {\n console.debug('[N1ConnectButton] click ignored; modal closing');\n return;\n }\n\n if (loading && !isConnected) {\n setToOpen(true);\n console.debug('[N1ConnectButton] deferring open until loading completes');\n return;\n }\n\n if (isConnected) return;\n\n console.debug('[N1ConnectButton] opening modal via connect button');\n showLoginFn();\n };\n\n return (\n <ShadowRootWrapper injectedCss={mainCss + injectedCss}>\n <div className=\"n1-wallet-widget dark\">\n <button\n type=\"button\"\n className={buttonClass}\n onClick={handleClick}\n aria-busy={loading && !isConnected}\n >\n {isConnected && (\n <span className=\"flex h-5 w-5 items-center justify-center rounded-full bg-white\">\n <BlockiesSvg\n address={address}\n className=\"h-4 w-4 rounded-full\"\n />\n </span>\n )}\n <span>{renderLabel()}</span>\n </button>\n </div>\n </ShadowRootWrapper>\n );\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface N1LoaderAnimationProps extends HTMLAttributes<HTMLDivElement> {
3
+ size?: number;
4
+ loop?: boolean;
5
+ autoplay?: boolean;
6
+ speed?: number;
7
+ }
8
+ /**
9
+ * N1 loader rendered via the original Lottie JSON animation.
10
+ */
11
+ export declare function N1LoaderAnimation({ size, loop, autoplay, speed, className, style, ...rest }: N1LoaderAnimationProps): import("react/jsx-runtime").JSX.Element;