import { ArrowDownIcon, ArrowRightIcon, MinusIcon, PlusIcon } from "@heroicons/react/20/solid"; import { GRAPH_MAX_ZOOM_TB, GRAPH_MAX_ZOOM_LR, GRAPH_MIN_ZOOM } from "../lib/graph-viewport"; type Direction = "LR" | "TB"; // +/- button step. Zoom-out uses the reciprocal, keeping it symmetric with zoom-in. const ZOOM_STEP_FACTOR = 1.25; export function GraphToolbar({ direction, setDirection, fitToWindow, zoom, onZoomBy, }: { direction: Direction; setDirection: (d: Direction) => void; fitToWindow: () => void; zoom: number; onZoomBy: (factor: number) => void; }) { const group = "flex items-center gap-0.5 px-0.5 [&:not(:first-child)]:border-l [&:not(:first-child)]:border-line-strong [&:not(:first-child)]:pl-1 [&:not(:first-child)]:ml-1"; const btn = "flex size-7 items-center justify-center rounded text-fg-muted transition-colors hover:bg-overlay hover:text-fg-3 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-teal-500"; const btnActive = "bg-overlay-strong text-fg-3"; const btnDisabled = "disabled:opacity-30 disabled:hover:bg-transparent disabled:hover:text-fg-muted"; return (
); }