import { useEffect, useMemo, useState } from 'react';
import ChartToolMenu, { type ToolMenuSection } from './ChartToolMenu';
import {
IconBrush,
IconCrosshair,
IconCursor,
IconFib,
IconLayers,
IconLock,
IconPlus,
IconRuler,
IconSmile,
IconText,
IconResetView,
IconTrash,
IconTrendline,
IconZoom,
IconZoomOut,
} from './ChartIcons';
type ActiveTool = 'cursor' | 'fib-retracement';
type Props = {
timeframe: string;
activeTool: ActiveTool;
hasFib: boolean;
isLayersOpen: boolean;
onToolChange: (tool: ActiveTool) => void;
onToggleLayers: () => void;
onZoomIn: () => void;
onZoomOut: () => void;
onResetView: () => void;
onClearFib: () => void;
};
export default function ChartSideToolbar({
timeframe,
activeTool,
hasFib,
isLayersOpen,
onToolChange,
onToggleLayers,
onZoomIn,
onZoomOut,
onResetView,
onClearFib,
}: Props) {
const [openMenu, setOpenMenu] = useState<'fib' | null>(null);
useEffect(() => {
if (!openMenu) return;
const onKeyDown = (e: KeyboardEvent) => {
if (e.key === 'Escape') setOpenMenu(null);
};
window.addEventListener('keydown', onKeyDown);
return () => window.removeEventListener('keydown', onKeyDown);
}, [openMenu]);
const fibMenuSections: ToolMenuSection[] = useMemo(
() => [
{
id: 'fib',
title: 'FIBONACCI',
items: [
{ id: 'fib-retracement', label: 'Fib Retracement', icon: