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

$line-height-tokens: map.get(map.get(tokens.$tokens, size), line-height);

/// 基本的なline heightを取得します。
///
/// @group typography
/// @example
///   functions.get-line-height($level: m, $density: normal)
///   // 1.5rem
@function get-line-height($density: normal, $level: m) {
  $tokens: map.get($line-height-tokens, base);
  $available-densities: helpers.get-densities();
  $available-levels: helpers.get-sizes();

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

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

  $density-tokens: map.get($tokens, $density);

  @return map.get($density-tokens, $level);
}
