import { useEffect, useCallback } from "react"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/components/ui/resizable"; import { Toolbar } from "@/components/layout/Toolbar"; import { Sidebar } from "@/components/layout/Sidebar"; import { TabBar } from "@/components/layout/TabBar"; import { TabContent } from "@/components/workspace/TabContent"; import { StatusBar } from "@/components/layout/StatusBar"; import { useAppStore } from "@/stores/app-store"; import type { Tab } from "@/types"; export default function App() { const { activeConnectionId, currentDatabase, addTab } = useAppStore(); const handleNewQuery = useCallback(() => { if (!activeConnectionId) return; const tab: Tab = { id: crypto.randomUUID(), type: "query", title: "New Query", connectionId: activeConnectionId, database: currentDatabase ?? undefined, sql: "", }; addTab(tab); }, [activeConnectionId, currentDatabase, addTab]); const handleCloseTab = useCallback(() => { const { activeTabId, closeTab } = useAppStore.getState(); if (activeTabId) closeTab(activeTabId); }, []); useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if ((e.ctrlKey || e.metaKey) && e.key === "t") { e.preventDefault(); handleNewQuery(); } if ((e.ctrlKey || e.metaKey) && e.key === "w") { e.preventDefault(); handleCloseTab(); } }; window.addEventListener("keydown", handleKeyDown); return () => window.removeEventListener("keydown", handleKeyDown); }, [handleNewQuery, handleCloseTab]); return (
); }