docs/_sass/common/classes/_clickable.scss
@mixin clickable($clr, $bg-clr, $hover-clr: default, $hover-bg-clr: default, $active-clr: default, $active-bg-clr: default, $focus-clr: default, $focus-bg-clr: default, $theme: default, $ignore-path: default) {

  @if $theme == default {
    @if $bg-clr == null and $hover-bg-clr == null {
      @if $hover-clr == default {
        $theme: get-color-theme($clr);
      } @else {
        $theme: get-color-theme($hover-clr);
      }
    } @else {
      @if $hover-bg-clr == default {
        $theme: get-color-theme($bg-clr);
      } @else {
        $theme: get-color-theme($hover-bg-clr);
      }
    }
  }

  @if $ignore-path == default {
    $ignore-path: false;
  } @else {
    $ignore-path: true;
  }

  @include transition(map-get($clickable, transition));
  @if $ignore-path == false {
    svg {
      path {
        @include transition(map-get($clickable, transition));
      }
    }
  }

  // hover
  @if $hover-clr == default {
    @if $hover-bg-clr == null {
      @if $theme == "light" {
        $hover-clr: darken($clr, 14%);
      }
      @if $theme == "dark" {
        $hover-clr: lighten($clr, 18%);
      }
    } @else if $hover-bg-clr == default {
      $hover-clr: $clr;
    }
  }

  @if $hover-bg-clr == default {
    @if $theme == "light" {
      $hover-bg-clr: darken($bg-clr, 14%);
    }
    @if $theme == "dark" {
      $hover-bg-clr: lighten($bg-clr, 18%);
    }
  }

  // active
  @if $active-clr == default {
    @if $active-bg-clr == null {
      @if $theme == "light" {
        $active-clr: darken($hover-clr, 15%);
      }
      @if $theme == "dark" {
        $active-clr: lighten($hover-clr, 16%);
      }
    } @else if $active-bg-clr == default {
      $active-clr: $hover-clr;
    }
  }

  @if $active-bg-clr == default {
    @if $theme == "light" {
      $active-bg-clr: darken($hover-bg-clr, 15%);
    }
    @if $theme == "dark" {
      $active-bg-clr: lighten($hover-bg-clr, 16%);
    }
  }

  // focus
  @if $focus-clr == default {
    @if $focus-bg-clr == null {
      $focus-clr: $hover-clr;
    } @else if $hover-bg-clr == default {
      $focus-clr: $hover-clr;
    }
  }

  @if $focus-bg-clr == default {
    $focus-bg-clr: $hover-bg-clr;
  }

  @include plain() {
    color: $clr;
    @if $bg-clr {
      background-color: $bg-clr;
    }
    @if $ignore-path == false {
      svg path {
        fill: $clr;
      }
    }
  }
  @include hover() {
    color: $hover-clr;
    @if $hover-bg-clr {
      background-color: $hover-bg-clr;
    }
    @if $ignore-path == false {
      svg path {
        fill: $hover-clr;
      }
    }
  }
  @include active() {
    color: $active-clr;
    @if $active-bg-clr {
      background-color: $active-bg-clr;
    }
    @if $ignore-path == false {
      svg path {
        fill: $active-clr;
      }
    }
  }
  @include focus() {
    color: $focus-clr;
    @if $focus-bg-clr{
      background-color: $focus-bg-clr;
      box-shadow: 0 0 0 2px rgba($focus-bg-clr, .4);
    }
    @if $ignore-path == false {
      svg path {
        fill: $focus-clr;
      }
    }
  }
  @include disabled() {
    @if $theme == "light" {
      color: rgba($clr, .2) !important;
    }
    @if $theme == "dark" {
      color: rgba($clr, .4) !important;
    }
    @if $bg-clr {
      background-color: $bg-clr !important;
    }
    @if $ignore-path == false {
      svg path {
        @if $theme == "light" {
          fill: rgba($clr, .2) !important;
        }
        @if $theme == "dark" {
          fill: rgba($clr, .4) !important;
        }
      }
    }
  }
}
