@function to-lightness($color, $lightness) {
  @return hsl(hue($color), saturation($color), $lightness * 1%);
}
@function contra($color, $black: black, $white: white) {
  $_val: black;

  $threshold: map-get($settings, "color.contra.threshold");

  @if lightness($color) > $threshold {
    $_val: $black;
  } @else {
    $_val: $white;
  }
  @return $_val;
}

// Colors
$color-palette: () !default;
$color-palette-base: (
  "Red": #ea2027,
  "Orange": #f79f1f,
  "Yellow": #ffc312,
  "Lime": #c4e538,
  "Grass": #a3cb38,
  "Green": #2f9915,
  "Sky": #3cc6e9,
  "Water": #1289a7,
  "Blue": #0652dd,
  "DeepBlue": #1b1464,
  "Brown": #975d12,
  "Purple": #833471,
  "DeepPurple": #6f1e51,
  "Rose": #fda7df,
  "Lavender": #d980fa,
  "Pink": #ff7cae,
  "Berry": #b53471,
  "Pomegranate": #ed4c67,
  "Turquoise": #12cbc4,
  "Gray": #7f8688,
  "Black": #111111,
  "White": #ffffff,
  "Dark": #111111,
  "Light": #ffffff,
) !default;

$color-palette-defined: (
  "Primary": map-get($color-palette-base, "Pomegranate"),
  "Secondary": map-get($color-palette-base, "Turquoise"),
  "Tertiary": map-get($color-palette-base, "Water"),
  "Alert": map-get($color-palette-base, "Red"),
  "Warning": map-get($color-palette-base, "Orange"),
  "Info": map-get($color-palette-base, "Sky"),
) !default;

@each $color-name, $color-value in $color-palette-base {
  $color-palette: map-merge(
    $color-palette,
    (
      "#{to-lower-case($color-name)}": $color-value,
    )
  );
  @if export($output, "color.shades") {
    @for $i from 1 through 19 {
      $color-palette: map-merge(
        $color-palette,
        (
          "#{to-lower-case($color-name)}-#{$i * 10 / 2}":
            to-lightness($color-value, $i * 5),
        )
      );
    }
  }
}

@each $color-name, $color-value in $color-palette-defined {
  $color-palette: map-merge(
    $color-palette,
    (
      to-lower-case($color-name): $color-value,
    )
  );
}
