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

:root,
:host {
  --xzx-select-background: var(--xzx-color-white);
  --xzx-select-toolbar-height: 58px;
  --xzx-select-title-font-size: var(--xzx-text-md);
  --xzx-select-title-line-height: var(--xzx-text-lh-md);
  --xzx-select-action-padding: 0 var(--xzx-padding-md);
  --xzx-select-action-font-size: var(--xzx-text-sm);
  --xzx-select-confirm-action-color: var(--xzx-color-primary);
  --xzx-select-cancel-action-color: var(--xzx-text-gray-2);
  --xzx-select-option-font-size: var(--xzx-text-base);
  --xzx-select-option-padding: 0 var(--xzx-padding-base);
  --xzx-select-option-text-color: var(--xzx-text-gray-1);
  --xzx-select-option-disabled-opacity: 0.3;
  --xzx-select-loading-icon-color: var(--xzx-color-primary);
  --xzx-select-loading-mask-color: rgba(255, 255, 255, 0.9);
  --xzx-select-mask-color: linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.9),
      rgba(255, 255, 255, 0.4)
  ),
  linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4));
}

.xzx-theme-dark {
  --xzx-select-loading-mask-color: rgba(0, 0, 0, 0.6);
  --xzx-select-mask-color: linear-gradient(
      180deg,
      rgba(0, 0, 0, 0.6),
      rgba(0, 0, 0, 0.1)
  ),
  linear-gradient(0deg, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1));
}

@include b(select) {
  position: relative;
  background: var(--xzx-select-background);
  user-select: none;

  &__toolbar {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: var(--xzx-select-toolbar-height);
  }

  &__cancel,
  &__confirm {
    height: 100%;
    padding: var(--xzx-select-action-padding);
    font-size: var(--xzx-select-action-font-size);
    background-color: transparent;
    border: none;
  }

  &__confirm {
    color: var(--xzx-select-confirm-action-color);
  }

  &__cancel {
    color: var(--xzx-select-cancel-action-color);
  }

  &__title {
    position: absolute;
    left: 50%;
    color: var(--xzx-text-color);
    max-width: 50%;
    font-weight: var(--xzx-font-bold);
    font-size: var(--xzx-select-title-font-size);
    line-height: var(--xzx-select-title-line-height);
    text-align: center;
    transform: translateX(-50%);
  }

  &__active-bg {
    content: '';
    position: absolute;
    top: 50%;
    width: calc(100% - var(--xzx-padding-md) * 2);
    height: 40px;
    background-color: var(--xzx-gray-1);
    transform: translateY(-50%);
    border-radius: var(--xzx-br-base);
    pointer-events: none;
  }
  &__columns {
    position: relative;
    display: flex;
    cursor: grab;
    padding: 0 var(--xzx-padding-md);
  }

  &__loading {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--xzx-select-loading-icon-color);
    background: var(--xzx-select-loading-mask-color);
  }

  &__frame {
    position: absolute;
    top: 50%;
    right: var(--xzx-padding-md);
    left: var(--xzx-padding-md);
    z-index: 2;
    transform: translateY(-50%);
    pointer-events: none;
  }

  &__mask {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    background-image: var(--xzx-select-mask-color);
    background-repeat: no-repeat;
    background-position: top, bottom;
    // fix rendering failure during animation on safari
    transform: translateZ(0);
    pointer-events: none;
    display: flex;
    justify-content: center;
  }

  &-column {
    flex: 1;
    overflow: hidden;
    font-size: var(--xzx-select-option-font-size);

    &__wrapper {
      transition-timing-function: cubic-bezier(0.23, 1, 0.68, 1);
    }

    &__item {
      display: flex;
      align-items: center;
      justify-content: center;
      padding: var(--xzx-select-option-padding);
      color: var(--xzx-select-option-text-color);

      &--disabled {
        cursor: not-allowed;
        opacity: var(--xzx-select-option-disabled-opacity);
      }
    }
  }
}

:root,
:host {
  --xzx-select-group-background: var(--xzx-color-white);
}

@include b(picker-group) {
  background: var(--xzx-select-group-background);

  &__tabs {
    margin-top: var(--xzx-padding-base);
  }

  &__tab-title {
    margin-right: 16px;
  }
}
