@n1xyz/wallet-widget 0.0.15 → 0.0.17

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 (61) hide show
  1. package/dist/Logic/utils.d.ts +3 -1
  2. package/dist/Logic/utils.js +16 -2
  3. package/dist/Logic/utils.js.map +1 -1
  4. package/dist/Modal/N1WalletModal.d.ts +1 -0
  5. package/dist/Modal/N1WalletModal.js +1 -0
  6. package/dist/Modal/N1WalletModal.js.map +1 -1
  7. package/dist/Modal/NTSFlow/views/CreateSessionView.js +1 -0
  8. package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +1 -1
  9. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +1 -1
  10. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -1
  11. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.d.ts +1 -1
  12. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +14 -12
  13. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -1
  14. package/dist/Provider/N1WalletProvider.d.ts +1 -1
  15. package/dist/Provider/N1WalletProvider.js +65 -37
  16. package/dist/Provider/N1WalletProvider.js.map +1 -1
  17. package/dist/Provider/hooks/useNordUserInitialization.js +33 -37
  18. package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
  19. package/dist/Provider/types.d.ts +13 -0
  20. package/dist/Provider/types.js.map +1 -1
  21. package/dist/embedded-main-css.d.ts +2 -0
  22. package/dist/embedded-main-css.js +3 -0
  23. package/dist/embedded-main-css.js.map +1 -0
  24. package/dist/index.d.ts +0 -1
  25. package/dist/index.js +0 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/main.css +1 -1
  28. package/package.json +7 -4
  29. package/dist/Modal/NordFlow/context/deposit/types.d.ts +0 -26
  30. package/dist/Modal/NordFlow/context/deposit/types.js +0 -2
  31. package/dist/Modal/NordFlow/context/deposit/types.js.map +0 -1
  32. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.d.ts +0 -7
  33. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js +0 -113
  34. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js.map +0 -1
  35. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.d.ts +0 -20
  36. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js +0 -235
  37. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js.map +0 -1
  38. package/dist/Modal/NordFlow/hooks/index.d.ts +0 -3
  39. package/dist/Modal/NordFlow/hooks/index.js +0 -4
  40. package/dist/Modal/NordFlow/hooks/index.js.map +0 -1
  41. package/dist/Modal/NordFlow/hooks/useDepositFlow.d.ts +0 -52
  42. package/dist/Modal/NordFlow/hooks/useDepositFlow.js +0 -385
  43. package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +0 -1
  44. package/dist/Modal/NordFlow/hooks/useFlowState.d.ts +0 -32
  45. package/dist/Modal/NordFlow/hooks/useFlowState.js +0 -189
  46. package/dist/Modal/NordFlow/hooks/useFlowState.js.map +0 -1
  47. package/dist/Modal/NordFlow/hooks/useInterruptHandler.d.ts +0 -24
  48. package/dist/Modal/NordFlow/hooks/useInterruptHandler.js +0 -59
  49. package/dist/Modal/NordFlow/hooks/useInterruptHandler.js.map +0 -1
  50. package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -0
  51. package/dist/Modal/NordFlow/hooks/useNordInstance.js +0 -3
  52. package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +0 -1
  53. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.d.ts +0 -13
  54. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +0 -259
  55. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +0 -1
  56. package/dist/Modal/NordFlow/utils/persistence.d.ts +0 -24
  57. package/dist/Modal/NordFlow/utils/persistence.js +0 -84
  58. package/dist/Modal/NordFlow/utils/persistence.js.map +0 -1
  59. package/dist/Provider/useN1WalletProvider.d.ts +0 -37
  60. package/dist/Provider/useN1WalletProvider.js +0 -398
  61. package/dist/Provider/useN1WalletProvider.js.map +0 -1
@@ -1,4 +1,15 @@
1
1
  'use client';
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -37,19 +48,21 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
48
  };
38
49
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
39
50
  import React, { Suspense, useCallback, useEffect, useState } from 'react';
51
+ import root from 'react-shadow';
40
52
  import { N1WalletModal } from '../Modal/N1WalletModal';
41
53
  import { NordProvider } from '../Modal/NordFlow/context';
42
54
  import { WalletError, WalletErrorCode } from '../errors/types';
43
55
  import { logger } from '../utils/logger';
44
56
  import WalletErrorBoundary from './WalletErrorBoundary';
45
57
  import { N1InternalWalletContext, N1WalletContext } from './context';
46
- import { N1ModalViewMode, N1SessionMode, } from './types';
47
58
  import { useNordUserInitialization } from './hooks/useNordUserInitialization';
59
+ import { N1ModalViewMode, N1SessionMode, } from './types';
48
60
  var LazyWalletProvider = React.lazy(function () {
49
61
  return import('./LazyWalletProvider').then(function (mod) { return ({
50
62
  default: mod.LazyWalletProvider,
51
63
  }); });
52
64
  });
65
+ import mainCss from '../embedded-main-css';
53
66
  function NordWrapper(_a) {
54
67
  var children = _a.children;
55
68
  // Use the extracted hook for NordUser initialization
@@ -58,7 +71,7 @@ function NordWrapper(_a) {
58
71
  }
59
72
  export function N1WalletProvider(_a) {
60
73
  var _this = this;
61
- var children = _a.children, providedSessionMode = _a.providedSessionMode, appId = _a.appId, _b = _a.darkMode, darkMode = _b === void 0 ? true : _b, onError = _a.onError, faucetUrl = _a.faucetUrl, nord = _a.nord;
74
+ var children = _a.children, providedSessionMode = _a.providedSessionMode, appId = _a.appId, _b = _a.darkMode, darkMode = _b === void 0 ? true : _b, onError = _a.onError, faucetUrl = _a.faucetUrl, nord = _a.nord, colorOverrides = _a.colorOverrides, skipFinalScreen = _a.skipFinalScreen;
62
75
  var _c = useState(false), isConnected = _c[0], setIsConnected = _c[1];
63
76
  var _d = useState(null), ntsInterface = _d[0], setNtsInterface = _d[1];
64
77
  var _e = useState(null), sessionPubKey = _e[0], setSessionPubKey = _e[1];
@@ -144,6 +157,19 @@ export function N1WalletProvider(_a) {
144
157
  return [2 /*return*/];
145
158
  });
146
159
  }); };
