import React, { useState } from 'react'; import { ZoomIn, ZoomOut, Maximize, Undo2, Redo2 } from 'lucide-react'; interface CanvasZoomControlsProps { zoom: number; onZoomIn: () => void; onZoomOut: () => void; onZoomReset: () => void; onFitToScreen: () => void; onUndo?: () => void; onRedo?: () => void; onSetZoom?: (zoom: number) => void; } const ZOOM_PRESETS = [0.25, 0.5, 0.75, 1, 1.5, 2, 3]; /** * CanvasZoomControls — Floating zoom + undo/redo controls for the canvas workspace. * Renders at bottom-right of the workspace with zoom percentage, undo/redo, fit, and preset buttons. */ export const CanvasZoomControls: React.FC = ({ zoom, onZoomIn, onZoomOut, onZoomReset, onFitToScreen, onUndo, onRedo, onSetZoom, }) => { const [showPresets, setShowPresets] = useState(false); return (
{/* Undo/Redo */} {onUndo && ( )} {onRedo && ( )} {(onUndo || onRedo) &&
} {/* Zoom controls */}
{/* Zoom presets dropdown */} {showPresets && onSetZoom && (
{ZOOM_PRESETS.map(z => ( ))}
)}
); };