import { Row } from './layout/row'
import { RadioGroup } from '@headlessui/react'
import clsx from 'clsx'
import React from 'react'

export function ChoicesToggleGroup(props: {
  currentChoice: number | string
  choicesMap: { [key: string]: string | number }
  isSubmitting?: boolean
  setChoice: (p: number | string) => void
  className?: string
  children?: React.ReactNode
}) {
  const {
    currentChoice,
    setChoice,
    isSubmitting,
    choicesMap,
    className,
    children,
  } = props
  return (
    <Row className={'mt-2 items-center gap-2'}>
      <RadioGroup
        value={currentChoice.toString()}
        onChange={(str) => null}
        className="mt-2"
      >
        <div className={`grid grid-cols-12 gap-3`}>
          {Object.keys(choicesMap).map((choiceKey) => (
            <RadioGroup.Option
              key={choiceKey}
              value={choicesMap[choiceKey]}
              onClick={() => setChoice(choicesMap[choiceKey])}
              className={({ active }) =>
                clsx(
                  active ? 'ring-2 ring-indigo-500 ring-offset-2' : '',
                  currentChoice === choicesMap[choiceKey]
                    ? 'border-transparent bg-indigo-500 text-white hover:bg-indigo-600'
                    : 'border-gray-200 bg-white text-gray-900 hover:bg-gray-50',
                  'flex cursor-pointer items-center justify-center rounded-md border py-3 px-3 text-sm font-medium normal-case',
                  "hover:ring-offset-2' hover:ring-2 hover:ring-indigo-500",
                  className
                )
              }
              disabled={isSubmitting}
            >
              <RadioGroup.Label as="span">{choiceKey}</RadioGroup.Label>
            </RadioGroup.Option>
          ))}
          {children}
        </div>
      </RadioGroup>
    </Row>
  )
}