import { useEffect, useRef, useState } from "react"; import { Plus, Settings as SettingsIcon, FolderPlus, FolderInput, Trash2, Check, X, ChevronDown } from "lucide-react"; import { Button } from "../ui/Button"; import { useUiStore } from "../../stores/uiStore"; import { ImportExportMenu } from "./ImportExportMenu"; import { TagFilterDropdown } from "../tags/TagFilterDropdown"; import { DbTypeFilterDropdown } from "./DbTypeFilterDropdown"; interface ActionRowProps { onImport?: () => void; onExport?: () => void; onNewFolder?: () => void; onFilters?: () => void; onDeleteSelected?: () => void; onMoveToFolder?: () => void; visibleItemIds?: string[]; } export function ActionRow({ onImport, onExport, onNewFolder, onFilters: _onFilters, onDeleteSelected, onMoveToFolder, visibleItemIds = [] }: ActionRowProps) { const setActiveView = useUiStore((s) => s.setActiveView); const openSettings = useUiStore((s) => s.openSettings); const selectedItemIds = useUiStore((s) => s.selectedItemIds); const selectAllItems = useUiStore((s) => s.selectAllItems); const clearSelection = useUiStore((s) => s.clearSelection); const hasSelection = selectedItemIds.length > 0; const [menuOpen, setMenuOpen] = useState(false); const menuRef = useRef(null); useEffect(() => { if (!menuOpen) return; const handler = (e: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(e.target as Node)) { setMenuOpen(false); } }; document.addEventListener("mousedown", handler); return () => document.removeEventListener("mousedown", handler); }, [menuOpen]); return (

Saved Connections

{hasSelection && ( )} {hasSelection && (
{menuOpen && (
)}
)}
{})} onExport={onExport ?? (() => {})} />
); }