@use '../../assets/styles/fonts';
@use '../../assets/styles/mixins';

.ff-checkbox--overlay {
  @include mixins.center-content();
  cursor: pointer;
  position: relative;
  gap: 4px;

  .ff-checkbox-input {
    display: none;
  }

  .ff-checkbox-custom {
    @include mixins.box(16px, 1px solid var(--checkbox-border-color));
    box-sizing: border-box;
    border-radius: 2px;
    gap: 4px;
    position: relative;
    @include mixins.center-content;
    @include mixins.transition(border-color, background-color);
    .ff-tick-icon {
      padding: 2px !important;
    }
    &::before {
      content: '';
      width: 9px;
      height: 2px;
      background-color: var(--checkbox-partial-color);
      border-radius: 2px;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%) rotate(180deg);
      opacity: 0;
      @include mixins.transition(border-color, background-color);
    }

    &::after {
      content: '';
      @include mixins.box(16px, 4px solid var(--checkbox-hover-color));
      border-radius: 4px;
      position: absolute;
      opacity: 0;
      z-index: -1;
      @include mixins.transition(border-color, background-color);
    }
    &:hover {
      border: 1px solid var(--brand-color);
      &::after {
        opacity: 1;
      }
    }
  }
  .ff-checkbox-hover-shadow {
      border: 1px solid var(--brand-color);
      &::after {
        content: '';
        @include mixins.box(16px, 2px solid var(--checkbox-hover-box-shadow-color));
        border-radius: 4px;
        position: absolute;
        opacity: 1;
        z-index: -1;
        box-sizing: content-box;
        @include mixins.transition(border-color, background-color);
      }
     
  }
  .ff-checkbox-input:checked + .ff-checkbox-custom {
    background: var(--brand-color);
    background-color: var(--brand-color);
    border: 1px solid var(--brand-color);

    &.ff-checkbox-checked {
      &--total {
        background-color: var(--brand-color);
        border-color: var(--brand-color);
      }
      &--closed {
        background-color: var(--ff-card-passed-status-bg-color);
        border-color: var(--ff-card-passed-status-bg-color);
      }
      &--passed {
        background-color: var(--ff-card-passed-status-bg-color);
        border-color: var(--ff-card-passed-status-bg-color);
      }
      &--open {
        background-color: var(--ff-card-failed-status-bg-color);
        border-color: var(--ff-card-failed-status-bg-color);
      }
      &--failed {
        background-color: var(--ff-card-failed-status-bg-color);
        border-color: var(--ff-card-failed-status-bg-color);
      }
      &--warning {
        background-color: var(--ff-card-warning-status-bg-color);
        border-color: var(--ff-card-warning-status-bg-color);
      }
      &--skipped {
        background-color: var(--ff-card-skipped-status-bg-color);
        border-color: var(--ff-card-skipped-status-bg-color);
      }
      &--flaky {
        background-color: var(--ff-card-flaky-status-bg-color);
        border-color: var(--ff-card-flaky-status-bg-color);
      }
    }
  }

  .ff-checkbox-input:checked:hover + .ff-checkbox-custom {
    background: var(--brand-color);
    &.ff-checkbox-checked {
      &--total {
        background: var(--brand-color);
      }
      &--closed {
        background: var(--ff-card-passed-status-bg-color);
      }
      &--passed {
        background: var(--ff-card-passed-status-bg-color);
      }
      &--open {
        background: var(--ff-card-failed-status-bg-color);
      }
      &--failed {
        background: var(--ff-card-failed-status-bg-color);
      }
      &--warning {
        background: var(--ff-card-warning-status-bg-color);
      }
      &--skipped {
        background: var(--ff-card-skipped-status-bg-color);
      }
      &--flaky {
        background: var(--ff-card-flaky-status-bg-color);
      }
    }
    &::after {
      opacity: 1;
    }
  }

  .ff-checkbox-input:disabled + .ff-checkbox-custom {
    opacity: 0.5;
    cursor: not-allowed;
    border: 1px solid var(--checkbox-border-color);
    &::after {
      opacity: 0;
    }
  }
  .ff-storybook-checkbox--partial {
    background-color: var(--brand-color);
    border: none;
    &::before {
      opacity: 1;
    }

    &:hover {
      background-color: var(--brand-color);
      &::after {
        opacity: 1;
      }
    }
  }

  .ff-checkbox {
    &--total {
      border-color: var(--brand-color);
      &:hover {
        border: 1px solid var(--brand-color);
      }
    }
    &--closed {
      border-color: var(--ff-card-passed-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-passed-status-bg-color);
      }
    }
    &--passed {
      border-color: var(--ff-card-passed-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-passed-status-bg-color);
      }
    }
    &--open {
      border-color: var(--ff-card-failed-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-failed-status-bg-color);
      }
    }
    &--failed {
      border-color: var(--ff-card-failed-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-failed-status-bg-color);
      }
    }
    &--warning {
      border-color: var(--ff-card-warning-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-warning-status-bg-color);
      }
    }
    &--skipped {
      border-color: var(--ff-card-skipped-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-skipped-status-bg-color);
      }
    }
    &--flaky {
      border-color: var(--ff-card-flaky-status-bg-color);
      &:hover {
        border: 1px solid var(--ff-card-flaky-status-bg-color);
      }
    }
  }
}
