@use 'sass:color';

@mixin create-button-variation($base-col) {
    border-color: rgba($base-col, 0.8);
    background-color: rgba($base-col, 0.05);
    color: $color-text-dim;

    &:focus, &:hover {
        border-color: $base-col;
        background-color: rgba($base-col, 0.3);
        color: $color-text;
    }

    &:disabled,&[disabled] {
        color: $color-text-inactive;
    }

    &:active {
        background-color: rgba($base-col, 0.2);
        color: color.scale($color-text, $lightness: 20%);
    }
}

.button {
    @extend %label-md;
    @extend %nav-all;
    @include create-button-variation($color-primary);
    @include trans-colors;

    display: block;
    width: auto;
    height: auto;
    // leave 1dp room for border expansion
    padding: space(24 - 1);
    border-width: $border-width-thickness;

    border-radius: $border-radius-md;

    // Setting it by default for convenience
    &--primary {
        @include create-button-variation($color-primary);
    }

    &--large {
        @extend %label-lg;
    }

    &--secondary {
        @include create-button-variation($color-secondary);
    }

    &--tertiary {
        @include create-button-variation($color-text);
    }

    &--success {
        @include create-button-variation($color-success);
    }

    &--error {
        @include create-button-variation($color-error);
    }

    &--warning {
        @include create-button-variation($color-warning);
    }

    &:not([disabled]) {
        @extend %nav-all;
        cursor: pointer;
    }

    &:disabled,&[disabled] {
        opacity: 0.5;
    }

    &__label {
        width: auto;
        height: auto;
    }
}
