@n1xyz/wallet-widget 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Modal/NordFlow/context/DepositContext.js +1 -1
- package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/WalletConnectContext.js +4 -3
- package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -1
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +19 -14
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -1
- package/dist/Modal/Sidebar/N1Sidebar.js +6 -2
- package/dist/Modal/Sidebar/N1Sidebar.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.d.ts +7 -2
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js +11 -8
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.d.ts +2 -2
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +3 -3
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.d.ts +4 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +4 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.d.ts +1 -1
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +129 -41
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.d.ts +0 -5
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +234 -195
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.d.ts +6 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +11 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.d.ts +4 -0
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +4 -0
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +1 -1
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.d.ts +0 -1
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +271 -189
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +1 -1
- package/dist/Provider/hooks/useNordUserInitialization.js +7 -4
- package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
- package/dist/embedded-main-css.d.ts +1 -1
- package/dist/embedded-main-css.js +1 -1
- package/dist/embedded-main-css.js.map +1 -1
- package/dist/main.css +1 -1
- package/package.json +12 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TradeForm.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport BuySellTabs from './BuySellTabs';\nimport FillModeSelector from './FillModeSelector';\nimport PriceInput from './PriceInput';\nimport AmountInput from './AmountInput';\nimport TotalCalculator from './TotalCalculator';\nimport SubmitButton from './SubmitButton';\nimport { AlertCircle, Check, Lock, Unlock, Info } from 'lucide-react';\nimport { logger } from '../../../../utils/logger';\n\ninterface TradeFormProps {\n marketSymbol: string | null;\n}\n\n// Define order types\nexport type OrderSide = 'BUY' | 'SELL';\nexport type OrderType = 'LIMIT' | 'MARKET'; // Keep for backward compatibility\nexport type FillMode = 'GTC' | 'POST_ONLY' | 'IOC' | 'FOK';\n\n// Map our FillMode to the Nord FillMode enum\nconst mapFillMode = (mode: FillMode): number => {\n switch (mode) {\n case 'GTC':\n return 0; // LIMIT\n case 'POST_ONLY':\n return 1; // POST_ONLY\n case 'IOC':\n return 2; // IMMEDIATE_OR_CANCEL\n case 'FOK':\n return 3; // FILL_OR_KILL\n default:\n return 0;\n }\n};\n\n// Map our OrderSide to the Nord Side enum\nconst mapSide = (side: OrderSide): number => {\n return side === 'BUY' ? 1 : 0; // BID = 1, ASK = 0\n};\n\n// Helper to determine if a fill mode is a market order\nconst isMarketOrder = (mode: FillMode): boolean => {\n return mode === 'IOC'; // IOC is used for market orders\n};\n\nexport default function TradeForm({ marketSymbol }: TradeFormProps) {\n const { nord, nordUser } = useN1WalletContext();\n\n // Form state\n const [side, setSide] = useState<OrderSide>('BUY');\n const [fillMode, setFillMode] = useState<FillMode>('GTC');\n const [price, setPrice] = useState<string>('');\n const [amount, setAmount] = useState<string>('');\n const [total, setTotal] = useState<string>('');\n const [isReduceOnly, setIsReduceOnly] = useState<boolean>(false);\n const [accountId, setAccountId] = useState<number | undefined>(undefined);\n\n // UI state\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [success, setSuccess] = useState<string | null>(null);\n const [formVisible, setFormVisible] = useState<boolean>(false);\n\n // Market data\n const [marketInfo, setMarketInfo] = useState<any>(null);\n\n // Show form with animation after initial render\n useEffect(() => {\n const timer = setTimeout(() => {\n setFormVisible(true);\n }, 100);\n return () => clearTimeout(timer);\n }, []);\n\n // Fetch market info and user account ID when market changes\n useEffect(() => {\n if (!marketSymbol || !nord) return;\n\n const fetchMarketInfo = async () => {\n try {\n const stats = await nord.getMarketStats();\n const selectedMarket = stats.markets.find(\n (m: any) => m.symbol === marketSymbol\n );\n setMarketInfo(selectedMarket || null);\n\n // Set default price to current market price\n if ((selectedMarket as any)?.lastPrice) {\n setPrice((selectedMarket as any).lastPrice.toString());\n }\n } catch (err) {\n console.error('Error fetching market info:', err);\n }\n };\n\n const fetchUserAccount = async () => {\n if (nordUser) {\n try {\n // Update account ID\n await nordUser.updateAccountId();\n // Set the first account ID if available\n if (nordUser.accountIds && nordUser.accountIds.length > 0) {\n setAccountId(nordUser.accountIds[0]);\n }\n } catch (err) {\n console.error('Error fetching user account:', err);\n }\n }\n };\n\n fetchMarketInfo();\n fetchUserAccount();\n }, [marketSymbol, nord, nordUser]);\n\n // Calculate total when price or amount changes\n useEffect(() => {\n if (!isMarketOrder(fillMode) && price && amount) {\n const calculatedTotal = parseFloat(price) * parseFloat(amount);\n setTotal(calculatedTotal.toFixed(8));\n } else if (isMarketOrder(fillMode)) {\n setTotal('Market');\n } else {\n setTotal('');\n }\n }, [price, amount, fillMode]);\n\n // Handle order submission\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n if (!marketSymbol || !nordUser) {\n setError('User or market not available');\n return;\n }\n\n if (!isMarketOrder(fillMode) && (!price || parseFloat(price) <= 0)) {\n setError('Please enter a valid price');\n return;\n }\n\n if (!amount || parseFloat(amount) <= 0) {\n setError('Please enter a valid amount');\n return;\n }\n\n setLoading(true);\n setError(null);\n setSuccess(null);\n\n try {\n // Find market ID from symbol\n const market = nord?.markets?.find((m) => m.symbol === marketSymbol);\n const marketId = market\n ? (market as any).id || (market as any).marketId || 0\n : 0;\n\n // Prepare order parameters\n const orderParams = {\n marketId,\n side: mapSide(side),\n fillMode: mapFillMode(fillMode),\n isReduceOnly,\n // For limit orders or SELL orders, we need size\n size: !isMarketOrder(fillMode) || side === 'SELL' ? amount : undefined,\n // For limit orders, we need price\n price: !isMarketOrder(fillMode) ? price : undefined,\n // For market BUY orders, we need quoteSize (total amount to spend)\n quoteSize:\n isMarketOrder(fillMode) && side === 'BUY' ? total : undefined,\n // Use the first account ID if available\n accountId: accountId,\n };\n\n logger.debug('Placing order with params:', orderParams);\n\n // Place order\n const orderId = await nordUser.placeOrder(orderParams);\n\n if (orderId) {\n setSuccess(`Order placed successfully! Order ID: ${orderId}`);\n // Reset form\n setAmount('');\n if (isMarketOrder(fillMode)) {\n setPrice('');\n }\n } else {\n throw new Error('Failed to place order');\n }\n } catch (err: any) {\n logger.error('Error placing order:', err);\n setError(err.message || 'Failed to place order');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div className=\"p-4 bg-white dark:bg-n1-ww-dark-950 transition-colors duration-300\">\n <h2\n className={`text-base font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-3 transform transition-all duration-500 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n Place Order{' '}\n {marketSymbol ? (\n <span\n className={\n side === 'BUY'\n ? 'text-emerald-600 dark:text-emerald-500'\n : 'text-red-700 dark:text-red-600'\n }\n >\n {marketSymbol}\n </span>\n ) : (\n ''\n )}\n </h2>\n\n {!marketSymbol ? (\n <div\n className={`p-3 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-xs bg-n1-ww-gray-50 dark:bg-n1-ww-dark-950 transform transition-all duration-500 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n Select a market to place orders\n </div>\n ) : (\n <form onSubmit={handleSubmit}>\n <div className=\"space-y-3\">\n {/* Buy/Sell Tabs */}\n <div\n className={`transform transition-all duration-500 delay-100 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <BuySellTabs side={side} onChange={setSide} />\n </div>\n\n {/* Order Type (Fill Mode) */}\n <div\n className={`transform transition-all duration-500 delay-200 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <FillModeSelector\n fillMode={fillMode}\n onFillModeChange={setFillMode}\n />\n </div>\n\n {/* Price Input (hidden for market orders) */}\n {!isMarketOrder(fillMode) && (\n <div\n className={`transform transition-all duration-500 delay-300 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <PriceInput\n price={price}\n onChange={setPrice}\n marketPrice={(marketInfo as any)?.lastPrice}\n />\n </div>\n )}\n\n {/* Amount Input */}\n <div\n className={`transform transition-all duration-500 delay-400 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <AmountInput\n amount={amount}\n onChange={setAmount}\n marketInfo={marketInfo}\n />\n </div>\n\n {/* Total Calculator */}\n <div\n className={`transform transition-all duration-500 delay-500 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <TotalCalculator\n total={total}\n orderType={isMarketOrder(fillMode) ? 'MARKET' : 'LIMIT'}\n />\n </div>\n\n {/* Account ID Info */}\n {accountId && (\n <div\n className={`transform transition-all duration-500 delay-550 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <div className=\"flex items-center text-xs text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n <Info size={12} className=\"mr-1\" />\n <span>Account ID: {accountId}</span>\n </div>\n </div>\n )}\n\n {/* Reduce Only Button */}\n <div\n className={`transform transition-all duration-500 delay-600 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <button\n type=\"button\"\n onClick={() => setIsReduceOnly(!isReduceOnly)}\n className={`w-full flex items-center justify-between px-3 py-2 rounded-sm text-sm transition-all duration-300 ${\n isReduceOnly\n ? side === 'BUY'\n ? 'bg-emerald-50 dark:bg-emerald-900/10 text-emerald-700 dark:text-emerald-400 border border-emerald-200 dark:border-emerald-800/30'\n : 'bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 border border-red-200 dark:border-red-800/30'\n : 'bg-n1-ww-gray-50 dark:bg-n1-ww-gray-900 text-n1-ww-gray-700 dark:text-n1-ww-gray-300 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-300 dark:hover:border-n1-ww-gray-600'\n }`}\n >\n <div className=\"flex items-center\">\n <div\n className={`mr-2 transition-colors duration-300 ${\n isReduceOnly\n ? side === 'BUY'\n ? 'text-emerald-600 dark:text-emerald-500'\n : 'text-red-600 dark:text-red-500'\n : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400'\n }`}\n >\n {isReduceOnly ? <Lock size={14} /> : <Unlock size={14} />}\n </div>\n <span className=\"text-xs\">Reduce Only</span>\n </div>\n <div\n className={`flex items-center justify-center w-4 h-4 rounded-full transition-all duration-300 ${\n isReduceOnly\n ? side === 'BUY'\n ? 'bg-emerald-600 dark:bg-emerald-500 text-white'\n : 'bg-red-600 dark:bg-red-500 text-white'\n : 'bg-n1-ww-gray-200 dark:bg-n1-ww-gray-700'\n }`}\n >\n {isReduceOnly && <Check size={10} />}\n </div>\n </button>\n </div>\n\n {/* Error Message */}\n <div\n className={`p-2 border rounded-sm text-xs transition-all duration-300 transform ${\n error\n ? 'opacity-100 max-h-20 border-red-200 dark:border-red-900/30 bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 flex items-center translate-y-0'\n : 'opacity-0 max-h-0 overflow-hidden border-transparent translate-y-2'\n }`}\n >\n {error && (\n <AlertCircle size={14} className=\"mr-2 flex-shrink-0\" />\n )}\n {error}\n </div>\n\n {/* Success Message */}\n <div\n className={`p-2 border rounded-sm text-xs transition-all duration-300 transform ${\n success\n ? 'opacity-100 max-h-20 border-emerald-200 dark:border-emerald-900/30 bg-emerald-50 dark:bg-emerald-900/10 text-emerald-700 dark:text-emerald-400 translate-y-0'\n : 'opacity-0 max-h-0 overflow-hidden border-transparent translate-y-2'\n }`}\n >\n {success}\n </div>\n\n {/* Submit Button */}\n <div\n className={`transform transition-all duration-500 delay-700 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <SubmitButton\n loading={loading}\n side={side}\n orderType={isMarketOrder(fillMode) ? 'MARKET' : 'LIMIT'}\n disabled={!marketSymbol || loading}\n />\n </div>\n </div>\n </form>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TradeForm.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAYlD,6CAA6C;AAC7C,IAAM,WAAW,GAAG,UAAC,IAAc;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,CAAC,QAAQ;QACpB,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,CAAC,YAAY;QACxB,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,CAAC,sBAAsB;QAClC,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,CAAC,eAAe;QAC3B;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,0CAA0C;AAC1C,IAAM,OAAO,GAAG,UAAC,IAAe;IAC9B,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;AACpD,CAAC,CAAC;AAEF,uDAAuD;AACvD,IAAM,aAAa,GAAG,UAAC,IAAc;IACnC,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,gCAAgC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAA0C;IAA5E,iBAsUC;QAtUmC,YAAY,kBAAA,EAAE,QAAQ,cAAA;IAClD,IAAA,KAAqB,kBAAkB,EAAE,EAAvC,IAAI,UAAA,EAAE,QAAQ,cAAyB,CAAC;IAEhD,aAAa;IACP,IAAA,KAAkB,QAAQ,CAAY,KAAK,CAAC,EAA3C,IAAI,QAAA,EAAE,OAAO,QAA8B,CAAC;IAC7C,IAAA,KAA0B,QAAQ,CAAW,KAAK,CAAC,EAAlD,QAAQ,QAAA,EAAE,WAAW,QAA6B,CAAC;IACpD,IAAA,KAAoB,QAAQ,CAAS,EAAE,CAAC,EAAvC,KAAK,QAAA,EAAE,QAAQ,QAAwB,CAAC;IACzC,IAAA,KAAsB,QAAQ,CAAS,EAAE,CAAC,EAAzC,MAAM,QAAA,EAAE,SAAS,QAAwB,CAAC;IAC3C,IAAA,KAAoB,QAAQ,CAAS,EAAE,CAAC,EAAvC,KAAK,QAAA,EAAE,QAAQ,QAAwB,CAAC;IACzC,IAAA,KAAkC,QAAQ,CAAU,KAAK,CAAC,EAAzD,YAAY,QAAA,EAAE,eAAe,QAA4B,CAAC;IAC3D,IAAA,KAA4B,QAAQ,CAAqB,SAAS,CAAC,EAAlE,SAAS,QAAA,EAAE,YAAY,QAA2C,CAAC;IAE1E,WAAW;IACL,IAAA,KAAwB,QAAQ,CAAU,KAAK,CAAC,EAA/C,OAAO,QAAA,EAAE,UAAU,QAA4B,CAAC;IACjD,IAAA,KAAoB,QAAQ,CAAgB,IAAI,CAAC,EAAhD,KAAK,QAAA,EAAE,QAAQ,QAAiC,CAAC;IAClD,IAAA,KAAwB,QAAQ,CAAgB,IAAI,CAAC,EAApD,OAAO,QAAA,EAAE,UAAU,QAAiC,CAAC;IACtD,IAAA,KAAgC,QAAQ,CAAU,KAAK,CAAC,EAAvD,WAAW,QAAA,EAAE,cAAc,QAA4B,CAAC;IAE/D,cAAc;IACR,IAAA,KAA8B,QAAQ,CAAM,IAAI,CAAC,EAAhD,UAAU,QAAA,EAAE,aAAa,QAAuB,CAAC;IAExD,gDAAgD;IAChD,SAAS,CAAC;QACR,IAAM,KAAK,GAAG,UAAU,CAAC;YACvB,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,4DAA4D;IAC5D,SAAS,CAAC;QACR,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO;QAE7D,IAAM,eAAe,GAAG;;;;;;wBAEN,qBAAM,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,EAAA;;wBAA/C,KAAK,GAAG,SAAuC;wBAC/C,cAAc,GAAG,KAAK,CAAC;wBAC7B,aAAa,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;wBAEtC,4CAA4C;wBAC5C,IAAK,cAAsB,aAAtB,cAAc,uBAAd,cAAc,CAAU,SAAS,EAAE,CAAC;4BACvC,QAAQ,CAAE,cAAsB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACzD,CAAC;;;;wBAED,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAG,CAAC,CAAC;;;;;aAErD,CAAC;QAEF,IAAM,gBAAgB,GAAG;;;;;6BACnB,QAAQ,EAAR,wBAAQ;;;;wBAER,oBAAoB;wBACpB,qBAAM,QAAQ,CAAC,eAAe,EAAE,EAAA;;wBADhC,oBAAoB;wBACpB,SAAgC,CAAC;wBACjC,wCAAwC;wBACxC,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1D,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvC,CAAC;;;;wBAED,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAG,CAAC,CAAC;;;;;aAGxD,CAAC;QAEF,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnC,+CAA+C;IAC/C,SAAS,CAAC;QACR,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YAChD,IAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9B,0BAA0B;IAC1B,IAAM,YAAY,GAAG,UAAO,CAAkB;;;;;;oBAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;oBAEnB,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC/B,QAAQ,CAAC,8BAA8B,CAAC,CAAC;wBACzC,sBAAO;oBACT,CAAC;oBAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACnE,QAAQ,CAAC,4BAA4B,CAAC,CAAC;wBACvC,sBAAO;oBACT,CAAC;oBAED,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;wBACxC,sBAAO;oBACT,CAAC;oBAED,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACf,UAAU,CAAC,IAAI,CAAC,CAAC;;;;oBAIT,MAAM,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,YAAY,EAAzB,CAAyB,CAAC,CAAC;oBAC/D,aAAW,MAAM;wBACrB,CAAC,CAAE,MAAc,CAAC,EAAE,IAAK,MAAc,CAAC,QAAQ,IAAI,CAAC;wBACrD,CAAC,CAAC,CAAC,CAAC;oBAGA,WAAW,GAAG;wBAClB,QAAQ,YAAA;wBACR,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;wBACnB,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;wBAC/B,YAAY,cAAA;wBACZ,gDAAgD;wBAChD,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;wBACtE,kCAAkC;wBAClC,KAAK,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;wBACnD,mEAAmE;wBACnE,SAAS,EACP,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;wBAC/D,wCAAwC;wBACxC,SAAS,EAAE,SAAS;qBACrB,CAAC;oBAEF,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;oBAGxC,qBAAM,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAA;;oBAAhD,OAAO,GAAG,SAAsC;oBAEtD,IAAI,OAAO,EAAE,CAAC;wBACZ,UAAU,CAAC,+CAAwC,OAAO,CAAE,CAAC,CAAC;wBAC9D,aAAa;wBACb,SAAS,CAAC,EAAE,CAAC,CAAC;wBACd,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC5B,QAAQ,CAAC,EAAE,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC3C,CAAC;;;;oBAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAG,CAAC,CAAC;oBAC1C,QAAQ,CAAC,KAAG,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;;;oBAEjD,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAErB,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,oEAAoE,aACjF,cACE,SAAS,EAAE,0HAAmH,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,4BAEzL,GAAG,EACd,YAAY,CAAC,CAAC,CAAC,CACd,eACE,SAAS,EACP,IAAI,KAAK,KAAK;4BACZ,CAAC,CAAC,wCAAwC;4BAC1C,CAAC,CAAC,gCAAgC,YAGrC,YAAY,GACR,CACR,CAAC,CAAC,CAAC,CACF,EAAE,CACH,IACE,EAEJ,CAAC,YAAY,CAAC,CAAC,CAAC,CACf,cACE,SAAS,EAAE,oNAA6M,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,gDAG3R,CACP,CAAC,CAAC,CAAC,CACF,eAAM,QAAQ,EAAE,YAAY,YAC1B,eAAK,SAAS,EAAC,WAAW,aAExB,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAI,GAC1C,EAGN,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,KAAC,gBAAgB,IACf,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,WAAW,GAC7B,GACE,EAGL,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAC3B,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,KAAC,UAAU,IACT,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAG,UAAkB,aAAlB,UAAU,uBAAV,UAAU,CAAU,SAAS,GAC3C,GACE,CACP,EAGD,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,KAAC,WAAW,IACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,UAAU,GACtB,GACE,EAGN,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,KAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,GACvD,GACE,EAGL,SAAS,IAAI,CACZ,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,eAAK,SAAS,EAAC,wEAAwE,aACrF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,MAAM,GAAG,EACnC,2CAAmB,SAAS,IAAQ,IAChC,GACF,CACP,EAGD,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,eAAe,CAAC,CAAC,YAAY,CAAC,EAA9B,CAA8B,EAC7C,SAAS,EAAE,4GACT,YAAY;oCACV,CAAC,CAAC,IAAI,KAAK,KAAK;wCACd,CAAC,CAAC,kIAAkI;wCACpI,CAAC,CAAC,0GAA0G;oCAC9G,CAAC,CAAC,2MAA2M,CAC/M,aAEF,eAAK,SAAS,EAAC,mBAAmB,aAChC,cACE,SAAS,EAAE,8CACT,YAAY;oDACV,CAAC,CAAC,IAAI,KAAK,KAAK;wDACd,CAAC,CAAC,wCAAwC;wDAC1C,CAAC,CAAC,gCAAgC;oDACpC,CAAC,CAAC,8CAA8C,CAClD,YAED,YAAY,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,GACrD,EACN,eAAM,SAAS,EAAC,SAAS,4BAAmB,IACxC,EACN,cACE,SAAS,EAAE,4FACT,YAAY;4CACV,CAAC,CAAC,IAAI,KAAK,KAAK;gDACd,CAAC,CAAC,+CAA+C;gDACjD,CAAC,CAAC,uCAAuC;4CAC3C,CAAC,CAAC,0CAA0C,CAC9C,YAED,YAAY,IAAI,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GAChC,IACC,GACL,EAGN,eACE,SAAS,EAAE,8EACT,KAAK;gCACH,CAAC,CAAC,wJAAwJ;gCAC1J,CAAC,CAAC,oEAAoE,CACxE,aAED,KAAK,IAAI,CACR,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,oBAAoB,GAAG,CACzD,EACA,KAAK,IACF,EAGN,cACE,SAAS,EAAE,8EACT,OAAO;gCACL,CAAC,CAAC,8JAA8J;gCAChK,CAAC,CAAC,oEAAoE,CACxE,YAED,OAAO,GACJ,EAGN,cACE,SAAS,EAAE,0DAAmD,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAE,YAErI,KAAC,YAAY,IACX,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EACvD,QAAQ,EAAE,CAAC,YAAY,IAAI,OAAO,GAClC,GACE,IACF,GACD,CACR,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["/**\n * @deprecated This component is deprecated due to technical issues.\n * Please refer to DEPRECATED.md for more information.\n */\n\nimport { useState, useEffect } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport BuySellTabs from './BuySellTabs';\nimport FillModeSelector from './FillModeSelector';\nimport PriceInput from './PriceInput';\nimport AmountInput from './AmountInput';\nimport TotalCalculator from './TotalCalculator';\nimport SubmitButton from './SubmitButton';\nimport { AlertCircle, Check, Lock, Unlock, Info } from 'lucide-react';\nimport { logger } from '../../../../utils/logger';\n\ninterface TradeFormProps {\n marketSymbol: string | null;\n marketId?: number;\n}\n\n// Define order types\nexport type OrderSide = 'BUY' | 'SELL';\nexport type OrderType = 'LIMIT' | 'MARKET'; // Keep for backward compatibility\nexport type FillMode = 'GTC' | 'POST_ONLY' | 'IOC' | 'FOK';\n\n// Map our FillMode to the Nord FillMode enum\nconst mapFillMode = (mode: FillMode): number => {\n switch (mode) {\n case 'GTC':\n return 0; // LIMIT\n case 'POST_ONLY':\n return 1; // POST_ONLY\n case 'IOC':\n return 2; // IMMEDIATE_OR_CANCEL\n case 'FOK':\n return 3; // FILL_OR_KILL\n default:\n return 0;\n }\n};\n\n// Map our OrderSide to the Nord Side enum\nconst mapSide = (side: OrderSide): number => {\n return side === 'BUY' ? 1 : 0; // BID = 1, ASK = 0\n};\n\n// Helper to determine if a fill mode is a market order\nconst isMarketOrder = (mode: FillMode): boolean => {\n return mode === 'IOC'; // IOC is used for market orders\n};\n\nexport default function TradeForm({ marketSymbol, marketId }: TradeFormProps) {\n const { nord, nordUser } = useN1WalletContext();\n\n // Form state\n const [side, setSide] = useState<OrderSide>('BUY');\n const [fillMode, setFillMode] = useState<FillMode>('GTC');\n const [price, setPrice] = useState<string>('');\n const [amount, setAmount] = useState<string>('');\n const [total, setTotal] = useState<string>('');\n const [isReduceOnly, setIsReduceOnly] = useState<boolean>(false);\n const [accountId, setAccountId] = useState<number | undefined>(undefined);\n\n // UI state\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [success, setSuccess] = useState<string | null>(null);\n const [formVisible, setFormVisible] = useState<boolean>(false);\n\n // Market data\n const [marketInfo, setMarketInfo] = useState<any>(null);\n\n // Show form with animation after initial render\n useEffect(() => {\n const timer = setTimeout(() => {\n setFormVisible(true);\n }, 100);\n return () => clearTimeout(timer);\n }, []);\n\n // Fetch market info and user account ID when market changes\n useEffect(() => {\n if (!marketSymbol || !nord || marketId === undefined) return;\n\n const fetchMarketInfo = async () => {\n try {\n const stats = await nord.getMarketStats({ marketId });\n const selectedMarket = stats;\n setMarketInfo(selectedMarket || null);\n\n // Set default price to current market price\n if ((selectedMarket as any)?.lastPrice) {\n setPrice((selectedMarket as any).lastPrice.toString());\n }\n } catch (err) {\n console.error('Error fetching market info:', err);\n }\n };\n\n const fetchUserAccount = async () => {\n if (nordUser) {\n try {\n // Update account ID\n await nordUser.updateAccountId();\n // Set the first account ID if available\n if (nordUser.accountIds && nordUser.accountIds.length > 0) {\n setAccountId(nordUser.accountIds[0]);\n }\n } catch (err) {\n console.error('Error fetching user account:', err);\n }\n }\n };\n\n fetchMarketInfo();\n fetchUserAccount();\n }, [marketSymbol, nord, nordUser]);\n\n // Calculate total when price or amount changes\n useEffect(() => {\n if (!isMarketOrder(fillMode) && price && amount) {\n const calculatedTotal = parseFloat(price) * parseFloat(amount);\n setTotal(calculatedTotal.toFixed(8));\n } else if (isMarketOrder(fillMode)) {\n setTotal('Market');\n } else {\n setTotal('');\n }\n }, [price, amount, fillMode]);\n\n // Handle order submission\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n if (!marketSymbol || !nordUser) {\n setError('User or market not available');\n return;\n }\n\n if (!isMarketOrder(fillMode) && (!price || parseFloat(price) <= 0)) {\n setError('Please enter a valid price');\n return;\n }\n\n if (!amount || parseFloat(amount) <= 0) {\n setError('Please enter a valid amount');\n return;\n }\n\n setLoading(true);\n setError(null);\n setSuccess(null);\n\n try {\n // Find market ID from symbol\n const market = nord?.markets?.find((m) => m.symbol === marketSymbol);\n const marketId = market\n ? (market as any).id || (market as any).marketId || 0\n : 0;\n\n // Prepare order parameters\n const orderParams = {\n marketId,\n side: mapSide(side),\n fillMode: mapFillMode(fillMode),\n isReduceOnly,\n // For limit orders or SELL orders, we need size\n size: !isMarketOrder(fillMode) || side === 'SELL' ? amount : undefined,\n // For limit orders, we need price\n price: !isMarketOrder(fillMode) ? price : undefined,\n // For market BUY orders, we need quoteSize (total amount to spend)\n quoteSize:\n isMarketOrder(fillMode) && side === 'BUY' ? total : undefined,\n // Use the first account ID if available\n accountId: accountId,\n };\n\n logger.debug('Placing order with params:', orderParams);\n\n // Place order\n const orderId = await nordUser.placeOrder(orderParams);\n\n if (orderId) {\n setSuccess(`Order placed successfully! Order ID: ${orderId}`);\n // Reset form\n setAmount('');\n if (isMarketOrder(fillMode)) {\n setPrice('');\n }\n } else {\n throw new Error('Failed to place order');\n }\n } catch (err: any) {\n logger.error('Error placing order:', err);\n setError(err.message || 'Failed to place order');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div className=\"p-4 bg-white dark:bg-n1-ww-dark-950 transition-colors duration-300\">\n <h2\n className={`text-base font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-3 transform transition-all duration-500 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n Place Order{' '}\n {marketSymbol ? (\n <span\n className={\n side === 'BUY'\n ? 'text-emerald-600 dark:text-emerald-500'\n : 'text-red-700 dark:text-red-600'\n }\n >\n {marketSymbol}\n </span>\n ) : (\n ''\n )}\n </h2>\n\n {!marketSymbol ? (\n <div\n className={`p-3 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-sm text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-xs bg-n1-ww-gray-50 dark:bg-n1-ww-dark-950 transform transition-all duration-500 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n Select a market to place orders\n </div>\n ) : (\n <form onSubmit={handleSubmit}>\n <div className=\"space-y-3\">\n {/* Buy/Sell Tabs */}\n <div\n className={`transform transition-all duration-500 delay-100 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <BuySellTabs side={side} onChange={setSide} />\n </div>\n\n {/* Order Type (Fill Mode) */}\n <div\n className={`transform transition-all duration-500 delay-200 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <FillModeSelector\n fillMode={fillMode}\n onFillModeChange={setFillMode}\n />\n </div>\n\n {/* Price Input (hidden for market orders) */}\n {!isMarketOrder(fillMode) && (\n <div\n className={`transform transition-all duration-500 delay-300 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <PriceInput\n price={price}\n onChange={setPrice}\n marketPrice={(marketInfo as any)?.lastPrice}\n />\n </div>\n )}\n\n {/* Amount Input */}\n <div\n className={`transform transition-all duration-500 delay-400 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <AmountInput\n amount={amount}\n onChange={setAmount}\n marketInfo={marketInfo}\n />\n </div>\n\n {/* Total Calculator */}\n <div\n className={`transform transition-all duration-500 delay-500 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <TotalCalculator\n total={total}\n orderType={isMarketOrder(fillMode) ? 'MARKET' : 'LIMIT'}\n />\n </div>\n\n {/* Account ID Info */}\n {accountId && (\n <div\n className={`transform transition-all duration-500 delay-550 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <div className=\"flex items-center text-xs text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n <Info size={12} className=\"mr-1\" />\n <span>Account ID: {accountId}</span>\n </div>\n </div>\n )}\n\n {/* Reduce Only Button */}\n <div\n className={`transform transition-all duration-500 delay-600 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <button\n type=\"button\"\n onClick={() => setIsReduceOnly(!isReduceOnly)}\n className={`w-full flex items-center justify-between px-3 py-2 rounded-sm text-sm transition-all duration-300 ${\n isReduceOnly\n ? side === 'BUY'\n ? 'bg-emerald-50 dark:bg-emerald-900/10 text-emerald-700 dark:text-emerald-400 border border-emerald-200 dark:border-emerald-800/30'\n : 'bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 border border-red-200 dark:border-red-800/30'\n : 'bg-n1-ww-gray-50 dark:bg-n1-ww-gray-900 text-n1-ww-gray-700 dark:text-n1-ww-gray-300 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-300 dark:hover:border-n1-ww-gray-600'\n }`}\n >\n <div className=\"flex items-center\">\n <div\n className={`mr-2 transition-colors duration-300 ${\n isReduceOnly\n ? side === 'BUY'\n ? 'text-emerald-600 dark:text-emerald-500'\n : 'text-red-600 dark:text-red-500'\n : 'text-n1-ww-gray-500 dark:text-n1-ww-gray-400'\n }`}\n >\n {isReduceOnly ? <Lock size={14} /> : <Unlock size={14} />}\n </div>\n <span className=\"text-xs\">Reduce Only</span>\n </div>\n <div\n className={`flex items-center justify-center w-4 h-4 rounded-full transition-all duration-300 ${\n isReduceOnly\n ? side === 'BUY'\n ? 'bg-emerald-600 dark:bg-emerald-500 text-white'\n : 'bg-red-600 dark:bg-red-500 text-white'\n : 'bg-n1-ww-gray-200 dark:bg-n1-ww-gray-700'\n }`}\n >\n {isReduceOnly && <Check size={10} />}\n </div>\n </button>\n </div>\n\n {/* Error Message */}\n <div\n className={`p-2 border rounded-sm text-xs transition-all duration-300 transform ${\n error\n ? 'opacity-100 max-h-20 border-red-200 dark:border-red-900/30 bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 flex items-center translate-y-0'\n : 'opacity-0 max-h-0 overflow-hidden border-transparent translate-y-2'\n }`}\n >\n {error && (\n <AlertCircle size={14} className=\"mr-2 flex-shrink-0\" />\n )}\n {error}\n </div>\n\n {/* Success Message */}\n <div\n className={`p-2 border rounded-sm text-xs transition-all duration-300 transform ${\n success\n ? 'opacity-100 max-h-20 border-emerald-200 dark:border-emerald-900/30 bg-emerald-50 dark:bg-emerald-900/10 text-emerald-700 dark:text-emerald-400 translate-y-0'\n : 'opacity-0 max-h-0 overflow-hidden border-transparent translate-y-2'\n }`}\n >\n {success}\n </div>\n\n {/* Submit Button */}\n <div\n className={`transform transition-all duration-500 delay-700 ${formVisible ? 'translate-y-0 opacity-100' : 'translate-y-4 opacity-0'}`}\n >\n <SubmitButton\n loading={loading}\n side={side}\n orderType={isMarketOrder(fillMode) ? 'MARKET' : 'LIMIT'}\n disabled={!marketSymbol || loading}\n />\n </div>\n </div>\n </form>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -35,6 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated This component is deprecated due to technical issues.
|
|
40
|
+
* Please refer to DEPRECATED.md for more information.
|
|
41
|
+
*/
|
|
38
42
|
import { useState, useEffect } from 'react';
|
|
39
43
|
import { useN1WalletContext } from '../../../../Provider/hooks';
|
|
40
44
|
import { RefreshCw } from 'lucide-react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserBalances.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"UserBalances.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.tsx"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * @deprecated This component is deprecated due to technical issues.\n * Please refer to DEPRECATED.md for more information.\n */\n\nimport { useState, useEffect } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport { RefreshCw } from 'lucide-react';\n\ninterface Balance {\n symbol: string;\n balance: number;\n accountId: number;\n}\n\nexport default function UserBalances() {\n const { nord, nordUser } = useN1WalletContext();\n const [balances, setBalances] = useState<Balance[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Fetch user balances\n useEffect(() => {\n if (!nordUser || !nord) return;\n\n const fetchBalances = async () => {\n setLoading(true);\n setError(null);\n\n try {\n // Refresh user info to get latest balances\n await nordUser.fetchInfo();\n\n // Extract real balances from nordUser\n const realBalances: Balance[] = [];\n\n // Loop through all accounts\n if (nordUser.accountIds) {\n for (const accountId of nordUser.accountIds) {\n // Check if this account has balances\n const accountBalances = nordUser.balances[accountId];\n\n if (accountBalances && accountBalances.length > 0) {\n // Add each balance to our list\n for (const balance of accountBalances) {\n // Only include non-zero balances\n if (balance.balance > 0) {\n realBalances.push({\n symbol: balance.symbol,\n balance: balance.balance,\n accountId: accountId,\n });\n }\n }\n }\n }\n }\n\n setBalances(realBalances);\n } catch (err) {\n console.error('Error fetching balances:', err);\n setError('Failed to load balances');\n } finally {\n setLoading(false);\n }\n };\n\n fetchBalances();\n\n // Set up polling for balance updates\n const intervalId = setInterval(fetchBalances, 10000); // Update every 10 seconds\n\n return () => clearInterval(intervalId);\n }, [nordUser, nord]);\n\n return (\n <div className=\"bg-white dark:bg-n1-ww-gray-950 overflow-hidden\">\n <div className=\"p-4\">\n <h2 className=\"text-lg font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-4\">\n Balances\n </h2>\n\n {loading && balances.length === 0 ? (\n <div className=\"flex items-center justify-center h-32\">\n <RefreshCw size={20} className=\"text-n1-ww-gray-400 n1-ww-animate-spin\" />\n </div>\n ) : error ? (\n <div className=\"p-3 bg-red-50 dark:bg-red-900/20 rounded-lg text-red-600 dark:text-red-400 text-sm\">\n {error}\n </div>\n ) : balances.length === 0 ? (\n <div className=\"p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 rounded-lg text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-sm text-center\">\n No balances found\n </div>\n ) : (\n <div className=\"space-y-3\">\n {balances.map((balance, index) => (\n <div\n key={index}\n className=\"p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 rounded-lg\"\n >\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center\">\n <span className=\"font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100\">\n {balance.symbol}\n </span>\n </div>\n <div className=\"font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono\">\n {balance.balance.toFixed(6)}\n </div>\n </div>\n <div className=\"text-xs text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n Account ID: {balance.accountId}\n </div>\n </div>\n ))}\n\n {/* Loading indicator for refreshing */}\n {loading && balances.length > 0 && (\n <div className=\"flex justify-center mt-2\">\n <RefreshCw size={16} className=\"text-n1-ww-gray-400 n1-ww-animate-spin\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function UserPositions(): JSX.Element;
|