#import "../Fragments/Image.graphql"
#import "../Fragments/Blocks/Card.graphql"
#import "../Fragments/Blocks/Refs/Card.graphql"
#import "../Fragments/PageLink/AccountPageLink.graphql"
#import "../Fragments/PageLink/ContentPageLink.graphql"
#import "../Fragments/PageLink/LoyaltyPageLink.graphql"

#import "../Fragments/Refs/AccountPage.graphql"
#import "../Fragments/Refs/ContentPage.graphql"
#import "../Fragments/Refs/LoyaltyPage.graphql"
#import "../Fragments/Refs/System.graphql"

query GetLoyaltyPage($locale: String!, $uid: String!) {
  loyalty_page(uid: $uid, locale: $locale) {
    blocks {
      ... on LoyaltyPageBlocksShortcuts {
        __typename
        shortcuts {
          title
          preamble
          shortcuts {
            text
            open_in_new_tab
            linkConnection {
              edges {
                node {
                  ...LoyaltyPageLink
                  ...ContentPageLink
                  ...AccountPageLink
                }
              }
              totalCount
            }
          }
        }
      }
      ... on LoyaltyPageBlocksDynamicContent {
        __typename
        dynamic_content {
          title
          subtitle
          component
          link {
            text
            pageConnection {
              edges {
                node {
                  ...ContentPageLink
                  ...LoyaltyPageLink
                }
              }
              totalCount
            }
          }
        }
      }
      ... on LoyaltyPageBlocksContent {
        __typename
        content {
          content {
            json
            embedded_itemsConnection {
              edges {
                node {
                  __typename
                  ...LoyaltyPageLink
                  ...ContentPageLink
                }
              }
              totalCount
            }
          }
        }
      }
      ... on LoyaltyPageBlocksCardsGrid {
        __typename
        cards_grid {
          title
          preamble
          layout
          theme
          cardConnection(limit: 10) {
            edges {
              node {
                ...CardBlock
              }
            }
          }
        }
      }
    }
    title
    heading
    sidebar {
      __typename
      ... on LoyaltyPageSidebarJoinLoyaltyContact {
        join_loyalty_contact {
          title
          preamble
          contact {
            ... on LoyaltyPageSidebarJoinLoyaltyContactBlockContactContact {
              __typename
              contact {
                display_text
                contact_field
              }
            }
          }
        }
      }
      ... on LoyaltyPageSidebarContent {
        content {
          content {
            json
            embedded_itemsConnection {
              edges {
                node {
                  __typename
                  ...Image
                  ...LoyaltyPageLink
                  ...ContentPageLink
                }
              }
              totalCount
            }
          }
        }
      }
    }
    web {
      breadcrumbs {
        title
        parents {
          href
          title
        }
      }
    }
    system {
      uid
      created_at
      updated_at
    }
  }
}

query GetLoyaltyPageRefs($locale: String!, $uid: String!) {
  loyalty_page(locale: $locale, uid: $uid) {
    blocks {
      ... on LoyaltyPageBlocksShortcuts {
        __typename
        shortcuts {
          shortcuts {
            linkConnection {
              edges {
                node {
                  __typename
                  ...AccountPageRef
                  ...ContentPageRef
                  ...LoyaltyPageRef
                }
              }
            }
          }
        }
      }
      ... on LoyaltyPageBlocksDynamicContent {
        __typename
        dynamic_content {
          link {
            pageConnection {
              edges {
                node {
                  __typename
                  ...ContentPageRef
                  ...LoyaltyPageRef
                }
              }
            }
          }
        }
      }
      ... on LoyaltyPageBlocksContent {
        __typename
        content {
          content {
            embedded_itemsConnection {
              edges {
                node {
                  # No fragments used since we want to include __typename for each type to avoid fetching SystemAsset
                  ... on ContentPage {
                    __typename
                    system {
                      ...System
                    }
                  }
                  ... on LoyaltyPage {
                    __typename
                    system {
                      ...System
                    }
                  }
                }
              }
            }
          }
        }
      }
      ... on LoyaltyPageBlocksCardsGrid {
        __typename
        cards_grid {
          cardConnection(limit: 10) {
            edges {
              node {
                ...CardBlockRef
              }
            }
          }
        }
      }
    }
    sidebar {
      ... on LoyaltyPageSidebarContent {
        __typename
        content {
          content {
            embedded_itemsConnection {
              edges {
                node {
                  # No fragments used since we want to include __typename for each type to avoid fetching SystemAsset
                  ... on ContentPage {
                    __typename
                    system {
                      ...System
                    }
                  }
                  ... on LoyaltyPage {
                    __typename
                    system {
                      ...System
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    system {
      ...System
    }
  }
}
