# ===============================================
# NAVIGATION
# ===============================================

extend type Query {
  navigationTree: [NavigationTree]
  navigationConfig: NavigationConfig
}

# -----------------------------------------------
# MUTATIONS
# -----------------------------------------------

extend type Mutation {
  updateNavigationTree(
    tree: [NavigationTreeInput]!
  ): DefaultResponse
  updateNavigationConfig(
    mode: NavigationMode!
  ): DefaultResponse
}

# -----------------------------------------------
# TYPES
# -----------------------------------------------

type NavigationTree {
  locale: String
  items: [NavigationItem]
}

input NavigationTreeInput {
  locale: String!
  items: [NavigationItemInput]!
}

type NavigationItem {
  id: String
  kind: String
  label: String
  icon: String
  targetType: String
  target: String
  visibilityMode: String
  visibilityGroups: [Int]
}

input NavigationItemInput {
  id: String!
  kind: String!
  label: String
  icon: String
  targetType: String
  target: String
  visibilityMode: String
  visibilityGroups: [Int]
}

type NavigationConfig {
  mode: NavigationMode
}

enum NavigationMode {
  NONE
  TREE
  MIXED
  STATIC
}