import { useRef } from 'react'; import { Button, Switch, Tabs, TabsList, TabsTrigger, Badge, Toggle } from '@hm-design/ui'; import { FolderOpen, Scan, Layers, SlidersHorizontal, Info as InfoIcon } from 'lucide-react'; import type { CadSpace } from '../viewer2d/cadSpaces'; import { LicenseNotice } from './LicenseNotice'; export interface ToolbarProps { status: string; statusError: boolean; spaces: CadSpace[]; activeSpace: string | null; onSelectSpace: (handleHex: string | null) => void; onOpenFile: (file: File) => void; onLoadSample: (url: string, label: string) => void; onFit: () => void; is25D: boolean; onToggle25D: (on: boolean) => void; canvasDark: boolean; onToggleTheme: () => void; layersOpen: boolean; onToggleLayers: () => void; optionsOpen: boolean; onToggleOptions: () => void; propsOpen: boolean; onToggleProps: () => void; } export function Toolbar({ status, statusError, spaces, activeSpace, onSelectSpace, onOpenFile, onLoadSample, onFit, is25D, onToggle25D, canvasDark, onToggleTheme, layersOpen, onToggleLayers, optionsOpen, onToggleOptions, propsOpen, onToggleProps, }: ToolbarProps) { const fileInputRef = useRef(null); const showSpaceTabs = spaces.length > 1 || (spaces[0]?.entityCount ?? 0) > 0; return (
{ const file = e.target.files?.[0]; if (file) onOpenFile(file); e.currentTarget.value = ''; }} /> {showSpaceTabs && ( onSelectSpace(v)}> {spaces.map((s) => ( {s.label} {s.entityCount > 0 ? ` (${s.entityCount})` : ''} ))} )}
{status}
); }