@use "sass:list";
@use "sass:map";
@use "@pepabo-inhouse/flavor/tokens";
@use "../../error-message";
@use "../helpers";

$elevation-shadow-tokens: map.get(map.get(tokens.$tokens, shadow), elevation);

/// Suerfaceの階層を表すElevationを表現するためのbox-shadowの値を取得します。
///
/// @group Shadow
/// @example
///   functions.get-elevation-box-shadow($level: 1)
///   // 0px -0.1px 1px 0px rgba(0, 0, 0, 0.12), 0px 1px 2px 0px rgba(0, 0, 0, 0.12), 0px 0px 0px 0px rgba(0, 0, 0, 0)
@function get-elevation-box-shadow($level: 0) {
  $available-levels: helpers.get-elevation-levels();

  @if list.index($available-levels, $level) == null {
    @error error-message.any-one-of(
      $value: $level,
      $available-values: $available-levels
    );
  }

  $level-tokens: map.get($elevation-shadow-tokens, "#{$level}");

  @return #{map.get($level-tokens, key-light)},
    #{map.get($level-tokens, ambient-light)},
    #{map.get($level-tokens, adjustment)};
}
