import React from 'react'; import type { StrategyTemplateDef } from '../../utils/strategyPresets'; import type { UserStrategyTemplate } from '../../utils/strategyTemplateStorage'; export type TemplatePaletteRow = { key: string; source: 'user' | 'builtin'; label: string; description?: string; signal: 'buy' | 'sell'; user?: UserStrategyTemplate; builtinId?: string; builtin?: StrategyTemplateDef; }; interface Props { rows: TemplatePaletteRow[]; searchQuery: string; onSearchChange: (query: string) => void; selectedKey: string | null; onSelectKey: (key: string | null) => void; onApply: (row: TemplatePaletteRow) => void; onAdd: () => void; onEdit: () => void; onDelete: () => void; } export default function TemplatePaletteTab({ rows, searchQuery, onSearchChange, selectedKey, onSelectKey, onApply, onAdd, onEdit, onDelete, }: Props) { return (
템플릿
onSearchChange(e.target.value)} />
{rows.length === 0 ? (
검색 결과가 없습니다
) : ( rows.map(row => (
onSelectKey(row.key)} onDoubleClick={() => onApply(row)} role="button" tabIndex={0} onKeyDown={e => { if (e.key === 'Enter') { e.preventDefault(); onApply(row); } }} >
{row.source === 'user' && 내 템플릿} {row.label} {row.description && ( {row.description} )} {row.signal === 'buy' ? '매수' : '매도'}
)) )}
); }