@use '../../helpers';
@use '../../internal';
@use '../../mixins';

@mixin Radio() {
  @include internal.IndicatorContainer();

  @if not mixins.includes('Radio') {
    @include _Radio();
  }
}

@mixin _Radio() {
  .ods-radio {
    &,
    + .ods-input-indicator::after,
    + .ods-input-indicator::before {
      border-radius: helpers.border-radius('full');
    }

    // "dot" for [checked] indication
    + .ods-input-indicator::after {
      background-color: helpers.color('content-action');
      transform: scale(0);
      transition: transform var(--ods-transition-duration) ease-out;
    }
  }

  // indicating [checked] input
  .ods-radio:checked + .ods-input-indicator::after {
    transform: scale(0.6);
  }

  // indicating invalid input
  .ods-radio.-invalid,
  .ods-radio.-touched:invalid {
    + .ods-input-indicator::after {
      background-color: helpers.color('content-negative');
    }
  }

  // indicating [disabled] input
  .ods-radio:disabled + .ods-input-indicator {
    &::after {
      background-color: helpers.color('content-disabled');
    }

    &::before {
      background-color: helpers.color('background-disabled');
    }
  }
}
