// @see https://github.com/twbs/bootstrap/blob/main/scss/_functions.scss
@function material-icons-str-replace($string, $search, $replace: '') {
  $index: str-index($string, $search);
  @if $index {
    @return str-slice($string, 1, $index - 1) + $replace +
      material-icons-str-replace(
        str-slice($string, $index + str-length($search)),
        $search,
        $replace
      );
  }
  @return $string;
}

@mixin material-icons-font-class($font-family) {
  font-family: $font-family;
  font-weight: normal;
  font-style: normal;
  font-size: $material-icons-font-size;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-smoothing: antialiased; // Support for all WebKit browsers
  -moz-osx-font-smoothing: grayscale; // Support for Firefox
  text-rendering: optimizeLegibility; // Support for Safari and Chrome
  font-feature-settings: 'liga'; // Support for IE
}

@mixin material-icons-font($font-family) {
  $class-name: to-lower-case($font-family);
  $class-name: material-icons-str-replace($class-name, ' ', '-');
  $font-file: $material-icons-font-path + $class-name;

  @font-face {
    font-family: $font-family;
    font-style: normal;
    font-weight: 400;
    font-display: $material-icons-font-display;
    src: url('#{$font-file}.woff2') format('woff2'),
      url('#{$font-file}.woff') format('woff');
  }

  .#{$class-name} {
    @include material-icons-font-class($font-family);
  }
}

@mixin material-icons() {
  // @warn "material-icons() Sass mixin has been deprecated as of 1.0. Use '@extend .material-icons;' instead of '@include material-icons();'.";
  @include material-icons-font-class('Material Icons');
}
