From 1cfa1e12f91d63fdfa2160e37aac1d275161dccd Mon Sep 17 00:00:00 2001 From: Matt Kirby <MattJKirby@outlook.com> Date: Thu, 13 Apr 2023 17:08:34 +0100 Subject: [PATCH] Added basic field form component --- .../src/components/form/BasicField.tsx | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 daily-thought-frontend/src/components/form/BasicField.tsx diff --git a/daily-thought-frontend/src/components/form/BasicField.tsx b/daily-thought-frontend/src/components/form/BasicField.tsx new file mode 100644 index 00000000..2f099b28 --- /dev/null +++ b/daily-thought-frontend/src/components/form/BasicField.tsx @@ -0,0 +1,43 @@ +import { FC } from "react" + +type BasicFieldProps = { + name: string, + placeholder: string, + error?: string | null + onChange: (value: string) => void; +} + +const BasicField:FC<BasicFieldProps> = ({ + name, + placeholder, + error, + onChange +}) => { + + const handleChange = (value: string) => { + onChange(value) + } + + return ( + <div className="mb-3"> + <label htmlFor={name} className="sr-only"> + {placeholder} + </label> + <input + id={name} + name={name} + type={name} + autoComplete={name} + required + className={`p-3 relative block w-full rounded-md border-0 py-1.5 text-gray-900 ring-1 ring-inset placeholder:text-gray-400 focus:z-10 sm:text-sm sm:leading-6 ${error ? "ring-c-pink" : "ring-gray-300"}`} + placeholder={placeholder} + onChange={e => handleChange(e.target.value)} + /> + <p className="text-xs text-c-pink m-1"> + {error} + </p> + </div> + ) +} + +export default BasicField \ No newline at end of file -- GitLab