@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"06-AuthLoadingScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/06-AuthLoadingScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,UAAU,iBAAiB;IACzB,IAAA,KAA4B,QAAQ,CAAU,KAAK,CAAC,EAAnD,SAAS,QAAA,EAAE,YAAY,QAA4B,CAAC;IAC3D,IAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,2DAA2D;IACrD,IAAA,KAKF,iBAAiB,EAAE,EAJrB,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,iBAAiB,uBACI,CAAC;IAExB,SAAS,CAAC;QACR,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAM,WAAW,GAAG;QAClB,iCAAiC;QACjC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;QACjC,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EACN,iBAAiB,IAAI,+CAA+C;QACtE,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,IAAM,aAAa,GACjB,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,KAAK,OAAO;YACtB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACtC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,GAAI,CAC5D,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mDAAmD,aAChE,cAAI,SAAS,EAAC,kCAAkC,aAC7C,aAAa,KAAK,SAAS,IAAI,2BAA2B,EAC1D,aAAa,KAAK,OAAO,IAAI,uBAAuB,IAClD,EACL,aAAG,SAAS,EAAC,0BAA0B,aACpC,aAAa,KAAK,SAAS,IAAI,sCAAsC,EACrE,aAAa,KAAK,OAAO;4BACxB,6DAA6D,IAC7D,EACH,aAAa,KAAK,OAAO,IAAI,gBAAgB,IAAI,CAChD,YAAG,SAAS,EAAC,sBAAsB,YAAE,gBAAgB,GAAK,CAC3D,EACA,aAAa,KAAK,OAAO,IAAI,CAC5B,cAAK,SAAS,EAAC,aAAa,YAC1B,iBACE,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EACvC,SAAS,EAAE,0RAIV,EACD,KAAK,EAAE;4BACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;yBAClD,0BAGM,GACL,CACP,IACG,CACP,GACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDepositContext } from '../context/DepositContext';\nimport { WaitingMessage } from '../components/WaitingMessage';\n\nexport function AuthLoadingScreen() {\n const [isHovered, setIsHovered] = useState<boolean>(false);\n const authInitiatedRef = useRef(false);\n \n // Get auth-related state and functions from DepositContext\n const { \n performAuth,\n authStatus, \n authErrorMessage, \n authStatusMessage\n } = useDepositContext();\n\n useEffect(() => {\n if (!authInitiatedRef.current) {\n authInitiatedRef.current = true;\n performAuth();\n }\n }, [performAuth]);\n\n const handleRetry = () => {\n // Reset and retry authentication\n authInitiatedRef.current = false;\n performAuth();\n };\n\n const loadingMessage = {\n visible: true,\n title: 'Authenticating',\n subtitle:\n authStatusMessage || 'Please wait while we create your Nord account',\n isTyping: false,\n };\n\n const statusVariant =\n authStatus === 'success'\n ? 'success'\n : authStatus === 'error'\n ? 'error'\n : undefined;\n\n return (\n <div className=\"overflow-hidden relative\">\n {authStatus === 'loading' ? (\n <WaitingMessage loaderSize={52} message={loadingMessage} />\n ) : (\n <div className=\"flex flex-col items-center text-center space-y-2 \">\n <h3 className=\"text-xl text-white font-semibold\">\n {statusVariant === 'success' && 'Authentication Successful'}\n {statusVariant === 'error' && 'Authentication Failed'}\n </h3>\n <p className=\"text-sm text-neutral-400\">\n {statusVariant === 'success' && 'You have been logged in successfully'}\n {statusVariant === 'error' &&\n 'There was an error during authentication. Please try again.'}\n </p>\n {statusVariant === 'error' && authErrorMessage && (\n <p className=\"text-xs text-red-400\">{authErrorMessage}</p>\n )}\n {statusVariant === 'error' && (\n <div className=\"pt-4 w-full\">\n <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n w-full h-8 rounded border bg-transparent flex items-center justify-center font-medium text-sm\n transition-all duration-200 transform\n border-n1-ww-main text-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n Try Again\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -0,0 +1,5 @@
1
+ interface FinalSuccessScreenProps {
2
+ onDone?: () => void;
3
+ }
4
+ export declare function FinalSuccessScreen({ onDone }: FinalSuccessScreenProps): import("react/jsx-runtime").JSX.Element | null;
5
+ export {};
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { useN1WalletContext, useN1WalletInternalContext, } from '../../../Provider/hooks';
4
+ import { ANIMATION_EASE } from '../constants';
5
+ export function FinalSuccessScreen(_a) {
6
+ var onDone = _a.onDone;
7
+ var _b = useState(false), isHovered = _b[0], setIsHovered = _b[1];
8
+ var address = useN1WalletContext().address;
9
+ var _c = useN1WalletInternalContext(), setIsConnected = _c.setIsConnected, skipFinalScreen = _c.skipFinalScreen;
10
+ var hasCalledOnDone = useRef(false);
11
+ useEffect(function () {
12
+ setIsConnected(true);
13
+ }, [setIsConnected]);
14
+ useEffect(function () {
15
+ if (skipFinalScreen && onDone && !hasCalledOnDone.current) {
16
+ hasCalledOnDone.current = true;
17
+ onDone();
18
+ }
19
+ }, [skipFinalScreen, onDone]);
20
+ if (skipFinalScreen) {
21
+ return null;
22
+ }
23
+ var handleDone = function () {
24
+ if (onDone) {
25
+ onDone();
26
+ }
27
+ };
28
+ var getTitle = function () {
29
+ return 'Authentication Successful!';
30
+ };
31
+ var getMessageTop = function () { return 'Thanks for testing 01!'; };
32
+ var getMessageBottom = function () {
33
+ return 'For any issues or feedback during this private testnet, message us on X @01_exchange';
34
+ };
35
+ return (_jsx("div", { className: "overflow-hidden relative", children: _jsxs("div", { className: "space-y-8", children: [_jsxs("div", { className: "flex flex-col items-center justify-center pt-4", children: [_jsx("div", { className: "mb-6", children: _jsx("div", { className: "w-20 h-20 rounded-full bg-green-900/30 flex items-center justify-center", children: _jsx("svg", { className: "w-10 h-10 text-green-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M5 13l4 4L19 7" }) }) }) }), _jsx("h2", { className: "text-2xl text-white font-semibold mb-2 text-center", children: getTitle() }), _jsx("p", { className: "text-sm text-neutral-300 text-center", children: getMessageTop() }), _jsx("p", { className: "text-sm text-neutral-300 text-center", children: getMessageBottom() }), address && (_jsxs("p", { className: "text-sm text-neutral-400 text-center mt-2", children: ["Wallet: ", address.substring(0, 6), "...", address.substring(address.length - 4)] }))] }), _jsx("button", { onClick: handleDone, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n "), style: {
36
+ transform: isHovered ? 'scale(0.99)' : 'scale(1)',
37
+ }, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-300 group-hover:text-white\n "), children: "Open App" }) })] }) }));
38
+ }
39
+ //# sourceMappingURL=07-FinalSuccessScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"07-FinalSuccessScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/07-FinalSuccessScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { ANIMATION_EASE } from '../constants';\n\ninterface FinalSuccessScreenProps {\n onDone?: () => void;\n}\n\nexport function FinalSuccessScreen({ onDone }: FinalSuccessScreenProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { address } = useN1WalletContext();\n const { setIsConnected, skipFinalScreen } = useN1WalletInternalContext();\n const hasCalledOnDone = useRef(false);\n\n useEffect(() => {\n setIsConnected(true);\n }, [setIsConnected]);\n\n useEffect(() => {\n if (skipFinalScreen && onDone && !hasCalledOnDone.current) {\n hasCalledOnDone.current = true;\n onDone();\n }\n }, [skipFinalScreen, onDone]);\n\n if (skipFinalScreen) {\n return null;\n }\n\n const handleDone = () => {\n if (onDone) {\n onDone();\n }\n };\n\n const getTitle = () => {\n return 'Authentication Successful!';\n };\n\n const getMessageTop = () => 'Thanks for testing 01!';\n\n const getMessageBottom = () =>\n 'For any issues or feedback during this private testnet, message us on X @01_exchange';\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"space-y-8\">\n <div className=\"flex flex-col items-center justify-center pt-4\">\n <div className=\"mb-6\">\n {/* Success icon/animation */}\n <div className=\"w-20 h-20 rounded-full bg-green-900/30 flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-green-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n </div>\n </div>\n\n <h2 className=\"text-2xl text-white font-semibold mb-2 text-center\">\n {getTitle()}\n </h2>\n\n <p className=\"text-sm text-neutral-300 text-center\">\n {getMessageTop()}\n </p>\n\n <p className=\"text-sm text-neutral-300 text-center\">\n {getMessageBottom()}\n </p>\n\n {/* Display wallet address if available */}\n {address && (\n <p className=\"text-sm text-neutral-400 text-center mt-2\">\n Wallet: {address.substring(0, 6)}...\n {address.substring(address.length - 4)}\n </p>\n )}\n </div>\n\n <button\n onClick={handleDone}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-300 group-hover:text-white\n `}\n >\n Open App\n </span>\n </button>\n </div>\n </div>\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function ErrorScreen(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { useN1WalletContext } from '../../../Provider/hooks';
4
+ import { ANIMATION_EASE } from '../constants';
5
+ import { useFlowStateContext } from '../context/FlowContext';
6
+ import { isNordConfigured } from '../utils/nordUtils';
7
+ export function ErrorScreen() {
8
+ var _a = useFlowStateContext(), context = _a.context, transition = _a.transition;
9
+ var _b = useState(null), isHovered = _b[0], setIsHovered = _b[1];
10
+ var nord = useN1WalletContext().nord;
11
+ var _c = useState(false), isNordError = _c[0], setIsNordError = _c[1];
12
+ var error = context.error;
13
+ // Check if the error is related to Nord
14
+ useEffect(function () {
15
+ if (error &&
16
+ error.message &&
17
+ (error.message.includes('Nord') ||
18
+ error.message.includes('nord') ||
19
+ (error.name && error.name.includes('Nord')))) {
20
+ setIsNordError(true);
21
+ }
22
+ else {
23
+ setIsNordError(false);
24
+ }
25
+ }, [error]);
26
+ // Get a user-friendly error message
27
+ var getErrorMessage = function () {
28
+ if (!error)
29
+ return 'An unexpected error occurred';
30
+ // Check for specific Nord-related errors
31
+ if (isNordError) {
32
+ if (error.message.includes('connection') ||
33
+ error.message.includes('network')) {
34
+ return 'Failed to connect to Nord. Please check your network connection and try again.';
35
+ }
36
+ if (error.message.includes('authentication') ||
37
+ error.message.includes('auth')) {
38
+ return 'Authentication with Nord failed. Please try again.';
39
+ }
40
+ if (error.message.includes('deposit') ||
41
+ error.message.includes('transaction')) {
42
+ return 'Failed to process your deposit. Please try again.';
43
+ }
44
+ return "Nord error: ".concat(error.message);
45
+ }
46
+ // Generic wallet errors
47
+ if (error.message.includes('wallet') || error.message.includes('Wallet')) {
48
+ return 'There was an issue with your wallet connection. Please try again.';
49
+ }
50
+ // Default error message
51
+ return error.message;
52
+ };
53
+ var errorMessage = getErrorMessage();
54
+ // Get a suggestion based on the error
55
+ var getSuggestion = function () {
56
+ if (isNordError && nord && !isNordConfigured(nord)) {
57
+ return 'Nord is not properly configured. Please check your settings.';
58
+ }
59
+ if (isNordError) {
60
+ return 'You can try again or contact support if the issue persists.';
61
+ }
62
+ return 'Please try again or try a different wallet.';
63
+ };
64
+ return (_jsx("div", { className: "overflow-hidden relative", children: _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex flex-col items-center justify-center py-4", children: [_jsx("div", { className: "mb-6", children: _jsx("div", { className: "w-20 h-20 rounded-full bg-red-900/30 flex items-center justify-center", children: _jsx("svg", { className: "w-10 h-10 text-red-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }) }) }), _jsx("h2", { className: "text-xl text-white font-semibold mb-2 text-center", children: isNordError ? 'Nord Error' : 'Something went wrong' }), _jsx("p", { className: "text-sm text-neutral-400 text-center mb-2 max-w-xs", children: errorMessage }), _jsx("p", { className: "text-xs text-neutral-500 text-center mb-6 max-w-xs", children: getSuggestion() })] }), _jsx("div", { className: "space-y-3", children: _jsx("button", { onClick: function () { }, onMouseEnter: function () { return setIsHovered('cancel'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 border-n1-ww-border bg-neutral-900 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer hover:bg-neutral-950\n "), style: {
65
+ transform: isHovered === 'cancel' ? 'scale(0.99)' : 'scale(1)',
66
+ }, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-400 group-hover:text-n1-ww-gray-300\n "), children: "Cancel" }) }) })] }) }));
67
+ }
68
+ //# sourceMappingURL=08-ErrorScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"08-ErrorScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/08-ErrorScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { ANIMATION_EASE } from '../constants';\nimport { useFlowStateContext } from '../context/FlowContext';\nimport { isNordConfigured } from '../utils/nordUtils';\n\nexport function ErrorScreen() {\n const { context, transition } = useFlowStateContext();\n const [isHovered, setIsHovered] = useState<'retry' | 'cancel' | null>(null);\n const { nord } = useN1WalletContext();\n const [isNordError, setIsNordError] = useState(false);\n const error = context.error;\n\n // Check if the error is related to Nord\n useEffect(() => {\n if (\n error &&\n error.message &&\n (error.message.includes('Nord') ||\n error.message.includes('nord') ||\n (error.name && error.name.includes('Nord')))\n ) {\n setIsNordError(true);\n } else {\n setIsNordError(false);\n }\n }, [error]);\n\n // Get a user-friendly error message\n const getErrorMessage = () => {\n if (!error) return 'An unexpected error occurred';\n\n // Check for specific Nord-related errors\n if (isNordError) {\n if (\n error.message.includes('connection') ||\n error.message.includes('network')\n ) {\n return 'Failed to connect to Nord. Please check your network connection and try again.';\n }\n\n if (\n error.message.includes('authentication') ||\n error.message.includes('auth')\n ) {\n return 'Authentication with Nord failed. Please try again.';\n }\n\n if (\n error.message.includes('deposit') ||\n error.message.includes('transaction')\n ) {\n return 'Failed to process your deposit. Please try again.';\n }\n\n return `Nord error: ${error.message}`;\n }\n\n // Generic wallet errors\n if (error.message.includes('wallet') || error.message.includes('Wallet')) {\n return 'There was an issue with your wallet connection. Please try again.';\n }\n\n // Default error message\n return error.message;\n };\n\n const errorMessage = getErrorMessage();\n\n // Get a suggestion based on the error\n const getSuggestion = () => {\n if (isNordError && nord && !isNordConfigured(nord)) {\n return 'Nord is not properly configured. Please check your settings.';\n }\n\n if (isNordError) {\n return 'You can try again or contact support if the issue persists.';\n }\n\n return 'Please try again or try a different wallet.';\n };\n\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"space-y-6\">\n <div className=\"flex flex-col items-center justify-center py-4\">\n <div className=\"mb-6\">\n {/* Error icon */}\n <div className=\"w-20 h-20 rounded-full bg-red-900/30 flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-red-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n </div>\n\n <h2 className=\"text-xl text-white font-semibold mb-2 text-center\">\n {isNordError ? 'Nord Error' : 'Something went wrong'}\n </h2>\n\n <p className=\"text-sm text-neutral-400 text-center mb-2 max-w-xs\">\n {errorMessage}\n </p>\n\n <p className=\"text-xs text-neutral-500 text-center mb-6 max-w-xs\">\n {getSuggestion()}\n </p>\n </div>\n\n <div className=\"space-y-3\">\n {/* <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered('retry')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n `}\n style={{\n transform: isHovered === 'retry' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-300 group-hover:text-white\n `}\n >\n Try Again\n </span>\n </button> */}\n\n <button\n onClick={() => { }}\n onMouseEnter={() => setIsHovered('cancel')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 border-n1-ww-border bg-neutral-900 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer hover:bg-neutral-950\n `}\n style={{\n transform: isHovered === 'cancel' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-400 group-hover:text-n1-ww-gray-300\n `}\n >\n Cancel\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -1,10 +1,6 @@
1
- export * from './00-IdleScreen';
2
1
  export * from './01-ConnectWalletScreen';
3
- export * from './02-EvmWalletAuthScreen';
4
- export * from './03-ChainSelectionScreen';
5
- export * from './04-AmountInputScreen';
6
- export * from './05-DepositProgressScreen';
7
- export * from './06-DepositSuccessScreen';
8
- export * from './07-AuthLoadingScreen';
9
- export * from './08-FinalSuccessScreen';
10
- export * from './09-ErrorScreen';
2
+ export * from './02-ChainSelectionScreen';
3
+ export * from './03-AmountInputScreen';
4
+ export * from './04-DepositProgressScreen';
5
+ export * from './05-DepositSuccessScreen';
6
+ export * from './06-AuthLoadingScreen';
@@ -1,11 +1,7 @@
1
- export * from './00-IdleScreen';
2
1
  export * from './01-ConnectWalletScreen';
3
- export * from './02-EvmWalletAuthScreen';
4
- export * from './03-ChainSelectionScreen';
5
- export * from './04-AmountInputScreen';
6
- export * from './05-DepositProgressScreen';
7
- export * from './06-DepositSuccessScreen';
8
- export * from './07-AuthLoadingScreen';
9
- export * from './08-FinalSuccessScreen';
10
- export * from './09-ErrorScreen';
2
+ export * from './02-ChainSelectionScreen';
3
+ export * from './03-AmountInputScreen';
4
+ export * from './04-DepositProgressScreen';
5
+ export * from './05-DepositSuccessScreen';
6
+ export * from './06-AuthLoadingScreen';
11
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './00-IdleScreen';\nexport * from './01-ConnectWalletScreen';\nexport * from './02-EvmWalletAuthScreen';\nexport * from './03-ChainSelectionScreen';\nexport * from './04-AmountInputScreen';\nexport * from './05-DepositProgressScreen';\nexport * from './06-DepositSuccessScreen';\nexport * from './07-AuthLoadingScreen';\nexport * from './08-FinalSuccessScreen';\nexport * from './09-ErrorScreen';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './01-ConnectWalletScreen';\nexport * from './02-ChainSelectionScreen';\nexport * from './03-AmountInputScreen';\nexport * from './04-DepositProgressScreen';\nexport * from './05-DepositSuccessScreen';\nexport * from './06-AuthLoadingScreen';\n"]}
@@ -6,9 +6,7 @@ import React from 'react';
6
6
  * Enum representing all possible states in the wallet connection flow
7
7
  */
8
8
  export declare enum FlowState {
9
- IDLE = "IDLE",
10
9
  CONNECTING_WALLET = "CONNECTING_WALLET",
11
- ETH_TO_SOL_AUTH = "ETH_TO_SOL_AUTH",
12
10
  CHAIN_SELECTION = "CHAIN_SELECTION",
13
11
  AMOUNT_INPUT = "AMOUNT_INPUT",
14
12
  DEPOSIT_PROGRESS = "DEPOSIT_PROGRESS",
@@ -21,15 +19,27 @@ export declare enum FlowState {
21
19
  * Interface representing the flow context, containing all data necessary
22
20
  * for the wallet connection flow
23
21
  */
22
+ export interface StoredDepositRecord {
23
+ transactionId: string;
24
+ amount: string;
25
+ tokenSymbol: string;
26
+ chainId: string;
27
+ chainName: string;
28
+ chainNetwork: string | null;
29
+ timestamp: number;
30
+ }
24
31
  export interface FlowContext {
25
- walletType: 'solana' | 'ethereum' | null;
26
32
  hasNordAccount: boolean;
27
33
  hasActiveSession: boolean;
28
34
  selectedChain: string | null;
35
+ selectedChainId: string | null;
36
+ selectedChainNetwork: string | null;
29
37
  amount: string;
30
38
  transactionId: string | null;
31
39
  error: Error | null;
32
40
  depositError?: string;
41
+ isDepositOnlyFlow: boolean;
42
+ lastDeposit: StoredDepositRecord | null;
33
43
  }
34
44
  /**
35
45
  * Interface for state transitions in the flow
@@ -6,9 +6,7 @@
6
6
  */
7
7
  export var FlowState;
8
8
  (function (FlowState) {
9
- FlowState["IDLE"] = "IDLE";
10
9
  FlowState["CONNECTING_WALLET"] = "CONNECTING_WALLET";
11
- FlowState["ETH_TO_SOL_AUTH"] = "ETH_TO_SOL_AUTH";
12
10
  FlowState["CHAIN_SELECTION"] = "CHAIN_SELECTION";
13
11
  FlowState["AMOUNT_INPUT"] = "AMOUNT_INPUT";
14
12
  FlowState["DEPOSIT_PROGRESS"] = "DEPOSIT_PROGRESS";
@@ -21,13 +19,16 @@ export var FlowState;
21
19
  * Initial flow context with default values
22
20
  */
23
21
  export var initialFlowContext = {
24
- walletType: null,
25
22
  hasNordAccount: false,
26
23
  hasActiveSession: false,
27
24
  selectedChain: null,
25
+ selectedChainId: null,
26
+ selectedChainNetwork: null,
28
27
  amount: '',
29
28
  transactionId: null,
30
29
  error: null,
31
30
  depositError: undefined,
31
+ isDepositOnlyFlow: false,
32
+ lastDeposit: null,
32
33
  };
33
34
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;AACjB,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AA4BD;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAgB;IAC7C,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,SAAS;CACxB,CAAC","sourcesContent":["import React from 'react';\n\n/**\n * Types for the wallet connection flow state machine\n */\n\n/**\n * Enum representing all possible states in the wallet connection flow\n */\nexport enum FlowState {\n IDLE = 'IDLE',\n CONNECTING_WALLET = 'CONNECTING_WALLET',\n ETH_TO_SOL_AUTH = 'ETH_TO_SOL_AUTH',\n CHAIN_SELECTION = 'CHAIN_SELECTION',\n AMOUNT_INPUT = 'AMOUNT_INPUT',\n DEPOSIT_PROGRESS = 'DEPOSIT_PROGRESS',\n DEPOSIT_SUCCESS = 'DEPOSIT_SUCCESS',\n AUTH_LOADING = 'AUTH_LOADING',\n FINAL_SUCCESS = 'FINAL_SUCCESS',\n ERROR = 'ERROR',\n}\n\n\n\n/**\n * Interface representing the flow context, containing all data necessary\n * for the wallet connection flow\n */\nexport interface FlowContext {\n walletType: 'solana' | 'ethereum' | null;\n hasNordAccount: boolean;\n hasActiveSession: boolean;\n selectedChain: string | null;\n amount: string;\n transactionId: string | null;\n error: Error | null;\n depositError?: string;\n}\n\n/**\n * Interface for state transitions in the flow\n */\nexport interface StateTransition {\n from: FlowState | FlowState[];\n to: FlowState;\n condition?: (context: FlowContext) => boolean;\n}\n\n/**\n * Initial flow context with default values\n */\nexport const initialFlowContext: FlowContext = {\n walletType: null,\n hasNordAccount: false,\n hasActiveSession: false,\n selectedChain: null,\n amount: '',\n transactionId: null,\n error: null,\n depositError: undefined,\n};\n\nexport interface TableValues {\n amount?: { text: string; visible: boolean; typing: boolean };\n tx: { text: string; visible: boolean; typing: boolean };\n from: { text: string; visible: boolean; typing: boolean };\n to: { text: string; visible: boolean; typing: boolean };\n network: { text: string; visible: boolean; typing: boolean };\n status: { text: string; visible: boolean; typing: boolean };\n}\n\nexport interface WaitingMessageState {\n title: string;\n subtitle: string;\n visible: boolean;\n isTyping: boolean;\n}\n\n/**\n * Interface for a blockchain network\n */\nexport interface Chain {\n id: string;\n name: string;\n logo: string | React.ReactNode;\n disabled?: boolean;\n network?: string;\n description?: string;\n}\n\nexport interface App {\n name: string;\n color: string;\n progress: number;\n}\n\nexport type ButtonKey = 'deposit' | 'continue' | 'openApp';\n\nexport interface ButtonState {\n text: string;\n isTyping: boolean;\n showCursor: boolean;\n}\n\nexport type ButtonStates = Record<ButtonKey, ButtonState>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;AACjB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAyCD;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAgB;IAC7C,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,SAAS;IACvB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,IAAI;CAClB,CAAC","sourcesContent":["import React from 'react';\n\n/**\n * Types for the wallet connection flow state machine\n */\n\n/**\n * Enum representing all possible states in the wallet connection flow\n */\nexport enum FlowState {\n CONNECTING_WALLET = 'CONNECTING_WALLET',\n CHAIN_SELECTION = 'CHAIN_SELECTION',\n AMOUNT_INPUT = 'AMOUNT_INPUT',\n DEPOSIT_PROGRESS = 'DEPOSIT_PROGRESS',\n DEPOSIT_SUCCESS = 'DEPOSIT_SUCCESS',\n AUTH_LOADING = 'AUTH_LOADING',\n FINAL_SUCCESS = 'FINAL_SUCCESS',\n ERROR = 'ERROR',\n}\n\n\n\n/**\n * Interface representing the flow context, containing all data necessary\n * for the wallet connection flow\n */\nexport interface StoredDepositRecord {\n transactionId: string;\n amount: string;\n tokenSymbol: string;\n chainId: string;\n chainName: string;\n chainNetwork: string | null;\n timestamp: number;\n}\n\nexport interface FlowContext {\n hasNordAccount: boolean;\n hasActiveSession: boolean;\n selectedChain: string | null;\n selectedChainId: string | null;\n selectedChainNetwork: string | null;\n amount: string;\n transactionId: string | null;\n error: Error | null;\n depositError?: string;\n isDepositOnlyFlow: boolean;\n lastDeposit: StoredDepositRecord | null;\n}\n\n/**\n * Interface for state transitions in the flow\n */\nexport interface StateTransition {\n from: FlowState | FlowState[];\n to: FlowState;\n condition?: (context: FlowContext) => boolean;\n}\n\n/**\n * Initial flow context with default values\n */\nexport const initialFlowContext: FlowContext = {\n hasNordAccount: false,\n hasActiveSession: false,\n selectedChain: null,\n selectedChainId: null,\n selectedChainNetwork: null,\n amount: '',\n transactionId: null,\n error: null,\n depositError: undefined,\n isDepositOnlyFlow: false,\n lastDeposit: null,\n};\n\nexport interface TableValues {\n amount?: { text: string; visible: boolean; typing: boolean };\n tx: { text: string; visible: boolean; typing: boolean };\n from: { text: string; visible: boolean; typing: boolean };\n to: { text: string; visible: boolean; typing: boolean };\n network: { text: string; visible: boolean; typing: boolean };\n status: { text: string; visible: boolean; typing: boolean };\n}\n\nexport interface WaitingMessageState {\n title: string;\n subtitle: string;\n visible: boolean;\n isTyping: boolean;\n}\n\n/**\n * Interface for a blockchain network\n */\nexport interface Chain {\n id: string;\n name: string;\n logo: string | React.ReactNode;\n disabled?: boolean;\n network?: string;\n description?: string;\n}\n\nexport interface App {\n name: string;\n color: string;\n progress: number;\n}\n\nexport type ButtonKey = 'deposit' | 'continue' | 'openApp';\n\nexport interface ButtonState {\n text: string;\n isTyping: boolean;\n showCursor: boolean;\n}\n\nexport type ButtonStates = Record<ButtonKey, ButtonState>;\n"]}
@@ -0,0 +1,4 @@
1
+ import { StoredDepositRecord } from '../types';
2
+ export declare function saveLastDepositRecord(address: string | null | undefined, record: StoredDepositRecord): void;
3
+ export declare function readLastDepositRecord(address: string | null | undefined): StoredDepositRecord | null;
4
+ export declare function clearLastDepositRecord(address: string | null | undefined): void;
@@ -0,0 +1,48 @@
1
+ var LAST_DEPOSIT_KEY_PREFIX = 'n1_last_deposit_';
2
+ var getStorage = function () {
3
+ return typeof window === 'undefined' ? null : window.localStorage;
4
+ };
5
+ var getKey = function (address) {
6
+ return "".concat(LAST_DEPOSIT_KEY_PREFIX).concat(address.toLowerCase());
7
+ };
8
+ export function saveLastDepositRecord(address, record) {
9
+ if (!address || !record || !record.transactionId) {
10
+ return;
11
+ }
12
+ var storage = getStorage();
13
+ if (!storage) {
14
+ return;
15
+ }
16
+ storage.setItem(getKey(address), JSON.stringify(record));
17
+ }
18
+ export function readLastDepositRecord(address) {
19
+ if (!address) {
20
+ return null;
21
+ }
22
+ var storage = getStorage();
23
+ if (!storage) {
24
+ return null;
25
+ }
26
+ try {
27
+ var raw = storage.getItem(getKey(address));
28
+ if (!raw) {
29
+ return null;
30
+ }
31
+ return JSON.parse(raw);
32
+ }
33
+ catch (_a) {
34
+ storage.removeItem(getKey(address));
35
+ return null;
36
+ }
37
+ }
38
+ export function clearLastDepositRecord(address) {
39
+ if (!address) {
40
+ return;
41
+ }
42
+ var storage = getStorage();
43
+ if (!storage) {
44
+ return;
45
+ }
46
+ storage.removeItem(getKey(address));
47
+ }
48
+ //# sourceMappingURL=depositStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositStorage.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/depositStorage.ts"],"names":[],"mappings":"AAEA,IAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEnD,IAAM,UAAU,GAAG;IACjB,OAAA,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAA1D,CAA0D,CAAC;AAE7D,IAAM,MAAM,GAAG,UAAC,OAAe;IAC7B,OAAA,UAAG,uBAAuB,SAAG,OAAO,CAAC,WAAW,EAAE,CAAE;AAApD,CAAoD,CAAC;AAEvD,MAAM,UAAU,qBAAqB,CACnC,OAAkC,EAClC,MAA2B;IAE3B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAkC;IAElC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;IAChD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAkC;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import { StoredDepositRecord } from '../types';\n\nconst LAST_DEPOSIT_KEY_PREFIX = 'n1_last_deposit_';\n\nconst getStorage = () =>\n typeof window === 'undefined' ? null : window.localStorage;\n\nconst getKey = (address: string) =>\n `${LAST_DEPOSIT_KEY_PREFIX}${address.toLowerCase()}`;\n\nexport function saveLastDepositRecord(\n address: string | null | undefined,\n record: StoredDepositRecord\n) {\n if (!address || !record || !record.transactionId) {\n return;\n }\n\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n storage.setItem(getKey(address), JSON.stringify(record));\n}\n\nexport function readLastDepositRecord(\n address: string | null | undefined\n): StoredDepositRecord | null {\n if (!address) {\n return null;\n }\n\n const storage = getStorage();\n if (!storage) {\n return null;\n }\n\n try {\n const raw = storage.getItem(getKey(address));\n if (!raw) {\n return null;\n }\n return JSON.parse(raw) as StoredDepositRecord;\n } catch {\n storage.removeItem(getKey(address));\n return null;\n }\n}\n\nexport function clearLastDepositRecord(address: string | null | undefined) {\n if (!address) {\n return;\n }\n\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n storage.removeItem(getKey(address));\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { NordUser } from '@n1xyz/nord-ts';
1
+ import type { NordUser } from '@n1xyz/nord-ts';
2
2
  /**
3
3
  * Format a Nord transaction for display
4
4
  *
@@ -30,7 +30,7 @@ export function getTokenBalance(nordUser, tokenSymbol) {
30
30
  * @returns Whether Nord is properly configured
31
31
  */
32
32
  export function isNordConfigured(nord) {
33
- return !!nord && !!nord.webServerUrl && !!nord.solanaProgramId;
33
+ return !!nord && !!nord.webServerUrl && (!!nord.solanaConnection || !!nord.protonClient);
34
34
  }
35
35
  /**
36
36
  * Format an amount with the appropriate number of decimal places
@@ -1 +1 @@
1
- {"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,UAAsB,EACtB,QAAoB;IADpB,2BAAA,EAAA,cAAsB;IACtB,yBAAA,EAAA,YAAoB;IAEpB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE5D,OAAO,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAE,CAAC;AACjG,CAAC","sourcesContent":["import { NordUser } from '@n1xyz/nord-ts';\n\n/**\n * Format a Nord transaction for display\n *\n * @param tx Transaction object\n * @returns Formatted transaction ID\n */\nexport function formatNordTransaction(tx: any): string {\n return tx.id\n ? tx.id.substring(0, 8) + '...' + tx.id.substring(tx.id.length - 8)\n : 'Unknown';\n}\n\n/**\n * Get token balance for a specific token\n *\n * @param nordUser NordUser instance\n * @param tokenSymbol Token symbol\n * @returns Token balance\n */\nexport function getTokenBalance(\n nordUser: NordUser | null,\n tokenSymbol: string\n): number {\n if (!nordUser || !nordUser.balances || !nordUser.balances[tokenSymbol]) {\n return 0;\n }\n\n const tokenBalances = nordUser.balances[tokenSymbol];\n return tokenBalances.reduce((total, balance) => total + balance.balance, 0);\n}\n\n/**\n * Check if Nord is properly configured\n *\n * @param nord Nord instance\n * @returns Whether Nord is properly configured\n */\nexport function isNordConfigured(nord: any): boolean {\n return !!nord && !!nord.webServerUrl && !!nord.solanaProgramId;\n}\n\n/**\n * Format an amount with the appropriate number of decimal places\n *\n * @param amount Amount to format\n * @param decimals Number of decimal places\n * @returns Formatted amount\n */\nexport function formatAmount(\n amount: number | string,\n decimals: number = 2\n): string {\n const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;\n return numAmount.toFixed(decimals);\n}\n\n/**\n * Shorten an address for display\n *\n * @param address Address to shorten\n * @param startChars Number of characters to show at the start\n * @param endChars Number of characters to show at the end\n * @returns Shortened address\n */\nexport function shortenAddress(\n address: string,\n startChars: number = 6,\n endChars: number = 4\n): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n\n return `${address.substring(0, startChars)}...${address.substring(address.length - endChars)}`;\n}\n"]}
1
+ {"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,UAAsB,EACtB,QAAoB;IADpB,2BAAA,EAAA,cAAsB;IACtB,yBAAA,EAAA,YAAoB;IAEpB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE5D,OAAO,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAE,CAAC;AACjG,CAAC","sourcesContent":["import type { NordUser } from '@n1xyz/nord-ts';\n\n/**\n * Format a Nord transaction for display\n *\n * @param tx Transaction object\n * @returns Formatted transaction ID\n */\nexport function formatNordTransaction(tx: any): string {\n return tx.id\n ? tx.id.substring(0, 8) + '...' + tx.id.substring(tx.id.length - 8)\n : 'Unknown';\n}\n\n/**\n * Get token balance for a specific token\n *\n * @param nordUser NordUser instance\n * @param tokenSymbol Token symbol\n * @returns Token balance\n */\nexport function getTokenBalance(\n nordUser: NordUser | null,\n tokenSymbol: string\n): number {\n if (!nordUser || !nordUser.balances || !nordUser.balances[tokenSymbol]) {\n return 0;\n }\n\n const tokenBalances = nordUser.balances[tokenSymbol];\n return tokenBalances.reduce((total, balance) => total + balance.balance, 0);\n}\n\n/**\n * Check if Nord is properly configured\n *\n * @param nord Nord instance\n * @returns Whether Nord is properly configured\n */\nexport function isNordConfigured(nord: any): boolean {\n return !!nord && !!nord.webServerUrl && (!!nord.solanaConnection || !!nord.protonClient);\n}\n\n/**\n * Format an amount with the appropriate number of decimal places\n *\n * @param amount Amount to format\n * @param decimals Number of decimal places\n * @returns Formatted amount\n */\nexport function formatAmount(\n amount: number | string,\n decimals: number = 2\n): string {\n const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;\n return numAmount.toFixed(decimals);\n}\n\n/**\n * Shorten an address for display\n *\n * @param address Address to shorten\n * @param startChars Number of characters to show at the start\n * @param endChars Number of characters to show at the end\n * @returns Shortened address\n */\nexport function shortenAddress(\n address: string,\n startChars: number = 6,\n endChars: number = 4\n): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n\n return `${address.substring(0, startChars)}...${address.substring(address.length - endChars)}`;\n}\n"]}
@@ -1 +1 @@
1
- export declare function LazyWalletProvider({ children }: any): JSX.Element;
1
+ export declare function LazyWalletProvider({ children }: any): import("react/jsx-runtime").JSX.Element;
@@ -45,22 +45,21 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
45
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
46
  }
47
47
  };
48
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
48
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
49
49
  import { useCallback, useEffect, useRef, useState } from 'react';
50
50
  import { useN1WalletContext, useN1WalletInternalContext } from './hooks';
51
- import { N1SessionMode } from './types';
52
51
  import { logger } from '../utils/logger';
53
52
  function DynamicContextConsumer(_a) {
54
53
  var children = _a.children;
55
54
  var _b = useState(null), DynamicContext = _b[0], setDynamicContext = _b[1];
56
55
  var showAuthFlowRef = useRef(null);
56
+ var primaryWalletStateRef = useRef(null);
57
57
  // Use refs to track previous values and prevent unnecessary updates
58
58
  var prevPrimaryWalletRef = useRef(null);
59
59
  var prevHandleLogOutRef = useRef(null);
60
60
  var prevSdkHasLoadedRef = useRef(null);
61
- var _c = useN1WalletInternalContext(), setDynamicWallet = _c.setDynamicWallet, setDynamicHandleLogOut = _c.setDynamicHandleLogOut, setDynamicSdkHasLoaded = _c.setDynamicSdkHasLoaded, setAddress = _c.setAddress, setShowDynamicWidget = _c.setShowDynamicWidget;
62
- var address = useN1WalletContext().address;
63
- var _d = useState(''), oldAddress = _d[0], setOldAddress = _d[1];
61
+ var _c = useN1WalletInternalContext(), setDynamicWallet = _c.setDynamicWallet, setDynamicHandleLogOut = _c.setDynamicHandleLogOut, setDynamicSdkHasLoaded = _c.setDynamicSdkHasLoaded, setAddress = _c.setAddress, setShowDynamicWidget = _c.setShowDynamicWidget, setStartClosingLogin = _c.setStartClosingLogin;
62
+ var setShowLogin = useN1WalletContext().setShowLogin;
64
63
  // Load the Dynamic context only once
65
64
  useEffect(function () {
66
65
  var isMounted = true;
@@ -90,10 +89,25 @@ function DynamicContextConsumer(_a) {
90
89
  var _a = DynamicContext(), primaryWallet = _a.primaryWallet, sdkHasLoaded = _a.sdkHasLoaded, setShowAuthFlow = _a.setShowAuthFlow, handleLogOut = _a.handleLogOut;
91
90
  // Store setShowAuthFlow in ref to avoid re-renders - only when it changes
92
91
  useEffect(function () {
93
- if (setShowAuthFlow !== showAuthFlowRef.current) {
94
- showAuthFlowRef.current = setShowAuthFlow;
92
+ if (!setShowAuthFlow) {
93
+ showAuthFlowRef.current = null;
94
+ return;
95
95
  }
96
- }, [setShowAuthFlow]);
96
+ var proxiedSetShowAuthFlow = function (show) {
97
+ setShowAuthFlow(show);
98
+ if (!show && !primaryWalletStateRef.current) {
99
+ logger.debug('Dynamic auth flow closed before wallet connection; closing modal');
100
+ setShowLogin(false);
101
+ setStartClosingLogin(true);
102
+ }
103
+ };
104
+ showAuthFlowRef.current = proxiedSetShowAuthFlow;
105
+ return function () {
106
+ if (showAuthFlowRef.current === proxiedSetShowAuthFlow) {
107
+ showAuthFlowRef.current = null;
108
+ }
109
+ };
110
+ }, [setShowAuthFlow, setShowLogin, setStartClosingLogin]);
97
111
  // Set the dynamic wallet and address when the primary wallet changes
98
112
  // Use deep comparison to prevent unnecessary updates
99
113
  useEffect(function () {
@@ -102,6 +116,7 @@ function DynamicContextConsumer(_a) {
102
116
  return;
103
117
  }
104
118
  prevPrimaryWalletRef.current = primaryWallet;
119
+ primaryWalletStateRef.current = primaryWallet;
105
120
  if (primaryWallet) {
106
121
  setDynamicWallet(primaryWallet);
107
122
  setAddress(primaryWallet.address);
@@ -129,13 +144,13 @@ function DynamicContextConsumer(_a) {
129
144
  };
130
145
  return _jsx(DynamicComponent, {});
131
146
  }
132
- var getSettings = function (darkMode) { return ({
147
+ var getSettings = function () { return ({
133
148
  initialAuthenticationMode: 'connect-only',
134
149
  environmentId: '61fe6031-545b-4e27-bc05-03c8a09f190b',
135
150
  silentAuthentication: true,
136
151
  silentAuth: true,
137
152
  theme: {
138
- mode: darkMode ? 'dark' : 'light',
153
+ mode: 'dark',
139
154
  },
140
155
  events: {
141
156
  onAuthSuccess: function (args) {
@@ -146,42 +161,27 @@ var getSettings = function (darkMode) { return ({
146
161
  function LazyInternal(props) {
147
162
  var _this = this;
148
163
  var _a = useState(null), Provider = _a[0], setProvider = _a[1];
149
- var _b = useState([]), walletConnectors = _b[0], setWalletConnectors = _b[1];
150
- var _c = useN1WalletInternalContext(), darkMode = _c.darkMode, sessionMode = _c.sessionMode;
151
- // Use a ref to track the previous session mode
152
- var prevSessionModeRef = useRef(null);
164
+ var _b = useState(null), DynamicWidgetComponent = _b[0], setDynamicWidgetComponent = _b[1];
165
+ var _c = useState([]), walletConnectors = _c[0], setWalletConnectors = _c[1];
153
166
  useEffect(function () {
154
- // Skip if the session mode hasn't changed
155
- if (sessionMode === prevSessionModeRef.current) {
156
- return;
157
- }
158
- prevSessionModeRef.current = sessionMode;
159
167
  var loadDynamicDeps = function () { return __awaiter(_this, void 0, void 0, function () {
160
- var _a, DynamicContextProvider_1, SolanaWalletConnectors, error_1;
161
- return __generator(this, function (_b) {
162
- switch (_b.label) {
168
+ var _a, _b, DynamicContextProvider_1, DynamicWidget_1, SolanaWalletConnectors, error_1;
169
+ return __generator(this, function (_c) {
170
+ switch (_c.label) {
163
171
  case 0:
164
- _b.trys.push([0, 2, , 3]);
172
+ _c.trys.push([0, 2, , 3]);
165
173
  return [4 /*yield*/, Promise.all([
166
174
  import('@dynamic-labs/sdk-react-core'),
167
175
  import('@dynamic-labs/solana'),
168
176
  ])];
169
177
  case 1:
170
- _a = _b.sent(), DynamicContextProvider_1 = _a[0].DynamicContextProvider, SolanaWalletConnectors = _a[1].SolanaWalletConnectors;
178
+ _a = _c.sent(), _b = _a[0], DynamicContextProvider_1 = _b.DynamicContextProvider, DynamicWidget_1 = _b.DynamicWidget, SolanaWalletConnectors = _a[1].SolanaWalletConnectors;
171
179
  setProvider(function () { return DynamicContextProvider_1; });
172
- if (sessionMode === N1SessionMode.Nord) {
173
- // Only use Solana wallet connectors for Nord mode
174
- setWalletConnectors([SolanaWalletConnectors]);
175
- }
176
- else {
177
- // Use all wallet connectors for NTS mode
178
- setWalletConnectors([
179
- SolanaWalletConnectors,
180
- ]);
181
- }
180
+ setDynamicWidgetComponent(function () { return DynamicWidget_1; });
181
+ setWalletConnectors([SolanaWalletConnectors]);
182
182
  return [3 /*break*/, 3];
183
183
  case 2:
184
- error_1 = _b.sent();
184
+ error_1 = _c.sent();
185
185
  logger.error('Failed to load Dynamic dependencies:', error_1);
186
186
  return [3 /*break*/, 3];
187
187
  case 3: return [2 /*return*/];
@@ -189,13 +189,13 @@ function LazyInternal(props) {
189
189
  });
190
190
  }); };
191
191
  loadDynamicDeps();
192
- }, [sessionMode]);
192
+ }, []);
193
193
  // Memoize the dynamic settings to prevent unnecessary re-renders
194
- var dynamicSettings = useCallback(function () { return (__assign(__assign({}, getSettings(darkMode)), { walletConnectors: walletConnectors })); }, [darkMode, walletConnectors]);
194
+ var dynamicSettings = useCallback(function () { return (__assign(__assign({}, getSettings()), { walletConnectors: walletConnectors })); }, [walletConnectors]);
195
195
  if (!Provider || walletConnectors.length === 0) {
196
196
  return null;
197
197
  }
198
- return (_jsx(Provider, { settings: dynamicSettings(), theme: darkMode ? 'dark' : 'light', children: _jsx(DynamicContextConsumer, { children: props.children }) }));
198
+ return (_jsxs(Provider, { settings: dynamicSettings(), theme: "dark", children: [_jsx(DynamicContextConsumer, { children: props.children }), DynamicWidgetComponent ? _jsx(DynamicWidgetComponent, {}) : null] }));
199
199
  }
200
200
  export function LazyWalletProvider(_a) {
201
201
  var children = _a.children;