import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Plus, Download, Map, LogOut, Tag } from 'lucide-react'; import { toast } from 'sonner'; import { toPng } from 'html-to-image'; import { Button } from '../ui/Button'; import { AddRackModal } from '../modals/AddRackModal'; import { useAuthStore } from '../../store/useAuthStore'; interface RackToolbarProps { rackCanvasRef: React.RefObject; } export function RackToolbar({ rackCanvasRef }: RackToolbarProps) { const navigate = useNavigate(); const { logout } = useAuthStore(); const [addRackOpen, setAddRackOpen] = useState(false); const [exporting, setExporting] = useState(false); async function handleExport() { if (!rackCanvasRef.current) return; setExporting(true); const toastId = toast.loading('Exporting…'); try { const dataUrl = await toPng(rackCanvasRef.current, { cacheBust: true }); const link = document.createElement('a'); link.download = `rackmapper-rack-${Date.now()}.png`; link.href = dataUrl; link.click(); toast.success('Exported successfully', { id: toastId }); } catch { toast.error('Export failed', { id: toastId }); } finally { setExporting(false); } } async function handleLogout() { await logout(); navigate('/login', { replace: true }); } return ( <>
{/* Left: brand */}
RACKMAPPER
Rack Planner
{/* Right: actions */}
setAddRackOpen(false)} /> ); }