@use 'sass:map';
@use 'flexy-comp-button' as *;
@use 'flexy-comp-checkbox' as *;
@use 'flexy-comp-menu' as *;
@use 'flexy-comp-progressbar' as *;
@use 'flexy-comp-progresscircle' as *;
@use 'flexy-comp-radio' as *;
@use 'flexy-comp-slider' as *;
@use 'flexy-comp-switch' as *;
@use 'flexy-comp-tabs' as *;
@use 'flexy-comp-textfield' as *;
@use 'flexy-comp-tooltip' as *;

@mixin _override($tokens, $default-tokens, $prefix) {
  @each $name, $value in $tokens {
    @if (map.has-key($default-tokens, $name)) {
      --#{$prefix}-#{$name}: #{$value};
    } @else {
      @error "#{$name} isn't supported token";
    }
  }
}

@mixin button-overrides($tokens) {
  @include _override($tokens, $flexy-comp-button, 'flexy-comp-button');
}

@mixin checkbox-overrides($tokens) {
  @include _override($tokens, $flexy-comp-checkbox, 'flexy-comp-checkbox');
}

@mixin menu-overrides($tokens) {
  @include _override($tokens, $flexy-comp-menu, 'flexy-comp-menu');
}

@mixin progressbar-overrides($tokens) {
  @include _override(
    $tokens,
    $flexy-comp-progressbar,
    'flexy-comp-progressbar'
  );
}

@mixin progresscircle-overrides($tokens) {
  @include _override(
    $tokens,
    $flexy-comp-progresscircle,
    'flexy-comp-progresscircle'
  );
}

@mixin radio-overrides($tokens) {
  @include _override($tokens, $flexy-comp-radio, 'flexy-comp-radio');
}

@mixin slider-overrides($tokens) {
  @include _override($tokens, $flexy-comp-slider, 'flexy-comp-slider');
}

@mixin switch-overrides($tokens) {
  @include _override($tokens, $flexy-comp-switch, 'flexy-comp-switch');
}

@mixin tabs-overrides($tokens) {
  @include _override($tokens, $flexy-comp-tabs, 'flexy-comp-tabs');
}

@mixin textfield-overrides($tokens) {
  @include _override($tokens, $flexy-comp-textfield, 'flexy-comp-textfield');
}

@mixin tooltip-overrides($tokens) {
  @include _override($tokens, $flexy-comp-tooltip, 'flexy-comp-tooltip');
}
