// Opacity variables are included to prevent breaks in downstream
// components. However they need to be removed prior to 8.0 and
// all components that use them must be updated.

// This file uses RGBA literal values responsibly
// This file uses off-pattern indentation to be more readable

// sass-lint:disable no-color-literals, no-color-keywords, indentation, quotes

@mixin euiSlightShadow($color: $euiShadowColor, $opacity: 0) {
  box-shadow:
    0 .8px .8px rgba($color, shadowOpacity(.04)),
    0 2.3px 2px rgba($color, shadowOpacity(.03));
}

@mixin euiBottomShadowSmall($color: $euiShadowColor, $opacity: 0) {
  box-shadow:
    0 .7px 1.4px rgba($color, shadowOpacity(.07)),
    0 1.9px 4px rgba($color, shadowOpacity(.05)),
    0 4.5px 10px rgba($color, shadowOpacity(.05)),
    0 15px 32px rgba($color, shadowOpacity(.04));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowSmall() will be depricated in a future version of EUI.';
  }
}

@mixin euiBottomShadowMedium($color: $euiShadowColor, $opacity: 0) {
  box-shadow:
    0 .9px 4px -1px rgba($color, shadowOpacity(.08)),
    0 2.6px 8px -1px rgba($color, shadowOpacity(.06)),
    0 5.7px 12px -1px rgba($color, shadowOpacity(.05)),
    0 15px 15px -1px rgba($color, shadowOpacity(.04));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowMedium() will be depricated in a future version of EUI.';
  }
}

// Similar to shadow medium but without the bottom depth. Useful for popovers
// that drop UP rather than DOWN.
@mixin euiBottomShadowFlat($color: $euiShadowColor, $opacity: 0) {
  box-shadow:
    0 0 .8px rgba($color, shadowOpacity(.06)),
    0 0 2px rgba($color, shadowOpacity(.04)),
    0 0 5px rgba($color, shadowOpacity(.04)),
    0 0 17px rgba($color, shadowOpacity(.03));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowFlat() will be depricated in a future version of EUI.';
  }
}

// adjustBorder allows the border color to match the drop shadow better so that there's better
// distinction between element bounds and the shadow (crisper borders)
@mixin euiBottomShadow(
  $color: $euiShadowColorLarge,
  $opacity: 0,
  $adjustBorders: false  // Deprecated in Amsterdam but left for BWC
) {
  box-shadow:
    0 1px 5px rgba($color, shadowOpacity(.1)),
    0 3.6px 13px rgba($color, shadowOpacity(.07)),
    0 8.4px 23px rgba($color, shadowOpacity(.06)),
    0 23px 35px rgba($color, shadowOpacity(.05));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadow() will be depricated in a future version of EUI.';
  }
}

@mixin euiBottomShadowLarge(
  $color: $euiShadowColorLarge,
  $opacity: 0,
  $adjustBorders: false, // Deprecated in Amsterdam but left for BWC
  $reverse: false
) {
  @if ($reverse) {
    box-shadow:
      0 2.7px -9px rgba($color, shadowOpacity(.13)),
      0 9.4px -24px rgba($color, shadowOpacity(.09)),
      0 21.8px -43px rgba($color, shadowOpacity(.08));
  } @else {
    box-shadow:
      0 2.7px 9px rgba($color, shadowOpacity(.13)),
      0 9.4px 24px rgba($color, shadowOpacity(.09)),
      0 21.8px 43px rgba($color, shadowOpacity(.08));
  }

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowLarge() will be depricated in a future version of EUI.';
  }
}

@mixin euiSlightShadowHover($color: $euiShadowColor, $opacity: 0) {
  box-shadow:
    0 1px 5px rgba($color, shadowOpacity(.1)),
    0 3.6px 13px rgba($color, shadowOpacity(.07)),
    0 8.4px 23px rgba($color, shadowOpacity(.06)),
    0 23px 35px rgba($color, shadowOpacity(.05));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiSlightShadowHover() will be depricated in a future version of EUI.';
  }
}
