@use "pix-design-tokens/typography";

$checkmark-width: 0.625rem;
$checkmark-width-with-space: $checkmark-width + 0.438rem;

@mixin checkmarkColor($borderColor) {
  input[type='checkbox']:checked + label::before {
    position: absolute;
    top: 10px;
    left: 10px;
    width: $checkmark-width;
    height: 0.3125rem;
    border: 2px solid;
    border-color: $borderColor;
    border-top: none;
    border-right: none;
    transform: rotate(-45deg);
    content: '';
  }
}

.pix-selectable-tag {
  @extend %pix-body-s;

  position: relative;
  display: inline-block;
  padding: var(--pix-spacing-1x) calc(var(--pix-spacing-2x) + #{$checkmark-width-with-space} / 2);
  color: var(--pix-neutral-900);
  letter-spacing: 0.009rem;
  text-align: center;
  background-color: var(--pix-neutral-0);
  border: var(--pix-neutral-900) solid 1px;
  border-radius: 0.95rem;
  cursor: pointer;

  input {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
    opacity: 0;
  }

  label {
    cursor: pointer;
  }

  &--checked {
    @include checkmarkColor(var(--pix-neutral-800));

    // stylelint-disable-next-line no-duplicate-selectors
    & {
      padding: var(--pix-spacing-1x) var(--pix-spacing-2x);
      background-color: var(--pix-neutral-20);
    }

    &:hover {
      @include checkmarkColor(var(--pix-neutral-900));

      // stylelint-disable-next-line no-duplicate-selectors
      & {
        color: var(--pix-neutral-900);
        background-color: var(--pix-neutral-20);
        border: var(--pix-neutral-500) solid 1px;
      }
    }

    & label {
      padding-left: $checkmark-width-with-space;
    }
  }

  &:focus-within {
    @include checkmarkColor(var(--pix-neutral-0));

    // stylelint-disable-next-line no-duplicate-selectors
    & {
      color: var(--pix-neutral-0);
      background-color: var(--pix-neutral-900);
      border-color: var(--pix-neutral-0);
      outline: none;
      box-shadow: 0 0 0 1px var(--pix-neutral-900);
    }

    &:hover {
      @include checkmarkColor(var(--pix-neutral-900));

      // stylelint-disable-next-line no-duplicate-selectors
      & {
        color: var(--pix-neutral-900);
        background-color: var(--pix-neutral-20);
        border: var(--pix-neutral-500) solid 1px;
      }
    }

    &:active {
      background-color: var(--pix-neutral-100);
    }
  }
}
