// ==========================================================================
// # Analogous
// ==========================================================================
//
// Analogous color scheme is a four-color combination consisting 
// of a base color and three colors that are 30 degrees, 60 degrees, 
// and 90 degrees apart from the base color.
// 
// While this scheme typical uses colors that are 30 degrees apart,
// Neutral harmonies use colors that are 15 degrees apart.
//
// | Model | Color     | Chromatic | Harmonized |         | 
// | :---: | :-------: | :-------: | :-------:  | :---:   |
// | RGB   | #8e43e7   | #e043e7   | #d343e7    | 30°     |
// |       |           | #e7439c   | #d943a8    | 60°     |
// |       |           | #e7434a   | #d94363    | 90°     |
// 
// | Model | Color     | Chromatic | Harmonized |         | 
// | :---: | :-------: | :-------: | :-------:  | :---:   |
// | RYB   | #8e43e7   | #e743e2   | #d943e3    | 30°     |
// |       |           | #e74371   | #d94384    | 60°     |
// |       |           | #e77443   | #d96c5d    | 90°     |
// 
// @debug color.adjust(#8e43e7, $hue: 30);
// @debug color.adjust(#8e43e7, $hue: 60);
// @debug color.adjust(#8e43e7, $hue: 90);
// @debug adjust-hue-ryb(#8e43e7, 30);
// @debug adjust-hue-ryb(#8e43e7, 60);
// @debug adjust-hue-ryb(#8e43e7, 90);

@use "sass:color";

@use "../core";
@use "../functions";

// ==========================================================================
// # Variables
// ==========================================================================

$-analogous-1-400: color.adjust(core.$brand-color, $hue: 30);
$-analogous-2-400: color.adjust(core.$brand-color, $hue: 60);
$-analogous-3-400: color.adjust(core.$brand-color, $hue: 90);

@if (core.$color-model == ryb) {
  $-analogous-1-400: functions.adjust-hue-ryb(core.$brand-color, 30);
  $-analogous-2-400: functions.adjust-hue-ryb(core.$brand-color, 60);
  $-analogous-3-400: functions.adjust-hue-ryb(core.$brand-color, 90);
} @else {}

@if core.$color-mode-harmony {
  $-analogous-1-400: functions.make-color-harmony(core.$brand-color, $-analogous-1-400);
  $-analogous-2-400: functions.make-color-harmony(core.$brand-color, $-analogous-2-400);
  $-analogous-3-400: functions.make-color-harmony(core.$brand-color, $-analogous-3-400);
} @else {}

// ==========================================================================
// # Monochromatic Scaling
// ==========================================================================

// ## Analog (1) @ 30°
$analogous-1-100: functions.make-color-mono($-analogous-1-400, 100) !default;
$analogous-1-200: functions.make-color-mono($-analogous-1-400, 200) !default;
$analogous-1-300: functions.make-color-mono($-analogous-1-400, 300) !default;
$analogous-1-400: $-analogous-1-400 !default;
$analogous-1-500: functions.make-color-mono($-analogous-1-400, 500) !default;
$analogous-1-600: functions.make-color-mono($-analogous-1-400, 600) !default;
$analogous-1-700: functions.make-color-mono($-analogous-1-400, 700) !default;
$analogous-1-800: functions.make-color-mono($-analogous-1-400, 800) !default;
$analogous-1-900: functions.make-color-mono($-analogous-1-400, 900) !default;

// ## Analog (2) @ 60°
$analogous-2-100: functions.make-color-mono($-analogous-2-400, 100) !default;
$analogous-2-200: functions.make-color-mono($-analogous-2-400, 200) !default;
$analogous-2-300: functions.make-color-mono($-analogous-2-400, 300) !default;
$analogous-2-400: $-analogous-2-400 !default;
$analogous-2-500: functions.make-color-mono($-analogous-2-400, 500) !default;
$analogous-2-600: functions.make-color-mono($-analogous-2-400, 600) !default;
$analogous-2-700: functions.make-color-mono($-analogous-2-400, 700) !default;
$analogous-2-800: functions.make-color-mono($-analogous-2-400, 800) !default;
$analogous-2-900: functions.make-color-mono($-analogous-2-400, 900) !default;

// ## Analog (3) @ 90°
$analogous-3-100: functions.make-color-mono($-analogous-3-400, 100) !default;
$analogous-3-200: functions.make-color-mono($-analogous-3-400, 200) !default;
$analogous-3-300: functions.make-color-mono($-analogous-3-400, 300) !default;
$analogous-3-400: $-analogous-3-400 !default;
$analogous-3-500: functions.make-color-mono($-analogous-3-400, 500) !default;
$analogous-3-600: functions.make-color-mono($-analogous-3-400, 600) !default;
$analogous-3-700: functions.make-color-mono($-analogous-3-400, 700) !default;
$analogous-3-800: functions.make-color-mono($-analogous-3-400, 800) !default;
$analogous-3-900: functions.make-color-mono($-analogous-3-400, 900) !default;


// =============================================================================
// # Map
// =============================================================================

$map-analogous-1: (
  "analogous-1-100": $analogous-1-100,
  "analogous-1-200": $analogous-1-200,
  "analogous-1-300": $analogous-1-300,
  "analogous-1-400": $analogous-1-400,
  "analogous-1-500": $analogous-1-500,
  "analogous-1-600": $analogous-1-600,
  "analogous-1-700": $analogous-1-700,
  "analogous-1-800": $analogous-1-800,
  "analogous-1-900": $analogous-1-900
) !default;

$map-analogous-2: (
  "analogous-2-100": $analogous-2-100,
  "analogous-2-200": $analogous-2-200,
  "analogous-2-300": $analogous-2-300,
  "analogous-2-400": $analogous-2-400,
  "analogous-2-500": $analogous-2-500,
  "analogous-2-600": $analogous-2-600,
  "analogous-2-700": $analogous-2-700,
  "analogous-2-800": $analogous-2-800,
  "analogous-2-900": $analogous-2-900
) !default;

$map-analogous-3: (
  "analogous-3-100": $analogous-3-100,
  "analogous-3-200": $analogous-3-200,
  "analogous-3-300": $analogous-3-300,
  "analogous-3-400": $analogous-3-400,
  "analogous-3-500": $analogous-3-500,
  "analogous-3-600": $analogous-3-600,
  "analogous-3-700": $analogous-3-700,
  "analogous-3-800": $analogous-3-800,
  "analogous-3-900": $analogous-3-900
) !default;

$map-analogous: core.map-collect($map-analogous-1, $map-analogous-2, $map-analogous-3) !default;