// Alerts
// *******************************************************************************

/* Alert icon styles */
.alert {
  --#{$prefix}alert-link-hover-color: var(--#{$prefix}primary);
  --#{$prefix}alert-hr: var(--#{$prefix}black);
  --#{$prefix}alert-icon-color: var(--#{$prefix}white);
  --#{$prefix}alert-icon-bg: var(--#{$prefix}black);
  --#{$prefix}alert-icon-shadow-color: var(--#{$prefix}primary);
  --#{$prefix}alert-icon-shadow-scale: 16%;
  --#{$prefix}alert-close-icon: var(--#{$prefix}black);
  line-height: 1.375rem;
  &[class*="alert-"] {
    hr {
      background-color: var(--#{$prefix}alert-hr);
      color: var(--#{$prefix}alert-hr);
    }
  }
  .alert-link {
    &:hover {
      color: var(--#{$prefix}alert-link-hover-color);
    }
  }
  .alert-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--#{$prefix}alert-icon-bg);
    block-size: $alert-icon-size;
    box-shadow: 0 0 0 .125rem rgba(var(--#{$prefix}alert-icon-shadow-color), .16);
    color: var(--#{$prefix}alert-icon-color);
    inline-size: $alert-icon-size;
    margin-inline-end: $spacer * .5;
  }

  &[class*="alert-solid-"] {
    --#{$prefix}alert-link-color: var(--#{$prefix}white);
    --#{$prefix}alert-link-hover-color: var(--#{$prefix}white);
    --#{$prefix}alert-hr: var(--#{$prefix}white);
    --#{$prefix}alert-icon-bg: var(--#{$prefix}white);
    --#{$prefix}alert-icon-shadow-scale: 20%;
    --#{$prefix}alert-close-icon: var(--#{$prefix}white);
    .alert-icon {
      box-shadow: 0 0 0 .125rem color-mix(in sRGB, var(--#{$prefix}white) var(--#{$prefix}alert-icon-shadow-scale), var(--#{$prefix}alert-icon-shadow-color));
    }
  }
}

/* Adjust close link position */
.alert-dismissible {
  padding-inline-end: $alert-dismissible-padding-r;
  padding-inline-start: $alert-padding-x;
  .btn-close {
    padding: 0;
    background: var(--#{$prefix}alert-close-icon);
    block-size: .8125rem;
    filter: none;
    inline-size: .8125rem;
    inset-inline: auto 0;
    margin-block: calc(#{$alert-padding-y} * 1.37);
    margin-inline: calc(#{$alert-padding-x} * .9);
    mask-image: str-replace($btn-close-bg, "#{$btn-close-color}", currentColor);
    mask-repeat: no-repeat;
    mask-size: 100% 100%;
  }
}

// scss-docs-start alert-modifiers

// Generate contextual modifier classes for colorizing the alert
@each $state in map-keys($theme-colors) {
  .alert-#{$state} {
    @if $state == "light" {
      --#{$prefix}alert-color: var(--#{$prefix}#{$state}-contrast);
      --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state}-contrast);
    } @else {
      --#{$prefix}alert-color: var(--#{$prefix}#{$state});
      --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state});
    }
    --#{$prefix}alert-icon-shadow-color: var(--#{$prefix}#{$state}-rgb);
    --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-bg-subtle);
    --#{$prefix}alert-link-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-link-hover-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-hr: var(--#{$prefix}#{$state});
    --#{$prefix}alert-icon-bg: var(--#{$prefix}#{$state});
  }
  .alert-solid-#{$state} {
    --#{$prefix}alert-icon-shadow-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-color: var(--#{$prefix}#{$state}-contrast);
    --#{$prefix}alert-bg: var(--#{$prefix}#{$state});
    --#{$prefix}alert-border-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-icon-color: var(--#{$prefix}#{$state});
  }
  .alert-outline-#{$state} {
    @if $state == "light" {
      --#{$prefix}alert-color: var(--#{$prefix}#{$state}-contrast);
      --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state}-contrast);
    }
    @else {
      --#{$prefix}alert-color: var(--#{$prefix}#{$state});
      --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state});
    }
    --#{$prefix}alert-icon-shadow-color: var(--#{$prefix}#{$state}-rgb);
    --#{$prefix}alert-link-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-link-hover-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-border-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-hr: var(--#{$prefix}#{$state});
    --#{$prefix}alert-icon-color: var(--#{$prefix}#{$state});
    --#{$prefix}alert-icon-bg: var(--#{$prefix}#{$state}-bg-subtle);
  }
}

// scss-docs-end alert-modifiers

/* Dark Theme */

@if $enable-dark-mode {
  @include color-mode(dark) {
    @each $state in map-keys($theme-colors) {
      .alert-#{$state} {
        @if $state == "dark" {
          --#{$prefix}alert-color: var(--#{$prefix}#{$state}-contrast);
          --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state}-contrast);
        }
      }
      .alert-outline-#{$state} {
        @if $state == "dark" {
          --#{$prefix}alert-color: var(--#{$prefix}#{$state}-contrast);
          --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state}-contrast);
        }
      }
    }
  }
}
