/* Copyright (C) 2023-2026 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 { useState } from 'react' import { useTranslation } from 'react-i18next' import { PromptInput, PromptInputFooter, PromptInputTextarea, type PromptInputMessage, } from '@/components/ai-elements/prompt-input' import { getSubmittableInputText } from '../../lib' import type { ModelOption, GroupOption, ParameterEnabled, PlaygroundConfig, } from '../../types' import { PlaygroundInputControls } from './playground-input-controls' import { PlaygroundInputTools } from './playground-input-tools' interface PlaygroundInputProps { config: PlaygroundConfig onSubmit: (text: string) => void onStop?: () => void disabled?: boolean isGenerating?: boolean models: ModelOption[] modelValue: string onModelChange: (value: string) => void isModelLoading?: boolean groups: GroupOption[] groupValue: string onGroupChange: (value: string) => void hasMessages?: boolean onConfigChange: ( key: K, value: PlaygroundConfig[K] ) => void onClearMessages?: () => void onParameterEnabledChange: ( key: keyof ParameterEnabled, value: boolean ) => void parameterEnabled: ParameterEnabled } export function PlaygroundInput({ config, onSubmit, onStop, disabled, isGenerating, models, modelValue, onModelChange, isModelLoading = false, groups, groupValue, onGroupChange, hasMessages = false, onConfigChange, onClearMessages, onParameterEnabledChange, parameterEnabled, }: PlaygroundInputProps) { const { t } = useTranslation() const [text, setText] = useState('') const handleSubmit = (message: PromptInputMessage) => { const submittableText = getSubmittableInputText(message, disabled) if (!submittableText) return onSubmit(submittableText) setText('') } return (
setText(event.target.value)} placeholder={t('Ask anything')} value={text} /> } />
) }