@use "sass:list";
@use "./level-hsb-rgb";
//@use "./level-hsb-hsl"; // <--- 计算过程使用 hsl 模型，结果一样，仅作为"备选方案
@use "./constants" as const;

$color-base-white: #fff !default;
$color-base-black: #000 !default;
$color-base-gray: #cccccc !default;
$color-base-red: #e64552 !default;
$color-base-orange: #f27c49 !default;
$color-base-yellow: #faaf19 !default;
$color-base-green: #39bf45 !default;
$color-base-cyan: #41d9cc !default;
$color-base-blue: #4c84ff !default;
$color-base-purple: #834bf2 !default;
$color-base-pink: #e62e78 !default;

$color-base-brand: $color-base-blue !default;
$color-base-primary: $color-base-brand !default;
$color-base-info: $color-base-brand !default;
$color-base-success: $color-base-green !default;
$color-base-warning: $color-base-orange !default;
$color-base-danger: $color-base-red !default;
$color-base-error: $color-base-danger !default;

$color-level-gray: ();
$color-level-red: ();
$color-level-orange: ();
$color-level-yellow: ();
$color-level-green: ();
$color-level-blue: ();
$color-level-cyan: ();
$color-level-purple: ();
$color-level-pink: ();

$color-level-brand: ();
$color-level-brand-nature: ();
$color-level-info: ();
$color-level-success: ();
$color-level-warning: ();
$color-level-danger: ();

@for $i from 1 through 10 {
  $color-level-gray: list.append($color-level-gray, level-hsb-rgb.color-neutral-level($color-base-gray, $i));
  $color-level-blue: list.append($color-level-blue, level-hsb-rgb.color-level($color-base-blue, $i));
  $color-level-cyan: list.append($color-level-cyan, level-hsb-rgb.color-level($color-base-cyan, $i));
  $color-level-green: list.append($color-level-green, level-hsb-rgb.color-level($color-base-green, $i));
  $color-level-orange: list.append($color-level-orange, level-hsb-rgb.color-level($color-base-orange, $i));
  $color-level-yellow: list.append($color-level-yellow, level-hsb-rgb.color-level($color-base-yellow, $i));
  $color-level-red: list.append($color-level-red, level-hsb-rgb.color-level($color-base-red, $i));
  $color-level-purple: list.append($color-level-purple, level-hsb-rgb.color-level($color-base-purple, $i));
  $color-level-pink: list.append($color-level-pink, level-hsb-rgb.color-level($color-base-pink, $i));

  $color-level-brand: list.append($color-level-brand, level-hsb-rgb.color-level($color-base-brand, $i));
  $color-level-brand-nature: list.append($color-level-brand-nature, level-hsb-rgb.color-neutral-level($color-base-brand, $i));
  $color-level-info: list.append($color-level-info, level-hsb-rgb.color-level($color-base-info, $i));
  $color-level-success: list.append($color-level-success, level-hsb-rgb.color-level($color-base-success, $i));
  $color-level-warning: list.append($color-level-warning, level-hsb-rgb.color-level($color-base-warning, $i));
  $color-level-danger: list.append($color-level-danger, level-hsb-rgb.color-level($color-base-danger, $i));
}

@function color-gray($index: const.$color-base-index) {
  @return list.nth($color-level-gray, $index);
}

@function color-red($index: const.$color-base-index) {
  @return list.nth($color-level-red, $index);
}

@function color-orange($index: const.$color-base-index) {
  @return list.nth($color-level-orange, $index);
}

@function color-yellow($index: const.$color-base-index) {
  @return list.nth($color-level-yellow, $index);
}

@function color-green($index: const.$color-base-index) {
  @return list.nth($color-level-green, $index);
}

@function color-cyan($index: const.$color-base-index) {
  @return list.nth($color-level-cyan, $index);
}

@function color-blue($index: const.$color-base-index) {
  @return list.nth($color-level-blue, $index);
}

@function color-purple($index: const.$color-base-index) {
  @return list.nth($color-level-purple, $index);
}

@function color-pink($index: const.$color-base-index) {
  @return list.nth($color-level-pink, $index);
}

@function color-brand($index: const.$color-base-index) {
  @return list.nth($color-level-brand, $index);
}

@function color-brand-nature($index: const.$color-base-index) {
  @return list.nth($color-level-brand-nature, $index);
}

@function color-info($index: const.$color-base-index) {
  @return list.nth($color-level-info, $index);
}

@function color-success($index: const.$color-base-index) {
  @return list.nth($color-level-success, $index);
}

@function color-warning($index: const.$color-base-index) {
  @return list.nth($color-level-warning, $index);
}

@function color-danger($index: const.$color-base-index) {
  @return list.nth($color-level-danger, $index);
}
