import React, { useEffect, useState } from "react"; import { Card, Form, Button, Tooltip, Typography, Select as AntdSelect, Input, Switch, Modal } from "antd"; import type { UploadProps } from "antd/es/upload"; import { Providers, providerLogoMap } from "../provider_info_helpers"; import type { FormInstance } from "antd"; import ProviderSpecificFields from "../add_model/provider_specific_fields"; import { TextInput } from "@tremor/react"; import { CredentialItem } from "../networking"; const { Title, Link } = Typography; interface AddCredentialsModalProps { isVisible: boolean; onCancel: () => void; onAddCredential: (values: any) => void; onUpdateCredential: (values: any) => void; uploadProps: UploadProps; addOrEdit: "add" | "edit"; existingCredential: CredentialItem | null; } const AddCredentialsModal: React.FC = ({ isVisible, onCancel, onAddCredential, onUpdateCredential, uploadProps, addOrEdit, existingCredential }) => { const [form] = Form.useForm(); const [selectedProvider, setSelectedProvider] = useState(Providers.OpenAI); const [showAdvancedSettings, setShowAdvancedSettings] = useState(false); const handleSubmit = (values: any) => { const filteredValues = Object.entries(values).reduce((acc, [key, value]) => { if (value !== '' && value !== undefined && value !== null) { acc[key] = value; } return acc; }, {} as any); if (addOrEdit === "add") { onAddCredential(filteredValues); } else { onUpdateCredential(filteredValues); } form.resetFields(); }; useEffect(() => { if (existingCredential) { form.setFieldsValue({ credential_name: existingCredential.credential_name, custom_llm_provider: existingCredential.credential_info.custom_llm_provider, api_base: existingCredential.credential_values.api_base, api_version: existingCredential.credential_values.api_version, base_model: existingCredential.credential_values.base_model, api_key: existingCredential.credential_values.api_key, }); setSelectedProvider(existingCredential.credential_info.custom_llm_provider as Providers); } }, [existingCredential]); return ( { onCancel(); form.resetFields(); }} footer={null} width={600} >
{/* Credential Name */} {/* Provider Selection */} { setSelectedProvider(value as Providers); form.setFieldValue("custom_llm_provider", value); }} > {Object.entries(Providers).map(([providerEnum, providerDisplayName]) => (
{`${providerEnum} { const target = e.target as HTMLImageElement; const parent = target.parentElement; if (parent) { const fallbackDiv = document.createElement("div"); fallbackDiv.className = "w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs"; fallbackDiv.textContent = providerDisplayName.charAt(0); parent.replaceChild(fallbackDiv, target); } }} /> {providerDisplayName}
))}
{/* Modal Footer */}
Need Help?
); }; export default AddCredentialsModal;