From 94e96b9a9b913548da5be1e5a7af7f34c25e73e5 Mon Sep 17 00:00:00 2001 From: Macbook Date: Tue, 26 May 2026 22:45:54 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EB=B2=A8=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/App.css | 38 ++- frontend/src/components/TradeOrderPanel.tsx | 2 + frontend/src/components/TradingChart.tsx | 10 +- .../trendSearch/TrendSearchCardChart.tsx | 34 ++- .../trendSearch/TrendSearchResultCard.tsx | 4 +- .../components/virtual/VirtualTargetCard.tsx | 5 +- frontend/src/styles/trendSearchDashboard.css | 43 ++++ .../src/styles/virtualTradingDashboard.css | 224 ++++++++++++++++-- frontend/src/utils/ChartManager.ts | 71 ++++++ 9 files changed, 388 insertions(+), 43 deletions(-) diff --git a/frontend/src/App.css b/frontend/src/App.css index a4a18af..11b486a 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -9295,8 +9295,7 @@ html.theme-blue { .rsp-trade-stack .rsp-trade-card-body { flex: 1; min-height: 0; - overflow-y: auto; - overflow-x: hidden; + overflow: hidden; display: flex; flex-direction: column; container-type: size; @@ -9332,14 +9331,25 @@ html.theme-blue { color: var(--down); } .rsp-trade-card-body .top-panel { - flex: 1; + flex: 1 1 auto; + min-height: 0; + height: 100%; + display: flex; + flex-direction: column; + justify-content: flex-start; + gap: 0; + background: transparent; + padding: 6px 10px 6px; +} +.rsp-trade-card-body .top-panel-fields { + flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; - justify-content: space-between; - gap: 6px; - background: transparent; - padding: 6px 10px 6px; + justify-content: space-evenly; + gap: clamp(4px, 1.2cqi, 10px); + overflow-y: auto; + overflow-x: hidden; } .rsp-trade-card-body .top-field { margin-bottom: 0; @@ -9382,7 +9392,9 @@ html.theme-blue { } .rsp-trade-card-body .top-actions { flex-shrink: 0; - margin-top: auto; + margin-top: clamp(6px, 1.5cqi, 12px); + padding-top: clamp(4px, 1cqi, 8px); + border-top: 1px solid color-mix(in srgb, var(--border) 65%, transparent); } .rsp-trade-card-body .top-reset, .rsp-trade-card-body .top-submit { @@ -9390,7 +9402,15 @@ html.theme-blue { font-size: 13px; } -/* 가격·수량: 기본 세로 배치, 공간 부족 시 한 줄 */ +.rsp-trade-card-body .top-price-qty-block { + flex: 1 1 auto; + min-height: 0; + display: flex; + flex-direction: column; + justify-content: space-evenly; + gap: clamp(4px, 1cqi, 8px); +} +/* 가격·수량: 기본 세로 배치 */ .top-price-qty-block { display: flex; flex-direction: column; diff --git a/frontend/src/components/TradeOrderPanel.tsx b/frontend/src/components/TradeOrderPanel.tsx index b02d512..6d8968d 100644 --- a/frontend/src/components/TradeOrderPanel.tsx +++ b/frontend/src/components/TradeOrderPanel.tsx @@ -247,6 +247,7 @@ const TradeOrderPanel: React.FC = ({ return (
+
{paperTradingEnabled && !paperAutoTradeEnabled && showSymbolField && (

자동매매 OFF · 수동 주문만 모의 계좌에 체결됩니다.

)} @@ -399,6 +400,7 @@ const TradeOrderPanel: React.FC = ({ 수수료 {feeRate}%
+