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

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

/// tokenで定義されているsizeのkeyを取得します
///
/// @group typography
@function get-font-size-keys() {
  @return map.keys(map.get($font-size-tokens, base));
}

/// 基本的なfont sizeを取得します。
///
/// @group typography
/// @param {string} $level [m] フォントサイズのデザイントークン。くわしくは https://github.com/pepabo/inhouse-tokens/blob/main/tokens/pepper/size/font.yaml を参照してください。
/// @example
///   functions.get-font-size($level: m)
///   // 1rem
@function get-font-size($level: m) {
  $tokens: map.get($font-size-tokens, base);
  $available-levels: get-font-size-keys();

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

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