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

extend type Query {
  navigationById(
    id: UUID!
  ): [NavigationItem]
}

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

extend type Mutation {
  updateNavigation(
    pageId: UUID!
    mode: NavigationMode!
    items: [NavigationItemInput!]
  ): NavigationUpdateResponse
}

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

type NavigationItem {
  id: UUID
  type: NavigationItemType
  label: String
  icon: String
  target: String
  openInNewWindow: Boolean
  visibilityGroups: [UUID]
  children: [NavigationItem]
}

input NavigationItemInput {
  id: UUID!
  type: NavigationItemType!
  label: String
  icon: String
  target: String
  openInNewWindow: Boolean
  visibilityGroups: [UUID!]!
  children: [NavigationItemInput!]
}

enum NavigationItemType {
  header
  link
  separator
}

enum NavigationMode {
  inherit
  override
  overrideExact
  hide
  hideExact
}

type NavigationUpdateResponse {
  operation: Operation
  navigationMode: NavigationMode
  navigationId: UUID
}
