goldenChat base source add

This commit is contained in:
aidev
2026-05-23 15:11:48 +09:00
commit a4ea7762b5
2081 changed files with 1155760 additions and 0 deletions
@@ -0,0 +1,60 @@
/**
* ChartHoverToolbar
* 차트 영역에 마우스 오버 시 하단 중앙에 표시되는 플로팅 툴바.
* - 마우스가 차트 영역을 벗어나면 사라진다.
* - 버튼: 줌아웃(−), 줌인(+), 전체보기(⌐┘), 왼쪽(‹), 오른쪽(›)
*/
import React from 'react';
interface ChartHoverToolbarProps {
onZoomOut: () => void;
onZoomIn: () => void;
onFit: () => void;
onScrollLeft: () => void;
onScrollRight: () => void;
/** 멀티차트 모드에서 이 슬롯을 단일 전체화면으로 확장. 없으면 기본 fitContent() 사용 */
onFullView?: () => void;
}
const ChartHoverToolbar: React.FC<ChartHoverToolbarProps> = ({
onZoomOut, onZoomIn, onFit, onScrollLeft, onScrollRight, onFullView,
}) => (
<div className="chart-hover-toolbar" onMouseDown={e => e.stopPropagation()}>
<button className="cht-btn" onClick={onZoomOut} title="축소 ()">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round">
<line x1="2" y1="7" x2="12" y2="7"/>
</svg>
</button>
<button className="cht-btn" onClick={onZoomIn} title="확대 (+)">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round">
<line x1="7" y1="2" x2="7" y2="12"/>
<line x1="2" y1="7" x2="12" y2="7"/>
</svg>
</button>
{/* 멀티차트: 단일 전체화면 전환 / 단일차트: 전체 데이터 핏 */}
<button className="cht-btn" onClick={onFullView ?? onFit} title={onFullView ? '단일 차트로 전환' : '전체 보기'}>
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round">
<polyline points="5,1 1,1 1,5"/>
<polyline points="9,13 13,13 13,9"/>
<line x1="1" y1="1" x2="6" y2="6"/>
<line x1="13" y1="13" x2="8" y2="8"/>
</svg>
</button>
<button className="cht-btn" onClick={onScrollLeft} title="왼쪽으로 이동 (과거)">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<polyline points="9,2 4,7 9,12"/>
</svg>
</button>
<button className="cht-btn" onClick={onScrollRight} title="오른쪽으로 이동 (최근)">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<polyline points="5,2 10,7 5,12"/>
</svg>
</button>
</div>
);
export default ChartHoverToolbar;