import { FC, ReactNode } from 'react'
import { Wish } from '../models'

interface CreateWishProps {
  onFocus: () => void
  hasFocus: boolean
  onSubmit: (wish: Wish) => void
  wish: Wish
  children?: ReactNode
}

const CreateWish: FC<CreateWishProps> = (props) => {
  return (
    <div onFocus={() => props.onFocus()}>
      <div className="space-y-6 rounded bg-pink-100 p-1">
        <div className="bg-pink-100 transition-all">
          <input
            type="text"
            name="wishName"
            placeholder="Your wish!"
            className="w-full appearance-none bg-pink-100 p-6 text-center text-xl font-medium outline-none"
            onChange={(e) =>
              props.onSubmit({ ...props.wish, name: e.target.value })
            }
            value={props.wish.name}
          />
          <div className={`${props.hasFocus ? 'block' : 'hidden'}`}>
            <InnerWishPrompt wish={props.wish} onChange={props.onSubmit} />
          </div>
        </div>
      </div>
    </div>
  )
}

interface InnerWishPromptInterface {
  wish: Wish
  onChange: (wish: Wish) => void
  children?: ReactNode
}

const InnerWishPrompt: FC<InnerWishPromptInterface> = (props) => {
  return (
    <div className="space-y-4">
      <textarea
        name="wishDescription"
        placeholder="Description"
        className="block w-full resize-none appearance-none rounded bg-pink-100 py-3 px-4 outline-none"
        onChange={(e) =>
          props.onChange({ ...props.wish, description: e.target.value })
        }
        value={props.wish.description}
      />
      <div className="w-content m-auto h-0.5 w-3/4 bg-gray-300" />
      <input
        type="text"
        name="wishLink"
        placeholder="https://example.mywish"
        className="block w-full appearance-none rounded bg-pink-100 py-3 px-4 outline-none"
        onChange={(e) =>
          props.onChange({ ...props.wish, link: e.target.value })
        }
        value={props.wish.link}
      />
    </div>
  )
}

interface BasePromptProps {
  children?: ReactNode
}
export const BasePrompt: FC<BasePromptProps> = (props) => (
  <div>
    <div className="space-y-6 bg-white p-4 shadow">{props.children}</div>
  </div>
)

export default CreateWish
