import type { Dispatch, JSX, SetStateAction } from 'react'

export enum AnimationStateEnum {
  unmounted = 'unmounted',
  hidden = 'hidden',
  visible = 'visible',
}

export type AnimationState = keyof typeof AnimationStateEnum

export type ModalProps = {
  onAnimationComplete?: () => void
  title?: string
  subtitle?: string
  withActions?: boolean
  hideHeader?: boolean
} & (
  | { trigger: JSX.Element; isOpen?: never; onToggle?: never }
  | {
      trigger?: never
      isOpen: boolean
      onToggle: (open: boolean) => void
    }
)

export type InnerModalProps = Omit<ModalProps, 'trigger'> & {
  animation: AnimationState
  setAnimation: Dispatch<SetStateAction<AnimationState>>
}
