@use "../base/mixins";
@use "../vars/variables";

.browse-element {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
  padding: 0 0.75rem 0;

  &__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1.25rem;
    margin-top: 1.25rem;
    @include mixins.body-large;
    color: var(--uc-text-text-secondary);

    &__content {
      display: flex;
      justify-content: flex-start;
      gap: 0.625rem;
      align-items: center;

      .selected-icon {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 3.125rem;
        height: 2.125rem;

        i {
          font-size: 1.875rem;
        }
      }
    }
  }

  &__item {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    border-radius: 0.5rem;
    gap: 0.625rem;
    padding: 0.375rem;
    cursor: pointer;
    transition: all 0.2s;

    &__base {
      @include mixins.body-large;
      display: flex;
      flex-direction: column;
      justify-content: center;
      color: var(--uc-text-text-primary);
      max-width: calc(100% - 2.875rem);
      flex: 1;
      min-height: 2.625rem;
    }

    &__title {
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
      text-overflow: ellipsis;

      &--one-row {
        -webkit-line-clamp: 1;
      }
    }

    &__additional-text {
      display: -webkit-box;
      -webkit-line-clamp: 1;
      -webkit-box-orient: vertical;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    img {
      width: 2.5rem;
      height: 2.5rem;
      border-radius: 0.4rem;
    }

    &__icon {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 2.5rem;
      height: 2.5rem;

      i {
        font-size: 1.35rem;
        color: var(--uc-text-text-secondary);
      }
    }

    &__arrow {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 1.875rem;
      opacity: 0;
      transition: opacity 0.2s;
      margin-left: auto;
      margin-right: 0;

      i {
        font-size: 1.125rem;
        color: var(--uc-background);
      }
    }

    &__add {
      display: none;
      margin-left: auto;
      margin-right: 0;

      @media (pointer: coarse) {
        display: flex;
      }

      @media (pointer: fine) {
        &:hover {
          background-color: var(--uc-theme-color-70);
          border-color: var(--uc-theme-color-70);
        }
      }
    }

    &--no-browse {
      cursor: default;
    }

    &__entity-name,
    &__additional-text {
      @include mixins.secondary-body-extrasmall;
      color: var(--uc-text-text-secondary);
    }

    &__entity-name {
      display: flex;
    }

    @media (pointer: fine) {
      &:hover {
        .browse-element__item__add {
          display: flex;
        }
      }

      &:hover:not(.browse-element__item--no-browse) {
        background-color: var(--uc-foreground);
        transition: all 0.2s;

        .browse-element__item__base {
          color: var(--uc-background);
        }

        .browse-element__item,
        .command-select__item {
          &__icon {
            i {
              color: var(--uc-theme-color-40);
            }
          }

          &__entity-name,
          &__additional-text {
            color: var(--uc-theme-color-40);
          }

          &__arrow {
            opacity: 1;
          }

          &__add {
            display: flex;
          }
        }
      }
    }
  }

  &__no-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    margin: auto;
    gap: 0.25rem;

    &__title {
      @include mixins.body-large;
      color: var(--uc-text-text-primary);
    }

    &__instruction {
      @include mixins.body-extrasmall;
      color: var(--uc-text-text-secondary);
    }
  }

  div.list-with-filter {
    overflow: hidden;
    gap: 0.75rem;
    padding-top: 0.75rem;

    &__form {
      padding-top: 0;
      margin-bottom: 0;
    }

    &__items {
      flex-direction: column;
      width: 100%;
      overflow-x: hidden;
      overflow-y: auto;
      @include mixins.scrollbar;
    }
  }

  &--extended {
    padding: 0;

    .list-with-filter {
      &__form {
        padding-top: 1.375rem;
        margin-bottom: 0;
      }
    }

    .browse-element,
    .command-select {
      &__item {
        background-color: var(--uc-bg-bg-surface-1);
        margin-bottom: 0.625rem;

        @media (pointer: fine) {
          &:hover:not(.browse-element__item--no-browse) {
            background-color: var(--uc-foreground);
            transition: all 0.2s;
          }
        }
      }
    }

    &--filtered-entity {
      .browse-element__item,
      .command-select__item {
        padding: 0.5rem 0.75rem;

        .selected-icon,
        &__entity-name,
        &__additional-text {
          display: none;
        }
      }
    }
  }

  &--empty-list {
    .list-with-filter {
      &__form {
        padding-top: 0.25rem;
        margin: 0;
      }
    }
  }
}
