import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider' import { AiAssistantDropdown } from 'components/ui/AiAssistantDropdown' import { Check, ChevronDown, Copy, X as XIcon } from 'lucide-react' import { useMemo } from 'react' import { useAiAssistantStateSnapshot } from 'state/ai-assistant-state' import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from 'ui' import type { LogData, QueryType } from './Logs.types' import { buildLogsPrompt } from './Logs.utils' interface MultiSelectActionBarProps { selectedRows: Set selectedRowsData: LogData[] copiedFormat: 'json' | 'markdown' | null onCopy: (format: 'json' | 'markdown') => void onClear: () => void queryType?: QueryType sqlQuery?: string } export function MultiSelectActionBar({ selectedRows, selectedRowsData, copiedFormat, onCopy, onClear, queryType, sqlQuery, }: MultiSelectActionBarProps) { const { openSidebar } = useSidebarManagerSnapshot() const aiSnap = useAiAssistantStateSnapshot() function handleOpenAiAssistant() { const prompt = buildLogsPrompt(selectedRowsData, queryType, sqlQuery) openSidebar(SIDEBAR_KEYS.AI_ASSISTANT) aiSnap.newChat({ initialMessage: prompt }) } const count = selectedRows.size if (count === 0) return null return (
{count} row{count !== 1 ? 's' : ''} selected
onCopy('json')} className="gap-2 text-xs"> Copy as JSON onCopy('markdown')} className="gap-2 text-xs"> Copy as Markdown buildLogsPrompt(selectedRowsData, queryType, sqlQuery)} onOpenAssistant={handleOpenAiAssistant} telemetrySource="log_explorer" />
) }