import { Box, Button, FormControl, InputLabel, MenuItem, Select, TextField, Typography } from '@mui/material'; import { AIProviderConfig } from '@services/externalAPI/interface'; import React from 'react'; import { useTranslation } from 'react-i18next'; // New provider form state interface NewProviderFormState { provider: string; providerClass: string; baseURL: string; } interface NewProviderFormProps { formState: NewProviderFormState; providerClasses: string[]; availableDefaultProviders: AIProviderConfig[]; selectedDefaultProvider: string; onDefaultProviderSelect: (providerName: string) => void; onChange: (updates: Partial) => void; onSubmit: () => void; } export function NewProviderForm({ formState, providerClasses, availableDefaultProviders, selectedDefaultProvider, onDefaultProviderSelect, onChange, onSubmit, }: NewProviderFormProps) { const { t } = useTranslation('agent'); const showBaseURLField = formState.providerClass === 'openAICompatible' || formState.providerClass === 'ollama'; return ( {t('Preference.AddNewProvider')} {/* Default provider selector */} {t('Preference.SelectDefaultProvider')} { onChange({ provider: event.target.value }); }} fullWidth margin='normal' placeholder='my-ai-provider' slotProps={{ htmlInput: { 'data-testid': 'new-provider-name-input' } }} /> {t('Preference.ProviderClass')} {showBaseURLField && ( { onChange({ baseURL: event.target.value }); }} fullWidth margin='normal' placeholder={formState.providerClass === 'ollama' ? 'http://localhost:11434' : 'https://api.example.com/v1'} slotProps={{ htmlInput: { 'data-testid': 'new-provider-base-url-input' } }} /> )} ); }