+
{selectedSymbol}/USDC
+
+ ${getCurrentSymbolData().price.toLocaleString()}
+
+
= 0 ? 'text-green-400' : 'text-red-400'}`}>
+ {getCurrentSymbolData().change >= 0 ? '+' : ''}{getCurrentSymbolData().change}%
+
+
+ {/* Leverage Selector */}
+
+
+
Leverage
+
+ {leverage}x
+
+
+
+ {/* Leverage Slider */}
+
+
setLeverage(parseInt(e.target.value))}
+ className="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer slider"
+ style={{
+ background: `linear-gradient(to right, #eab308 0%, #eab308 ${((leverage - 1) / 99) * 100}%, #374151 ${((leverage - 1) / 99) * 100}%, #374151 100%)`
+ }}
+ />
+
+ {/* Leverage Marks */}
+
+ {[1, 2, 5, 10, 20, 50, 100].map((mark) => (
+ setLeverage(mark)}
+ className={`text-xs transition-all ${
+ leverage === mark
+ ? 'text-yellow-400 font-medium'
+ : 'text-gray-500 hover:text-gray-300'
+ }`}
+ >
+ {mark}x
+
+ ))}
+
+
+
+ {/* Leverage Warning */}
+ {leverage > 10 && (
+
+
+
+
+
High leverage increases liquidation risk
+
+ )}
+
+
+ {/* Quick Trade Buttons */}
+
+ handleTrade('BUY')}
+ disabled={!payingAmount || isLoading}
+ className="w-full bg-green-600 hover:bg-green-700 disabled:bg-gray-600 disabled:cursor-not-allowed text-white py-3 px-4 rounded-lg font-medium transition-all"
+ >
+ {isLoading ? 'Processing...' : `Long/Buy ${leverage > 1 ? `(${leverage}x)` : ''}`}
+
+ handleTrade('SELL')}
+ disabled={!payingAmount || isLoading}
+ className="w-full bg-red-600 hover:bg-red-700 disabled:bg-gray-600 disabled:cursor-not-allowed text-white py-3 px-4 rounded-lg font-medium transition-all"
+ >
+ {isLoading ? 'Processing...' : `Short/Sell ${leverage > 1 ? `(${leverage}x)` : ''}`}
+
+
+
+ {/* Trade Form */}
+
+ {/* You're Paying Section */}
+
+
You're paying
+
+
+
setPayingAmount(e.target.value)}
+ placeholder="0.00"
+ step="0.01"
+ min="0"
+ className="bg-transparent text-white text-lg font-medium focus:outline-none flex-1 mr-3"
+ />
+
+ {/* Paying Token Selector */}
+
+
setIsPayingTokenDropdownOpen(!isPayingTokenDropdownOpen)}
+ className="flex items-center space-x-2 bg-gray-600 hover:bg-gray-500 rounded-lg px-3 py-2 transition-all"
+ >
+ {getCurrentPayingTokenData().icon}
+ {payingToken}
+
+
+
+
+
+ {/* Paying Token Dropdown */}
+ {isPayingTokenDropdownOpen && (
+
+
+ {payingTokens.map(({ symbol, name, balance, icon }) => (
+
{
+ setPayingToken(symbol)
+ setIsPayingTokenDropdownOpen(false)
+ }} className={`w-full flex items-center justify-between px-3 py-2 text-left rounded-lg transition-all ${
+ payingToken === symbol
+ ? 'bg-blue-600/20 border border-blue-500/30'
+ : 'hover:bg-gray-700'
+ }`}
+ >
+
+
+ {balance.toFixed(balance < 1 ? 6 : 2)}
+
+
+ ))}
+
+
+ )}
+
+
+
+ {/* Balance and MAX button */}
+
+ Balance: {getCurrentPayingTokenData().balance.toFixed(getCurrentPayingTokenData().balance < 1 ? 6 : 2)} {payingToken}
+ setPayingAmount(getCurrentPayingTokenData().balance.toString())}
+ disabled={getCurrentPayingTokenData().balance === 0}
+ className="text-blue-400 hover:text-blue-300 disabled:text-gray-500 disabled:cursor-not-allowed"
+ >
+ MAX
+
+
+ {getCurrentPayingTokenData().balance === 0 && (
+
+ โ ๏ธ No {payingToken} balance available
+
+ )}
+ {payingAmount && parseFloat(payingAmount) > getCurrentPayingTokenData().balance && (
+
+ โ ๏ธ Insufficient balance ({getCurrentPayingTokenData().balance.toFixed(getCurrentPayingTokenData().balance < 1 ? 6 : 2)} {payingToken} available)
+
+ )}
+
+ {leverage > 1 && payingAmount && (
+
+ Position value: ${(parseFloat(payingAmount) * leverage).toLocaleString()} ({leverage}x leverage)
+
+ )}
+
+
+ {/* You're Receiving Section */}
+
+
You're receiving
+
+
+
+ {receivingAmount || '0.00'}
+
+
+ {getCurrentSymbolData().icon}
+ {selectedSymbol}
+
+
+
+ Rate: 1 {payingToken} = {payingToken === 'USDC' ? (1 / getCurrentSymbolData().price).toFixed(8) : '1.00'} {selectedSymbol}
+
+
+
+
+
+
+ {/* Risk Information */}
+ {payingAmount && leverage > 1 && (
+
+
โ ๏ธ Leveraged Position Risk
+
+ Position value: ${(parseFloat(payingAmount) * leverage).toLocaleString()} ({leverage}x leverage)
+
+
+ Liquidation risk: High with {leverage}x leverage
+
+
+ )}
+
+