@use "../../wc";
@use "../../../scss/shared/form-elements";

:host {
  display: block;
  container-type: inline-size;
  width: 100%;
}

.ai {
  display: flex;
  width: 100%;
  flex-direction: row;
  gap: 10px;

  &:not(.ai--editing) {
    .ai__input::part(base), .ai__input::part(combobox) {
      background-color: transparent;
      border-color: transparent;
      box-shadow: none;
      opacity: 1;
      cursor: initial;
    }

    .ai__input::part(input) {
      line-height: var(--zn-line-height-looser);
    }

    .ai__input::part(display-input) {
      color: rgb(var(--zn-text));
    }

    .ai__input::part(input), .ai__input::part(combobox) {
      padding: 0;
      color: rgb(var(--zn-text));
      text-decoration: underline;
      text-decoration-style: dashed;
      text-decoration-color: rgb(var(--zn-primary), 0.5);
      text-underline-offset: 3px;
    }

    .ai__input::part(expand-icon) {
      display: none;
    }

    .ai__input::part(form-control-help-text) {
      display: none;
    }

    &:hover .button--edit {
      display: inline-block;
    }
  }

  &__input::part(form-control-input) {
    margin: 0;
  }

  &__input {
    height: unset;
    opacity: 1;

    // Force left alignment for RTL text inputs
    &[dir="rtl"]::part(input),
    &[dir="rtl"]::part(textarea),
    &[dir="rtl"]::part(combobox) {
      text-align: left;
    }
  }

  // Hide webkit spin buttons for number inputs when not editing
  &:not(.ai--editing) {
    .ai__input::part(input)::-webkit-inner-spin-button,
    .ai__input::part(input)::-webkit-outer-spin-button {
      -webkit-appearance: none;
      margin: 0;
    }
  }

  &--padded {
    padding: var(--zn-spacing-large);
  }

  &--inline {
    display: flex;
    flex-direction: row;
    align-items: start;
    gap: 5px;

    @include wc.container-query(smp) {
      align-items: center;
    }

    .ai__input {
      width: 100%;
    }

    .ai__left {
      width: 100%;
      display: flex;
      flex-direction: row;
      justify-content: flex-end;

      @include wc.container-query(null, smp) {
        justify-content: flex-start;
        flex-direction: column;
      }
    }
  }

  &--editing {
    .ai__right {
      display: flex !important;
    }
  }

  &__left {
    display: flex;
    flex-direction: column;
    gap: 5px;
    width: 100%;
  }

  &:not(.ai--disabled) {
    .ai__left {
      cursor: pointer;
    }
  }

  &__description {
    font-size: 12px;
    font-weight: 500;
    line-height: 18px;
    color: rgb(var(--zn-text));
  }

  &__right {
    font-size: 12px;
    color: rgb(var(--zn-primary));
    font-weight: 500;
    cursor: pointer;
    flex-direction: row;
    gap: 10px;
    align-items: center;
    justify-content: flex-end;

    .button--edit {
      display: none;
    }
  }

  &--disabled:not(.ai--editing) {
    .ai__input::part(input), .ai__input::part(combobox) {
      text-decoration: none;
      caret-color: transparent;
      border-radius: 0;
    }

    .ai__input::part(display-input) {
      cursor: text;
    }

    .ai__right {
      display: none !important;
    }
  }
}

zn-textarea::part(textarea) {
  resize: none;
}

.ai:not(.ai--editing) {
  zn-textarea::part(textarea) {
    box-shadow: none;
    padding-left: 0;
    padding-right: 0;
    min-height: 35px;
  }
}

