import React, { useState, useMemo, useEffect } from 'react'; import { Search, ArrowRightLeft, ShieldCheck, Wallet, History, TrendingUp, Info } from 'lucide-react'; import { StockItem, OrderType, MarketType, TradeOrder } from '../types'; interface TradingProps { marketMode: MarketType; stocks: StockItem[]; onOrder: (order: Omit) => void; } const Trading: React.FC = ({ marketMode, stocks, onOrder }) => { const [search, setSearch] = useState(''); const [selectedStock, setSelectedStock] = useState(null); const [orderAmount, setOrderAmount] = useState(1); const [orderType, setOrderType] = useState(OrderType.BUY); // 모드 변경 시 수량 초기화 useEffect(() => { setOrderAmount(1); }, [orderType]); // 시장 변경 시 선택 해제 useEffect(() => { setSelectedStock(null); }, [marketMode]); const filteredStocks = useMemo(() => { return stocks.filter(s => s.market === marketMode && !s.isHidden && (s.name.includes(search) || s.code.toLowerCase().includes(search.toLowerCase())) ); }, [stocks, search, marketMode]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!selectedStock) return; const confirmMsg = `${selectedStock.name} 종목을 ${orderAmount}주 ${orderType === OrderType.BUY ? '매수' : '매도'}하시겠습니까?`; if(window.confirm(confirmMsg)) { onOrder({ stockCode: selectedStock.code, stockName: selectedStock.name, type: orderType, price: selectedStock.price, quantity: orderAmount }); } }; const isBuyMode = orderType === OrderType.BUY; return (
{/* Left: Inventory List */}

{marketMode === MarketType.DOMESTIC ? '국내' : '해외'} 자산 인벤토리

setSearch(e.target.value)} />
{filteredStocks.map(stock => (
setSelectedStock(stock)} className={`p-6 rounded-[2.5rem] border-2 transition-all cursor-pointer group flex items-center justify-between ${selectedStock?.code === stock.code ? 'border-blue-500 bg-blue-50/20 shadow-lg' : 'border-transparent bg-slate-50/60 hover:bg-white hover:border-slate-200'}`} >
{stock.name[0]}