import { useState } from "react"; import { Button } from "@/components/ui/button"; import { ConnectionSelector } from "@/components/connections/ConnectionSelector"; import { ConnectionList } from "@/components/connections/ConnectionList"; import { ConnectionDialog } from "@/components/connections/ConnectionDialog"; import { ReadOnlyToggle } from "@/components/layout/ReadOnlyToggle"; import { useAppStore } from "@/stores/app-store"; import { useConnections, useReconnect } from "@/hooks/use-connections"; import { toast } from "sonner"; import { Database, Plus, RefreshCw, Settings, Sparkles } from "lucide-react"; import type { ConnectionConfig, Tab } from "@/types"; import { getEnvironment } from "@/lib/environment"; import { AppSettingsSheet } from "@/components/settings/AppSettingsSheet"; export function Toolbar() { const [listOpen, setListOpen] = useState(false); const [dialogOpen, setDialogOpen] = useState(false); const [settingsOpen, setSettingsOpen] = useState(false); const [editingConn, setEditingConn] = useState(null); const { activeConnectionId, currentDatabase, addTab } = useAppStore(); const { data: connections } = useConnections(); const reconnectMutation = useReconnect(); const activeConn = connections?.find((c) => c.id === activeConnectionId); const activeEnv = getEnvironment(activeConn?.environment); const activeColor = activeEnv?.color ?? activeConn?.color; const handleReconnect = () => { if (!activeConn) return; reconnectMutation.mutate(activeConn, { onSuccess: () => toast.success("Reconnected"), onError: (err) => toast.error("Reconnect failed", { description: String(err) }), }); }; const handleNewQuery = () => { if (!activeConnectionId) return; const tab: Tab = { id: crypto.randomUUID(), type: "query", title: "New Query", connectionId: activeConnectionId, database: currentDatabase ?? undefined, sql: "", }; addTab(tab); }; const handleNewChat = () => { if (!activeConnectionId) return; const tab: Tab = { id: crypto.randomUUID(), type: "chat", title: "Chat", connectionId: activeConnectionId, database: currentDatabase ?? undefined, }; addTab(tab); }; return ( <>
TUSK
{ setEditingConn(conn); setDialogOpen(true); }} onNew={() => { setEditingConn(null); setDialogOpen(true); }} /> ); }