@use 'mixins/mixins' as *;
@use 'mixins/var' as *;
@use 'common/var' as *;

:root,
:host {
  --xzx-stepper-background: var(--xzx-gray-1);
  --xzx-stepper-button-icon-color: var(--xzx-text-gray-1);
  --xzx-stepper-button-disabled-color: var(--xzx-gray-2);
  --xzx-stepper-button-disabled-icon-color: var(--xzx-text-gray-4);
  --xzx-stepper-button-round-theme-color: var(--xzx-color-primary);
  --xzx-stepper-input-width: 40px;
  --xzx-stepper-input-height: 24px;
  --xzx-stepper-input-font-size: var(--xzx-text-mini);
  --xzx-stepper-input-line-height: var(--xzx-text-lh-sm);;
  --xzx-stepper-input-text-color: var(--xzx-text-gray-1);
  --xzx-stepper-input-disabled-text-color: var(--xzx-text-gray-4);
  --xzx-stepper-input-disabled-background: var(--xzx-gray-2);
  --xzx-stepper-radius: var(--xzx-br-sm);
}


@include b(stepper) {
  display: inline-block;
  user-select: none;

  &__minus,
  &__plus {
    position: relative;
    box-sizing: border-box;
    width: var(--xzx-stepper-input-height);
    height: var(--xzx-stepper-input-height);
    margin: 0;
    padding: 0;
    color: var(--xzx-stepper-button-icon-color);
    vertical-align: middle;
    background: var(--xzx-stepper-background);
    border: 0;

    &::before {
      width: 35%;
      height: 1.3px;
    }

    &::after {
      width: 1.3px;
      height: 35%;
    }

    &::before,
    &::after {
      position: absolute;
      top: 50%;
      left: 50%;
      background-color: currentColor;
      transform: translate(-50%, -50%);
      content: '';
    }

    &--disabled {
      color: var(--xzx-stepper-button-disabled-icon-color);
      background-color: var(--xzx-stepper-button-disabled-color);
      cursor: not-allowed;
    }
  }

  &__minus {
    border-radius: var(--xzx-stepper-radius) 0 0 var(--xzx-stepper-radius);

    &::after {
      display: none;
    }
  }

  &__plus {
    border-radius: 0 var(--xzx-stepper-radius) var(--xzx-stepper-radius) 0;
  }

  &__input {
    box-sizing: border-box;
    width: var(--xzx-stepper-input-width);
    height: var(--xzx-stepper-input-height);
    margin: 0 4px;
    padding: 0;
    color: var(--xzx-stepper-input-text-color);
    font-size: var(--xzx-stepper-input-font-size);
    line-height: var(--xzx-stepper-input-line-height);
    text-align: center;
    vertical-align: middle;
    background: var(--xzx-stepper-background);
    border: 0;
    border-width: 1px 0;
    border-radius: 0;
    -webkit-appearance: none;

    &:disabled {
      color: var(--xzx-stepper-input-disabled-text-color);
      background-color: var(--xzx-stepper-input-disabled-background);
      // fix disabled color in iOS
      -webkit-text-fill-color: var(--xzx-stepper-input-disabled-text-color);
      opacity: 1;
    }

    &:read-only {
      cursor: default;
    }
  }

  &--round {
    .xzx-stepper__input {
      background-color: transparent;
    }

    .xzx-stepper__plus,
    .xzx-stepper__minus {
      border-radius: 100%;

      &--disabled {
        cursor: not-allowed;
      }
    }

    .xzx-stepper__plus {
      color: var(--xzx-white);
      background: var(--xzx-stepper-button-round-theme-color);
    }

    .xzx-stepper__minus {
      color: var(--xzx-stepper-button-round-theme-color);
      background-color: var(--xzx-background-2);
      border: 1px solid var(--xzx-stepper-button-round-theme-color);
    }
  }
}
