@use "breakpoint";
@use "sass:map";

$pds-breakpoints: (
  "xs": breakpoint.$breakpoint-xs,
  "sm": breakpoint.$breakpoint-sm,
  "md": breakpoint.$breakpoint-md,
  "lg": breakpoint.$breakpoint-lg,
  "xl": breakpoint.$breakpoint-xl,
  "2xl": breakpoint.$breakpoint-2xl,
  "base": breakpoint.$pds-breakpoint-base,
  /* (deprecated) */ "s": breakpoint.$breakpoint-sm,
  /* alias (deprecated) */ "m": breakpoint.$breakpoint-md,
  /* alias (deprecated) */ "l": breakpoint.$breakpoint-lg,
  /* alias (deprecated) */ "xxl": breakpoint.$breakpoint-2xl
    /* alias (deprecated) */,
);

@mixin media-query-min($min: null) {
  @if map.has-key($pds-breakpoints, $min) {
    @media (min-width: #{map.get($pds-breakpoints, $min)}px) {
      @content;
    }
  } @else {
    @error "Passed #{$min} breakpoint is not available for used media-query-min() mixin.";
  }
}
@mixin media-query-max($max: null) {
  @if map.has-key($pds-breakpoints, $max) {
    @media (max-width: #{map.get($pds-breakpoints, $max) - 1}px) {
      @content;
    }
  } @else {
    @error "Passed #{$max} breakpoint is not available for used media-query-max() mixin.";
  }
}
@mixin media-query-min-max($min: null, $max: null) {
  @if map.has-key($pds-breakpoints, $min) and
    map.has-key($pds-breakpoints, $max)
  {
    @media (min-width: #{map.get($pds-breakpoints, $min)}px) and (max-width: #{map.get($pds-breakpoints, $max) - 1}px) {
      @content;
    }
  } @else {
    @error "Passed #{$min} and/or #{$max} breakpoint is not available for used media-query-min-max() mixin.";
  }
}

/* alias (deprecated) */
@mixin pds-media-query-min($min: null) {
  @include media-query-min($min) {
    @content;
  }
}

/* alias (deprecated) */
@mixin pds-media-query-max($max: null) {
  @include media-query-max($max) {
    @content;
  }
}

/* alias (deprecated) */
@mixin pds-media-query-min-max($min: null, $max: null) {
  @include media-query-min-max($min, $max) {
    @content;
  }
}
