@n1xyz/wallet-widget 0.0.30 → 0.0.33-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/README.md +117 -208
  2. package/dist/components/LoadingFallback.js.map +1 -0
  3. package/dist/{WidgetButton → components}/N1ConnectButton.js +3 -3
  4. package/dist/components/N1ConnectButton.js.map +1 -0
  5. package/dist/components/logos/ZeroOneLogo.d.ts +8 -0
  6. package/dist/components/logos/ZeroOneLogo.js +6 -0
  7. package/dist/components/logos/ZeroOneLogo.js.map +1 -0
  8. package/dist/components/logos/index.d.ts +1 -0
  9. package/dist/components/logos/index.js +1 -0
  10. package/dist/components/logos/index.js.map +1 -1
  11. package/dist/config/chains.js +2 -0
  12. package/dist/config/chains.js.map +1 -0
  13. package/dist/config/solana.js +1 -1
  14. package/dist/config/solana.js.map +1 -1
  15. package/dist/{Provider/context.d.ts → context/n1-wallet-context.d.ts} +2 -2
  16. package/dist/{Provider/context.js → context/n1-wallet-context.js} +1 -1
  17. package/dist/context/n1-wallet-context.js.map +1 -0
  18. package/dist/{Modal → features/onboarding-flow}/N1WalletModal.d.ts +1 -1
  19. package/dist/{Modal → features/onboarding-flow}/N1WalletModal.js +18 -15
  20. package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -0
  21. package/dist/features/onboarding-flow/OnboardingFlow.d.ts +9 -0
  22. package/dist/features/onboarding-flow/OnboardingFlow.js +98 -0
  23. package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -0
  24. package/dist/{Modal/NordFlow → features/onboarding-flow}/components/ChainButton.d.ts +1 -2
  25. package/dist/features/onboarding-flow/components/ChainButton.js +21 -0
  26. package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -0
  27. package/dist/{Modal/NordFlow → features/onboarding-flow}/components/Header.js +1 -1
  28. package/dist/features/onboarding-flow/components/Header.js.map +1 -0
  29. package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
  30. package/dist/{Modal/NordFlow → features/onboarding-flow}/components/TransactionTable.js +1 -1
  31. package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -0
  32. package/dist/features/onboarding-flow/components/WaitingMessage.js +17 -0
  33. package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
  34. package/dist/features/onboarding-flow/components/index.js.map +1 -0
  35. package/dist/features/onboarding-flow/index.d.ts +1 -0
  36. package/dist/features/onboarding-flow/index.js +2 -0
  37. package/dist/features/onboarding-flow/index.js.map +1 -0
  38. package/dist/{Modal/NordFlow/context/DepositContext.d.ts → features/onboarding-flow/providers/DepositFlowProvider.d.ts} +9 -7
  39. package/dist/{Modal/NordFlow/context/DepositContext.js → features/onboarding-flow/providers/DepositFlowProvider.js} +228 -78
  40. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
  41. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.d.ts +48 -0
  42. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +185 -0
  43. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
  44. package/dist/features/onboarding-flow/providers/StateProvider.d.ts +10 -0
  45. package/dist/features/onboarding-flow/providers/StateProvider.js +14 -0
  46. package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -0
  47. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.d.ts +21 -0
  48. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +394 -0
  49. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
  50. package/dist/features/onboarding-flow/providers/debug.d.ts +6 -0
  51. package/dist/features/onboarding-flow/providers/debug.js +63 -0
  52. package/dist/features/onboarding-flow/providers/debug.js.map +1 -0
  53. package/dist/features/onboarding-flow/providers/index.d.ts +5 -0
  54. package/dist/features/onboarding-flow/providers/index.js +8 -0
  55. package/dist/features/onboarding-flow/providers/index.js.map +1 -0
  56. package/dist/features/onboarding-flow/providers/onboardingStateMachine.d.ts +48 -0
  57. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js +83 -0
  58. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
  59. package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/01-ConnectWalletScreen.js +2 -2
  60. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
  61. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.d.ts +31 -0
  62. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +100 -0
  63. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +1 -0
  64. package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/03-AmountInputScreen.d.ts +2 -0
  65. package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/03-AmountInputScreen.js +123 -61
  66. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +1 -0
  67. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.d.ts +3 -0
  68. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +31 -0
  69. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +1 -0
  70. package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/05-DepositSuccessScreen.js +31 -26
  71. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +1 -0
  72. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +31 -0
  73. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +1 -0
  74. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +14 -0
  75. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +1 -0
  76. package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/index.d.ts +1 -0
  77. package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/index.js +1 -0
  78. package/dist/features/onboarding-flow/screens/index.js.map +1 -0
  79. package/dist/{Modal/NordFlow → features/onboarding-flow}/types.d.ts +13 -16
  80. package/dist/features/onboarding-flow/types.js +34 -0
  81. package/dist/features/onboarding-flow/types.js.map +1 -0
  82. package/dist/features/onboarding-flow/utils/depositStorage.js.map +1 -0
  83. package/dist/features/onboarding-flow/utils/imageUtils.js.map +1 -0
  84. package/dist/{utils/dynamicNord.d.ts → features/onboarding-flow/utils/nordUser.d.ts} +0 -1
  85. package/dist/{utils/dynamicNord.js → features/onboarding-flow/utils/nordUser.js} +2 -13
  86. package/dist/features/onboarding-flow/utils/nordUser.js.map +1 -0
  87. package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -0
  88. package/dist/{Logic/sessionManager.d.ts → features/onboarding-flow/utils/session.d.ts} +2 -2
  89. package/dist/{Logic/sessionManager.js → features/onboarding-flow/utils/session.js} +36 -5
  90. package/dist/features/onboarding-flow/utils/session.js.map +1 -0
  91. package/dist/{Logic/transactionManager.js → features/onboarding-flow/utils/transaction.js} +1 -1
  92. package/dist/features/onboarding-flow/utils/transaction.js.map +1 -0
  93. package/dist/{Logic → features/onboarding-flow/utils}/utils.d.ts +1 -1
  94. package/dist/{Logic → features/onboarding-flow/utils}/utils.js +1 -1
  95. package/dist/features/onboarding-flow/utils/utils.js.map +1 -0
  96. package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
  97. package/dist/hooks/index.d.ts +2 -0
  98. package/dist/hooks/index.js +3 -0
  99. package/dist/hooks/index.js.map +1 -0
  100. package/dist/hooks/useN1Wallet.d.ts +2 -0
  101. package/dist/{Provider/hooks.js → hooks/useN1Wallet.js} +2 -2
  102. package/dist/hooks/useN1Wallet.js.map +1 -0
  103. package/dist/{Provider/hooks → hooks}/useNordUserInitialization.js +7 -7
  104. package/dist/hooks/useNordUserInitialization.js.map +1 -0
  105. package/dist/index.d.ts +4 -4
  106. package/dist/index.js +4 -4
  107. package/dist/index.js.map +1 -1
  108. package/dist/{Provider → providers}/LazyWalletProvider.js +34 -8
  109. package/dist/providers/LazyWalletProvider.js.map +1 -0
  110. package/dist/providers/N1WalletProvider.d.ts +3 -0
  111. package/dist/{Provider → providers}/N1WalletProvider.js +51 -22
  112. package/dist/providers/N1WalletProvider.js.map +1 -0
  113. package/dist/providers/ShadowRootWrapper.js.map +1 -0
  114. package/dist/providers/WalletErrorBoundary.js.map +1 -0
  115. package/dist/styles/embedded-main-css.d.ts +2 -0
  116. package/dist/styles/embedded-main-css.js +3 -0
  117. package/dist/styles/embedded-main-css.js.map +1 -0
  118. package/dist/styles/main.css +2 -0
  119. package/dist/{Provider/types.d.ts → types/wallet.d.ts} +7 -8
  120. package/dist/{Provider/types.js → types/wallet.js} +1 -1
  121. package/dist/types/wallet.js.map +1 -0
  122. package/dist/{Logic → utils}/getPseudoName.js.map +1 -1
  123. package/dist/{Logic → utils}/words.js.map +1 -1
  124. package/package.json +25 -21
  125. package/dist/Logic/sessionManager.js.map +0 -1
  126. package/dist/Logic/transactionManager.js.map +0 -1
  127. package/dist/Logic/utils.js.map +0 -1
  128. package/dist/Modal/LoadingFallback.js.map +0 -1
  129. package/dist/Modal/N1WalletModal.js.map +0 -1
  130. package/dist/Modal/NTSFlow/LoadingFallback.d.ts +0 -2
  131. package/dist/Modal/NTSFlow/LoadingFallback.js +0 -3
  132. package/dist/Modal/NTSFlow/LoadingFallback.js.map +0 -1
  133. package/dist/Modal/NTSFlow/NTSFlow.d.ts +0 -4
  134. package/dist/Modal/NTSFlow/NTSFlow.js +0 -35
  135. package/dist/Modal/NTSFlow/NTSFlow.js.map +0 -1
  136. package/dist/Modal/NTSFlow/components/BackButton.d.ts +0 -3
  137. package/dist/Modal/NTSFlow/components/BackButton.js +0 -26
  138. package/dist/Modal/NTSFlow/components/BackButton.js.map +0 -1
  139. package/dist/Modal/NTSFlow/components/ModalHeader.d.ts +0 -1
  140. package/dist/Modal/NTSFlow/components/ModalHeader.js +0 -21
  141. package/dist/Modal/NTSFlow/components/ModalHeader.js.map +0 -1
  142. package/dist/Modal/NTSFlow/index.d.ts +0 -1
  143. package/dist/Modal/NTSFlow/index.js +0 -2
  144. package/dist/Modal/NTSFlow/index.js.map +0 -1
  145. package/dist/Modal/NTSFlow/views/ConnectView.d.ts +0 -1
  146. package/dist/Modal/NTSFlow/views/ConnectView.js +0 -68
  147. package/dist/Modal/NTSFlow/views/ConnectView.js.map +0 -1
  148. package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +0 -1
  149. package/dist/Modal/NTSFlow/views/CreateSessionView.js +0 -246
  150. package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +0 -1
  151. package/dist/Modal/NTSFlow/views/CreateUserView.d.ts +0 -1
  152. package/dist/Modal/NTSFlow/views/CreateUserView.js +0 -106
  153. package/dist/Modal/NTSFlow/views/CreateUserView.js.map +0 -1
  154. package/dist/Modal/NTSFlow/views/NoWhitelistView.d.ts +0 -1
  155. package/dist/Modal/NTSFlow/views/NoWhitelistView.js +0 -43
  156. package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +0 -1
  157. package/dist/Modal/NTSFlow/views/SigningView.d.ts +0 -1
  158. package/dist/Modal/NTSFlow/views/SigningView.js +0 -6
  159. package/dist/Modal/NTSFlow/views/SigningView.js.map +0 -1
  160. package/dist/Modal/NTSFlow/views/SuccessView.d.ts +0 -1
  161. package/dist/Modal/NTSFlow/views/SuccessView.js +0 -11
  162. package/dist/Modal/NTSFlow/views/SuccessView.js.map +0 -1
  163. package/dist/Modal/NordFlow/NordFlow.d.ts +0 -9
  164. package/dist/Modal/NordFlow/NordFlow.js +0 -84
  165. package/dist/Modal/NordFlow/NordFlow.js.map +0 -1
  166. package/dist/Modal/NordFlow/components/ChainButton.js +0 -25
  167. package/dist/Modal/NordFlow/components/ChainButton.js.map +0 -1
  168. package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +0 -9
  169. package/dist/Modal/NordFlow/components/EVMChainsButton.js +0 -21
  170. package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +0 -1
  171. package/dist/Modal/NordFlow/components/Header.js.map +0 -1
  172. package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +0 -1
  173. package/dist/Modal/NordFlow/components/LoadingSquares.d.ts +0 -1
  174. package/dist/Modal/NordFlow/components/LoadingSquares.js +0 -6
  175. package/dist/Modal/NordFlow/components/LoadingSquares.js.map +0 -1
  176. package/dist/Modal/NordFlow/components/MoreButton.d.ts +0 -8
  177. package/dist/Modal/NordFlow/components/MoreButton.js +0 -19
  178. package/dist/Modal/NordFlow/components/MoreButton.js.map +0 -1
  179. package/dist/Modal/NordFlow/components/TransactionTable.js.map +0 -1
  180. package/dist/Modal/NordFlow/components/WaitingMessage.js +0 -18
  181. package/dist/Modal/NordFlow/components/WaitingMessage.js.map +0 -1
  182. package/dist/Modal/NordFlow/components/index.js.map +0 -1
  183. package/dist/Modal/NordFlow/constants.d.ts +0 -37
  184. package/dist/Modal/NordFlow/constants.js +0 -183
  185. package/dist/Modal/NordFlow/constants.js.map +0 -1
  186. package/dist/Modal/NordFlow/context/DepositContext.js.map +0 -1
  187. package/dist/Modal/NordFlow/context/FlowContext.d.ts +0 -24
  188. package/dist/Modal/NordFlow/context/FlowContext.js +0 -218
  189. package/dist/Modal/NordFlow/context/FlowContext.js.map +0 -1
  190. package/dist/Modal/NordFlow/context/NordProvider.d.ts +0 -10
  191. package/dist/Modal/NordFlow/context/NordProvider.js +0 -14
  192. package/dist/Modal/NordFlow/context/NordProvider.js.map +0 -1
  193. package/dist/Modal/NordFlow/context/WalletConnectContext.d.ts +0 -20
  194. package/dist/Modal/NordFlow/context/WalletConnectContext.js +0 -269
  195. package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +0 -1
  196. package/dist/Modal/NordFlow/context/index.d.ts +0 -5
  197. package/dist/Modal/NordFlow/context/index.js +0 -8
  198. package/dist/Modal/NordFlow/context/index.js.map +0 -1
  199. package/dist/Modal/NordFlow/hoc/index.d.ts +0 -1
  200. package/dist/Modal/NordFlow/hoc/index.js +0 -2
  201. package/dist/Modal/NordFlow/hoc/index.js.map +0 -1
  202. package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +0 -1
  203. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +0 -18
  204. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +0 -181
  205. package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +0 -1
  206. package/dist/Modal/NordFlow/index.d.ts +0 -1
  207. package/dist/Modal/NordFlow/index.js +0 -2
  208. package/dist/Modal/NordFlow/index.js.map +0 -1
  209. package/dist/Modal/NordFlow/screens/00-IdleScreen.d.ts +0 -6
  210. package/dist/Modal/NordFlow/screens/00-IdleScreen.js +0 -9
  211. package/dist/Modal/NordFlow/screens/00-IdleScreen.js.map +0 -1
  212. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +0 -1
  213. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.d.ts +0 -1
  214. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +0 -115
  215. package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +0 -1
  216. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -2
  217. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -45
  218. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +0 -1
  219. package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +0 -1
  220. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -1
  221. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +0 -66
  222. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +0 -1
  223. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.d.ts +0 -1
  224. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +0 -204
  225. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +0 -1
  226. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.d.ts +0 -1
  227. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +0 -29
  228. package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +0 -1
  229. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -1
  230. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +0 -51
  231. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +0 -1
  232. package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +0 -1
  233. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +0 -37
  234. package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +0 -1
  235. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -1
  236. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +0 -132
  237. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +0 -1
  238. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.d.ts +0 -1
  239. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +0 -30
  240. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +0 -1
  241. package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.d.ts +0 -5
  242. package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js +0 -39
  243. package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js.map +0 -1
  244. package/dist/Modal/NordFlow/screens/08-ErrorScreen.js +0 -68
  245. package/dist/Modal/NordFlow/screens/08-ErrorScreen.js.map +0 -1
  246. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.d.ts +0 -5
  247. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +0 -52
  248. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +0 -1
  249. package/dist/Modal/NordFlow/screens/09-ErrorScreen.d.ts +0 -1
  250. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +0 -68
  251. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +0 -1
  252. package/dist/Modal/NordFlow/screens/index.js.map +0 -1
  253. package/dist/Modal/NordFlow/types.js +0 -34
  254. package/dist/Modal/NordFlow/types.js.map +0 -1
  255. package/dist/Modal/NordFlow/utils/depositStorage.js.map +0 -1
  256. package/dist/Modal/NordFlow/utils/imageUtils.js.map +0 -1
  257. package/dist/Modal/NordFlow/utils/index.d.ts +0 -2
  258. package/dist/Modal/NordFlow/utils/index.js +0 -3
  259. package/dist/Modal/NordFlow/utils/index.js.map +0 -1
  260. package/dist/Modal/NordFlow/utils/nordUtils.js.map +0 -1
  261. package/dist/Modal/Sidebar/N1Sidebar.d.ts +0 -1
  262. package/dist/Modal/Sidebar/N1Sidebar.js +0 -203
  263. package/dist/Modal/Sidebar/N1Sidebar.js.map +0 -1
  264. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.d.ts +0 -12
  265. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js +0 -90
  266. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js.map +0 -1
  267. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.d.ts +0 -6
  268. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +0 -43
  269. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +0 -1
  270. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.d.ts +0 -11
  271. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +0 -20
  272. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +0 -1
  273. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.d.ts +0 -1
  274. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +0 -143
  275. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +0 -1
  276. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +0 -248
  277. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +0 -1
  278. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.d.ts +0 -10
  279. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js +0 -62
  280. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js.map +0 -1
  281. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.d.ts +0 -7
  282. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js +0 -30
  283. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js.map +0 -1
  284. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.d.ts +0 -11
  285. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js +0 -22
  286. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js.map +0 -1
  287. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.d.ts +0 -7
  288. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js +0 -20
  289. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js.map +0 -1
  290. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.d.ts +0 -7
  291. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js +0 -24
  292. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js.map +0 -1
  293. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.d.ts +0 -7
  294. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js +0 -80
  295. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js.map +0 -1
  296. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.d.ts +0 -9
  297. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js +0 -110
  298. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js.map +0 -1
  299. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.d.ts +0 -7
  300. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js +0 -30
  301. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js.map +0 -1
  302. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.d.ts +0 -9
  303. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js +0 -40
  304. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js.map +0 -1
  305. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.d.ts +0 -7
  306. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js +0 -10
  307. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js.map +0 -1
  308. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.d.ts +0 -13
  309. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +0 -264
  310. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +0 -1
  311. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.d.ts +0 -5
  312. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +0 -113
  313. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +0 -1
  314. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.d.ts +0 -1
  315. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js +0 -183
  316. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js.map +0 -1
  317. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.d.ts +0 -0
  318. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +0 -278
  319. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +0 -1
  320. package/dist/Provider/LazyWalletProvider.js.map +0 -1
  321. package/dist/Provider/N1WalletProvider.d.ts +0 -3
  322. package/dist/Provider/N1WalletProvider.js.map +0 -1
  323. package/dist/Provider/ShadowRootWrapper.js.map +0 -1
  324. package/dist/Provider/WalletErrorBoundary.js.map +0 -1
  325. package/dist/Provider/context.js.map +0 -1
  326. package/dist/Provider/hooks/useNordUserInitialization.js.map +0 -1
  327. package/dist/Provider/hooks.d.ts +0 -2
  328. package/dist/Provider/hooks.js.map +0 -1
  329. package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +0 -1
  330. package/dist/Provider/icons/CoinbaseWalletIcon.js +0 -5
  331. package/dist/Provider/icons/CoinbaseWalletIcon.js.map +0 -1
  332. package/dist/Provider/icons/ConnectionDotsSVG.d.ts +0 -1
  333. package/dist/Provider/icons/ConnectionDotsSVG.js +0 -5
  334. package/dist/Provider/icons/ConnectionDotsSVG.js.map +0 -1
  335. package/dist/Provider/icons/MetamaskIcon.d.ts +0 -1
  336. package/dist/Provider/icons/MetamaskIcon.js +0 -5
  337. package/dist/Provider/icons/MetamaskIcon.js.map +0 -1
  338. package/dist/Provider/icons/PhantomIcon.d.ts +0 -1
  339. package/dist/Provider/icons/PhantomIcon.js +0 -5
  340. package/dist/Provider/icons/PhantomIcon.js.map +0 -1
  341. package/dist/Provider/icons/UserIcon.d.ts +0 -1
  342. package/dist/Provider/icons/UserIcon.js +0 -5
  343. package/dist/Provider/icons/UserIcon.js.map +0 -1
  344. package/dist/Provider/icons/WalletConnectIcon.d.ts +0 -1
  345. package/dist/Provider/icons/WalletConnectIcon.js +0 -5
  346. package/dist/Provider/icons/WalletConnectIcon.js.map +0 -1
  347. package/dist/Provider/index.d.ts +0 -3
  348. package/dist/Provider/index.js +0 -4
  349. package/dist/Provider/index.js.map +0 -1
  350. package/dist/Provider/types.js.map +0 -1
  351. package/dist/WidgetButton/N1ConnectButton.js.map +0 -1
  352. package/dist/components/QRCodeLoader.d.ts +0 -4
  353. package/dist/components/QRCodeLoader.js +0 -9
  354. package/dist/components/QRCodeLoader.js.map +0 -1
  355. package/dist/components/logos/EVMChainsGroup.d.ts +0 -7
  356. package/dist/components/logos/EVMChainsGroup.js +0 -19
  357. package/dist/components/logos/EVMChainsGroup.js.map +0 -1
  358. package/dist/components/logos/MoreChainsGroup.d.ts +0 -7
  359. package/dist/components/logos/MoreChainsGroup.js +0 -19
  360. package/dist/components/logos/MoreChainsGroup.js.map +0 -1
  361. package/dist/embedded-main-css.d.ts +0 -2
  362. package/dist/embedded-main-css.js +0 -3
  363. package/dist/embedded-main-css.js.map +0 -1
  364. package/dist/main.css +0 -2
  365. package/dist/utils/dynamicImports.js +0 -42
  366. package/dist/utils/dynamicImports.js.map +0 -1
  367. package/dist/utils/dynamicNord.js.map +0 -1
  368. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Bold-Italic-Trial.otf +0 -0
  369. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Bold-Trial.otf +0 -0
  370. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Extra-Bold-Italic-Trial.otf +0 -0
  371. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Extra-Bold-Trial.otf +0 -0
  372. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Light-Italic-Trial.otf +0 -0
  373. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Light-Trial.otf +0 -0
  374. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Medium-Italic-Trial.otf +0 -0
  375. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Medium-Trial.otf +0 -0
  376. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Regular-Italic-Trial.otf +0 -0
  377. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Regular-Trial.otf +0 -0
  378. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Semi-Bold-Italic-Trial.otf +0 -0
  379. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Semi-Bold-Trial.otf +0 -0
  380. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Thin-Italic-Trial.otf +0 -0
  381. /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Thin-Trial.otf +0 -0
  382. /package/dist/{Modal → components}/LoadingFallback.d.ts +0 -0
  383. /package/dist/{Modal → components}/LoadingFallback.js +0 -0
  384. /package/dist/{WidgetButton → components}/N1ConnectButton.d.ts +0 -0
  385. /package/dist/{Modal/Sidebar/NordTradingView/OrderBook/OrderBook.d.ts → config/chains.d.ts} +0 -0
  386. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/Header.d.ts +0 -0
  387. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/ImageWithFallback.d.ts +0 -0
  388. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/ImageWithFallback.js +0 -0
  389. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/TransactionTable.d.ts +0 -0
  390. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/WaitingMessage.d.ts +0 -0
  391. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/index.d.ts +0 -0
  392. /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/index.js +0 -0
  393. /package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/01-ConnectWalletScreen.d.ts +0 -0
  394. /package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/05-DepositSuccessScreen.d.ts +0 -0
  395. /package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/06-AuthLoadingScreen.d.ts +0 -0
  396. /package/dist/{Modal/NordFlow/screens/08-ErrorScreen.d.ts → features/onboarding-flow/screens/07-ErrorScreen.d.ts} +0 -0
  397. /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/depositStorage.d.ts +0 -0
  398. /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/depositStorage.js +0 -0
  399. /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/imageUtils.d.ts +0 -0
  400. /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/imageUtils.js +0 -0
  401. /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/nordUtils.d.ts +0 -0
  402. /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/nordUtils.js +0 -0
  403. /package/dist/{Logic/transactionManager.d.ts → features/onboarding-flow/utils/transaction.d.ts} +0 -0
  404. /package/dist/{Modal/NordFlow/hoc → features/onboarding-flow/utils}/withImageFallback.d.ts +0 -0
  405. /package/dist/{Modal/NordFlow/hoc → features/onboarding-flow/utils}/withImageFallback.js +0 -0
  406. /package/dist/{Provider/hooks → hooks}/useNordUserInitialization.d.ts +0 -0
  407. /package/dist/{Provider → providers}/LazyWalletProvider.d.ts +0 -0
  408. /package/dist/{Provider → providers}/ShadowRootWrapper.d.ts +0 -0
  409. /package/dist/{Provider → providers}/ShadowRootWrapper.js +0 -0
  410. /package/dist/{Provider → providers}/WalletErrorBoundary.d.ts +0 -0
  411. /package/dist/{Provider → providers}/WalletErrorBoundary.js +0 -0
  412. /package/dist/{Logic → utils}/getPseudoName.d.ts +0 -0
  413. /package/dist/{Logic → utils}/getPseudoName.js +0 -0
  414. /package/dist/{Logic → utils}/words.d.ts +0 -0
  415. /package/dist/{Logic → utils}/words.js +0 -0
