import clsx from 'clsx'
import { formatMoney } from 'common/util/format'
import { fromNow } from 'web/lib/util/time'
import { Col } from 'web/components/layout/col'
import { Row } from 'web/components/layout/row'

export type ManalinkInfo = {
  expiresTime: number | null
  maxUses: number | null
  uses: number
  amount: number
  message: string
}

export function ManalinkCard(props: {
  className?: string
  info: ManalinkInfo
  defaultMessage: string
  isClaiming: boolean
  onClaim?: () => void
}) {
  const { className, defaultMessage, isClaiming, info, onClaim } = props
  const { expiresTime, maxUses, uses, amount, message } = info
  return (
    <div
      className={clsx(
        className,
        'min-h-20 group flex flex-col rounded-xl bg-gradient-to-br from-indigo-200 via-indigo-400 to-indigo-800 shadow-lg transition-all'
      )}
    >
      <Col className="mx-4 mt-2 -mb-4 text-right text-sm text-gray-100">
        <div>
          {maxUses != null
            ? `${maxUses - uses}/${maxUses} uses left`
            : `Unlimited use`}
        </div>
        <div>
          {expiresTime != null
            ? `Expires ${fromNow(expiresTime)}`
            : 'Never expires'}
        </div>
      </Col>

      <img
        className="mb-6 block self-center transition-all group-hover:rotate-12"
        src="/logo-white.svg"
        width={200}
        height={200}
      />
      <Row className="justify-end rounded-b-xl bg-white p-4">
        <Col>
          <div className="mb-1 text-xl text-indigo-500">
            {formatMoney(amount)}
          </div>
          <div>{message || defaultMessage}</div>
        </Col>

        <div className="ml-auto">
          <button
            className={clsx('btn', isClaiming ? 'loading disabled' : '')}
            onClick={onClaim}
          >
            {isClaiming ? '' : 'Claim'}
          </button>
        </div>
      </Row>
    </div>
  )
}