import { ActionMenuItemType } from '~/types/enum/layout'
import { COOKIE_CONSENT_CHOICE } from '~/types/enum/enums'
import { STRUCTURE_TYPE_KEYS, LEGAL_STATUS_KEYS } from '~/types/types'

interface ActionMenuItem {
  type: ActionMenuItemType
  color: 'primary' | 'secondary'
  icon: string
  text: string
  url?: string | object
  target?: string
}

interface MainMenuItem {
  label: string
  to?: string
  children?: Array<MainMenuItem>
}

interface CarouselItem {
  logo: string
  logoAlt: string
  description: string
  descriptionSm: string
  buttonClass: string
  image: string
  imageAlt: string
  color: string
  link: string
  name: string
  school: string
  status: string
  avatar: string
  avatarAlt: string
}

interface SolutionItem {
  name: string
  description: string
  image: string
  alt: string
  link: string
  class: string
  solutions: string[]
}

interface Review {
  name: string
  review: string
  status: string
  structure: string
}

interface MenuScroll {
  label: string
  anchor: string
}

interface FeaturePicto {
  src: string
  text: string
}

// TODO: vérifier l'utilité des props list et isMemberCmf
interface Benefit {
  title: string
  number: string
  description: string
  image: string
  alt: string
  isMemberCMF?: boolean
}

interface Functionality {
  logo: string
  logoAlt: string
  title: string
  list: Array<string>
  options?: Array<string>
}

interface ComparisonItem {
  label: string
  includedInStandard: boolean | string
  includedInPremium: boolean | string
}

interface Formation {
  image: string
  alt: string
  overlayClass: string
  sessions: string
  title: string
  description: string
  buttonText: string
  link: string
}

interface Program {
  id: number
  objectives: string[]
}

interface Training {
  number?: string
  title: string
  description: string
  objectives: string[]
  duration: string
  program?: Program[]
  price: string
  downloadLink: string
  imageUrl?: string
  imageAlt?: string
  additionalObjectives?: Program[]
}

interface FaqEntry {
  question: string
  answer: string
}

interface SocietyValue {
  img: string
  alt: string
  title: string
  description: string
}

interface Event {
  rdv: string
  title: string
  localisation: string
  date: string
  img: string
  tags: string[]
}

interface ChronologyItem {
  year: string
  title: string
  description: string
  imageUrl: string
}

interface SocietyMember {
  name: string
  position: string
  photo: string
  alt: string
}

interface SocialNetworkShareBtn {
  name: string
  icon: string
  colorOnHover?: string
  url: string
}

interface ContactFormData {
  gender: string | null
  postalCode: string | null
  city: string | null
  phone: string | null
  requestType: string | null
  concernedProduct: string | null
  newsletterSubscription: boolean
}

interface CookiesPreferences {
  consent: COOKIE_CONSENT_CHOICE
  analyticsConsent: boolean
  advertisingConsent: boolean
  adUserDataConsent: boolean
  adPersonalizationConsent: boolean
}

interface Article {
  title: string
  text: string
  image: string
  imageAlt: string
  btnTitle?: string
  btnHref?: string
}

interface TrialRequest {
  structureName: string
  address: string
  addressComplement: string
  postalCode: string
  city: string
  structureEmail: string
  structureType: STRUCTURE_TYPE_KEYS
  legalStatus: LEGAL_STATUS_KEYS
  structureIdentifier: string
  siren: string
  representativeFirstName: string
  representativeLastName: string
  representativeFunction: string
  representativeEmail: string
  representativePhone: string
  password: string
  termsAccepted: boolean
  legalRepresentative: boolean
  newsletterSubscription: boolean
}
