.btn {
    --bs-btn-font-size: 14px;
    --bs-btn-font-weight: #{$font-medium};
    --bs-btn-line-height: 20px;
    --bs-btn-padding-x: 16px;
    --bs-btn-padding-y: 6px;
    --bs-btn-border-radius: #{$radius-default};
    --bs-btn-box-shadow: none;
    --bs-btn-focus-box-shadow: none;
    --bs-btn-disabled-opacity: 0.6;

    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-primary {
    --bs-btn-color: #{$color-white};
    --bs-btn-hover-color: #{$color-white};
    --bs-btn-active-color: #{$color-white};
    --bs-btn-bg: #{$color-primary-500};
    --bs-btn-hover-bg: #{$color-primary-600};
    --bs-btn-active-bg: #{$color-primary-600};
    --bs-btn-border-color: #{$color-primary-500};
    --bs-btn-hover-border-color: #{$color-primary-600};
    --bs-btn-active-border-color: #{$color-primary-600};
    --bs-btn-disabled-bg: #{$color-primary-600};
    --bs-btn-disabled-border-color: #{$color-primary-600};
}

.btn-light {
    --bs-btn-color: #{$color-gray-500};
    --bs-btn-hover-color: #{$color-primary-600};
    --bs-btn-active-color: #{$color-primary-600};
    --bs-btn-bg: #{$color-white};
    --bs-btn-hover-bg: #{$color-white};
    --bs-btn-active-bg: #{$color-white};
    --bs-btn-border-color: #{$color-gray-300};
    --bs-btn-hover-border-color: #{$color-primary-500};
    --bs-btn-active-border-color: #{$color-primary-500};
    --bs-btn-disabled-color: #{$color-gray-500};
    --bs-btn-disabled-bg: #{$color-gray-100};
    --bs-btn-disabled-border-color: #{$color-gray-100};
}

.btn-close {
    --bs-btn-close-color: #{$color-slate-900};

    &:focus {
        box-shadow: none;
    }
}

.btn-loading {
    --bs-btn-color: transparent;
    --bs-btn-hover-color: transparent;
    --bs-btn-active-color: transparent;
    --bs-btn-disabled-color: transparent;

    &:before,
    &:after {
        position: absolute;
        content: "";
        left: 50%;
        top: 50%;
        height: 18px;
        width: 18px;
        border-radius: $radius-full;
        animation: button-spin-loader 800ms linear infinite;
    }

    &:before {
        border: 1px solid transparent;
        border-top-color: $color-white;
    }

    &:after {
        border: 1px solid rgba($color-white, 0.25);
    }
}

@keyframes button-spin-loader {
    0% {
        transform: translate(-50%, -50%) rotate(0deg);
    }

    100% {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}
