import { ChevronDown, Database, Loader2, PanelRightClose, PanelRightOpen, Play, Sparkles } from 'lucide-react'; import type { DBType } from '@/lib/queryTemplates'; import { dbTypeIcon, dbTypeLabel } from '../constants'; import type { QueryInstanceOption } from '../types'; interface QueryTopBarProps { /** 可选实例列表 */ instances: QueryInstanceOption[]; /** 当前选中实例 id(字符串形式) */ instanceId: string; /** 已选实例(用于展示库类型图标) */ selectedInstance: QueryInstanceOption | undefined; /** 当前选中数据库 */ database: string; /** 可选数据库列表(MySQL/PG) */ databases: string[]; /** 数据库列表加载中 */ loadingDbs: boolean; /** 归一化后的库类型 */ dbType: DBType; /** Schema 侧栏是否可见 */ showSidebar: boolean; /** 模板面板是否展开 */ showTemplates: boolean; /** 历史抽屉是否展开 */ showHistory: boolean; /** 是否正在执行查询 */ executing: boolean; /** 模板总数 */ templateCount: number; /** 历史记录总数 */ onInstanceIdChange: (instanceId: string) => void; onDatabaseChange: (database: string) => void; onToggleSidebar: () => void; onToggleTemplates: () => void; onToggleHistory: () => void; /** 执行查询(等价于第 1 页) */ onExecute: () => void; } /** 查询页顶栏:实例/数据库选择 + 模板/历史/导航/执行工具按钮 */ export function QueryTopBar({ instances, instanceId, selectedInstance, database, databases, loadingDbs, dbType, showSidebar, showTemplates, showHistory, executing, templateCount, onInstanceIdChange, onDatabaseChange, onToggleSidebar, onToggleTemplates, onToggleHistory, onExecute, }: QueryTopBarProps) { return (
{selectedInstance && dbTypeIcon[dbType] && ( )} {dbType === 'redis' ? ( ) : ( )}
{/* 右侧工具按钮组 */}
{instanceId && ( )}
); }