'use client'; import { useState } from 'react'; interface ControlPanelProps { engineStatus: string; isLoading: boolean; onInitEngine: () => void; onLoadModel: (url?: string) => void; onSetLang: (lang: 'zh-CN' | 'en-US') => void; onSetTheme: (theme: 'dark' | 'light') => void; onSetCustomTheme: () => void; onOpenTestDialog: () => void; onOpenInfoDialog: () => void; onOpenTreeDialog: () => void; onToggleToolbar: (visible: boolean) => void; onToggleLabel: (visible: boolean) => void; onPauseRendering: () => void; onResumeRendering: () => void; } export default function ControlPanel({ engineStatus, onInitEngine, onLoadModel, onSetLang, onSetTheme, onSetCustomTheme, onOpenTestDialog, onOpenInfoDialog, onOpenTreeDialog, onToggleToolbar, onToggleLabel, onPauseRendering, onResumeRendering }: ControlPanelProps) { const [modelUrl, setModelUrl] = useState(''); const [isToolbarVisible, setIsToolbarVisible] = useState(true); const [isLabelVisible, setIsLabelVisible] = useState(true); const handleToggleToolbar = () => { const newVisible = !isToolbarVisible; setIsToolbarVisible(newVisible); onToggleToolbar(newVisible); }; const handleToggleLabel = () => { const newVisible = !isLabelVisible; setIsLabelVisible(newVisible); onToggleLabel(newVisible); }; const handleLoadModel = () => { const url = modelUrl.trim(); onLoadModel(url || undefined); }; const getStatusColor = () => { switch (engineStatus) { case '已初始化': return '#28a745'; case '初始化失败': case '初始化错误': case 'SDK 未加载': return '#dc3545'; default: return '#666'; } }; return ( ); } function ControlGroup({ title, children }: { title: string; children: React.ReactNode }) { return (

{title}

{children}
); } function ButtonGroup({ children, style }: { children: React.ReactNode; style?: React.CSSProperties }) { return (
{children}
); }