import React from 'react'; import type { StrategyDto } from '../../lib/shared'; import type { VirtualIndicatorSnapshot } from '@frontend/hooks/useVirtualIndicatorSnapshots'; import type { VirtualLiveStatus } from '@frontend/hooks/useVirtualTargetLiveStatus'; import type { VirtualTargetItem } from '@frontend/utils/virtualTradingStorage'; import { resolveVirtualTargetStrategyId } from '@frontend/utils/virtualTargetStrategy'; import type { TradeSide } from '../../contexts/NavigationContext'; interface Props { target: VirtualTargetItem; globalStrategyId: number | null; strategies: StrategyDto[]; snapshot?: VirtualIndicatorSnapshot; liveStatus?: VirtualLiveStatus; onDetail: () => void; onTrade: (side: TradeSide) => void; onTogglePin: () => void; onRemove: () => void; } export default function VirtualTargetListRow({ target, globalStrategyId, strategies, snapshot, liveStatus, onDetail, onTrade, onTogglePin, onRemove, }: Props) { const strategyId = resolveVirtualTargetStrategyId(target, globalStrategyId); const strategyName = strategies.find(s => s.id === strategyId)?.name ?? '전략 없음'; const matchPct = snapshot?.matchRate ?? 0; return (
{target.koreanName ?? target.market}
{target.market} · {strategyName} · {matchPct.toFixed(0)}%
{!target.pinned && ( )}
); }