@use 'sass:map';

// Shared styling of article images shown as background
@mixin image-as-background {
  background-color: var(--newtab-element-secondary-color);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  border-radius: var(--border-radius-small);
  box-shadow: $shadow-image-inset;
}

// Note: lineHeight and fontSize should be unitless but can be derived from pixel values
// Bug 1550624 to clean up / remove this mixin to avoid duplicate styles
@mixin limit-visible-lines($line-count, $line-height, $font-size) {
  font-size: $font-size;
  -webkit-line-clamp: $line-count;
  line-height: $line-height;
}

@mixin dark-theme-only {
  [lwt-newtab-brighttext] & {
    @content;
  }
}

@mixin ds-border-top {
  @content;

  @include dark-theme-only {
    border-top: 1px solid $grey-60;
  }

  border-top: 1px solid $grey-30;
}

@mixin ds-border-bottom {
  @content;

  @include dark-theme-only {
    border-bottom: 1px solid $grey-60;
  }

  border-bottom: 1px solid $grey-30;
}

@mixin ds-fade-in($halo-color: $blue-50-30) {
  box-shadow: 0 0 0 5px $halo-color;
  transition: box-shadow 150ms;
  border-radius: var(--border-radius-small);
  outline: none;
}

// Some wallpapers are light/dark, and may not match the user set contrast,
// so some text, icons, etc that are displayed over the wallpaper need a contrast fix.
@mixin wallpaper-contrast-fix {
  .lightWallpaper & {
    color-scheme: light;
  }

  .darkWallpaper & {
    color-scheme: dark;
  }
}

// Used to visualize the different breakpoints on an applied element
// See variables.scss for $debug-breakpoints
@mixin debug-breakpoints {
  @each $name, $value in $debug-breakpoints {
    $color: map.get($debug-breakpoint-colors, $name);

    @media (min-width: $value) {
      outline: 1px solid #{$color};
    }
  }
}

// Adds transparency and a hover effect to card background.
@mixin newtab-card-style {
  background: var(--newtab-background-card);
  transition: opacity 0.2s ease;

  &:hover {
    background: var(--newtab-background-color-secondary);
  }
}
