/** * 매매 시그널 알림 상세 본문 — 종목·시간·매수/매도·금액 등 */ import React from 'react'; import { buildSignalDetailRows, formatSignalPrice, getSignalHeadline, getSignalTypeKo, type TradeSignalDisplaySource, } from '../utils/tradeSignalDisplay'; import { useTradeAlertTimeFormat } from '../utils/tradeAlertTimeFormat'; interface Props { item: TradeSignalDisplaySource; /** compact: 스택 팝업, full: 목록/모달 요약 */ variant?: 'compact' | 'full'; showHeadline?: boolean; /** list: 라벨·값 세로 목록, matrix: n×n 정보 카드 그리드 */ layout?: 'list' | 'matrix'; } export const TradeSignalDetailBody: React.FC = ({ item, variant = 'compact', showHeadline = true, layout = 'list', }) => { useTradeAlertTimeFormat(); const isBuy = item.signalType === 'BUY'; const rows = buildSignalDetailRows(item); return (
{showHeadline && (
{isBuy ? '↑' : '↓'} {getSignalTypeKo(item.signalType)} {formatSignalPrice(item.price)}
)} {layout !== 'matrix' && (

{getSignalHeadline(item)}

)} {layout === 'matrix' ? (
{rows.map(row => (
{row.label} {row.value}
))}
) : (
{rows.map(row => (
{row.label}
{row.value}
))}
)}
); }; export default TradeSignalDetailBody;