import React from "react"; import { Pencil, Trash2 } from "lucide-react"; import type { ProviderConfig } from "../../../../infrastructure/ai/types"; import { useI18n } from "../../../../application/i18n/I18nProvider"; import { Toggle } from "../../settings-ui"; import { Tooltip, TooltipContent, TooltipTrigger } from "../../../ui/tooltip"; import { cn } from "../../../../lib/utils"; import { ProviderIconBadge } from "./ProviderIconBadge"; import { ProviderConfigForm } from "./ProviderConfigForm"; export const ProviderCard: React.FC<{ provider: ProviderConfig; isActive: boolean; onToggleEnabled: (enabled: boolean) => void; onEdit: () => void; onRemove: () => void; onUpdate: (updates: Partial) => void; isEditing: boolean; onCancelEdit: () => void; }> = ({ provider, isActive, onToggleEnabled, onEdit, onRemove, onUpdate, isEditing, onCancelEdit }) => { const { t } = useI18n(); const hasApiKey = !!provider.apiKey; return (
{/* Provider icon */} {/* Info */}
{provider.name} {isActive && ( {t('ai.providers.active')} )}
{hasApiKey ? t('ai.providers.apiKeyConfigured') : t('ai.providers.noApiKey')} {provider.defaultModel && ( <> | {provider.defaultModel} )}
{/* Actions */}
{t('ai.providers.configure')} {t('ai.providers.remove')}
{/* Expandable config form */} {isEditing && ( { onUpdate(updates); onCancelEdit(); }} onCancel={onCancelEdit} /> )}
); };