@function breakpoint($key: "sm") {
    @return map-get($breakpoints, $key);
}

@function breakpoint-next(
    $name,
    $breakpoints: $breakpoints,
    $breakpoint-names: map-keys($breakpoints)
) {
    $n: index($breakpoint-names, $name);

    @return if(
            $n != null and $n < length($breakpoint-names),
            nth($breakpoint-names, $n + 1),
            null
    );
}

@function breakpoint-min($name, $breakpoints: $breakpoints) {
    $min: map-get($breakpoints, $name);

    @return if($min != 0, $min, null);
}

@function breakpoint-max($name, $breakpoints: $breakpoints) {
    $next: breakpoint-next($name, $breakpoints);

    @return if($next, breakpoint-min($next, $breakpoints) - 0.02, null);
}

@function breakpoint-infix($name, $breakpoints: $breakpoints) {
    @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
}
