@use "../../wc";

:host {
  display: block;
}

.navbar__container {
  display: flex;
  flex-direction: row;
  position: relative;
  justify-content: space-between;
}

.navbar {
  margin: 0;
  padding-left: var(--zn-spacing-medium);

  &--flush {
    padding: 0;
  }
}

ul.navbar {
  li {
    padding-top: 0;
    font-size: var(--zn-font-size-medium);
    white-space: nowrap;

    a {
      text-decoration: none;
      color: inherit;
    }
  }
}

:host([baseless]) {
  .navbar__container {
    border-bottom: none;
  }
}

:host([stacked]) {
  width: unset;
  height: 100%;
  margin: 0 0;

  .navbar__container {
    border-bottom: none;
    height: 100%;
  }

  ul.navbar.navbar--no-pad li {
    padding: 0 !important;
  }

  ul.navbar {
    padding: 0;
    flex-direction: column;
    gap: 0;

    li {
      border-bottom: 1px solid rgb(var(--zn-border-color));
      padding: var(--zn-spacing-medium);

      &.active:before, &.zn-tb-active:before {
        display: none;
      }

      &.zn-tb-active {
        background-color: rgb(var(--zn-panel));
      }

      &:hover:before {
        left: 0;
        right: 0;
      }
    }

    &--slim {
      li {
        padding: var(--zn-spacing-small);
      }
    }

  }
}

:host([stacked][slot="left"]) {
  ul.navbar {
    &--border {
      border-right: 1px solid rgb(var(--zn-border-color));
    }

    //margin-right: var(--zn-spacing-medium);
  }
}

:host([stacked][slot="right"]) {
  ul.navbar {
    &--border {
      border-left: 1px solid rgb(var(--zn-border-color));
    }

    //  margin-left: var(--zn-spacing-medium);
  }
}

:host([panel]) {
  background: rgb(var(--zn-panel));
}

:host([icon-bar]) {

  ul.navbar {
    display: flex;
    flex-direction: row;
    gap: 5px;
    padding: 5px;
    border-radius: 10px;
    margin: 0;
    background: rgb(var(--zn-panel));
    border: 1px solid rgb(var(--zn-border-color));
    flex-basis: 100%;
    min-height: 50px;

    li {
      flex-direction: column;
      border-radius: 6px;
      flex-basis: 100%;
      padding: 5px 10px;

      &:before {
        display: none !important;
      }

      &.active, &.zn-tb-active {
        background: rgba(0, 0, 0, 0.03);
        color: rgb(var(--zn-primary));
      }

      &:hover {
        color: rgb(var(--zn-primary));
      }
    }
  }


  .navbar__container {
    border-bottom: 0;
  }

}

.navbar__container--stacked.navbar__container--icon-bar {
  display: inline;
}

ul.navbar.navbar--stacked.navbar--icon-bar {
  flex-direction: column;
  padding: 0;
  gap: 0;

  li {
    border-radius: 0;
    align-items: flex-start;
    padding: 8px;
  }
}


:host(:not([stacked]):not([icon-bar])) {
  ul.navbar {
    height: 35px;
    align-self: end;
  }
}

:host([pad]) {
  ul.navbar {
    padding: var(--zn-spacing-medium) var(--zn-spacing-medium) 0;
  }
}

