import React, { useState, useEffect } from "react"; import FileUpload from "../Settings/FileUpload"; import ToneSelector from "../Settings/ToneSelector"; interface ChatBoxSettings { report_type: string; report_source: string; tone: string; } interface ResearchFormProps { chatBoxSettings: ChatBoxSettings; setChatBoxSettings: React.Dispatch>; onFormSubmit?: ( task: string, reportType: string, reportSource: string, ) => void; defaultReportType: string; } export default function ResearchForm({ chatBoxSettings, setChatBoxSettings, onFormSubmit, defaultReportType, }: ResearchFormProps) { const [task, setTask] = useState(""); // You can use this to capture any specific task data if needed // Destructure necessary fields from chatBoxSettings let { report_type, report_source, tone } = chatBoxSettings; const onFormChange = (e: { target: { name: any; value: any } }) => { const { name, value } = e.target; setChatBoxSettings((prevSettings: any) => ({ ...prevSettings, [name]: value, })); }; const onToneChange = (e: { target: { value: any } }) => { const { value } = e.target; setChatBoxSettings((prevSettings: any) => ({ ...prevSettings, tone: value, })); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (onFormSubmit) { onFormSubmit(task, report_type, report_source); // Trigger the onFormSubmit prop when form is submitted } else { console.warn("onFormSubmit is not defined"); } }; useEffect(() => { // Set default report type only if report_type is empty (initial mount) if (!chatBoxSettings.report_type) { setChatBoxSettings((prevSettings) => ({ ...prevSettings, report_type: defaultReportType, })); } }, [defaultReportType, setChatBoxSettings, chatBoxSettings.report_type]); return (
{/* Conditional file upload if the report source is 'local' or 'hybrid' */} {report_source === "local" || report_source === "hybrid" ? ( ) : null} {/* ToneSelector for changing the tone */} ); }