160
+ // Prepare CSS with color overrides if provided
161
+ var injectedCss = mainCss;
162
+ if (Array.isArray(colorOverrides) && colorOverrides.length > 0) {
163
+ // Apply all color overrides in order
164
+ colorOverrides.forEach(function (_a) {
165
+ var color = _a.color, replacement = _a.replacement;
166
+ if (color && replacement) {
167
+ // Replace all instances, case-insensitive
168
+ var regex = new RegExp(color.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
169
+ injectedCss = injectedCss.replace(regex, replacement);
170
+ }
171
+ });
172
+ }
147
173
  // Create the wallet context value
148
174
  var walletContextValue = {
149
175
  address: address,
@@ -168,40 +194,42 @@ export function N1WalletProvider(_a) {
168
194
  nord: nord,
169
195
  nordUser: nordUser,
170
196
  };
171
- return (_jsx(WalletErrorBoundary, { onError: handleError, children: _jsx(N1WalletContext.Provider, { value: walletContextValue, children: _jsx(N1InternalWalletContext.Provider, { value: {
172
- dynamicHandleLogOut: dynamicHandleLogOut,
173
- dynamicWallet: dynamicWallet,
174
- loading: loading,
175
- dynamicSdkHasLoaded: dynamicSdkHasLoaded,
176
- handleError: handleError,
177
- setDynamicSdkHasLoaded: setDynamicSdkHasLoaded,
178
- setAddress: setAddress,
179
- setBalances: setBalances,
180
- setChain: setChain,
181
- setDynamicHandleLogOut: setDynamicHandleLogOut,
182
- setDynamicWallet: setDynamicWallet,
183
- setIsConnected: setIsConnected,
184
- setLoading: setLoading,
185
- setNtsInterface: setNtsInterface,
186
- setSessionMode: setSessionMode,
187
- setSessionPubKey: setSessionPubKey,
188
- setShowSidebar: setShowSidebar,
189
- setSignMessageWithSessionKey: setSignMessageWithSessionKey,
190
- setSignMessageWithWalletKey: setSignMessageWithWalletKey,
191
- setSignTransactionWithWalletKey: setSignTransactionWithWalletKey,
192
- setStartClosingLogin: setStartClosingLogin,
193
- setUsername: setUsername,
194
- setUserChain: setUserChain,
195
- setViewMode: setViewMode,
196
- setWalletPubKey: setWalletPubKey,
197
- showSidebar: showSidebar,
198
- startClosingLogin: startClosingLogin,
199
- showDynamicWidget: showDynamicWidget,
200
- setShowDynamicWidget: setShowDynamicWidget,
201
- darkMode: darkMode,
202
- sessionMode: sessionMode,
203
- faucetUrl: faucetUrl,
204
- setNordUser: setNordUser,
205
- }, children: sessionMode === N1SessionMode.Nord ? (_jsx(NordWrapper, { children: _jsx(NordProvider, { children: _jsxs(_Fragment, { children: [children, _jsx(N1WalletModal, {}), _jsx(Suspense, { fallback: null, children: _jsx(LazyWalletProvider, {}) })] }) }) })) : (_jsxs(_Fragment, { children: [children, _jsx(N1WalletModal, {}), _jsx(Suspense, { fallback: null, children: _jsx(LazyWalletProvider, {}) })] })) }) }) }));
197
+ // Create the internal wallet context value
198
+ var internalWalletContextValue = {
199
+ dynamicHandleLogOut: dynamicHandleLogOut,
200
+ dynamicWallet: dynamicWallet,
201
+ loading: loading,
202
+ dynamicSdkHasLoaded: dynamicSdkHasLoaded,
203
+ handleError: handleError,
204
+ setDynamicSdkHasLoaded: setDynamicSdkHasLoaded,
205
+ setAddress: setAddress,
206
+ setBalances: setBalances,
207
+ setChain: setChain,
208
+ setDynamicHandleLogOut: setDynamicHandleLogOut,
209
+ setDynamicWallet: setDynamicWallet,
210
+ setIsConnected: setIsConnected,
211
+ setLoading: setLoading,
212
+ setNtsInterface: setNtsInterface,
213
+ setSessionMode: setSessionMode,
214
+ setSessionPubKey: setSessionPubKey,
215
+ setShowSidebar: setShowSidebar,
216
+ setSignMessageWithSessionKey: setSignMessageWithSessionKey,
217
+ setSignMessageWithWalletKey: setSignMessageWithWalletKey,
218
+ setSignTransactionWithWalletKey: setSignTransactionWithWalletKey,
219
+ setStartClosingLogin: setStartClosingLogin,
220
+ setUsername: setUsername,
221
+ setUserChain: setUserChain,
222
+ setViewMode: setViewMode,
223
+ setWalletPubKey: setWalletPubKey,
224
+ showSidebar: showSidebar,
225
+ startClosingLogin: startClosingLogin,
226
+ showDynamicWidget: showDynamicWidget,
227
+ setShowDynamicWidget: setShowDynamicWidget,
228
+ darkMode: darkMode,
229
+ sessionMode: sessionMode,
230
+ faucetUrl: faucetUrl,
231
+ setNordUser: setNordUser,
232
+ };
233
+ return (_jsx(WalletErrorBoundary, { onError: handleError, children: _jsx(N1WalletContext.Provider, { value: walletContextValue, children: _jsx(N1InternalWalletContext.Provider, { value: __assign(__assign({}, internalWalletContextValue), { skipFinalScreen: skipFinalScreen }), children: sessionMode === N1SessionMode.Nord ? (_jsx(NordWrapper, { children: _jsx(NordProvider, { children: _jsxs(_Fragment, { children: [children, _jsxs(root.div, { children: [_jsx("style", { children: injectedCss }), _jsx(N1WalletModal, {})] }), _jsx(Suspense, { fallback: null, children: _jsx(LazyWalletProvider, {}) })] }) }) })) : (_jsxs(_Fragment, { children: [children, _jsxs(root.div, { children: [_jsx("style", { children: injectedCss }), _jsx(N1WalletModal, {})] }), _jsx(Suspense, { fallback: null, children: _jsx(LazyWalletProvider, {}) })] })) }) }) }));
206
234
  }
207
235
  //# sourceMappingURL=N1WalletProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"N1WalletProvider.js","sourceRoot":"","sources":["../../src/Provider/N1WalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { NordUser } from '@n1xyz/nord-ts';\nimport React, { Suspense, useCallback, useEffect, useState } from 'react';\nimport { N1WalletModal } from '../Modal/N1WalletModal';\nimport { NordProvider } from '../Modal/NordFlow/context';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport { logger } from '../utils/logger';\nimport WalletErrorBoundary from './WalletErrorBoundary';\nimport { N1InternalWalletContext, N1WalletContext } from './context';\nimport {\n Balance,\n N1ModalViewMode,\n N1SessionMode,\n N1WalletProviderProps,\n} from './types';\nimport { useNordUserInitialization } from './hooks/useNordUserInitialization';\n\nconst LazyWalletProvider = React.lazy(() =>\n import('./LazyWalletProvider').then((mod) => ({\n default: mod.LazyWalletProvider,\n }))\n);\n\n\nfunction NordWrapper({ children }: { children: React.ReactNode }) {\n\n // Use the extracted hook for NordUser initialization\n useNordUserInitialization();\n return (\n <>\n {children}\n </>\n )\n}\n\nexport function N1WalletProvider({\n children,\n providedSessionMode,\n appId,\n darkMode = true,\n onError,\n faucetUrl,\n nord,\n}: N1WalletProviderProps) {\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const [ntsInterface, setNtsInterface] = useState<any>(null);\n const [sessionPubKey, setSessionPubKey] = useState<Uint8Array | null>(null);\n const [walletPubKey, setWalletPubKey] = useState<Uint8Array | null>(null);\n const [userChain, setUserChain] = useState<string | null>(null);\n const [username, setUsername] = useState<string>('');\n const [signMessageWithSessionKey, setSignMessageWithSessionKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signMessageWithWalletKey, setSignMessageWithWalletKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signTransactionWithWalletKey, setSignTransactionWithWalletKey] =\n useState<((transaction: any) => Promise<any>) | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [viewMode, setViewMode] = useState<N1ModalViewMode>(\n N1ModalViewMode.Connect\n );\n const [nordUser, setNordUser] = useState<any>(null);\n\n // dynamic\n const [balances, setBalances] = useState<Balance[]>([]);\n const [chain, setChain] = useState<string>('');\n const [dynamicSdkHasLoaded, setDynamicSdkHasLoaded] = useState<any>(null);\n const [sessionMode, setSessionMode] = useState<N1SessionMode | null>(null);\n\n const [showLogin, setShowLogin] = useState<boolean>(false);\n const [startClosingLogin, setStartClosingLogin] = useState<boolean>(false);\n const [showSidebar, setShowSidebar] = useState<boolean>(false);\n const [showDynamicWidget, setShowDynamicWidget] = useState<any>(null);\n\n // dynamic\n const [address, setAddress] = useState<string>('');\n const [oldAddress, setOldAddress] = useState<string>('');\n const [dynamicHandleLogOut, setDynamicHandleLogOut] = useState<any>(null);\n const [dynamicWallet, setDynamicWallet] = useState<any>(null);\n\n\n // Combine SDK loading and initialization into a single effect\n useEffect(() => {\n let mounted = true;\n\n // Set the session mode from props\n setSessionMode(providedSessionMode);\n if (providedSessionMode === N1SessionMode.Nord) {\n return\n }\n\n // Load the appropriate SDK\n const loadSDK = async () => {\n // eslint-disable-next-line no-console\n logger.debug('Loading NTS SDK');\n\n try {\n const { NTSInterface } = await import('@n1xyz/nts-sdk');\n if (mounted) {\n // eslint-disable-next-line no-console\n logger.debug('NTS SDK loaded successfully');\n setNtsInterface(new NTSInterface(process.env.NTS_URL!));\n }\n } catch (error) {\n if (mounted) {\n // eslint-disable-next-line no-console\n logger.error('Error loading NTS SDK:', error);\n }\n }\n };\n\n loadSDK();\n\n return () => {\n mounted = false;\n };\n }, [providedSessionMode, onError]);\n\n // Separate effect to handle loading state based on both SDKs\n useEffect(() => {\n const isDynamicReady =\n dynamicSdkHasLoaded || providedSessionMode === N1SessionMode.Nord;\n const isNtsReady =\n ntsInterface || providedSessionMode === N1SessionMode.Nord;\n\n setLoading(!isDynamicReady || !isNtsReady);\n }, [dynamicSdkHasLoaded, ntsInterface, providedSessionMode]);\n\n const handleError = useCallback(\n (error: WalletError) => {\n onError?.(error);\n },\n [onError]\n );\n\n const throwTestError = async () => {\n handleError(\n new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Test error: No compatible wallet was found'\n )\n );\n };\n\n // Create the wallet context value\n const walletContextValue = {\n address,\n appId,\n balances,\n chain,\n isConnected,\n ntsInterface,\n sessionMode,\n sessionPubKey,\n setShowLogin,\n showLogin,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n userChain,\n username,\n viewMode,\n walletPubKey,\n throwTestError,\n faucetUrl,\n nord,\n nordUser,\n };\n\n return (\n <WalletErrorBoundary onError={handleError}>\n <N1WalletContext.Provider value={walletContextValue}>\n <N1InternalWalletContext.Provider\n value={{\n dynamicHandleLogOut,\n dynamicWallet,\n loading,\n dynamicSdkHasLoaded,\n handleError,\n setDynamicSdkHasLoaded,\n setAddress,\n setBalances,\n setChain,\n setDynamicHandleLogOut,\n setDynamicWallet,\n setIsConnected,\n setLoading,\n setNtsInterface,\n setSessionMode,\n setSessionPubKey,\n setShowSidebar,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUsername,\n setUserChain,\n setViewMode,\n setWalletPubKey,\n showSidebar,\n startClosingLogin,\n showDynamicWidget,\n setShowDynamicWidget,\n darkMode,\n sessionMode,\n faucetUrl,\n setNordUser,\n }}\n >\n {sessionMode === N1SessionMode.Nord ? (\n <NordWrapper>\n <NordProvider>\n <>\n {children}\n <N1WalletModal />\n <Suspense fallback={null}>\n <LazyWalletProvider />\n </Suspense>\n </>\n </NordProvider>\n </NordWrapper>\n ) : (\n <>\n {children}\n <N1WalletModal />\n <Suspense fallback={null}>\n <LazyWalletProvider />\n </Suspense>\n </>\n )}\n </N1InternalWalletContext.Provider>\n </N1WalletContext.Provider>\n </WalletErrorBoundary>\n );\n}\n"]}
1
+ {"version":3,"file":"N1WalletProvider.js","sourceRoot":"","sources":["../../src/Provider/N1WalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React, { Suspense, useCallback, useEffect, useState } from 'react';\nimport root from 'react-shadow';\nimport { N1WalletModal } from '../Modal/N1WalletModal';\nimport { NordProvider } from '../Modal/NordFlow/context';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport { logger } from '../utils/logger';\nimport WalletErrorBoundary from './WalletErrorBoundary';\nimport { N1InternalWalletContext, N1WalletContext } from './context';\nimport { useNordUserInitialization } from './hooks/useNordUserInitialization';\nimport {\n Balance,\n N1ModalViewMode,\n N1SessionMode,\n N1WalletProviderProps,\n} from './types';\n\nconst LazyWalletProvider = React.lazy(() =>\n import('./LazyWalletProvider').then((mod) => ({\n default: mod.LazyWalletProvider,\n }))\n);\n\nimport mainCss from '../embedded-main-css';\n\nfunction NordWrapper({ children }: { children: React.ReactNode }) {\n\n // Use the extracted hook for NordUser initialization\n useNordUserInitialization();\n return (\n <>\n {children}\n </>\n )\n}\n\nexport function N1WalletProvider({\n children,\n providedSessionMode,\n appId,\n darkMode = true,\n onError,\n faucetUrl,\n nord,\n colorOverrides,\n skipFinalScreen,\n}: N1WalletProviderProps) {\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const [ntsInterface, setNtsInterface] = useState<any>(null);\n const [sessionPubKey, setSessionPubKey] = useState<Uint8Array | null>(null);\n const [walletPubKey, setWalletPubKey] = useState<Uint8Array | null>(null);\n const [userChain, setUserChain] = useState<string | null>(null);\n const [username, setUsername] = useState<string>('');\n const [signMessageWithSessionKey, setSignMessageWithSessionKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signMessageWithWalletKey, setSignMessageWithWalletKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signTransactionWithWalletKey, setSignTransactionWithWalletKey] =\n useState<((transaction: any) => Promise<any>) | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [viewMode, setViewMode] = useState<N1ModalViewMode>(\n N1ModalViewMode.Connect\n );\n const [nordUser, setNordUser] = useState<any>(null);\n\n // dynamic\n const [balances, setBalances] = useState<Balance[]>([]);\n const [chain, setChain] = useState<string>('');\n const [dynamicSdkHasLoaded, setDynamicSdkHasLoaded] = useState<any>(null);\n const [sessionMode, setSessionMode] = useState<N1SessionMode | null>(null);\n\n const [showLogin, setShowLogin] = useState<boolean>(false);\n const [startClosingLogin, setStartClosingLogin] = useState<boolean>(false);\n const [showSidebar, setShowSidebar] = useState<boolean>(false);\n const [showDynamicWidget, setShowDynamicWidget] = useState<any>(null);\n\n // dynamic\n const [address, setAddress] = useState<string>('');\n const [oldAddress, setOldAddress] = useState<string>('');\n const [dynamicHandleLogOut, setDynamicHandleLogOut] = useState<any>(null);\n const [dynamicWallet, setDynamicWallet] = useState<any>(null);\n\n // Combine SDK loading and initialization into a single effect\n useEffect(() => {\n let mounted = true;\n\n // Set the session mode from props\n setSessionMode(providedSessionMode);\n if (providedSessionMode === N1SessionMode.Nord) {\n return\n }\n\n // Load the appropriate SDK\n const loadSDK = async () => {\n // eslint-disable-next-line no-console\n logger.debug('Loading NTS SDK');\n\n try {\n const { NTSInterface } = await import('@n1xyz/nts-sdk');\n if (mounted) {\n // eslint-disable-next-line no-console\n logger.debug('NTS SDK loaded successfully');\n setNtsInterface(new NTSInterface(process.env.NTS_URL!));\n }\n } catch (error) {\n if (mounted) {\n // eslint-disable-next-line no-console\n logger.error('Error loading NTS SDK:', error);\n }\n }\n };\n\n loadSDK();\n\n return () => {\n mounted = false;\n };\n }, [providedSessionMode, onError]);\n\n // Separate effect to handle loading state based on both SDKs\n useEffect(() => {\n const isDynamicReady =\n dynamicSdkHasLoaded || providedSessionMode === N1SessionMode.Nord;\n const isNtsReady =\n ntsInterface || providedSessionMode === N1SessionMode.Nord;\n\n setLoading(!isDynamicReady || !isNtsReady);\n }, [dynamicSdkHasLoaded, ntsInterface, providedSessionMode]);\n\n const handleError = useCallback(\n (error: WalletError) => {\n onError?.(error);\n },\n [onError]\n );\n\n const throwTestError = async () => {\n handleError(\n new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Test error: No compatible wallet was found'\n )\n );\n };\n\n // Prepare CSS with color overrides if provided\n let injectedCss = mainCss;\n if (Array.isArray(colorOverrides) && colorOverrides.length > 0) {\n // Apply all color overrides in order\n colorOverrides.forEach(({ color, replacement }) => {\n if (color && replacement) {\n // Replace all instances, case-insensitive\n const regex = new RegExp(color.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gi');\n injectedCss = injectedCss.replace(regex, replacement);\n }\n });\n }\n\n // Create the wallet context value\n const walletContextValue = {\n address,\n appId,\n balances,\n chain,\n isConnected,\n ntsInterface,\n sessionMode,\n sessionPubKey,\n setShowLogin,\n showLogin,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n userChain,\n username,\n viewMode,\n walletPubKey,\n throwTestError,\n faucetUrl,\n nord,\n nordUser,\n };\n\n // Create the internal wallet context value\n const internalWalletContextValue = {\n dynamicHandleLogOut,\n dynamicWallet,\n loading,\n dynamicSdkHasLoaded,\n handleError,\n setDynamicSdkHasLoaded,\n setAddress,\n setBalances,\n setChain,\n setDynamicHandleLogOut,\n setDynamicWallet,\n setIsConnected,\n setLoading,\n setNtsInterface,\n setSessionMode,\n setSessionPubKey,\n setShowSidebar,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUsername,\n setUserChain,\n setViewMode,\n setWalletPubKey,\n showSidebar,\n startClosingLogin,\n showDynamicWidget,\n setShowDynamicWidget,\n darkMode,\n sessionMode,\n faucetUrl,\n setNordUser,\n };\n\n return (\n <WalletErrorBoundary onError={handleError}>\n <N1WalletContext.Provider value={walletContextValue}>\n <N1InternalWalletContext.Provider\n value={{\n ...internalWalletContextValue,\n skipFinalScreen, // make available to modal context tree\n }}\n >\n {sessionMode === N1SessionMode.Nord ? (\n <NordWrapper>\n <NordProvider>\n <>\n {children}\n <root.div>\n <style>{injectedCss}</style>\n <N1WalletModal />\n </root.div>\n <Suspense fallback={null}>\n <LazyWalletProvider />\n </Suspense>\n </>\n </NordProvider>\n </NordWrapper>\n ) : (\n <>\n {children}\n <root.div>\n <style>{injectedCss}</style>\n <N1WalletModal />\n </root.div>\n <Suspense fallback={null}>\n <LazyWalletProvider />\n </Suspense>\n </>\n )}\n </N1InternalWalletContext.Provider>\n </N1WalletContext.Provider>\n </WalletErrorBoundary>\n );\n}\n"]}
@@ -114,41 +114,36 @@ export function useNordUserInitialization() {
114
114
  return signTransactionWithWallet;
115
115
  };
116
116
  var createSession = function () { return __awaiter(_this, void 0, void 0, function () {
117
- var sessionKeyPair_1, storedKeys, tempKeyPair, error_3, signFn_1, error_4;
117
+ var sessionKeyPair_1, storedKeys, signFn_1, error_3;
118
118
  var _this = this;
119
119
  return __generator(this, function (_a) {
120
120
  switch (_a.label) {
121
121
  case 0:
122
- _a.trys.push([0, 7, , 8]);
122
+ _a.trys.push([0, 3, , 4]);
123
123
  sessionKeyPair_1 = null;
124
- if (!address) return [3 /*break*/, 4];
125
- storedKeys = getSessionKeysFromLocalStorage(address);
126
- if (!storedKeys) return [3 /*break*/, 4];
127
- _a.label = 1;
128
- case 1:
129
- _a.trys.push([1, 3, , 4]);
130
- return [4 /*yield*/, generateSessionKeyPair()];
131
- case 2:
132
- tempKeyPair = _a.sent();
133
- sessionKeyPair_1 = {
134
- privateKey: storedKeys.ed25519PrivateKey,
135
- publicKey: tempKeyPair.publicKey,
136
- };
137
- return [3 /*break*/, 4];
138
- case 3:
139
- error_3 = _a.sent();
140
- console.error('Error reconstructing key pair from stored keys:', error_3);
141
- sessionKeyPair_1 = null;
142
- return [3 /*break*/, 4];
143
- case 4:
144
- if (!!sessionKeyPair_1) return [3 /*break*/, 6];
124
+ if (address) {
125
+ try {
126
+ storedKeys = getSessionKeysFromLocalStorage(address);
127
+ if (storedKeys) {
128
+ sessionKeyPair_1 = {
129
+ privateKey: storedKeys.ed25519PrivateKey,
130
+ publicKey: storedKeys.ed25519PublicKey,
131
+ };
132
+ }
133
+ }
134
+ catch (error) {
135
+ console.error('Error reconstructing key pair from stored keys:', error);
136
+ sessionKeyPair_1 = null;
137
+ }
138
+ }
139
+ if (!!sessionKeyPair_1) return [3 /*break*/, 2];
145
140
  return [4 /*yield*/, generateSessionKeyPair()];
146
- case 5:
141
+ case 1:
147
142
  sessionKeyPair_1 = _a.sent();
148
- _a.label = 6;
149
- case 6:
143
+ _a.label = 2;
144
+ case 2:
150
145
  signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
151
- var error_5;
146
+ var error_4;
152
147
  return __generator(this, function (_a) {
153
148
  switch (_a.label) {
154
149
  case 0:
@@ -156,26 +151,27 @@ export function useNordUserInitialization() {
156
151
  return [4 /*yield*/, signEd25519(message, sessionKeyPair_1.privateKey)];
157
152
  case 1: return [2 /*return*/, _a.sent()];
158
153
  case 2:
159
- error_5 = _a.sent();
160
- console.error('Error signing with session key:', error_5);
161
- throw error_5;
154
+ error_4 = _a.sent();
155
+ console.error('Error signing with session key:', error_4);
156
+ throw error_4;
162
157
  case 3: return [2 /*return*/];
163
158
  }
164
159
  });
165
160
  }); };
166
161
  storeSessionKeysInLocalStorage({
167
162
  privKey: sessionKeyPair_1.privateKey,
163
+ publicKey: sessionKeyPair_1.publicKey,
168
164
  walletPublicKey: address,
169
165
  chainName: (dynamicWallet === null || dynamicWallet === void 0 ? void 0 : dynamicWallet.chain) || 'ETH',
170
166
  });
171
167
  setSessionPubKey(sessionKeyPair_1.publicKey);
172
168
  setSignMessageWithSessionKey(function () { return signFn_1; });
173
169
  return [2 /*return*/, signFn_1];
174
- case 7:
175
- error_4 = _a.sent();
176
- console.error('Error creating session:', error_4);
170
+ case 3:
171
+ error_3 = _a.sent();
172
+ console.error('Error creating session:', error_3);
177
173
  return [2 /*return*/, null];
178
- case 8: return [2 /*return*/];
174
+ case 4: return [2 /*return*/];
179
175
  }
180
176
  });
181
177
  }); };
