import type { Typename } from "../utils/typename"

enum ListItemStyleEnum {
  checkmark = "checkmark",
  default = "default",
}

type ListItemStyle = keyof typeof ListItemStyleEnum

export enum BlockListItemsEnum {
  CurrentBlocksPageBlocksListBlockListItemsListItem = "CurrentBlocksPageBlocksListBlockListItemsListItem",
  CurrentBlocksPageBlocksListBlockListItemsListItemExternalLink = "CurrentBlocksPageBlocksListBlockListItemsListItemExternalLink",
}

type ExternalLinkListItem = Typename<
  {
    list_item_external_link: {
      link: {
        href: string
        title: string
      }
      list_item_style: ListItemStyle
      subtitle?: string
    }
  },
  BlockListItemsEnum.CurrentBlocksPageBlocksListBlockListItemsListItemExternalLink
>

type RegularListItem = Typename<
  {
    list_item: {
      list_item_style: ListItemStyle
      subtitle?: string
      title: string
    }
  },
  BlockListItemsEnum.CurrentBlocksPageBlocksListBlockListItemsListItem
>

export type ListItem =
  | ExternalLinkListItem
  | RegularListItem

export type List = {
  list: {
    title?: string
    list_items: ListItem[]
  }
}

export type ListProps = List
