/**
 * Copyright (c) 2020 Aleksej Komarov
 * SPDX-License-Identifier: MIT
 */

@use "sass:color";
@use "sass:map";
@use "sass:meta";

// Base colors
$black: hsl(0, 0%, 0%) !default;
$white: hsl(0, 0%, 100%) !default;
$red: hsl(0, 72%, 50%) !default;
$orange: hsl(24, 89%, 54%) !default;
$yellow: hsl(52, 97%, 52%) !default;
$olive: hsl(68, 76%, 45%) !default;
$green: hsl(136, 70%, 41%) !default;
$teal: hsl(178, 100%, 35%) !default;
$blue: hsl(208, 65%, 47%) !default;
$violet: hsl(259, 60%, 50%) !default;
$purple: hsl(288, 60%, 49%) !default;
$pink: hsl(326, 71%, 56%) !default;
$brown: hsl(24, 47%, 45%) !default;
$grey: hsl(0, 0%, 47%) !default;
$light-grey: hsl(0, 0%, 67%) !default;

$primary: hsl(210, 37%, 46%) !default;
$good: hsl(94, 63%, 41%) !default;
$average: hsl(33, 89%, 50%) !default;
$bad: hsl(0, 72%, 50%) !default;
$label: hsl(210, 18%, 58%) !default;

// Background and foreground color lightness ratios
$bg-lightness: -15% !default;
$fg-lightness: 10% !default;

@function bg($color) {
  @return color.scale($color, $lightness: $bg-lightness);
}

@function fg($color) {
  @return color.scale($color, $lightness: $fg-lightness);
}

// Mappings of color names

$_gen_map: (
  "black": $black,
  "white": $white,
  "red": $red,
  "orange": $orange,
  "yellow": $yellow,
  "olive": $olive,
  "green": $green,
  "teal": $teal,
  "blue": $blue,
  "violet": $violet,
  "purple": $purple,
  "pink": $pink,
  "brown": $brown,
  "grey": $grey,
  "light-grey": $light-grey,
  "good": $good,
  "average": $average,
  "bad": $bad,
  "label": $label,
);

// Foreground color names for which to generate a color map
$fg-map-keys: map.keys($_gen_map) !default;
// Background color names for which to generate a color map
$bg-map-keys: map.keys($_gen_map) !default;

$fg-map: ();
@each $color-name in $fg-map-keys {
  // prettier-ignore
  $fg-map: map.merge($fg-map, (
    $color-name: fg(map.get($_gen_map, $color-name)),
  ));
}

$bg-map: ();
@each $color-name in $bg-map-keys {
  // prettier-ignore
  $bg-map: map.merge($bg-map, (
    $color-name: bg(map.get($_gen_map, $color-name)),
  ));
}
