/** * Add/Edit dialog for an LlmProvider row. * Save is disabled until provider_code + provider_name are non-empty. */ import React from 'react'; import { Box, Dialog, DialogTitle, DialogContent, DialogActions, TextField, FormControl, InputLabel, Select, MenuItem, FormControlLabel, Checkbox, Button, } from '@mui/material'; import type { LlmProvider } from '../ProvidersManagement.types'; interface Props { open: boolean; data: Partial | null; onClose: () => void; onChange: (data: Partial) => void; onSave: () => void; } export const ProviderDialog: React.FC = ({ open, data, onClose, onChange, onSave }) => { if (!data) return null; const isEdit = 'provider_id' in data && !!data.provider_id; return ( {isEdit ? 'Edit Provider' : 'Add Provider'} onChange({ ...data, provider_code: e.target.value })} required fullWidth /> onChange({ ...data, provider_name: e.target.value })} required fullWidth /> onChange({ ...data, base_url: e.target.value })} fullWidth placeholder="https://api.example.com/v1" /> Auth Type onChange({ ...data, priority: parseInt(e.target.value) })} sx={{ flex: 1 }} /> onChange({ ...data, rate_limit_rpm: parseInt(e.target.value) })} sx={{ flex: 1 }} /> onChange({ ...data, rate_limit_tpm: parseInt(e.target.value) })} sx={{ flex: 1 }} /> onChange({ ...data, description: e.target.value })} multiline rows={2} fullWidth /> onChange({ ...data, is_active: e.target.checked })} />} label="Active" /> ); };