// ============================================================================================= //
//                                             SHAPE                                             //
// ============================================================================================= //

@use "sass:map";
@use "../core/functions";
@use "../core/mixins";
@use "../core/variables";

$_custom-property-prefix: map.get(variables.$shape, "prefix");
$_tokens: map.get(variables.$shape, "tokens");

///
/// The "shape.theme()" emit `--mg-shape-*` custom properties for a user-provided theme's tokens.
///
/// @example - scss
///   @use "@magnesium/theme/shape";
///
///   .foo {
///     @include shape.theme(
///       "small": 4px,
///       "medium": 6px
///     );
///   }
///
/// @example - css
///   .foo {
///     --mg-shape-small: 4px;
///     --mg-shape-medium: 8px;
///   }
///
/// @param {Map} $tokens - The `shape` tokens map.
///
@mixin theme($tokens) {
    $tokens: functions.validation($_tokens, $tokens, $_custom-property-prefix);

    @include mixins.emit-custom-props($tokens, $_custom-property-prefix);
}
