import { Check, ChevronDown, Copy, X as XIcon } from 'lucide-react' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from 'ui' import type { LogData, QueryType } from './Logs.types' import { buildLogsPrompt } from './Logs.utils' import { SIDEBAR_KEYS } from '@/components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider' import { AiAssistantDropdown } from '@/components/ui/AiAssistantDropdown' import { ShortcutBadge } from '@/components/ui/ShortcutBadge' import { useAiAssistantStateSnapshot } from '@/state/ai-assistant-state' import { SHORTCUT_IDS } from '@/state/shortcuts/registry' import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state' export type LogCopyFormat = 'json' | 'markdown' | 'csv' interface MultiSelectActionBarProps { selectedRows: Set selectedRowsData: LogData[] copiedFormat: LogCopyFormat | null onCopy: (format: LogCopyFormat) => 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-x-2">

Copy as JSON

onCopy('markdown')} className="gap-x-2">

Copy as Markdown

onCopy('csv')} className="gap-x-2">

Copy as CSV

buildLogsPrompt(selectedRowsData, queryType, sqlQuery)} onOpenAssistant={handleOpenAiAssistant} telemetrySource="log_explorer" />
) }