@use 'mixins/mixins' as *;
@use 'mixins/var' as *;
@use 'common/var' as *;
@use 'common/hairline.scss' as *;

:root,
:host {
  --xzx-cell-font-size: var(--xzx-text-base);
  --xzx-cell-line-height: 24px;
  --xzx-cell-vertical-padding: var(--xzx-padding-md);
  --xzx-cell-horizontal-padding: var(--xzx-padding-md);
  --xzx-cell-text-color: var(--xzx-text-color);
  --xzx-cell-background: var(--xzx-color-white);
  --xzx-cell-border-color: var(--xzx-border-color);
  --xzx-cell-active-color: var(--xzx-gray-1);
  --xzx-cell-required-color: var(--xzx-color-danger);
  --xzx-cell-label-color: var(--xzx-text-gray-2);
  --xzx-cell-label-font-size: var(--xzx-text-sm);
  --xzx-cell-label-line-height: var(--xzx-text-lh-sm);
  --xzx-cell-label-margin-top: var(--xzx-padding-base);
  --xzx-cell-value-color: var(--xzx-text-gray-3);
  --xzx-cell-value-font-size: inherit;
  --xzx-cell-icon-size: 16px;
  --xzx-cell-right-icon-color: var(--xzx-gray-6);
  --xzx-cell-large-vertical-padding: var(--xzx-padding-sm);
  --xzx-cell-large-title-font-size: var(--xzx-text-lg);
  --xzx-cell-large-label-font-size: var(--xzx-text-md);
  --xzx-cell-large-value-font-size: inherit;
  --xzx-cell-disabled-text-color: var(--xzx-text-color-4);
}

@include b(cell) {
  position: relative;
  display: flex;
  box-sizing: border-box;
  width: 100%;
  padding: var(--xzx-cell-vertical-padding) var(--xzx-cell-horizontal-padding);
  overflow: hidden;
  color: var(--xzx-cell-text-color);
  font-size: var(--xzx-cell-font-size);
  line-height: var(--xzx-cell-line-height);
  background: var(--xzx-cell-background);
  &::after {
    @include hairline-bottom(var(--xzx-cell-border-color), var(--xzx-padding-md), var(--xzx-padding-md))
  }

  &:last-child::after,
  &--borderless::after {
    display: none;
  }


  &__label {
    margin-top: var(--xzx-cell-label-margin-top);
    color: var(--xzx-cell-label-color);
    font-size: var(--xzx-cell-label-font-size);
    line-height: var(--xzx-cell-label-line-height);
  }

  &__title,
  &__value {
    flex: 1;
  }

  &__value {
    position: relative;
    overflow: hidden;
    color: var(--xzx-cell-value-color);
    font-size: var(--xzx-cell-value-font-size);
    text-align: right;
    vertical-align: middle;
    word-wrap: break-word;
  }

  &__left-icon,
  &__right-icon {
    height: var(--xzx-cell-line-height);
    font-size: var(--xzx-cell-icon-size);
    line-height: var(--xzx-cell-line-height);
  }

  &__left-icon {
    margin-right: var(--xzx-padding-base);
  }

  &__right-icon {
    margin-left: var(--xzx-padding-base);
    color: var(--xzx-cell-right-icon-color);
  }

  &--clickable {
    cursor: pointer;

    &:active {
      background-color: var(--xzx-cell-active-color);
    }
  }

  @include m(disabled) {
    cursor: not-allowed;

    .xzx-cell__left-icon,
    .xzx-cell__right-icon,
    .xzx-cell__title,
    .xzx-cell__label,
    .xzx-cell__value, {
      color: var(--xzx-cell-disabled-text-color);
    }
    &:active {
      background-color: transparent;
    }
  }

  &--required {
    overflow: visible;

    &::before {
      position: absolute;
      left: var(--xzx-padding-xs);
      color: var(--xzx-cell-required-color);
      font-size: var(--xzx-cell-font-size);
      content: '*';
    }
  }

  &--center {
    align-items: center;
  }

  &--large {
    padding-top: var(--xzx-cell-large-vertical-padding);
    padding-bottom: var(--xzx-cell-large-vertical-padding);

    .xzx-cell__title {
      font-size: var(--xzx-cell-large-title-font-size);
    }

    .xzx-cell__label {
      font-size: var(--xzx-cell-large-label-font-size);
    }

    .xzx-cell__value {
      font-size: var(--xzx-cell-large-value-font-size);
    }
  }
}

:root,
:host {
  --xzx-cell-group-background: var(--xzx-color-white);
  --xzx-cell-group-title-color: var(--xzx-text-gray-2);
  --xzx-cell-group-title-padding: var(--xzx-padding-md) var(--xzx-padding-md);
  --xzx-cell-group-title-font-size: var(--xzx-text-md);
  --xzx-cell-group-title-line-height: 16px;
  --xzx-cell-group-inset-padding: 0 var(--xzx-padding-md);
  --xzx-cell-group-inset-radius: var(--xzx-br-base);
  --xzx-cell-group-inset-title-padding: var(--xzx-padding-md) var(--xzx-padding-md);
}

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

  &--inset {
    margin: var(--xzx-cell-group-inset-padding);
    border-radius: var(--xzx-cell-group-inset-radius);
    overflow: hidden;
  }

  &__title {
    padding: var(--xzx-cell-group-title-padding);
    color: var(--xzx-cell-group-title-color);
    font-size: var(--xzx-cell-group-title-font-size);
    line-height: var(--xzx-cell-group-title-line-height);

    &--inset {
      padding: var(--xzx-cell-group-inset-title-padding);
    }
  }
}