@@ -1,11 +0,0 @@
1
- interface OrderBookTableProps {
2
- data: {
3
- bids: Array<[number, number]>;
4
- asks: Array<[number, number]>;
5
- timestamp: number;
6
- } | null;
7
- loading: boolean;
8
- maxSize: number;
9
- }
10
- export default function OrderBookTable({ data, loading, maxSize, }: OrderBookTableProps): JSX.Element;
11
- export {};
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { RefreshCw } from 'lucide-react';
3
- export default function OrderBookTable(_a) {
4
- var data = _a.data, loading = _a.loading, maxSize = _a.maxSize;
5
- if (!data) {
6
- return (_jsx("div", { className: "flex items-center justify-center h-40", children: _jsx("p", { className: "text-xs text-n1-ww-gray-500 dark:text-n1-ww-gray-400", children: "No orderbook data available" }) }));
7
- }
8
- // Limit the number of rows to display
9
- var maxRows = 8;
10
- var bids = data.bids.slice(0, maxRows);
11
- var asks = data.asks.slice(0, maxRows).reverse(); // Reverse to show highest ask at the bottom
12
- return (_jsxs("div", { className: "relative", children: [loading && (_jsx("div", { className: "absolute top-2 right-2 z-10", children: _jsx(RefreshCw, { size: 14, className: "text-n1-ww-main n1-animate-spin" }) })), _jsxs("div", { className: "grid grid-cols-3 gap-1 mb-1 text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400 font-medium uppercase tracking-wider", children: [_jsx("div", { className: "text-left", children: "Size" }), _jsx("div", { className: "text-center", children: "Price" }), _jsx("div", { className: "text-right", children: "Size" })] }), _jsx("div", { className: "space-y-px mb-2", children: asks.map(function (_a, index) {
13
- var price = _a[0], size = _a[1];
14
- var sizePercentage = (size / maxSize) * 100;
15
- return (_jsxs("div", { className: "grid grid-cols-3 gap-1 relative", children: [_jsx("div", { className: "text-left text-xs" }), _jsx("div", { className: "text-center text-xs font-medium text-red-600 dark:text-red-400 font-mono z-10", children: price.toFixed(4) }), _jsx("div", { className: "text-right text-xs font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono z-10", children: size.toFixed(4) }), _jsx("div", { className: "absolute top-0 right-0 h-full bg-red-100/50 dark:bg-red-900/10 z-0", style: { width: "".concat(sizePercentage, "%") } })] }, "ask-".concat(index)));
16
- }) }), bids.length > 0 && asks.length > 0 && (_jsx("div", { className: "py-1 px-2 mb-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-center", children: _jsxs("span", { className: "text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400", children: ["Spread:", ' ', _jsx("span", { className: "font-mono font-medium", children: (asks[asks.length - 1][0] - bids[0][0]).toFixed(4) }), ' ', "(", _jsxs("span", { className: "font-mono", children: [((asks[asks.length - 1][0] / bids[0][0] - 1) * 100).toFixed(2), "%"] }), ")"] }) })), _jsx("div", { className: "space-y-px", children: bids.map(function (_a, index) {
17
- var price = _a[0], size = _a[1];
18
- var sizePercentage = (size / maxSize) * 100;
19
- return (_jsxs("div", { className: "grid grid-cols-3 gap-1 relative", children: [_jsx("div", { className: "text-left text-xs font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono z-10", children: size.toFixed(4) }), _jsx("div", { className: "text-center text-xs font-medium text-green-600 dark:text-green-400 font-mono z-10", children: price.toFixed(4) }), _jsx("div", { className: "text-right text-xs" }), _jsx("div", { className: "absolute top-0 left-0 h-full bg-green-100/50 dark:bg-green-900/10 z-0", style: { width: "".concat(sizePercentage, "%") } })] }, "bid-".concat(index)));
20
- }) }), _jsxs("div", { className: "mt-2 text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-right", children: ["Last updated:", ' ', _jsx("span", { className: "font-mono", children: new Date(data.timestamp).toLocaleTimeString() })] })] }));
21
- }
22
- //# sourceMappingURL=OrderBookTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrderBookTable.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RefreshCw } from 'lucide-react';\n\ninterface OrderBookTableProps {\n data: {\n bids: Array<[number, number]>;\n asks: Array<[number, number]>;\n timestamp: number;\n } | null;\n loading: boolean;\n maxSize: number;\n}\n\nexport default function OrderBookTable({\n data,\n loading,\n maxSize,\n}: OrderBookTableProps) {\n if (!data) {\n return (\n <div className=\"flex items-center justify-center h-40\">\n <p className=\"text-xs text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n No orderbook data available\n </p>\n </div>\n );\n }\n\n // Limit the number of rows to display\n const maxRows = 8;\n const bids = data.bids.slice(0, maxRows);\n const asks = data.asks.slice(0, maxRows).reverse(); // Reverse to show highest ask at the bottom\n\n return (\n <div className=\"relative\">\n {loading && (\n <div className=\"absolute top-2 right-2 z-10\">\n <RefreshCw size={14} className=\"text-n1-ww-main n1-animate-spin\" />\n </div>\n )}\n\n <div className=\"grid grid-cols-3 gap-1 mb-1 text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400 font-medium uppercase tracking-wider\">\n <div className=\"text-left\">Size</div>\n <div className=\"text-center\">Price</div>\n <div className=\"text-right\">Size</div>\n </div>\n\n {/* Asks (Sell orders) */}\n <div className=\"space-y-px mb-2\">\n {asks.map(([price, size], index) => {\n const sizePercentage = (size / maxSize) * 100;\n\n return (\n <div\n key={`ask-${index}`}\n className=\"grid grid-cols-3 gap-1 relative\"\n >\n <div className=\"text-left text-xs\"></div>\n <div className=\"text-center text-xs font-medium text-red-600 dark:text-red-400 font-mono z-10\">\n {price.toFixed(4)}\n </div>\n <div className=\"text-right text-xs font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono z-10\">\n {size.toFixed(4)}\n </div>\n <div\n className=\"absolute top-0 right-0 h-full bg-red-100/50 dark:bg-red-900/10 z-0\"\n style={{ width: `${sizePercentage}%` }}\n />\n </div>\n );\n })}\n </div>\n\n {/* Spread */}\n {bids.length > 0 && asks.length > 0 && (\n <div className=\"py-1 px-2 mb-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-center\">\n <span className=\"text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n Spread:{' '}\n <span className=\"font-mono font-medium\">\n {(asks[asks.length - 1][0] - bids[0][0]).toFixed(4)}\n </span>{' '}\n (\n <span className=\"font-mono\">\n {((asks[asks.length - 1][0] / bids[0][0] - 1) * 100).toFixed(2)}%\n </span>\n )\n </span>\n </div>\n )}\n\n {/* Bids (Buy orders) */}\n <div className=\"space-y-px\">\n {bids.map(([price, size], index) => {\n const sizePercentage = (size / maxSize) * 100;\n\n return (\n <div\n key={`bid-${index}`}\n className=\"grid grid-cols-3 gap-1 relative\"\n >\n <div className=\"text-left text-xs font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono z-10\">\n {size.toFixed(4)}\n </div>\n <div className=\"text-center text-xs font-medium text-green-600 dark:text-green-400 font-mono z-10\">\n {price.toFixed(4)}\n </div>\n <div className=\"text-right text-xs\"></div>\n <div\n className=\"absolute top-0 left-0 h-full bg-green-100/50 dark:bg-green-900/10 z-0\"\n style={{ width: `${sizePercentage}%` }}\n />\n </div>\n );\n })}\n </div>\n\n {/* Last updated timestamp */}\n <div className=\"mt-2 text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-right\">\n Last updated:{' '}\n <span className=\"font-mono\">\n {new Date(data.timestamp).toLocaleTimeString()}\n </span>\n </div>\n </div>\n );\n}\n"]}
@@ -1,7 +0,0 @@
1
- interface AmountInputProps {
2
- amount: string;
3
- onChange: (amount: string) => void;
4
- marketInfo?: any;
5
- }
6
- export default function AmountInput({ amount, onChange, marketInfo, }: AmountInputProps): JSX.Element;
7
- export {};
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export default function AmountInput(_a) {
3
- var amount = _a.amount, onChange = _a.onChange, marketInfo = _a.marketInfo;
4
- // Handle amount change
5
- var handleAmountChange = function (e) {
6
- var value = e.target.value;
7
- // Allow only numbers and decimal point
8
- if (/^[0-9]*\.?[0-9]*$/.test(value) || value === '') {
9
- onChange(value);
10
- }
11
- };
12
- // Calculate percentage of available balance
13
- var handlePercentClick = function (percent) {
14
- // This is a placeholder. In a real implementation, you would calculate
15
- // the percentage of the available balance based on marketInfo
16
- onChange((percent * 0.01).toString());
17
- };
18
- return (_jsxs("div", { className: "relative z-20", children: [_jsx("label", { className: "block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1", children: "Amount" }), _jsx("div", { className: "relative", children: _jsx("input", { type: "text", value: amount, onChange: handleAmountChange, className: "w-full px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600 focus:border-n1-ww-gray-400 dark:focus:border-n1-ww-gray-600 bg-white dark:bg-n1-ww-gray-950 font-mono transition-colors duration-200", placeholder: "Enter amount" }) }), _jsx("div", { className: "grid grid-cols-4 gap-1 mt-1", children: [25, 50, 75, 100].map(function (percent) { return (_jsxs("button", { type: "button", onClick: function () { return handlePercentClick(percent); }, className: "text-[10px] px-1 py-0.5 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:bg-emerald-600 hover:border-emerald-600 hover:text-white dark:hover:bg-emerald-600 dark:hover:border-emerald-600 dark:hover:text-white rounded-sm text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950", children: [percent, "%"] }, percent)); }) })] }));
19
- }
20
- //# sourceMappingURL=AmountInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmountInput.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAIjB;QAHjB,MAAM,YAAA,EACN,QAAQ,cAAA,EACR,UAAU,gBAAA;IAEV,uBAAuB;IACvB,IAAM,kBAAkB,GAAG,UAAC,CAAsC;QAChE,IAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE7B,uCAAuC;QACvC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACpD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,4CAA4C;IAC5C,IAAM,kBAAkB,GAAG,UAAC,OAAe;QACzC,uEAAuE;QACvE,8DAA8D;QAC9D,QAAQ,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,gBAAO,SAAS,EAAC,6EAA6E,uBAEtF,EACR,cAAK,SAAS,EAAC,UAAU,YACvB,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAC,yWAAyW,EACnX,WAAW,EAAC,cAAc,GAC1B,GACE,EACN,cAAK,SAAS,EAAC,6BAA6B,YACzC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,OAAO,IAAK,OAAA,CAClC,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,kBAAkB,CAAC,OAAO,CAAC,EAA3B,CAA2B,EAC1C,SAAS,EAAC,qVAAqV,aAE9V,OAAO,UALH,OAAO,CAML,CACV,EATmC,CASnC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\ninterface AmountInputProps {\n amount: string;\n onChange: (amount: string) => void;\n marketInfo?: any;\n}\n\nexport default function AmountInput({\n amount,\n onChange,\n marketInfo,\n}: AmountInputProps) {\n // Handle amount change\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n\n // Allow only numbers and decimal point\n if (/^[0-9]*\\.?[0-9]*$/.test(value) || value === '') {\n onChange(value);\n }\n };\n\n // Calculate percentage of available balance\n const handlePercentClick = (percent: number) => {\n // This is a placeholder. In a real implementation, you would calculate\n // the percentage of the available balance based on marketInfo\n onChange((percent * 0.01).toString());\n };\n\n return (\n <div className=\"relative z-20\">\n <label className=\"block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1\">\n Amount\n </label>\n <div className=\"relative\">\n <input\n type=\"text\"\n value={amount}\n onChange={handleAmountChange}\n className=\"w-full px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600 focus:border-n1-ww-gray-400 dark:focus:border-n1-ww-gray-600 bg-white dark:bg-n1-ww-gray-950 font-mono transition-colors duration-200\"\n placeholder=\"Enter amount\"\n />\n </div>\n <div className=\"grid grid-cols-4 gap-1 mt-1\">\n {[25, 50, 75, 100].map((percent) => (\n <button\n key={percent}\n type=\"button\"\n onClick={() => handlePercentClick(percent)}\n className=\"text-[10px] px-1 py-0.5 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:bg-emerald-600 hover:border-emerald-600 hover:text-white dark:hover:bg-emerald-600 dark:hover:border-emerald-600 dark:hover:text-white rounded-sm text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950\"\n >\n {percent}%\n </button>\n ))}\n </div>\n </div>\n );\n}\n"]}
@@ -1,7 +0,0 @@
1
- import { OrderSide } from './TradeForm';
2
- interface BuySellTabsProps {
3
- side: OrderSide;
4
- onChange: (side: OrderSide) => void;
5
- }
6
- export default function BuySellTabs({ side, onChange }: BuySellTabsProps): JSX.Element;
7
- export {};
@@ -1,24 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- export default function BuySellTabs(_a) {
4
- var side = _a.side, onChange = _a.onChange;
5
- var _b = useState(null), hoveredSide = _b[0], setHoveredSide = _b[1];
6
- var _c = useState(false), animating = _c[0], setAnimating = _c[1];
7
- var handleSideChange = function (newSide) {
8
- if (side !== newSide) {
9
- setAnimating(true);
10
- onChange(newSide);
11
- setTimeout(function () { return setAnimating(false); }, 300);
12
- }
13
- };
14
- return (_jsxs("div", { className: "flex rounded-sm overflow-hidden border border-n1-ww-gray-200 dark:border-n1-ww-gray-700 relative", children: [_jsx("div", { className: "absolute top-0 bottom-0 w-1/2 transition-all duration-300 ease-in-out ".concat(side === 'BUY'
15
- ? 'left-0 bg-emerald-600 dark:bg-emerald-600 rounded-r-sm'
16
- : 'left-1/2 bg-red-700 dark:bg-red-700 rounded-l-sm') }), _jsxs("button", { type: "button", onClick: function () { return handleSideChange('BUY'); }, onMouseEnter: function () { return setHoveredSide('BUY'); }, onMouseLeave: function () { return setHoveredSide(null); }, className: "flex-1 py-2 text-center text-sm font-medium transition-colors duration-200 relative overflow-hidden z-10", children: [_jsx("span", { className: "relative transition-colors duration-300 ".concat(side === 'BUY' ? 'text-white' : 'text-n1-ww-gray-700 dark:text-n1-ww-gray-300'), children: "Buy" }), side === 'BUY' && hoveredSide === 'BUY' && !animating && (_jsx("span", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer", style: {
17
- backgroundSize: '200% 100%',
18
- animationDuration: '1.5s',
19
- } }))] }), _jsxs("button", { type: "button", onClick: function () { return handleSideChange('SELL'); }, onMouseEnter: function () { return setHoveredSide('SELL'); }, onMouseLeave: function () { return setHoveredSide(null); }, className: "flex-1 py-2 text-center text-sm font-medium transition-colors duration-200 relative overflow-hidden z-10", children: [_jsx("span", { className: "relative transition-colors duration-300 ".concat(side === 'SELL' ? 'text-white' : 'text-n1-ww-gray-700 dark:text-n1-ww-gray-300'), children: "Sell" }), side === 'SELL' && hoveredSide === 'SELL' && !animating && (_jsx("span", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer", style: {
20
- backgroundSize: '200% 100%',
21
- animationDuration: '1.5s',
22
- } }))] })] }));
23
- }
24
- //# sourceMappingURL=BuySellTabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BuySellTabs.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAoC;QAAlC,IAAI,UAAA,EAAE,QAAQ,cAAA;IAC5C,IAAA,KAAgC,QAAQ,CAAmB,IAAI,CAAC,EAA/D,WAAW,QAAA,EAAE,cAAc,QAAoC,CAAC;IACjE,IAAA,KAA4B,QAAQ,CAAC,KAAK,CAAC,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAC;IAElD,IAAM,gBAAgB,GAAG,UAAC,OAAkB;QAC1C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,UAAU,CAAC,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,kGAAkG,aAE/G,cACE,SAAS,EAAE,gFACT,IAAI,KAAK,KAAK;oBACZ,CAAC,CAAC,wDAAwD;oBAC1D,CAAC,CAAC,kDAAkD,CACtD,GACF,EAGF,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB,EACtC,YAAY,EAAE,cAAM,OAAA,cAAc,CAAC,KAAK,CAAC,EAArB,CAAqB,EACzC,YAAY,EAAE,cAAM,OAAA,cAAc,CAAC,IAAI,CAAC,EAApB,CAAoB,EACxC,SAAS,EAAC,0GAA0G,aAEpH,eACE,SAAS,EAAE,kDACT,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,8CAA8C,CAC9E,oBAGG,EAEN,IAAI,KAAK,KAAK,IAAI,WAAW,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,CACxD,eACE,SAAS,EAAC,sJAAsJ,EAChK,KAAK,EAAE;4BACL,cAAc,EAAE,WAAW;4BAC3B,iBAAiB,EAAE,MAAM;yBAC1B,GACD,CACH,IACM,EAGT,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,MAAM,CAAC,EAAxB,CAAwB,EACvC,YAAY,EAAE,cAAM,OAAA,cAAc,CAAC,MAAM,CAAC,EAAtB,CAAsB,EAC1C,YAAY,EAAE,cAAM,OAAA,cAAc,CAAC,IAAI,CAAC,EAApB,CAAoB,EACxC,SAAS,EAAC,0GAA0G,aAEpH,eACE,SAAS,EAAE,kDACT,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,8CAA8C,CAC/E,qBAGG,EAEN,IAAI,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,IAAI,CAAC,SAAS,IAAI,CAC1D,eACE,SAAS,EAAC,sJAAsJ,EAChK,KAAK,EAAE;4BACL,cAAc,EAAE,WAAW;4BAC3B,iBAAiB,EAAE,MAAM;yBAC1B,GACD,CACH,IACM,IACL,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useState } from 'react';\nimport { OrderSide } from './TradeForm';\n\ninterface BuySellTabsProps {\n side: OrderSide;\n onChange: (side: OrderSide) => void;\n}\n\nexport default function BuySellTabs({ side, onChange }: BuySellTabsProps) {\n const [hoveredSide, setHoveredSide] = useState<OrderSide | null>(null);\n const [animating, setAnimating] = useState(false);\n\n const handleSideChange = (newSide: OrderSide) => {\n if (side !== newSide) {\n setAnimating(true);\n onChange(newSide);\n setTimeout(() => setAnimating(false), 300);\n }\n };\n\n return (\n <div className=\"flex rounded-sm overflow-hidden border border-n1-ww-gray-200 dark:border-n1-ww-gray-700 relative\">\n {/* Background Slider */}\n <div\n className={`absolute top-0 bottom-0 w-1/2 transition-all duration-300 ease-in-out ${\n side === 'BUY'\n ? 'left-0 bg-emerald-600 dark:bg-emerald-600 rounded-r-sm'\n : 'left-1/2 bg-red-700 dark:bg-red-700 rounded-l-sm'\n }`}\n />\n\n {/* Buy Button */}\n <button\n type=\"button\"\n onClick={() => handleSideChange('BUY')}\n onMouseEnter={() => setHoveredSide('BUY')}\n onMouseLeave={() => setHoveredSide(null)}\n className=\"flex-1 py-2 text-center text-sm font-medium transition-colors duration-200 relative overflow-hidden z-10\"\n >\n <span\n className={`relative transition-colors duration-300 ${\n side === 'BUY' ? 'text-white' : 'text-n1-ww-gray-700 dark:text-n1-ww-gray-300'\n }`}\n >\n Buy\n </span>\n\n {side === 'BUY' && hoveredSide === 'BUY' && !animating && (\n <span\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer\"\n style={{\n backgroundSize: '200% 100%',\n animationDuration: '1.5s',\n }}\n />\n )}\n </button>\n\n {/* Sell Button */}\n <button\n type=\"button\"\n onClick={() => handleSideChange('SELL')}\n onMouseEnter={() => setHoveredSide('SELL')}\n onMouseLeave={() => setHoveredSide(null)}\n className=\"flex-1 py-2 text-center text-sm font-medium transition-colors duration-200 relative overflow-hidden z-10\"\n >\n <span\n className={`relative transition-colors duration-300 ${\n side === 'SELL' ? 'text-white' : 'text-n1-ww-gray-700 dark:text-n1-ww-gray-300'\n }`}\n >\n Sell\n </span>\n\n {side === 'SELL' && hoveredSide === 'SELL' && !animating && (\n <span\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer\"\n style={{\n backgroundSize: '200% 100%',\n animationDuration: '1.5s',\n }}\n />\n )}\n </button>\n </div>\n );\n}\n"]}
@@ -1,7 +0,0 @@
1
- import { FillMode } from './TradeForm';
2
- interface FillModeSelectorProps {
3
- fillMode: FillMode;
4
- onFillModeChange: (mode: FillMode) => void;
5
- }
6
- export default function FillModeSelector({ fillMode, onFillModeChange, }: FillModeSelectorProps): JSX.Element;
7
- export {};
@@ -1,80 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import { ChevronDown } from 'lucide-react';
5
- export default function FillModeSelector(_a) {
6
- var fillMode = _a.fillMode, onFillModeChange = _a.onFillModeChange;
7
- var _b = useState(false), isFillModeOpen = _b[0], setIsFillModeOpen = _b[1];
8
- var _c = useState(null), hoveredFillMode = _c[0], setHoveredFillMode = _c[1];
9
- var fillModeRef = useRef(null);
10
- var _d = useState(null), fillModeRect = _d[0], setFillModeRect = _d[1];
11
- // Update rect when dropdown opens
12
- useEffect(function () {
13
- if (isFillModeOpen && fillModeRef.current) {
14
- setFillModeRect(fillModeRef.current.getBoundingClientRect());
15
- }
16
- }, [isFillModeOpen]);
17
- // Close dropdowns when clicking outside
18
- useEffect(function () {
19
- function handleClickOutside(event) {
20
- if (fillModeRef.current &&
21
- !fillModeRef.current.contains(event.target)) {
22
- setIsFillModeOpen(false);
23
- }
24
- }
25
- document.addEventListener('mousedown', handleClickOutside);
26
- return function () {
27
- document.removeEventListener('mousedown', handleClickOutside);
28
- };
29
- }, []);
30
- // Fill mode options
31
- var fillModes = ['GTC', 'POST_ONLY', 'IOC', 'FOK'];
32
- // Fill mode descriptions and display names
33
- var fillModeInfo = {
34
- GTC: {
35
- displayName: 'Limit',
36
- description: 'Good Till Cancelled',
37
- },
38
- POST_ONLY: {
39
- displayName: 'Post Only',
40
- description: 'Only maker orders',
41
- },
42
- IOC: {
43
- displayName: 'Market',
44
- description: 'Immediate or Cancel',
45
- },
46
- FOK: {
47
- displayName: 'Fill or Kill',
48
- description: 'Fill completely or cancel',
49
- },
50
- };
51
- // Render fill mode dropdown via portal
52
- var renderFillModeDropdown = function () {
53
- if (!isFillModeOpen || !fillModeRect)
54
- return null;
55
- var dropdownStyle = {
56
- position: 'fixed',
57
- top: "".concat(fillModeRect.bottom + window.scrollY, "px"),
58
- left: "".concat(fillModeRect.left + window.scrollX, "px"),
59
- width: "".concat(fillModeRect.width, "px"),
60
- zIndex: 9999,
61
- maxHeight: '200px',
62
- overflowY: 'auto',
63
- };
64
- return createPortal(_jsx("div", { className: "bg-white dark:bg-n1-ww-dark-950 rounded-sm shadow-lg border border-n1-ww-gray-200 dark:border-n1-ww-gray-700 overflow-hidden n1-ww-animate-dropdown-open", style: dropdownStyle, children: fillModes.map(function (mode) { return (_jsxs("button", { type: "button", onClick: function () {
65
- onFillModeChange(mode);
66
- setIsFillModeOpen(false);
67
- }, onMouseEnter: function () { return setHoveredFillMode(mode); }, onMouseLeave: function () { return setHoveredFillMode(null); }, className: "w-full text-left px-3 py-2 text-sm cursor-pointer transition-colors duration-200 relative overflow-hidden ".concat(fillMode === mode
68
- ? 'bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 font-medium text-n1-ww-gray-900 dark:text-white'
69
- : 'text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800'), children: [_jsxs("div", { className: "flex items-center", children: [_jsx("div", { className: "w-1 h-10 absolute left-0 top-0 bottom-0 my-auto rounded-r-sm ".concat(fillMode === mode
70
- ? 'bg-emerald-600 dark:bg-emerald-500'
71
- : 'bg-transparent') }), _jsxs("div", { className: "flex flex-col ml-1", children: [_jsx("span", { className: "font-medium", children: fillModeInfo[mode].displayName }), _jsx("span", { className: "text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400", children: fillModeInfo[mode].description })] })] }), fillMode === mode && hoveredFillMode === mode && (_jsx("span", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer dark:via-n1-ww-gray-300", style: {
72
- backgroundSize: '200% 100%',
73
- animationDuration: '1.5s',
74
- } }))] }, mode)); }) }), document.body);
75
- };
76
- return (_jsxs("div", { className: "relative", ref: fillModeRef, children: [_jsx("label", { className: "block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1", children: "Order Type" }), _jsxs("button", { type: "button", onClick: function () { return setIsFillModeOpen(!isFillModeOpen); }, className: "w-full flex items-center justify-between px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-700 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:border-n1-ww-gray-400 dark:hover:border-n1-ww-gray-500 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600", children: [_jsx("span", { children: fillModeInfo[fillMode].displayName }), _jsx(ChevronDown, { size: 14, className: "transition-transform duration-200 ".concat(isFillModeOpen
77
- ? 'rotate-180 text-n1-ww-gray-700 dark:text-n1-ww-gray-300'
78
- : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400') })] }), renderFillModeDropdown()] }));
79
- }
80
- //# sourceMappingURL=FillModeSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FillModeSelector.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ChevronDown } from 'lucide-react';\nimport { FillMode } from './TradeForm';\n\ninterface FillModeSelectorProps {\n fillMode: FillMode;\n onFillModeChange: (mode: FillMode) => void;\n}\n\nexport default function FillModeSelector({\n fillMode,\n onFillModeChange,\n}: FillModeSelectorProps) {\n const [isFillModeOpen, setIsFillModeOpen] = useState(false);\n const [hoveredFillMode, setHoveredFillMode] = useState<FillMode | null>(null);\n const fillModeRef = useRef<HTMLDivElement>(null);\n const [fillModeRect, setFillModeRect] = useState<DOMRect | null>(null);\n\n // Update rect when dropdown opens\n useEffect(() => {\n if (isFillModeOpen && fillModeRef.current) {\n setFillModeRect(fillModeRef.current.getBoundingClientRect());\n }\n }, [isFillModeOpen]);\n\n // Close dropdowns when clicking outside\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n fillModeRef.current &&\n !fillModeRef.current.contains(event.target as Node)\n ) {\n setIsFillModeOpen(false);\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n // Fill mode options\n const fillModes: FillMode[] = ['GTC', 'POST_ONLY', 'IOC', 'FOK'];\n\n // Fill mode descriptions and display names\n const fillModeInfo: Record<\n FillMode,\n { description: string; displayName: string }\n > = {\n GTC: {\n displayName: 'Limit',\n description: 'Good Till Cancelled',\n },\n POST_ONLY: {\n displayName: 'Post Only',\n description: 'Only maker orders',\n },\n IOC: {\n displayName: 'Market',\n description: 'Immediate or Cancel',\n },\n FOK: {\n displayName: 'Fill or Kill',\n description: 'Fill completely or cancel',\n },\n };\n\n // Render fill mode dropdown via portal\n const renderFillModeDropdown = () => {\n if (!isFillModeOpen || !fillModeRect) return null;\n\n const dropdownStyle: React.CSSProperties = {\n position: 'fixed',\n top: `${fillModeRect.bottom + window.scrollY}px`,\n left: `${fillModeRect.left + window.scrollX}px`,\n width: `${fillModeRect.width}px`,\n zIndex: 9999,\n maxHeight: '200px',\n overflowY: 'auto',\n };\n\n return createPortal(\n <div\n className=\"bg-white dark:bg-n1-ww-dark-950 rounded-sm shadow-lg border border-n1-ww-gray-200 dark:border-n1-ww-gray-700 overflow-hidden n1-ww-animate-dropdown-open\"\n style={dropdownStyle}\n >\n {fillModes.map((mode) => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => {\n onFillModeChange(mode);\n setIsFillModeOpen(false);\n }}\n onMouseEnter={() => setHoveredFillMode(mode)}\n onMouseLeave={() => setHoveredFillMode(null)}\n className={`w-full text-left px-3 py-2 text-sm cursor-pointer transition-colors duration-200 relative overflow-hidden ${\n fillMode === mode\n ? 'bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 font-medium text-n1-ww-gray-900 dark:text-white'\n : 'text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800'\n }`}\n >\n <div className=\"flex items-center\">\n <div\n className={`w-1 h-10 absolute left-0 top-0 bottom-0 my-auto rounded-r-sm ${\n fillMode === mode\n ? 'bg-emerald-600 dark:bg-emerald-500'\n : 'bg-transparent'\n }`}\n />\n <div className=\"flex flex-col ml-1\">\n <span className=\"font-medium\">\n {fillModeInfo[mode].displayName}\n </span>\n <span className=\"text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n {fillModeInfo[mode].description}\n </span>\n </div>\n </div>\n\n {fillMode === mode && hoveredFillMode === mode && (\n <span\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer dark:via-n1-ww-gray-300\"\n style={{\n backgroundSize: '200% 100%',\n animationDuration: '1.5s',\n }}\n />\n )}\n </button>\n ))}\n </div>,\n document.body\n );\n };\n\n return (\n <div className=\"relative\" ref={fillModeRef}>\n <label className=\"block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1\">\n Order Type\n </label>\n <button\n type=\"button\"\n onClick={() => setIsFillModeOpen(!isFillModeOpen)}\n className=\"w-full flex items-center justify-between px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-700 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:border-n1-ww-gray-400 dark:hover:border-n1-ww-gray-500 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600\"\n >\n <span>{fillModeInfo[fillMode].displayName}</span>\n <ChevronDown\n size={14}\n className={`transition-transform duration-200 ${\n isFillModeOpen\n ? 'rotate-180 text-n1-ww-gray-700 dark:text-n1-ww-gray-300'\n : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400'\n }`}\n />\n </button>\n\n {renderFillModeDropdown()}\n </div>\n );\n}\n"]}
@@ -1,9 +0,0 @@
1
- import { OrderType, FillMode } from './TradeForm';
2
- interface FillModeSelectorProps {
3
- orderType: OrderType;
4
- fillMode: FillMode;
5
- onOrderTypeChange: (type: OrderType) => void;
6
- onFillModeChange: (mode: FillMode) => void;
7
- }
8
- export default function FillModeSelector({ orderType, fillMode, onOrderTypeChange, onFillModeChange, }: FillModeSelectorProps): JSX.Element;
9
- export {};
@@ -1,110 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import { ChevronDown } from 'lucide-react';
5
- export default function FillModeSelector(_a) {
6
- var orderType = _a.orderType, fillMode = _a.fillMode, onOrderTypeChange = _a.onOrderTypeChange, onFillModeChange = _a.onFillModeChange;
7
- var _b = useState(false), isOrderTypeOpen = _b[0], setIsOrderTypeOpen = _b[1];
8
- var _c = useState(false), isFillModeOpen = _c[0], setIsFillModeOpen = _c[1];
9
- var _d = useState(null), hoveredOrderType = _d[0], setHoveredOrderType = _d[1];
10
- var _e = useState(null), hoveredFillMode = _e[0], setHoveredFillMode = _e[1];
11
- var orderTypeRef = useRef(null);
12
- var fillModeRef = useRef(null);
13
- var _f = useState(null), orderTypeRect = _f[0], setOrderTypeRect = _f[1];
14
- var _g = useState(null), fillModeRect = _g[0], setFillModeRect = _g[1];
15
- // Update rect when dropdown opens
16
- useEffect(function () {
17
- if (isOrderTypeOpen && orderTypeRef.current) {
18
- setOrderTypeRect(orderTypeRef.current.getBoundingClientRect());
19
- }
20
- }, [isOrderTypeOpen]);
21
- useEffect(function () {
22
- if (isFillModeOpen && fillModeRef.current) {
23
- setFillModeRect(fillModeRef.current.getBoundingClientRect());
24
- }
25
- }, [isFillModeOpen]);
26
- // Close dropdowns when clicking outside
27
- useEffect(function () {
28
- function handleClickOutside(event) {
29
- if (orderTypeRef.current &&
30
- !orderTypeRef.current.contains(event.target)) {
31
- setIsOrderTypeOpen(false);
32
- }
33
- if (fillModeRef.current &&
34
- !fillModeRef.current.contains(event.target)) {
35
- setIsFillModeOpen(false);
36
- }
37
- }
38
- document.addEventListener('mousedown', handleClickOutside);
39
- return function () {
40
- document.removeEventListener('mousedown', handleClickOutside);
41
- };
42
- }, []);
43
- // Order type options
44
- var orderTypes = ['LIMIT', 'MARKET'];
45
- // Fill mode options
46
- var fillModes = ['GTC', 'IOC', 'FOK', 'POST_ONLY'];
47
- // Fill mode descriptions
48
- var fillModeDescriptions = {
49
- GTC: 'Good Till Cancelled',
50
- IOC: 'Immediate or Cancel',
51
- FOK: 'Fill or Kill',
52
- POST_ONLY: 'Post Only',
53
- };
54
- // Render dropdown via portal
55
- var renderOrderTypeDropdown = function () {
56
- if (!isOrderTypeOpen || !orderTypeRect)
57
- return null;
58
- var dropdownStyle = {
59
- position: 'fixed',
60
- top: "".concat(orderTypeRect.bottom + window.scrollY, "px"),
61
- left: "".concat(orderTypeRect.left + window.scrollX, "px"),
62
- width: "".concat(orderTypeRect.width, "px"),
63
- zIndex: 9999,
64
- maxHeight: '200px',
65
- overflowY: 'auto',
66
- };
67
- return createPortal(_jsx("div", { className: "bg-white dark:bg-n1-ww-dark-950 rounded-sm shadow-lg border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 overflow-hidden n1-ww-animate-dropdown-open", style: dropdownStyle, children: orderTypes.map(function (type) { return (_jsxs("button", { type: "button", onClick: function () {
68
- onOrderTypeChange(type);
69
- setIsOrderTypeOpen(false);
70
- }, onMouseEnter: function () { return setHoveredOrderType(type); }, onMouseLeave: function () { return setHoveredOrderType(null); }, className: "w-full text-left px-3 py-2 text-sm cursor-pointer transition-colors duration-200 relative overflow-hidden ".concat(orderType === type
71
- ? 'bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 font-medium text-n1-ww-gray-900 dark:text-white'
72
- : 'text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800'), children: [_jsxs("div", { className: "flex items-center", children: [_jsx("div", { className: "w-1 h-10 absolute left-0 top-0 bottom-0 my-auto rounded-r-sm ".concat(orderType === type
73
- ? 'bg-emerald-600 dark:bg-emerald-500'
74
- : 'bg-transparent') }), _jsx("span", { className: "ml-1", children: type })] }), orderType === type && hoveredOrderType === type && (_jsx("span", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer dark:via-n1-ww-gray-300", style: {
75
- backgroundSize: '200% 100%',
76
- animationDuration: '1.5s',
77
- } }))] }, type)); }) }), document.body);
78
- };
79
- // Render fill mode dropdown via portal
80
- var renderFillModeDropdown = function () {
81
- if (!isFillModeOpen || !fillModeRect)
82
- return null;
83
- var dropdownStyle = {
84
- position: 'fixed',
85
- top: "".concat(fillModeRect.bottom + window.scrollY, "px"),
86
- left: "".concat(fillModeRect.left + window.scrollX, "px"),
87
- width: "".concat(fillModeRect.width, "px"),
88
- zIndex: 9999,
89
- maxHeight: '200px',
90
- overflowY: 'auto',
91
- };
92
- return createPortal(_jsx("div", { className: "bg-white dark:bg-n1-ww-dark-950 rounded-sm shadow-lg border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 overflow-hidden n1-ww-animate-dropdown-open", style: dropdownStyle, children: fillModes.map(function (mode) { return (_jsxs("button", { type: "button", onClick: function () {
93
- onFillModeChange(mode);
94
- setIsFillModeOpen(false);
95
- }, onMouseEnter: function () { return setHoveredFillMode(mode); }, onMouseLeave: function () { return setHoveredFillMode(null); }, className: "w-full text-left px-3 py-2 text-sm cursor-pointer transition-colors duration-200 relative overflow-hidden ".concat(fillMode === mode
96
- ? 'bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 font-medium text-n1-ww-gray-900 dark:text-white'
97
- : 'text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800'), children: [_jsxs("div", { className: "flex items-center", children: [_jsx("div", { className: "w-1 h-10 absolute left-0 top-0 bottom-0 my-auto rounded-r-sm ".concat(fillMode === mode
98
- ? 'bg-emerald-600 dark:bg-emerald-500'
99
- : 'bg-transparent') }), _jsxs("div", { className: "flex flex-col ml-1", children: [_jsx("span", { children: mode }), _jsx("span", { className: "text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400", children: fillModeDescriptions[mode] })] })] }), fillMode === mode && hoveredFillMode === mode && (_jsx("span", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer dark:via-n1-ww-gray-300", style: {
100
- backgroundSize: '200% 100%',
101
- animationDuration: '1.5s',
102
- } }))] }, mode)); }) }), document.body);
103
- };
104
- return (_jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "relative", ref: orderTypeRef, children: [_jsx("label", { className: "block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1", children: "Order Type" }), _jsxs("button", { type: "button", onClick: function () { return setIsOrderTypeOpen(!isOrderTypeOpen); }, className: "w-full flex items-center justify-between px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:border-n1-ww-gray-400 dark:hover:border-n1-ww-gray-500 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600", children: [_jsx("span", { children: orderType }), _jsx(ChevronDown, { size: 14, className: "transition-transform duration-200 ".concat(isOrderTypeOpen
105
- ? 'rotate-180 text-n1-ww-gray-700 dark:text-n1-ww-gray-300'
106
- : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400') })] }), renderOrderTypeDropdown()] }), orderType === 'LIMIT' && (_jsxs("div", { className: "relative", ref: fillModeRef, children: [_jsx("label", { className: "block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1", children: "Fill Mode" }), _jsxs("button", { type: "button", onClick: function () { return setIsFillModeOpen(!isFillModeOpen); }, className: "w-full flex items-center justify-between px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:border-n1-ww-gray-400 dark:hover:border-n1-ww-gray-500 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600", children: [_jsx("span", { children: fillMode }), _jsx(ChevronDown, { size: 14, className: "transition-transform duration-200 ".concat(isFillModeOpen
107
- ? 'rotate-180 text-n1-ww-gray-700 dark:text-n1-ww-gray-300'
108
- : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400') })] }), renderFillModeDropdown()] }))] }));
109
- }
110
- //# sourceMappingURL=OrderTypeSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrderTypeSelector.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ChevronDown } from 'lucide-react';\nimport { OrderType, FillMode } from './TradeForm';\n\ninterface FillModeSelectorProps {\n orderType: OrderType;\n fillMode: FillMode;\n onOrderTypeChange: (type: OrderType) => void;\n onFillModeChange: (mode: FillMode) => void;\n}\n\nexport default function FillModeSelector({\n orderType,\n fillMode,\n onOrderTypeChange,\n onFillModeChange,\n}: FillModeSelectorProps) {\n const [isOrderTypeOpen, setIsOrderTypeOpen] = useState(false);\n const [isFillModeOpen, setIsFillModeOpen] = useState(false);\n const [hoveredOrderType, setHoveredOrderType] = useState<OrderType | null>(\n null\n );\n const [hoveredFillMode, setHoveredFillMode] = useState<FillMode | null>(null);\n const orderTypeRef = useRef<HTMLDivElement>(null);\n const fillModeRef = useRef<HTMLDivElement>(null);\n const [orderTypeRect, setOrderTypeRect] = useState<DOMRect | null>(null);\n const [fillModeRect, setFillModeRect] = useState<DOMRect | null>(null);\n\n // Update rect when dropdown opens\n useEffect(() => {\n if (isOrderTypeOpen && orderTypeRef.current) {\n setOrderTypeRect(orderTypeRef.current.getBoundingClientRect());\n }\n }, [isOrderTypeOpen]);\n\n useEffect(() => {\n if (isFillModeOpen && fillModeRef.current) {\n setFillModeRect(fillModeRef.current.getBoundingClientRect());\n }\n }, [isFillModeOpen]);\n\n // Close dropdowns when clicking outside\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n orderTypeRef.current &&\n !orderTypeRef.current.contains(event.target as Node)\n ) {\n setIsOrderTypeOpen(false);\n }\n if (\n fillModeRef.current &&\n !fillModeRef.current.contains(event.target as Node)\n ) {\n setIsFillModeOpen(false);\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n // Order type options\n const orderTypes: OrderType[] = ['LIMIT', 'MARKET'];\n\n // Fill mode options\n const fillModes: FillMode[] = ['GTC', 'IOC', 'FOK', 'POST_ONLY'];\n\n // Fill mode descriptions\n const fillModeDescriptions: Record<FillMode, string> = {\n GTC: 'Good Till Cancelled',\n IOC: 'Immediate or Cancel',\n FOK: 'Fill or Kill',\n POST_ONLY: 'Post Only',\n };\n\n // Render dropdown via portal\n const renderOrderTypeDropdown = () => {\n if (!isOrderTypeOpen || !orderTypeRect) return null;\n\n const dropdownStyle: React.CSSProperties = {\n position: 'fixed',\n top: `${orderTypeRect.bottom + window.scrollY}px`,\n left: `${orderTypeRect.left + window.scrollX}px`,\n width: `${orderTypeRect.width}px`,\n zIndex: 9999,\n maxHeight: '200px',\n overflowY: 'auto',\n };\n\n return createPortal(\n <div\n className=\"bg-white dark:bg-n1-ww-dark-950 rounded-sm shadow-lg border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 overflow-hidden n1-ww-animate-dropdown-open\"\n style={dropdownStyle}\n >\n {orderTypes.map((type) => (\n <button\n key={type}\n type=\"button\"\n onClick={() => {\n onOrderTypeChange(type);\n setIsOrderTypeOpen(false);\n }}\n onMouseEnter={() => setHoveredOrderType(type)}\n onMouseLeave={() => setHoveredOrderType(null)}\n className={`w-full text-left px-3 py-2 text-sm cursor-pointer transition-colors duration-200 relative overflow-hidden ${\n orderType === type\n ? 'bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 font-medium text-n1-ww-gray-900 dark:text-white'\n : 'text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800'\n }`}\n >\n <div className=\"flex items-center\">\n <div\n className={`w-1 h-10 absolute left-0 top-0 bottom-0 my-auto rounded-r-sm ${\n orderType === type\n ? 'bg-emerald-600 dark:bg-emerald-500'\n : 'bg-transparent'\n }`}\n />\n <span className=\"ml-1\">{type}</span>\n </div>\n\n {orderType === type && hoveredOrderType === type && (\n <span\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer dark:via-n1-ww-gray-300\"\n style={{\n backgroundSize: '200% 100%',\n animationDuration: '1.5s',\n }}\n />\n )}\n </button>\n ))}\n </div>,\n document.body\n );\n };\n\n // Render fill mode dropdown via portal\n const renderFillModeDropdown = () => {\n if (!isFillModeOpen || !fillModeRect) return null;\n\n const dropdownStyle: React.CSSProperties = {\n position: 'fixed',\n top: `${fillModeRect.bottom + window.scrollY}px`,\n left: `${fillModeRect.left + window.scrollX}px`,\n width: `${fillModeRect.width}px`,\n zIndex: 9999,\n maxHeight: '200px',\n overflowY: 'auto',\n };\n\n return createPortal(\n <div\n className=\"bg-white dark:bg-n1-ww-dark-950 rounded-sm shadow-lg border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 overflow-hidden n1-ww-animate-dropdown-open\"\n style={dropdownStyle}\n >\n {fillModes.map((mode) => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => {\n onFillModeChange(mode);\n setIsFillModeOpen(false);\n }}\n onMouseEnter={() => setHoveredFillMode(mode)}\n onMouseLeave={() => setHoveredFillMode(null)}\n className={`w-full text-left px-3 py-2 text-sm cursor-pointer transition-colors duration-200 relative overflow-hidden ${\n fillMode === mode\n ? 'bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 font-medium text-n1-ww-gray-900 dark:text-white'\n : 'text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800'\n }`}\n >\n <div className=\"flex items-center\">\n <div\n className={`w-1 h-10 absolute left-0 top-0 bottom-0 my-auto rounded-r-sm ${\n fillMode === mode\n ? 'bg-emerald-600 dark:bg-emerald-500'\n : 'bg-transparent'\n }`}\n />\n <div className=\"flex flex-col ml-1\">\n <span>{mode}</span>\n <span className=\"text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n {fillModeDescriptions[mode]}\n </span>\n </div>\n </div>\n\n {fillMode === mode && hoveredFillMode === mode && (\n <span\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] n1-ww-animate-shimmer dark:via-n1-ww-gray-300\"\n style={{\n backgroundSize: '200% 100%',\n animationDuration: '1.5s',\n }}\n />\n )}\n </button>\n ))}\n </div>,\n document.body\n );\n };\n\n return (\n <div className=\"grid grid-cols-2 gap-3\">\n {/* Order Type Selector */}\n <div className=\"relative\" ref={orderTypeRef}>\n <label className=\"block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1\">\n Order Type\n </label>\n <button\n type=\"button\"\n onClick={() => setIsOrderTypeOpen(!isOrderTypeOpen)}\n className=\"w-full flex items-center justify-between px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:border-n1-ww-gray-400 dark:hover:border-n1-ww-gray-500 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600\"\n >\n <span>{orderType}</span>\n <ChevronDown\n size={14}\n className={`transition-transform duration-200 ${\n isOrderTypeOpen\n ? 'rotate-180 text-n1-ww-gray-700 dark:text-n1-ww-gray-300'\n : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400'\n }`}\n />\n </button>\n\n {renderOrderTypeDropdown()}\n </div>\n\n {/* Fill Mode Selector (only for LIMIT orders) */}\n {orderType === 'LIMIT' && (\n <div className=\"relative\" ref={fillModeRef}>\n <label className=\"block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1\">\n Fill Mode\n </label>\n <button\n type=\"button\"\n onClick={() => setIsFillModeOpen(!isFillModeOpen)}\n className=\"w-full flex items-center justify-between px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 hover:border-n1-ww-gray-400 dark:hover:border-n1-ww-gray-500 transition-colors duration-200 bg-white dark:bg-n1-ww-dark-950 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600\"\n >\n <span>{fillMode}</span>\n <ChevronDown\n size={14}\n className={`transition-transform duration-200 ${\n isFillModeOpen\n ? 'rotate-180 text-n1-ww-gray-700 dark:text-n1-ww-gray-300'\n : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400'\n }`}\n />\n </button>\n\n {renderFillModeDropdown()}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,7 +0,0 @@
1
- interface PriceInputProps {
2
- price: string;
3
- onChange: (price: string) => void;
4
- marketPrice?: number;
5
- }
6
- export default function PriceInput({ price, onChange, marketPrice, }: PriceInputProps): JSX.Element;
7
- export {};
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export default function PriceInput(_a) {
3
- var price = _a.price, onChange = _a.onChange, marketPrice = _a.marketPrice;
4
- // Handle price change
5
- var handlePriceChange = function (e) {
6
- var value = e.target.value;
7
- // Allow only numbers and decimal point
8
- if (/^[0-9]*\.?[0-9]*$/.test(value) || value === '') {
9
- onChange(value);
10
- }
11
- };
12
- // Set price to market price
13
- var setMarketPrice = function () {
14
- if (marketPrice) {
15
- onChange(marketPrice.toString());
16
- }
17
- };
18
- // Adjust price by percentage
19
- var adjustPrice = function (percentage) {
20
- if (!price)
21
- return;
22
- var currentPrice = parseFloat(price);
23
- if (isNaN(currentPrice))
24
- return;
25
- var newPrice = currentPrice * (1 + percentage / 100);
26
- onChange(newPrice.toString());
27
- };
28
- return (_jsxs("div", { className: "relative z-20", children: [_jsx("label", { className: "block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1", children: "Price" }), _jsxs("div", { className: "relative", children: [_jsx("input", { type: "text", value: price, onChange: handlePriceChange, className: "w-full px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600 focus:border-n1-ww-gray-400 dark:focus:border-n1-ww-gray-600 bg-white dark:bg-n1-ww-dark-950 font-mono transition-colors duration-200", placeholder: "Enter price" }), marketPrice && (_jsx("button", { type: "button", onClick: setMarketPrice, className: "absolute right-2 top-1/2 transform -translate-y-1/2 text-[10px] border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 text-n1-ww-gray-700 dark:text-n1-ww-gray-300 px-1.5 py-0.5 rounded-sm hover:bg-emerald-600 hover:border-emerald-600 hover:text-white dark:hover:bg-emerald-600 dark:hover:border-emerald-600 dark:hover:text-white transition-colors duration-200", children: "Market" }))] }), _jsxs("div", { className: "grid grid-cols-4 gap-1 mt-2", children: [_jsx("button", { type: "button", onClick: function () { return adjustPrice(-1); }, className: "text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200", children: "-1%" }), _jsx("button", { type: "button", onClick: function () { return adjustPrice(-0.1); }, className: "text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200", children: "-0.1%" }), _jsx("button", { type: "button", onClick: function () { return adjustPrice(0.1); }, className: "text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200", children: "+0.1%" }), _jsx("button", { type: "button", onClick: function () { return adjustPrice(1); }, className: "text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200", children: "+1%" })] })] }));
29
- }
30
- //# sourceMappingURL=PriceInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PriceInput.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAIjB;QAHhB,KAAK,WAAA,EACL,QAAQ,cAAA,EACR,WAAW,iBAAA;IAEX,sBAAsB;IACtB,IAAM,iBAAiB,GAAG,UAAC,CAAsC;QAC/D,IAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE7B,uCAAuC;QACvC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACpD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,4BAA4B;IAC5B,IAAM,cAAc,GAAG;QACrB,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,6BAA6B;IAC7B,IAAM,WAAW,GAAG,UAAC,UAAkB;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,YAAY,CAAC;YAAE,OAAO;QAEhC,IAAM,QAAQ,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;QACvD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,gBAAO,SAAS,EAAC,6EAA6E,sBAEtF,EAER,eAAK,SAAS,EAAC,UAAU,aACvB,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAC,yWAAyW,EACnX,WAAW,EAAC,aAAa,GACzB,EAED,WAAW,IAAI,CACd,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,2WAA2W,uBAG9W,CACV,IACG,EAGN,eAAK,SAAS,EAAC,6BAA6B,aAC1C,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,WAAW,CAAC,CAAC,CAAC,CAAC,EAAf,CAAe,EAC9B,SAAS,EAAC,uMAAuM,oBAG1M,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,WAAW,CAAC,CAAC,GAAG,CAAC,EAAjB,CAAiB,EAChC,SAAS,EAAC,uMAAuM,sBAG1M,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,EAAhB,CAAgB,EAC/B,SAAS,EAAC,uMAAuM,sBAG1M,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,WAAW,CAAC,CAAC,CAAC,EAAd,CAAc,EAC7B,SAAS,EAAC,uMAAuM,oBAG1M,IACL,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\ninterface PriceInputProps {\n price: string;\n onChange: (price: string) => void;\n marketPrice?: number;\n}\n\nexport default function PriceInput({\n price,\n onChange,\n marketPrice,\n}: PriceInputProps) {\n // Handle price change\n const handlePriceChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n\n // Allow only numbers and decimal point\n if (/^[0-9]*\\.?[0-9]*$/.test(value) || value === '') {\n onChange(value);\n }\n };\n\n // Set price to market price\n const setMarketPrice = () => {\n if (marketPrice) {\n onChange(marketPrice.toString());\n }\n };\n\n // Adjust price by percentage\n const adjustPrice = (percentage: number) => {\n if (!price) return;\n\n const currentPrice = parseFloat(price);\n if (isNaN(currentPrice)) return;\n\n const newPrice = currentPrice * (1 + percentage / 100);\n onChange(newPrice.toString());\n };\n\n return (\n <div className=\"relative z-20\">\n <label className=\"block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1\">\n Price\n </label>\n\n <div className=\"relative\">\n <input\n type=\"text\"\n value={price}\n onChange={handlePriceChange}\n className=\"w-full px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 focus:outline-none focus:ring-1 focus:ring-n1-ww-gray-400 dark:focus:ring-n1-ww-gray-600 focus:border-n1-ww-gray-400 dark:focus:border-n1-ww-gray-600 bg-white dark:bg-n1-ww-dark-950 font-mono transition-colors duration-200\"\n placeholder=\"Enter price\"\n />\n\n {marketPrice && (\n <button\n type=\"button\"\n onClick={setMarketPrice}\n className=\"absolute right-2 top-1/2 transform -translate-y-1/2 text-[10px] border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 text-n1-ww-gray-700 dark:text-n1-ww-gray-300 px-1.5 py-0.5 rounded-sm hover:bg-emerald-600 hover:border-emerald-600 hover:text-white dark:hover:bg-emerald-600 dark:hover:border-emerald-600 dark:hover:text-white transition-colors duration-200\"\n >\n Market\n </button>\n )}\n </div>\n\n {/* Price adjustment buttons */}\n <div className=\"grid grid-cols-4 gap-1 mt-2\">\n <button\n type=\"button\"\n onClick={() => adjustPrice(-1)}\n className=\"text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200\"\n >\n -1%\n </button>\n <button\n type=\"button\"\n onClick={() => adjustPrice(-0.1)}\n className=\"text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200\"\n >\n -0.1%\n </button>\n <button\n type=\"button\"\n onClick={() => adjustPrice(0.1)}\n className=\"text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200\"\n >\n +0.1%\n </button>\n <button\n type=\"button\"\n onClick={() => adjustPrice(1)}\n className=\"text-xs px-1 py-0.5 bg-n1-ww-gray-100 dark:bg-n1-ww-gray-800 hover:bg-n1-ww-gray-200 dark:hover:bg-n1-ww-gray-700 rounded text-n1-ww-gray-700 dark:text-n1-ww-gray-300 transition-colors duration-200\"\n >\n +1%\n </button>\n </div>\n </div>\n );\n}\n"]}
@@ -1,9 +0,0 @@
1
- import { OrderSide, OrderType } from './TradeForm';
2
- interface SubmitButtonProps {
3
- loading: boolean;
4
- side: OrderSide;
5
- orderType: OrderType;
6
- disabled: boolean;
7
- }
8
- export default function SubmitButton({ loading, side, orderType, disabled, }: SubmitButtonProps): JSX.Element;
9
- export {};
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Loader2 } from 'lucide-react';
3
- import { useState } from 'react';
4
- export default function SubmitButton(_a) {
5
- var loading = _a.loading, side = _a.side, orderType = _a.orderType, disabled = _a.disabled;
6
- var _b = useState(false), isHovered = _b[0], setIsHovered = _b[1];
7
- var _c = useState(false), isPressed = _c[0], setIsPressed = _c[1];
8
- // Generate button text based on side and order type
9
- var getButtonText = function () {
10
- if (side === 'BUY') {
11
- return "Buy ".concat(orderType === 'MARKET' ? 'Market' : 'Limit');
12
- }
13
- else {
14
- return "Sell ".concat(orderType === 'MARKET' ? 'Market' : 'Limit');
15
- }
16
- };
17
- // Generate button color based on side
18
- var getButtonClass = function () {
19
- var baseClasses = 'w-full py-3 rounded-sm font-medium transition-all duration-200 flex items-center justify-center relative overflow-hidden';
20
- if (disabled || loading) {
21
- return "".concat(baseClasses, " bg-n1-ww-gray-200 dark:bg-n1-ww-gray-800 text-n1-ww-gray-400 dark:text-n1-ww-gray-500 cursor-not-allowed");
22
- }
23
- if (side === 'BUY') {
24
- return "".concat(baseClasses, " bg-emerald-600 hover:bg-emerald-700 text-white shadow-sm transform hover:scale-[0.99] active:scale-[0.98]");
25
- }
26
- else {
27
- return "".concat(baseClasses, " bg-red-700 hover:bg-red-800 text-white shadow-sm transform hover:scale-[0.99] active:scale-[0.98]");
28
- }
29
- };
30
- return (_jsxs("button", { type: "submit", disabled: disabled || loading, className: getButtonClass(), onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () {
31
- setIsHovered(false);
32
- setIsPressed(false);
33
- }, onMouseDown: function () { return setIsPressed(true); }, onMouseUp: function () { return setIsPressed(false); }, children: [_jsx("span", { className: "relative z-10 flex items-center justify-center transition-transform duration-200 ".concat(isPressed ? 'scale-95' : ''), children: loading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { size: 18, className: "n1-ww-animate-spin mr-2 inline-block" }), "Processing..."] })) : (_jsxs(_Fragment, { children: [side === 'BUY' ? (_jsx("svg", { className: "w-4 h-4 mr-2", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12 5L12 19M12 5L6 11M12 5L18 11", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "transition-transform duration-300 ".concat(isHovered ? 'translate-y-[-2px]' : '') }) })) : (_jsx("svg", { className: "w-4 h-4 mr-2", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12 19L12 5M12 19L6 13M12 19L18 13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "transition-transform duration-300 ".concat(isHovered ? 'translate-y-[2px]' : '') }) })), getButtonText()] })) }), !disabled && !loading && (_jsxs(_Fragment, { children: [_jsx("span", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] ".concat(isHovered ? 'animate-shimmer' : ''), style: {
34
- backgroundSize: '200% 100%',
35
- animationDuration: '1.5s',
36
- } }), _jsx("span", { className: "absolute inset-0 rounded-sm transition-opacity duration-300 pointer-events-none ".concat(isPressed
37
- ? 'bg-black opacity-10 dark:bg-white dark:opacity-10'
38
- : 'opacity-0') })] }))] }));
39
- }
40
- //# sourceMappingURL=SubmitButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubmitButton.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Loader2 } from 'lucide-react';\nimport { useState } from 'react';\nimport { OrderSide, OrderType } from './TradeForm';\n\ninterface SubmitButtonProps {\n loading: boolean;\n side: OrderSide;\n orderType: OrderType;\n disabled: boolean;\n}\n\nexport default function SubmitButton({\n loading,\n side,\n orderType,\n disabled,\n}: SubmitButtonProps) {\n const [isHovered, setIsHovered] = useState(false);\n const [isPressed, setIsPressed] = useState(false);\n\n // Generate button text based on side and order type\n const getButtonText = () => {\n if (side === 'BUY') {\n return `Buy ${orderType === 'MARKET' ? 'Market' : 'Limit'}`;\n } else {\n return `Sell ${orderType === 'MARKET' ? 'Market' : 'Limit'}`;\n }\n };\n\n // Generate button color based on side\n const getButtonClass = () => {\n const baseClasses =\n 'w-full py-3 rounded-sm font-medium transition-all duration-200 flex items-center justify-center relative overflow-hidden';\n\n if (disabled || loading) {\n return `${baseClasses} bg-n1-ww-gray-200 dark:bg-n1-ww-gray-800 text-n1-ww-gray-400 dark:text-n1-ww-gray-500 cursor-not-allowed`;\n }\n\n if (side === 'BUY') {\n return `${baseClasses} bg-emerald-600 hover:bg-emerald-700 text-white shadow-sm transform hover:scale-[0.99] active:scale-[0.98]`;\n } else {\n return `${baseClasses} bg-red-700 hover:bg-red-800 text-white shadow-sm transform hover:scale-[0.99] active:scale-[0.98]`;\n }\n };\n\n return (\n <button\n type=\"submit\"\n disabled={disabled || loading}\n className={getButtonClass()}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsPressed(false);\n }}\n onMouseDown={() => setIsPressed(true)}\n onMouseUp={() => setIsPressed(false)}\n >\n <span\n className={`relative z-10 flex items-center justify-center transition-transform duration-200 ${isPressed ? 'scale-95' : ''}`}\n >\n {loading ? (\n <>\n <Loader2 size={18} className=\"n1-ww-animate-spin mr-2 inline-block\" />\n Processing...\n </>\n ) : (\n <>\n {side === 'BUY' ? (\n <svg\n className=\"w-4 h-4 mr-2\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 5L12 19M12 5L6 11M12 5L18 11\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={`transition-transform duration-300 ${isHovered ? 'translate-y-[-2px]' : ''}`}\n />\n </svg>\n ) : (\n <svg\n className=\"w-4 h-4 mr-2\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 19L12 5M12 19L6 13M12 19L18 13\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={`transition-transform duration-300 ${isHovered ? 'translate-y-[2px]' : ''}`}\n />\n </svg>\n )}\n {getButtonText()}\n </>\n )}\n </span>\n\n {!disabled && !loading && (\n <>\n <span\n className={`absolute inset-0 bg-gradient-to-r from-transparent via-white to-transparent opacity-25 pointer-events-none translate-x-[-200%] ${isHovered ? 'animate-shimmer' : ''}`}\n style={{\n backgroundSize: '200% 100%',\n animationDuration: '1.5s',\n }}\n />\n <span\n className={`absolute inset-0 rounded-sm transition-opacity duration-300 pointer-events-none ${\n isPressed\n ? 'bg-black opacity-10 dark:bg-white dark:opacity-10'\n : 'opacity-0'\n }`}\n />\n </>\n )}\n </button>\n );\n}\n"]}
@@ -1,7 +0,0 @@
1
- type OrderType = 'LIMIT' | 'MARKET';
2
- interface TotalCalculatorProps {
3
- total: string;
4
- orderType: OrderType;
5
- }
6
- export default function TotalCalculator({ total, orderType, }: TotalCalculatorProps): JSX.Element;
7
- export {};
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export default function TotalCalculator(_a) {
3
- var total = _a.total, orderType = _a.orderType;
4
- // Calculate fee (example: 0.1% fee)
5
- var fee = total && orderType === 'LIMIT'
6
- ? (parseFloat(total) * 0.001).toFixed(6)
7
- : '0.00';
8
- return (_jsxs("div", { className: "relative z-20", children: [_jsx("label", { className: "block text-xs font-medium text-n1-ww-gray-700 dark:text-n1-ww-gray-300 mb-1", children: "Total" }), _jsx("div", { className: "px-3 py-2 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 bg-n1-ww-gray-50 dark:bg-n1-ww-dark-950 font-mono", children: orderType === 'MARKET' ? (_jsx("span", { className: "text-n1-ww-gray-500 dark:text-n1-ww-gray-400", children: "Market Order" })) : total ? (total) : (_jsx("span", { className: "text-n1-ww-gray-400 dark:text-n1-ww-gray-500", children: "0.00" })) }), _jsxs("div", { className: "mt-1 text-[10px] text-n1-ww-gray-500 dark:text-n1-ww-gray-400 flex justify-between", children: [_jsx("span", { children: "Estimated fee:" }), _jsx("span", { className: "font-mono", children: fee })] })] }));
9
- }
10
- //# sourceMappingURL=TotalCalculator.js.map