import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { AiSettingsPopover } from "./AiSettingsPopover"; import { useGenerateSql } from "@/hooks/use-ai"; import { Sparkles, Loader2, X, Eraser } from "lucide-react"; import { toast } from "sonner"; interface Props { connectionId: string; onSqlGenerated: (sql: string) => void; onClose: () => void; onExecute?: () => void; } export function AiBar({ connectionId, onSqlGenerated, onClose, onExecute }: Props) { const [prompt, setPrompt] = useState(""); const generateMutation = useGenerateSql(); const handleGenerate = () => { if (!prompt.trim() || generateMutation.isPending) return; generateMutation.mutate( { connectionId, prompt }, { onSuccess: (sql) => { onSqlGenerated(sql); }, onError: (err) => { toast.error("AI generation failed", { description: String(err) }); }, } ); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" && (e.ctrlKey || e.metaKey)) { e.preventDefault(); e.stopPropagation(); onExecute?.(); return; } if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); e.stopPropagation(); handleGenerate(); return; } if (e.key === "Escape") { e.stopPropagation(); onClose(); } }; return (