//
// Copyright IBM Corp. 2018, 2018
//
// This source code is licensed under the Apache-2.0 license found in the
// LICENSE file in the root directory of this source tree.
//

/// @access private
/// @group @carbon/themes
$custom-property-prefix: 'cds' !default;

/// @access private
/// @group @carbon/themes
@mixin custom-property($name, $value, $prefix: $custom-property-prefix) {
  @if type-of($value) == map {
    @each $property, $property-value in $value {
      // Only support one-level of depth for values that are maps. This is to
      // avoid bringing properties like `breakpoints` on type tokens
      @if type-of($property-value) != map {
        @include custom-property('#{$name}-#{$property}', $property-value);
      }
    }
  } @else {
    --#{$prefix}-#{$name}: #{$value};
  }
}

/// @access private
/// @group @carbon/themes
@function should-emit($theme-a, $theme-b, $token, $emit-difference) {
  @if $emit-difference == false {
    @return true;
  }
  @return map-get($theme-a, $token) != map-get($theme-b, $token);
}

// We import mixins last so that these methods are made available to the
// carbon--theme mixin
@import './generated/mixins';
