/* Copyright (C) 2025 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import React from 'react'; import { Card, Select, Typography, Button, Switch } from '@douyinfe/semi-ui'; import { Sparkles, Users, ToggleLeft, X, Settings } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { renderGroupOption, selectFilter } from '../../helpers'; import ParameterControl from './ParameterControl'; import ImageUrlInput from './ImageUrlInput'; import ConfigManager from './ConfigManager'; import CustomRequestEditor from './CustomRequestEditor'; const SettingsPanel = ({ inputs, parameterEnabled, models, groups, styleState, showDebugPanel, customRequestMode, customRequestBody, onInputChange, onParameterToggle, onCloseSettings, onConfigImport, onConfigReset, onCustomRequestModeChange, onCustomRequestBodyChange, previewPayload, messages, }) => { const { t } = useTranslation(); const currentConfig = { inputs, parameterEnabled, showDebugPanel, customRequestMode, customRequestBody, }; return ( {/* 标题区域 - 与调试面板保持一致 */}
{t('模型配置')}
{styleState.isMobile && onCloseSettings && (
{/* 移动端配置管理 */} {styleState.isMobile && (
)}
{/* 自定义请求体编辑器 */} {/* 分组选择 */}
{t('分组')} {customRequestMode && ( (已在自定义模式中忽略) )}
onInputChange('model', value)} value={inputs.model} autoComplete='new-password' optionList={models} style={{ width: '100%' }} dropdownStyle={{ width: '100%', maxWidth: '100%' }} className='!rounded-lg' disabled={customRequestMode} />
{/* 图片URL输入 */}
onInputChange('imageUrls', urls)} onImageEnabledChange={(enabled) => onInputChange('imageEnabled', enabled) } disabled={customRequestMode} />
{/* 参数控制组件 */}
{/* 流式输出开关 */}
流式输出 {customRequestMode && ( (已在自定义模式中忽略) )}
onInputChange('stream', checked)} checkedText='开' uncheckedText='关' size='small' disabled={customRequestMode} />
{/* 桌面端的配置管理放在底部 */} {!styleState.isMobile && (
)}
); }; export default SettingsPanel;