// Mixins :: States

// Dependencies
@import "pack/seed-control/mixins/control-disabled-styles";
@import "pack/seed-dash/_index";
@import "./disabled-styles";
@import "../components/button/config";

@mixin generate-button-states($config: false) {
  @each $state, $map in $seed-button-color-states {
    // Default to $map if $config is not defined
    @if not $config {
      $config: $map;
    }
    &.#{$state} {
      background-color: _get($config, background, default);
      border-color: _get($config, border, default);
      box-shadow: _get($config, box-shadow, default);
      color: _get($map, border, default);

      &:hover {
        background-color: _get($config, background, default);
        border-color: _get($config, border, default);
        box-shadow: _get($config, box-shadow, active);
        color: _get($map, border, default);
      }

      &:active {
        background-color: _get($config, background, default);
        border-color: _get($config, border, default);
        box-shadow: _get($config, box-shadow, active);
        color: _get($map, border, default);
      }

      &:focus {
        $border-color: _get($config, border, default);
        @if _get($config, border, focus) {
          $border-color: _get($config, border, focus);
        }
        background-color: _get($config, background, default);
        border-color: $border-color;
        box-shadow: _get($config, box-shadow, focus);
        color: _get($map, border, default);

        &:active {
          box-shadow: _get($config, box-shadow, active);
        }
      }
      @include disabled-styles {
        background-color: _get($config, background, default);
        border-color: _get($config, border, default);
      }
    }
  }
}
