AgentGPT-Web-GUI / next /src /components /QuestionInput.tsx
dia-gov's picture
Upload 569 files
cd6f98e verified
raw
history blame
1.84 kB
import clsx from "clsx";
import React from "react";
import { FaArrowRight } from "react-icons/fa";
interface Props extends React.InputHTMLAttributes<HTMLInputElement> {
name: string;
attributes?: { [key: string]: string | number | string[] };
icon?: React.ReactNode;
disabled?: boolean;
handleFocusChange?: (focused: boolean) => void;
onSubmit: () => void;
}
// Test stylized input component
const QuestionInput = (props: Props) => {
return (
<div className="relative flex flex-col">
<div className="flex flex-grow flex-row items-center gap-1">
<input
type={props.type}
name={props.name}
id={props.name}
className="placeholder:text-color-tertiary w-full rounded-full border-2 border-slate-6 bg-slate-1 p-4 text-slate-12 caret-purple-400 ring-0 transition-colors duration-300 selection:bg-purple-300 hover:border-purple-200 focus:border-purple-400 focus:outline-0 focus:ring-0 sm:leading-6"
placeholder={props.placeholder}
value={props.value}
onChange={props.onChange}
disabled={props.disabled}
onFocus={() => props.handleFocusChange && props.handleFocusChange(true)}
onBlur={() => props.handleFocusChange && props.handleFocusChange(false)}
{...{ "aria-describedby": `${props.name}-description` }}
{...props.attributes}
/>
<div
className={clsx(
"absolute right-2 rounded-full p-3 text-white transition-colors duration-300",
props.value === ""
? "cursor-not-allowed bg-slate-8"
: "cursor-pointer bg-purple-300 hover:bg-purple-400"
)}
onClick={props.onSubmit}
>
<FaArrowRight size={20} />
</div>
</div>
</div>
);
};
export default QuestionInput;