import { Conversation } from '@/types'; import { DEFAULT_SYSTEM_PROMPT } from '@/utils/app/const'; import { FC, useEffect, useRef, useState } from 'react'; import { useTranslation } from 'next-i18next'; interface Props { conversation: Conversation; onChangePrompt: (prompt: string) => void; } export const SystemPrompt: FC = ({ conversation, onChangePrompt }) => { const { t } = useTranslation('chat'); const [value, setValue] = useState(''); const textareaRef = useRef(null); const handleChange = (e: React.ChangeEvent) => { const value = e.target.value; const maxLength = 4000; if (value.length > maxLength) { alert(t(`Prompt limit is {{maxLength}} characters`, { maxLength })); return; } setValue(value); if (value.length > 0) { onChangePrompt(value); } }; useEffect(() => { if (textareaRef && textareaRef.current) { textareaRef.current.style.height = 'inherit'; textareaRef.current.style.height = `${textareaRef.current?.scrollHeight}px`; } }, [value]); useEffect(() => { if (conversation.prompt) { setValue(conversation.prompt); } else { setValue(DEFAULT_SYSTEM_PROMPT); } }, [conversation]); return (