"use client"; // 종목 페이지 상단 가격 헤더. // 표시: 종목명 / (코드·시장) / 현재가 / 전일대비 + 우측에 sparkline. // 한국 거래소 관행대로 상승=빨강, 하락=파랑. import { Sparkline } from "./Sparkline"; type Props = { name: string; code: string; market: string; current: number | null; prev: number | null; asOf?: string | null; // 헤더 우측 sparkline 용 종가 시계열 (오래된 → 최신 순). 비어 있으면 미표시. series?: number[]; // social-proof — "오늘 N명이 봤어요" 배지. null/0 이면 숨김. viewsToday?: number | null; // 오늘(또는 마지막 봉) 흐름 요약. page.tsx 에서 ohlcv 끝부분으로 계산해 전달. // null 이면 strip 자체를 숨김 (데이터 없음 + 레이아웃 jitter 방지). flow?: { open: number; high: number; low: number; volume: number } | null; }; // 거래량 한국식 단위 (억/만) — StockChart 의 fmtKVolume 과 같은 규칙. 둘 다 작아서 // 별도 모듈로 빼지 않고 사용처에 인라인 유지. function fmtVolume(n: number): string { if (!Number.isFinite(n) || n <= 0) return "-"; if (n >= 1e8) return `${(n / 1e8).toFixed(1)}억`; if (n >= 1e4) return `${(n / 1e4).toFixed(1)}만`; return n.toLocaleString(); } export function PriceHero({ name, code, market, current, prev, asOf, series, viewsToday, flow, }: Props) { const change = current != null && prev != null ? current - prev : null; const pct = change != null && prev ? (change / prev) * 100 : null; const tone = change == null || change === 0 ? "text-zinc-400" : change > 0 ? "text-rose-400" : "text-sky-400"; const arrow = change == null || change === 0 ? "—" : change > 0 ? "▲" : "▼"; return (