@n1xyz/wallet-widget 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Logic/getPseudoName.js +1 -0
- package/dist/Logic/getPseudoName.js.map +1 -0
- package/dist/Logic/sessionManager.js +1 -0
- package/dist/Logic/sessionManager.js.map +1 -0
- package/dist/Logic/transactionManager.js +1 -0
- package/dist/Logic/transactionManager.js.map +1 -0
- package/dist/Logic/utils.js +1 -0
- package/dist/Logic/utils.js.map +1 -0
- package/dist/Logic/words.js +1 -0
- package/dist/Logic/words.js.map +1 -0
- package/dist/Modal/LoadingFallback.js +1 -0
- package/dist/Modal/LoadingFallback.js.map +1 -0
- package/dist/Modal/N1WalletModal.js +5 -5
- package/dist/Modal/N1WalletModal.js.map +1 -0
- package/dist/Modal/NTSFlow/LoadingFallback.js +1 -0
- package/dist/Modal/NTSFlow/LoadingFallback.js.map +1 -0
- package/dist/Modal/NTSFlow/NTSFlow.js +1 -0
- package/dist/Modal/NTSFlow/NTSFlow.js.map +1 -0
- package/dist/Modal/NTSFlow/components/BackButton.js +1 -0
- package/dist/Modal/NTSFlow/components/BackButton.js.map +1 -0
- package/dist/Modal/NTSFlow/components/ModalHeader.js +1 -0
- package/dist/Modal/NTSFlow/components/ModalHeader.js.map +1 -0
- package/dist/Modal/NTSFlow/index.js +1 -0
- package/dist/Modal/NTSFlow/index.js.map +1 -0
- package/dist/Modal/NTSFlow/views/ConnectView.js +1 -0
- package/dist/Modal/NTSFlow/views/ConnectView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/CreateSessionView.js +1 -0
- package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/CreateUserView.js +1 -0
- package/dist/Modal/NTSFlow/views/CreateUserView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/NoWhitelistView.js +1 -0
- package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/SigningView.js +1 -0
- package/dist/Modal/NTSFlow/views/SigningView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/SuccessView.js +1 -0
- package/dist/Modal/NTSFlow/views/SuccessView.js.map +1 -0
- package/dist/Modal/NordFlow/NordFlow.js +6 -10
- package/dist/Modal/NordFlow/NordFlow.js.map +1 -0
- package/dist/Modal/NordFlow/components/ChainButton.js +1 -0
- package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -0
- package/dist/Modal/NordFlow/components/EVMChainsButton.js +1 -0
- package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -0
- package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -0
- package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -0
- package/dist/Modal/NordFlow/components/LoadingSquares.js +1 -0
- package/dist/Modal/NordFlow/components/LoadingSquares.js.map +1 -0
- package/dist/Modal/NordFlow/components/MoreButton.js +1 -0
- package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -0
- package/dist/Modal/NordFlow/components/TransactionTable.js +1 -0
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -0
- package/dist/Modal/NordFlow/components/WaitingMessage.js +1 -0
- package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -0
- package/dist/Modal/NordFlow/components/index.js +1 -0
- package/dist/Modal/NordFlow/components/index.js.map +1 -0
- package/dist/Modal/NordFlow/constants.js +1 -0
- package/dist/Modal/NordFlow/constants.js.map +1 -0
- package/dist/Modal/NordFlow/hoc/index.js +1 -0
- package/dist/Modal/NordFlow/hoc/index.js.map +1 -0
- package/dist/Modal/NordFlow/hoc/withImageFallback.js +1 -0
- package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/index.js +1 -0
- package/dist/Modal/NordFlow/hooks/index.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useDepositFlow.js +31 -30
- package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useFlowState.js +44 -22
- package/dist/Modal/NordFlow/hooks/useFlowState.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useInterruptHandler.js +19 -16
- package/dist/Modal/NordFlow/hooks/useInterruptHandler.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -4
- package/dist/Modal/NordFlow/hooks/useNordInstance.js +65 -25
- package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +73 -52
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +1 -0
- package/dist/Modal/NordFlow/index.js +1 -0
- package/dist/Modal/NordFlow/index.js.map +1 -0
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +1 -0
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/index.js +1 -0
- package/dist/Modal/NordFlow/screens/index.js.map +1 -0
- package/dist/Modal/NordFlow/types.js +1 -0
- package/dist/Modal/NordFlow/types.js.map +1 -0
- package/dist/Modal/NordFlow/utils/imageUtils.js +1 -0
- package/dist/Modal/NordFlow/utils/imageUtils.js.map +1 -0
- package/dist/Modal/NordFlow/utils/index.js +1 -0
- package/dist/Modal/NordFlow/utils/index.js.map +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.js +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -0
- package/dist/Modal/NordFlow/utils/persistence.js +1 -0
- package/dist/Modal/NordFlow/utils/persistence.js.map +1 -0
- package/dist/Modal/Sidebar/N1Sidebar.js +2 -0
- package/dist/Modal/Sidebar/N1Sidebar.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +1 -0
- package/dist/Provider/LazyWalletProvider.js +1 -0
- package/dist/Provider/LazyWalletProvider.js.map +1 -0
- package/dist/Provider/N1WalletProvider.js +3 -12
- package/dist/Provider/N1WalletProvider.js.map +1 -0
- package/dist/Provider/context.js +1 -0
- package/dist/Provider/context.js.map +1 -0
- package/dist/Provider/hooks.js +1 -0
- package/dist/Provider/hooks.js.map +1 -0
- package/dist/Provider/icons/CoinbaseWalletIcon.js +1 -0
- package/dist/Provider/icons/CoinbaseWalletIcon.js.map +1 -0
- package/dist/Provider/icons/ConnectionDotsSVG.js +1 -0
- package/dist/Provider/icons/ConnectionDotsSVG.js.map +1 -0
- package/dist/Provider/icons/MetamaskIcon.js +1 -0
- package/dist/Provider/icons/MetamaskIcon.js.map +1 -0
- package/dist/Provider/icons/PhantomIcon.js +1 -0
- package/dist/Provider/icons/PhantomIcon.js.map +1 -0
- package/dist/Provider/icons/UserIcon.js +1 -0
- package/dist/Provider/icons/UserIcon.js.map +1 -0
- package/dist/Provider/icons/WalletConnectIcon.js +1 -0
- package/dist/Provider/icons/WalletConnectIcon.js.map +1 -0
- package/dist/Provider/index.js +1 -0
- package/dist/Provider/index.js.map +1 -0
- package/dist/Provider/types.js +1 -0
- package/dist/Provider/types.js.map +1 -0
- package/dist/WidgetButton/N1ConnectButton.js +1 -0
- package/dist/WidgetButton/N1ConnectButton.js.map +1 -0
- package/dist/components/Logo.js +1 -0
- package/dist/components/Logo.js.map +1 -0
- package/dist/components/QRCodeLoader.js +1 -0
- package/dist/components/QRCodeLoader.js.map +1 -0
- package/dist/components/logos/ArbitrumLogo.js +1 -0
- package/dist/components/logos/ArbitrumLogo.js.map +1 -0
- package/dist/components/logos/BaseLogo.js +1 -0
- package/dist/components/logos/BaseLogo.js.map +1 -0
- package/dist/components/logos/BeraLogo.js +1 -0
- package/dist/components/logos/BeraLogo.js.map +1 -0
- package/dist/components/logos/BitcoinLogo.js +1 -0
- package/dist/components/logos/BitcoinLogo.js.map +1 -0
- package/dist/components/logos/EVMChainsGroup.js +1 -0
- package/dist/components/logos/EVMChainsGroup.js.map +1 -0
- package/dist/components/logos/EthereumLogo.js +1 -0
- package/dist/components/logos/EthereumLogo.js.map +1 -0
- package/dist/components/logos/HyperliquidLogo.js +1 -0
- package/dist/components/logos/HyperliquidLogo.js.map +1 -0
- package/dist/components/logos/MoreChainsGroup.js +1 -0
- package/dist/components/logos/MoreChainsGroup.js.map +1 -0
- package/dist/components/logos/OptimismLogo.js +1 -0
- package/dist/components/logos/OptimismLogo.js.map +1 -0
- package/dist/components/logos/SolanaLogo.js +1 -0
- package/dist/components/logos/SolanaLogo.js.map +1 -0
- package/dist/components/logos/index.js +1 -0
- package/dist/components/logos/index.js.map +1 -0
- package/dist/config/solana.js +1 -0
- package/dist/config/solana.js.map +1 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -0
- package/dist/errors/types.js +1 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/dynamicImports.js +1 -0
- package/dist/utils/dynamicImports.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.js +26 -2
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/shortenString.js +1 -0
- package/dist/utils/shortenString.js.map +1 -0
- package/package.json +2 -2
- package/dist/Modal/BackButton.d.ts +0 -3
- package/dist/Modal/BackButton.js +0 -26
- package/dist/Modal/ConnectView.d.ts +0 -1
- package/dist/Modal/ConnectView.js +0 -68
- package/dist/Modal/CreateSessionView.d.ts +0 -1
- package/dist/Modal/CreateSessionView.js +0 -248
- package/dist/Modal/CreateUserView.d.ts +0 -1
- package/dist/Modal/CreateUserView.js +0 -160
- package/dist/Modal/ModalHeader.d.ts +0 -1
- package/dist/Modal/ModalHeader.js +0 -20
- package/dist/Modal/NTSFlow/NordFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/Modal/NTSFlow/NordFlow/WalletConnectionFlow.js +0 -145
- package/dist/Modal/NTSFlow/NordFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/Modal/NTSFlow/NordFlow/components/AnimatedButton.js +0 -75
- package/dist/Modal/NTSFlow/NordFlow/components/ChainButton.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/components/ChainButton.js +0 -5
- package/dist/Modal/NTSFlow/NordFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/Modal/NTSFlow/NordFlow/components/LoadingSquares.js +0 -5
- package/dist/Modal/NTSFlow/NordFlow/components/TransactionTable.d.ts +0 -13
- package/dist/Modal/NTSFlow/NordFlow/components/TransactionTable.js +0 -58
- package/dist/Modal/NTSFlow/NordFlow/components/WaitingMessage.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/components/WaitingMessage.js +0 -6
- package/dist/Modal/NTSFlow/NordFlow/components/index.d.ts +0 -5
- package/dist/Modal/NTSFlow/NordFlow/components/index.js +0 -5
- package/dist/Modal/NTSFlow/NordFlow/constants.d.ts +0 -37
- package/dist/Modal/NTSFlow/NordFlow/constants.js +0 -223
- package/dist/Modal/NTSFlow/NordFlow/hooks/index.d.ts +0 -8
- package/dist/Modal/NTSFlow/NordFlow/hooks/index.js +0 -8
- package/dist/Modal/NTSFlow/NordFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/hooks/useButtonTyping.js +0 -43
- package/dist/Modal/NTSFlow/NordFlow/hooks/useDepositFlow.d.ts +0 -38
- package/dist/Modal/NTSFlow/NordFlow/hooks/useDepositFlow.js +0 -166
- package/dist/Modal/NTSFlow/NordFlow/hooks/useFlowState.d.ts +0 -32
- package/dist/Modal/NTSFlow/NordFlow/hooks/useFlowState.js +0 -163
- package/dist/Modal/NTSFlow/NordFlow/hooks/useInterruptHandler.d.ts +0 -27
- package/dist/Modal/NTSFlow/NordFlow/hooks/useInterruptHandler.js +0 -101
- package/dist/Modal/NTSFlow/NordFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/Modal/NTSFlow/NordFlow/hooks/useNordSession.js +0 -193
- package/dist/Modal/NTSFlow/NordFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/Modal/NTSFlow/NordFlow/hooks/useTableValues.js +0 -69
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWalletConnect.d.ts +0 -30
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWalletConnect.js +0 -132
- package/dist/Modal/NTSFlow/NordFlow/index.d.ts +0 -3
- package/dist/Modal/NTSFlow/NordFlow/index.js +0 -3
- package/dist/Modal/NTSFlow/NordFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/01-ConnectWalletScreen.js +0 -17
- package/dist/Modal/NTSFlow/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -47
- package/dist/Modal/NTSFlow/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/03-ChainSelectionScreen.js +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/04-AmountInputScreen.d.ts +0 -8
- package/dist/Modal/NTSFlow/NordFlow/screens/04-AmountInputScreen.js +0 -20
- package/dist/Modal/NTSFlow/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/05-DepositProgressScreen.js +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
- package/dist/Modal/NTSFlow/NordFlow/screens/06-DepositSuccessScreen.js +0 -99
- package/dist/Modal/NTSFlow/NordFlow/screens/07-NordAuthScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/07-NordAuthScreen.js +0 -14
- package/dist/Modal/NTSFlow/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/08-AuthLoadingScreen.js +0 -20
- package/dist/Modal/NTSFlow/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/Modal/NTSFlow/NordFlow/screens/09-FinalSuccessScreen.js +0 -18
- package/dist/Modal/NTSFlow/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/10-ErrorScreen.js +0 -13
- package/dist/Modal/NTSFlow/NordFlow/screens/index.d.ts +0 -10
- package/dist/Modal/NTSFlow/NordFlow/screens/index.js +0 -10
- package/dist/Modal/NTSFlow/NordFlow/types.d.ts +0 -105
- package/dist/Modal/NTSFlow/NordFlow/types.js +0 -34
- package/dist/Modal/NTSFlow/NordFlow/utils/persistence.d.ts +0 -24
- package/dist/Modal/NTSFlow/NordFlow/utils/persistence.js +0 -83
- package/dist/Modal/NoWhitelistView.d.ts +0 -1
- package/dist/Modal/NoWhitelistView.js +0 -42
- package/dist/Modal/NordFlow/NordFlowWrapper.d.ts +0 -11
- package/dist/Modal/NordFlow/NordFlowWrapper.js +0 -11
- package/dist/Modal/NordFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/Modal/NordFlow/WalletConnectionFlow.js +0 -145
- package/dist/Modal/NordFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/Modal/NordFlow/components/AnimatedButton.js +0 -75
- package/dist/Modal/NordFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/Modal/NordFlow/hooks/useButtonTyping.js +0 -43
- package/dist/Modal/NordFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/Modal/NordFlow/hooks/useNordSession.js +0 -391
- package/dist/Modal/NordFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/Modal/NordFlow/hooks/useTableValues.js +0 -69
- package/dist/Modal/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/Modal/NordFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/Modal/NordFlow/hooks/useWalletConnect.d.ts +0 -14
- package/dist/Modal/NordFlow/hooks/useWalletConnect.js +0 -221
- package/dist/Modal/NordFlow/index copy.d.ts +0 -1
- package/dist/Modal/NordFlow/index copy.js +0 -1
- package/dist/Modal/NordFlow/screens/07-NordAuthScreen.d.ts +0 -5
- package/dist/Modal/NordFlow/screens/07-NordAuthScreen.js +0 -17
- package/dist/Modal/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/Modal/NordFlow/screens/08-AuthLoadingScreen.js +0 -153
- package/dist/Modal/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/Modal/NordFlow/screens/09-FinalSuccessScreen.js +0 -47
- package/dist/Modal/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/Modal/NordFlow/screens/10-ErrorScreen.js +0 -62
- package/dist/Modal/Sidebar/NordTradingView/AccountSummary/AccountSummary.d.ts +0 -1
- package/dist/Modal/Sidebar/NordTradingView/AccountSummary/AccountSummary.js +0 -116
- package/dist/Modal/Sidebar/NordTradingView/TradeHistory/TradeHistory.d.ts +0 -5
- package/dist/Modal/Sidebar/NordTradingView/TradeHistory/TradeHistory.js +0 -138
- package/dist/Modal/SigningView.d.ts +0 -1
- package/dist/Modal/SigningView.js +0 -5
- package/dist/Modal/SuccessView.d.ts +0 -1
- package/dist/Modal/SuccessView.js +0 -10
- package/dist/NordFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/NordFlow/WalletConnectionFlow.js +0 -145
- package/dist/NordFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/NordFlow/components/AnimatedButton.js +0 -75
- package/dist/NordFlow/components/ChainButton.d.ts +0 -7
- package/dist/NordFlow/components/ChainButton.js +0 -5
- package/dist/NordFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/NordFlow/components/LoadingSquares.js +0 -5
- package/dist/NordFlow/components/TransactionTable.d.ts +0 -13
- package/dist/NordFlow/components/TransactionTable.js +0 -58
- package/dist/NordFlow/components/WaitingMessage.d.ts +0 -6
- package/dist/NordFlow/components/WaitingMessage.js +0 -6
- package/dist/NordFlow/components/index.d.ts +0 -5
- package/dist/NordFlow/components/index.js +0 -5
- package/dist/NordFlow/constants.d.ts +0 -37
- package/dist/NordFlow/constants.js +0 -223
- package/dist/NordFlow/hooks/index.d.ts +0 -8
- package/dist/NordFlow/hooks/index.js +0 -8
- package/dist/NordFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/NordFlow/hooks/useButtonTyping.js +0 -43
- package/dist/NordFlow/hooks/useDepositFlow.d.ts +0 -38
- package/dist/NordFlow/hooks/useDepositFlow.js +0 -166
- package/dist/NordFlow/hooks/useFlowState.d.ts +0 -32
- package/dist/NordFlow/hooks/useFlowState.js +0 -163
- package/dist/NordFlow/hooks/useInterruptHandler.d.ts +0 -27
- package/dist/NordFlow/hooks/useInterruptHandler.js +0 -101
- package/dist/NordFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/NordFlow/hooks/useNordSession.js +0 -193
- package/dist/NordFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/NordFlow/hooks/useTableValues.js +0 -69
- package/dist/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/NordFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/NordFlow/hooks/useWalletConnect.d.ts +0 -30
- package/dist/NordFlow/hooks/useWalletConnect.js +0 -132
- package/dist/NordFlow/index.d.ts +0 -3
- package/dist/NordFlow/index.js +0 -3
- package/dist/NordFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
- package/dist/NordFlow/screens/01-ConnectWalletScreen.js +0 -17
- package/dist/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
- package/dist/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -47
- package/dist/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
- package/dist/NordFlow/screens/03-ChainSelectionScreen.js +0 -7
- package/dist/NordFlow/screens/04-AmountInputScreen.d.ts +0 -8
- package/dist/NordFlow/screens/04-AmountInputScreen.js +0 -20
- package/dist/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -7
- package/dist/NordFlow/screens/05-DepositProgressScreen.js +0 -6
- package/dist/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
- package/dist/NordFlow/screens/06-DepositSuccessScreen.js +0 -99
- package/dist/NordFlow/screens/07-NordAuthScreen.d.ts +0 -7
- package/dist/NordFlow/screens/07-NordAuthScreen.js +0 -14
- package/dist/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/NordFlow/screens/08-AuthLoadingScreen.js +0 -20
- package/dist/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/NordFlow/screens/09-FinalSuccessScreen.js +0 -18
- package/dist/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/NordFlow/screens/10-ErrorScreen.js +0 -13
- package/dist/NordFlow/screens/index.d.ts +0 -10
- package/dist/NordFlow/screens/index.js +0 -10
- package/dist/NordFlow/types.d.ts +0 -105
- package/dist/NordFlow/types.js +0 -34
- package/dist/NordFlow/utils/persistence.d.ts +0 -24
- package/dist/NordFlow/utils/persistence.js +0 -83
- package/dist/WalletConnectionFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/WalletConnectionFlow/WalletConnectionFlow.js +0 -145
- package/dist/WalletConnectionFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/WalletConnectionFlow/components/AnimatedButton.js +0 -75
- package/dist/WalletConnectionFlow/components/ChainButton.d.ts +0 -7
- package/dist/WalletConnectionFlow/components/ChainButton.js +0 -5
- package/dist/WalletConnectionFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/WalletConnectionFlow/components/LoadingSquares.js +0 -5
- package/dist/WalletConnectionFlow/components/TransactionTable.d.ts +0 -13
- package/dist/WalletConnectionFlow/components/TransactionTable.js +0 -58
- package/dist/WalletConnectionFlow/components/WaitingMessage.d.ts +0 -6
- package/dist/WalletConnectionFlow/components/WaitingMessage.js +0 -6
- package/dist/WalletConnectionFlow/components/index.d.ts +0 -5
- package/dist/WalletConnectionFlow/components/index.js +0 -5
- package/dist/WalletConnectionFlow/constants.d.ts +0 -37
- package/dist/WalletConnectionFlow/constants.js +0 -223
- package/dist/WalletConnectionFlow/hooks/index.d.ts +0 -8
- package/dist/WalletConnectionFlow/hooks/index.js +0 -8
- package/dist/WalletConnectionFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/WalletConnectionFlow/hooks/useButtonTyping.js +0 -43
- package/dist/WalletConnectionFlow/hooks/useDepositFlow.d.ts +0 -38
- package/dist/WalletConnectionFlow/hooks/useDepositFlow.js +0 -166
- package/dist/WalletConnectionFlow/hooks/useFlowState.d.ts +0 -32
- package/dist/WalletConnectionFlow/hooks/useFlowState.js +0 -163
- package/dist/WalletConnectionFlow/hooks/useInterruptHandler.d.ts +0 -27
- package/dist/WalletConnectionFlow/hooks/useInterruptHandler.js +0 -101
- package/dist/WalletConnectionFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/WalletConnectionFlow/hooks/useNordSession.js +0 -193
- package/dist/WalletConnectionFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/WalletConnectionFlow/hooks/useTableValues.js +0 -69
- package/dist/WalletConnectionFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/WalletConnectionFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/WalletConnectionFlow/hooks/useWalletConnect.d.ts +0 -30
- package/dist/WalletConnectionFlow/hooks/useWalletConnect.js +0 -132
- package/dist/WalletConnectionFlow/index.d.ts +0 -3
- package/dist/WalletConnectionFlow/index.js +0 -3
- package/dist/WalletConnectionFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/01-ConnectWalletScreen.js +0 -17
- package/dist/WalletConnectionFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/02-EvmWalletAuthScreen.js +0 -47
- package/dist/WalletConnectionFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/03-ChainSelectionScreen.js +0 -7
- package/dist/WalletConnectionFlow/screens/04-AmountInputScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/04-AmountInputScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/05-DepositProgressScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/05-DepositProgressScreen.js +0 -6
- package/dist/WalletConnectionFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/06-DepositSuccessScreen.js +0 -99
- package/dist/WalletConnectionFlow/screens/07-NordAuthScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/07-NordAuthScreen.js +0 -14
- package/dist/WalletConnectionFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/08-AuthLoadingScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/WalletConnectionFlow/screens/09-FinalSuccessScreen.js +0 -18
- package/dist/WalletConnectionFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/10-ErrorScreen.js +0 -13
- package/dist/WalletConnectionFlow/screens/AmountInputScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/AmountInputScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/AppsTableScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/AppsTableScreen.js +0 -28
- package/dist/WalletConnectionFlow/screens/AuthLoadingScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/AuthLoadingScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/ChainSelectionScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/ChainSelectionScreen.js +0 -7
- package/dist/WalletConnectionFlow/screens/ConnectWalletScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/ConnectWalletScreen.js +0 -17
- package/dist/WalletConnectionFlow/screens/DepositProgressScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/DepositProgressScreen.js +0 -6
- package/dist/WalletConnectionFlow/screens/DepositSuccessScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/DepositSuccessScreen.js +0 -99
- package/dist/WalletConnectionFlow/screens/ErrorScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/ErrorScreen.js +0 -13
- package/dist/WalletConnectionFlow/screens/EthToSolAuthScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/EthToSolAuthScreen.js +0 -47
- package/dist/WalletConnectionFlow/screens/EvmWalletAuthScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/EvmWalletAuthScreen.js +0 -47
- package/dist/WalletConnectionFlow/screens/FinalSuccessScreen.d.ts +0 -5
- package/dist/WalletConnectionFlow/screens/FinalSuccessScreen.js +0 -18
- package/dist/WalletConnectionFlow/screens/NordAuthScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/NordAuthScreen.js +0 -14
- package/dist/WalletConnectionFlow/screens/SigningScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/SigningScreen.js +0 -6
- package/dist/WalletConnectionFlow/screens/index.d.ts +0 -10
- package/dist/WalletConnectionFlow/screens/index.js +0 -10
- package/dist/WalletConnectionFlow/types.d.ts +0 -105
- package/dist/WalletConnectionFlow/types.js +0 -34
- package/dist/WalletConnectionFlow/utils/persistence.d.ts +0 -24
- package/dist/WalletConnectionFlow/utils/persistence.js +0 -83
- package/dist/components/LazyLoadWrapper.d.ts +0 -8
- package/dist/components/LazyLoadWrapper.js +0 -17
- package/dist/components/WalletDeposit/AnimatedButton.d.ts +0 -17
- package/dist/components/WalletDeposit/AnimatedButton.js +0 -29
- package/dist/components/WalletDeposit/components/ChainButton.d.ts +0 -7
- package/dist/components/WalletDeposit/components/ChainButton.js +0 -5
- package/dist/components/WalletDeposit/components/LoadingSquares.d.ts +0 -1
- package/dist/components/WalletDeposit/components/LoadingSquares.js +0 -5
- package/dist/components/WalletDeposit/components/TransactionTable.d.ts +0 -13
- package/dist/components/WalletDeposit/components/TransactionTable.js +0 -58
- package/dist/components/WalletDeposit/components/WaitingMessage.d.ts +0 -6
- package/dist/components/WalletDeposit/components/WaitingMessage.js +0 -6
- package/dist/components/WalletDeposit/constants.d.ts +0 -15
- package/dist/components/WalletDeposit/constants.js +0 -32
- package/dist/components/WalletDeposit/hooks.d.ts +0 -9
- package/dist/components/WalletDeposit/hooks.js +0 -185
- package/dist/components/WalletDeposit/index.d.ts +0 -1
- package/dist/components/WalletDeposit/index.js +0 -136
- package/dist/components/WalletDeposit/screens/AmountInputScreen.d.ts +0 -12
- package/dist/components/WalletDeposit/screens/AmountInputScreen.js +0 -18
- package/dist/components/WalletDeposit/screens/AppsTableScreen.d.ts +0 -8
- package/dist/components/WalletDeposit/screens/AppsTableScreen.js +0 -28
- package/dist/components/WalletDeposit/screens/ChainSelectionScreen.d.ts +0 -5
- package/dist/components/WalletDeposit/screens/ChainSelectionScreen.js +0 -8
- package/dist/components/WalletDeposit/screens/InitialScreen.d.ts +0 -9
- package/dist/components/WalletDeposit/screens/InitialScreen.js +0 -18
- package/dist/components/WalletDeposit/screens/SigningScreen.d.ts +0 -6
- package/dist/components/WalletDeposit/screens/SigningScreen.js +0 -6
- package/dist/components/WalletDeposit/screens/SuccessScreen.d.ts +0 -12
- package/dist/components/WalletDeposit/screens/SuccessScreen.js +0 -7
- package/dist/components/WalletDeposit/types.d.ts +0 -48
- package/dist/components/WalletDeposit/types.js +0 -1
- package/dist/config/dynamic.d.ts +0 -20
- package/dist/config/dynamic.js +0 -47
- package/dist/hooks/useSolanaSession.d.ts +0 -17
- package/dist/hooks/useSolanaSession.js +0 -180
- package/dist/utils/lazyLoad.d.ts +0 -3
- package/dist/utils/lazyLoad.js +0 -9
- package/dist/utils/react-shim.d.ts +0 -2
- package/dist/utils/react-shim.js +0 -6
- package/dist/utils/solana-session.d.ts +0 -84
- package/dist/utils/solana-session.js +0 -230
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"04-AmountInputScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/04-AmountInputScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { ImageWithFallback } from '../components';\nimport { ANIMATION_EASE } from '../constants';\nimport { formatAmount, isNordConfigured } from '../utils/nordUtils';\n\ninterface AmountInputScreenProps {\n amount: string;\n onAmountChange: (amount: string) => void;\n onContinue: () => void;\n balance: number;\n faucetUrl?: string;\n refreshBalance?: () => Promise<void>;\n depositError?: string;\n}\n\nexport function AmountInputScreen({\n amount: _amount, // Renamed to _amount since we're not using the prop\n onAmountChange,\n onContinue,\n balance: _balance, // Renamed to _balance since we're overriding it\n faucetUrl: propFaucetUrl,\n refreshBalance,\n depositError,\n}: AmountInputScreenProps) {\n // Hard code amount to 100\n const amount = '100';\n // Hard code balance to 0 to allow faucet to trigger\n const balance = 0;\n\n // Force the amount to be 100 on component mount only, not on every render\n useEffect(() => {\n onAmountChange('100');\n // Empty dependency array ensures this only runs once on mount\n }, []);\n\n const [isHovered, setIsHovered] = useState(false);\n const [isFaucetLoading, setIsFaucetLoading] = useState(false);\n const [faucetError, setFaucetError] = useState<string | null>(null);\n const [tokensObtained, setTokensObtained] = useState(false);\n const [showFaucetSuccess, setShowFaucetSuccess] = useState(false);\n const { address, nord } = useN1WalletContext();\n const { faucetUrl: contextFaucetUrl } = useN1WalletInternalContext();\n const prevBalanceRef = useRef(balance);\n\n const faucetUrl = propFaucetUrl || contextFaucetUrl;\n\n // Get token information from Nord if available\n const [tokenSymbol, setTokenSymbol] = useState('USDC');\n const [tokenLogo, setTokenLogo] = useState('/images/tokens/usdc.svg');\n const [tokenDecimals, setTokenDecimals] = useState(6);\n\n // Try to get token information from Nord\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n // Find the USDC token or the first token\n const usdcToken =\n nord.tokens.find((t: any) => t.symbol === 'USDC') || nord.tokens[0];\n if (usdcToken) {\n setTokenSymbol(usdcToken.symbol);\n // Use a default logo if not available\n setTokenLogo(`/images/tokens/${usdcToken.symbol.toLowerCase()}.svg`);\n setTokenDecimals(usdcToken.decimals);\n }\n } catch (error) {\n console.warn('Error getting token information from Nord:', error);\n }\n }\n }, [nord]);\n\n // Removed handleAmountChange since we don't want user to edit the amount\n\n // todo:fix\n const isValidAmount = true;\n\n // Hard code MIN_DEPOSIT to 100\n const hardcodedMinDeposit = 100;\n // Hard code MAX_DEPOSIT to 100\n const hardcodedMaxDeposit = 100;\n\n // Check if faucet is enabled and balance is low\n const shouldShowFaucet =\n faucetUrl && balance < hardcodedMinDeposit && !tokensObtained;\n\n // Determine if we should show the faucet overlay\n const showFaucetOverlay =\n (shouldShowFaucet && (isFaucetLoading || faucetError)) || showFaucetSuccess;\n\n // Function to request tokens from faucet\n const requestTestnetTokens = useCallback(async () => {\n if (!faucetUrl || !address) return;\n\n try {\n setIsFaucetLoading(true);\n setFaucetError(null);\n setShowFaucetSuccess(false);\n\n const response = await fetch(faucetUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ address }),\n });\n\n if (!response.ok) {\n const errorData = await response\n .json()\n .catch(() => ({ error: 'Failed to request tokens' }));\n throw new Error(errorData.error || 'Failed to request tokens');\n }\n\n await response.json();\n\n // Mark tokens as obtained to prevent further requests\n setTokensObtained(true);\n\n // Show success message\n setShowFaucetSuccess(true);\n\n // Refresh balance if the function is provided\n if (refreshBalance) {\n await refreshBalance();\n }\n\n setShowFaucetSuccess(false);\n } catch (error) {\n console.error('Faucet error:', error);\n setFaucetError(\n error instanceof Error ? error.message : 'Failed to request tokens'\n );\n } finally {\n setIsFaucetLoading(false);\n }\n }, [faucetUrl, address, refreshBalance]);\n\n // Request tokens automatically when faucet is enabled and balance is low\n useEffect(() => {\n if (\n shouldShowFaucet &&\n !isFaucetLoading &&\n !faucetError &&\n !showFaucetSuccess &&\n depositError == null\n ) {\n requestTestnetTokens();\n }\n }, [\n shouldShowFaucet,\n isFaucetLoading,\n faucetError,\n showFaucetSuccess,\n requestTestnetTokens,\n ]);\n\n // Reset tokensObtained state if balance changes to a higher value\n useEffect(() => {\n // If balance has increased and is now sufficient, reset the tokensObtained flag\n if (balance > prevBalanceRef.current && balance >= hardcodedMinDeposit) {\n setTokensObtained(false);\n setShowFaucetSuccess(false);\n }\n\n // Update the previous balance reference\n prevBalanceRef.current = balance;\n }, [balance, hardcodedMinDeposit]);\n\n // Format the balance with the appropriate number of decimal places\n const formattedBalance = formatAmount(balance, tokenDecimals);\n\n return (\n <div className=\"overflow-hidden relative\">\n {/* Faucet Overlay */}\n {showFaucetOverlay && (\n <div className=\"absolute inset-0 z-10 bg-white/70 dark:bg-neutral-900/80 backdrop-blur-md flex flex-col items-center justify-center p-6\">\n {isFaucetLoading ? (\n <>\n <div className=\"relative w-16 h-16 mb-4\">\n <div className=\"absolute inset-0 grid grid-cols-2 gap-1\">\n <div className=\"relative bg-white dark:bg-neutral-800 border border-gray-100 dark:border-neutral-700 overflow-hidden rounded-sm\">\n <div className=\"absolute inset-x-0 bottom-0 h-full bg-main/40 dark:bg-main/30 animate-square-loader\"></div>\n </div>\n <div className=\"relative bg-white dark:bg-neutral-800 border border-gray-100 dark:border-neutral-700 overflow-hidden rounded-sm\">\n <div\n className=\"absolute inset-x-0 bottom-0 h-full bg-main/40 dark:bg-main/30 animate-square-loader\"\n style={{ animationDelay: '0.2s' }}\n ></div>\n </div>\n <div className=\"relative bg-white dark:bg-neutral-800 border border-gray-100 dark:border-neutral-700 overflow-hidden rounded-sm\">\n <div\n className=\"absolute inset-x-0 bottom-0 h-full bg-main/40 dark:bg-main/30 animate-square-loader\"\n style={{ animationDelay: '0.4s' }}\n ></div>\n </div>\n <div className=\"relative bg-white dark:bg-neutral-800 border border-gray-100 dark:border-neutral-700 overflow-hidden rounded-sm\">\n <div\n className=\"absolute inset-x-0 bottom-0 h-full bg-main/40 dark:bg-main/30 animate-square-loader\"\n style={{ animationDelay: '0.6s' }}\n ></div>\n </div>\n </div>\n </div>\n <h3 className=\"text-lg font-medium text-gray-800 dark:text-white mb-2\">\n Obtaining Testnet Tokens\n </h3>\n <p className=\"text-sm text-gray-500 dark:text-neutral-400 text-center\">\n Please wait while we request testnet tokens for your wallet...\n </p>\n </>\n ) : showFaucetSuccess ? (\n <>\n <div className=\"text-green-500 text-4xl mb-4\">✓</div>\n <h3 className=\"text-lg font-medium text-gray-800 dark:text-white mb-2\">\n Tokens Obtained Successfully\n </h3>\n <p className=\"text-sm text-green-500 dark:text-green-400 text-center mb-4\">\n Your wallet has been funded with testnet tokens.\n </p>\n <p className=\"text-sm text-gray-500 dark:text-neutral-400 text-center\">\n Please wait while your balance updates...\n </p>\n </>\n ) : faucetError ? (\n <>\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h3 className=\"text-lg font-medium text-gray-800 dark:text-white mb-2\">\n Failed to Get Tokens\n </h3>\n <p className=\"text-sm text-red-500 dark:text-red-400 text-center mb-4\">\n {faucetError}\n </p>\n <button\n onClick={requestTestnetTokens}\n className=\"px-4 py-2 bg-main text-white rounded-md hover:bg-main/90 transition-colors\"\n >\n Try Again\n </button>\n </>\n ) : null}\n </div>\n )}\n\n <h2 className=\"text-xl text-gray-800 dark:text-white font-semibold mb-6 text-center\">\n Enter Amount\n </h2>\n\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-gray-500 dark:text-neutral-400\">\n Amount\n </span>\n <span className=\"text-sm text-gray-500 dark:text-neutral-400\">\n Balance: {formattedBalance} {tokenSymbol}\n </span>\n </div>\n <div className=\"relative\">\n <input\n type=\"text\"\n value={amount}\n readOnly\n className=\"w-full bg-white dark:bg-neutral-950 border-2 border-gray-100 dark:border-neutral-800 rounded-md px-4 py-3 text-gray-900 dark:text-white placeholder-gray-400 dark:placeholder-neutral-500 focus:outline-none focus:ring-0 focus:border-main dark:focus:border-main transition-colors duration-200 cursor-not-allowed\"\n />\n <div className=\"absolute right-4 top-1/2 -translate-y-1/2 flex items-center gap-2\">\n <ImageWithFallback\n src={tokenLogo}\n width={20}\n height={20}\n alt={tokenSymbol}\n fallbackClassName=\"w-5 h-5 rounded-full text-xs font-bold flex items-center justify-center\"\n fallbackBgColor=\"bg-blue-100 dark:bg-blue-900\"\n fallbackTextColor=\"text-blue-500 dark:text-blue-300\"\n fallbackText={tokenSymbol.charAt(0)}\n />\n <span className=\"text-gray-400 dark:text-neutral-500\">\n {tokenSymbol}\n </span>\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-gray-400 dark:text-neutral-500\">\n Min: {hardcodedMinDeposit} {tokenSymbol}\n </span>\n <span className=\"text-xs text-gray-400 dark:text-neutral-500\">\n Max: {hardcodedMaxDeposit} {tokenSymbol}\n </span>\n </div>\n \n {/* Display deposit error if present */}\n {depositError && (\n <div className=\"mt-2 p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-md\">\n <div className=\"flex items-start\">\n <div className=\"flex-shrink-0 text-red-500\">\n <svg className=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n <div className=\"ml-3\">\n <h3 className=\"text-sm font-medium text-red-800 dark:text-red-300\">\n Deposit Failed\n </h3>\n <div className=\"mt-2 text-xs text-red-600 dark:text-red-400\">\n Please try again.\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <button\n onClick={onContinue}\n disabled={!isValidAmount}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-gray-200 dark:border-gray-800 hover:border-gray-400 dark:hover:border-white/60\n ${!isValidAmount ? 'opacity-50 cursor-not-allowed hover:border-gray-200 dark:hover:border-gray-800' : ''}\n `}\n style={{\n transform: isHovered && isValidAmount ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n `}\n >\n Continue\n </span>\n </button>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -43,3 +43,4 @@ export function DepositProgressScreen(_a) {
|
|
|
43
43
|
var sessionMessage = getSessionSpecificMessage();
|
|
44
44
|
return (_jsxs("div", { className: "overflow-hidden relative", children: [_jsx(WaitingMessage, { message: sessionMessage }), _jsxs("div", { className: "text-center mt-4 text-sm text-gray-500", children: ["Time elapsed: ", elapsedTime, "s / ", maxTime, "s"] })] }));
|
|
45
45
|
}
|
|
46
|
+
//# sourceMappingURL=05-DepositProgressScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"05-DepositProgressScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/05-DepositProgressScreen.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM5C,MAAM,UAAU,qBAAqB,CAAC,EAAuC;QAArC,OAAO,aAAA;IACrC,IAAA,WAAW,GAAK,0BAA0B,EAAE,YAAjC,CAAkC;IAC/C,IAAA,KAAgC,QAAQ,CAAC,CAAC,CAAC,EAA1C,WAAW,QAAA,EAAE,cAAc,QAAe,CAAC;IAClD,IAAM,OAAO,GAAG,GAAG,CAAC,CAAC,0BAA0B;IAE/C,oCAAoC;IACpC,SAAS,CAAC;QACR,IAAM,KAAK,GAAG,WAAW,CAAC;YACxB,cAAc,CAAC,UAAC,QAAQ;gBACtB,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBACxB,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,OAAO,QAAQ,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,4BAA4B;QAC5B,OAAO,cAAM,OAAA,aAAa,CAAC,KAAK,CAAC,EAApB,CAAoB,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,0DAA0D;IAC1D,IAAM,yBAAyB,GAAG;QAChC,IAAM,kBAAkB,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,aAAa,CAAC,GAAG,CAAC;QAC5D,IAAM,WAAW,GACf,kBAAkB,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAE7D,6BACK,OAAO,KACV,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,qBAAc,WAAW,aAAU,EAC3D,QAAQ,EACN,OAAO,CAAC,QAAQ;gBAChB,4CAAqC,WAAW,aAAU,IAC5D;IACJ,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,yBAAyB,EAAE,CAAC;IAEnD,OAAO,CACL,eAAK,SAAS,EAAC,0BAA0B,aACvC,KAAC,cAAc,IAAC,OAAO,EAAE,cAAc,GAAI,EAC3C,eAAK,SAAS,EAAC,wCAAwC,+BACtC,WAAW,UAAM,OAAO,SACnC,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { WaitingMessage } from '../components/WaitingMessage';\nimport { WaitingMessageState } from '../types';\nimport { useN1WalletInternalContext } from '../../../Provider/hooks';\nimport { N1SessionMode } from '../../../Provider/types';\nimport { useState, useEffect } from 'react';\n\ninterface DepositProgressScreenProps {\n message: WaitingMessageState;\n}\n\nexport function DepositProgressScreen({ message }: DepositProgressScreenProps) {\n const { sessionMode } = useN1WalletInternalContext();\n const [elapsedTime, setElapsedTime] = useState(0);\n const maxTime = 300; // Maximum time in seconds\n\n // Start timer when component mounts\n useEffect(() => {\n const timer = setInterval(() => {\n setElapsedTime((prevTime) => {\n if (prevTime >= maxTime) {\n clearInterval(timer);\n return maxTime;\n }\n return prevTime + 1;\n });\n }, 1000);\n\n // Clean up timer on unmount\n return () => clearInterval(timer);\n }, []);\n\n // Determine the appropriate message based on session mode\n const getSessionSpecificMessage = () => {\n const currentSessionMode = sessionMode ?? N1SessionMode.NTS;\n const accountType =\n currentSessionMode === N1SessionMode.Nord ? 'Nord' : 'NTS';\n\n return {\n ...message,\n title: message.title || `Processing ${accountType} Deposit`,\n subtitle:\n message.subtitle ||\n `Please wait while we process your ${accountType} deposit`,\n };\n };\n\n const sessionMessage = getSessionSpecificMessage();\n\n return (\n <div className=\"overflow-hidden relative\">\n <WaitingMessage message={sessionMessage} />\n <div className=\"text-center mt-4 text-sm text-gray-500\">\n Time elapsed: {elapsedTime}s / {maxTime}s\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -119,3 +119,4 @@ export function DepositSuccessScreen(_a) {
|
|
|
119
119
|
transform: isHovered && isContinueEnabled ? 'scale(0.99)' : 'scale(1)',
|
|
120
120
|
}, disabled: !isContinueEnabled, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n "), children: "Continue" }) })] })] }) }) }));
|
|
121
121
|
}
|
|
122
|
+
//# sourceMappingURL=06-DepositSuccessScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"06-DepositSuccessScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/06-DepositSuccessScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { TransactionTable } from '../components/TransactionTable';\nimport { ANIMATION_EASE, TYPING_INTERVAL } from '../constants';\nimport { TableValues } from '../types';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { isNordConfigured } from '../utils/nordUtils';\n\ninterface DepositSuccessScreenProps {\n amount: string;\n tableValues: TableValues;\n onContinue: () => void;\n}\n\nexport function DepositSuccessScreen({\n amount,\n tableValues,\n onContinue,\n}: DepositSuccessScreenProps) {\n const { nord } = useN1WalletContext();\n const [isHovered, setIsHovered] = useState(false);\n const [showDetails, setShowDetails] = useState(false);\n const [animatedTableValues, setAnimatedTableValues] = useState<TableValues>({\n amount: { text: '', visible: false, typing: false },\n tx: { text: '', visible: false, typing: false },\n from: { text: '', visible: false, typing: false },\n to: { text: '', visible: false, typing: false },\n network: { text: '', visible: false, typing: false },\n status: { text: '', visible: false, typing: false },\n });\n // Add state to track if the button should be enabled\n const [isContinueEnabled, setIsContinueEnabled] = useState(false);\n // Add state to show a message about waiting\n const [showWaitingMessage, setShowWaitingMessage] = useState(true);\n\n // Get token information from Nord if available\n const [tokenSymbol, setTokenSymbol] = useState('USDC');\n\n // Try to get token information from Nord\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n // Find the USDC token or the first token\n const usdcToken =\n nord.tokens.find((t) => t.symbol === 'USDC') || nord.tokens[0];\n if (usdcToken) {\n setTokenSymbol(usdcToken.symbol);\n }\n } catch (error) {\n console.warn('Error getting token information from Nord:', error);\n }\n }\n }, [nord]);\n\n // Add animation to table values\n useEffect(() => {\n if (!showDetails) return;\n\n // Extract the text values from the tableValues\n const values = {\n amount: `${Number(amount).toLocaleString()} ${tokenSymbol}`,\n tx: tableValues.tx.text,\n from: tableValues.from.text,\n to: tableValues.to.text,\n network: tableValues.network.text,\n status: tableValues.status.text,\n };\n\n // Animate each field with typing effect\n Object.entries(values).forEach(([key, value], index) => {\n setTimeout(() => {\n // Make the field visible first\n setAnimatedTableValues((prev) => ({\n ...prev,\n [key]: {\n ...prev[key as keyof typeof prev],\n visible: true,\n typing: true,\n },\n }));\n\n let textIndex = 0;\n // Type out each character with the typing animation\n const interval = setInterval(() => {\n if (textIndex <= value.length) {\n setAnimatedTableValues((prev) => ({\n ...prev,\n [key]: {\n text: value.slice(0, textIndex),\n visible: true,\n typing: textIndex < value.length,\n },\n }));\n textIndex++;\n } else {\n clearInterval(interval);\n setAnimatedTableValues((prev) => ({\n ...prev,\n [key]: {\n text: value,\n visible: true,\n typing: false,\n },\n }));\n }\n }, TYPING_INTERVAL);\n }, index * 300); // Slightly faster staggering for better UX\n });\n }, [tableValues, showDetails, amount, tokenSymbol]);\n\n // Enable the continue button after a minimum viewing time\n useEffect(() => {\n const enableTimer = setTimeout(() => {\n setIsContinueEnabled(true);\n setShowWaitingMessage(false);\n }, 4000);\n\n return () => clearTimeout(enableTimer);\n }, []);\n\n const toggleDetails = () => {\n setShowDetails((prev) => !prev);\n };\n\n return (\n <div className=\"relative w-full px-4\">\n <div className=\"flex flex-col space-y-6\">\n {/* Amount display */}\n <div className=\"w-full\">\n <div\n className={`relative w-full px-3 py-3 flex items-center justify-center transition-all duration-300 ${ANIMATION_EASE} ${showDetails ? 'opacity-0 max-h-0' : 'opacity-100 max-h-[200px]'}`}\n >\n <div\n className={`relative w-full px-5 py-8 transition-all duration-300 ${ANIMATION_EASE} ${\n showDetails ? 'max-h-0 overflow-hidden' : 'max-h-[200px]'\n }`}\n >\n <div className=\"w-2 h-2 bg-green-200 dark:bg-emerald-800 absolute -top-2 -left-2 rounded-sm\"></div>\n <div className=\"w-2 h-2 bg-green-200 dark:bg-emerald-800 absolute -top-2 -right-2 rounded-sm\"></div>\n <div className=\"w-2 h-2 bg-green-200 dark:bg-emerald-800 absolute -bottom-2 -left-2 rounded-sm\"></div>\n <div className=\"w-2 h-2 bg-green-200 dark:bg-emerald-800 absolute -bottom-2 -right-2 rounded-sm\"></div>\n <p\n className=\"text-5xl md:text-7xl tracking-tight text-green-500/80 dark:text-emerald-500/80 font-medium pt-4 underline text-center animate-fade-up\"\n style={{ animationDelay: '0.3s' }}\n >\n +{Number(amount).toLocaleString()}\n <span className=\"text-xl md:text-2xl text-green-500/50 dark:text-emerald-500/50 ml-2\">\n {tokenSymbol}\n </span>\n </p>\n\n {/* Subtle transaction details toggle positioned at the bottom of amount display */}\n <div className=\"absolute bottom-0 left-0 right-0 flex justify-center -mb-3\">\n <button\n onClick={toggleDetails}\n className={`\n group flex items-center space-x-1 px-3 py-1 text-xs font-medium \n transition-colors duration-200 focus:outline-none\n ${\n showDetails\n ? 'text-green-600 dark:text-emerald-400 hover:text-green-700 dark:hover:text-emerald-300'\n : 'text-gray-500 dark:text-gray-400 hover:text-green-600 dark:hover:text-emerald-400'\n }\n `}\n >\n <span>View details</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 transition-transform duration-200\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n <div\n className={`transition-all duration-300 ease-in-out overflow-hidden ${\n showDetails\n ? 'max-h-[500px] opacity-100 -mt-4'\n : 'max-h-0 opacity-0'\n }`}\n >\n <TransactionTable\n tableValues={animatedTableValues}\n onClose={toggleDetails}\n />\n </div>\n\n {/* Continue button */}\n <div className=\"mt-6\">\n {showWaitingMessage && (\n <p className=\"text-sm text-gray-600 dark:text-neutral-400 text-center mb-2 animate-pulse\">\n Please wait a moment...\n </p>\n )}\n <button\n onClick={isContinueEnabled ? onContinue : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-gray-200 dark:border-gray-800 hover:border-gray-400 dark:hover:border-white/60\n ${!isContinueEnabled ? 'opacity-50 cursor-not-allowed' : ''}\n `}\n style={{\n transform:\n isHovered && isContinueEnabled ? 'scale(0.99)' : 'scale(1)',\n }}\n disabled={!isContinueEnabled}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n `}\n >\n Continue\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -133,3 +133,4 @@ export function AuthLoadingScreen(_a) {
|
|
|
133
133
|
transform: isHovered ? 'scale(0.99)' : 'scale(1)',
|
|
134
134
|
}, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n "), children: "Try Again" }) }) }))] })] }));
|
|
135
135
|
}
|
|
136
|
+
//# sourceMappingURL=07-AuthLoadingScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"07-AuthLoadingScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/07-AuthLoadingScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState, useCallback, useRef } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { N1SessionMode } from '../../../Provider/types';\nimport { LoadingSquares } from '../components/LoadingSquares';\nimport { logger } from '../../../utils/logger';\nimport { ANIMATION_EASE } from '../constants';\n\ninterface AuthLoadingScreenProps {\n isCreatingAccount?: boolean;\n onAuthComplete?: (success: boolean) => void;\n}\n\nexport function AuthLoadingScreen({\n isCreatingAccount = false,\n onAuthComplete,\n}: AuthLoadingScreenProps) {\n const { sessionMode, setNordUser } = useN1WalletInternalContext();\n const { address, nord, nordUser } = useN1WalletContext();\n const [authStatus, setAuthStatus] = useState<'loading' | 'success' | 'error'>(\n 'loading'\n );\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [statusMessage, setStatusMessage] = useState<string | null>(null);\n const [isHovered, setIsHovered] = useState<boolean>(false);\n const authInitiatedRef = useRef(false);\n\n const performAuth = useCallback(async () => {\n try {\n // Step 1: Tell user to sign transaction\n setStatusMessage(\n 'Please sign the transaction to authenticate your session'\n );\n\n if (!nordUser) {\n throw new Error('Nord user is not initialized');\n }\n\n // Step 2: Call nordUser.refreshSession and get sessionId\n setStatusMessage('Session is being authenticated...');\n\n // Get the session public key from the nordUser\n const sessionPubKey = nordUser.sessionPubKey;\n if (!sessionPubKey) {\n throw new Error('Session public key is not available');\n }\n\n // Refresh the session\n await nordUser.refreshSession(sessionPubKey);\n await nordUser.updateAccountId();\n\n // Get the sessionId after refresh\n const sessionId = nordUser.sessionId;\n if (!sessionId) {\n throw new Error('Failed to get session ID after refresh');\n }\n\n logger.debug('Session refreshed successfully', {\n sessionId: sessionId.toString(),\n });\n\n // Step 3: Store sessionId in localStorage\n if (address) {\n const sessionIdKey = `n1_sessionId_${address}`;\n localStorage.setItem(sessionIdKey, sessionId.toString());\n logger.debug('Stored sessionId in localStorage', { key: sessionIdKey });\n }\n\n // Step 4: Update status to success\n setAuthStatus('success');\n\n // Step 5: Call onAuthComplete callback with success=true\n if (onAuthComplete) {\n onAuthComplete(true);\n }\n setNordUser(nordUser);\n } catch (error) {\n console.error('Authentication error:', error);\n setAuthStatus('error');\n setErrorMessage(\n error instanceof Error ? error.message : 'Unknown error occurred'\n );\n }\n }, [onAuthComplete, isCreatingAccount, sessionMode, address, nord]);\n\n useEffect(() => {\n if (!authInitiatedRef.current) {\n authInitiatedRef.current = true;\n performAuth();\n }\n }, []);\n\n const handleRetry = () => {\n setAuthStatus('loading');\n setErrorMessage(null);\n setStatusMessage(null);\n performAuth();\n };\n\n return (\n <div className=\"flex flex-col items-center justify-center py-12 space-y-6\">\n {authStatus === 'loading' && <LoadingSquares />}\n {authStatus === 'success' && (\n <div className=\"text-green-500 text-4xl mb-4\">✓</div>\n )}\n {authStatus === 'error' && (\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n )}\n\n <div className=\"space-y-2 text-center w-[300px]\">\n <h3 className=\"text-xl text-gray-800 dark:text-white font-semibold\">\n {authStatus === 'loading' &&\n (isCreatingAccount ? 'Creating Account' : 'Authenticating')}\n {authStatus === 'success' &&\n (isCreatingAccount\n ? 'Account Created'\n : 'Authentication Successful')}\n {authStatus === 'error' && 'Authentication Failed'}\n </h3>\n <p className=\"text-sm text-gray-600 dark:text-neutral-400\">\n {authStatus === 'loading' && statusMessage\n ? statusMessage\n : 'Please wait while we create your Nord account'}\n {authStatus === 'success' &&\n (isCreatingAccount\n ? 'Your account has been created successfully'\n : 'You have been logged in successfully')}\n {authStatus === 'error' &&\n (errorMessage ||\n 'There was an error during authentication. Please try again.')}\n </p>\n\n {authStatus === 'error' && (\n <div className=\"mt-6\">\n <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-gray-200 dark:border-gray-800 hover:border-gray-400 dark:hover:border-white/60\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n `}\n >\n Try Again\n </span>\n </button>\n </div>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -34,3 +34,4 @@ export function FinalSuccessScreen(_a) {
|
|
|
34
34
|
transform: isHovered ? 'scale(0.99)' : 'scale(1)',
|
|
35
35
|
}, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n "), children: "Open App" }) })] }) }));
|
|
36
36
|
}
|
|
37
|
+
//# sourceMappingURL=08-FinalSuccessScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"08-FinalSuccessScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/08-FinalSuccessScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,MAAM,UAAU,kBAAkB,CAAC,EAAmC;QAAjC,MAAM,YAAA;IACnC,IAAA,KAA4B,QAAQ,CAAC,KAAK,CAAC,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAC;IAC5C,IAAA,KAAoB,kBAAkB,EAAE,EAAtC,IAAI,UAAA,EAAE,OAAO,aAAyB,CAAC;IACzC,IAAA,KAAkC,0BAA0B,EAAE,EAA5D,WAAW,iBAAA,EAAE,cAAc,oBAAiC,CAAC;IACrE,wDAAwD;IACxD,SAAS,CAAC;QACR,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,oEAAoE;IACpE,IAAM,QAAQ,GAAG;QACf,IAAI,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,4BAA4B,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,4BAA4B,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG;QACjB,IAAI,WAAW,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO,6CAA6C,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,6CAA6C,CAAC;QACvD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACvC,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,gDAAgD,aAC7D,cAAK,SAAS,EAAC,MAAM,YAEnB,cAAK,SAAS,EAAC,2FAA2F,YACxG,cACE,SAAS,EAAC,8CAA8C,EACxD,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,YAElC,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAC,GAAG,EACf,CAAC,EAAC,gBAAgB,GAClB,GACE,GACF,GACF,EAEN,aAAI,SAAS,EAAC,uEAAuE,YAClF,QAAQ,EAAE,GACR,EAEL,YAAG,SAAS,EAAC,yDAAyD,YACnE,UAAU,EAAE,GACX,EAGH,OAAO,IAAI,CACV,aAAG,SAAS,EAAC,8DAA8D,yBAChE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAC/B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IACpC,CACL,IACG,EAEN,iBACE,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EACvC,SAAS,EAAE,4KAEqB,cAAc,mIAE7C,EACD,KAAK,EAAE;wBACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;qBAClD,YAED,eACE,SAAS,EAAE,2FAC0D,cAAc,qHAEpF,yBAGM,GACA,IACL,GACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useState } from 'react';\nimport { ANIMATION_EASE } from '../constants';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { N1SessionMode } from '../../../Provider/types';\nimport { isNordConfigured } from '../utils/nordUtils';\nimport { useNordInstance } from '../hooks/useNordInstance';\n\ninterface FinalSuccessScreenProps {\n onDone: () => void;\n}\n\nexport function FinalSuccessScreen({ onDone }: FinalSuccessScreenProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { nord, address } = useN1WalletContext();\n const { sessionMode, setIsConnected } = useN1WalletInternalContext();\n // Add a minimum viewing time before enabling the button\n useEffect(() => {\n setIsConnected(true);\n }, []);\n\n // Get the appropriate title and message based on Nord configuration\n const getTitle = () => {\n if (nord && isNordConfigured(nord)) {\n return 'Authentication Successful!';\n } else {\n return 'Authentication Successful!';\n }\n };\n\n const getMessage = () => {\n if (sessionMode === N1SessionMode.Nord) {\n return 'Your wallet has been successfully connected';\n } else {\n return 'Your wallet has been successfully connected';\n }\n };\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"space-y-8\">\n <div className=\"flex flex-col items-center justify-center pt-4\">\n <div className=\"mb-6\">\n {/* Success icon/animation */}\n <div className=\"w-20 h-20 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-green-500 dark:text-green-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n </div>\n </div>\n\n <h2 className=\"text-2xl text-gray-800 dark:text-white font-semibold mb-2 text-center\">\n {getTitle()}\n </h2>\n\n <p className=\"text-lg text-gray-700 dark:text-neutral-300 text-center\">\n {getMessage()}\n </p>\n\n {/* Display wallet address if available */}\n {address && (\n <p className=\"text-sm text-gray-500 dark:text-neutral-400 text-center mt-2\">\n Wallet: {address.substring(0, 6)}...\n {address.substring(address.length - 4)}\n </p>\n )}\n </div>\n\n <button\n onClick={onDone}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-gray-200 dark:border-gray-800 hover:border-gray-400 dark:hover:border-white/60\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n `}\n >\n Open App\n </span>\n </button>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -65,3 +65,4 @@ export function ErrorScreen(_a) {
|
|
|
65
65
|
transform: isHovered === 'cancel' ? 'scale(0.99)' : 'scale(1)',
|
|
66
66
|
}, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-gray-500 dark:text-gray-400 group-hover:text-gray-700 dark:group-hover:text-gray-300\n "), children: "Cancel" }) })] })] }) }));
|
|
67
67
|
}
|
|
68
|
+
//# sourceMappingURL=09-ErrorScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"09-ErrorScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/09-ErrorScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAQtD,MAAM,UAAU,WAAW,CAAC,EAA8C;QAA5C,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,KAAK,WAAA;IAC9C,IAAA,KAA4B,QAAQ,CAA4B,IAAI,CAAC,EAApE,SAAS,QAAA,EAAE,YAAY,QAA6C,CAAC;IACpE,IAAA,IAAI,GAAK,kBAAkB,EAAE,KAAzB,CAA0B;IAChC,IAAA,KAAgC,QAAQ,CAAC,KAAK,CAAC,EAA9C,WAAW,QAAA,EAAE,cAAc,QAAmB,CAAC;IAEtD,wCAAwC;IACxC,SAAS,CAAC;QACR,IACE,KAAK;YACL,KAAK,CAAC,OAAO;YACb,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC9B,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAC9C,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,oCAAoC;IACpC,IAAM,eAAe,GAAG;QACtB,IAAI,CAAC,KAAK;YAAE,OAAO,8BAA8B,CAAC;QAElD,yCAAyC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACpC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EACjC,CAAC;gBACD,OAAO,gFAAgF,CAAC;YAC1F,CAAC;YAED,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACxC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC9B,CAAC;gBACD,OAAO,oDAAoD,CAAC;YAC9D,CAAC;YAED,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACjC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EACrC,CAAC;gBACD,OAAO,mDAAmD,CAAC;YAC7D,CAAC;YAED,OAAO,sBAAe,KAAK,CAAC,OAAO,CAAE,CAAC;QACxC,CAAC;QAED,wBAAwB;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,OAAO,mEAAmE,CAAC;QAC7E,CAAC;QAED,wBAAwB;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,sCAAsC;IACtC,IAAM,aAAa,GAAG;QACpB,IAAI,WAAW,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,8DAA8D,CAAC;QACxE,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,6DAA6D,CAAC;QACvE,CAAC;QAED,OAAO,6CAA6C,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACvC,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,gDAAgD,aAC7D,cAAK,SAAS,EAAC,MAAM,YAEnB,cAAK,SAAS,EAAC,uFAAuF,YACpG,cACE,SAAS,EAAC,0CAA0C,EACpD,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,YAElC,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAC,GAAG,EACf,CAAC,EAAC,sIAAsI,GACxI,GACE,GACF,GACF,EAEN,aAAI,SAAS,EAAC,sEAAsE,YACjF,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,GACjD,EAEL,YAAG,SAAS,EAAC,uEAAuE,YACjF,YAAY,GACX,EAEJ,YAAG,SAAS,EAAC,uEAAuE,YACjF,aAAa,EAAE,GACd,IACA,EAEN,eAAK,SAAS,EAAC,WAAW,aACxB,iBACE,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,OAAO,CAAC,EAArB,CAAqB,EACzC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,gLAEqB,cAAc,uIAE7C,EACD,KAAK,EAAE;gCACL,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;6BAC9D,YAED,eACE,SAAS,EAAE,6FAC0D,cAAc,yHAEpF,0BAGM,GACA,EAET,iBACE,OAAO,EAAE,QAAQ,EACjB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,QAAQ,CAAC,EAAtB,CAAsB,EAC1C,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,kNAEqB,cAAc,4FAE7C,EACD,KAAK,EAAE;gCACL,SAAS,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;6BAC/D,YAED,eACE,SAAS,EAAE,6FAC0D,cAAc,4HAEpF,uBAGM,GACA,IACL,IACF,GACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useState, useEffect } from 'react';\nimport { ANIMATION_EASE } from '../constants';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { isNordConfigured } from '../utils/nordUtils';\n\ninterface ErrorScreenProps {\n onRetry: () => void;\n onCancel: () => void;\n error: Error | null;\n}\n\nexport function ErrorScreen({ onRetry, onCancel, error }: ErrorScreenProps) {\n const [isHovered, setIsHovered] = useState<'retry' | 'cancel' | null>(null);\n const { nord } = useN1WalletContext();\n const [isNordError, setIsNordError] = useState(false);\n\n // Check if the error is related to Nord\n useEffect(() => {\n if (\n error &&\n error.message &&\n (error.message.includes('Nord') ||\n error.message.includes('nord') ||\n (error.name && error.name.includes('Nord')))\n ) {\n setIsNordError(true);\n } else {\n setIsNordError(false);\n }\n }, [error]);\n\n // Get a user-friendly error message\n const getErrorMessage = () => {\n if (!error) return 'An unexpected error occurred';\n\n // Check for specific Nord-related errors\n if (isNordError) {\n if (\n error.message.includes('connection') ||\n error.message.includes('network')\n ) {\n return 'Failed to connect to Nord. Please check your network connection and try again.';\n }\n\n if (\n error.message.includes('authentication') ||\n error.message.includes('auth')\n ) {\n return 'Authentication with Nord failed. Please try again.';\n }\n\n if (\n error.message.includes('deposit') ||\n error.message.includes('transaction')\n ) {\n return 'Failed to process your deposit. Please try again.';\n }\n\n return `Nord error: ${error.message}`;\n }\n\n // Generic wallet errors\n if (error.message.includes('wallet') || error.message.includes('Wallet')) {\n return 'There was an issue with your wallet connection. Please try again.';\n }\n\n // Default error message\n return error.message;\n };\n\n const errorMessage = getErrorMessage();\n\n // Get a suggestion based on the error\n const getSuggestion = () => {\n if (isNordError && nord && !isNordConfigured(nord)) {\n return 'Nord is not properly configured. Please check your settings.';\n }\n\n if (isNordError) {\n return 'You can try again or contact support if the issue persists.';\n }\n\n return 'Please try again or try a different wallet.';\n };\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"space-y-6\">\n <div className=\"flex flex-col items-center justify-center py-4\">\n <div className=\"mb-6\">\n {/* Error icon */}\n <div className=\"w-20 h-20 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-red-500 dark:text-red-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n </div>\n\n <h2 className=\"text-xl text-gray-800 dark:text-white font-semibold mb-2 text-center\">\n {isNordError ? 'Nord Error' : 'Something went wrong'}\n </h2>\n\n <p className=\"text-sm text-gray-600 dark:text-neutral-400 text-center mb-2 max-w-xs\">\n {errorMessage}\n </p>\n\n <p className=\"text-xs text-gray-500 dark:text-neutral-500 text-center mb-6 max-w-xs\">\n {getSuggestion()}\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <button\n onClick={onRetry}\n onMouseEnter={() => setIsHovered('retry')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-gray-200 dark:border-gray-800 hover:border-gray-400 dark:hover:border-white/60\n `}\n style={{\n transform: isHovered === 'retry' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-gray-700 dark:text-gray-300 group-hover:text-gray-900 dark:group-hover:text-white\n `}\n >\n Try Again\n </span>\n </button>\n\n <button\n onClick={onCancel}\n onMouseEnter={() => setIsHovered('cancel')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 border-gray-200 dark:border-gray-800 bg-white dark:bg-neutral-900 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer hover:bg-gray-50 dark:hover:bg-neutral-950\n `}\n style={{\n transform: isHovered === 'cancel' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-gray-500 dark:text-gray-400 group-hover:text-gray-700 dark:group-hover:text-gray-300\n `}\n >\n Cancel\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './01-ConnectWalletScreen';\nexport * from './02-EvmWalletAuthScreen';\nexport * from './03-ChainSelectionScreen';\nexport * from './04-AmountInputScreen';\nexport * from './05-DepositProgressScreen';\nexport * from './06-DepositSuccessScreen';\nexport * from './07-AuthLoadingScreen';\nexport * from './08-FinalSuccessScreen';\nexport * from './09-ErrorScreen';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;AACjB,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AA+BD;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAgB;IAC7C,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,SAAS;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC","sourcesContent":["import React from 'react';\n\n/**\n * Types for the wallet connection flow state machine\n */\n\n/**\n * Enum representing all possible states in the wallet connection flow\n */\nexport enum FlowState {\n IDLE = 'IDLE',\n CONNECTING_WALLET = 'CONNECTING_WALLET',\n ETH_TO_SOL_AUTH = 'ETH_TO_SOL_AUTH',\n CHAIN_SELECTION = 'CHAIN_SELECTION',\n AMOUNT_INPUT = 'AMOUNT_INPUT',\n DEPOSIT_PROGRESS = 'DEPOSIT_PROGRESS',\n DEPOSIT_SUCCESS = 'DEPOSIT_SUCCESS',\n AUTH_LOADING = 'AUTH_LOADING',\n FINAL_SUCCESS = 'FINAL_SUCCESS',\n ERROR = 'ERROR',\n}\n\n/**\n * Interface representing the flow context, containing all data necessary\n * for the wallet connection flow\n */\nexport interface FlowContext {\n walletType: 'solana' | 'ethereum' | null;\n hasNordAccount: boolean;\n hasActiveSession: boolean;\n selectedChain: string | null;\n amount: string;\n transactionId: string | null;\n error: Error | null;\n depositError?: string;\n lastInterruption: {\n timestamp: number;\n state: FlowState;\n context: Partial<FlowContext>;\n } | null;\n}\n\n/**\n * Interface for state transitions in the flow\n */\nexport interface StateTransition {\n from: FlowState | FlowState[];\n to: FlowState;\n condition?: (context: FlowContext) => boolean;\n}\n\n/**\n * Initial flow context with default values\n */\nexport const initialFlowContext: FlowContext = {\n walletType: null,\n hasNordAccount: false,\n hasActiveSession: false,\n selectedChain: null,\n amount: '',\n transactionId: null,\n error: null,\n depositError: undefined,\n lastInterruption: null,\n};\n\nexport interface TableValues {\n amount?: { text: string; visible: boolean; typing: boolean };\n tx: { text: string; visible: boolean; typing: boolean };\n from: { text: string; visible: boolean; typing: boolean };\n to: { text: string; visible: boolean; typing: boolean };\n network: { text: string; visible: boolean; typing: boolean };\n status: { text: string; visible: boolean; typing: boolean };\n}\n\nexport interface WaitingMessageState {\n title: string;\n subtitle: string;\n visible: boolean;\n isTyping: boolean;\n}\n\n/**\n * Interface for a blockchain network\n */\nexport interface Chain {\n id: string;\n name: string;\n logo: string | React.ReactNode;\n disabled?: boolean;\n network?: string;\n description?: string;\n}\n\nexport interface App {\n name: string;\n color: string;\n progress: number;\n}\n\nexport type ButtonKey = 'deposit' | 'continue' | 'openApp';\n\nexport interface ButtonState {\n text: string;\n isTyping: boolean;\n showCursor: boolean;\n}\n\nexport type ButtonStates = Record<ButtonKey, ButtonState>;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/imageUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,MAAM,CAAC,IAAM,YAAY,GAAG,UAAO,GAAW;;QAC5C,IAAI,CAAC,GAAG;YAAE,sBAAO,KAAK,EAAC;QAEvB,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO;gBACzB,IAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,GAAG,cAAM,OAAA,OAAO,CAAC,IAAI,CAAC,EAAb,CAAa,CAAC;gBACjC,GAAG,CAAC,OAAO,GAAG,cAAM,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,CAAC;gBACnC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;YAChB,CAAC,CAAC,EAAC;;KACJ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,UAC7B,OAAwB,EACxB,WAAoB;IAEpB,IAAI,CAAC;QACH,qDAAqD;QACrD,IAAM,OAAO,GACX,yEAAyE,CAAC;QAE5E,6CAA6C;QAC7C,IAAM,UAAU,GAA2B;YACzC,GAAG,EAAE,wBAAwB;YAC7B,IAAI,EAAE,0BAA0B;YAChC,KAAK,EAAE,uBAAuB;YAC9B,4BAA4B;SAC7B,CAAC;QAEF,IAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAG,OAAO,cAAI,UAAU,CAAC,UAAU,CAAC,CAAE,CAAC;QAChD,CAAC;QAED,OAAO,WAAW,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,WAAW,IAAI,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,eAAe,GAAG,UAC7B,WAAmB,EACnB,WAAoB;IAEpB,IAAI,CAAC;QACH,qDAAqD;QACrD,IAAM,OAAO,GACX,yFAAyF,CAAC;QAE5F,8DAA8D;QAC9D,IAAM,cAAc,GAA2B;YAC7C,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,4CAA4C;YAClD,GAAG,EAAE,4CAA4C;YACjD,4BAA4B;SAC7B,CAAC;QAEF,IAAI,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9C,OAAO,UAAG,OAAO,cAAI,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,cAAW,CAAC;QAC5E,CAAC;QAED,OAAO,WAAW,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,WAAW,IAAI,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC","sourcesContent":["/**\n * Checks if an image URL is valid and accessible\n * @param url The image URL to check\n * @returns A promise that resolves to true if the image is valid, false otherwise\n */\nexport const isImageValid = async (url: string): Promise<boolean> => {\n if (!url) return false;\n\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => resolve(true);\n img.onerror = () => resolve(false);\n img.src = url;\n });\n};\n\n/**\n * Gets chain icon URL with fallback\n * @param chainId The chain ID\n * @param fallbackUrl Optional fallback URL\n * @returns The chain icon URL or fallback\n */\nexport const getChainIconUrl = (\n chainId: string | number,\n fallbackUrl?: string\n): string => {\n try {\n // Example implementation - replace with actual logic\n const baseUrl =\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains';\n\n // Map of chain IDs to their respective paths\n const chainPaths: Record<string, string> = {\n '1': 'ethereum/info/logo.png',\n '56': 'smartchain/info/logo.png',\n '137': 'polygon/info/logo.png',\n // Add more chains as needed\n };\n\n const chainIdStr = chainId.toString();\n if (chainPaths[chainIdStr]) {\n return `${baseUrl}/${chainPaths[chainIdStr]}`;\n }\n\n return fallbackUrl || '';\n } catch (error) {\n console.error('Error getting chain icon URL:', error);\n return fallbackUrl || '';\n }\n};\n\n/**\n * Gets token icon URL with fallback\n * @param tokenSymbol The token symbol (e.g., 'ETH', 'USDC')\n * @param chainId Optional chain ID for chain-specific tokens\n * @param fallbackUrl Optional fallback URL\n * @returns The token icon URL or fallback\n */\nexport const getTokenIconUrl = (\n tokenSymbol: string,\n fallbackUrl?: string\n): string => {\n try {\n // Example implementation - replace with actual logic\n const baseUrl =\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets';\n\n // Map of token symbols to their respective contract addresses\n const tokenAddresses: Record<string, string> = {\n USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',\n // Add more tokens as needed\n };\n\n if (tokenAddresses[tokenSymbol.toUpperCase()]) {\n return `${baseUrl}/${tokenAddresses[tokenSymbol.toUpperCase()]}/logo.png`;\n }\n\n return fallbackUrl || '';\n } catch (error) {\n console.error('Error getting token icon URL:', error);\n return fallbackUrl || '';\n }\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC","sourcesContent":["export * from './imageUtils';\nexport * from './persistence';\nexport * from './nordUtils';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,UAAsB,EACtB,QAAoB;IADpB,2BAAA,EAAA,cAAsB;IACtB,yBAAA,EAAA,YAAoB;IAEpB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE5D,OAAO,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAE,CAAC;AACjG,CAAC","sourcesContent":["import { NordUser } from '@n1xyz/nord-ts';\n\n/**\n * Format a Nord transaction for display\n *\n * @param tx Transaction object\n * @returns Formatted transaction ID\n */\nexport function formatNordTransaction(tx: any): string {\n return tx.id\n ? tx.id.substring(0, 8) + '...' + tx.id.substring(tx.id.length - 8)\n : 'Unknown';\n}\n\n/**\n * Get token balance for a specific token\n *\n * @param nordUser NordUser instance\n * @param tokenSymbol Token symbol\n * @returns Token balance\n */\nexport function getTokenBalance(\n nordUser: NordUser | null,\n tokenSymbol: string\n): number {\n if (!nordUser || !nordUser.balances || !nordUser.balances[tokenSymbol]) {\n return 0;\n }\n\n const tokenBalances = nordUser.balances[tokenSymbol];\n return tokenBalances.reduce((total, balance) => total + balance.balance, 0);\n}\n\n/**\n * Check if Nord is properly configured\n *\n * @param nord Nord instance\n * @returns Whether Nord is properly configured\n */\nexport function isNordConfigured(nord: any): boolean {\n return !!nord && !!nord.webServerUrl && !!nord.solanaProgramId;\n}\n\n/**\n * Format an amount with the appropriate number of decimal places\n *\n * @param amount Amount to format\n * @param decimals Number of decimal places\n * @returns Formatted amount\n */\nexport function formatAmount(\n amount: number | string,\n decimals: number = 2\n): string {\n const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;\n return numAmount.toFixed(decimals);\n}\n\n/**\n * Shorten an address for display\n *\n * @param address Address to shorten\n * @param startChars Number of characters to show at the start\n * @param endChars Number of characters to show at the end\n * @returns Shortened address\n */\nexport function shortenAddress(\n address: string,\n startChars: number = 6,\n endChars: number = 4\n): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n\n return `${address.substring(0, startChars)}...${address.substring(address.length - endChars)}`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/persistence.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAA0B,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,IAAM,uBAAuB,GAAG,UACrC,KAAgB,EAChB,OAAoB;IAEpB,IAAI,CAAC;QACH,IAAM,aAAa,GAAG;YACpB,KAAK,OAAA;YACL,OAAO,wBACF,OAAO;gBACV,6EAA6E;gBAC7E,KAAK,EAAE,OAAO,CAAC,KAAK;oBAClB,CAAC,CAAC;wBACE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;wBAC9B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;qBACzB;oBACH,CAAC,CAAC,IAAI,GACT;YACD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,yBAAyB,GAAG;IAIvC,IAAI,CAAC;QACH,IAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,IAAA,KAAK,GAAyB,UAAU,MAAnC,EAAE,OAAO,GAAgB,UAAU,QAA1B,EAAE,SAAS,GAAK,UAAU,UAAf,CAAgB;QAEjD,2BAA2B;QAC3B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAC/C,YAAY,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK,OAAA;YACL,OAAO,wBACF,kBAAkB,GAClB,OAAO,CACX;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG;IACjC,OAAO,yBAAyB,EAAE,KAAK,IAAI,CAAC;AAC9C,CAAC,CAAC","sourcesContent":["import { FlowContext, FlowState, initialFlowContext } from '../types';\nimport { FLOW_STATE_STORAGE_KEY, STATE_EXPIRY_TIME } from '../constants';\n\n/**\n * Saves the current flow state and context to localStorage\n * @param state Current flow state\n * @param context Current flow context\n */\nexport const saveStateToLocalStorage = (\n state: FlowState,\n context: FlowContext\n): void => {\n try {\n const persistedData = {\n state,\n context: {\n ...context,\n // Filter out any sensitive data or error objects that shouldn't be persisted\n error: context.error\n ? {\n message: context.error.message,\n name: context.error.name,\n }\n : null,\n },\n timestamp: Date.now(),\n };\n\n localStorage.setItem(FLOW_STATE_STORAGE_KEY, JSON.stringify(persistedData));\n } catch (error) {\n console.error('Failed to save flow state:', error);\n }\n};\n\n/**\n * Loads the flow state and context from localStorage if available and not expired\n * @returns The loaded state and context, or null if not available or expired\n */\nexport const loadStateFromLocalStorage = (): {\n state: FlowState;\n context: FlowContext;\n} | null => {\n try {\n const storedData = localStorage.getItem(FLOW_STATE_STORAGE_KEY);\n\n if (!storedData) {\n return null;\n }\n\n const parsedData = JSON.parse(storedData);\n const { state, context, timestamp } = parsedData;\n\n // Check if data is expired\n if (Date.now() - timestamp > STATE_EXPIRY_TIME) {\n localStorage.removeItem(FLOW_STATE_STORAGE_KEY);\n return null;\n }\n\n return {\n state,\n context: {\n ...initialFlowContext,\n ...context,\n },\n };\n } catch (error) {\n console.error('Failed to load flow state:', error);\n return null;\n }\n};\n\n/**\n * Clears the stored flow state from localStorage\n */\nexport const clearStoredState = (): void => {\n try {\n localStorage.removeItem(FLOW_STATE_STORAGE_KEY);\n } catch (error) {\n console.error('Failed to clear flow state:', error);\n }\n};\n\n/**\n * Checks if there is a stored state that can be recovered\n * @returns True if there is a recoverable state, false otherwise\n */\nexport const hasRecoverableState = (): boolean => {\n return loadStateFromLocalStorage() !== null;\n};\n"]}
|
|
@@ -76,6 +76,7 @@ export function N1Sidebar(_) {
|
|
|
76
76
|
var handleClose = function () {
|
|
77
77
|
setClosing(true);
|
|
78
78
|
setStartClosingLogin(true);
|
|
79
|
+
window.location.reload();
|
|
79
80
|
};
|
|
80
81
|
var disconnect = function () {
|
|
81
82
|
dynamicHandleLogOut();
|
|
@@ -195,3 +196,4 @@ export function N1Sidebar(_) {
|
|
|
195
196
|
navigator.clipboard.writeText(address);
|
|
196
197
|
}, className: "px-4 py-2 bg-blue-100 dark:bg-blue-900/20 hover:bg-blue-200 dark:hover:bg-blue-900/30 text-blue-600 dark:text-blue-400 rounded-lg transition-colors duration-200", children: "Copy Address" })] })] }))] })) }) }), _jsx("div", { className: "absolute bottom-0 left-0 right-0 p-6 border-t border-gray-200 dark:border-gray-800 bg-gray-50 dark:bg-gray-950", children: _jsxs("button", { onClick: disconnect, className: "group relative w-full px-6 py-3 rounded-sm bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 font-medium transition-all duration-300 ease-in-out overflow-hidden", children: [_jsx("div", { className: "relative z-10 flex items-center justify-center", children: _jsx("span", { className: "text-gray-900 dark:text-gray-100 group-hover:text-white dark:group-hover:text-white transition-colors duration-300 ease-in-out", children: "Disconnect" }) }), _jsx("div", { className: "absolute inset-0 bg-red-700 transform scale-x-0 group-hover:scale-x-100 transition-transform duration-300 ease-in-out origin-left" })] }) })] }))] }));
|
|
197
198
|
}
|
|
199
|
+
//# sourceMappingURL=N1Sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"N1Sidebar.js","sourceRoot":"","sources":["../../../src/Modal/Sidebar/N1Sidebar.tsx"],"names":[],"mappings":"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","sourcesContent":["import BlockiesSvg from 'blockies-react-svg';\nimport QRCodeLoader from '../../components/QRCodeLoader';\nimport {\n ArrowDown,\n ArrowUp,\n X,\n ArrowLeft,\n Maximize2,\n Minimize2,\n} from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { Balance, N1ModalViewMode, N1SessionMode } from '../../Provider/types';\nimport { shortenAddress } from '../../utils/shortenString';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../Provider/hooks';\nimport { importNTSSDK } from '../../utils/dynamicImports';\nimport { getUserBalances } from '../../Logic/utils';\nimport { logger } from '../../utils/logger';\nimport NordTradingView from './NordTradingView/NordTradingView';\n\nexport function N1Sidebar(_: any) {\n // State management\n const [closing, setClosing] = useState(false);\n const [sending, setSending] = useState(false);\n const [receiving, setReceiving] = useState(false);\n const [success, setSuccess] = useState('');\n const [activeSending, setActiveSending] = useState(false);\n const [tokenToSend, setTokenToSend] = useState('');\n const [appIdAction, setAppIdAction] = useState('');\n const [amount, setAmount] = useState('');\n const [recipientAddress, setRecipientAddress] = useState('');\n const [error, setError] = useState('');\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [currentView, setCurrentView] = useState<\n 'balances' | 'send' | 'receive'\n >('balances');\n\n // Context hooks\n const {\n username,\n isConnected,\n address,\n balances,\n walletPubKey,\n sessionPubKey,\n signMessageWithSessionKey,\n sessionMode,\n } = useN1WalletContext();\n\n const {\n setShowSidebar,\n showSidebar,\n setStartClosingLogin,\n dynamicHandleLogOut,\n setBalances,\n setViewMode,\n setIsConnected,\n } = useN1WalletInternalContext();\n\n // Utility functions\n const clearSendingForm = () => {\n setAmount('');\n setTokenToSend('');\n setRecipientAddress('');\n setAppIdAction('');\n setSuccess('');\n setError('');\n };\n\n const handleClose = () => {\n setClosing(true);\n setStartClosingLogin(true);\n window.location.reload();\n };\n\n const disconnect = () => {\n dynamicHandleLogOut();\n setViewMode(N1ModalViewMode.Connect);\n setIsConnected(false);\n handleClose();\n };\n\n const toggleFullscreen = () => {\n setIsFullscreen(!isFullscreen);\n };\n\n // Effects\n useEffect(() => {\n if (showSidebar) {\n setClosing(false);\n }\n }, [showSidebar]);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n if (closing) {\n timeout = setTimeout(() => {\n setShowSidebar(false);\n setClosing(false);\n }, 700);\n }\n return () => clearTimeout(timeout);\n }, [closing, setShowSidebar]);\n\n useEffect(() => {\n if (!isConnected && showSidebar) {\n setShowSidebar(false);\n }\n }, [isConnected, showSidebar]);\n\n // Send tokens handler\n const handleSend = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n\n if (!sessionPubKey || !signMessageWithSessionKey || !walletPubKey) return;\n\n if (!tokenToSend || !amount || !recipientAddress) {\n setError('All fields are required.');\n setTimeout(() => setError(''), 2000);\n return;\n }\n\n if (isNaN(Number(amount)) || Number(amount) <= 0) {\n setError('Amount must be a positive number.');\n setTimeout(() => setError(''), 2000);\n return;\n }\n\n setActiveSending(true);\n\n try {\n const sdk = await importNTSSDK();\n const nts = new sdk.NTSInterface(process.env.NTS_URL!);\n const idl = await nts.getAppIdl(appIdAction);\n const appClient = new sdk.NAppClient(\n process.env.NTS_URL!,\n appIdAction,\n idl,\n walletPubKey,\n sessionPubKey,\n signMessageWithSessionKey\n );\n\n await (appClient as any)['transfer'](\n amount,\n tokenToSend,\n recipientAddress\n );\n\n const balances = await getUserBalances(address);\n setBalances(balances);\n\n setActiveSending(false);\n setSuccess('Tokens sent successfully!');\n setTimeout(() => {\n setSending(false);\n clearSendingForm();\n }, 2000);\n } catch (error) {\n logger.error('Error sending tokens:', error);\n setError('Error sending tokens. Please try again.');\n setActiveSending(false);\n setTimeout(() => setError(''), 2000);\n }\n };\n\n return (\n <div\n className={`fixed inset-0 bg-white/45 dark:bg-black/45 h-screen w-screen duration-500 ease-[cubic-bezier(0.16,1,0.3,1)] z-[9999] flex items-stretch justify-end backdrop-blur-sm ${\n !showSidebar ? 'hidden pointer-events-none' : ''\n } ${closing ? 'opacity-0' : 'opacity-100'}`}\n >\n {showSidebar && (\n <div\n className=\"w-screen h-screen fixed top-0 left-0\"\n onClick={() => setClosing(true)}\n />\n )}\n {showSidebar && (\n <div\n className={`relative h-screen bg-gray-50 dark:bg-gray-950 shadow-xl border-l border-gray-200 dark:border-gray-800 duration-500 ease-[cubic-bezier(0.16,1,0.3,1)] overflow-hidden ${\n closing ? 'translate-x-full' : 'translate-x-0'\n } ${isFullscreen ? 'w-screen' : 'w-[420px]'}`}\n >\n {/* Header */}\n <div className=\"flex justify-between items-center px-6 py-4 border-b border-gray-200 dark:border-gray-800\">\n <div className=\"flex items-center gap-4\">\n {currentView !== 'balances' && (\n <button\n onClick={() => {\n setCurrentView('balances');\n clearSendingForm();\n }}\n className=\"text-gray-500 hover:text-red-500 dark:text-gray-400 dark:hover:text-red-500 transition-colors duration-200\"\n >\n <ArrowLeft size={20} />\n </button>\n )}\n <div className=\"flex items-center gap-3\">\n <BlockiesSvg\n address={address}\n className=\"w-10 h-10 rounded-full\"\n />\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900 dark:text-gray-50\">\n {username}\n </span>\n <span className=\"text-sm text-gray-500 dark:text-gray-400\">\n {shortenAddress(address)}\n </span>\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n <button\n onClick={toggleFullscreen}\n className=\"text-gray-400 hover:text-red-500 transition-colors duration-200 h-6 flex items-center\"\n aria-label={\n isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'\n }\n >\n {isFullscreen ? (\n <Minimize2 size={20} />\n ) : (\n <Maximize2 size={20} />\n )}\n </button>\n <button\n onClick={handleClose}\n className=\"text-gray-400 hover:text-red-500 transition-colors duration-200 h-6 flex items-center\"\n >\n <X size={20} />\n </button>\n </div>\n </div>\n\n {/* Main Content */}\n <div className=\"p-6 overflow-y-auto h-[calc(100vh-144px)]\">\n {/* Views */}\n <div className=\"space-y-4\">\n {sessionMode === N1SessionMode.Nord ? (\n <NordTradingView />\n ) : (\n <>\n {currentView === 'balances' && (\n <div className=\"space-y-4\">\n {/* Balances View */}\n <div className=\"flex justify-between items-center\">\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-gray-50\">\n Balances\n </h2>\n <div className=\"flex space-x-2\">\n <button\n onClick={() => {\n setReceiving(true);\n setSending(false);\n setCurrentView('receive');\n }}\n className=\"px-3 py-1.5 bg-blue-100 dark:bg-blue-900/20 hover:bg-blue-200 dark:hover:bg-blue-900/30 text-blue-600 dark:text-blue-400 rounded-lg transition-colors duration-200 flex items-center\"\n >\n <ArrowDown size={16} className=\"mr-1.5\" />\n Receive\n </button>\n <button\n onClick={() => {\n setSending(true);\n setReceiving(false);\n setCurrentView('send');\n }}\n className=\"px-3 py-1.5 bg-blue-100 dark:bg-blue-900/20 hover:bg-blue-200 dark:hover:bg-blue-900/30 text-blue-600 dark:text-blue-400 rounded-lg transition-colors duration-200 flex items-center\"\n >\n <ArrowUp size={16} className=\"mr-1.5\" />\n Send\n </button>\n </div>\n </div>\n\n {/* Balance List */}\n {balances && balances.length > 0 ? (\n <div className=\"space-y-3\">\n {balances.map((balance: Balance, index: number) => (\n <div\n key={index}\n className=\"p-4 bg-white dark:bg-gray-900 rounded-xl shadow-sm border border-gray-200 dark:border-gray-800 flex justify-between items-center\"\n >\n <div>\n <div className=\"font-medium text-gray-900 dark:text-gray-50\">\n {balance.appType}\n </div>\n <div className=\"text-sm text-gray-500 dark:text-gray-400\">\n {balance.appId}\n </div>\n </div>\n <div className=\"text-right\">\n <div className=\"font-medium text-gray-900 dark:text-gray-50\">\n {balance.balance.toString()}\n </div>\n <div className=\"text-sm text-gray-500 dark:text-gray-400\">\n Available\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"p-4 bg-gray-50 dark:bg-gray-800 rounded-xl text-gray-500 dark:text-gray-400 text-center\">\n No balances found\n </div>\n )}\n </div>\n )}\n\n {/* Send View */}\n {currentView === 'send' && (\n <div className=\"space-y-4\">\n <div className=\"flex items-center\">\n <button\n onClick={() => {\n setCurrentView('balances');\n clearSendingForm();\n }}\n className=\"mr-3 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\"\n >\n <ArrowLeft size={20} />\n </button>\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-gray-50\">\n Send Tokens\n </h2>\n </div>\n\n {error && (\n <div className=\"p-4 bg-red-50 dark:bg-red-900/20 rounded-xl text-red-600 dark:text-red-400 text-sm\">\n {error}\n </div>\n )}\n\n {success && (\n <div className=\"p-4 bg-green-50 dark:bg-green-900/20 rounded-xl text-green-600 dark:text-green-400 text-sm\">\n {success}\n </div>\n )}\n\n <form onSubmit={handleSend} className=\"space-y-4\">\n {/* Token Selection */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n Token\n </label>\n <select\n value={tokenToSend}\n onChange={(e) => setTokenToSend(e.target.value)}\n className=\"w-full px-3 py-2 bg-gray-100 dark:bg-gray-800 rounded-lg text-gray-900 dark:text-gray-100 border border-gray-200 dark:border-gray-800\"\n required\n >\n <option value=\"\">Select Token</option>\n {balances &&\n balances.map(\n (balance: Balance, index: number) => (\n <option key={index} value={balance.mint}>\n {balance.appType} (\n {balance.balance.toString()})\n </option>\n )\n )}\n </select>\n </div>\n\n {/* App ID Selection */}\n {tokenToSend && (\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n App ID\n </label>\n <select\n value={appIdAction}\n onChange={(e) => setAppIdAction(e.target.value)}\n className=\"w-full px-3 py-2 bg-gray-100 dark:bg-gray-800 rounded-lg text-gray-900 dark:text-gray-100 border border-gray-200 dark:border-gray-800\"\n required\n >\n <option value=\"\">Select App ID</option>\n {balances &&\n balances\n .filter(\n (balance: Balance) =>\n balance.mint === tokenToSend\n )\n .map((balance: Balance, index: number) => (\n <option key={index} value={balance.appId}>\n {balance.appId}\n </option>\n ))}\n </select>\n </div>\n )}\n\n {/* Amount Input */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n Amount\n </label>\n <input\n type=\"text\"\n value={amount}\n onChange={(e) => setAmount(e.target.value)}\n className=\"w-full px-3 py-2 bg-gray-100 dark:bg-gray-800 rounded-lg text-gray-900 dark:text-gray-100 border border-gray-200 dark:border-gray-800\"\n placeholder=\"Enter amount\"\n required\n />\n </div>\n\n {/* Recipient Address */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\n Recipient Address\n </label>\n <input\n type=\"text\"\n value={recipientAddress}\n onChange={(e) =>\n setRecipientAddress(e.target.value)\n }\n className=\"w-full px-3 py-2 bg-gray-100 dark:bg-gray-800 rounded-lg text-gray-900 dark:text-gray-100 border border-gray-200 dark:border-gray-800\"\n placeholder=\"Enter recipient address\"\n required\n />\n </div>\n\n {/* Submit Button */}\n <button\n type=\"submit\"\n disabled={activeSending}\n className={`w-full py-3 rounded-xl font-medium transition-colors duration-200 ${\n activeSending\n ? 'bg-gray-300 dark:bg-gray-700 text-gray-500 dark:text-gray-400 cursor-not-allowed'\n : 'bg-blue-600 hover:bg-blue-700 text-white'\n }`}\n >\n {activeSending ? 'Sending...' : 'Send Tokens'}\n </button>\n </form>\n </div>\n )}\n\n {/* Receive View */}\n {currentView === 'receive' && (\n <div className=\"space-y-4\">\n <div className=\"flex items-center\">\n <button\n onClick={() => {\n setCurrentView('balances');\n setReceiving(false);\n }}\n className=\"mr-3 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\"\n >\n <ArrowLeft size={20} />\n </button>\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-gray-50\">\n Receive Tokens\n </h2>\n </div>\n\n <div className=\"p-4 bg-white dark:bg-gray-900 rounded-xl shadow-sm border border-gray-200 dark:border-gray-800 flex flex-col items-center\">\n <div className=\"mb-4 bg-white p-2 rounded-lg\">\n <QRCodeLoader address={address} />\n </div>\n <div className=\"text-sm text-gray-500 dark:text-gray-400 mb-2\">\n Your wallet address:\n </div>\n <div className=\"font-mono text-sm text-gray-900 dark:text-gray-100 mb-4 break-all text-center\">\n {address}\n </div>\n <button\n onClick={() => {\n navigator.clipboard.writeText(address);\n }}\n className=\"px-4 py-2 bg-blue-100 dark:bg-blue-900/20 hover:bg-blue-200 dark:hover:bg-blue-900/30 text-blue-600 dark:text-blue-400 rounded-lg transition-colors duration-200\"\n >\n Copy Address\n </button>\n </div>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"absolute bottom-0 left-0 right-0 p-6 border-t border-gray-200 dark:border-gray-800 bg-gray-50 dark:bg-gray-950\">\n <button\n onClick={disconnect}\n className=\"group relative w-full px-6 py-3 rounded-sm bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 font-medium transition-all duration-300 ease-in-out overflow-hidden\"\n >\n <div className=\"relative z-10 flex items-center justify-center\">\n <span className=\"text-gray-900 dark:text-gray-100 group-hover:text-white dark:group-hover:text-white transition-colors duration-300 ease-in-out\">\n Disconnect\n </span>\n </div>\n <div className=\"absolute inset-0 bg-red-700 transform scale-x-0 group-hover:scale-x-100 transition-transform duration-300 ease-in-out origin-left\"></div>\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -84,3 +84,4 @@ export default function MarketOverview(_a) {
|
|
|
84
84
|
}, [selectedMarket, nord]);
|
|
85
85
|
return (_jsx("div", { className: "".concat(className), children: _jsx(MarketSelector, { selectedMarket: selectedMarket, onMarketChange: onMarketChange }) }));
|
|
86
86
|
}
|
|
87
|
+
//# sourceMappingURL=MarketOverview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarketOverview.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAQ9D,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAIjB;IAJtB,iBAgDC;QA/CC,cAAc,oBAAA,EACd,cAAc,oBAAA,EACd,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAEN,IAAA,IAAI,GAAK,kBAAkB,EAAE,KAAzB,CAA0B;IAChC,IAAA,KAAgC,QAAQ,CAAM,IAAI,CAAC,EAAlD,WAAW,QAAA,EAAE,cAAc,QAAuB,CAAC;IACpD,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IACxC,IAAA,KAAoB,QAAQ,CAAgB,IAAI,CAAC,EAAhD,KAAK,QAAA,EAAE,QAAQ,QAAiC,CAAC;IAExD,kDAAkD;IAClD,SAAS,CAAC;QACR,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI;YAAE,OAAO;QAErC,IAAM,gBAAgB,GAAG;;;;;wBACvB,UAAU,CAAC,IAAI,CAAC,CAAC;wBACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;;;;wBAGC,qBAAM,IAAI,CAAC,cAAc,EAAE,EAAA;;wBAAnC,KAAK,GAAG,SAA2B;wBACnC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CACtC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,cAAc,EAA3B,CAA2B,CACxC,CAAC;wBACF,cAAc,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;;;;wBAEtC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAG,CAAC,CAAC;wBACnD,QAAQ,CAAC,kCAAkC,CAAC,CAAC;;;wBAE7C,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;aAErB,CAAC;QAEF,gBAAgB,EAAE,CAAC;QAEnB,0CAA0C;QAC1C,IAAM,UAAU,GAAG,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,0BAA0B;QAEnF,OAAO,cAAM,OAAA,aAAa,CAAC,UAAU,CAAC,EAAzB,CAAyB,CAAC;IACzC,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,cAAK,SAAS,EAAE,UAAG,SAAS,CAAE,YAC5B,KAAC,cAAc,IACb,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,GAC9B,GACE,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useState } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport MarketSelector from '../MarketOverview/MarketSelector';\n\ninterface MarketOverviewProps {\n selectedMarket: string | null;\n onMarketChange: (market: string) => void;\n className?: string;\n}\n\nexport default function MarketOverview({\n selectedMarket,\n onMarketChange,\n className = '',\n}: MarketOverviewProps) {\n const { nord } = useN1WalletContext();\n const [marketStats, setMarketStats] = useState<any>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Fetch market stats when selected market changes\n useEffect(() => {\n if (!selectedMarket || !nord) return;\n\n const fetchMarketStats = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const stats = await nord.getMarketStats();\n const selectedStats = stats.markets.find(\n (m: any) => m.symbol === selectedMarket\n );\n setMarketStats(selectedStats || null);\n } catch (err) {\n console.error('Error fetching market stats:', err);\n setError('Failed to load market statistics');\n } finally {\n setLoading(false);\n }\n };\n\n fetchMarketStats();\n\n // Set up polling for market stats updates\n const intervalId = setInterval(fetchMarketStats, 30000); // Update every 30 seconds\n\n return () => clearInterval(intervalId);\n }, [selectedMarket, nord]);\n\n return (\n <div className={`${className}`}>\n <MarketSelector\n selectedMarket={selectedMarket}\n onMarketChange={onMarketChange}\n />\n </div>\n );\n}\n"]}
|
|
@@ -40,3 +40,4 @@ export default function MarketSelector(_a) {
|
|
|
40
40
|
? 'text-green-500'
|
|
41
41
|
: 'text-red-500'), children: [market.change24h >= 0 ? '+' : '', market.change24h.toFixed(2), "%"] }))] }) }, market.symbol)); })) : (_jsx("div", { className: "px-4 py-3 text-sm text-gray-500 dark:text-gray-400", children: "No markets found" })) }) }))] }));
|
|
42
42
|
}
|
|
43
|
+
//# sourceMappingURL=MarketSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarketSelector.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport { ChevronDown, Search, X } from 'lucide-react';\n\ninterface MarketSelectorProps {\n selectedMarket: string | null;\n onMarketChange: (market: string) => void;\n}\n\nexport default function MarketSelector({\n selectedMarket,\n onMarketChange,\n}: MarketSelectorProps) {\n const { nord } = useN1WalletContext();\n const [isOpen, setIsOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const dropdownRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n buttonRef.current &&\n !buttonRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n // Filter markets based on search query\n const filteredMarkets =\n nord?.markets?.filter((market) =>\n market.symbol.toLowerCase().includes(searchQuery.toLowerCase())\n ) || [];\n\n return (\n <div className=\"relative w-full\" ref={containerRef}>\n <button\n ref={buttonRef}\n onClick={() => setIsOpen(!isOpen)}\n className=\"w-full flex items-center justify-between font-medium text-gray-900 dark:text-gray-100 transition-colors duration-200\"\n >\n <span className=\"truncate\">{selectedMarket || 'Select Market'}</span>\n <ChevronDown\n size={16}\n className={`ml-2 transition-transform duration-200 ${isOpen ? 'rotate-180 text-main' : 'text-gray-500 dark:text-gray-400'}`}\n />\n </button>\n\n {isOpen && (\n <div\n ref={dropdownRef}\n className=\"absolute right-0 top-full mt-1 bg-white dark:bg-gray-950 rounded-[2px] shadow-lg border border-gray-200 dark:border-gray-800 overflow-hidden z-50 w-[250px] max-h-[300px]\"\n >\n {/* Market list */}\n <div className=\"overflow-y-auto max-h-[300px]\">\n {filteredMarkets.length > 0 ? (\n filteredMarkets.map((market) => (\n <button\n key={market.symbol}\n onClick={() => {\n onMarketChange(market.symbol);\n setIsOpen(false);\n setSearchQuery('');\n }}\n className={`w-full text-left px-4 py-2 hover:bg-gray-50 dark:hover:bg-gray-900 transition-colors duration-200 ${\n selectedMarket === market.symbol\n ? 'border-l-2 border-main text-main dark:text-main bg-gray-50 dark:bg-gray-950'\n : 'text-gray-900 dark:text-gray-100'\n }`}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium\">{market.symbol}</span>\n {(market as any).change24h !== undefined && (\n <span\n className={`text-sm ${\n (market as any).change24h >= 0\n ? 'text-green-500'\n : 'text-red-500'\n }`}\n >\n {(market as any).change24h >= 0 ? '+' : ''}\n {(market as any).change24h.toFixed(2)}%\n </span>\n )}\n </div>\n </button>\n ))\n ) : (\n <div className=\"px-4 py-3 text-sm text-gray-500 dark:text-gray-400\">\n No markets found\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -13,3 +13,4 @@ export default function MarketStats(_a) {
|
|
|
13
13
|
? 'bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400 border border-green-200 dark:border-green-900/30'
|
|
14
14
|
: 'bg-red-100 dark:bg-red-900/20 text-red-600 dark:text-red-400 border border-red-200 dark:border-red-900/30'), children: [(marketStats === null || marketStats === void 0 ? void 0 : marketStats.priceChangePercent) >= 0 ? (_jsx(ArrowUp, { size: 12, className: "inline mr-1" })) : (_jsx(ArrowDown, { size: 12, className: "inline mr-1" })), Math.abs((marketStats === null || marketStats === void 0 ? void 0 : marketStats.priceChangePercent) || 0).toFixed(2), "%"] }), loading && (_jsx(RefreshCw, { size: 14, className: "ml-2 text-main animate-spin" }))] })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800", children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: "Last Price" }), _jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-gray-100 font-mono", children: (_b = marketStats === null || marketStats === void 0 ? void 0 : marketStats.lastPrice) === null || _b === void 0 ? void 0 : _b.toFixed((marketStats === null || marketStats === void 0 ? void 0 : marketStats.priceDecimals) || 2) })] }), _jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800", children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: "24h High" }), _jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-gray-100 font-mono", children: (_c = marketStats === null || marketStats === void 0 ? void 0 : marketStats.highPrice) === null || _c === void 0 ? void 0 : _c.toFixed((marketStats === null || marketStats === void 0 ? void 0 : marketStats.priceDecimals) || 2) })] }), _jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800", children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: "24h Low" }), _jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-gray-100 font-mono", children: (_d = marketStats === null || marketStats === void 0 ? void 0 : marketStats.lowPrice) === null || _d === void 0 ? void 0 : _d.toFixed((marketStats === null || marketStats === void 0 ? void 0 : marketStats.priceDecimals) || 2) })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800", children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: "24h Volume" }), _jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-gray-100 font-mono", children: (_e = marketStats === null || marketStats === void 0 ? void 0 : marketStats.volume) === null || _e === void 0 ? void 0 : _e.toFixed(2) })] }), _jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800", children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: "Base Asset" }), _jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-gray-100", children: marketStats === null || marketStats === void 0 ? void 0 : marketStats.baseAsset })] }), _jsxs("div", { className: "flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800", children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: "Quote Asset" }), _jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-gray-100", children: marketStats === null || marketStats === void 0 ? void 0 : marketStats.quoteAsset })] })] })] })] })) }));
|
|
15
15
|
}
|
|
16
|
+
//# sourceMappingURL=MarketStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarketStats.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ArrowDown, ArrowUp, RefreshCw } from 'lucide-react';\n\ninterface MarketStatsProps {\n marketStats: any;\n loading: boolean;\n error: string | null;\n}\n\nexport default function MarketStats({\n marketStats,\n loading,\n error,\n}: MarketStatsProps) {\n if (error) {\n return (\n <div className=\"bg-red-50 dark:bg-red-900/20 p-3 rounded-sm text-red-600 dark:text-red-400 text-sm border border-red-200 dark:border-red-900/30\">\n {error}\n </div>\n );\n }\n\n if (!marketStats && !loading) {\n return (\n <div className=\"bg-gray-50 dark:bg-gray-800 p-3 rounded-sm text-gray-500 dark:text-gray-400 text-sm border border-gray-200 dark:border-gray-800\">\n Select a market to view statistics\n </div>\n );\n }\n\n return (\n <div className=\"bg-gray-50 dark:bg-gray-800 p-3 rounded-sm border border-gray-200 dark:border-gray-800\">\n {loading && !marketStats ? (\n <div className=\"flex items-center justify-center h-24\">\n <RefreshCw size={24} className=\"text-main animate-spin\" />\n </div>\n ) : (\n <>\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"text-base font-semibold text-gray-900 dark:text-gray-100\">\n {marketStats?.symbol}\n </h3>\n <div className=\"flex items-center\">\n <span\n className={`text-xs font-medium px-2 py-1 rounded-sm ${\n marketStats?.priceChangePercent >= 0\n ? 'bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400 border border-green-200 dark:border-green-900/30'\n : 'bg-red-100 dark:bg-red-900/20 text-red-600 dark:text-red-400 border border-red-200 dark:border-red-900/30'\n }`}\n >\n {marketStats?.priceChangePercent >= 0 ? (\n <ArrowUp size={12} className=\"inline mr-1\" />\n ) : (\n <ArrowDown size={12} className=\"inline mr-1\" />\n )}\n {Math.abs(marketStats?.priceChangePercent || 0).toFixed(2)}%\n </span>\n {loading && (\n <RefreshCw size={14} className=\"ml-2 text-main animate-spin\" />\n )}\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-2\">\n <div className=\"flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800\">\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\n Last Price\n </span>\n <span className=\"text-xs font-medium text-gray-900 dark:text-gray-100 font-mono\">\n {marketStats?.lastPrice?.toFixed(\n marketStats?.priceDecimals || 2\n )}\n </span>\n </div>\n <div className=\"flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800\">\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\n 24h High\n </span>\n <span className=\"text-xs font-medium text-gray-900 dark:text-gray-100 font-mono\">\n {marketStats?.highPrice?.toFixed(\n marketStats?.priceDecimals || 2\n )}\n </span>\n </div>\n <div className=\"flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800\">\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\n 24h Low\n </span>\n <span className=\"text-xs font-medium text-gray-900 dark:text-gray-100 font-mono\">\n {marketStats?.lowPrice?.toFixed(\n marketStats?.priceDecimals || 2\n )}\n </span>\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800\">\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\n 24h Volume\n </span>\n <span className=\"text-xs font-medium text-gray-900 dark:text-gray-100 font-mono\">\n {marketStats?.volume?.toFixed(2)}\n </span>\n </div>\n <div className=\"flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800\">\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\n Base Asset\n </span>\n <span className=\"text-xs font-medium text-gray-900 dark:text-gray-100\">\n {marketStats?.baseAsset}\n </span>\n </div>\n <div className=\"flex justify-between items-center bg-white dark:bg-gray-950 p-2 rounded-sm border border-gray-200 dark:border-gray-800\">\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\n Quote Asset\n </span>\n <span className=\"text-xs font-medium text-gray-900 dark:text-gray-100\">\n {marketStats?.quoteAsset}\n </span>\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -52,3 +52,4 @@ export default function NordTradingView() {
|
|
|
52
52
|
? 'border-main/80 text-main bg-main/[0.03] shadow-[0_0_0_1px_rgba(255,68,26,0.1)]'
|
|
53
53
|
: 'border-gray-200 dark:border-gray-800 text-gray-500 dark:text-gray-400 hover:border-gray-300 dark:hover:border-gray-700', "\n first:ml-0 last:mr-0 group rounded-[2px] overflow-hidden flex-grow @md:flex-grow-0\n "), children: [_jsx("span", { className: "relative z-10", children: viewLabels[view] }), _jsx("span", { className: "\n absolute inset-0 bg-main/[0.02] opacity-0 transition-opacity duration-150\n ".concat(activeView !== view ? 'group-hover:opacity-100' : '', "\n ") })] }, view)); }) }), _jsx("div", { className: "min-w-[160px] w-full @md:w-auto border border-gray-200 dark:border-gray-800 rounded-[2px] overflow-visible hover:border-gray-300 dark:hover:border-gray-700 transition-colors duration-150 relative z-20", children: _jsx("div", { className: "px-5 py-2 text-sm", children: _jsx(MarketOverview, { selectedMarket: selectedMarket, onMarketChange: setSelectedMarket }) }) })] }), _jsx("div", { className: "border border-gray-200 dark:border-gray-800 rounded-[3px] shadow-sm bg-white dark:bg-gray-950", children: renderActiveView() })] }));
|
|
54
54
|
}
|
|
55
|
+
//# sourceMappingURL=NordTradingView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NordTradingView.js","sourceRoot":"","sources":["../../../../src/Modal/Sidebar/NordTradingView/NordTradingView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { N1SessionMode } from '../../../Provider/types';\nimport MarketOverview from './MarketOverview/MarketOverview';\nimport OrderBook from './OrderBook/OrderBook';\nimport TradeForm from './TradeForm/TradeForm';\nimport UserOrders from './UserOrders/UserOrders';\nimport UserPositions from './UserPositions/UserPositions';\nimport UserBalances from './UserBalances/UserBalances';\n\n// Define the available view types\ntype ViewType =\n | 'orderbook'\n | 'tradeform'\n | 'orders'\n | 'positions'\n | 'balances'\n | 'history';\n\nexport default function NordTradingView() {\n const { sessionMode, nord, nordUser } = useN1WalletContext();\n const [selectedMarket, setSelectedMarket] = useState<string | null>(null);\n const [activeView, setActiveView] = useState<ViewType>('orderbook');\n\n // Early return if not in Nord session mode or if Nord/NordUser is not available\n if (sessionMode !== N1SessionMode.Nord || !nord || !nordUser) {\n return null;\n }\n\n // Set default selected market if not already set and markets are available\n useEffect(() => {\n if (!selectedMarket && nord.markets && nord.markets.length > 0) {\n setSelectedMarket(nord.markets[0].symbol);\n }\n }, [nord.markets, selectedMarket]);\n\n // Render the active view component\n const renderActiveView = () => {\n switch (activeView) {\n case 'orderbook':\n return <OrderBook marketSymbol={selectedMarket} />;\n case 'tradeform':\n return <TradeForm marketSymbol={selectedMarket} />;\n case 'orders':\n return <UserOrders />;\n case 'positions':\n return (\n <div className=\"space-y-4\">\n <UserPositions />\n <UserBalances />\n </div>\n );\n case 'balances':\n return <UserBalances />;\n default:\n return <OrderBook marketSymbol={selectedMarket} />;\n }\n };\n\n // Map view types to display names\n const viewLabels: Record<ViewType, string> = {\n orderbook: 'Order Book',\n tradeform: 'Trade',\n positions: 'Positions',\n orders: 'Orders',\n balances: 'Balances',\n history: 'History',\n };\n\n return (\n <div className=\"space-y-4 @container\">\n {/* Navigation Bar - Combined Menu and Market Overview */}\n <div className=\"flex flex-col @md:flex-row justify-between items-start @md:items-center bg-transparent mb-3 gap-3 @md:gap-0\">\n {/* View Selector Tabs - Redesigned */}\n <div className=\"flex justify-start gap-2 flex-wrap w-full @md:w-auto\">\n {['orderbook', 'tradeform', 'positions', 'orders'].map((view) => (\n <button\n key={view}\n onClick={() => setActiveView(view as ViewType)}\n className={`\n relative px-4 @md:px-5 py-2 text-sm font-medium tracking-wide transition-all duration-150 \n border ${\n activeView === view\n ? 'border-main/80 text-main bg-main/[0.03] shadow-[0_0_0_1px_rgba(255,68,26,0.1)]'\n : 'border-gray-200 dark:border-gray-800 text-gray-500 dark:text-gray-400 hover:border-gray-300 dark:hover:border-gray-700'\n }\n first:ml-0 last:mr-0 group rounded-[2px] overflow-hidden flex-grow @md:flex-grow-0\n `}\n >\n <span className=\"relative z-10\">\n {viewLabels[view as ViewType]}\n </span>\n <span\n className={`\n absolute inset-0 bg-main/[0.02] opacity-0 transition-opacity duration-150\n ${activeView !== view ? 'group-hover:opacity-100' : ''}\n `}\n />\n </button>\n ))}\n </div>\n\n {/* Market Overview - Styled to match the menu */}\n <div className=\"min-w-[160px] w-full @md:w-auto border border-gray-200 dark:border-gray-800 rounded-[2px] overflow-visible hover:border-gray-300 dark:hover:border-gray-700 transition-colors duration-150 relative z-20\">\n <div className=\"px-5 py-2 text-sm\">\n <MarketOverview\n selectedMarket={selectedMarket}\n onMarketChange={setSelectedMarket}\n />\n </div>\n </div>\n </div>\n\n {/* Active View */}\n <div className=\"border border-gray-200 dark:border-gray-800 rounded-[3px] shadow-sm bg-white dark:bg-gray-950\">\n {renderActiveView()}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -206,3 +206,4 @@ export default function OrderBook(_a) {
|
|
|
206
206
|
var maxSize = calculateMaxSize(aggregatedData);
|
|
207
207
|
return (_jsxs("div", { className: "p-4", children: [_jsx(OrderBookHeader, { marketSymbol: marketSymbol, aggregationLevel: aggregationLevel, onAggregationChange: setAggregationLevel }), error ? (_jsx("div", { className: "p-3 mt-3 border border-red-200 dark:border-red-900/30 rounded-sm text-red-600 dark:text-red-400 text-xs", children: error })) : loading && !orderBookData ? (_jsx("div", { className: "flex items-center justify-center h-40 mt-3", children: _jsx(RefreshCw, { size: 24, className: "text-main animate-spin" }) })) : !marketSymbol ? (_jsx("div", { className: "p-3 mt-3 border border-gray-200 dark:border-gray-800 rounded-sm text-gray-500 dark:text-gray-400 text-xs", children: "Select a market to view orderbook" })) : (_jsx("div", { className: "mt-3", children: _jsxs("div", { className: "flex flex-col", children: [_jsx(OrderBookTable, { data: aggregatedData, loading: loading, maxSize: maxSize }), _jsx(OrderBookDepthVisualizer, { data: aggregatedData, maxSize: maxSize })] }) }))] }));
|
|
208
208
|
}
|
|
209
|
+
//# sourceMappingURL=OrderBook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderBook.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport OrderBookHeader from './OrderBookHeader';\nimport OrderBookTable from './OrderBookTable';\n// Create a simple implementation for the missing OrderBookDepthVisualizer component\nimport { RefreshCw } from 'lucide-react';\n\n// Simple implementation of OrderBookDepthVisualizer\nconst OrderBookDepthVisualizer = ({\n data,\n maxSize,\n}: {\n data: {\n bids: Array<[number, number]>;\n asks: Array<[number, number]>;\n timestamp: number;\n } | null;\n maxSize: number;\n}) => {\n if (!data || data.bids.length === 0 || data.asks.length === 0) {\n return null;\n }\n\n return (\n <div className=\"mt-3\">\n <h3 className=\"text-xs font-medium text-gray-900 dark:text-gray-100 mb-2\">\n Depth Chart\n </h3>\n <div className=\"w-full h-24 border border-gray-200 dark:border-gray-800 rounded-sm overflow-hidden flex items-center justify-center\">\n <div className=\"relative w-full h-full\">\n {/* Simple visualization with gradient backgrounds */}\n <div className=\"absolute inset-0 flex\">\n <div className=\"w-1/2 bg-gradient-to-r from-green-500/10 to-green-500/5\"></div>\n <div className=\"w-1/2 bg-gradient-to-l from-red-500/10 to-red-500/5\"></div>\n </div>\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"h-full w-px bg-gray-300 dark:bg-gray-600\"></div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\ninterface OrderBookProps {\n marketSymbol: string | null;\n}\n\ninterface OrderBookData {\n bids: Array<[number, number]>; // [price, size]\n asks: Array<[number, number]>; // [price, size]\n timestamp: number;\n}\n\n// Define the OrderbookEntry interface to match the API response\ninterface OrderbookEntry {\n price: number;\n size: number;\n}\n\nexport default function OrderBook({ marketSymbol }: OrderBookProps) {\n const { nord } = useN1WalletContext();\n const [orderBookData, setOrderBookData] = useState<OrderBookData | null>(\n null\n );\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [aggregationLevel, setAggregationLevel] = useState<number>(0.01);\n\n // Fetch orderbook data when market changes\n useEffect(() => {\n if (!marketSymbol || !nord) return;\n\n let subscription: any = null;\n\n const fetchOrderBook = async () => {\n setLoading(true);\n setError(null);\n\n try {\n // Initial fetch\n const orderbook = await nord.getOrderbook({ symbol: marketSymbol });\n\n // The API now returns bids and asks directly as arrays of [price, size] pairs\n // instead of OrderbookEntry objects\n const bids: Array<[number, number]> = Array.isArray(orderbook.bids[0])\n ? (orderbook.bids as unknown as Array<[number, number]>)\n : orderbook.bids.map((entry: OrderbookEntry) => [\n entry.price,\n entry.size,\n ]);\n\n const asks: Array<[number, number]> = Array.isArray(orderbook.asks[0])\n ? (orderbook.asks as unknown as Array<[number, number]>)\n : orderbook.asks.map((entry: OrderbookEntry) => [\n entry.price,\n entry.size,\n ]);\n\n setOrderBookData({\n bids,\n asks,\n timestamp: Date.now(),\n });\n\n // Subscribe to real-time updates\n subscription = nord.subscribeOrderbook(marketSymbol);\n subscription.on('update', (update: any) => {\n setOrderBookData((prev) => {\n if (!prev) return update;\n\n // Convert OrderbookEntry[] to [number, number][] if needed\n const updatedBids = update.bids\n ? update.bids.map((entry: OrderbookEntry) => [\n entry.price,\n entry.size,\n ])\n : prev.bids;\n\n const updatedAsks = update.asks\n ? update.asks.map((entry: OrderbookEntry) => [\n entry.price,\n entry.size,\n ])\n : prev.asks;\n\n return {\n bids: updatedBids,\n asks: updatedAsks,\n timestamp: Date.now(),\n };\n });\n });\n } catch (err) {\n console.error('Error fetching orderbook:', err);\n setError('Failed to load orderbook data');\n } finally {\n setLoading(false);\n }\n };\n\n fetchOrderBook();\n\n // Cleanup subscription on unmount or market change\n return () => {\n if (subscription) {\n subscription.close();\n }\n };\n }, [marketSymbol, nord]);\n\n // Aggregate orderbook data based on aggregation level\n const aggregateOrderBook = (\n data: OrderBookData | null,\n level: number\n ): OrderBookData | null => {\n if (!data) return null;\n\n const aggregatedBids: { [key: number]: number } = {};\n const aggregatedAsks: { [key: number]: number } = {};\n\n // Aggregate bids\n data.bids.forEach(([price, size]) => {\n const aggregatedPrice = Math.floor(price / level) * level;\n aggregatedBids[aggregatedPrice] =\n (aggregatedBids[aggregatedPrice] || 0) + size;\n });\n\n // Aggregate asks\n data.asks.forEach(([price, size]) => {\n const aggregatedPrice = Math.ceil(price / level) * level;\n aggregatedAsks[aggregatedPrice] =\n (aggregatedAsks[aggregatedPrice] || 0) + size;\n });\n\n // Convert back to arrays and sort\n const bids = Object.entries(aggregatedBids)\n .map(([price, size]) => [parseFloat(price), size])\n .sort((a, b) => b[0] - a[0]) as Array<[number, number]>;\n\n const asks = Object.entries(aggregatedAsks)\n .map(([price, size]) => [parseFloat(price), size])\n .sort((a, b) => a[0] - b[0]) as Array<[number, number]>;\n\n return {\n bids,\n asks,\n timestamp: data.timestamp,\n };\n };\n\n const aggregatedData = aggregateOrderBook(orderBookData, aggregationLevel);\n\n // Calculate max size for depth visualization\n const calculateMaxSize = (data: OrderBookData | null): number => {\n if (!data) return 0;\n\n const bidSizes = data.bids.map(([_, size]) => size);\n const askSizes = data.asks.map(([_, size]) => size);\n const allSizes = [...bidSizes, ...askSizes];\n\n return Math.max(...allSizes, 0);\n };\n\n const maxSize = calculateMaxSize(aggregatedData);\n\n return (\n <div className=\"p-4\">\n <OrderBookHeader\n marketSymbol={marketSymbol}\n aggregationLevel={aggregationLevel}\n onAggregationChange={setAggregationLevel}\n />\n\n {error ? (\n <div className=\"p-3 mt-3 border border-red-200 dark:border-red-900/30 rounded-sm text-red-600 dark:text-red-400 text-xs\">\n {error}\n </div>\n ) : loading && !orderBookData ? (\n <div className=\"flex items-center justify-center h-40 mt-3\">\n <RefreshCw size={24} className=\"text-main animate-spin\" />\n </div>\n ) : !marketSymbol ? (\n <div className=\"p-3 mt-3 border border-gray-200 dark:border-gray-800 rounded-sm text-gray-500 dark:text-gray-400 text-xs\">\n Select a market to view orderbook\n </div>\n ) : (\n <div className=\"mt-3\">\n <div className=\"flex flex-col\">\n <OrderBookTable\n data={aggregatedData}\n loading={loading}\n maxSize={maxSize}\n />\n\n <OrderBookDepthVisualizer data={aggregatedData} maxSize={maxSize} />\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -59,3 +59,4 @@ export default function OrderBookDepthVisualizer(_a) {
|
|
|
59
59
|
};
|
|
60
60
|
return (_jsxs("div", { className: "mt-4", children: [_jsx("h3", { className: "text-sm font-medium text-gray-900 dark:text-gray-100 mb-2", children: "Depth Chart" }), _jsx("div", { className: "w-full h-32 bg-gray-50 dark:bg-gray-800 rounded-lg overflow-hidden", children: _jsxs("svg", { width: "100%", height: "100%", viewBox: "0 0 100 100", preserveAspectRatio: "none", children: [_jsx("path", { d: generateBidPath(), fill: "rgba(16, 185, 129, 0.2)", stroke: "rgb(16, 185, 129)", strokeWidth: "0.5" }), _jsx("path", { d: generateAskPath(), fill: "rgba(239, 68, 68, 0.2)", stroke: "rgb(239, 68, 68)", strokeWidth: "0.5" }), _jsx("line", { x1: getPricePosition(data.asks[0][0]), y1: "0", x2: getPricePosition(data.asks[0][0]), y2: "100", stroke: "rgba(156, 163, 175, 0.5)", strokeWidth: "0.5", strokeDasharray: "2,2" })] }) }), _jsxs("div", { className: "flex justify-between mt-1 text-xs text-gray-500 dark:text-gray-400", children: [_jsx("span", { children: minPrice.toFixed(2) }), _jsx("span", { children: ((minPrice + maxPrice) / 2).toFixed(2) }), _jsx("span", { children: maxPrice.toFixed(2) })] })] }));
|
|
61
61
|
}
|
|
62
|
+
//# sourceMappingURL=OrderBookDepthVisualizer.js.map
|