import { useTranslation } from "react-i18next"; import { Lock, LockOpen, Minus, Plus, RotateCcw, PlusCircle, } from "lucide-react"; import { MIN_ZOOM, MAX_ZOOM, ZOOM_STEP } from "@/types/homepage-types"; import { zoomAroundPoint } from "../canvas/canvasGeometry"; interface HomepageToolbarProps { zoom: number; isLocked: boolean; pan: { x: number; y: number }; containerSize: { w: number; h: number }; onZoomChange: (zoom: number, pan: { x: number; y: number }) => void; onLockToggle: () => void; onResetView: () => void; onAddWidget: (anchorRect: { top: number; bottom: number; left: number; right: number; width: number; height: number; }) => void; } function ToolButton({ onClick, title, disabled, children, }: { onClick: (e: React.MouseEvent) => void; title: string; disabled?: boolean; children: React.ReactNode; }) { return ( ); } export function HomepageToolbar({ zoom, isLocked, pan, containerSize, onZoomChange, onLockToggle, onResetView, onAddWidget, }: HomepageToolbarProps) { const { t } = useTranslation(); const cx = containerSize.w / 2; const cy = containerSize.h / 2; const zoomIn = () => { const next = Math.min(MAX_ZOOM, parseFloat((zoom + ZOOM_STEP).toFixed(1))); onZoomChange(next, zoomAroundPoint(cx, cy, pan, zoom, next)); }; const zoomOut = () => { const next = Math.max(MIN_ZOOM, parseFloat((zoom - ZOOM_STEP).toFixed(1))); onZoomChange(next, zoomAroundPoint(cx, cy, pan, zoom, next)); }; return (
onAddWidget(e.currentTarget.getBoundingClientRect())} title={t("homepage.addWidget")} disabled={isLocked} >
{Math.round(zoom * 100)}% = MAX_ZOOM} >
{isLocked ? ( ) : ( )}
); }