:host {
  display: block;
  width: 100%;

  .navbar__container {
    border-bottom: 1px solid rgb(var(--zn-border-color));
  }

  ul.navbar {
    display: flex;
    flex-basis: fit-content;
    gap: 30px;
    list-style: none;

    li.more {
      display: none;
    }

    &.has-hidden {
      li.more {
        display: flex;
      }
    }

    li {
      &.hidden {
        visibility: hidden;
        position: absolute;
        pointer-events: none;
      }

      .closer {
        display: none;
      }

      user-select: none;
      font-weight: 500;
      padding: 0 0 var(--zn-spacing-small);
      position: relative;

      display: flex;
      align-items: center;
      justify-content: center;
      gap: 3px;

      cursor: pointer;

      zn-icon, zn-tooltip {
        pointer-events: none;
      }

      &#dropdown-item {
        flex-grow: 1;
        justify-content: flex-start;
        padding: 0;

        zn-dropdown {
          height: 100%;

          zn-button {
            height: 100%;
          }
        }
      }

      &::before {
        content: '';
        left: 50%;
        right: 50%;
        bottom: 0;
        position: absolute;
        background-color: rgb(var(--zn-primary));
        transition: all 300ms ease-in-out;
        height: 2px;
      }

      &:hover:before:not(#dropdown-item) {
        // TODO Hover Before colors
        left: -2px;
        right: -2px;
      }

      &.active, &.zn-tb-active {
        color: rgb(var(--zn-primary));
        font-weight: var(--zn-font-weight-semibold);
      }

      &.active::before, &.zn-tb-active::before {
        left: calc(var(--zn-spacing-medium) * -1);
        right: calc(var(--zn-spacing-medium) * -1);
      }
    }


    li[closable] {

      .closer {
        display: block;
        margin-left: 10px;
        pointer-events: all;
        opacity: 0.8;

        &:hover {
          opacity: 1;
        }
      }
    }

  }
}

:host([small]) {
  width: unset;

  ul.navbar {
    padding: 0;
    gap: 0;
    border-radius: 5px;

    li {
      border-left: 1px solid rgb(var(--zn-border-color));
      border-radius: 0;
    }

    li:first-of-type {
      border-left: none;
    }
  }
}

button[popovertarget] {
  display: flex;
  justify-content: center;
  align-items: center;
}

:host([highlight]) {
  margin: 0 0;

  .navbar__container {
    border-bottom-width: 1px;
    border-bottom-style: solid;
    border-bottom-color: rgb(var(--zn-border-color));
    height: 35px;
  }

  &:host([dropdown]) li {
    border-bottom: 0;
  }

  ul.navbar {
    gap: 0;
    overflow: initial;

    li {
      padding-left: var(--zn-spacing-medium);
      padding-right: var(--zn-spacing-medium);
      padding-top: var(--zn-spacing-small);
      position: relative;

      &:hover::before,
      &::before:not(.active):not(#dropdown-item) {
        display: none;
      }

      &.active {
        border-right: 1px solid rgb(var(--zn-border-color));

        &::after {
          content: '';
          position: absolute;
          left: 0;
          right: 0;
          bottom: -1px;
          height: 1px;
          background-color: rgb(var(--zn-panel));
        }
      }
    }
  }

  .active {
    background-color: rgb(var(--zn-panel));
  }
}

:host([dropdown]) {
  ul.navbar {
    li {
      border-bottom: 1px solid rgb(var(--zn-border-color));
      border-right: 1px solid rgb(var(--zn-border-color));
      border-right: 1px solid rgb(var(--zn-border-color));
      border-left: 0;

      &.active {
        border-bottom: 0;
      }

      &:before {
        display: none;
      }

      &#dropdown-item {
        border-right: 0;
      }
    }
  }
}

.expandables {
  flex-grow: 0;
  flex-shrink: 1;
  margin: 0 var(--zn-spacing-medium);
  display: flex;
  align-items: center;
  width: fit-content;
  height: 100%;
  gap: var(--zn-spacing-2x-small);
}

.expandables:empty {
  display: none;
}


:host {
  ul.navbar {
    li.more {
      zn-button::part(base) {
        padding-left: 0;
        padding-right: 0;

        &:hover {
          background-color: transparent;
        }
      }

      ul#extended-menu {
        box-shadow: var(--zn-shadow-medium);
        background: rgb(var(--zn-border-color));
        display: flex;
        flex-direction: column;
        gap: 1px;
        height: auto;
        width: fit-content;
        margin: 0;
        padding: 1px;

        li {
          justify-content: left;
          background: rgb(var(--zn-panel));
          color: rgb(var(--zn-text));
          padding: var(--zn-spacing-small);

          &.active::before, &.zn-tb-active::before {
            left: 0;
            right: 0;
          }
        }
      }
    }
  }
}
