"use client"; // 거래주체 패널 — chart.trading_value (외국인/기관/개인 순매수) 를 최근 5일 표로. // 별도 백엔드 호출 없음. ChartPayload 에 이미 들어있는 시리즈를 재사용. // 단위: 백엔드는 원(KRW) 단위. UI 는 억원(억원=1e8)으로 환산. // 색: KR 관행 — 매수 우위(+) 빨강, 매도 우위(-) 파랑. import type { TradingValuePoint } from "../lib/api"; export function TradingValuePanel({ data, }: { data: TradingValuePoint[]; }) { if (!data || data.length === 0) { return (
거래주체 데이터 없음
); } // 최근 5일만 (입력은 오래된→최신 순), 표시는 최신이 위. const recent = data.slice(-5).reverse(); return (
거래주체 순매수
최근 {recent.length}일 · 단위: 억원
{recent.map((row) => ( ))}
일자 외국인 기관 개인
{shortDate(row.date)}
); } function NetCell({ value }: { value: number | null }) { if (value == null) { return —; } const eok = value / 1e8; const tone = eok === 0 ? "text-zinc-400" : eok > 0 ? "text-rose-400" : "text-sky-400"; const sign = eok > 0 ? "+" : ""; return ( {sign} {eok.toLocaleString(undefined, { maximumFractionDigits: 0 })} ); } function shortDate(iso: string): string { // 'YYYY-MM-DD' → 'MM-DD' const m = /^\d{4}-(\d{2})-(\d{2})/.exec(iso); return m ? `${m[1]}-${m[2]}` : iso; }