import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdownMenu"; import { ProviderIconType, RenderProviderIcon } from "@/lib/constants/icons"; import { ProviderLabels } from "@/lib/constants/logs"; import { PlusIcon, Settings2Icon } from "lucide-react"; export type ProviderOption = { name: string }; interface AddProviderDropdownProps { /** Provider names that are already in the sidebar (configured or added) */ existingInSidebar: Set; /** All known provider options to show (e.g. from ProviderNames / allProviders) */ knownProviders: ProviderOption[]; onSelectKnownProvider: (name: string) => void; onAddCustomProvider: () => void; disabled?: boolean; /** Optional: use compact trigger for empty state */ variant?: "default" | "empty"; } export function AddProviderDropdown({ existingInSidebar, knownProviders, onSelectKnownProvider, onAddCustomProvider, disabled = false, variant = "default", }: AddProviderDropdownProps) { const availableKnown = knownProviders.filter((p) => !existingInSidebar.has(p.name)); const hasKnown = availableKnown.length > 0; return ( {availableKnown.map((p) => ( onSelectKnownProvider(p.name)}> {ProviderLabels[p.name as keyof typeof ProviderLabels] ?? p.name} ))} {hasKnown && } {/* Add New Provider > Custom provider... — used by E2E (add-provider-option-custom) */} Custom provider... ); }