@@ -210,7 +206,7 @@ export function useNordUserInitialization() {
210
206
  return;
211
207
  }
212
208
  var createNordUser = function () { return __awaiter(_this, void 0, void 0, function () {
213
- var sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1, error_6;
209
+ var sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1, error_5;
214
210
  return __generator(this, function (_a) {
215
211
  switch (_a.label) {
216
212
  case 0:
@@ -261,8 +257,8 @@ export function useNordUserInitialization() {
261
257
  setNordUser(user);
262
258
  return [2 /*return*/, user];
263
259
  case 5:
264
- error_6 = _a.sent();
265
- console.error('Error creating NordUser:', error_6);
260
+ error_5 = _a.sent();
261
+ console.error('Error creating NordUser:', error_5);
266
262
  setNordUser(null);
267
263
  return [2 /*return*/, null];
268
264
  case 6: return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"useNordUserInitialization.js","sourceRoot":"","sources":["../../../src/Provider/hooks/useNordUserInitialization.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAG1E,MAAM,UAAU,yBAAyB;IAAzC,iBAkOC;IAjOS,IAAA,KAA+I,0BAA0B,EAAE,EAAzK,WAAW,iBAAA,EAAE,gBAAgB,sBAAA,EAAE,4BAA4B,kCAAA,EAAE,2BAA2B,iCAAA,EAAE,+BAA+B,qCAAA,EAAE,aAAa,mBAAiC,CAAC;IAE5K,IAAA,KAA6I,kBAAkB,EAAE,EAA/J,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,WAAW,iBAAA,EAAE,IAAI,UAAA,EAAE,yBAAyB,+BAAA,EAAE,wBAAwB,8BAAA,EAAE,4BAA4B,kCAAA,EAAE,aAAa,mBAAyB,CAAC;IACxK,gDAAgD;IAChD,SAAS,CAAC;QACN,IAAI,WAAW,KAAK,aAAa,CAAC,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YAC3E,OAAO;QACX,CAAC;QAED,IAAM,wBAAwB,GAAG;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAM,cAAc,GAAG,UAAO,GAAe;;;;;;4BAE/B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;4BAC9B,qBAAM,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAA;;4BAAnD,SAAS,GAAG,SAAuC;4BACnD,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;4BAC/B,mBAAmB,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;4BAChE,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCAC3C,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;4BACxD,CAAC;4BACD,sBAAO,mBAAmB,EAAC;;;4BAE3B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAK,CAAC,CAAC;4BACnD,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,oCAAoC,EACpC,EAAE,aAAa,EAAE,OAAK,EAAE,CAC3B,CAAC;;;;iBAET,CAAC;YAEF,2BAA2B,CAAC,cAAM,OAAA,cAAc,EAAd,CAAc,CAAC,CAAC;YAClD,OAAO,cAAc,CAAC;QAC1B,CAAC,CAAC;QAEF,IAAM,6BAA6B,GAAG;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAM,yBAAyB,GAAG,UAC9B,WAAgB;;;;;;iCAGR,CAAA,aAAa,CAAC,KAAK,KAAK,KAAK,CAAA,EAA7B,wBAA6B;4BAEzB,qBAAM,aAAa,CAAC,SAAS,EAAE,EAAA;gCADT,qBAAM,CAC5B,SAA+B,CAClC,CAAC,eAAe,CAAC,WAAW,CAAC,EAAA;;4BAFxB,iBAAiB,GAAG,SAEI;4BAC9B,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;4BAEhD,YAAY,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;4BACnD,sBAAO,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAC;gCAG1C,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,mBAAmB,EACnB,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CACpD,CAAC;;;4BAEF,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,OAAK,CAAC,CAAC;4BAC/D,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,wCAAwC,EACxC,EAAE,aAAa,EAAE,OAAK,EAAE,CAC3B,CAAC;;;;iBAET,CAAC;YAEF,+BAA+B,CAAC,cAAM,OAAA,yBAAyB,EAAzB,CAAyB,CAAC,CAAC;YACjE,OAAO,yBAAyB,CAAC;QACrC,CAAC,CAAC;QAEF,IAAM,aAAa,GAAG;;;;;;;wBAEV,mBAAiB,IAAI,CAAC;6BACtB,OAAO,EAAP,wBAAO;wBACD,UAAU,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;6BACvD,UAAU,EAAV,wBAAU;;;;wBAEc,qBAAM,sBAAsB,EAAE,EAAA;;wBAA5C,WAAW,GAAG,SAA8B;wBAClD,gBAAc,GAAG;4BACb,UAAU,EAAE,UAAU,CAAC,iBAAiB;4BACxC,SAAS,EAAE,WAAW,CAAC,SAAS;yBACnC,CAAC;;;;wBAEF,OAAO,CAAC,KAAK,CACT,iDAAiD,EACjD,OAAK,CACR,CAAC;wBACF,gBAAc,GAAG,IAAI,CAAC;;;6BAK9B,CAAC,gBAAc,EAAf,wBAAe;wBACE,qBAAM,sBAAsB,EAAE,EAAA;;wBAA/C,gBAAc,GAAG,SAA8B,CAAC;;;wBAG9C,WAAS,UAAO,OAAY;;;;;;wCAEnB,qBAAM,WAAW,CAAC,OAAO,EAAE,gBAAc,CAAC,UAAU,CAAC,EAAA;4CAA5D,sBAAO,SAAqD,EAAC;;;wCAE7D,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAK,CAAC,CAAC;wCACxD,MAAM,OAAK,CAAC;;;;6BAEnB,CAAC;wBAGF,8BAA8B,CAAC;4BAC3B,OAAO,EAAE,gBAAc,CAAC,UAAU;4BAClC,eAAe,EAAE,OAAO;4BACxB,SAAS,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,KAAI,KAAK;yBAC3C,CAAC,CAAC;wBAEH,gBAAgB,CAAC,gBAAc,CAAC,SAAS,CAAC,CAAC;wBAC3C,4BAA4B,CAAC,cAAM,OAAA,QAAM,EAAN,CAAM,CAAC,CAAC;wBAC3C,sBAAO,QAAM,EAAC;;;wBAEd,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAK,CAAC,CAAC;wBAChD,sBAAO,IAAI,EAAC;;;;aAEnB,CAAC;QAEF,yCAAyC;QACzC,IAAM,oBAAoB,GAAG;;;;wBACzB,IAAI,CAAC,wBAAwB,IAAI,aAAa,EAAE,CAAC;4BAC7C,wBAAwB,EAAE,CAAC;wBAC/B,CAAC;wBAED,IAAI,CAAC,4BAA4B,IAAI,aAAa,EAAE,CAAC;4BACjD,6BAA6B,EAAE,CAAC;wBACpC,CAAC;6BAEG,CAAC,yBAAyB,EAA1B,wBAA0B;wBAC1B,qBAAM,aAAa,EAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;aAE7B,CAAC;QAEF,oBAAoB,EAAE,CAAC;IAC3B,CAAC,EAAE;QACC,aAAa;QACb,OAAO;KACV,CAAC,CAAC;IAEH,wCAAwC;IACxC,SAAS,CAAC;QACN,IAAI,WAAW,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO;QACX,CAAC;QAED,IAAM,cAAc,GAAG;;;;;;wBAEf,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,wBAAwB,IAAI,CAAC,yBAAyB,IAAI,CAAC,4BAA4B,EAAE,CAAC;4BAClI,sBAAO,IAAI,EAAC;wBAChB,CAAC;wBAEG,SAAS,GAAG,SAAS,CAAC;wBAC1B,IAAI,OAAO,EAAE,CAAC;4BACV,IAAI,CAAC;gCACK,cAAc,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;gCAC/D,IAAI,cAAc,EAAE,CAAC;oCACX,YAAY,GAAG,uBAAgB,OAAO,CAAE,CAAC;oCACzC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oCAC3D,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;wCAC3B,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;wCACpC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE;4CACrD,SAAS,EAAE,eAAe;yCAC7B,CAAC,CAAC;oCACP,CAAC;gCACL,CAAC;4BACL,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;4BAC1E,CAAC;wBACL,CAAC;wBAEK,IAAI,GAAG,IAAI,QAAQ,CAAC;4BACtB,IAAI,EAAE,IAAI;4BACV,OAAO,SAAA;4BACP,YAAY,EAAE,wBAAwB;4BACtC,aAAa,EAAE,yBAAyB;4BACxC,iBAAiB,EAAE,4BAA4B;4BAC/C,SAAS,WAAA;4BACT,aAAa,EAAE,aAAa;4BAC5B,SAAS,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;yBACpC,CAAC,CAAC;;;;wBAGC,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA5B,SAA4B,CAAC;;;;;;wBAGjC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAClB,sBAAO,IAAI,EAAC;;;wBAEZ,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAK,CAAC,CAAC;wBACjD,WAAW,CAAC,IAAI,CAAC,CAAC;wBAClB,sBAAO,IAAI,EAAC;;;;aAEnB,CAAC;QAEF,gFAAgF;QAChF,IACI,wBAAwB;YACxB,yBAAyB;YACzB,4BAA4B;YAC5B,aAAa;YACb,QAAQ,KAAK,IAAI,EACnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC9D,cAAc,EAAE,CAAC;QACrB,CAAC;IACL,CAAC,EAAE;QACC,WAAW;QACX,IAAI;QACJ,OAAO;QACP,yBAAyB;QACzB,wBAAwB;QACxB,4BAA4B;QAC5B,aAAa;QACb,QAAQ;QACR,WAAW;KACd,CAAC,CAAC;AACP,CAAC","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, setSignMessageWithWalletKey, setSignTransactionWithWalletKey, dynamicWallet } = useN1WalletInternalContext();\n\n const { address, nordUser, sessionMode, nord, signMessageWithSessionKey, signMessageWithWalletKey, 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 createWalletSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signWithWallet = async (msg: Uint8Array): Promise<Uint8Array> => {\n try {\n const hexMsg = Buffer.from(msg).toString('hex');\n const signature = await dynamicWallet.signMessage(hexMsg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n } catch (error) {\n console.error('Error signing 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(() => signWithWallet);\n return signWithWallet;\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 }\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 const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n try {\n const tempKeyPair = await generateSessionKeyPair();\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n publicKey: tempKeyPair.publicKey,\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\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 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 (!signMessageWithWalletKey && dynamicWallet) {\n createWalletSignFunction();\n }\n\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 || !signMessageWithWalletKey || !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 address,\n walletSignFn: signMessageWithWalletKey,\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 signMessageWithWalletKey &&\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 signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\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 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, setSignMessageWithWalletKey, setSignTransactionWithWalletKey, dynamicWallet } = useN1WalletInternalContext();\n\n const { address, nordUser, sessionMode, nord, signMessageWithSessionKey, signMessageWithWalletKey, 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 createWalletSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signWithWallet = async (msg: Uint8Array): Promise<Uint8Array> => {\n try {\n const hexMsg = Buffer.from(msg).toString('hex');\n const signature = await dynamicWallet.signMessage(hexMsg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n } catch (error) {\n console.error('Error signing 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(() => signWithWallet);\n return signWithWallet;\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 }\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 (!signMessageWithWalletKey && dynamicWallet) {\n createWalletSignFunction();\n }\n\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 || !signMessageWithWalletKey || !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 address,\n walletSignFn: signMessageWithWalletKey,\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 signMessageWithWalletKey &&\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 signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\n ]);\n} "]}
@@ -12,6 +12,10 @@ export declare enum N1SessionMode {
12
12
  Nord = 0,
13
13
  NTS = 1
14
14
  }
15
+ export interface CssColorOverride {
16
+ color: string;
17
+ replacement: string;
18
+ }
15
19
  export interface N1WalletProviderProps {
16
20
  children: React.ReactNode;
17
21
  providedSessionMode: N1SessionMode;
@@ -20,6 +24,14 @@ export interface N1WalletProviderProps {
20
24
  onError?: (error: WalletError) => void;
21
25
  faucetUrl?: string;
22
26
  nord?: Nord;
27
+ /**
28
+ * Optional array of color overrides: [{color: '#original', replacement: '#new'}]
29
+ */
30
+ colorOverrides?: CssColorOverride[];
31
+ /**
32
+ * If true, skip the final success screen and immediately call onDone
33
+ */
34
+ skipFinalScreen?: boolean;
23
35
  }
24
36
  export interface Balance {
25
37
  mint: string;
@@ -134,4 +146,5 @@ export interface N1InternalWalletState {
134
146
  darkMode: boolean;
135
147
  sessionMode: N1SessionMode | null;
136
148
  faucetUrl?: string;
149
+ skipFinalScreen?: boolean;
137
150
  }
@@ -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 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\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 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 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 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 showSidebar: boolean;\n startClosingLogin: boolean;\n showDynamicWidget: any;\n setShowDynamicWidget: (show: any) => void;\n darkMode: boolean;\n sessionMode: N1SessionMode | null;\n faucetUrl?: string;\n}\n"]}
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 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 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 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 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"]}
@@ -0,0 +1,2 @@
1
+ declare const _default: ".n1-wallet-widget{*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }\n /*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-bottom-2{bottom:-.5rem}.-left-2{left:-.5rem}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.left-1\\/2{left:50%}.right-0{right:0}.right-2{right:.5rem}.top-0{top:0}.top-1{top:.25rem}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-3{top:.75rem}.top-full{top:100%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\\[200\\]{z-index:200}.z-\\[9999\\]{z-index:9999}.m-4{margin:1rem}.m-auto{margin:auto}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.-mb-3{margin-bottom:-.75rem}.-ml-3{margin-left:-.75rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-0{margin-right:0}.mr-0\\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-36{height:9rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-80{height:20rem}.h-\\[14px\\]{height:14px}.h-\\[20px\\]{height:20px}.h-\\[32px\\]{height:32px}.h-\\[calc\\(100vh-144px\\)\\]{height:calc(100vh - 144px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-0{max-height:0}.max-h-20{max-height:5rem}.max-h-\\[200px\\]{max-height:200px}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[500px\\]{max-height:500px}.w-1{width:.25rem}.w-1\\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-\\[250px\\]{width:250px}.w-\\[2px\\]{width:2px}.w-\\[300px\\]{width:300px}.w-\\[420px\\]{width:420px}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.min-w-24{min-width:6rem}.min-w-96{min-width:24rem}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[160px\\]{min-width:160px}.min-w-\\[280px\\]{min-width:280px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-\\[65\\%\\]{max-width:65%}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.origin-center{transform-origin:center}.origin-left{transform-origin:left}.-translate-y-1{--tw-translate-y:-0.25rem}.-translate-y-1,.-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\\/2{--tw-translate-y:-50%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-\\[-200\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\\[-200\\%\\]{--tw-translate-x:-200%}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-2{--tw-translate-y:0.5rem}.translate-y-2,.translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y:1rem}.translate-y-\\[-2px\\]{--tw-translate-y:-2px}.translate-y-\\[-2px\\],.translate-y-\\[2px\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[2px\\]{--tw-translate-y:2px}.rotate-180{--tw-rotate:180deg}.rotate-180,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.scale-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-x-0{--tw-scale-x:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1px*var(--tw-space-y-reverse));margin-top:calc(1px*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-n1-ww-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(234 234 234/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\\[15px\\]{border-radius:15px}.rounded-\\[18px\\]{border-radius:18px}.rounded-\\[20px\\]{border-radius:20px}.rounded-\\[25px\\]{border-radius:25px}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[3px\\]{border-radius:3px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l-sm{border-bottom-left-radius:.125rem;border-top-left-radius:.125rem}.rounded-r-sm{border-bottom-right-radius:.125rem;border-top-right-radius:.125rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity,1))}.border-emerald-900{--tw-border-opacity:1;border-color:rgb(6 78 59/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.border-n1-ww-gray-100{--tw-border-opacity:1;border-color:rgb(247 247 247/var(--tw-border-opacity,1))}.border-n1-ww-gray-200{--tw-border-opacity:1;border-color:rgb(234 234 234/var(--tw-border-opacity,1))}.border-n1-ww-main{--tw-border-opacity:1;border-color:rgb(255 68 26/var(--tw-border-opacity,1))}.border-n1-ww-main\\/40{border-color:rgba(255,68,26,.4)}.border-n1-ww-main\\/80{border-color:rgba(255,68,26,.8)}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity,1))}.border-b-n1-ww-main{--tw-border-opacity:1;border-bottom-color:rgb(255 68 26/var(--tw-border-opacity,1))}.border-t-transparent{border-top-color:transparent}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\\/20{background-color:rgba(0,0,0,.2)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-emerald-900{--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-100\\/50{background-color:rgba(220,252,231,.5)}.bg-green-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.bg-n1-ww-gray-100{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity,1))}.bg-n1-ww-gray-200{--tw-bg-opacity:1;background-color:rgb(234 234 234/var(--tw-bg-opacity,1))}.bg-n1-ww-gray-300{--tw-bg-opacity:1;background-color:rgb(217 217 217/var(--tw-bg-opacity,1))}.bg-n1-ww-gray-50{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-n1-ww-main{--tw-bg-opacity:1;background-color:rgb(255 68 26/var(--tw-bg-opacity,1))}.bg-n1-ww-main\\/10{background-color:rgba(255,68,26,.1)}.bg-n1-ww-main\\/40{background-color:rgba(255,68,26,.4)}.bg-n1-ww-main\\/5{background-color:rgba(255,68,26,.05)}.bg-n1-ww-main\\/\\[0\\.02\\]{background-color:rgba(255,68,26,.02)}.bg-n1-ww-main\\/\\[0\\.03\\]{background-color:rgba(255,68,26,.03)}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-100\\/50{background-color:hsla(0,93%,94%,.5)}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\\/30{background-color:hsla(0,0%,100%,.3)}.bg-white\\/45{background-color:hsla(0,0%,100%,.45)}.bg-white\\/70{background-color:hsla(0,0%,100%,.7)}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity,1))}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-green-500{--tw-gradient-from:#22c55e var(--tw-gradient-from-position);--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-500\\/10{--tw-gradient-from:rgba(34,197,94,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500\\/10{--tw-gradient-from:rgba(239,68,68,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-white{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-green-500{--tw-gradient-to:#22c55e var(--tw-gradient-to-position)}.to-green-500\\/5{--tw-gradient-to:rgba(34,197,94,.05) var(--tw-gradient-to-position)}.to-red-500{--tw-gradient-to:#ef4444 var(--tw-gradient-to-position)}.to-red-500\\/5{--tw-gradient-to:rgba(239,68,68,.05) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-2{padding-bottom:.5rem}.pl-4{padding-left:1rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-era{font-family:Monument Grotesk,sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\\[10px\\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-500\\/50{color:rgba(34,197,94,.5)}.text-green-500\\/80{color:rgba(34,197,94,.8)}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-n1-ww-gray-400{--tw-text-opacity:1;color:rgb(173 173 173/var(--tw-text-opacity,1))}.text-n1-ww-gray-50{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-n1-ww-gray-500{--tw-text-opacity:1;color:rgb(142 142 142/var(--tw-text-opacity,1))}.text-n1-ww-gray-600{--tw-text-opacity:1;color:rgb(112 112 112/var(--tw-text-opacity,1))}.text-n1-ww-gray-700{--tw-text-opacity:1;color:rgb(70 70 70/var(--tw-text-opacity,1))}.text-n1-ww-gray-800{--tw-text-opacity:1;color:rgb(27 27 27/var(--tw-text-opacity,1))}.text-n1-ww-gray-900{--tw-text-opacity:1;color:rgb(20 20 20/var(--tw-text-opacity,1))}.text-n1-ww-main{--tw-text-opacity:1;color:rgb(255 68 26/var(--tw-text-opacity,1))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\\[0_0_0_1px_rgba\\(255\\2c 68\\2c 26\\2c 0\\.1\\)\\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_0_1px_rgba\\(255\\2c 68\\2c 26\\2c 0\\.1\\)\\]{--tw-shadow:0 0 0 1px rgba(255,68,26,.1);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.sepia{--tw-sepia:sepia(100%)}.filter,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-md,.backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[max-width\\2c transform\\2c opacity\\]{transition-duration:.15s;transition-property:max-width,transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.delay-300{transition-delay:.3s}.delay-500{transition-delay:.5s}.delay-700{transition-delay:.7s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-\\[3000ms\\]{transition-duration:3s}.ease-\\[cubic-bezier\\(0\\.16\\2c 1\\2c 0\\.3\\2c 1\\)\\]{transition-timing-function:cubic-bezier(.16,1,.3,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-\\[max-width\\2c transform\\2c opacity\\]{will-change:max-width,transform,opacity}.\\@container{container-type:inline-size}@keyframes n1-ww-blink{0%,to{opacity:1}50%{opacity:0}}.n1-ww-animate-blink{animation:n1-ww-blink .8s infinite}@keyframes n1-ww-squareLoader{0%{height:0;opacity:.2}40%{height:100%;opacity:1}60%{height:100%;opacity:1}to{height:0;opacity:.2}}.n1-ww-animate-square-loader{animation:n1-ww-squareLoader 2s ease-in-out infinite}@keyframes n1-ww-contentAppear{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.n1-ww-animate-content-appear{animation:n1-ww-contentAppear .3s cubic-bezier(.16,1,.3,1) forwards}@keyframes n1-ww-fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.n1-ww-animate-fade-in{animation:n1-ww-fadeIn var(--duration,.3s) ease-out forwards;animation-delay:var(--delay,0s)}@keyframes n1-ww-fadeOut{0%{opacity:1;transform:scale(1)}50%{opacity:1;transform:scale(.5)}to{opacity:0;transform:scale(0)}}.n1-ww-animate-fade-out{animation:n1-ww-fadeOut 3s forwards}@keyframes n1-ww-fadeDelayed{0%,50%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.n1-ww-animate-fade-delayed{animation:n1-ww-fadeDelayed 2s cubic-bezier(.16,1,.3,1) forwards;animation-delay:2s}@keyframes n1-ww-fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.n1-ww-typing-container{position:relative}.n1-ww-typing-container:after{background:#ff441a;content:\"\";height:24px;position:absolute;right:-4px;top:50%;transform:translateY(-50%);width:4px}.n1-ww-typing-text{animation:n1-ww-typing .5s steps(30) forwards;animation-delay:.1s;display:inline-block;overflow:hidden;width:0}@keyframes n1-ww-typing{0%{width:0}to{width:100%}}.n1-ww-table-value.n1-ww-show-value{animation:n1-ww-showTableValue .3s ease forwards}@keyframes n1-ww-showTableValue{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.n1-ww-typing-message{display:inline-block;overflow:hidden;white-space:nowrap;width:0}.n1-ww-typing-message.n1-ww-start-typing{animation:n1-ww-typingMessage .8s steps(20) forwards}@keyframes n1-ww-typingMessage{0%{width:0}to{width:100%}}.n1-ww-typing-button-text{animation:n1-ww-typeButton .8s steps(20) forwards;display:inline-block;overflow:hidden;width:0}.n1-ww-typing-cursor{background:#ff441a;display:inline-block;height:24px;margin-left:2px;transform:translateY(-2px);vertical-align:middle;width:4px}@keyframes n1-ww-typeButton{0%{width:0}to{width:100%}}@keyframes n1-ww-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes n1-ww-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.1)}}@keyframes n1-ww-content-appear{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes n1-ww-square-loader{0%{height:0;opacity:.2}40%{height:100%;opacity:1}60%{height:100%;opacity:1}to{height:0;opacity:.2}}@keyframes n1-ww-fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}border:none!important;.n1-ww-animate-fade-in{animation:n1-ww-fade-in .3s ease-out forwards}.n1-ww-animate-fade-out{animation:n1-ww-fade-out .3s ease-out forwards}.n1-ww-animate-content-appear{animation:n1-ww-content-appear .3s ease-out forwards}.n1-ww-animate-square-loader{animation:n1-ww-square-loader 2s ease-in-out infinite}.n1-ww-animate-fade-up{animation:n1-ww-fade-up .3s ease-out forwards}}.first\\:ml-0:first-child{margin-left:0}.last\\:mr-0:last-child{margin-right:0}.hover\\:scale-\\[0\\.99\\]:hover{--tw-scale-x:0.99;--tw-scale-y:0.99;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity,1))}.hover\\:border-n1-ww-gray-300:hover{--tw-border-opacity:1;border-color:rgb(217 217 217/var(--tw-border-opacity,1))}.hover\\:border-n1-ww-gray-400:hover{--tw-border-opacity:1;border-color:rgb(173 173 173/var(--tw-border-opacity,1))}.hover\\:border-n1-ww-main:hover{--tw-border-opacity:1;border-color:rgb(255 68 26/var(--tw-border-opacity,1))}.hover\\:border-red-500:hover{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.hover\\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\\:bg-n1-ww-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity,1))}.hover\\:bg-n1-ww-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(234 234 234/var(--tw-bg-opacity,1))}.hover\\:bg-n1-ww-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\\:bg-n1-ww-main\\/90:hover{background-color:rgba(255,68,26,.9)}.hover\\:bg-red-50\\/50:hover{background-color:hsla(0,86%,97%,.5)}.hover\\:bg-red-800:hover{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity,1))}.hover\\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity,1))}.hover\\:font-bold:hover{font-weight:700}.hover\\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.hover\\:text-green-700:hover{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.hover\\:text-n1-ww-gray-500:hover{--tw-text-opacity:1;color:rgb(142 142 142/var(--tw-text-opacity,1))}.hover\\:text-n1-ww-gray-700:hover{--tw-text-opacity:1;color:rgb(70 70 70/var(--tw-text-opacity,1))}.hover\\:text-n1-ww-gray-900:hover{--tw-text-opacity:1;color:rgb(20 20 20/var(--tw-text-opacity,1))}.hover\\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.hover\\:text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\\:text-yellow-900:hover{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.hover\\:opacity-80:hover{opacity:.8}.focus\\:border-n1-ww-gray-400:focus{--tw-border-opacity:1;border-color:rgb(173 173 173/var(--tw-border-opacity,1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-1:focus,.focus\\:ring:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-n1-ww-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(173 173 173/var(--tw-ring-opacity,1))}.focus\\:ring-orange-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(254 215 170/var(--tw-ring-opacity,1))}.active\\:scale-\\[0\\.98\\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98}.active\\:scale-\\[0\\.98\\]:active,.group:hover .group-hover\\:scale-105{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.group:hover .group-hover\\:scale-x-100{--tw-scale-x:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:text-n1-ww-gray-700{--tw-text-opacity:1;color:rgb(70 70 70/var(--tw-text-opacity,1))}.group:hover .group-hover\\:text-n1-ww-gray-900{--tw-text-opacity:1;color:rgb(20 20 20/var(--tw-text-opacity,1))}.group:hover .group-hover\\:text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.group:hover .group-hover\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.group:hover .group-hover\\:opacity-100{opacity:1}.group:hover .group-hover\\:opacity-80{opacity:.8}.group:hover .group-hover\\:grayscale-0{--tw-grayscale:grayscale(0);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@container (min-width: 28rem){.\\@md\\:w-auto{width:auto}.\\@md\\:flex-grow-0{flex-grow:0}.\\@md\\:flex-row{flex-direction:row}.\\@md\\:items-center{align-items:center}.\\@md\\:gap-0{gap:0}.\\@md\\:px-5{padding-left:1.25rem;padding-right:1.25rem}}.dark\\:divide-n1-ww-gray-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(27 27 27/var(--tw-divide-opacity,1))}.dark\\:border-emerald-800\\/30:is(.dark *){border-color:rgba(6,95,70,.3)}.dark\\:border-emerald-900\\/30:is(.dark *){border-color:rgba(6,78,59,.3)}.dark\\:border-green-900\\/30:is(.dark *){border-color:rgba(20,83,45,.3)}.dark\\:border-n1-ww-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(70 70 70/var(--tw-border-opacity,1))}.dark\\:border-n1-ww-gray-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(27 27 27/var(--tw-border-opacity,1))}.dark\\:border-neutral-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.dark\\:border-neutral-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity,1))}.dark\\:border-red-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.dark\\:border-red-800\\/30:is(.dark *){border-color:rgba(153,27,27,.3)}.dark\\:border-red-900\\/30:is(.dark *){border-color:rgba(127,29,29,.3)}.dark\\:border-yellow-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.dark\\:bg-black\\/10:is(.dark *){background-color:rgba(0,0,0,.1)}.dark\\:bg-black\\/40:is(.dark *){background-color:rgba(0,0,0,.4)}.dark\\:bg-black\\/45:is(.dark *){background-color:rgba(0,0,0,.45)}.dark\\:bg-blue-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.dark\\:bg-blue-900\\/20:is(.dark *){background-color:rgba(30,58,138,.2)}.dark\\:bg-emerald-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.dark\\:bg-emerald-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.dark\\:bg-emerald-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity,1))}.dark\\:bg-emerald-900\\/10:is(.dark *){background-color:rgba(6,78,59,.1)}.dark\\:bg-green-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.dark\\:bg-green-900\\/10:is(.dark *){background-color:rgba(20,83,45,.1)}.dark\\:bg-green-900\\/20:is(.dark *){background-color:rgba(20,83,45,.2)}.dark\\:bg-green-900\\/30:is(.dark *){background-color:rgba(20,83,45,.3)}.dark\\:bg-n1-ww-dark-950:is(.dark *){--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity,1))}.dark\\:bg-n1-ww-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(112 112 112/var(--tw-bg-opacity,1))}.dark\\:bg-n1-ww-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(70 70 70/var(--tw-bg-opacity,1))}.dark\\:bg-n1-ww-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(27 27 27/var(--tw-bg-opacity,1))}.dark\\:bg-n1-ww-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 20 20/var(--tw-bg-opacity,1))}.dark\\:bg-n1-ww-gray-950:is(.dark *){--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity,1))}.dark\\:bg-n1-ww-main\\/20:is(.dark *){background-color:rgba(255,68,26,.2)}.dark\\:bg-neutral-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.dark\\:bg-neutral-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.dark\\:bg-neutral-900\\/80:is(.dark *){background-color:hsla(0,0%,9%,.8)}.dark\\:bg-neutral-950:is(.dark *){--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity,1))}.dark\\:bg-red-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.dark\\:bg-red-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.dark\\:bg-red-900\\/10:is(.dark *){background-color:rgba(127,29,29,.1)}.dark\\:bg-red-900\\/20:is(.dark *){background-color:rgba(127,29,29,.2)}.dark\\:bg-red-900\\/30:is(.dark *){background-color:rgba(127,29,29,.3)}.dark\\:bg-white:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.dark\\:bg-yellow-900\\/40:is(.dark *){background-color:rgba(113,63,18,.4)}.dark\\:via-n1-ww-gray-300:is(.dark *){--tw-gradient-to:hsla(0,0%,85%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#d9d9d9 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\\:text-black:is(.dark *){--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.dark\\:text-blue-300:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\\:text-blue-400:is(.dark *){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dark\\:text-emerald-400:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\\:text-emerald-500:is(.dark *){--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.dark\\:text-emerald-500\\/50:is(.dark *){color:rgba(16,185,129,.5)}.dark\\:text-emerald-500\\/80:is(.dark *){color:rgba(16,185,129,.8)}.dark\\:text-green-400:is(.dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(247 247 247/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(234 234 234/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(217 217 217/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(173 173 173/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-50:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(142 142 142/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-gray-600:is(.dark *){--tw-text-opacity:1;color:rgb(112 112 112/var(--tw-text-opacity,1))}.dark\\:text-n1-ww-main:is(.dark *){--tw-text-opacity:1;color:rgb(255 68 26/var(--tw-text-opacity,1))}.dark\\:text-neutral-300:is(.dark *){--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity,1))}.dark\\:text-neutral-400:is(.dark *){--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.dark\\:text-neutral-500:is(.dark *){--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.dark\\:text-neutral-900:is(.dark *){--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.dark\\:text-purple-400:is(.dark *){--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.dark\\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\\:text-red-500:is(.dark *){--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.dark\\:text-red-600:is(.dark *){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.dark\\:text-stone-200:is(.dark *){--tw-text-opacity:1;color:rgb(231 229 228/var(--tw-text-opacity,1))}.dark\\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\\:text-yellow-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.dark\\:opacity-10:is(.dark *){opacity:.1}.dark\\:hover\\:border-emerald-600:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity,1))}.dark\\:hover\\:border-n1-ww-gray-500:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(142 142 142/var(--tw-border-opacity,1))}.dark\\:hover\\:border-n1-ww-gray-600:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(112 112 112/var(--tw-border-opacity,1))}.dark\\:hover\\:border-n1-ww-gray-700:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(70 70 70/var(--tw-border-opacity,1))}.dark\\:hover\\:border-n1-ww-main:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(255 68 26/var(--tw-border-opacity,1))}.dark\\:hover\\:border-red-500:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.dark\\:hover\\:border-white\\/60:hover:is(.dark *){border-color:hsla(0,0%,100%,.6)}.dark\\:hover\\:bg-blue-900\\/30:hover:is(.dark *){background-color:rgba(30,58,138,.3)}.dark\\:hover\\:bg-emerald-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.dark\\:hover\\:bg-n1-ww-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(70 70 70/var(--tw-bg-opacity,1))}.dark\\:hover\\:bg-n1-ww-gray-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(27 27 27/var(--tw-bg-opacity,1))}.dark\\:hover\\:bg-n1-ww-gray-900:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 20 20/var(--tw-bg-opacity,1))}.dark\\:hover\\:bg-neutral-950:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity,1))}.dark\\:hover\\:text-emerald-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.dark\\:hover\\:text-emerald-400:hover:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\\:hover\\:text-n1-ww-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(234 234 234/var(--tw-text-opacity,1))}.dark\\:hover\\:text-n1-ww-gray-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(217 217 217/var(--tw-text-opacity,1))}.dark\\:hover\\:text-red-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\\:hover\\:text-red-500:hover:is(.dark *){--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.dark\\:hover\\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\\:hover\\:text-yellow-100:hover:is(.dark *){--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1))}.dark\\:focus\\:border-n1-ww-gray-600:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(112 112 112/var(--tw-border-opacity,1))}.dark\\:focus\\:ring-n1-ww-gray-600:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(112 112 112/var(--tw-ring-opacity,1))}.group:hover .dark\\:group-hover\\:text-n1-ww-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(217 217 217/var(--tw-text-opacity,1))}.group:hover .dark\\:group-hover\\:text-n1-ww-gray-50:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.group:hover .dark\\:group-hover\\:text-red-500:is(.dark *){--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.group:hover .dark\\:group-hover\\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:h-48{height:12rem}.sm\\:w-48{width:12rem}.sm\\:items-end{align-items:flex-end}.sm\\:justify-between{justify-content:space-between}}@media (min-width:768px){.md\\:text-2xl{font-size:1.5rem;line-height:2rem}.md\\:text-7xl{font-size:4.5rem;line-height:1}}";
2
+ export default _default;