File size: 1,835 Bytes
cd6f98e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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;